Ooh, great -- could you point me in the right direction for that? ________________________________________ From: Don Stewart [d...@galois.com] Sent: Wednesday, January 07, 2009 9:23 AM To: Bulat Ziganshin Cc: Bueno, Denis; haskell-cafe@haskell.org Subject: Re: [Haskell-cafe] Blitting one IOUArray into another
You can of course memcpy unboxed arrays fairly easily. bulat.ziganshin: > Hello Denis, > > Wednesday, January 7, 2009, 6:56:36 PM, you wrote: > > memory allocated for i :))) > > each new copy of i needs one word. the situation was much worse with > Int64, of course :) > > > > Hi all, > > > I'm seeing a lot of unexpected memory allocation with some simple code that > > copies the contents of one vector (IOUArray Int Int64) into another of the > > same type and dimensions. In particular, profiling reveals that `copyInto' > > is allocating oodles and oodles of memory. > > > My small test case creates two 50000-element arrays and performs 10000 > > copies from one into the other. Since the elements are Int64s and the > > arrays are unboxed, each array should be > > > 50000 elements * 8 bytes per element = 400,000 bytes > > > and so the arrays should only take 800,000 bytes total. I understand > > there's some overhead for thunks and whatnot, but the profiler reported > > allocation is around 40 billion bytes. And almost all of that allocation is > > in my copying function, not in main (main allocates the arrays). > > > I've attached two versions of the code, just for comparison. The only > > difference is the way the copying is done. One calls `getBounds' to figure > > out the bounds, and one is given the bounds for copying. They're both about > > the same speed and allocation (originally I was using IOUArray Int64 Int64, > > and there was a much greater allocation difference between the two versions; > > but that went away. Oh well). > > > So, does anyone know why copying takes so much allocation? I expect there > > is _some_ way to just move memory from one array to another, like a memcpy > > -- how can I do that? > > Denis > > > > > -- > Best regards, > Bulat mailto:bulat.zigans...@gmail.com > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe