问题标签 [julia-gpu]

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 回答
947 浏览

opencl - Julia 中的 OpenCL BLAS

我对 julia 语言感到非常惊讶,我已经为我当前的项目实现了许多机器学习算法。尽管 julia 0.2 设法从我的 2011 MBA 中获得了一些出色的结果,在类似的 linux 硬件上优于所有其他解决方案(我想是由于 vecLib blas),但我当然想要更多。我正在购买 radeon 5870,并希望将我的矩阵操作推到那里。我基本上只使用简单的 BLAS 操作,例如 matmul、additios 和 transpositions。我使用 julia 的紧凑语法 A' * B + C 并且当然想保留它。

有什么方法(或未决的里程碑)可以让这些基本操作在 GPU 上执行吗?我喜欢 2500x2500 的单精度矩阵,所以我希望能显着加快速度。

0 投票
3 回答
3892 浏览

opencl - 我可以使用 Julia 对我的 GPU 和 CPU 进行编程吗?

我的系统有显卡。我不玩游戏。

我想编写一些高性能计算的东西来取乐。

我可以使用 JULIA lang 来利用我的硬件吗?

0 投票
1 回答
1044 浏览

build - 如何判断 Suitesparse/CHOLMOD 是否正在使用 GPU?

我从头开始构建了包含 SuiteSparse 的 Julia。在构建 SuiteSparse 依赖项时,我确保按照说明设置SuiteSparse_config.mk文件的相关部分。

但是,完成构建后,具有 220k 个未知数的 c = A\b 的执行时间(A 的非常规则的结构)没有改变。

如何测试 CHOLMOD 是否正在积极使用 GPU?

0 投票
2 回答
280 浏览

parallel-processing - 如何与 Julia CUDArt 同步?

我刚刚开始使用 Julia 的 CUDArt 包来管理 GPU 计算。我想知道如何确保如果我从 gpu 中提取数据(例如 using to_host()),我不会在对其执行所有必要的计算之前这样做。

通过一些实验,似乎to_host(CudaArray)在更新特定的 CudaArray 时会滞后。那么,也许仅仅使用它就足以确保安全?但这似乎有点偶然。

现在,我正在使用该launch()函数来运行我的内核,如包文档中所述。

CUDArt 文档给出了一个使用 Julia@sync宏的示例,看起来很可爱。但是出于我的目的,@sync我已经完成了我的“工作”,并准备在内核启动后立即继续launch(),而不是一旦完成。据我了解launch()- 没有办法改变这个特性(例如让它等待接收它“启动”的函数的输出)。

我怎样才能完成这样的同步?

0 投票
1 回答
1454 浏览

julia - Julia 中的 GPU 计算选项

我正在考虑购买一张 GPU 卡来在 Julia 中试验 GPU 计算。正如我现在所看到的,基本上有两种选择:NVIDIA 或 AMD 芯片组。

我的问题是:是否有与 Julia 一起使用的推荐选项?由于我是 GPU 计算的新手,我更关注易用性而不是性能,所以我可以想象当前用作 GPU 接口的 Julia 包基本上决定了答案。

我使用基于 Windows 7 的系统。任何帮助表示赞赏。

0 投票
0 回答
203 浏览

performance - ArrayFire.jl 的性能会随着时间的推移而缓慢下降

所以我试图在 Julia 中使用 ArrayFire,我发现随着时间的推移性能会奇怪地下降:

如果你运行这段代码,你会发现每次迭代都变得越来越慢。finalize我尝试在内部调用r并尝试将这些数组从 GPU 内存中抛出,以防出现问题,但它没有做任何事情。af()

这是输出:

0 投票
2 回答
852 浏览

gpu - 在 Julia 中“敲定”是什么意思?

我目前正在使用 CUDArt 包。GitHub文档在加载包含自定义 CUDA C 内核的 ptx 模块时包含以下代码片段:

(评论原文)

