【发布时间】:2020-01-22 15:15:26
【问题描述】:
我尝试使用 Windows 10 1909 上的 Intel Parallel XE Fortran 19.0 Update 1 编译 Dave Frank 的 TEST_FPU 基准测试,该基准测试现在压缩为多面体基准测试。
TEST_FPU2.f90 是从 Polyhedron https://www.fortran.uk/pb11.zip 下载的 http://www.lps.ens.fr/~dominiq/polyhedron/test_fpu.f90上的旧的 新的多面体站点。
我尝试了一些开关,包括 /O2 和 /O3 以及 /Qparallel 在英特尔工作站上编译:
替代 1:ifort /O2 test_fpu2.f90 /link /stack:64000000
替代 2:ifort /O3 test_fpu2.f90 /link /stack:64000000
替代 3:ifort /O3 /Qparallel test_fpu2.f90 /link /stack:64000000
/O2 /O3 alt1 和 alt 2 都可以正常工作。而 alt 3:通过多线程增强的自动并行出现错误“应用程序无法在 Windows 10 AMD Ryzen 工作站和笔记本电脑上正确启动 (0xc00000b7);Ryzen 3600 和锐龙 2700U。
同时,所有英特尔笔记本电脑和工作站第 9 代和第 8 代都适用于所有替代品,但需要文件 libiomp5md.dll,并且不需要安装可再发行库。
在 AMD 工作站中,我们尝试使用可再发行组件https://software.intel.com/en-us/articles/redistributable-libraries-for-intel-c-and-fortran-2019-compilers-for-windows
在 AMD 机器上安装 redistributable 后,程序突然关闭。
因此,使用自动并行,编译后的程序在 AMD 无法运行。 有什么线索吗?
已编辑:使用自动并行,编译不工作非自动并行
【问题讨论】:
-
此特定错误的通常原因是 Windows 无法映射所有各种固定内存要求,包括静态代码和数据以及堆栈。为什么自动并行很重要,我不知道。我是否正确理解安装可再发行组件会改变行为。我非常怀疑处理器品牌与此有任何关系。
-
感谢史蒂夫多年来对 fortran 开发的贡献。是否可以手动使其并行而不是 ifort 中的自动并行?并且 /Qopenmp 也会犯同样的错误 0xc00000b7
-
您当然可以使用 OpenMP 将“定向并行”添加到应用程序中。我没有这样做的个人经验。仅添加 /Qopenmp 不会使事情变得并行 - 它告诉编译器您要使用 OpenMP 并默认使所有过程递归。您得到的错误是我在上面的评论中提出的 - Windows 无法满足所有关于程序部分映射到内存的请求。
标签: fortran intel intel-fortran amd-processor