过去十年间,消费者和计算机开发人员对GPU的需求快速上升,尽管成功案例越来越多,被采用的GPU软件开发数量却只是缓慢的提升。采用量提升缓慢的原因主要是GUP编程较为困难。随着这方面技术的发展出现了更加综合性的可编程软件结构,ArrayFire作为最新的GPU构造平台,打算把高级功能移植到底层硬件上去,最终实现在不牺牲整体性能的情况下,提供可编程性与可移植性。
ArrayFire是一个搭建在AccelerEyes网站上的软件平台,可以让使用者和编程人员利用C、C++、Fortran和Python语言实现通用型GPU(generalpurposeGPU,GPGPU)的快速并行数据程序开发,并且在低级GPU应用程序编程接口(例如CUDA、OpenCL和OpenGL)上提供一种简单的高级矩阵抽象。ArrayFire包含一个简单的应用程序编程接口(API)并且为CUDA框架和支持OpenCL的设备提供完整的GPU计算能力。它同样还可以提供数千种GPU调谐功能。
ArrayFire可以很好的完成并行数据算法的快速原型设计任务与构建已经部署的应用程序任务。本文将向计算应用者了解ArrayFire是如何支持GPU计算应用程序的开发,并且将着重介绍其中一些关键功能在实际代码操作中如何复现。
1、ArrayFire
ArrayFire语言支持:C++、Fortran、Python,围绕单个矩阵对象(阵列),此矩阵可以容纳浮点值(单或双精度)、实数或复数值和布尔数据。ArrayFire的阵列式是多维度的,可以通过简单的矩阵生成函数例如(ones、randu等)生成,而且可以通过算法和函数进行操纵。另外,ArrayFire提供一条并行for循环工具——gfor——可以以并行数据的形式任意执行许多独立例程。
2、惰性编译
ArrayFire使用了一种名叫惰性编译的技术(有时也被称为及时计算,Just-In-Time