1
2
我们通常建议使用“-fast”、““-O3”或“-fast-O3”来实现一般性能。“-Mconcur”启用自动并行化,这可能有帮助,也可能没有帮助。一般来说,最好通过OpenACC或OpenMP指令或Fortran“DO CONCURRENT”使用显式并行化。 其他可能有用的优化标志: -Mnouniform-允许对SIMD和标量代码进行非统一计算。速度更快,但可能会降低一些准确性。 -Mstack_数组——在堆栈而不是堆上自动分配数组。更快,但使用更多堆栈。您可能需要在shell环境中增加程序的堆栈。 -Bstatic nvidia-静态链接编译器运行库,而不是动态链接。 -Mfprelaxed-允许使用更快但精度更低的内部函数和浮点计算。 -mp[=gpu]-启用OpenMP指令,并可选地启用目标卸载到gpu。 -acc[=多核]-启用OpenACC指令,默认卸载到GPU,使用“多核”以多核CPU为目标。 -stdpar[=gpu]-支持并行化DO并发到主机或gpu。 调试标志很好,不过“-C”和“-Mbounds”都支持边界检查,所以只需要一个。 在开发过程中使用的另一个有用的标志是“-Minfo”。编译器将给出反馈消息,说明它正在应用或无法应用什么优化。它可能包含大量消息,因此可以使用子选项将输出限制为特定类型,例如“-Minfo=vect”,以查看哪个循环被矢量化或未被矢量化。有关子选项的完整列表,请参阅“nvfortran-help-Minfo”。 |