问题标签 [gpuarray]
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.
python-3.x - 使用非 root 用户时使用 CUDA 安装 Theano 的问题
我已按照说明在系统文件夹中(而不是作为用户)从源代码(git 版本)安装 Theano 和 GPUArray。GPUArray 测试运行良好,没有错误。
问题是如果我以 root 身份运行,Theano 仅适用于 GPU。运行示例来测试 gpu:
如果以 root 身份运行,它可以工作,尽管仍然存在与 cuDNN 无法识别设备相关的错误:
这台机器上有 2 个 Titan X。在 TensorFlow 上运行良好。我没有使用 .theanorc 文件,但我同时设置了:
我按照说明做了所有事情,尽管有一些警告,但没有错误。
我不认为这是 compile dir 的权限错误.theano
,因为如果我 chown .theano
dir 行为是相同的。
我怎样才能解决这个问题?
matlab - Matlab pdist2 和 mvnpdf 与 gpuArray
我在使用带有 gpuArrays 的 Statistics and Machine Learning Toolbox 的pdist2或mvnpdf函数时遇到了麻烦,尽管它明确指出它应该可以工作:
我怎样才能使这项工作?
没有gpuArrays,使用这2个函数是没有问题的。
谢谢你的帮助。
编辑
我收到以下错误:
cuda - Theano - pyGpuArray 找不到 libnvrtc.so
我最近更改了配置以更快地训练 CNN。我有一个 gtx 1080。对于我现有的大多数神经网络,我通过 python3 使用 theano 后端。
因为我读过 CUDA 7.5 没有完全使用 pascal 架构,所以我安装了 CUDA 8 和相应的 cudnn 6.X。
我的问题如下,pygpuarray 似乎无法找到“libnvrtc.so”:
我很确定 cuda 已安装,这是 nvcc --version 输出:
我在以下位置找到了该文件:/usr/local/cuda-8.0/lib64
奇怪的是“ldconfig -p | grep libnvcc”命令什么也没返回……
我希望这篇文章不存在于其他任何地方,我已经进行了一些搜索以防止这种情况发生,但你知道,互联网是巨大的。
问我是否需要更多信息。由于我没有设法解决这个问题,我显然不知道解决这个问题需要哪些信息,所以我做了这个小简历等待你的问题(如果需要)。
arrays - 在 matlab 中使用 gpuArray 而不是数组更高效?
如果我在以下链接中使用列表中的任何功能:
在 GPU 上运行内置函数, 参数类型为gpuArray而不是数组,计算结果会更快吗?如果答案是肯定的,是否存在使用数组而不是gpuArray更方便的情况?
据称这个问题是这个问题的重复:
为什么 MATLAB gpuarray 仅添加两个矩阵要慢得多?
显然情况并非如此,因为我是以一般方式询问的,而这是针对特定代码将 CPU 与 GPU 进行比较。最多,该链接应该提供这个问题的答案。
python - pyCuda 和 gpuarray.maximum 与 numpy 不同
也许我错过了一些东西。我正在使用 pycuda,我有以下矩阵 m_gpu:
我打印出第一列和第二行以进行完整性检查:
然后我进行元素比较以返回一个最大值数组,这是错误的,因为第三个元素应该是“5”但它是“1”:
可能是 gpuarray.maximum 中的错误?似乎不太可能。我使用常规 numpy 执行相同的操作,它返回正确的值。在 Windows 上使用 pycuda-2017.1.1+cuda8061-cp27。帮助?谢谢。
theano - 在 THEANO_FLAGS 中设置 CUDA 的路径
我尝试设置 THEANO_FLAGS,然后导入 Theano。这总是会导致错误。
如何将路径“/Developer/NVIDIA/CUDA-7.0/lib/libnvrtc.dylib”更改为“/usr/local/cuda/lib/libcuda.dylib”?
matlab - 是否可以使用 gpuArray 预分配一个数组,并在 mexcuda 设置中对其具有写权限?
我在 MatLab (2018a) 中编写了一段代码,它是标准 matlab 代码和 CUDA 代码的混合体,我使用编译与 mexcuda 将其链接起来。我的代码中的核心循环包含一个矩阵的插值,比如从大小 [nxm] 到 [N x M]。我已经使用 GPU 加快了这部分的速度。由于此插值在循环内,并且由于我插值的矩阵的大小(之前和之后)在循环的每次迭代中都是相同的,我想通过预先分配输出大小的数组来加速应用程序显卡。所以我想做类似的事情:zeros(N,M,'gpuArray')
在开始时,将它作为输入提供给 mexFunction,然后将插值矩阵写入这个数组。这将节省相当多的分配时间([N_iterations-1]*allocation_time,粗略地说)。
我现在的问题是:我不知道这是否可能。使用 mexFunction() 作为入口点,我知道检索输入数组的唯一方法是使用以下内容:
但是,顾名思义,这会导致只读权限。我不能使用mxGPUGetData(in)
,因为 mxGPUArray 是const
,不能用它初始化非常量实体。有谁知道是否有解决这个问题的方法不涉及在 mexFunction 内分配数组?
编辑:
下面的代码显示了两个 C 代码示例,其中第一个是我当前代码的类比,第二个是我正在努力的目标:
当前的:
主意:
以上两个是(至少在我看来)以下 matlab-cuda 混合代码的类比:
当前(matlab);mexcuda 函数需要为 input(:,:,indx) 的插值分配内存
想法:内存分配被移出 mexcuda 函数(因此,移出核心循环),并且 mexcuda 函数只需要检索指向这个(可写)数组的指针;
请注意,确实有可能进一步并行化:如前所述,我正处于并行化整个事物的中间步骤。
matlab - 将所有变量转换为 gpuArrays 不会加快计算速度
我正在使用 MATLAB 编写仿真,其中使用了 CUDA 加速。
假设我们有向量x
和,y
矩阵和标量A
变量,,,,,。dt
dx
a
b
c
我发现通过在运行迭代和内置函数之前放入 , ,可以显着加速x
迭代y
。A
gpuArray()
但是,当我尝试将dt
, dx
, a
, b
,之类的变量c
放入 中gpuArray()
时,程序会显着减慢 30% 以上。(时间从 7 秒增加到 11 秒)。
为什么将所有变量放入gpuArray()
?
x
(简短的评论,这些标量与, y
, ,相乘A
,并且从未在单独的迭代过程中使用过。)
matlab - 解释从输入到具有复杂结果的 GPU 计算的要求
考虑这行代码:
结果是:
现在考虑以下代码行:
结果是:
这个问题显然与double -> complex double
GPU 上的转换有关,这是不允许的。确实,当我应用解决方法(文档中也提到过)时,它解决了问题 - 但我不明白为什么。
有人会对此有所了解吗?这是 VRAM 的一些限制吗?我正在使用的特定卡(我的是 GTX 660,CC 为 3.0)?MATLAB 的实现(我使用的是 R2018b)?操作系统?