Beispiel #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)),
            });
Beispiel #2
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));
            }

            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));
            }
        }
Beispiel #3
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)
 {
     return(Create(context, acceleratorId, DefaultFlags));
 }