【发布时间】:2012-01-14 23:21:34
【问题描述】:
每个 GPU 设备(AMD、NVidea 或任何其他设备)都被拆分为多个计算单元(多处理器),每个计算单元都有固定数量的内核(顶点着色器/流处理器)。因此,一个有(Compute Units) x (VertexShaders/compute unit) 并发处理器来计算,但每个多处理器只有少量固定数量的__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 内的随机访问模式也是高度内存密集型的(迭代边缘图表)。
【问题讨论】:
-
尝试在 SDK 中 AMD/NVIDIA 提供的示例中运行设备查询。如果你想知道特定设备的设备查询,有很多人已经把它放到网上。
标签: opencl