CUDA 中使用了术语线程发散;据我了解,这是一种分配不同线程来执行不同任务的情况,这会导致性能受到很大影响。
我想知道,在openmp中这样做会不会有类似的惩罚?例如,假设我有一个 6 核处理器和一个有 6 个线程的程序。如果我有一个条件让 3 个线程执行某个任务,然后让其他三个线程执行完全不同的任务,会不会对性能造成很大影响?我想本质上它有点像使用openmp来做MIMD。
基本上,我正在用 openmp 和 CUDA 编写程序。我希望两个线程运行 CUDA 内核,而其他剩余线程运行 C 代码。谢谢。