2016-08-03 1 views
1

で終了しましたCODE:Cudafyスレッドは私がデータの/クレタのコスプレイ@ダイナミックセーラーを計算コード、と私は、コレクション内のすべてのオブジェクトの上にいくつかのGPU演算 を行いたい各ループを持ってcudafy</p> <p>でいくつかのGPUコンピューティングのサンプルをテストしているコード259

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の最初の呼び出しのために動作しますが、カウントデータループエンドプログラムが立ち往生し、コンソール出力は、スレッド0xf50は、コード259(0x103)で終了しました

言います後。 スレッド0x10cがコード259(0x103)で終了しました。 スレッド0xc30がコード259(0x103)で終了しました。 スレッド0xcc0がコード0(0x0)で終了しました。 スレッド0x548がコード0(0x0)で終了しました。

どこに問題があるのでしょうか? i)は(CudafyHost.ClearDevices、gpu.Synchronizeを試してみたが、それは常に、このエラーのヘルプ

編集用 感謝を終了:

gpu.Launch().add(data.IntData[0], data.IntData[1], dev_c); 
:いくつかのテストの後、私は

gpu.Launch().add(5, 3, dev_c); 

作品が、ことがわかりました

ではありません

+1

VS2013に含まれているデバッガのバグです。 259が表示されたら、終了コード0でスレッドが正常終了したと安全に仮定できます。デバッグ> Windows>スレッドウィンドウからデッドロックをデバッグし、正しいスレッドを確認してください。アンマネージデバッグを有効にしてください。 Call Stackウィンドウの内容は重要であり、ヘルプに不利な点がある場合は質問に投稿する必要があります。 –

+0

ああ、私は他のところに問題があることを心配していました。私はこれが主な問題ではないことが判明したとき、私はsucessfulyコードの別の部分で問題を発見した。 – kronas

答えて

0

これは全く問題ではなく、gpuカードが問題なく動作するはずであることを痛感したTannk to Hans Passantです。私はコードの他の部分でエラーを見つける。上記のコードはうまく動作します。

関連する問題