Fortran 针对特定线程数的OpenMP优化

Fortran 针对特定线程数的OpenMP优化,fortran,openmp,scientific-computing,Fortran,Openmp,Scientific Computing,我正在开发一个科学代码,所以速度当然是关键。由于可移植性不是一个真正的问题,所以我知道在编译程序时有多少openmp线程可用。我可以使用此信息执行任何其他优化吗?如果是,我该如何做 因为有人指出这个问题非常广泛。我想把它简化为自动的,即编译器优化。因此,设置编译器标志或类似的事情 干杯 -A那么,您可以修改代码,使其可以划分为n个独立区域n=线程数。 你应该更喜欢使用分区。与并行for循环相比,分区可以提供更好的加速,因为减少了处理器间的通信。这是一个非常广泛的问题。它仍然太广泛了。现在最好的答

我正在开发一个科学代码,所以速度当然是关键。由于可移植性不是一个真正的问题,所以我知道在编译程序时有多少openmp线程可用。我可以使用此信息执行任何其他优化吗?如果是,我该如何做

因为有人指出这个问题非常广泛。我想把它简化为自动的,即编译器优化。因此,设置编译器标志或类似的事情

干杯


-A

那么,您可以修改代码,使其可以划分为n个独立区域n=线程数。
你应该更喜欢使用分区。与并行for循环相比,分区可以提供更好的加速,因为减少了处理器间的通信。

这是一个非常广泛的问题。它仍然太广泛了。现在最好的答案是:这取决于代码。是的,您当然应该设置编译器标志。我想补充一下@Hristo Iliev已经写过的内容:它还取决于编译器。阅读Fortran编译器手册。节的速度并不比schedulestatic工作共享结构快。好吧,我已经实现了一些代码,在这些代码中,我同时使用了并行节和奇数和偶数循环,并且节似乎快了一点。这是很久以前的事了,可能是针对特定的代码。