我将theano.config.device设置为gpu时程序中的内存错误

时间:2015-01-08 16:50:57

标签: python gpu theano

我的图形系统是GT 550M

当我在gpu上运行我的程序时出现以下错误,我不知道如何解决这个问题

MemoryError: error freeing device pointer 0x0000000500C60000 (the launch timed out and was terminated)
Apply node that caused the error: GpuReshape{4}(GpuConv{valid, (2, 2), None, (7, 7), True, (3, 224, 224), (7, 7)}.0, TensorConstant{[672   1 109 109]})
Inputs types: [CudaNdarrayType(float32, 4D), TensorType(int64, vector)]
Inputs shapes: [(7, 96, 109, 109), (4L,)]
Inputs strides: [(1140576, 11881, 109, 1), (8L,)]
Inputs scalar values: ['not scalar', 'not scalar']

Debugprint of the apply node: 
GpuReshape{4} [@A] <CudaNdarrayType(float32, (False, True, False, False))> ''   
 |GpuConv{valid, (2, 2), None, (7, 7), True, (3, 224, 224), (7, 7)} [@B] <CudaNdarrayType(float32, 4D)> ''   
 | |GpuDimShuffle{0,3,1,2} [@C] <CudaNdarrayType(float32, 4D)> ''   
 | | |GpuFromHost [@D] <CudaNdarrayType(float32, 4D)> ''   
 | |   |x [@E] <TensorType(float32, 4D)>
 | |<CudaNdarrayType(float32, 4D)> [@F] <CudaNdarrayType(float32, 4D)>
 |TensorConstant{[672   1 109 109]} [@G] <TensorType(int64, vector)>

HINT: Re-running with most Theano optimization disabled could give you a back-traces when this node was created. This can be done with by setting the Theano flags optimizer=fast_compile

1 个答案:

答案 0 :(得分:1)

cuda的错误是异步返回的。因此,错误消息的一部分可能是不相关的。这是第一行:

MemoryError:错误释放设备指针0x0000000500C60000(启动超时并被终止)

答案在第二部分:启动超时并终止

您的GPU已连接到显示器。在这种情况下,每个GPU内核调用的限制为5秒。碰巧它被破坏了,驱动程序杀了那个内核。这是为了防止屏幕无响应。

可能的解决方案: 1)为监视器使用不同的gpu。 2)通过使用小输入数据(例如较低批量)使内核更快 3)购买更快的GPU,不确定它是否可行,如果它适用于您当前的尺寸,问题将出现更大的尺寸。