示例#1
0
        /// <summary>
        /// Helper function to create and initialize a new instance of NvmlAPI.
        /// </summary>
        private static NvmlAPI CreateInitAPI(NvmlAPIVersion?apiVersion)
        {
            var api = NvmlAPI.Create(apiVersion);

            NvmlException.ThrowIfFailed(api.Init());
            return(api);
        }
示例#2
0
        static void Main()
        {
            using var context = Context.Create(builder => builder.Cuda());

            foreach (var device in context)
            {
                using var accelerator = device.CreateAccelerator(context) as CudaAccelerator;
                Console.WriteLine($"Performing operations on {accelerator}");

                // Create NvmlDevice wrapper
                using var nvmlDevice = NvmlDevice.CreateFromAccelerator(accelerator);
                var temp = nvmlDevice.GetGpuTemperature();

                // Calling low-level NvmlAPI directly
                NvmlException.ThrowIfFailed(
                    nvmlDevice.API.DeviceGetTemperature(
                        nvmlDevice.DeviceHandle,
                        NvmlTemperatureSensors.NVML_TEMPERATURE_GPU,
                        out temp));

                // Create separate NvmlAPI instance
                var nvml = NvmlAPI.Create(NvmlAPIVersion.V6);
                NvmlException.ThrowIfFailed(
                    nvml.UnitGetCount(out uint count));
            }
        }
示例#3
0
 /// <summary>
 /// Constructs a new instance to access the Nvidia Management Library.
 /// </summary>
 /// <param name="api">The NVML API instance to use.</param>
 /// <param name="deviceHandle">The NVML device handle.</param>
 private NvmlDevice(NvmlAPI api, IntPtr deviceHandle)
 {
     API          = api;
     DeviceHandle = deviceHandle;
 }