Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CL_装置的含义。。。参数_C++_Opencl_Gpu - Fatal编程技术网

C++ CL_装置的含义。。。参数

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

我已经实现了一个函数,用于检索与我的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 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_设备_最大_工作组_大小值