问题标签 [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.
shared-memory - 在 ArrayFire 中使用共享内存
有谁知道如何声明 ArrayFire 中的数据数组应该存储在共享内存而不是全局内存中?这可能吗?我有一小组数据需要所有线程随机访问。这是一个在应用程序的生命周期内应该可用的常量查找表。也许我只是错过了明显的东西,但是阅读 ArrayFire 文档和谷歌搜索并没有找到任何关于我如何告诉 ArrayFire 我的数据需要进入共享内存的信息。
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
c++ - ArrayFire中fft输出的每个元素的频率是多少?
我正在尝试使用 ArrayFire 在 GPU 上通过 fft 计算导数,但我没有得到预期的结果。
ArrayFire 的 fft、fft2 和 fft3 函数(对于偶数和奇数大小的输入)输出中每个元素的频率是多少?
如果有人可以使用 ArrayFire 的 fft 发布一个简化的导数工作示例,那就太好了(让我们说一些简单的事情,比如 f(x) = cos(x) 或 f(x) = x^2 的一阶和二阶导数)
c++ - 使用 ArrayFire 库
我下载了 ArrayFire 库的免费版本。我试图用它来测试矩阵乘法。但是我得到了一堆未定义的引用,例如
自然地,我注意到我没有在我的 makefile 中链接 arrayfire 库。
但是,我所有链接库的尝试都失败了。有人可以告诉我应该添加什么命令来链接正确的库
lib文件夹中的文件是:
complex-numbers - 在 ArrayFire 中创建虚数单位
我想在 ArrayFire 中创建虚单位,但我做不到。我可以从实数矩阵构造一个复数矩阵,但这不是纯虚数。也许我可以使用af_cplx2
这个页面的功能。我想到了以下几点:
但是,我在 Visual Studio 2013 中遇到运行时错误(未处理的异常)。我该怎么做?先感谢您。
performance - Arrayfire 中的 FFT 比 MATLAB 中的慢
我有一个循环,其中有一个 FFT 和一个逆 FFT。由于k+1
我应用 FFT 的第 - 次迭代的向量取决于k
第 - 次迭代的数据,因此我不能使用gfor
循环来并行化程序。因此,我想加快循环中的 FFT。我从 MATLAB(使用该FFTW
库)切换到 Arrayfire。但是,它不是更快,而是慢了一点。
PS:Arrayfire 中的计时由timeit
函数执行。另一方面,它返回的经过时间比我查看命令提示符的时间要短得多。
有谁知道这两个问题的解释?谢谢你。
c++ - 从实数和虚数数组创建复数数组
我想创建一个复数的二维矩阵。该矩阵可作为两个不同的指针使用,包含实部和虚部(来自 MATLAB - MEX)。我正在使用 C++ 接口。
我在 API 中看到的最接近的是 C 接口 af_cplx2()。
C++ 接口仅获取一个数组并从实数数组创建复数:
如何从两个数组(实部和虚部)创建复数数组?
c++ - 迭代地从 ArrayFire 数组中删除元素
我试图在循环中迭代地从 ArrayFire 数组 (af::array) 中删除元素。说我有:
在循环的每次迭代中,我必须从数组中删除一个值。要删除的值取决于计算,其结果并不总是相同的。因此,在循环的 4 次迭代中,过程可能如下所示:
我想知道是否有人对如何最好地做到这一点提出了建议。我有一种技术需要将 arr 转换为 C 数组,删除一个元素,然后重新转换回设备 af::array。有没有更惯用/有效的方法来实现这一点?
c++ - 使用arrayfire未声明的标识符
我用这样的arrayfire编写了一个函数:
当我尝试将此函数调用为:ABC()
在主程序中并尝试提取变量C
并D
希望使用 打印它们af_print(C)
时,会出现错误:
主要功能是:
请提供任何解决方案。
问候
c++ - Arrayfire 中的双点积
我想在Arrayfire中计算双点积。arrayfire中是否有任何函数可用于双点积。这是我希望推动的张量:
任何建议,参考,请。