gpt4 book ai didi

c++ - Windows - Visual Studio 2013 : OpenMP: omp_set_num_threads() not working

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:50:15 25 4
gpt4 key购买 nike

我想运行这个程序:

#include <iostream>
#include <omp.h>
using namespace std;
int main()
{
int numThread, myId;
cout << "num_procs=" << omp_get_num_procs();
omp_set_num_threads(omp_get_num_procs());
#pragma omp parallel
{
cout << "\nid=" << omp_get_thread_num();
numThread = omp_get_num_threads();
cout << "\nmax-thread=" << omp_get_max_threads();
}
getchar();
}

结果是:

num_procs=4
id=0
max-thread=4

我认为这个结果必须重复并打印 4 次,但我不知道为什么它只打印一次。

我运行以下来自 this comment 的代码在 this post而我的结果是不同的。

#include <iostream>
#include <omp.h>
int main(int argc, const char * argv[])
{
int nProcessors = omp_get_max_threads();
std::cout << nProcessors << std::endl;
omp_set_num_threads(nProcessors);
std::cout << omp_get_num_threads() << std::endl;

#pragma omp parallel for
for (int i = 0; i<5; i++){
int tid = omp_get_thread_num();
std::cout << tid << "\t tid" << std::endl;
int nThreads = omp_get_num_threads();
std::cout << nThreads << "\t nThreads" << std::endl;
}
exit(0);
}

打印这个结果:

4
1
0 tid
1 nThreads
0 tid
1 nThreads
0 tid
1 nThreads
0 tid
1 nThreads
0 tid
1 nThreads

我在 cmd 中运行这个命令:

set OMP_NUM_THREADS=16

当我运行时:

set OMP_NUM_THREADS in cmd 

打印结果:OMP_NUM_THREADS=16

但是当我关闭 cmd 并重新打开它并运行 set OMP_NUM_THREADS打印这个结果:

Environment variable OMP_NUM_THREADS not defined !!!!!!!!Please Help me.

最佳答案

使用 SETX 命令(注意“x”后缀)设置在 cmd 窗口关闭后仍然存在的变量。

setx OMP_NUM_THREADS 16

关于c++ - Windows - Visual Studio 2013 : OpenMP: omp_set_num_threads() not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30376380/

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