gpt4 book ai didi

multithreading - Openmp线程发散?

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

CUDA 中使用术语线程发散;根据我的理解,这是一种分配不同线程来执行不同任务的情况,这会导致性能下降。

我想知道,在 openmp 中这样做是否有类似的惩罚?例如,假设我有一个 6 核处理器和一个具有 6 个线程的程序。如果我有一个条件让 3 个线程执行某个任务,然后让其他三个线程执行一个完全不同的任务,会不会有很大的性能损失?我想本质上它是使用 openmp 来做 MIMD 的。

基本上,我正在用 openmp 和 CUDA 编写程序。我想要两个线程运行 CUDA 内核,而另一个线程运行 C 代码。谢谢。

最佳答案

不,使用 OpenMP 的发散线程不会影响性能。这是 CUDA 中的一个问题,因为指令同时广播到一组核心的方式。当 OpenMP 线程以 CPU 内核为目标时,每个 CPU 内核都有自己独立的指令集要遵循,并且它像任何其他单线程程序一样运行。

如果您在线程发散后有同步障碍,您可能会看到您的某些内核未得到充分利用,因为这将迫使较快的线程等待较慢的线程 catch 。

关于multithreading - Openmp线程发散?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10249817/

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