/// <summary cref="CudaAPI.CreateContext(out IntPtr, CudaAcceleratorFlags, int)"/> public override CudaError CreateContext( out IntPtr context, CudaAcceleratorFlags flags, int device) { throw new NotSupportedException(RuntimeErrorMessages.CudaNotSupported); }
/// <summary cref="CudaAPI.CreateContext(out IntPtr, CudaAcceleratorFlags, int)"/> public override CudaError CreateContext( out IntPtr context, CudaAcceleratorFlags flags, int device) { return(cuCtxCreate_v2(out context, flags, device)); }
/// <summary cref="CudaAPI.CreateContextD3D11( /// out IntPtr, out int, CudaAcceleratorFlags, IntPtr)"/> public override CudaError CreateContextD3D11( out IntPtr context, out int device, CudaAcceleratorFlags flags, IntPtr d3dDevice) => throw new NotSupportedException( RuntimeErrorMessages.NotSupportedTargetAccelerator);
/// <summary> /// Constructs a new Cuda accelerator. /// </summary> /// <param name="context">The ILGPU context.</param> /// <param name="d3d11Device">A pointer to a valid D3D11 device.</param> /// <param name="acceleratorFlags">The accelerator flags.</param> public CudaAccelerator( Context context, IntPtr d3d11Device, CudaAcceleratorFlags acceleratorFlags) : this(context, d3d11Device, acceleratorFlags, DefaultFlags) { }
/// <summary cref="CudaAPI.CreateContextD3D11( /// out IntPtr, out int, CudaAcceleratorFlags, IntPtr)"/> public override CudaError CreateContextD3D11( out IntPtr context, out int device, CudaAcceleratorFlags flags, IntPtr d3dDevice) => cuD3D11CtxCreate_v2( out context, out device, flags, d3dDevice);
/// <summary> /// Constructs a new Cuda accelerator. /// </summary> /// <param name="context">The ILGPU context.</param> /// <param name="deviceId">The target device id.</param> /// <param name="acceleratorFlags">The accelerator flags.</param> public CudaAccelerator( Context context, int deviceId, CudaAcceleratorFlags acceleratorFlags) : base(context, AcceleratorType.Cuda) { CudaException.ThrowIfFailed( CurrentAPI.CreateContext(out contextPtr, acceleratorFlags, deviceId)); DeviceId = deviceId; SetupAccelerator(); }
/// <summary> /// Constructs a new Cuda accelerator. /// </summary> /// <param name="context">The ILGPU context.</param> /// <param name="d3d11Device">A pointer to a valid D3D11 device.</param> /// <param name="acceleratorFlags">The accelerator flags.</param> public CudaAccelerator( Context context, IntPtr d3d11Device, CudaAcceleratorFlags acceleratorFlags) : base(context, AcceleratorType.Cuda) { if (d3d11Device == IntPtr.Zero) throw new ArgumentNullException(nameof(d3d11Device)); CudaException.ThrowIfFailed( CurrentAPI.CreateContextD3D11(out contextPtr, out int deviceId, acceleratorFlags, d3d11Device)); DeviceId = deviceId; SetupAccelerator(); }
/// <summary> /// Constructs a new Cuda accelerator. /// </summary> /// <param name="context">The ILGPU context.</param> /// <param name="deviceId">The target device id.</param> /// <param name="acceleratorFlags">The accelerator flags.</param> public CudaAccelerator( Context context, int deviceId, CudaAcceleratorFlags acceleratorFlags) : base(context, AcceleratorType.Cuda) { if (deviceId < 0) { throw new ArgumentOutOfRangeException(nameof(deviceId)); } Backends.Backend.EnsureRunningOnNativePlatform(); CudaException.ThrowIfFailed( CurrentAPI.CreateContext( out var contextPtr, acceleratorFlags, deviceId)); NativePtr = contextPtr; DeviceId = deviceId; SetupAccelerator(); }
/// <summary> /// Creates a new Cuda accelerator. /// </summary> /// <param name="context">The ILGPU context.</param> /// <param name="cudaDeviceIndex"> /// The relative device index for the Cuda device. 0 here refers to the first /// Cuda device, 1 to the second, etc. /// </param> /// <param name="acceleratorFlags">The accelerator flags.</param> /// <returns>The created Cuda accelerator.</returns> public static CudaAccelerator CreateCudaAccelerator( this Context context, int cudaDeviceIndex, CudaAcceleratorFlags acceleratorFlags) => context.GetCudaDevice(cudaDeviceIndex) .CreateCudaAccelerator(context, acceleratorFlags);
/// <summary> /// Creates a new context. /// </summary> /// <param name="context">The created context.</param> /// <param name="flags">The flags to use.</param> /// <param name="device">The target device.</param> /// <returns>The error status.</returns> public CudaError CreateContext( out IntPtr context, CudaAcceleratorFlags flags, int device) => cuCtxCreate_v2(out context, flags, device);
/// <summary> /// Creates a new context with D3D11 support /// </summary> /// <param name="context">The created context.</param> /// <param name="flags">The flags to use.</param> /// <param name="device">The target device.</param> /// <param name="d3dDevice">The associated D3D11 device.</param> /// <returns>The error status.</returns> public abstract CudaError CreateContextD3D11( out IntPtr context, out int device, CudaAcceleratorFlags flags, IntPtr d3dDevice);
/// <summary> /// Creates a new context. /// </summary> /// <param name="context">The created context.</param> /// <param name="flags">The flags to use.</param> /// <param name="device">The target device.</param> /// <returns>The error status.</returns> public abstract CudaError CreateContext( out IntPtr context, CudaAcceleratorFlags flags, int device);
private static extern CudaError cuCtxCreate_v2( [Out] out IntPtr context, [In] CudaAcceleratorFlags flags, [In] int device);
/// <summary> /// Creates a new Cuda accelerator. /// </summary> /// <param name="context">The ILGPU context.</param> /// <param name="acceleratorFlags">The accelerator flags.</param> /// <returns>The created Cuda accelerator.</returns> public CudaAccelerator CreateCudaAccelerator( Context context, CudaAcceleratorFlags acceleratorFlags) => new CudaAccelerator(context, this, acceleratorFlags);
private static extern CudaError cuD3D11CtxCreate_v2( [Out] out IntPtr context, [Out] out int device, [In] CudaAcceleratorFlags flags, [In] IntPtr d3dDevice);
/// <summary> /// Constructs a new Cuda accelerator. /// </summary> /// <param name="context">The ILGPU context.</param> /// <param name="deviceId">The target device id.</param> /// <param name="acceleratorFlags">The accelerator flags.</param> public CudaAccelerator(Context context, int deviceId, CudaAcceleratorFlags acceleratorFlags) : this(context, deviceId, acceleratorFlags, DefaultFlags) { }