gpt4 book ai didi

c++ - 我的 openmp 代码不能在服务器上运行?

转载 作者:行者123 更新时间:2023-11-30 05:39:44 25 4
gpt4 key购买 nike

我有一个简单的 openmp C++ 代码,如下所示:

#include <cmath>
#include <iostream>
#include <stdio.h>
#include <string>

int main()
{

#pragma omp parallel for
for(int n=0; n<10; ++n)
{
printf(" %d", n);
}
printf(".\n");


}

它在我的 Mac 计算机上并行运行(从自制软件安装 gcc48 之后):

dhcp-18-189-47-44:openmp_code me$ g++-4.8 tmp2.cpp -fopenmp
dhcp-18-189-47-44:openmp_code me$ ./a.out
2 7 4 9 5 8 6 0 3 1.

但是,当我在我们的计算机服务器(基于 linux)上执行相同操作时,我无法重现并行化:

[me@my_cluster trial_openmp]$ g++ tmp2.cpp -fopenmp
[me@my_cluster trial_openmp]$ qrsh -pe orte_pe 8
[me@compute-0-5 trial_openmp]$ ./a.out
0 1 2 3 4 5 6 7 8 9.

代码没有并行化,如果我检查 g++ 版本,我认为 openmp 已正确安装:

[me@my_cluster trial_openmp]$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/share/apps/gcc-4.8.0/libexec/gcc/x86_64-unknown-linux-gnu/4.8.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ./configure --prefix=/share/apps/gcc-4.8.0 --with-gmp=/share/apps/gmp-5.1.1 --with-mpfr=/share/apps/mpfr-3.1.2 --with-mpc=/share/apps/mpc-1.0.1
Thread model: posix
gcc version 4.8.0 (GCC)

有人知道这是怎么回事吗?谢谢。

最佳答案

我们在评论中得出的答案是 wasabi123 需要设置 OMP_NUM_THREADS 环境变量,如果未定义,则每个 CPU 仅使用 1 个线程。

导出 OMP_NUM_THREADS=X

其中 x 是您想要的线程数。

关于c++ - 我的 openmp 代码不能在服务器上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32154241/

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