[PyCUDA] Successive calls not freeing memory
Matthew Graham
mjg at cacr.caltech.edu
Wed Oct 12 15:53:16 PDT 2011
Hi Andreas,
Unfortunately that does not seem to work.
Cheers,
Matthew
On Oct 11, 2011, at 6:27 PM, Andreas Kloeckner wrote:
> On Tue, 11 Oct 2011 17:41:56 -0700, Matthew Graham <mjg at cacr.caltech.edu> wrote:
>> Hi,
>>
>> I'm making successive calls to a function with each call requiring an initialization and a release of the CUDA context. However, memory on the device is not getting freed between calls. What I have in a call is:
>>
>> driver.init()
>> dev = driver.Device(num)
>> context = dev.make_context()
>> print driver.mem_get_info()
>> mod = compiler.SourceModule(code)
>> ... # application logic here
>> context.pop()
>>
>> and this is showing:
>>
>> Obj 1
>> (195731456, 265945088)
>> (182132736, 265945088)
>> (168099840, 265945088)
>> (154075136, 265945088)
>> Obj 2
>> (140050432, 265945088)
>> (126025728, 265945088)
>> (112001024, 265945088)
>> (98009088, 265945088)
>> Obj 3
>> (83984384, 265945088)
>> Obj 4
>> (69959680, 265945088)
>> (55934976, 265945088)
>> (41517056, 265945088)
>> (26443776, 265945088)
>> Obj 5
>> [11/Oct/2011:16:23:57] HTTP Traceback (most recent call last):
>> File "/Library/Frameworks/Python.framework/Versions/6.0.0/lib/python2.6/site-packages/cherrypy/_cprequest.py", line 606, in respond
>> cherrypy.response.body = self.handler()
>> File "/Library/Frameworks/Python.framework/Versions/6.0.0/lib/python2.6/site-packages/cherrypy/_cpdispatch.py", line 25, in __call__
>> return self.callable(*self.args, **self.kwargs)
>> File "/Users/mjg/Projects/python/kiss/culsp.py", line 203, in culsp
>> context = dev.make_context()
>> MemoryError: cuCtxCreate failed: out of memory
>>
>> I've tried to put in del calls for the gpuarrays used after popping the context (as per the 2DFFT and MultipleThreads example codes) but this is not doing anything. How can I release the memory on the device between calls?
>
> Try pycuda.tools.clear_context_caches().
>
> Andreas
More information about the PyCUDA
mailing list