问题标签 [cupy]
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 - 使用 GPU 在 PyTorch/CuPy 中进行基本矩阵运算
我有一个 numpy 脚本,我在其中对大矩阵执行以下操作(可以10000x10000
使用float
值):
我首先在 CPU (i7-8750H) 上使用了 pytorch 张量,它的运行速度提高了 2 倍:
现在我正在尝试在 GPU (1050Ti Max-Q) 上执行它,看看我是否可以获得另一个加速,但代码运行速度比 numpy 版本慢(我已经安装了 CUDA 和 cuDNN)。也许 pytorch 它甚至不是做这类事情的最佳库,但我现在正在学习它,我认为它可以帮助我:
我错过了什么吗?
编辑: 我也尝试过使用 CuPy,但它仍然很慢:
与少量操作的计算相比,内存分配的开销可能太大了。
numpy - “import numpy as cp”是处理非 GPU 情况的好习惯吗?
我正在使用 CuPy 编写理想地在 GPU 上运行以提高速度的代码。但是,我希望代码能够使用 numpy 实现运行(尽管速度更慢)。目前我正在做以下事情:
我担心我以后可能会遇到问题。这是好习惯吗?
cupy - 从 C 代码创建 cupy.array() 的 C 头文件
我想在 C 代码中创建一个 cupy.array(),类似于我通过 PyArray_SimpleNew() 使用 numpy 的方式。到目前为止,我无法找到我应该用来执行此操作的 C 标头。这目前可能吗?谢谢
python - 在cupy中使用元素内核对条目求和的问题
在第一个代码示例 (kernel_conv) 中,我编写了一个简单的卷积,它与预期的结果 [1,1,2,1,1] 一起工作。
然后我使用元素内核来对向量的所有条目求和。但是,如果我运行第二个示例 (kernel_sum),我会得到结果 [3,0,0],但会期望 [6,0,0]。
这两个例子有什么区别?为什么第一个示例中的变量 y 被更新,而在第二个示例中它似乎被覆盖了?
cupy - Cupy中的间歇性OutOfMemoryError
我正在使用 Cupy 取得进展,并且能够将以前使用 numpy 和 C++ 的迭代图像重建速度提高大约 3 倍。现在我遇到了一个间歇性问题,指出我似乎错过了一些重要的事情。
我正在使用 NVIDIA GeForce GTX 1080 Ti 的 Mac Pro 2013 年末 OSX 10.13.6 上运行它。
我受到内存的限制,并继续使用 cupy.asarray() 将数据加载到 GPU,然后通过将变量设置为 None 来删除它。这有效,但我间歇性地得到: cupy.cuda.memory.OutOfMemoryError
我在迭代中运行以下循环:
打印输出显示稳定的内存使用情况,直到突然在cupy_array = cp.asarray()行抛出错误。以下是日志记录语句的摘录:
我特别惊讶的是,在发生错误的情况下,系统似乎需要 10687672832 字节,其中日志记录表明使用了 3477175296 字节,同时分配了 2158119936 字节。虽然我意识到我需要两倍的可用内存来加载一个数组,但在这种情况下,它实际上需要加载的数组大小的 3 倍以上。
有什么明显的我失踪了吗?谢谢你看这个。
python - 如何为 Windows 的 pyculib 添加正确的分发渠道?
我正在尝试通过 conda 包分发安装 Nvidia 的 GPU python 包,但我遇到了以下错误:
CuPy 和 pyculib 包的正确分发渠道是什么?
python - 使用cupy时内存不足
当我使用cupy处理一些大数组时,出现了内存不足的错误,但是当我检查nvidia-smi查看内存使用情况时,它没有达到我的GPU内存的限制,我正在使用nvidia geforce RTX 2060,GPU 内存为 6 GB,这是我的代码:
似乎有足够的空间可以使用,为什么会发生这个错误,这是因为我的 GPU 没有足够的内存,还是因为我的代码错误或我没有正确分配内存。
python - Cupy.unique() 函数中是否有 CuPy 版本支持(轴)选项?任何解决方法?
我正在寻找支持轴选项的 numpy.unique() 的 GPU CuPy 对应物。
我有一个 Cupy 2D 数组,我需要删除它的重复行。不幸的是, cupy.unique() 函数将数组展平并返回具有唯一值的一维数组。我正在寻找像 numpy.unique(arr, axis=0) 这样的函数来解决这个问题,但 CuPy 还不支持 (axis) 选项
python - 我应该怎么做而不是在 CuPy 中使用 numpy.vectorize?
我应该如何将定义的函数应用于 cupy.array 而不是 np.vectorize?有没有在cupy中实现类似的功能?
我正在用 Python 3.6.9 编写模拟程序。
我想用 CuPy(CUDA10.1 的 6.0.0)在 GPU(GTX1060,NVIDIA)中进行模拟。
在原始代码中,函数 numpy.vectorize 用于将定义的函数应用于 np.array。但是,相同的功能尚未在 CuPy 中实现。
原始代码(使用numpy)如下:
我知道几乎 numpy 的功能已经在 CuPy 中实现了。所以我改变了
至
但是发生了AttributeError。
python-c-api - 如何正确地将 CuPy 数组发送到 Python C 扩展模块
我正在尝试为 Python 编写一个自定义 CXX 扩展,它将 CuPy 数组作为输入。从 CXX 扩展传递和返回 CuPy 数组的推荐方法是什么?
我目前的方法是将内存指针作为整数传递给扩展,并就地修改 CuPy 数组。但是,使用这种方法时,当数组被传递给两个扩展函数而不被重新转换为中间的 CuPy 数组时,会出现一些奇怪的行为。
我正在研究一个有效的示例,但与此同时,这是我的方法的示意图,我想要关于如何在 CuPy 和 CXX 之间交换数组的建议。
以下函数使用 pybind11 或 SWIG 包装