2013-05-01 41 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