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.
To build ArrayFire from source, please follow the instructions on our wiki.
We currently have binary tar balls and installers available for the beta version of ArrayFire 3.0. These can be downloaded at the ArrayFire Downloads page.
- Google Groups: https://groups.google.com/forum/#!forum/arrayfire-users
- ArrayFire Services: Consulting | Support | Training
- ArrayFire Blogs: http://arrayfire.com/blog/
- Email: mailto:technical@arrayfire.com
Build | Tests | |
---|---|---|
Linux x86 | ||
Linux Tegra | ||
Windows | ||
OSX |
#include <arrayfire.h>
#include <cstdio>
using namespace af;
int main(int argc, char *argv[])
{
try {
// Select a device and display arrayfire info
int device = argc > 1 ? atoi(argv[1]) : 0;
af::setDevice(device);
af::info();
printf("Create a 5-by-3 matrix of random floats on the GPU\n");
array A = randu(5,3, f32);
af_print(A);
printf("Element-wise arithmetic\n");
array B = sin(A) + 1.5;
af_print(B);
printf("Negate the first three elements of second column\n");
B(seq(0, 2), 1) = B(seq(0, 2), 1) * -1;
af_print(B);
printf("Fourier transform the result\n");
array C = fft(B);
af_print(C);
printf("Grab last row\n");
array c = C.row(end);
af_print(c);
printf("Create 2-by-3 matrix from host data\n");
float d[] = { 1, 2, 3, 4, 5, 6 };
array D(2, 3, d, af::afHost);
af_print(D);
printf("Copy last column onto first\n");
D.col(0) = D.col(end);
af_print(D);
// Sort A
printf("Sort A and print sorted array and corresponding indices\n");
array vals, inds;
sort(vals, inds, A);
af_print(vals);
af_print(inds);
} catch (af::exception& e) {
fprintf(stderr, "%s\n", e.what());
throw;
}
}
You can find our complete documentation over here.
Quick links:
Contributions of any kind are welcome! Please refer to this document to learn more about how you can get involved with ArrayFire.