memory leak with Cuda
- To: mathgroup at smc.vnet.net
- Subject: [mg131283] memory leak with Cuda
- From: gebe13 at neuf.fr
- Date: Mon, 24 Jun 2013 03:58:07 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
Here is an application of Wolfram white paper (Heterogeneous Computing in Mathematica page 16 and 17). After several cursor movement program stops because of a memory leak. How to fix it please? Julia set with CUDA Needs["CUDALink`"] code = " __global__ void julia_kernel(Real_t * set, int width, int height, Real_t \ cx, Real_t cy) { int xIndex = threadIdx.x + blockIdx.x*blockDim.x; int yIndex = threadIdx.y + blockIdx.y*blockDim.y; int ii; Real_t x = ZOOM_LEVEL*(width/2 - xIndex); Real_t y = ZOOM_LEVEL*(height/2 - yIndex); Real_t tmp; Real_t c; if (xIndex < width && yIndex < height) { for (ii = 0; ii < MAX_ITERATIONS && x*x + y*y < BAILOUT; ii++) { tmp = x*x - y*y + cx; y = 2*x*y + cy; x = tmp; } c = log(0.1f + sqrt(x*x + y*y)); set[xIndex + yIndex*width] = c; } }"; JuliaCalculate = CUDAFunctionLoad[code, "julia_kernel", {{_Real, "Output"}, _Integer, _Integer, _Real, _Real}, {16, 16}, "Defines" -> {"MAX_ITERATIONS" -> 10, "ZOOM_LEVEL" -> "0.0050", "BAILOUT" -> "4.0"}]; {width, height} = {512, 512}; jset = CUDAMemoryAllocate[Real, {height, width}]; Manipulate[ JuliaCalculate[jset, width, height, c[[1]], c[[2]], {width, height}]; ReliefPlot[Reverse@CUDAMemoryGet[jset], ColorFunction -> "Rainbow", DataRange -> {{-2.0, 2.0}, {-2.0, 2.0}}, ImageSize -> 512, Frame -> None, Epilog -> {Opacity[.5], Dashed, Thick, Line[{{{c[[1]], -2}, {c[[1]], 2}}, {{-2, c[[2]]}, {2, c[[2]]}}}]}], {{c, {0, 1}}, {-2, -2}, {2, 2}, Locator, Appearance -> Graphics[{Thick, Dashed, Opacity[.75], Circle[]}, ImageSize -> 50]}] General::nomem: The current computation was aborted because there was insufficient memory available to complete the computation.