Right, not something you'd want to do very often... you'd want to stay in one domain or the other...
On Sunday, June 21, 2015 at 6:08:18 PM UTC-4, Daniel Carrera wrote: > > 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] <javascript:> > > 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. >
