/// <summary> /// Checks whether or not the Cuda features are currently supported /// </summary> public static bool IsGpuAccelerationSupported() { try { // CUDA test Alea.Gpu gpu = Alea.Gpu.Default; if (gpu == null) { return(false); } if (!Alea.cuDNN.Dnn.IsAvailable) { return(false); // cuDNN } using (Alea.DeviceMemory <float> sample_gpu = gpu.AllocateDevice <float>(1024)) { Alea.deviceptr <float> ptr = sample_gpu.Ptr; void Kernel(int i) => ptr[i] = i; Alea.Parallel.GpuExtension.For(gpu, 0, 1024, Kernel); // JIT test float[] sample = Alea.Gpu.CopyToHost(sample_gpu); return(Enumerable.Range(0, 1024).Select <int, float>(i => i).ToArray().ContentEquals(sample)); } } catch { // Missing .dll or other errors return(false); } }
public void ModelReflection(Alea.Gpu gpu, Common.ModelEdgeParameter param) { Initialize(); Source = new BufferItem(); Source.Input = new Field.BufferField(gpu, param.InputSize, param.InputChannels); Source.Teacher = new Field.BufferField(gpu, param.OutputSize, param.OutputChannels); }