好吧,我已经浏览过OpenCL的大部分ati和nvidia指南,有些东西我只是想确定,有些需要澄清.文档中没有任何内容给出明确的答案.
现在我有一个radeon 4650,现在正在查询我的设备,我得到了
CL_DEVICE_MAX_COMPUTE_UNITS: 8
CL_DEVICE_ADDRESS_BITS: 32
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS: 3
CL_DEVICE_MAX_WORK_ITEM_SIZES: 128 / 128 / 128
CL_DEVICE_MAX_WORK_GROUP_SIZE: 128
CL_DEVICE_MAX_MEM_ALLOC_SIZE: 256 MByte
CL_DEVICE_GLOBAL_MEM_SIZE: 256 MByte
Run Code Online (Sandbox Code Playgroud)
好吧,首先,我的卡有1GB内存,为什么我只允许256MB?
第二部分我不理解工作项维度部分,这是否意味着我可以拥有多达128*3或128 ^ 3个工作项?
当我在运行查询之前计算出来的时候,我得到了8个内核*16个流处理器*4个工作项= 512为什么这个错了?
我也为我的inte core 2 duo CPU提供了相同的3维工作项目,是否适用相同的计算?
至于命令队列,当我尝试使用OpenCL访问我的核心二重CPU作为设备时,只在一个核心上处理了东西,我尝试了多个队列并排队几个条目,但仍然只在一个核心处理,我使用了global_work_size为128*128*128*8,用于简单的写程序,其中每个工作项将自己的global-id写入缓冲区,并且我只得到零.
那么Nvidia卡呢?在具有32个cuda核心的Nvidia 9500 GT上,工作项目的计算方式是否类似?
非常感谢,我一直到处寻找答案.
好吧,首先,我的卡有1GB内存,为什么我只允许256MB?
这是ATI驱动程序错误/限制AFAIK.我会检查我的5850是否可以重新制作.
第二部分我不理解工作项维度部分,这是否意味着我可以拥有多达128*3或128 ^ 3个工作项?
号这意味着你可以有最多128在一个昏暗的,因为CL_DEVICE_MAX_WORK_ITEM_SIZES
是128 / 128 / 128
.而且,由于CL_DEVICE_MAX_WORK_GROUP_SIZE
是128,你可以有,例如:work_group_size(128, 1, 1)
或work_group_size(1, 128, 1)
或work_group_size(64, 1, 2)
或work_group_size(8, 4, 4)
等,只要每个昏暗的产品是<= 128
会被罚款.
当我在运行查询之前计算出来的时候,我得到了8个内核*16个流处理器*4个工作项= 512为什么这个错了?
我也为我的inte core 2 duo CPU提供了相同的3维工作项目,是否适用相同的计算?
不明白你在这里想要计算什么.