我正在OpenCL中编写一种算法,在该算法中,我需要每个工作单元记住相当一部分数据,例如每个内核在long[70]
和long[200]
之间说些什么。
最近的AMD设备具有32 KiB __local
内存,(对于每个内核给定的数据量)该内存足以存储20-58个工作单元的信息。但是,据我从体系结构(尤其是从this drawing)了解,每个着色器核心还具有专用的专用内存。但是,我找不到它的大小。
谁能告诉我如何找出每个内核有多少私有(private)内存?
我对HD7970感到特别好奇,因为我计划尽快购买其中的一些。
编辑:问题已解决,答案是附录D中的here。
最佳答案
答案是用户评论中给出的标准答案,因此在此处将其写在新答案中以结束问题。
这些值可以在AMD APP OpenCL编程指南http://developer.amd.com/sdks/amdappsdk/assets/amd_accelerated_parallel_processing_opencl_programming_guide.pdf的附录D中找到(nVidia存在类似的文档)。显然,AMD设备的寄存器为128位(4x32),而所有现代高端设备的寄存器均为16384,因此每个计算单元的内存为256KB。
关于architecture - AMD设备上的物理内存: local vs private,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9331696/