我试图了解这个false最终确定选项的确切含义以及我何时/不想使用它。我在 SO 上看到了这篇文章(在 Julia 中编写模块完成方法的正确方法是什么?)。它从 Julia 文档中引用为:

终结器(x,函数)

注册一个函数 f(x) 以在没有程序可访问的 x 引用时调用。如果 x 是位类型,则此函数的行为是不可预测的。

不过,我真的不明白这意味着什么,甚至这里的最终确定是否与 CUDArt 示例中提到的相同。例如,x当程序无法访问参数时,尝试在参数上调用函数对我来说是没有意义的——这怎么可能呢?因此,我将不胜感激任何帮助澄清:

  1. 在 Julia 中“敲定”是什么意思?
  2. 当我想/不想在使用 CUDArt 导入 .ptx 模块的上下文中使用它时
0 投票
2 回答
667 浏览

asynchronous - Julia:多个 GPU 上的并行 CUSPARSE 计算

我有n单独的 GPU,每个都存储自己的数据。我想让他们每个人同时执行一组计算。此处的 CUDArt 文档描述了使用流异步调用自定义 C 内核以实现并行化(另请参见此处的另一个示例)。使用自定义内核,这可以通过stream在 CUDArt 的launch()函数实现中使用参数来完成。然而,据我所知,CUSPARSE(或 CUBLAS)函数没有类似的流规范选项。

CUSPARSE 是否可以做到这一点,或者如果我想使用多个 GPU,我是否只需要深入 C 语言?

修订的赏金更新

好的,所以,我现在终于有了一个相对不错的解决方案。但是,我确信它可以通过一百万种方式进行改进——现在它很老套。特别是,我喜欢按照我在这个SO 问题中尝试和写的内容的解决方案建议(我从来没有正常工作)。因此,我很高兴将赏金奖励给在这里有更多想法的任何人。

0 投票
0 回答
151 浏览

opencl - OpenCL 没有将所有数据读回缓冲区

所以我在 Julia 中使用 OpenCL API,当我运行以下代码时:

现在,当回读到主机时,大约 50 个坐标会归零。任何人都可以在他们的机器上重现这个吗?这是我的规格:

我的 MAX_MEM_ALLOC_SIZE 只有 0.4GB,这可能是造成这种情况的原因,因为a它比那个大。

但是,我遇到了内存大小 < 0.4GB 的问题,不幸的是我无法始终如一地重现它们,它们似乎以某种奇怪的方式依赖于加载到设备内存中的其他缓冲区。

有没有办法重置设备内存?

0 投票
1 回答
329 浏览

julia - 使用 CuArrays 限制 Julia 中的 GPU 内存

我对 julia 还很陌生,我目前正在尝试一些具有循环结构的深度卷积网络。我正在使用 CuArrays(CUDA 9.0 版)在 GPU 上训练网络。

拥有两个独立的 GPU,我启动了两个具有不同数据集的实例。经过一些训练后不久,两个 julia 实例都分配了所有可用内存(2 x 11GB),我什至无法使用 CuArrays 自己启动另一个实例(内存分配错误)。这成了一个相当大的问题,因为它运行在许多人共享的服务器上。

我假设这是使用所有可用内存尽可能快地训练的正常行为。但是,在这种情况下,我想限制可以分配给同时运行两个实例的内存,并且不要阻止我或其他人使用 GPU。令我惊讶的是,我只发现了非常非常少的信息。

我知道 CUDA_VISIBLE_DEVICES 选项,但这无济于事,因为我想在两个设备上同时训练。另一个建议调用 GC.gc() 和 CuArrays.clearpool() 第二个调用会引发未知函数错误,并且似乎不再包含在 CuArray 包中。我目前正在测试的第一个,但不完全是我需要的。是否有可能使用 CuArrays 和 Julia 限制 GPU 上的 RAM 分配?在此先感谢我的 Batchsize 是 100,一批应该少于 1MB...