Удаление рабочего процесса по умолчанию в Alea CUDA

Требуется ли удалять Worker.Default или CUBLAS.Default?

Мой код CUDA работает правильно, но при выходе из программы я получаю следующее исключение:

Got CUDA error CUDA_ERROR_INVALID_VALUE
   at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   at Alea.CUDA.CUDAInterop.cuSafeCall(cudaError_enum result)
   at <StartupCode$Alea-CUDA>.$Engine.f@1-46[T](WorkerContext this, FSharpFunc`2
 f, Unit _arg6)
   at Alea.CUDA.WorkerContext.eval[T](FSharpFunc`2 f)
   at Alea.CUDA.Program.Dispose(Boolean disposing)
Got CUDA error CUDA_ERROR_INVALID_VALUE
   at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   at Alea.CUDA.CUDAInterop.cuSafeCall(cudaError_enum result)
   at <StartupCode$Alea-CUDA>.$Engine.f@1-46[T](WorkerContext this, FSharpFunc`2
 f, Unit _arg6)
   at Alea.CUDA.WorkerContext.eval[T](FSharpFunc`2 f)
   at Alea.CUDA.Program.Dispose(Boolean disposing)

Могу ли я использовать Worker.Default и CUBLAS.Default в нескольких классах или мне следует создать один и передать его всем, кому нужен рабочий?

Спасибо, Йохан.


person Johan    schedule 17.12.2015    source источник


Ответы (1)


Хотя работник может быть утилизирован, но не рекомендуется утилизировать его. Worker представляет собой контекст CUDA и должен быть долгоживущим. Рабочий процесс по умолчанию и объект cublas по умолчанию создаются на вашем устройстве GPU по умолчанию.

person Xiang Zhang    schedule 18.12.2015