The ArrayFire Library

The ArrayFire library is our flagship product. It is a general-purpose computational tool that simplifies the process of developing software that targets parallel and massively-parallel architectures including CPUs, GPUs, and other hardware acceleration devices. ArrayFire provides software developers with a high-level abstraction of data which resides on the accelerator, the af::array object (or C-style struct). Developers write code which performs operations on ArrayFire arrays which, in turn, are automatically translated into near-optimal kernels that execute on the computational device. ArrayFire includes support for supports CPUs from all major vendors (Intel, AMD, Arm), GPUs from the dominant manufacturers (NVIDIA, AMD, and Qualcomm), as well as a variety of other accelerator devices. ArrayFire has been used successfully on devices ranging from low-power mobile phones to high-power GPU-enabled supercomputers.

Several of ArrayFire's benefits include:

  • Commercially Friendly Open-Source Licensing: ArrayFire uses a BSD 3-clause license which permits you to use it in commercial and non-commercial software with only one catch: you must include our copyright statement and license document with your code.
  • Tested Computational Accuracy: Every modification of ArrayFire's source code is evaluated by our extensive unit testing framework. If the changes cause a test to fail, the modifications are not accepted until all tests pass.
  • Agressive Performance Evaluation: The computational throughput of almost every function in ArrayFire is tested prior to each release using our own benchmarking software. Our benchmarking process includes new and legacy hardware from all major manufacturers installed in systems running Windows, Mac OSX, and Linux operating systems. We routinely blog about our results, discuss how our software compares to competing products, and offer data which justifies how ourunique approach to kernel generation offers better performance than traditional methods of accelerated computing.
  • Cross platform compatibility: ArrayFire works with CUDA, OpenCL and even native CPU on Windows, Mac, and Linux.
  • Unencumbered interoperability with CUDA, OpenCL, and OpenGL: ArrayFire provides direct access to CUDA device pointers and OpenCL memory buffers, thus you can mix and match ArrayFire with CUDA or ArrayFire with OpenCL. Using similar techniques you can easily share data between ArrayFire and OpenGL.
  • Develop in your favorite language: Although ArrayFire is a C/C++ library, we have developed wrappers for a variety of languages including: Rust, .NET, Java, R, Go, Node.js / Javascript, Lua, and Fortran. In addition to our work, the broader ArrayFire community has written wrappers for several other languages. Chances are support for your most beloved language is only a quick Google search away!
  • Built-in Visualization Functions: Our Forge library provides a method to view data on the accelerator using 2D or 3D OpenGL-accelerated charts.
  • Project Templates: We have created skeleton projects for development using CMake, Visual Studio, and XCode.
  • Strong Community of Support: We are quite active on Gitter, Google Groups
  • Backed by a commercial company: Our developers use ArrayFire on a daily basis to develop new and accelerate existing applications for commercial, governmental, and academic clients.
  • Open Source and Distributed on GitHub: The ArrayFire library has received contributions from nearly 40 programmers across the globe. The library is maintained on GitHub with an open issue tracking and reporting policy.