2013-05-01 38 views
3

我正在AMD HD 7970(蓝宝石GHz版)上测试一些OpenCL图像处理。这个特殊的卡上有6GB的RAM,但是这次调用:AMD 7970报告不正确DEVICE_GLOBAL_MEM_SIZE

clGetDeviceInfo(device, CL_DEVICE_GLOBAL_MEM_SIZE, sizeof(buf_ulong), &buf_ulong, NULL); 

返回值2,147,483,648。

此OpenCL调用是否存在返回卡实际内存大小的问题?是否有这种卡的设置限制了可以使用的OpenCL内存的数量?

任何见解都会有所帮助!

+2

这看起来很像实际结果的较低32位。你是否排除了将该值放入32位变量的某个位置?在这种情况下,我的钱会在驱动程序上错误地用32位变量唤醒 – Grizzly 2013-05-01 10:31:03

+0

变量被放入uint64_t中。 – 2013-05-01 22:01:16

+0

因此它在使用uint64时报告不同的数字?什么是价值? – mfa 2013-05-03 02:45:56

回答

1

我的HD7970(3GB版本,蓝宝石GHz版)也报告了2GB的空闲内存。报告内存少于总量(操作系统和驱动程序必须保留一些内存)是非常正常的,但对于6GB版本,您的值看起来实在太低。

在较老的AMD驱动程序可以通过几个env设置保留给OpenCL的内存量。变量。然而,这是一个从未得到官方支持的功能,我担心它不会在最新的驱动程序上出现。

+1

环境变量是答案。设置“GPU_MAX_ALLOC_PERCENT = 100”可以完全分配卡上可用的6GB。 – 2013-05-02 16:49:04