Panziqi_intelligence 2017-02-15 07:03 采纳率: 100%
浏览 3608
已采纳

CUDA kernel函数内for循环引发unspecific launch failure

    我想测试一下CUDA kernel函数中的for循环的循环次数可不可以无限大。于是我写了一个简单的代码如下:
            于是当size像下面的一千万那么大的时候,程序不正确了。显示调用核函数失败 unspecific launch failure
            我用nsight带的工具测试了一下,并不是寄存器超了或者内存分配失败或溢出,只是随着size的增加,每个warp的指令数IPW(Instructions Per Warp)会增加。是不是错误与这个有关?但是下面的程序代码看起来没有什么错误,如果换成C++的话循环多少次都可以,是不是CUDA对kernel有什么限制?我想知道它错误的原因。
            系统:Win10 pro 64bit
            IDE:Visual Studio 2015 community
            CUDA 8.0
            GPU: GTX860M 4GB

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include "stdlib.h"
#include
using namespace std;

global void Kernel(double *M_gpu, int size)
{
for (int i = 0; i < size; i++)
{
M_gpu[i] = i / 2 + 6;
}
}

int main()
{
cudaError_t cudaStatus;
//分配CPU空间
int size = 10000000;
double M = (double *)malloc(sizeof(double)*size);
//分配GPU空间
double *M_gpu;
cudaStatus = cudaMalloc((void
*)&M_gpu, sizeof(double)*size);
if (cudaStatus != cudaSuccess)
{
cout << "分配CPU空间失败!" << cudaGetErrorString(cudaStatus) << endl; getchar(); exit(0);
}
//调用核函数
Kernel << > > (M_gpu, size);
cudaDeviceSynchronize();
cudaStatus = cudaGetLastError();
if (cudaStatus != cudaSuccess)
{
cout << "调用核函数失败!" << cudaGetErrorString(cudaStatus) << endl; getchar(); exit(0);
}
//将数据从GPU拷贝回CPU
cudaStatus = cudaMemcpy(M, M_gpu, sizeof(double)*size, cudaMemcpyDeviceToHost);
if (cudaStatus != cudaSuccess)
{
cout << "拷贝数据失败!" << cudaGetErrorString(cudaStatus) << endl; getchar(); exit(0);
}
//END
cout << "Success!" << endl;
getchar();
}

展开全部

  • 写回答

3条回答 默认 最新

  • yangbo50304 2017-02-16 17:27
    关注

    用代码测试了下,跟release没有关系,上网搜索了下,好像是kernel运行超时导致kernel直接退出了。
    你用nsight打开option,修改下General->WDDM TDR Display 设置大一点试试。默认是2s应该。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥20 谁刷目标页面的uv记录器上数据,数据只记录跳转的数值
  • ¥30 数据库软件的安装方法
  • ¥15 一道以太网数据传输题
  • ¥15 python 下载群辉文件
  • ¥50 代码还没怎么运行但是需要代码功能调用数据
  • ¥15 vue请求不到数据,返回状态200,数据为html
  • ¥15 用白鹭引擎开发棋牌游戏的前端为什么这么难找
  • ¥35 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部