gpt4 book ai didi

c++ - OpenMP 只创建一个线程

转载 作者:行者123 更新时间:2023-11-28 06:40:37 25 4
gpt4 key购买 nike

我使用 Ubuntu 并编写了几行代码。但它只创建一个线程。当我在我的终端上运行 nproc 命令时,输出是 2。我的代码如下

int nthreads, tid;

#pragma omp parallel private(tid)
{
tid = omp_get_thread_num();
printf("Thread = %d\n", tid);

/* for only main thread */
if (tid == 0)
{
nthreads = omp_get_num_threads();
printf("Number of threads = %d\n", nthreads);
}
}

输出:

Thread = 0
Number of threads = 1

如何实现并行?

最佳答案

如果您使用的是 gcc/g++,您必须确保使用 -fopenmp compilerlinker< 启用 openmp 扩展/strong> 选项。在链接期间指定它将链接到适当的库 (-lgomp)。

用类似的东西编译:

g++ -fopenmp myfile.c -o exec

或:

g++ -c myfile.c -fopenmp
g++ -o exec myfile.o -fopenmp

如果您省略 -fopenmp 编译选项,您的程序将编译但它会像没有使用 openmp 一样运行。如果您的程序不使用 omp_set_num_threads 来设置线程数,则可以从命令行设置它们:

OMP_NUM_THREADS=8 ./exec

我认为默认值通常是特定系统上的内核数。

关于c++ - OpenMP 只创建一个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26049965/

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