Я заметил, что мне кажется удивительным поведение с кодом Fortran, в основном содержащим умножения матриц / матриц и матриц / векторов.
Первоначально код был скомпилирован с gfortran, а умножения были выполнены с двойным "DO"."циклы по строкам и столбцам матриц.Я скомпилировал код, используя:
gfortran -c -g -O3 ...
Для выполнения кода использовалось одно ядро 8-ядерного процессора i7.
Затем я скомпилировал свой код с помощью компилятора intel, используя:
ifort -c -g -O3 ...
Код работал значительно быстрее, все еще используя одно ядро.Затем я решил оптимизировать код, используя хорошо известные функции dgemm
и dgemv
соответственно для умножения матрицы / матрицы и матрицы / вектора.
Затем я скомпилировал, используя:
ifort -c -g -O3 ...
Полученный код работает правильно, но использует 8 ядер моего i7-процессора без какого-либо значительного улучшения производительности.Есть ли способ контролировать количество ядер, используемых моим кодом, из команды компиляции?