Я новичок в программировании, и я на самом деле инженер-механик. Для моих исследований я написал программу fortran для моделирования процесса. Эта процедура довольно медленная, потому что либо она была написана мной (и поэтому она не является совершенной вычислительной), и она выполняет много итераций для достижения конвергенции, поэтому ей нужно время.Запуск программы fortran с несколькими процессорами
Но у меня 6-ядерный процессор, и я думаю, что если бы я мог использовать все ядра, то программа могла работать быстрее, чем сейчас.
Процедура такова:
PROGRAM my routine
INCLUDE 'dimensions_of_arrays.dim'
INCLUDE 'subroutines.sub'
INCLUDE 'subroutines2.sub'
DECLARATION OF VARIABLES
..
.
DO LOOP OVER MANY STEPS
.
CALL MANY SUBROUTINES
.
.
.
PERFORM SOME ITERATION
END LOOP
.
WRITE RESULTS
END
В файле Подпрограммы 'subroutines.sub' У меня есть более чем 20 подпрограмм, как это:
SUBROUTINE xxx(a,b)
INCLUDE 'dimensions_of_arrays.dim'
DECLARATION OF VARIABLES
COMMON/PATH1/PATH2/G,J,K
.
.
SOME CALCULATION
.
END
В файле «dimensions_of_arrays .dim 'есть общие и параметры, используемые во время компиляции.
Возможно ли это, по вашему мнению, использовать многопроцессорную систему с этой рутиной? Попытка не изменять его «сильно».
Я использую Intel Composer XE2011 с Visual Studio 2010 как компилятор кода.
Любая помощь очень ценится. Thanks
Ответ почти наверняка, но это может быть много работы, и с деталью здесь мы просто не можем сказать. Однако вы начинаете с неправильного места. Fortran 77 мертв - пожалуйста, изучите Fortran95 или позже и попытайтесь забыть все, что вы когда-либо знали об общих и подобных. Я говорю это как методологию для параллелизма (OpenMP) работает гораздо легче с современным кодом, чем стандартом, который был заменен четверть века назад. –
Основная проблема заключается в том, что эта процедура не была полностью написана мной, но я сделал важные изменения в исходной версии кода.Считаете ли вы, что потребуется время для «скрытия» всего в новом fortran90-95? –
Как рекомендовано @Ian, было бы разумно перенести ваш код с f77 на f90 по крайней мере. Прежде чем пытаться распараллелить свой код, который не так-то просто сделать, воспользуйтесь функциями Fortran 90, такими как модули и интерфейсы, ваш код будет более чистым и читаемым. Вы также должны взглянуть на некоторые опции компиляции и флаги оптимизации, которые должны немного помочь. Найдите «узкие места» в своем коде, профилируя его, возможно, перерисовка какого-либо алгоритма или части вашего кода улучшит его скорость. Только тогда вы можете рассмотреть OPENMP/MPI, чтобы воспользоваться преимуществами многоядерного процессора. – Coriolis