C++ CL_装置的含义。。。参数
我已经实现了一个函数,用于检索与我的opencl设备相关的一些信息,特别是我有这个设备:C++ CL_装置的含义。。。参数,c++,opencl,gpu,C++,Opencl,Gpu,我已经实现了一个函数,用于检索与我的opencl设备相关的一些信息,特别是我有这个设备: 1. Vendor NVIDIA Corporation 1. Device: GeForce GTX 1070 1.1 Hardware Version: OpenCL 1.2 CUDA 1.2 Software Version: 391.24 1.3 OpenCL C version: OpenCL C 1.2 1.4 Address bits: 64 1.5 Max Work Item Dimensi
1. Vendor NVIDIA Corporation
1. Device: GeForce GTX 1070
1.1 Hardware Version: OpenCL 1.2 CUDA
1.2 Software Version: 391.24
1.3 OpenCL C version: OpenCL C 1.2
1.4 Address bits: 64
1.5 Max Work Item Dimensions: 3
1.6 Work Item Sizes 1024 1024 64
1.7 Work group size: 1024
1.8 Parallel compute units 15
我需要确保我了解其中一些具体的工作组/项目
假设我有工作项大小:102464,这意味着当我实例化内核时,我可以使用总共2^26个工作项,这是否正确?工作组大小:1024意味着,我想,如果我需要起诉屏障等,每个工作组的最大数量。我想这个信息是有用的。不确定并行计算单元,因为对我来说,给定名称,这应该在工作项中以某种方式涵盖,所以
并行计算单元CL_DEVICE_MAX_compute_units是什么意思?
上述参数与工作项的关系如何?
还有一个问题
地址位和工作项之间有关系吗
多谢各位
并行计算单元的含义是什么
在CPU上,这是逻辑处理器的数量。在NVidias上,这是流式多处理器的数量,在AMD GPU上,它们实际上被称为计算单元。
在OpenCL中使用这些功能的意义在于,对于某些设备,您可以通过它们的计算单元来分割它们,并在这些单元上独立启动内核
假设我有工作项大小:102464,这意味着当我实例化内核时,我可以使用总共2^26个工作项,这是否正确
不对。这些是每个维度的最大值。工作组大小限制是每个维度乘积的最大值。注意,如果最大工作组大小为1024,则可以启动例如[1024,1,1]或[128,8,1]或[4,16,4],但启动[2000,1,1]或[100100,1]将失败。去试试吧
限制通常很小的原因与屏障有关,但也与大多数GPU上相对较小的本地内存大小有关
此外,文档中还对其进行了解释
本地工作尺寸
指向一个无符号值数组,该数组描述
组成工作组的工作项也称为工作组的大小
将执行内核指定的内核的工作组。总数
工作组中的工作项数计算为本地工作大小[0]
*... * 本地工作尺寸[工作尺寸-1]。工作项的总数
工作组中的值必须小于或等于CL_设备_最大_工作组_大小值