-1
mainSift.cpp
をNvidia Tesla M2090でCudaSiftから実行しようとしています。まず、thisの質問で説明したように、私はsm_35
からに変更しなければなりませんでした。CUDA不明のエラー
Unfortunatleyは今、このエラーが返されます。
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質問を読んだが、私は理解していません解決策が何を意味するのか、それとも私の問題にどのように使用するのか。
なぜエラーが発生しますか?
現在地の質問をしていません。何を知りたいですか? – talonmies
簡単な質問を追加しました。なぜエラーが発生するのですか? – justHelloWorld
テクスチャオブジェクト( 'cudaTextureObject_t')は、計算機能2.0では使用できないKepler機能です。テクスチャ参照を使用する必要があります。コードの変更は簡単ではないかもしれません。 – havogt