
m (b i e) Converts an immutable array into a mutable array without taking a copy. This function is "unsafe" because any subsequent modifications made to the mutable version of
Hello, in GHC documentation, it is said : "unsafeThaw :: (Ix i, IArray a e, MArray b e m) => a i e - the array will be shared with the immutable version. It is safe to use, therefore, if the immutable version is never referenced again. " I am trying to use unsafeThaw in a parallel program written in a parallel language that I am developing. A process have to transmit a UArray Int Double to another process. I used unsafeThaw to translate the UArray into a StorableArray. Thus, using the function withStorableArray, it is possible to access the array elements (double's) in a contiguos buffer that could be sent directly through MPI. The receiving process fetch the message (MPI_Recv) in a buffer and copy their elements (including array bounds information) in a StorableArray (using withStorableArray and copyArray). Then, using unsafeFreeze applied to the StorableArray, the original UArray Int Double sent by the sender is obtained. But this is efficient only if the conversion from UArray to StorableArray, using unsafe versions of thaw and freeze, does not take a copy, as GHC documentation suggests to the reader. However, my experiments (profiling, measurements, etc.) have detected a source of ineficiency in the application of unsafeThaw and unsafreFreeze. It appears to be more efficient to translate the array to a list (using elems) and then copy the list in a "Ptr" array using pokeArray. unsafeThaw is really "free of copy" ?? Any exception ?? I need a way to access an unboxed immutable array in a contiguos buffer in constant time, in order to minimize marshalling overheads for preparing a message to be sent through a network, using MPI. This is important for parallel scientific code, that makes extensive use of arrays and have to transmitt them between processes. Any suggestion ? Heron __________________________________________________________________________ Acabe com aquelas janelinhas que pulam na sua tela. AntiPop-up UOL - É grátis! http://antipopup.uol.com.br/