/// <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> /// 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)); } switch (acceleratorId.AcceleratorType) { case AcceleratorType.CPU: return(new CPU.CPUAccelerator(context)); case AcceleratorType.Cuda: return(new Cuda.CudaAccelerator(context, acceleratorId.DeviceId)); default: throw new ArgumentException(RuntimeErrorMessages.NotSupportedTargetAccelerator, nameof(acceleratorId)); } }
/// <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) { return(Create(context, acceleratorId, DefaultFlags)); }