我的GPU似乎允许562%使用全局内存,133%使用本地内存用于简单的PyOpenCL矩阵添加内核。这是我的脚本打印的内容:
GPU: GeForce GTX 670
Global Memory - Total: 2 GB
Global Memory - One Buffer: 3.750000 GB
Number of Global Buffers: 3
Global Memory - All Buffers: 11.250000 GB
Global Memory - Usage: 562.585844 %
Local Memory - Total: 48 KB
Local Memory - One Array: 32.000000 KB
Number of Local Arrays: 2
Local Memory - All Arrays: 64.000000 KB
Local Memory - Usage: 133.333333 %
如果我在这一点上增加全局内存使用量,我会收到错误:mem object allocation failure
如果我在此点之上增加了本地内存使用量,我会收到错误:invalid work group size
为什么当本地或全局的内存使用超过100%时,我的脚本不能立即失败?
答案 0 :(得分:1)
全局大小乘以32
,即错误。
当float32显然有4字节时,这会使a
和b
数组各占4个字节。不是32。
所以适当的结果是:
Global Memory - Total: 2 GB
Global Memory - One Buffer: 0.4687500 GB
Number of Global Buffers: 3
Global Memory - All Buffers: 1.40625 GB
Global Memory - Usage: 70.3125 %
Local Memory - Total: 48 KB
Local Memory - One Array: 4.000000 KB
Number of Local Arrays: 2
Local Memory - All Arrays: 8.000000 KB
Local Memory - Usage: 16.6666666 %