arrayfire 0,0,1,2,0 coveralls

ArrayFire: a general purpose GPU library.

ArrayFire is a general-purpose library that simplifies the process of developing software that targets parallel and massively-parallel architectures including CPUs, GPUs, and other hardware acceleration devices.

Several of ArrayFire’s benefits include:

ArrayFire provides software developers with a high-level abstraction of data which resides on the accelerator, the af::array object. 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 is successfully used on devices ranging from low-power mobile phones to high-power GPU-enabled supercomputers. ArrayFire runs on CPUs from all major vendors (Intel, AMD, ARM), GPUs from the prominent manufacturers (NVIDIA, AMD, and Qualcomm), as well as a variety of other accelerator devices on Windows, Mac, and Linux.

Build and Test Status

Linux x86_64 Linux aarch64 OSX Windows
Build Build Status Build Status Build Status Build Status
Test Build Status Build Status Build Status Build Status


You can install the ArrayFire library from one of the following ways:

Official installers

Execute one of our official binary installers for Linux, OSX, and Windows platforms.

Build from source

Build from source by following instructions on our wiki.


The following examples are simplified versions of helloworld.cpp and conway_pretty.cpp, respectively. For more code examples, visit the examples/ directory.

Hello, world!

array A = randu(5, 3, f32); // Create 5x3 matrix of random floats on the GPU
array B = sin(A) + 1.5;     // Element-wise arithmetic
array C = fft(B);           // Fourier transform the result

float d[] = { 1, 2, 3, 4, 5, 6 };
array D(2, 3, d, afHost);   // Create 2x3 matrix from host data
D.col(0) = D.col(end);      // Copy last column onto first

array vals, inds;
sort(vals, inds, A);        // Sort A and print sorted array and corresponding indices

Conway’s Game of Life

Visit the Wikipedia page for a description of Conway’s Game of Life.

static const float h_kernel[] = {1, 1, 1, 1, 0, 1, 1, 1, 1};
static const array kernel(3, 3, h_kernel, afHost);

array state = (randu(128, 128, f32) > 0.5).as(f32); // Generate starting state
Window myWindow(256, 256);
while(!myWindow.close()) {
  array nHood = convolve(state, kernel); // Obtain neighbors
  array C0 = (nHood == 2);               // Generate conditions for life
  array C1 = (nHood == 3);
  state = state * C0 + C1;               // Update state
  myWindow.image(state);                 // Display

Conway's Game of Life


You can find our complete documentation here.

Quick links:

Language wrappers

ArrayFire has several official and third-party language wrappers.

Official wrappers

We currently support the following language wrappers for ArrayFire:

Wrappers for other languages are a work-in-progress: .NET, Fortran, Go, Java, Lua, NodeJS, R

Third-party wrappers

The following wrappers are being maintained and supported by third parties:


Contributions of any kind are welcome! Please refer to to learn more about how you can get involved with ArrayFire.

Citations and Acknowledgements

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 citation document.

ArrayFire development is funded by ArrayFire LLC and several third parties, please see the list of acknowledgements for further details.

We would like to thank the JuliaComputing guys as well as Gabor Mezo for their diligent work on the Julia and NodeJS wrappers, respectively.

Support and Contact Info Join the chat at

Trademark Policy

The literal mark “ArrayFire” and ArrayFire logos are trademarks of AccelerEyes LLC DBA ArrayFire. If you wish to use either of these marks in your own project, please consult ArrayFire’s Trademark Policy

Related Repositories



ArrayFire: a general purpose GPU library. ...



Python bindings for ArrayFire: A general purpose GPU library. ...



Rust wrapper for ArrayFire ...



Julia wrapper for the ArrayFire library ...



ArrayFire.js - ArrayFire for Node.js ...

Top Contributors

pavanky shehzan10 9prady9 umar456 bkloppenborg kaatish syurkevi Godisemo ghisvail FilipeMaia pentschev glehmann mlloreda nathanjackson schuhschuh klemmster Keno pgovind FloopCZ kylelutz jramapuram mcclanahoochie Slonegg marbre easuter ogreen unbornchikken vakopian mchandra jpauwels


-   v3.4.0 zip tar
-   v3.3.2 zip tar
-   v3.3.1 zip tar
-   v3.3.0 zip tar
-   v3.3.alpha zip tar
-   v3.2.2 zip tar
-   v3.2.1 zip tar
-   v3.2.0 zip tar
-   v3.1.3 zip tar
-   v3.1.2 zip tar
-   v3.1.1 zip tar
-   v3.1.0 zip tar
-   v3.0.2 zip tar
-   v3.0.1 zip tar
-   v3.0.0 zip tar
-   v3.0beta zip tar