卡萨布兰卡
2016-07-17 07:07VS2013+CUDA无法命中断点
这是一个简单的程序,在GPU上申请长度为5个int型的buffer,其他什么都没有做。
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <iostream>
using namespace std;
int main()
{
int *dev_buf = 0;
cudaError_t cudaStatus;
cudaStatus = cudaSetDevice(0);//选择GPU
if (cudaStatus != cudaSuccess)
{
cout << "GPU设置错误\n";
goto Error;
}
cudaStatus = cudaMalloc((void**)&dev_buf, 5 * sizeof(int));//申请空间
cudaStatus = cudaDeviceReset();//结束,GPU重置
if (cudaStatus != cudaSuccess)
{
cout<<"GPU重置错误";
return 1;
}
Error:
cudaFree(dev_buf);
return 0;
}
在调试时,出现了很奇怪的现象,在第10行,cudaStatus 已经等于 cudaSuccess,但单步调试还是进入if后面{}内,但只经过了goto这一行,但却没有转跳。继续单步直接越过15行,到了16行。如果直接把断点设置在15行,启动调试时,断点就自动跳到16行了。然而程序的确给dev_buf分配了显存,程序运行正常。反复尝试发现,程序中第一次出现的cudaMalloc()函数无法命中断点,且对前面语句产生影响,如果程序里再出现一个或多个cudaMalloc,一切单步调试正常。以为是代码与程序不一致,网上找了各种设置,均无效。CUDA版本是7.5,新手,请各位大牛指教。万分感激。
- 点赞
- 回答
- 收藏
- 复制链接分享
1条回答
为你推荐
- tensorflow-gpu进行3DUnet训练,jupyter出现服务重启?
- 深度学习
- 人工智能
- tensorflow
- 神经网络
- 机器学习
- 1个回答
- pytorch cuda版运行出错 invalid start byte
- python
- 神经网络
- 2个回答
- vs2017IDE+python+深度学习框架,运行调试时怎么使用GPU加速?
- 深度学习
- 人工智能
- tensorflow
- 1个回答
- VS2010报错 无法从“void (__cdecl CMainFrame::* )(UINT)”转换为“void (__cdecl CWnd::* )(UINT_PTR)"
- visual studio
- 2个回答
- 安装cuda8.0遇到找不到硬件的问题
- python
- 机器学习
- 1个回答
换一换