In my testing of sum, there's a bug with opencl (either arrayfire or me), but 
afcpu (I think boost compute is the backend) works fine.

its not surprising that J is fastest at it, but with my 4 core processor,

C =. P =. ('afcpu';0) conew 'afdevice'

  killmanaged__C  timespacex 'J__C 0 sumM__C a' [ a =. AM__C"1 ?. 4 800000 $ 
100000 
0.00836225 6912 
  killmanaged__C  timespacex 'J__C 0 sumM__C a' [ a =. AM__C"1 ?. 16 200000 $ 
100000 
0.00890401 7424

both of these lines free all pointers after execution.  The 2nd line splits the 
data into 16 arrays, while the first goes into 4.  sum is being applied on each 
array independently, and the speed is about the same.

the result is also the same as a monolithic array operation:

  timespacex 'J__C 1 sumM__C a' [ a =. AM__C ?. 4 800000 $ 100000
0.0148899 6784

buts its twice as fast.  Splitting the arrays allows the library to apply 
thread paralelism.  The sum function takes a dyadic argument that is similar to 
rank, but that is easier 

This approach of working with lists of pointers is similar to working with 
lists of boxes in J.  You apply a rank 0 function just as the adverb each, and 
each element can have different shape/sizes.

cheating a little on the J version, and timing the expense of boxing its items.

  timespacex '+/ each <"1 b ' [ b=. 4 800000 $ 100000 
0.0317267 4.19474e7 


without cheating.
  timespacex '+/ each  b ' [ b=. <"1 ?. 4 800000 $ 100000
0.00554032 3584

J is faster, but perhaps not on bigger gpus than mine if opencl bug is removed.

updated https://github.com/Pascal-J/Jfire with these functions and tests.



----- Original Message -----
From: 'Pascal Jasmin' via Programming <programm...@jsoftware.com>
To: "programm...@jsoftware.com" <programm...@jsoftware.com>
Cc: 
Sent: Monday, September 28, 2015 12:29 AM
Subject: Re: [Jprogramming] Arrayfire bindings

updated repo (bug fixes), and included a wiki page describing 
advantages/disadvantages of arrayfire.  https://github.com/Pascal-J/Jfire

On my low end GPU, I get a 250x speed improvement over J for floating point 
matrix multiplication on array size of 1024x1024 (including setup and results 
going back to J).




----- Original Message -----
From: Alex Shroyer <ashro...@gmail.com>
To: programm...@jsoftware.com
Cc: 
Sent: Saturday, September 26, 2015 10:07 PM
Subject: Re: [Jprogramming] Arrayfire bindings

Very cool. I did an audio processing thing in J a while back which I think 
would have benefited from something like this. Perhaps now I'll re-implement it 
using Jfire.
Thanks for sharing!

Alex 

-----Original Message-----
From: "'Pascal Jasmin' via Programming" <programm...@jsoftware.com>
Sent: ‎9/‎26/‎2015 7:03 PM
To: "Programming Forum" <programm...@jsoftware.com>
Subject: [Jprogramming] Arrayfire bindings

https://github.com/Pascal-J/Jfire

There are probably some helpful applications for it.  Mostly with floating 
point. (A lot of work for something I don't use much :P)

Hope you like the interface for it.  Its fairly J like.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm


----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to