ArrayFire is a high performance software library for parallel computing with an easy-to-use API. Its array based function set makes parallel programming more accessible.
Install ArrayFire using either a binary installer for Windows, OSX, or Linux or download it from source:
The array object is beautifully simple.
Array-based notation effectively expresses computational algorithms in readable math-resembling notation. Expertise in parallel programming is not required to use ArrayFire.
A few lines of ArrayFire code accomplishes what can take 100s of complicated lines in CUDA, oneAPI, or OpenCL kernels.
ArrayFire contains hundreds of functions across various domains including:
Each function is hand-tuned by ArrayFire developers with all possible low-level optimizations.
ArrayFire operates on common data shapes and sizes, including vectors, matrices, volumes, and
It supports common data types, including single and double precision floating point values, complex numbers, booleans, and 32-bit signed and unsigned integers.
ArrayFire can be used as a stand-alone application or integrated with existing CUDA, oneAPI, or OpenCL code.
With support for x86, ARM, CUDA, oneAPI, and OpenCL devices, ArrayFire supports for a comprehensive list of devices.
Each ArrayFire installation comes with:
ArrayFire supports batched operations on N-dimensional arrays. Batch operations in ArrayFire are run in parallel ensuring an optimal usage of CUDA, oneAPI, or OpenCL devices.
Best performance with ArrayFire is achieved using vectorization techniques.
ArrayFire can also execute loop iterations in parallel with the gfor function.
ArrayFire performs run-time analysis of code to increase arithmetic intensity and memory throughput, while avoiding unnecessary temporary allocations. It has an awesome internal JIT compiler to make important optimizations.
Read more about how ArrayFire JIT. can improve the performance in your application.
Here is an example of ArrayFire code that performs a Monte Carlo estimation of PI.
If you redistribute ArrayFire, please follow the terms established in the license. If you wish to cite ArrayFire in an academic publication, please use the following reference:
Formatted:
Yalamanchili, P., Arshad, U., Mohammed, Z., Garigipati, P., Entschev, P., Kloppenborg, B., Malcolm, James and Melonakos, J. (2015). ArrayFire - A high performance software library for parallel computing with an easy-to-use API. Atlanta: AccelerEyes. Retrieved from https://github.com/arrayfire/arrayfire
BibTeX:
@misc{Yalamanchili2015, abstract = {ArrayFire is a high performance software library for parallel computing with an easy-to-use API. Its array based function set makes parallel programming simple. ArrayFire's multiple backends (CUDA, OpenCL and native CPU) make it platform independent and highly portable. A few lines of code in ArrayFire can replace dozens of lines of parallel computing code, saving you valuable time and lowering development costs.}, address = {Atlanta}, author = {Yalamanchili, Pavan and Arshad, Umar and Mohammed, Zakiuddin and Garigipati, Pradeep and Entschev, Peter and Kloppenborg, Brian and Malcolm, James and Melonakos, John}, publisher = {AccelerEyes}, title = {{ArrayFire - A high performance software library for parallel computing with an easy-to-use API}}, url = {https://github.com/arrayfire/arrayfire}, year = {2015} }
ArrayFire development is funded by AccelerEyes LLC (dba ArrayFire) and several third parties, please see the list of acknowledgements.