/// <summary> /// Creates the specified accelerator using the provided accelerator id. /// </summary> /// <param name="context">The ILGPU context.</param> /// <param name="acceleratorId">The specified accelerator id.</param> /// <returns>The created accelerator.</returns> public static Accelerator Create(Context context, AcceleratorId acceleratorId) { if (context == null) { throw new ArgumentNullException(nameof(context)); } return(acceleratorId switch { CPU.CPUAcceleratorId _ => new CPU.CPUAccelerator(context), Cuda.CudaAcceleratorId cudaId => new Cuda.CudaAccelerator(context, cudaId.DeviceId), OpenCL.CLAcceleratorId clId => new OpenCL.CLAccelerator(context, clId), _ => throw new ArgumentException( RuntimeErrorMessages.NotSupportedTargetAccelerator, nameof(acceleratorId)), });
/// <summary> /// Constructs a new Cuda accelerator. /// </summary> /// <param name="context">The ILGPU context.</param> /// <param name="acceleratorId">The accelerator id.</param> public CudaAccelerator(Context context, CudaAcceleratorId acceleratorId) : this(context, acceleratorId.DeviceId) { }