0

对于一个简单的 PyOpenCL 矩阵加法内核,我的 GPU 似乎允许使用 562% 的全局内存和 133% 的本地内存。这是我的脚本打印的内容:

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% 时,为什么我的脚本不会立即失败?

4

1 回答 1

1

全局大小乘以32,这就是错误。

当一个 float32 显然有 4 个字节时,这会产生ab排列每个 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 %
于 2013-10-24T16:09:07.880 回答