玩转 ArrayFire:01 入门即放弃


前言

ArrayFire 是 AcelerEyes 为用户及程序员在 C、C++、Fortran 及Python 提供快速数据并行程序的一个软件平台,ArrayFire 提供了简单的高级矩阵抽象函数而不是低级的 GPU APIs,诸如CUDA、OpenCL、OpenGL,可以让科学家、工程学家以及经济学家充分利用GPU的硬件优势。ArrayFire 提供了上千个转换为 GPU 的函数,包括线性代数库、卷积、FFT 以及信号处理、图像、统计、图形库等。


一、ArrayFire 是什么

ArrayFire 是一个用于并行计算的高性能软件库,并具有易于使用的 API ,其基于函数集的数组可以使并行编程更容易进行。

二、ArrayFire 的特点

1.易于使用

ArrayFire 的数组对象非常简单。这种基于数组的表示法可以有效地表示类似数学表示法那样具有可读性的计算算法,并且使用 ArrayFire 不需要并行编程方面的专业知识。在 CUDA 或 OpenCL 内核中,只需几行 ArrayFire 代码就可以完成可能需要 100 行复杂代码的工作。

2.应用领域广泛

ArrayFire 包含了数百个不同领域的函数,包括:矢量算法、图像处理、计算机视觉、信号处理、线性代数、统计学及其他更多领域。而且其每个函数都是由 ArrayFire 开发人员用所有可能的低级优化手工调优的。

3.支持各种数据类型和大小

ArrayFire 可操作常见的数据形状和大小,包括向量、矩阵等;它支持常见的数据类型,包括单精度和双精度浮点值、复数、布尔值、32 位有符号整数和无符号整数。

4.具有可扩展性

ArrayFire 可以作为一个独立的应用程序使用,也可以与现有的 CUDA 或 OpenCL 代码集成。所有ArrayFire 数组都可以与其他 CUDA 或 OpenCL 数据结构互换。

5.编码一次,在任何地方运行

ArrayFire 支持所有的设备列表,包括支持 x86、ARM、CUDA 和 OpenCL 设备。设备成功安装 ArrayFire 后,都会具备:

  1. 用于 NVIDIA GPU 的 CUDA 版本(名为“libafcuda”);
  2. 用于 OpenCL 的 OpenCL 版本(名为“libafopencl”);
  3. 当 CUDA 或 OpenCL 不可用时的 CPU 版本(名为“libafcpu”)。

6.支持矢量化和批处理操作

ArrayFire 支持 N 维数组的批处理操作。ArrayFire 中的批处理操作是并行运行的,以确保 CUDA 或 OpenCL 设备的最佳使用。您可以使用矢量化方法从 ArrayFire 中获得最佳性能。ArrayFire 还可以与 gfor 函数并行执行循环迭代。

7.即时编译

ArrayFire 可以在运行时分析,以增加运算强度和内存吞吐量,同时避免不必要的临时分配。它有一个可以进行优化的、很棒的内部 JIT 编译器。

猜你喜欢

转载自blog.csdn.net/weixin_42467801/article/details/113482625