3 Replies Latest reply on Oct 14, 2010 6:30 PM by Illusio

    Stream SDK 2.2 Memory Limit

    jvsala

      Greetings,

      I am running an OpenCL application under Linux 64 bit with the CPU device (server with dozens of processors). I have a problem because I can't reserve a memory buffer greater than around 1GB (that's what I get checking CL_DEVICE_MAX_MEM_ALLOC_SIZE). The CL_DEVICE_GLOBAL_MEM_SIZE only indicates around 3GB of memory when the server has hundreds of GB.

      Is there any 32-bit limitation in the runtime? I have checked that I'am linking with the x86_64 libraries.

       

      Thanks.

       

        • Stream SDK 2.2 Memory Limit
          Illusio

           

          Originally posted by: jvsala

           

          Is there any 32-bit limitation in the runtime? I have checked that I'am linking with the x86_64 libraries.

          No, but I believe the available memory is currently "hardcoded" to be equal to the amount of megabytes specified in environment variable CPU_MAX_HEAP_SIZE.

          At least it used to be that way. I haven't messed with those variables in a while.(And I'm also using Windows) My variable is currently set to 6144

           

            • Stream SDK 2.2 Memory Limit
              jvsala

               

              Originally posted by: Illusio
              Originally posted by: jvsala

               

               

               

              Is there any 32-bit limitation in the runtime? I have checked that I'am linking with the x86_64 libraries.

               

               

              No, but I believe the available memory is currently "hardcoded" to be equal to the amount of megabytes specified in environment variable CPU_MAX_HEAP_SIZE.

               

              At least it used to be that way. I haven't messed with those variables in a while.(And I'm also using Windows) My variable is currently set to 6144

               

               

               

              Thanks for your tip. But it seems that it doesn't work. I have found that I am not the only one experiencing this:

              http://forums.amd.com/forum/messageview.cfm?catid=390&threadid=122369&enterthread=y

              In the last message of this thread it is said that CPU_MAX_HEAP_SIZE is not supported at all. (Anyway I have tested setting the variable with a big value and it hasn't had any effect).

              So it seems that for some reason the runtime, even in 64 bits, doesn't support more than buffers of 1GB. Does anyone now if this restriction will be lifted in the future? I have a big computation whose output is bigger than that. Luckily I can chop the result by partitioning the NDRange and saving the pieces, but it is a bit of a bummer that having tons of RAM and CPUs I can only use buffers of 1GB. OpenCL on a big multiprocessor really screams. It is a pity that I can't use it to its full potential.