I don't think anyone has been working on this. Note also that J's arrays are built on a C infrastructure where a pair of one dimensional arrays (shape and data) represent an arbitrary dimensioned J array.
That said... how hard do you think it would be to implement the rank conjunction? (Rank might be better thought of as using two dimensions for the underlying data - frame and cells.) Anyways, it sounds like a fun project... Thanks, -- Raul On Sun, Sep 20, 2015 at 3:20 PM, 'Pascal Jasmin' via Programming <programm...@jsoftware.com> wrote: > My short question is has anyone already started a project binding Arrayfire > library to J... even if it is only partially complete? > > Arrayfire is an open source C++ library with c ffi, with multiplatform > binaries for easy start, that supports acceleration of functions on GPU and > CPU (multithreading). It includes openBLAS (linear algebra) and boost. > Intel Nvidia and AMD GPUs are all transparently supported (as low as HD4000 > intel). Recent AMD and (less recent) intel CPUs also have opencl backends > (older amd APUs still have GPU acceleration), but afaiu, boost and blas > backends are fallbacks that may help. > > Its interface is also almost entirely array processing, with many 1:1 > mappings to J primitives. There's no locks/manual thread > management/semaphudges... > > On my system, there is a 5-9x speedup of (their) opencl benchmarks compared > to 4 core paralel CPU threads for FFT. Up to 18Gflops. > > This seems like a viable write once, run anywhere parallelization platform > for J. > > Development process (similar to the openssl BN library I made, that I'm > pleased with): > > write/take a J function, > reimplement using ArrayFire calls, or a mix of J and AF calls to avoid > calling overhead. > Optimize the new function with J reference function for testing > > Also from BN experience, J is very good at transforming arrays of pointers, > and can be used tacitly, and so even if AF is not the ideal array language, > it will be very familiar to J, and suitable to J manipulation and ease of > calling. > > Boost has a ton of utilities. I'm not positive that AF exposes all of these > directly, but it can be built form source. (Timers that would work in > console, JHS and iOS come to mind) > > http://www.arrayfire.com/docs/group__func__categories.htm > > even has iota :P > > http://www.arrayfire.com/docs/group__data__func__iota.htm > > shape is limited to 4 dimensions apparently, but there is reshape (perhaps > all arrays in AF are 4d with trailing 1 dimensions, but that is still easy to > convert) > > http://www.arrayfire.com/docs/group__manip__func__tile.htm > > In terms of key functions for J interface, > > I'd guess that if af_write_array and af_get_data_ptr can work with J, then > the whole library should be accessible and useful. > > http://www.arrayfire.com/docs/group__method__mat.htm > > > Long term, because its open source, adding native J datatypes or JDo commands > that process the arrays without copying them over to the calling J instance, > could be easy enough to add? > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm