2016-08-03 8 views
1

я тестированием некоторых GPU вычислений образцов с cudafyCudafy Нити завершилась с кодом 259

У меня есть код, который вычисляет/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, но после того, как графы конца программы цикла данных будут упирался и консольный вывод говорит

нить 0xf50 завершился с кодом 259 (0x103). Поток 0x10c вышел с кодом 259 (0x103). Нить 0xc30 вышла с кодом 259 (0x103). Поток 0xcc0 вышел с кодом 0 (0x0). Поток 0x548 вышел с кодом 0 (0x0).

Имейте enybody подскажите, где может быть проблема? я стараюсь gpu.Synchronize, CudafyHost.ClearDevices(), но это всегда конец этой ошибки Спасибо за помощь

Edit: после некоторого теста я обнаружил, что

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

работает, но:

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

не

+1

Это ошибка в отладчике, включенном в VS2013. Когда вы увидите 259, вы можете с уверенностью предположить, что поток закончился нормально с кодом завершения 0. Отключить тупик, начиная с окна Debug> Windows> Threads, чтобы убедиться, что вы смотрите на нужную нить. Убедитесь, что вы включили неуправляемую отладку. Содержимое окна «Стек вызовов» имеет решающее значение и должно быть опубликовано в вопросе, чтобы получить какие-либо шансы на помощь. –

+0

Ах, я был обеспокоен тем, что в другом месте есть проблема. Когда я обнаружил, что это не основная проблема, я успешно обнаружил проблему в другой части кода. – kronas

ответ

0

Tahnks to Hans Passant, который пинтовал, что это не проблема, и что карта gpu должна работать с проблемой. Я обнаружил ошибку в другой части кода. Таким образом, код выше работает отлично.