It seems to me that it would be basically impossible to make an *efficient* code to alternate between row and column major. A transpose is easy, but it is not efficient.
On 22 June 2015 at 00:00, Scott Jones <[email protected]> wrote: > Has anybody made an Array type that is row-major for julia, precisely for > memory compatibility with C code? (as well as optimized code to go from > row-major <-> column-major layout?) > It would seem that that would be very useful, with all of the C libraries > available... > > On Sunday, June 21, 2015 at 5:16:20 PM UTC-4, Isaiah wrote: >> >> I think I'll go for this idea. For the real project I cannot change the C >>> library because it is not mine. So maybe I can overwrite the C variable the >>> way you suggest. >> >> >> To expand slightly, what I meant was that if you have an API like: >> >> compute_large_foo(double* array, int nrows, int ncols) >> >> You can pass a pointer to a Julia array via ccall and avoid copying >> individual elements. Although note (correction!) that the default Array >> memory layout in Julia is column-major (like Fortran), not row-major (like >> C). >> >> On Sun, Jun 21, 2015 at 4:59 PM, Daniel Carrera <[email protected]> >> wrote: >> >>> >>> >>> On 21 June 2015 at 22:13, Isaiah Norton <[email protected]> wrote: >>> >>>> 0.4-dev is not really recommended unless you are somewhat adventurous >>>> or you know you need a specific feature. >>>> >>> >>> Is there any estimate on when 0.4 will be stable? >>> >>> >>> >>>> (for general use, note also that depending on what APIs you are >>>> calling, you could just do the full array-population on the Julia side and >>>> pass a pointer to the array because Julia's arrays have C-compatible memory >>>> layout) >>>> >>> >>> >>> I think I'll go for this idea. For the real project I cannot change the >>> C library because it is not mine. So maybe I can overwrite the C variable >>> the way you suggest. >>> >>> >>> Cheers, >>> Daniel. >>> >> >> -- When an engineer says that something can't be done, it's a code phrase that means it's not fun to do.
