问题标签 [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.
c++ - 如何移动 ArrayFire 3D 数组
我有一个问题。Y 有一个 3d ArrayFire 数组,我需要以确定的数量移动每个切片。ArrayFire 带有一个功能来做到这一点,但我不明白一些事情。代码是这样的,但似乎不起作用我认为我正在做一些非法的事情,将 shi 数组分配给 f.slice(i)。数组 V 在 x 和 y 方向上移动。
任何帮助真的很感激/*对不起我的英语不太好*/
谢谢!
parallel-processing - GFor ArrayFire,如何“索引”
Grettings,我开始学习 arrayfire 和并行计算,并且对 Gfors 和 seq 方法有疑问。
Gfor 的语法类似于
在常规的 for 循环中,(通常)有一个 int value ,因此在 for i 内部可以访问像 V[0][i] 这样的数组中的数据并在计算中使用该值。问题是我如何在 GFor 中做同样的事情(获取保存在某个数组中的整数值),显然 V[0][seq] 不起作用。
感谢您的回答:D!/* 抱歉我的英语不好// 编辑 for is
在数组 V 中是每个切片我需要的班次。
opengl - 从 ArrayFire 到 AMD 上的 OpenGL?
是否可以使用 AMD 显卡从 ArrayFire 转到 OpenGL 并返回?
有一篇关于如何使用 CUDA 进行操作的文章。关于对 OpenCL 使用类似方法的任何提示,以便可以跨平台使用?
更新
最后我想做的是获取一个 af::array,将其转换为 OpenGL 纹理并使用我的自定义着色器将其渲染到屏幕或另一个纹理(假设给定的 OpenGL 上下文,例如来自 Qt)。
c++ - ArrayFire 内存
我有一个与 ArrayFire 库和内存使用有关的问题。我用普通的 CUDA/C 实现了一些程序,并且使用 ArrayFire 实现了相同的程序,并且 CUDA/C 程序要快得多(比 ArrayFire 快 5 倍)。
我用它们检查了 Nvidia 分析器,我看到的主要区别是 memcpy 操作,在 ArrayFire 的情况下有很多 Memcpy 操作,而在其他情况下只有一些在程序的开头。做一些测试我发现做类似的事情:
作为 f,q 数组会产生更多这样的 memcpy 调用......我认为这就是我的 ArrayFire 代码表现不佳的原因。为什么会这样?这些 Memcpys 从哪里来?我怎么能避免呢?***** // 编辑 //// 一段代码
f 是一个四维数组。我在其他 for 循环中有这个功能。如果我像这样修改函数:
探查器没有显示 memcpys 的大量使用。认为我的问题是找到为数组分配新值的正确方法......也许使用 A = B,不是最好的,但我还有很多东西要学......
感谢您的关注,如果您需要更多代码来帮助我,请告诉我。谢谢 !
arrayfire - 初始化二维数组作为其索引的函数
我不太清楚如何用值初始化一个 101 x 101 f32 数组,例如 sin ((xindex-50)*(xindex-50) + (yindex-50*yindex-50))。
我可以
但是在这里我停下来,因为我看不到如何做指数的交叉产品。
我敢肯定,当我明天醒来时,一切都会很明显,但我现在看不太清楚。(在卤化物中很容易......)
matrix - 使用 ArrayFire 将向量添加到矩阵的所有列
使用 ArrayFire 将向量添加到 Matrix 的所有列的最佳方法是什么?
目前我正在使用一个gfor
循环,但对于这样一个简单的任务来说这似乎是错误的。
有没有更好的办法?
c++ - 从文件加载 ArrayFire 数组
我需要找到一种从文件中加载 ArrayFire 数组的方法,该文件的格式为:ix iy iz val,其中 (ix, iy, iz) 是 val 必须为的坐标。我以 C++ 方式(使用 getline 等)打开文件并解析行,正确获取索引ix、iy、iz和值val
在我开始迭代文件之前,我像往常一样创建我的数组
然后当我迭代时,我使用这样的行来保存值:
但是数组没有正确保存信息,我的意思是如果我对一个简单的三维数组做同样的事情,它会保存正确的信息。
文件中的信息是一堆 1 和 0,代表一个 3D 空间,其中 1 代表空气区域,0 代表固体材料。(某种离散化来表示一个球体,重点是,使用这个数组乘以其他数组(保持一个速度场),所以在哪里是固体速度将有一个零值)
我尝试了其他方法,将一维数组中的数据展平并将其传递给数组的构造函数,但在最好的情况下,我恢复了 3 个球体,其中一个球体(数组的大小为:Lx = 300,Ly=Lz =100 ) 但我无法做我想做的事。我确定该文件包含正确的数据,我从其他代码生成此文件(如果更改文件格式可能有帮助,请告诉我,我可以修改它)
感谢您的阅读和解答。
编辑:
为了保存数据,我使用这个:
3D 阵列网格,包含点(1 和 0),我知道它有正确的数据。
并加载文件:
对象数组是一个经典的 c++ 3D 数组(维度 Lx、Ly、Lz),如果数据正确保存在这个数组(对象)中,但没有保存在 ArrayFire 对象中……我不知道为什么。
编辑 2:
我试试这个,使用一维内存的指针:
知道 de 3D object[][][] 数组,有正确的信息!
但是 ArrayFire 对象 af_obj 不是,正如我之前所说的数组代表一个球体,在最好的情况下 ArrayFire 对象显示 3 个球体(不知道为什么)。嵌套 fors 的顺序很重要,我尝试所有可能的 xyz 组合,但似乎没有任何效果。
opencl - ArrayFire 缺少 LAPACK - 但我有
我刚刚下载了最新版本的ArrayFire (3.3.1),并正在尝试构建它。我被困在cmake .
了。我安装了一堆丢失的库,重新运行它,现在我得到了:
和
我已经安装了 lapack,它位于 /usr/lib/liblapack.so (这是一个替代符号链接,但它没有损坏)。还安装了 lapacke。
c++ - 带有条件的Arrayfire错误
我正在尝试使 ArrayFire 中的数组饱和。我希望所有大于 0.75 的值都饱和到 1.0,所有小于 0.25 的值都饱和到 0.0。我正在使用以下表达式。
这是一个 af::array 类型。它工作了一段时间,但是一旦我得到一个没有大于 0.75 的值的数组,我就会得到以下异常。
如果我打电话af::print("", a > 0.75);
,我会在它崩溃之前得到以下输出。
是否以某种方式看到这个数组全为零(应该是因为 non 大于 0.75)然后说维度为零?是我做错了什么还是他们代码中的错误?
下面的代码似乎可以解决它,但我觉得这个解决方案效率低下。
对于那些想要查看整个函数的人,我正在神经网络中进行梯度处理。a 实际上是 af::array 类型的数组。为了简化问题,我忽略了这一点。
arrayfire - ArrayFire AF_BACKEND_CPU 不是多线程的?
当我使用 ArrayFire 时,我通常使用 OpenCL 后端。我在 i7 CPU 上使用 Intel OpenCL。当我切换到 AF_BACKEND_CPU 后端时,我的代码慢了大约 10-15 倍。我检查并注意到它只在一个核心上运行。我还怀疑它没有使用 SSE 或 AVX 指令,这导致了其余的减速,因为我的处理器只有 4 个内核。我觉得 ArrayFire cpu 后端应该更快。有没有办法让它多线程?