我3天前开始使用OpenMP.我想知道如何使用#pragma每个核心运行一个线程.更多细节: -
int ncores = omp_get_num_procs();
for(i = 0; i < ncores;i++){
....
}
我希望这个for循环分布在我拥有的核心中,#pragma我应该使用什么?
另一件事,那是什么#pragmas意思?
#pragma omp parallel
#pragma omp for
#pragma omp parallel for
我对这些感到困惑 #pragmas
非常感谢 .. :)
螺纹钉扎
我想知道如何使用#pragma使每个核心运行一个线程.
您使用哪种openmp实现?答案取决于那个.
固定不是用pragma定义的.您将不得不使用环境变量.使用gcc时,可以使用环境变量将线程固定到核心:
GOMP_CPU_AFFINITY="0-3" ./main
Run Code Online (Sandbox Code Playgroud)
将第一个线程绑定到第一个核心,将第二个线程绑定到第二个核心,依此类推.有关更多信息,请参阅gomp文档(第3节,环境变量).我忘了如何用PGI和其他编译器做同样的事情,但你应该能够找到使用流行搜索引擎的编译器的答案.
OpenMP Pragma
没有办法避免阅读文档.例如,请参阅IBM网站的链接.我发现Blaise Barney的教程非常有用.