当我将 theano.config.device 设置为 gpu 时我的程序出现内存错误
memory error in my program when I set theano.config.device to gpu
我的显卡系统是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
cuda 的错误是异步返回的。因此部分错误消息可能无关。这是第一行:
MemoryError:释放设备指针 0x0000000500C60000 时出错(启动超时并终止)
答案在第二部分:启动超时被终止
您的 GPU 已连接到显示器。在这种情况下,每个 GPU 内核调用的时间限制为 5 秒。碰巧它被破坏了,驱动程序杀死了那个内核。这是为了防止屏幕没有响应。
可能的解决方案:
1)为显示器使用不同的GPU。
2)通过使用小输入数据(例如,较小的批大小)使内核更快
3) 买一个更快的 GPU,不确定它是否能工作,如果它能工作在你当前的尺寸上,问题会出现在更大的尺寸上。
我的显卡系统是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
cuda 的错误是异步返回的。因此部分错误消息可能无关。这是第一行:
MemoryError:释放设备指针 0x0000000500C60000 时出错(启动超时并终止)
答案在第二部分:启动超时被终止
您的 GPU 已连接到显示器。在这种情况下,每个 GPU 内核调用的时间限制为 5 秒。碰巧它被破坏了,驱动程序杀死了那个内核。这是为了防止屏幕没有响应。
可能的解决方案: 1)为显示器使用不同的GPU。 2)通过使用小输入数据(例如,较小的批大小)使内核更快 3) 买一个更快的 GPU,不确定它是否能工作,如果它能工作在你当前的尺寸上,问题会出现在更大的尺寸上。