我的代码是一个并行的implmentation,计算pi的第n位数.当我完成内核并尝试将内存复制回主机时,我得到"启动超时并被终止"错误.我使用此代码对每个cudamalloc,cudamemcpy和kernal启动进行错误检查.
std::string error = cudaGetErrorString(cudaGetLastError());
printf("%s\n", error);
Run Code Online (Sandbox Code Playgroud)
这些调用说一切都很好,直到从内核返回后的第一个cudamemcpy调用.错误发生在"cudaMemcpy(avhost,avdev,size,cudaMemcpyDeviceToHost)"行中; 在主要.任何帮助表示赞赏.
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define mul_mod(a,b,m) fmod( (double) a * (double) b, m)
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
/* return the inverse of x mod y */
__device__ int inv_mod(int x,int y) {
int q,u,v,a,c,t;
u=x;
v=y;
c=1;
a=0;
do {
q=v/u;
t=c;
c=a-q*c;
a=t;
t=u;
u=v-q*u;
v=t;
} while (u!=0);
a=a%y;
if (a<0) a=y+a;
return a;
}
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
/* return the inverse of u mod v, if v is odd …Run Code Online (Sandbox Code Playgroud) 我试图将GPU上的超时从默认设置2秒增加到更长的时间.我找到了以下链接,但它在Windows 7中看起来略有不同,因为我看不到网页中提到的任何内容.
有没有人这样做过?如果是这样,请填补空白.
谢谢
@RoBik所以如果我想要6天(有点过头我知道但仅举例)?再次感谢您的帮助,+1.
发生错误,操作已终止.CUDA.NET异常:ErrorLaunchTimeOut.堆栈跟踪上面的错误:在Cudafy.Host.CudaGPU.HandleCUDAException(CUDAException ex)Cudafy的Cudafy.Host.CudaGPU.DoCopyFromDeviceAsync [T](Array devArray,Int32 devOffset,Array hostArray,Int32 hostOffset,Int32 count,Int32 streamId) .Host.CudaGPU.DoCopyFromDevice [T](Array devArray,Int32 devOffset,Array hostArray,Int32 hostOffset,Int32 count)位于Cudafy.Host.GPGPU的Cudafy.Host.CudaGPU.DoCopyFromDevice [T](Array devArray,Array hostArray). CopyFromDevice [T](T [,] devArray,T [,] hostArray)位于FrazerMann.Profiler.UserInterface.TaskManager.DataRetrieval()中的C:.....\TaskManager.cs:第255行,位于FrazerMann.Profiler.UserInterface C:....\MainView.cs中的.MainView.btnEvaluation_Click(Object sender,EventArgs e):