问题标签 [arrayfire]

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

shared-memory - 在 ArrayFire 中使用共享内存

有谁知道如何声明 ArrayFire 中的数据数组应该存储在共享内存而不是全局内存中?这可能吗?我有一小组数据需要所有线程随机访问。这是一个在应用程序的生命周期内应该可用的常量查找表。也许我只是错过了明显的东西,但是阅读 ArrayFire 文档和谷歌搜索并没有找到任何关于我如何告诉 ArrayFire 我的数据需要进入共享内存的信息。

0 投票
0 回答
181 浏览

gpgpu - arrayfire 对运行速度非常慢的方程的评估

我一直在从事一个项目,以使用 arrayfire 模拟受生物启发的神经网络。我到了做一些计时测试的地步,对我得到的结果感到失望。我决定尝试使用最快、最简单的模型之一来进行时序测试用例,即 Izhikevich 模型。当我使用该模型运行新测试时,结果更糟。我正在使用的代码如下。它没有做任何花哨的事情。它只是标准矩阵代数。但是,仅对 10 个神经元进行一次方程评估就需要 5 秒以上!之后的每一站也需要大致相同的时间。

代码:

这是不同数量的神经元的计时结果。

结果:

增加神经元的数量似乎不会产生巨大的影响。时间稍微下降了一点。我在这里做错了吗?有没有更好的方法来优化 arrayfire 以获得更好的结果?

当我将 v 方程切换为使用 v*v 而不是 pow(v, 2) 时,一步所需的时间下降到 3.75762。不过,这仍然非常慢,所以发生了一些奇怪的事情。

[编辑] 我试图将处理分成几部分,并发现了一些新的东西。这是我现在使用的代码。

代码:

当我在没有重新分配回 v 或将其分配给新变量 g 的情况下运行它时,第一次和第二次运行的步骤时间都很短

结果:

经过的秒数:0.0036143

经过的秒数:0.00340621

然而,当我把 v = l; 回来,然后它第一次运行它很快,但从那时起它就很慢。

结果:

经过的秒数:0.0034497

经过的秒数:2.98624

关于造成这种情况的任何想法?

[编辑 2]

我仍然不知道它为什么这样做,但是我找到了一种解决方法,方法是在再次使用之前复制 v 数组。

代码:

这是现在的结果。第二次运行它有点慢,但现在它运行之后很快。比以前有了很大的进步。

结果:循环:0经过的秒数:0.657355

循环:1经过的秒数:0.981287

循环:2 秒:0.000416182

循环:3 秒:0.000415045

循环:4经过的秒数:0.000421014

循环:5 秒:0.000413339

循环:6 秒:0.00041675

循环:7 秒:0.000412202

循环:8 秒:0.000473321

循环:9 秒:0.000677432

0 投票
0 回答
341 浏览

c++ - ArrayFire中fft输出的每个元素的频率是多少?

我正在尝试使用 ArrayFire 在 GPU 上通过 fft 计算导数,但我没有得到预期的结果。

ArrayFire 的 fft、fft2 和 fft3 函数(对于偶数和奇数大小的输入)输出中每个元素的频率是多少?

例如这里提到了numpy的fft函数输出中每个元素的频率值

如果有人可以使用 ArrayFire 的 fft 发布一个简化的导数工作示例,那就太好了(让我们说一些简单的事情,比如 f(x) = cos(x) 或 f(x) = x^2 的一阶和二阶导数)

0 投票
1 回答
697 浏览

c++ - 使用 ArrayFire 库

我下载了 ArrayFire 库的免费版本。我试图用它来测试矩阵乘法。但是我得到了一堆未定义的引用,例如

自然地,我注意到我没有在我的 makefile 中链接 arrayfire 库。
但是,我所有链接库的尝试都失败了。有人可以告诉我应该添加什么命令来链接正确的库

lib文件夹中的文件是:

0 投票
3 回答
448 浏览

complex-numbers - 在 ArrayFire 中创建虚数单位

我想在 ArrayFire 中创建虚单位,但我做不到。我可以从实数矩阵构造一个复数矩阵,但这不是纯虚数。也许我可以使用af_cplx2这个页面的功能。我想到了以下几点:

但是,我在 Visual Studio 2013 中遇到运行时错误(未处理的异常)。我该怎么做?先感谢您。

0 投票
0 回答
530 浏览

performance - Arrayfire 中的 FFT 比 MATLAB 中的慢

我有一个循环,其中有一个 FFT 和一个逆 FFT。由于k+1我应用 FFT 的第 - 次迭代的向量取决于k第 - 次迭代的数据,因此我不能使用gfor循环来并行化程序。因此,我想加快循环中的 FFT。我从 MATLAB(使用该FFTW库)切换到 Arrayfire。但是,它不是更快,而是慢了一点。

PS:Arrayfire 中的计时由timeit函数执行。另一方面,它返回的经过时间比我查看命令提示符的时间要短得多。

有谁知道这两个问题的解释?谢谢你。

0 投票
1 回答
1072 浏览

c++ - 从实数和虚数数组创建复数数组

我想创建一个复数的二维矩阵。该矩阵可作为两个不同的指针使用,包含实部和虚部(来自 MATLAB - MEX)。我正在使用 C++ 接口。

我在 API 中看到的最接近的是 C 接口 af_cplx2()。

C++ 接口仅获取一个数组并从实数数组创建复数:

如何从两个数组(实部和虚部)创建复数数组?

0 投票
1 回答
455 浏览

c++ - 迭代地从 ArrayFire 数组中删除元素

我试图在循环中迭代地从 ArrayFire 数组 (af::array) 中删除元素。说我有:

在循环的每次迭代中,我必须从数组中删除一个值。要删除的值取决于计算,其结果并不总是相同的。因此,在循环的 4 次迭代中,过程可能如下所示:

我想知道是否有人对如何最好地做到这一点提出了建议。我有一种技术需要将 arr 转换为 C 数组,删除一个元素,然后重新转换回设备 af::array。有没有更惯用/有效的方法来实现这一点?

0 投票
1 回答
146 浏览

c++ - 使用arrayfire未声明的标识符

我用这样的arrayfire编写了一个函数:

当我尝试将此函数调用为:ABC()在主程序中并尝试提取变量CD希望使用 打印它们af_print(C)时,会出现错误:

主要功能是:

请提供任何解决方案。

问候

0 投票
1 回答
183 浏览

c++ - Arrayfire 中的双点积

我想在Arrayfire中计算双点积arrayfire中是否有任何函数可用于双点积。这是我希望推动的张量:

任何建议,参考,请。