public CudaAnnInterface() { try { _accelerator = Device.CUDA; } catch (Exception) { Console.WriteLine("\n-----------\nCUDA is not supported\n-----------\n"); return; } using (var translator = new ParallelTranslator(_accelerator)) { var kernels = ComputeKernels(translator); _interface = new ParalleExecutorlInterface(_accelerator, kernels); } }
private Dictionary <string, Kernel> ComputeKernels(ParallelTranslator translator) { var result = new Dictionary <string, Kernel>(); var methods = typeof(T) .GetMethods(BindingFlags.Static | BindingFlags.Public) .Select(x => x.Name) .ToList(); var compileds = translator .TranslateMethod(typeof(T), methods) .ToList(); for (int i = 0; i < methods.Count(); i++) { var kernel = _accelerator.LoadAutoGroupedKernel(compileds[i]); result.Add(methods[i], kernel); } return(result); }