如何让OpenMP线程或任务在某个核心上运行

发布于 2024-12-09 10:09:57 字数 215 浏览 0 评论 0原文

有没有办法让 OMP 线程或任务在某个核心上运行?
我发现这个,点击链接,但我找不到源代码来测试它。这也是英特尔的解决方案(我认为)。 OMP 本身支持这个吗?

Is there a way to make an OMP thread or task run on a certain core?
I found this, followed the link, but I couldn't find the source code to test it. Also this is an Intel solution to it (I think). Does OMP support this itself?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情绪操控生活 2024-12-16 10:09:57

据我所知,从 OpemMP 3.0 开始,它们都是供应商特定的扩展。

例如,GOMP(GCC 的实现)使用环境变量 GOMP_CPU_AFFINITY 来设置线程关联性。

在他们的 文档 中,他们给出了示例:

GOMP_CPU_AFFINITY="0 3 1-2 4-15:2"

他们指出:

将第一个线程绑定到CPU 0,第二个线程绑定到CPU 3,第三个线程绑定到CPU 0
到 CPU 1,第四个到 CPU 2,第五个到 CPU 4,第六个到 CPU
第十个分别到CPU 6、8、10、12和14,然后启动
从列表的开头分配回来。 GOMP_CPU_AFFINITY=0
将所有线程绑定到 CPU 0

As far as I know as of OpemMP 3.0 they're all vendor specific extensions.

For example GOMP (GCC's implementation) honours the environment variable GOMP_CPU_AFFINITY for setting thread affinity.

In their documentation they give the example:

GOMP_CPU_AFFINITY="0 3 1-2 4-15:2"

Which they state:

will bind the initial thread to CPU 0, the second to CPU 3, the third
to CPU 1, the fourth to CPU 2, the fifth to CPU 4, the sixth through
tenth to CPUs 6, 8, 10, 12, and 14 respectively and then start
assigning back from the beginning of the list. GOMP_CPU_AFFINITY=0
binds all threads to CPU 0

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文