gpt4 book ai didi

openmp - 在 OpenMP 中,如何让每个内核运行一个线程?

转载 作者:行者123 更新时间:2023-12-04 17:12:28 24 4
gpt4 key购买 nike

我在 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 有点困惑

十分感谢 .. :)

最佳答案

线程固定

I want to know how to use #pragma to make every single core runs a single thread.



您使用哪个 openmp 实现?答案取决于此。

固定不是用 pragma 定义的。您将不得不使用环境变量。使用 gcc 时,可以使用环境变量将线程固定到内核:
GOMP_CPU_AFFINITY="0-3" ./main

将第一个线程绑定(bind)到第一个内核,将第二个线程绑定(bind)到第二个内核,依此类推。见 gomp documentation了解更多信息(第 3 节,环境变量)。我忘记了如何使用 PGI 和其他编译器做同样的事情,但是您应该能够使用流行的搜索引擎找到这些编译器的答案。

OpenMP 编译指示

没有办法避免阅读文档。见 this link to an IBM website例如。我找到了 tutorial by Blaise Barney很有用。

关于openmp - 在 OpenMP 中,如何让每个内核运行一个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6688553/

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