gpt4 book ai didi

linux - OpenMP 没有在一台机器上启动线程,但在另一台运行相同操作系统的机器上工作正常

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:39 37 4
gpt4 key购买 nike

最近,我成功地将一个用 Fortran 编写的程序(有点大)与一些用 C 编写的库(最著名的是 UMFPACK)并行化。我们使用英特尔的 C 编译器和英特尔的 Fortran 编译器(icc 和 ifort)14.0 编译了它们。我们运行 Ubuntu 12.04.3。

我使所有例程都是线程安全的,并使用下面的代码通过 OpenMP 执行并行化:

!$omp parallel do default(shared) private(gs,ibk,ij) schedule(dynamic)
do ibk=1,numcell

call CellGaussPoints(ibk,numcell,nquado,numq,numgauss, &
xc,noCell,gauss,gs)

do ij=1,numgauss

gs_3D(ibk,1,ij)=gs(1,ij)
gs_3D(ibk,2,ij)=gs(2,ij)
gs_3D(ibk,3,ij)=gs(3,ij)
gs_3D(ibk,4,ij)=gs(4,ij)

call SearchMaterial(tree3,my_array0,node,gs_3D(ibk,1,ij),gs_3D(ibk,2,ij),numnode,mat_2D(ibk,ij),nf,numd,elements)

end do

end do
!$omp end parallel do

使用 -openmp 编译时效果很好。但不是在每台电脑上...gs_3D 是一个 3 维数组,用于存储 SearchMaterial 的结果。

我有一个 Core i5-2400,并使用运行 Linux(Windows 主机)的 VMWare 虚拟机和我的 native Linux 安装进行了测试。两者都工作得很好。但在另一台 PC(Core i7-3860X)上,也运行 Ubuntu 12.04.3,安装了相同的编译器和库,它只会使用一个线程运行。编译选项都是一样的。我什至尝试在另一台电脑上运行我在我的电脑上编译的二进制文件。

不仅如此,使用 OpenBLAS 的 OpenMP 实现在我的 native Linux 安装上也能正常工作,但在我的虚拟机和 i7-3860X 上却不行。

经过一番研究,毫无结果,我决定寻求帮助。

(在所有这些情况下都正确设置了 OMP_NUM_THREADS)

ulimit -a 返回以下内容

core file size          (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 63687
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 63687
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

我通常在运行程序之前执行 ulimit -s unlimited,否则会出现段错误。

OMP_THREAD_LIMIT 没有在机器上设置我的代码不起作用。

编辑:至于 BLAS 问题,我发现在没有处理器关联的情况下编译它会使它使用所有内核。另一方面,我的程序仍然无法在 i7 上运行

最佳答案

尝试将环境变量 OMP_DYNAMIC 设置为 FALSE。当它为TRUE时,如果运行时环境认为CPU太忙,线程数将被调整。

关于linux - OpenMP 没有在一台机器上启动线程,但在另一台运行相同操作系统的机器上工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19597848/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com