# Initialization Through the .NET API

When creating a new control using one of the following:

- ViDi2.Runtime.Local.Control (ViDi2.GpuMode gpuMode, List<int> gpuDevice)
- ViDi2.Runtime.Local.Control (LibraryAccess libraryAccess, ViDi2.GpuMode gpuMode, List<int> gpuDevices, bool activateDebugLogging)
- ViDi2.Training.Local.Control (ViDi2.GpuMode gpuMode, List<int> gpuDevice)
- ViDi2.Training.Local.Control (LibraryAccess libraryAccess, ViDi2.GpuMode gpuMode, List<int> gpuDevices, bool activateDebugLogging)

GPU Mode | ViDi2.GpuMode gpuMode
--- | ---
Single Device per Tool (default) | GpuMode.SingleDevicePerTool
Multiple Devices per Tool | GpuMode.MultipleDevicesPerTool
No GPU Support | Gpu.Mode.NoSupport

When processing with the following:

- ViDi2.Runtime.ITool.Process
- ViDi.Runtime.IStream.Process
- ViDi2.Training.ITool.Process
- ViDi.Training.IStream.Process
- ViDi2.IDatabase.Process

The device selection is performed through the List<int> gpuDevices argument.

List<int> gpuDevices | Default Value | Device List
--- | --- | ---
Value | null | new List<int> {0,1}
Description | Uses all of the available GPUs. | Only uses the specified GPUs (e.g. 0 and 1).