问题标签 [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 投票
3 回答
3746 浏览

cuda - 尽管代码中没有双精度,但 Cuda 将双精度降级为浮点错误

我正在使用 PyCUDA 编写内核。我的 GPU 设备只支持计算能力 1.1 (arch sm_11),所以我只能在我的代码中使用浮点数。我付出了很大的努力来确保我用浮点数做所有事情,但尽管如此,我的代码中有一个特定的行一直导致编译器错误。

代码块是:

这里,idx()是一个__device__辅助函数,它根据像素索引i和返回线性索引j,它只适用于整数。我自始至终都在使用它,它不会在其他任何地方出现错误,所以我强烈怀疑它不是idx(). 该sqrt()调用仅来自支持浮点数的标准 C 数学函数。所有涉及的数组、、、x_gradienty_gradient都是gradient_magfloat*它们是我函数输入的一部分(即在 Python 中声明,然后转换为设备变量等)。

我已经尝试删除额外的演员表以漂浮在上面的代码中,但没有运气。我也尝试过像这样完全愚蠢的事情:

所有这些变体都会产生相同的错误:

有任何想法吗?我已经在我的代码中调试了许多错误,并希望今晚让它工作,但事实证明这是一个我无法理解的错误。

已添加- 这是内核的截断版本,它在我的机器上产生上述相同的错误。

0 投票
1 回答
2445 浏览

cuda - pycuda,cuda - 一些问题和一个简单的代码给我错误“标识符“N”未定义“

我正在尝试学习 pycuda,并且我有一些我想了解的问题。我认为我的主要问题是如何在 pycuda 和 cuda 文件中的函数之间进行通信。

所以,如果我有一个 C++ 文件(cuda 文件)并且在其中我有一些函数,我想在其中一个中实现 pycuda。例如,假设我想要包含一些数组的函数“compute”并进行计算他们。我的方法是什么?

1)在python中初始化数组,为GPU分配内存并将数据传输到GPU。

2)从pycuda调用mod=SourceModule(""" global void ......""")。

现在,我想问:我将如何处理这个模块?我会把所有的“计算”功能放在里面?因为,如果只是在“全局”中进行一些计算,我不知道如何在 pycuda 和c++ 函数。我如何将结果传递回 c++ 文件(cuda 文件)。

3)在cuda中,我们有线程数为'blockDIm'和块数为'gridDim'。在pycuda中?我们有块大小,块(4,4,1),这意味着16个线程??网格大小, size(16,16) 表示 256 个块?

4)我试图在pycuda中做一个来自'cuda by an example book'的例子,它添加了向量。代码如下:

但它给了我一个错误:“标识符“N”未定义“

谢谢!

0 投票
3 回答
24881 浏览

pycuda - pycuda -- 'CUDA_ROOT 未设置,并且 nvcc 不在路径中。'

尽管我已经安装了 pycuda 并且可以正常使用,但它开始(没有做某事)不起作用。所以,我尝试再次安装,但是当我在做的时候

python configure.py --cuda-root=/usr/local/cuda/bin

它给了我标题中的错误。

nvcc 文件位于上述目录中。

0 投票
1 回答
539 浏览

pycuda - pycuda——如何处理“包括库”

我有一个c++代码。我用cuda修改了它。但是,我想使用Pycuda。该代码具有例如:

在 Pycuda 中你不能使用这些库。我该如何处理这个问题?

0 投票
1 回答
2095 浏览

python - 使用 pycuda (lerp) 进行线性插值

我是一个刚刚进入 pyCUDA 的休闲 Python 达人。我试图弄清楚如何使用 pyCUDA 实现线性插值(lerp)。CUDA CG函数为:http ://http.developer.nvidia.com/Cg/lerp.html

我的最终目标是从一组加权随机点在 pycuda 中进行双线性插值。我从来没有为此编写过 C 或 CUDA 程序,并且正在学习。

这是我已经走了多远:

对此的任何帮助都会很棒!

0 投票
1 回答
3750 浏览

cuda - 在 PyCUDA 中显示所有 NVCC 警告

[更新]如何输出警告信息compiler.SourceModule(kernel_code)?在@flipchart 的帮助下,我能够通过 PyCUDA 将正确的参数传递给 NVCC,但我仍然不知道在哪里访问编译器警告。

[原问题]

直接使用 NVCC 可以使用编译器开关-Wall*. 如何在 pycuda 中存档?

我试过mod = compiler.SourceModule(kernel_code,options=['-Wall'])了,但错误消息指出:

pytools.prefork.ExecError: error invoking 'nvcc --cubin -Wall -arch sm_11 -I/usr/local/lib/python2.6/dist-packages/pycuda-0.94.2-py2.6-linux-x86_64.egg/pycuda/../include/pycuda kernel.cu': status 255 invoking 'nvcc --cubin -Wall -arch sm_11 -I/usr/local/lib/python2.6/dist-packages/pycuda-0.94.2-py2.6-linux-x86_64.egg/pycuda/../include/pycuda kernel.cu': nvcc fatal : Unknown option 'Wall'

源问题是,我花了一整天的时间调试,因为我忽略了从floatto的不明确转换int

*自 CUDA 3.0 以来,带有“--compiler-options -Wall”的系统头警告

0 投票
2 回答
2792 浏览

c++ - cuda, pycuda -- 如何写复数 -- 错误:类“cuComplex”没有成员“i”

我很难在 cuda、pycuda 中使用复数。

我在 C 中有这个:

此外,在相同的代码中:

如何将其转换为与 pycuda 一起使用?我尝试过这样的事情(根据'cuda by an example'一书):

我犯的一些错误是:

不允许使用数据成员初始化程序

此声明没有存储类或类型说明符

谢谢!

----------------- - 编辑- ------------- ------------------

我使用#include <pycuda-complex.hpp> (相对于上述)做了以下操作:

至于typedef std::vector< boost::array<std::complex<double>,3 > > ComplexFieldType;

并且ComplexFieldType const & M,在全局函数中,我尝试了“float *M”或“cmplx *M”。

直到现在,我收到错误:

变量“cmplx”不是类型名称

如果我使用 pycuda::complex cmplx; ,然后我得到:

标识符“cmplx”未定义

后跟“::”的名称必须是类或命名空间名称

还:

表达式必须具有指向对象的类型(但也许这是来自代码的另一部分)

0 投票
2 回答
1537 浏览

python - Windows 7 x64 位 Visual Studio2010 上的 pycuda

我已经尝试了一个多星期来在我的 win7 x64bit 机器上追踪 pycuda 的清晰/干净安装,并找到http://wiki.tiker.net/PyCuda/Installation/Windows ——我可以肯定地说——唯一的页面每个人都对它保持参考,它太模糊了。我要求任何真正使用 pycuda 的人都可以帮助我在我的机器上设置它,将它与 Visual Studio 2010 一起使用,以及任何有关安装和 pdf 资源的指南

0 投票
1 回答
456 浏览

php - 使用 Cuda 测试多个阵列的组合

我有以下用 php 编写的代码,并且一直在阅读 Cuda 以利用我的旧 Geforce 8800 Ultra 的 GPU 处理能力。如何将此嵌套组合测试转换为 Cuda 并行处理代码(如果可能的话......)?二维数组的总组合:$a、$b、$c、$d、$e 迅速上升到数万亿...

0 投票
1 回答
496 浏览

pycuda - 如何告诉 PyCUDA 重用早期内核的内存?

我的程序有两个内核,第二个内核应该使用已经上传的输入数据和第一个内核的结果,所以我可以节省内存传输。我将如何存档?

这就是我启动内核的方式: