2015-12-16 2 views
-2

Я хотел бы знать, можно ли запустить программу, написанную в fortran, которая довольно «тяжелая», используя все 24 потока процессоров.Ручная работа Fortran77 с несколькими процессорами?

Я использую Intel Parallel Studio XE 2011 и процедура написана на Fortran 77.

+2

Это, безусловно, возможно, и вы должны направить свои исследования, в первую очередь, на «OpenMP». –

+0

Прошу прощения за ответ. Я понял, что у моего кода были проблемы, теперь я готов попытаться распараллелить его. Я читал [здесь] (https://people.sc.fsu.edu/~jburkardt/f77_src/openmp/openmp.html) и [здесь] (https://www.ncsu.edu/hpc/Courses/ 7shared.html) и [здесь] (http://people.ds.cam.ac.uk/nmm1/openmp/Notes/notes_2.pdf). Я не специалист в программировании, я просто инженер-механик, и недавно я изучил основы fortran, поэтому извините, если я говорю, что это просто фигня. Я понимаю, что можно распараллелить циклы, такие как DO, FOR, добавив «прагмы». Это только? –

ответ

0

Конечно, это возможно. Есть несколько способов сделать это, но:

То, что я привык, имеет вашу «системную логику» в более универсальной логике, которая напрямую поддерживает такие вещи, как pthreads или boost threads и т. Д .; скорее всего, что-то вроде C или C++, а затем порождают разные потоки для разных частей вашего вычисления или параллелизуемых частей данных и т. д. Обратите внимание, что современные компиляторы могут генерировать двоичные файлы из fortran, которые придерживаются обычных конвенций вызова C, так что вызов fortran-функций не делает, t имеет больше накладных расходов, чем вызов других функций C, C++, .... Вы должны сделать все, чтобы не изменять глобальное состояние в своих функциях fortran, хотя!

Нет рационализационной схемы для fortran77, о которой я бы знал; есть few in existence, но насколько я могу судить, они зависят от особенностей языка, которых не было в F77. Как отметил @HighPerformanceMark, OpenMP может очень хорошо работать с компиляторами Intel.

+0

OpenMP не зависит от каких-либо функций, добавленных в Fortran после стандарта '77. –

+0

ah right; Я просто не знал, что Intel fortran включает поддержку openMP! –

+0

Он поддерживал OpenMP более или менее с момента появления OpenMP еще до приобретения Intel. И вы также можете вызвать pthreads. Раньше перед OpenMP использовались библиотеки конкретной платформы. –

Смежные вопросы