OpenCL线程占用
OpenCL thread occupation
我写了一个简单的OpenCL-raycaster,每个线程代表一个像素。当然,有些线程,特别是那些只显示空void的线程比其他线程终止得快得多。我的问题是:使用的内核是否可用于其他内核在它们return
之后运行,或者在工作组的最后一个甚至整个程序完成后,它们是否都被释放?
在OpenCL中,全局工作大小被细分为许多工作组(可以串行或并行执行,直到实现,但在任何一种情况下都是独立的)。工作组的大小各不相同(例如,典型的是32到256个条目),您也可以指定工作组的大小。直到工作组中的所有线程都完成后,工作组才会终止,因此一个线程上的繁重处理加上附近线程上的轻处理可能会导致硬件空闲。然而,由于局部性(对象与空白空间),这可能只会发生在对象的边界上。此外,在工作组中,一些线程可能被分组在一起并作为SIMD进行处理,这也意味着分支可能导致空闲硬件(研究"线程分歧")。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 在C++中使用cURL和多线程
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在cuda线程之间共享大量常量数据
- 如何将元素添加到数组的线程安全函数?
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 异常属于C++中的线程还是进程
- C++中的线程安全删除
- C++使用params创建线程函数会导致转换错误
- 类与私有变量的其他类之间的线程安全性
- CoInitialize()在单独的线程上崩溃而不返回
- 是否可以在多线程而不是 cuda/opencl C++运行 GPU?
- 使用来自多个主机线程的不同 OpenCL 命令队列
- OpenCL-循环的矢量化与线程内
- OpenCL线程占用
- OpenCL:只关心线程全局ID的理想block #
- 在标准c++和OpenCL之间共享多线程代码