ArrayFire and Python
I recently installed ArrayFire 2.1 on my Ubuntu 12.04. I want to use it with Python, is it possible? I tried ArrayFire_Python , but it is incomplete and it does not include features like rotate
. I have exported AF_PATH=/opt/arrayfire
.
ArrayFire works well:
1 - I did (on examples / helloworld)
make cuda
2 - Launch:
./helloworld_cuda
3 - Get:
ArrayFire v2.1 (CUDA, 64-bit Linux, build fd32605)
License: Standalone (/opt/arrayfire/arrayfire.lic)
License expires in 15 days.
Addons: MGL16, DLA, SLA
Platform: CUDA toolkit 6.0, Driver: 340.29
0 : GeForce GTX 480, 1536 MB, CUDA Compute 2.0
Memory Usage: 1366 MB free (1536 MB total)
create a 5-by-3 matrix of random floats on the GPU
A [5 3] =
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] =
0.7744 0.5317 0.8006
0.8962 0.7189 0.3905
0.1390 0.2097 0.7549
0.9243 0.5531 0.4509
0.8987 0.5910 0.7299
Fourier transform the result
C [5 3] =
3.6327 + 0.0000i 2.6043 + 0.0000i 3.1267 + 0.0000i
0.4689 + 0.4640i 0.3193 + 0.0802i 0.1713 + 0.1441i
-0.3491 - 0.7454i -0.2923 - 0.4018i 0.2667 + 0.4886i
-0.3491 + 0.7454i -0.2923 + 0.4018i 0.2667 - 0.4886i
0.4689 - 0.4640i 0.3193 - 0.0802i 0.1713 - 0.1441i
grab last row
c [1 3] =
0.4689 - 0.4640i 0.3193 - 0.0802i 0.1713 - 0.1441i
zero out every other column
negate the first three elements of middle column
B [5 3] =
0.0000 -0.5317 0.0000
0.0000 -0.7189 0.0000
0.0000 -0.2097 0.0000
0.0000 0.5531 0.0000
0.0000 0.5910 0.0000
create 2-by-3 matrix from host data
D [2 3] =
1.0000 3.0000 5.0000
2.0000 4.0000 6.0000
copy last column onto first
D [2 3] =
5.0000 3.0000 5.0000
6.0000 4.0000 6.0000
source to share
To get the bindings to work, you first need to install and work with ArrayFire (you have), but then you need to move the arrayfire directory from github to your python library directory.
On my Ubuntu 14.04 server, I moved it to the / usr / lib / python 2.7 / directory.
From ipython now imports the library import import arrayfire. The following code will create a 2048x2048 array and multiply it:
import arrayfire as af
# create the array
A = af.constant(1,2048,2048)
B = af.matmul(A, A)
source to share