Difference between revisions of "Jetson/Installing ArrayFire"

From eLinux.org
Jump to: navigation, search
(Update build and install instructions for the Open Source version of ArrayFire)
m (Moved download link location)
(One intermediate revision by the same user not shown)
Line 33: Line 33:
  
 
  sudo apt-get install libboost-all-dev
 
  sudo apt-get install libboost-all-dev
 +
 +
== Download ArrayFire Binaries ==
 +
 +
ArrayFire's prebuilt binaries can be downloaded at: http://arrayfire.com/download/.
  
 
== Download ArrayFire Source Code ==
 
== Download ArrayFire Source Code ==
Line 43: Line 47:
 
  git submodule init
 
  git submodule init
 
  git submodule update
 
  git submodule update
git submodule foreach git pull origin master
 
  
 
== Build and Install ArrayFire ==
 
== Build and Install ArrayFire ==

Revision as of 14:24, 19 March 2015

ArrayFire. Faster Code!"

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.

This page contains build instructions pertaining to the Jetson TK1 Board. The full build instructions can be found on the ArrayFire GitHub Wiki.

Prerequisites for installing ArrayFire

Download & install the CUDA Toolkit by following the Installing CUDA instructions, since it is needed by ArrayFire.

The following packages are required to build ArrayFire from source code:

  • build-essential (includes installing gcc, g++)
  • git (>= 1.8)
  • subversion
  • cmake
  • cmake-curses-gui (Recommended)
  • libfreeimage-dev (Optional. Required for image IO functionality)
sudo apt-get install build-essential git subversion cmake cmake-curses-gui libfreeimage-dev

The following packages are required for the CPU backend of ArrayFire

  • libatlas3gf-base
  • libatlas-dev
  • libfftw3-dev
sudo apt-get install libatlas3gf-base libatlas-dev libfftw3-dev

The following packages are required for the CUDA backend of ArrayFire

  • Boost (We recommend installing all boost components, but you may choose to install selectively as listed in the GitHub Wiki page of ArrayFire)
sudo apt-get install libboost-all-dev

Download ArrayFire Binaries

ArrayFire's prebuilt binaries can be downloaded at: http://arrayfire.com/download/.

Download ArrayFire Source Code

Get ArrayFire from our GitHub repository.

git clone --recursive https://github.com/arrayfire/arrayfire.git

If you miss the --recursive option, run the following commands.

git submodule init
git submodule update

Build and Install ArrayFire

cd /path/to/dir/arrayfire
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_CPU=ON -DBUILD_CUDA=ON -DBUILD_OPENCL=OFF # Enables CPU and CUDA. Jetson TK1 does not support OpenCL.
make -j4 # or number of threads of your choosing

To install ArrayFire, select the install location (default = /usr/local)

cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/your/dir
make install # sudo may be required if installing to a system path

Running Tests and Examples

Run tests:

cd /path/to/dir/arrayfire/build
# Choose you preferred command
make test                      # runs all test
ctest                          # runs all test
ctest -R substring             # runs all tests that match the substring
CTEST_OUTPUT_ON_FAILURE ctest  # runs tests while printing output only if a test fails
./test/testname_backend        # runs single test with output

Run examples (the output of the hello world example is shown below):

cd /path/to/dir/arrayfire/build
./examples/example_backend

Get In Touch

Let us know if you have any issues via the ArrayFire GitHub Page or the ArrayFire Users Google Group.

The ArrayFire Forums are also available.

If you wish to email us, technical@arrayfire.com would the the way to contact us.

Verify Installation with Hello World

To run the Hello World example, do the following:

cd /path/to/dir/arrayfire/build/examples/
./helloworld_cuda

Successful output is shown below.

ArrayFire v3.0.beta (CUDA, 32-bit Linux, build cdb3bd9)
Platform: CUDA Toolkit 6.5, Driver: CUDA Driver Version: 6050
[0] GK20A, 1743 MB, CUDA Compute 3.2
Create a 5-by-3 matrix of random floats on the GPU
A [5 3 1 1]
   Offsets: [0 0 0 0]
   Strides: [1 5 15 15]
    0.7402     0.4464     0.7762
    0.9210     0.6673     0.2948
    0.0390     0.1099     0.7140
    0.9690     0.4702     0.3585
    0.9251     0.5132     0.6814

Element-wise arithmetic
B [5 3 1 1]
   Offsets: [0 0 0 0]
   Strides: [1 5 15 15]
    2.1744    -1.9317     2.2006
    2.2962    -2.1189     1.7905
    1.5390    -1.6097     2.1549
    2.3243     1.9531     1.8509
    2.2987     1.9910     2.1299

Fourier transform the result
C [5 3 1 1]
   Offsets: [0 0 0 0]
   Strides: [1 5 15 15]
         (10.6327,0.0000)          (-1.7162,0.0000)          (10.1267,0.0000)
         (0.4689,0.4640)          (-2.2490,6.0028)          (0.1713,0.1441)
         (-0.3491,-0.7454)          (-1.7221,-0.9727)          (0.2667,0.4886)
         (-0.3491,0.7454)          (-1.7221,0.9727)          (0.2667,-0.4886)
         (0.4689,-0.4640)          (-2.2490,-6.0028)          (0.1713,-0.1441)

Grab last row
c [1 3 1 1]
   Offsets: [4 0 0 0]
   Strides: [1 5 15 15]
         (0.4689,-0.4640)          (-2.2490,-6.0028)          (0.1713,-0.1441)
Create 2-by-3 matrix from host data
D [2 3 1 1]
   Offsets: [0 0 0 0]
   Strides: [1 2 6 6]
    1.0000     3.0000     5.0000
    2.0000     4.0000     6.0000

Copy last column onto first
D [2 3 1 1]
   Offsets: [0 0 0 0]
   Strides: [1 2 6 6]
    5.0000     3.0000     5.0000
    6.0000     4.0000     6.0000

Sort A and print sorted array and corresponding indices
vals [5 3 1 1]
   Offsets: [0 0 0 0]
   Strides: [1 5 15 15]
    0.0390     0.1099     0.2948
    0.7402     0.4464     0.3585
    0.9210     0.4702     0.6814
    0.9251     0.5132     0.7140
    0.9690     0.6673     0.7762

inds [5 3 1 1]
   Offsets: [0 0 0 0]
   Strides: [1 5 15 15]
         2          2          1
         0          0          3
         1          3          4
         4          4          2
         3          1          0

Congratulations! You are now ready to use ArrayFire!

Do More with ArrayFire

Our documentation page page contains a vast amount of information about the API and examples provided by ArrayFire.

Our blog contains the latest developments with ArrayFire and tips and tricks to get the most out of your code.

If you are doing something really cool with ArrayFire, give us a shout out at technical@arrayfire.com, and we will be more than happy to lend our support.

Uninstalling ArrayFire

Simply delete the contents of the installed folder. You will need to delete the following:

/install/prefix/lib/libaf*
/install/prefix/include/arrayfire.h
/install/prefix/include/af/*.h