2016-08-03 12 views
1

verlassen Ich habe Testen einiger GPU computing Proben mit cudafyCudafy Der Faden wurde mit Code 259

I-Code haben die Rechen-/creta colection von Daten, und jede Schleife I in Sammlung auf jedem Objekt tun wollen einige GPU Betrieb CODE:

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; 
} 

Dieser Code arbeitet für den ersten Anruf von CountData, aber nach dem Ende wird Programmzählwert Datenloop stecken und Konsolausgabe sagt

der Faden 0xf50 mit Code 259 (0x103) ausgetreten ist. Der Thread 0x10c wurde mit Code 259 (0x103) beendet. Der Thread 0xc30 wurde mit Code 259 (0x103) beendet. Der Thread 0xcc0 wurde mit Code 0 (0x0) beendet. Der Thread 0x548 wurde mit Code 0 (0x0) beendet.

Haben Sie einen Hinweis, wo könnte ein Problem sein? ich versuche gpu.Synchronize, CudafyHost.ClearDevices(), aber es ist immer in diesem Fehler Vielen Dank für Hilfe beenden

Edit: nach einigem Test fand ich, dass

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

funktioniert, aber:

gpu.Launch().add(data.IntData[0], data.IntData[1], dev_c); 

ist nicht

+1

Es ist ein Fehler im Debugger in VS2013 enthalten. Wenn Sie 259 sehen, können Sie sicher davon ausgehen, dass der Thread normal mit einem Exit-Code von 0 beendet wurde. Debug Deadlock, indem Sie im Fenster Debug> Windows> Threads starten, um sicherzustellen, dass Sie den richtigen Thread sehen. Stellen Sie sicher, dass Sie das nicht verwaltete Debugging aktiviert haben. Der Inhalt des Call Stack-Fensters ist von entscheidender Bedeutung und muss in der Frage gepostet werden, um irgendwelche Chancen auf Hilfe zu haben. –

+0

Ah ok ich war besorgt, dass es anderswo ein Problem gibt. Als ich festgestellt habe, dass dies nicht das Hauptproblem ist, habe ich erfolgreich ein Problem in einem anderen Teil des Codes gefunden. – kronas

Antwort

0

Tahnks zu Hans Passant, der pickte, dass dies überhaupt kein Problem ist und dass GPU-Karte mit Problem funktionieren sollte. Ich finde Fehler in anderem Teil des Codes. So Code oben funktioniert gut.

Verwandte Themen