Esempio n. 1
0
        /// <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)),
            });
Esempio n. 2
0
 /// <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)
 {
 }