[英]Why am I seeing multiple “The thread 0x22c8 has exited with code 259 (0x103).” messages
[英]Cudafy The thread has exited with code 259
我用cudafy測試了一些GPU計算樣本
我有代碼計算/ creta數據的集合,我想要的每個循環在集合中的每個對象上做一些GPU操作代碼:
public override void CountData(List<IData<int>> datas)
{
for (int i = 0; i < datas.Count; i++)
{
Execute(datas[i]);
}
}
public static void Execute(IData<int> data)
{
CudafyModule km = CudafyTranslator.Cudafy();
GPGPU gpu = CudafyHost.GetDevice(CudafyModes.Target, CudafyModes.DeviceId);
gpu.LoadModule(km);
int c;
int[] dev_c = gpu.Allocate<int>(); // cudaMalloc one Int32
gpu.Launch().add(data.IntData[0], data.IntData[1], dev_c); // or gpu.Launch(1, 1, "add", 2, 7, dev_c);
gpu.CopyFromDevice(dev_c, out c);
Console.WriteLine(c + ";");
gpu.Free(dev_c);
chromozome.Result= c;
}
[Cudafy]
public static void add(int a, int b, int[] c)
{
c[0] = a + b;
}
此代碼適用於CountData的第一次調用,但在Count數據循環結束程序將卡住並且控制台輸出后說
線程0xf50已退出代碼259(0x103)。 線程0x10c已退出代碼259(0x103)。 線程0xc30已退出代碼259(0x103)。 線程0xcc0已退出,代碼為0(0x0)。 線程0x548已退出,代碼為0(0x0)。
enybody有線索哪里可能有問題? 我嘗試gpu.Synchronize,CudafyHost.ClearDevices(),但它始終以此錯誤結束謝謝你的幫助
編輯:經過一些測試我發現了
gpu.Launch().add(5, 3, dev_c);
但有效:
gpu.Launch().add(data.IntData[0], data.IntData[1], dev_c);
不是
Tahnks對Hans Passant表示,這根本不是問題,而且gpu卡應該可以解決問題。 我在代碼的其他部分發現錯誤。 所以上面的代碼運行正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.