我想知道是否可以运行一个用 fortran 编写的程序,这个程序非常“繁重”,利用了 CPU 的所有 24 个线程。
我正在使用 intel parallel studio XE 2011,例程是用 fortran 77 编写的。
我想知道是否可以运行一个用 fortran 编写的程序,这个程序非常“繁重”,利用了 CPU 的所有 24 个线程。
我正在使用 intel parallel studio XE 2011,例程是用 fortran 77 编写的。
当然,这是可能的。有很多方法可以解决这个问题,但是:
我习惯于将您的“系统逻辑”置于更通用的逻辑中,直接支持 pthread 或 boost 线程等;很可能是 C 或 C++ 之类的东西,然后为计算的不同部分或可并行化的数据部分等生成不同的线程。请注意,现代编译器可以从 fortran 生成符合正常 C 调用约定的二进制文件,因此调用 fortran 函数不会t 比调用其他 C、C++、... 函数有更多开销。不过,您应该确保不要在您的 fortran 函数中修改全局状态!
我会知道 fortran77 没有并行化框架;存在一些,但据我所知,它们依赖于 F77 中不存在的语言功能。正如@HighPerformanceMark 指出的那样,OpenMP 可以很好地与英特尔编译器一起使用。