问题标签 [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.
cuda - 尽管代码中没有双精度,但 Cuda 将双精度降级为浮点错误
我正在使用 PyCUDA 编写内核。我的 GPU 设备只支持计算能力 1.1 (arch sm_11),所以我只能在我的代码中使用浮点数。我付出了很大的努力来确保我用浮点数做所有事情,但尽管如此,我的代码中有一个特定的行一直导致编译器错误。
代码块是:
这里,idx()
是一个__device__
辅助函数,它根据像素索引i
和返回线性索引j
,它只适用于整数。我自始至终都在使用它,它不会在其他任何地方出现错误,所以我强烈怀疑它不是idx()
. 该sqrt()
调用仅来自支持浮点数的标准 C 数学函数。所有涉及的数组、、、x_gradient
和y_gradient
都是gradient_mag
,float*
它们是我函数输入的一部分(即在 Python 中声明,然后转换为设备变量等)。
我已经尝试删除额外的演员表以漂浮在上面的代码中,但没有运气。我也尝试过像这样完全愚蠢的事情:
所有这些变体都会产生相同的错误:
有任何想法吗?我已经在我的代码中调试了许多错误,并希望今晚让它工作,但事实证明这是一个我无法理解的错误。
已添加- 这是内核的截断版本,它在我的机器上产生上述相同的错误。
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”未定义“
谢谢!
pycuda - pycuda -- 'CUDA_ROOT 未设置,并且 nvcc 不在路径中。'
尽管我已经安装了 pycuda 并且可以正常使用,但它开始(没有做某事)不起作用。所以,我尝试再次安装,但是当我在做的时候
python configure.py --cuda-root=/usr/local/cuda/bin
它给了我标题中的错误。
nvcc 文件位于上述目录中。
pycuda - pycuda——如何处理“包括库”
我有一个c++代码。我用cuda修改了它。但是,我想使用Pycuda。该代码具有例如:
在 Pycuda 中你不能使用这些库。我该如何处理这个问题?
python - 使用 pycuda (lerp) 进行线性插值
我是一个刚刚进入 pyCUDA 的休闲 Python 达人。我试图弄清楚如何使用 pyCUDA 实现线性插值(lerp)。CUDA CG函数为:http ://http.developer.nvidia.com/Cg/lerp.html
我的最终目标是从一组加权随机点在 pycuda 中进行双线性插值。我从来没有为此编写过 C 或 CUDA 程序,并且正在学习。
这是我已经走了多远:
对此的任何帮助都会很棒!
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'
源问题是,我花了一整天的时间调试,因为我忽略了从float
to的不明确转换int
。
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”未定义
后跟“::”的名称必须是类或命名空间名称
还:
表达式必须具有指向对象的类型(但也许这是来自代码的另一部分)
python - Windows 7 x64 位 Visual Studio2010 上的 pycuda
我已经尝试了一个多星期来在我的 win7 x64bit 机器上追踪 pycuda 的清晰/干净安装,并找到http://wiki.tiker.net/PyCuda/Installation/Windows ——我可以肯定地说——唯一的页面每个人都对它保持参考,它太模糊了。我要求任何真正使用 pycuda 的人都可以帮助我在我的机器上设置它,将它与 Visual Studio 2010 一起使用,以及任何有关安装和 pdf 资源的指南
php - 使用 Cuda 测试多个阵列的组合
我有以下用 php 编写的代码,并且一直在阅读 Cuda 以利用我的旧 Geforce 8800 Ultra 的 GPU 处理能力。如何将此嵌套组合测试转换为 Cuda 并行处理代码(如果可能的话......)?二维数组的总组合:$a、$b、$c、$d、$e 迅速上升到数万亿...
pycuda - 如何告诉 PyCUDA 重用早期内核的内存?
我的程序有两个内核,第二个内核应该使用已经上传的输入数据和第一个内核的结果,所以我可以节省内存传输。我将如何存档?
这就是我启动内核的方式: