【问题标题】:CUDA unknown errorCUDA 未知错误
【发布时间】:2016-06-21 08:51:38
【问题描述】:

我正在尝试在 Nvidia Tesla M2090 上从 CudaSift 运行 mainSift.cpp。首先,正如this 问题中所述,我必须从sm_35 更改为sm_20 CMakeLists.txt

不幸的是,现在返回此错误:

checkMsg() CUDA error: LaplaceMulti() execution failed
 in file </ghome/rzhengac/Downloads/CudaSift/cudaSiftH.cu>, line 318 : unknown error.

这是LaplaceMulti 代码:

double LaplaceMulti(cudaTextureObject_t texObj, CudaImage *results, float baseBlur, float diffScale, float initBlur)
{
  float kernel[12*16];
  float scale = baseBlur;
  for (int i=0;i<NUM_SCALES+3;i++) {
    float kernelSum = 0.0f;
    float var = scale*scale - initBlur*initBlur;
    for (int j=-LAPLACE_R;j<=LAPLACE_R;j++) {
      kernel[16*i+j+LAPLACE_R] = (float)expf(-(double)j*j/2.0/var);
      kernelSum += kernel[16*i+j+LAPLACE_R]; 
    }
    for (int j=-LAPLACE_R;j<=LAPLACE_R;j++) 
      kernel[16*i+j+LAPLACE_R] /= kernelSum;  
    scale *= diffScale;
  }
  safeCall(cudaMemcpyToSymbol(d_Kernel2, kernel, 12*16*sizeof(float)));
  int width = results[0].width;
  int pitch = results[0].pitch;
  int height = results[0].height;
  dim3 blocks(iDivUp(width+2*LAPLACE_R, LAPLACE_W), height);
  dim3 threads(LAPLACE_W+2*LAPLACE_R, LAPLACE_S); 
  LaplaceMulti<<<blocks, threads>>>(texObj, results[0].d_data, width, pitch, height);
  checkMsg("LaplaceMulti() execution failed\n");
  return 0.0; 
}

我已经阅读了this 似乎有些相似的问题,但我不明白解决方案的含义或如何将其用于我的问题。

为什么会出现错误?

【问题讨论】:

  • 您还没有在这里提问。你想知道什么?
  • 添加了一个简单的问题:为什么会出现错误?
  • 纹理对象 (cudaTextureObject_t) 是 Kepler 的一项功能,不适用于计算能力 2.0。您需要使用纹理参考。代码的改动可能并不简单。
  • 如果您提供了minimal reproducible example(因为对于询问调试帮助的问题是必要的),您可以将您的问题缩小到stackoverflow.com/q/22933342/5085250 的副本。
  • 对不起,我知道 MCV。问题是,由于我是 CUDA 的新手,从技术上讲,对我来说一切都可能是问题的原因。无论如何感谢您的回答。

标签: cuda nvidia tesla


【解决方案1】:

发生错误是因为您运行的代码具有 GPU 不支持的功能(纹理对象)。编译器在编译过程中没有产生错误,我有点惊讶,但这是另一个问题。

除了使用支持的硬件,或者重写代码之外没有其他解决方案。

[此答案由 cmets 组装而成,并作为社区 wiki 条目添加,以将此答案从 CUDA 标签的未回答列表中删除]

【讨论】:

    猜你喜欢
    • 2013-06-13
    • 2014-12-18
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 2012-09-11
    相关资源
    最近更新 更多