簡體   English   中英

Cudafy該主題已退出代碼259

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM