2010-04-09 5 views
0

Я компилирую код fortran90 с помощью Intel Visual FORTRAN в Windows Server 2003 Enterprise X64 Edition. Когда я компилирую код для 32-битной структуры и используя автоматические и ручные варианты векторизации. Код будет скомпилирован, векторизован. И когда я запускаю его на 8-уровневой системе, скомпилированный код использует 70% процессора, который показывает, что работает векторизация. Но когда я компилирую код с 64-битным компилятором, он говорит, что код векторизован, но когда я его запускаю, он показывает только использование ЦП около 12%, что является полным использованием для одного ядра из 8, поэтому это означает, что, хотя компилятор говорит, что код векторизован, векторизация не работает.Векторный код для Visual Visual FORTRAN для X64

И это странно для меня, потому что это на Windows X64 Edition, и я ожидал увидеть обратный результат. Я думал, что лучше работать с кодом, который скомпилирован для архитектуры 64 бит в 64-битных окнах.

У кого-нибудь есть идея, почему скомпилированный код не может использовать полную мощность нескольких ядер для 64-битной скомпилированной версии?

+0

Каковы были сроки выполнения двух версий? –

ответ

2

Я не использовал версии компиляторов Intel Fortran для Windows, но только для Mac и Linux. В номенклатуре Intel «векторизация» использует небольшие параллельные инструкции/мультимедийные расширения SSE, SSE2, SSE3, SSSE3, SSE4, которые доступны на одном процессоре/ядре. Особенностью этих компиляторов, которые могут автоматически выполнять многопоточность на нескольких процессорах/ядрах, является «распараллеливание». Возможные значения: -vec или/Qvec или -parallel или/Qparallel. Итак, какие параметры компилятора вы используете?

+0

Я использую/Qvec вариант. Но я думал, что опция Qparallel предназначена для распараллеливания OpenMP. И другой вопрос - почему, когда я использую/Qvec с 32-битным компилятором, скомпилированный код может использовать несколько ядер (использование процессора намного больше, чем ядро)? – Bahman