я тестированием некоторых 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);
не
Это ошибка в отладчике, включенном в VS2013. Когда вы увидите 259, вы можете с уверенностью предположить, что поток закончился нормально с кодом завершения 0. Отключить тупик, начиная с окна Debug> Windows> Threads, чтобы убедиться, что вы смотрите на нужную нить. Убедитесь, что вы включили неуправляемую отладку. Содержимое окна «Стек вызовов» имеет решающее значение и должно быть опубликовано в вопросе, чтобы получить какие-либо шансы на помощь. –
Ах, я был обеспокоен тем, что в другом месте есть проблема. Когда я обнаружил, что это не основная проблема, я успешно обнаружил проблему в другой части кода. – kronas