问题标签 [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.
julia - Julia 对 DSP.jl、CUDANative 和 CuArrays 进行基准测试
我正在试验 DSP.jl -conv()
特别是这种方法。我正在使用CUDANative
andCuArrays
创建数组作为 的参数conv()
,以便使用fft()
等的 cuda 版本。我BenchmarkTools
用来获取性能数据。我发现 Julia 运行时抱怨在奇怪的情况下会耗尽 CPU 或 GPU 内存。这是我的测试设置:
这是我提到的奇怪行为的一个例子。如果我设置N
为 120,我的脚本运行完成。如果我设置N
为 64,我会收到“内存不足”错误:ERROR: LoadError: CUFFTError(code 2, cuFFT failed to allocate GPU or CPU memory)
. 我可以先运行较小的情况,得到错误,然后碰到N
较大的值并成功完成脚本。
为了防止这种情况发生,我应该做些什么不同的事情吗?
plot - 如何使用 Makie 的流图为时变函数设置动画?
我一直在尝试绘制一个简单的函数:
(实际实现v(x::Point2{T}, t) where T = Point2{T}(one(T) * x[2] * t, 4 * x[1])
:)
使用 Makie 的 2D 流图功能。
f = x -> v(x, 5e0)
虽然我可以通过创建一个匿名函数(例如)和plot 来单独绘制每个时间步f
,但当我尝试将它包装在 Observable 中(使用Node(f)
)时,我不能再更新该 Observable 以指向另一个函数,所以我的记录循环失败。
我试过强制节点的类型更抽象(Node{Function}
)。不幸的是,这种抽象类型似乎在 Makie 内部的某个地方丢失了,因此丢失了。
有什么办法可以包装我的类型,以免遇到类型冲突,但仍然是一个函数?
julia - 欧几里得距离矩阵之间的最小距离
我有一些代码可以计算一个矩阵中的每个笛卡尔坐标与另一个矩阵中的每个其他坐标之间的距离。对于每个坐标,将返回最小距离以及产生最小值的坐标的索引位置。
虽然这适用于较小的 3D 点云,但我希望通过使用基于 GPU 的分析来提高大型点云的性能。但是,在 Julia 中使用更典型的方法进行矩阵运算似乎是不可能的,因为我必须返回索引位置和最小距离。我已经尝试了几种不同的方法来为这项任务采用 CUarray,但到目前为止,在没有使用实际 for 循环的情况下,它们都失败了。此外,由于将距离矩阵存储在内存中,许多实现它的方法似乎效率极低,对于我的特定数据集,这很快超过了 128gb 的内存。
有人可以帮助我如何在 Julia 中正确实现它以在 GPU 上运行吗?CUarrays 甚至是正确的方法,还是因为除了距离之外我还返回索引,它是否过于抽象?我尝试使用 product 和 dot 计算 L2 范数,但它并没有完全满足我的要求。
更新:
这是我使用广播对内部循环进行 GPUify 的失败尝试。
更新:
尝试 #2 失败。我试图计算最小距离并忘记了索引。这对我的应用程序来说并不理想,但我可以接受它。但是,这只有在第一个数组只有一行时才能正常工作。我试图通过使用 maplices 来解决这个问题,但它不起作用。
更新:
通过使用外循环取得进展,但肯定有更好的方法来做到这一点?
更新:
我之前的分布式版本、修改后的分布式版本、GPU 版本和串行版本之间的一些基准测试。编辑:在扩展到 1000 亿次比较之后,GPU 版本的性能不再优于我之前的分布式版本......关于这是为什么的任何想法? ??
更新:
使用 NearestNeighbors.jl 和分布式处理实现。关于如何使这更快的任何想法?:
julia - Julia MethodError: 没有方法匹配 (::Dense{typeof(logistic),CuArray{Float32,2,Nothing},CuArray{Float32,1,Nothing}})(::Float32)
我在 CuArrays 中有以下训练数据。
我有以下要训练的模型:
但如果我这样做
我收到以下错误:
我应该如何解决这个问题?
neural-network - Julia Flux 双重推理问题
最近我发现 Julia lang 变得更强大了,是时候重新审视它了。但是在每个教程中,我都发现双重推理存在同样的问题——对于每个批次,您必须计算模型以获得梯度,然后重新计算它以获得损失和其他指标。这似乎很荒谬,它必须是一条出路。我可以在不重新计算的情况下在梯度更新步骤之前获得模型预测及其损失吗?这里我为 MLP 和 MNIST 做了一个例子
julia - BoundsError:尝试访问索引 [2n+1] 处的 2n 元素 UnitRange{Int32}
我最近在使用 Knet 并在 CNN 上工作。我有一个20000 x 1 x 1 x 200000
用于训练的数据集输入
一旦我开始训练progress!(sgd(dtrn,ncycle(n)))
,我就会出现以下错误:
取决于批大小 * 2。在我的本地计算机上,代码运行良好,经过测试,一切都适用于较小的数据集示例。在 Knet 工作正常的服务器上,我的代码崩溃了。
任何建议如何解决?已经尝试了不同的批量,但似乎没有任何效果。
machine-learning - DiffEqFlux 中的 FastChain 与 GPU
对于模型的 GPU 训练,我正在使用
相对
中央处理器训练
超过 1000 次迭代,Fastchain 比运行 GPU Tesla K40c 快几个数量级。这是预期的行为吗?否则,我在 GPU 上实现模型时会做错什么吗?GPU实现的MWE如下:
julia - 在 UBUNTU 16.04 中使用 Julia1.2 安装 MXNet.jl 时出现问题
我在 julia 中安装“MXNet.jl”包时遇到了一些问题。
1)我第一次尝试输入:
我明白了:
在这一点上,没有任何问题发生。没有抛出错误消息。好的。现在,我回到 Julia REPL 并尝试使用该模块,为此我写道:
以及抛出的所有这些错误消息。知道我在所有这些错误方面的局限性后,我进行了第二次尝试,其中包括以下内容......
2) 我的第二种方法是使用蛮力,因此我将 julia MXNet.jl 包的所有 github scr 文件夹复制并粘贴到我个人桌面中的给定文件夹中。这是逐个子程序、逐个文件夹完成的,直到我复制了每个文件和文件夹。所以公平地说,这个链接中的 scr 文件夹: https : //github.com/apache/incubator-mxnet/tree/master/julia/src 现在看起来非常像我的。
现在,我转到我的文件夹并继续进行,好像“MXNet.jl”是我过去使用的任何其他普通函数,所以我输入(在 julia REPL 上):
它返回了所有这些错误消息。
我的假设是这个libmxnet.so有问题(我不知道那是什么......),我很想按照本文档(MXNet 安装指南)上的步骤 1-3,但我不想搞砸了,因为我真的不知道以下任何命令的作用:
也不是以下任何一项对 Julia 所做的:
a) 什么是仓库?b)什么是环境变量(我在网上看了,这让我很困惑......)
我真的只想安装 MXNet.jl 并使用它。如果我将其余所有内容理解为副作用会更好,但我会接受所有正确安装,所以简而言之:
- 我有什么问题?,
- 我是否仅通过“复制和粘贴”文档步骤中的说明来修复它?
- 如果没有,我该如何安装 MXNet.jl?
- 我是否将 GPU 与 CPU(我的选项)安装混淆了?两者之间有什么变化?我认为这与这里发生的事情没有任何关系,但是......
提前非常感谢,我希望你们一切都好。
- Ubuntu 16.4
编辑:
在@Przemyslaw 之后,我安装了最新的 julia 版本 julia1.4。我希望通过这样做,写入的权限.julia
将被修复。但是,问题仍然存在。我仍然收到以下消息:
所以,
- 为什么安装新的 julia 不能解决问题
.julia
? - 我安装的所有其他软件包都可以正常工作,是
MXNet.jl
唯一需要重写的软件包.julia
吗? - 问题似乎与以下几行有关:
在base.jl
MXNet.jl 的子程序中。知道这意味着什么吗?
julia - 如何访问 Julia 的 CuArray 中的元素并更改其值?
我只想更改一个元素,如下面的代码所示。
因为allowscalar设置为false,所以自然会出现如下。
但是如果allowscalar被删除,它会如下所示。
我在访问元素的部分之前和之后打开和关闭了“allowscalar”。然后,它比“allowscalar”设置为 true 时慢了大约 20 倍。
接下来,我尝试在 CPU 上创建另一个矩阵,然后在 GPU 上将这些矩阵相加,如下所示。
但是,如果我假设我可以像下面这样单独在 GPU 上完成它,它会快 4 倍左右。
如何访问 CuArray 中的元素并更改其值?我希望早日收到你的来信。