每个GPU设备(AMD,Nvidia或其他)都被分为几个计算单元(多处理器),每个计算单元都有固定数量的内核(顶点着色器/流处理器)。因此,一个设备有(计算单元) x (顶点着色器/计算单元)个同时处理器,但每个多处理器只有一小部分固定数量的__local内存(通常为16KB或32KB)。因此,这些多处理器的确切数量很重要。
现在我的问题是:
现在我的问题是:
- (a) 我如何知道设备上的多处理器数量?这与
CL_DEVICE_MAX_COMPUTE_UNITS
相同吗?我能否从规格说明书(例如http://en.wikipedia.org/wiki/Comparison_of_AMD_graphics_processing_units)中推断出来? - (b) 在购买 GPU 之前,我如何知道每个 MP 上有多少可用的
__local
内存?当然我可以在运行它的计算机上请求CL_DEVICE_LOCAL_MEM_SIZE
,但我不知道如何从甚至像http://www.amd.com/us/products/desktop/graphics/7000/7970/Pages/radeon-7970.aspx#3这样的详细规格单中推断出来? - (c) 目前具有最大
CL_DEVICE_LOCAL_MEM_SIZE
的卡是什么?价格并不是很重要,但64KB(或更大)将为我编写的应用程序带来明显的好处,因为我的算法完全可并行化,但在每个 MP 内具有随机访问模式(遍历图的边缘)。