问题标签 [pycuda]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
734 浏览

python - pycuda.gpuarray.dot() 在第一次调用时非常慢

我在 pycuda 中有一个有效的共轭梯度方法实现,我想对其进行优化。它使用自写的矩阵向量乘法和 pycuda-nativegpuarray.dotgpuarray.mul_add函数

kernprof.py/line_profiler在一次调用中使用最多返回时间 (>60%)的程序进行分析,直到收敛花费gpuarray.dot()。(大约 0.2 秒)所有后续调用gpuarray.dot()大约需要 7 微秒。所有调用都具有相同类型的输入向量(大小:400 双打)

有什么理由吗?我的意思是最后它只是一个常数,但它使分析变得困难。我想在 pycuda 邮件列表中提问。但是我无法使用@gmail.com 地址订阅。如果有人对奇怪的.dot()行为或我无法订阅该邮件列表有任何解释,请给我一个提示;)

0 投票
2 回答
4353 浏览

cuda - 我如何告诉 PyCUDA 使用哪个 GPU?

我的机器中有两张 NVidia 卡,并且都支持 CUDA。当我运行示例脚本以开始使用此处看到的 PyCUDA 时:http ://documen.tician.de/pycuda/我收到错误

我的计算GPU是计算能力3.0,所以sm_30应该是nvcc编译器的正确选择。我的图形 GPU 只有 CC 1.2,所以我想也许这就是问题所在。我已经安装了适用于 linux 的 CUDA 5.0 版本,没有任何错误,以及所有编译器组件和 python 组件。

有没有办法明确告诉 PyCUDA 使用哪个 GPU?

0 投票
1 回答
1717 浏览

python - PyCUDA 复杂矩阵乘法 - C 代码与 Python 代码

根据我对 PyCUDA 文档、示例和 Kirk 和 Hwu 的 CUDA 书籍的阅读,我已经成功实现了一个基于 CUDA C 的复矩阵乘法程序,并且还用 PyCUDA 编写了一个版本。C 代码会产生正确的结果,但 Python 代码不会。

需要明确的是,Python 代码仅取自样本 (MatrixMulTiled),并已修改为使用“cuComplex.h”中的 cuComplexFloat 处理复数。在此修改之前,它正确地乘以实值矩阵。

所以我无法弄清楚错误。Python代码是

C代码是

Python代码的输出是

C 输出为

如果有人能指出我的 Python 代码中的错误,我将不胜感激。我正在努力赶上论文的最后期限,而我的所有其余代码都在 Python 中,所以我没有时间将它移植到 C 中。

谢谢!

=======================

编辑:问题已解决

这很可能是一个精度问题。我通过用以下替换主机传输和空矩阵创建代码来修复它......

希望这会有所帮助。

0 投票
1 回答
598 浏览

cuda - 在 Windows 7 64 位上安装 Pycuda 2013.1.1

我按照这里的说明进行操作。我已经安装了来自http://www.lfd.uci.edu/~gohlke/pythonlibs/的所有软件包(都是最新的)。

看来我安装成功了。我在 Ipython 中运行了以下代码:

并得到这个错误:

文件“C:\Python27\lib\site-packages\pycuda\compiler.py”,第 137 行,在 compile_plain
lcase_err_text = (stdout+stderr).decode("utf-8").lower() 文件“C:\ Python27\lib\encodings\utf_8.py",第 16 行,解码返回 codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xb8 in position 109: invalid start byte

如何解决这个问题?我挣扎了好几天。

0 投票
1 回答
2705 浏览

cuda - (py)CUDA 中的网格和块尺寸

我有一个关于 (py)CUDA 中块和网格尺寸的问题。我知道块的总大小有限制,但网格没有

并且实际的块大小会影响运行时间。但我想知道的是:如果我有一个由 256 个线程组成的块,像 (256,1) 一样启动它还是像 (128,2) 一样启动它,像 (64,4) 等等.

如果有区别:哪个是最快的?

0 投票
1 回答
1270 浏览

cuda - pycuda 共享内存错误“pycuda._driver.LogicError: cuLaunchKernel failed: invalid value”

我有一个奇怪的问题,我无法确定其来源:

我有一个用于一些特殊矩阵向量乘法的工作内核,我想加快速度。基本上,大矩阵(10^6 乘以 10^6)是由几个小矩阵构成的。所以我想把这些数据放在共享内存中。但是,当我尝试添加共享内存时,我只收到错误消息:

pycuda._driver.LogicError:cuLaunchKernel 失败:无效值

所以我的工作内核是:

如果我尝试添加共享内存部分,它看起来像

这是我唯一改变的部分,所以基本上它必须是 gpu_matrix[tx] = gpu_matrix_ptr[tx] 语句,不是吗?但我看不出那应该是怎样的。我基本上试图从 pycuda 示例中复制平铺矩阵乘法示例。http://wiki.tiker.net/PyCuda/Examples/MatrixmulTiled

调用是:

其中 matrix_gpu、b_gpu 和 y_gpu 是 pycuda.gpuarray 实例。

希望你能解开我的一些困惑......

0 投票
1 回答
1100 浏览

python - PyCUDA 使用字符串而不是字符串数组

如何让 PyC​​uda 拉入字符串数组而不是一个 char 字符串?如果取消注释 C 代码中的行,您会看到它遍历每个字符而不是每个字符串。

现在我只是想计算每个字符串的长度,但最终会将它变成一个词频计数器。第一步:传入一个数组...现在所需的输出应该是 25,27,44

0 投票
2 回答
957 浏览

cuda - 如何正确从 GPU 中的内存错误中恢复?

消费级 Nvidia GPU 预计每周会出现大约 1-10 个软内存错误。

如果您以某种方式设法在没有 ECC 的系统上检测到错误(例如,如果结果异常),哪些步骤是必要且足够的才能从中恢复?

只需将所有数据重新加载到 GPU(cuda.memcpy_htod在 PyCuda 中)就足够了,还是需要重新启动系统?那么“内核”而不是数据呢?

0 投票
2 回答
2052 浏览

cuda - GeForce GTX 560Ti 中的线程数

我运行了 deviceQuery 并得到了以下结果

我的理解是,我可以创建最多 65535 x 65535 x 65535 个块,每个块有 1024 个线程。那我最多可以有 65535 x 65535 x 65535 x 1024 个线程吗?如果不是,我可以拥有的最大线程数是多少?

谁能澄清这个疑问?

0 投票
2 回答
3867 浏览

python - 在 Windows 7 64 位上安装 pycuda-2013.1.1

仅供参考,我有 64 位版本的 Python 2.7,我按照pycuda 安装说明安装 pycuda。

而且我运行以下脚本没有任何问题。

但在那之后,当执行这个语句时,

我收到错误消息

CompileError: c:\users\xxxx\appdata\local\temp\tmpaoxt97\kernel.cu 的 nvcc 编译失败 [命令:nvcc --cubin -arch sm_21 -m64 -Ic:\python27\lib\site-packages\pycuda\ cuda kernel.cu] [stderr:nvcc:致命错误:nvcc 找不到受支持的 Microsoft Visual Studio 版本。仅支持 2008、2010 和 2012 版本

但我在机器上安装了 VS 2008 和 VS 2010,并按照说明设置路径和 nvcc 配置文件。有人告诉我这是怎么回事吗?

UPDATE1:正如 cgohike 所指出的,在有问题的语句之前运行以下语句将解决问题。