ArrayFire中文教程[1]

在做GPU开发设计的时候,遇到了ArrayFire,但我对ArrayFire并不了解。本文档编写的目的是为了学习ArrayFire。同时,该系列文档是我于业余时间来翻译的。原文为ArrayFire的官方文档指南。(链接:http://arrayfire.org/docs/index.htm)在翻译过程中,如果有错误的地方,请后续读者尽早指出,我会尽快改正。

本文档版权属于我个人所有,如需转载,请私信联系。

综述

什么是ArrayFire?

ArrayFire是一个为并行计算而设计的高性能的软件库,具有十分易于使用的API。其基于数组的函数集,使并行计算变得十分便利。

安装 ArrayFire

ArrayFire支持Windows,OSX,以及Linux。具体下载链接,请在ArrayFire官方网站下载。

便于使用

数组对象非常简单。

基于数组的符号,以可读的数学相似符号有效地表达可计算的算法。

任何软件工程师,在使用ArrayFire之前,并不需要具备并行编程方面的专业知识。软件工程师只需要使用ArrayFire的仅仅几行代码,就可以完成在CUDA/OpenCL的Kernel函数中几百行代码需要完成的功能。

应用广泛

ArrayFire的应用非常广泛支持多领域ArrayFire包含数百个跨越各个领域的函数,主要包括:

  • 矢量算法
  • 图像处理
  • 计算机视觉
  • 信号处理
  • 线性代数
  • 统计学
  • 其他

每一个函数都由ArrayFire的开发人员从底层进行手工优化。

支持各种数据类型和大小

ArrayFire可以处理常见的数据类型和大小,包括矢量,矩阵,卷积等。并且它支持通用的数据类型,包括单精度和双精度浮点值,复数,布尔型,以及32bit无符号和有符号整型。

扩展ArrayFire

ArrayFire可以被独立地用来设计成为应用程序,也可以与已有的CUDA或OpenCL程序集成。所有的ArrayFire数组都可以与其他CUDA或OpenCL数据结构互换。

一次编码,随处运行!

ArrayFire代码支持x86,ARM,CUDA,以及OpenCL设备,ArrayFire支持如下全面的设备列表。

ArrayFire在安装时附带:

  • 支持NVIDIA GPU的一个CUDA版本(命名为‘libafcuda’)
  • 支持OpenCL设备的一个OpenCL版本(命名为‘libafopencl’)
  • 当CUDA或OpenCL设备不可用时,一个CPU版本(命名为‘libafcpu’)

ArrayFire非常高效

矢量化和批量操作

ArrayFire支持N维数组的批量操作。批量操作在ArrayFire中是并行运算的,以确保CUDA或OpenCL设备达到最佳的性能。我们可以使用矢量化技术从ArrayFire中获得最佳性能。

ArrayFire也可以使用gfor函数,以并行的方式执行循环迭代。

即时编译

ArrayFire会自动对代码执行运行时的分析以提高运算强度和内存吞吐量,并且能避免不必要的内存临时分配。它有一个内部的高性能编辑器JIT来对目标程序进行优化。

关于ArrayFire JIT,请详细阅读:http://arrayfire.com/performance-of-arrayfire-jit-code-generation/

一个简单的使用ArrayFire的例子

在下面的这个例子中,首先可以大概看到ArrayFire程序的示例。工程师可以在CUDA或OpenCL设备上创建数组,然后就可以在这些数组的基础上使用ArrayFire函数了。


  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值