cuInit() приватный Метод

private cuInit ( CUInitializationFlags Flags ) : CUResult
Flags CUInitializationFlags
Результат CUResult
Пример #1
0
        /// <summary>
        /// Create a new instace of managed Cuda. Retains the primary cuda context of device with ID deviceId.
        /// Using <see cref="CUCtxFlags.SchedAuto"/>
        /// </summary>
        /// <param name="deviceId">DeviceID</param>
        public PrimaryContext(int deviceId)
            : base(true, deviceId)
        {
            CUResult res;
            int      deviceCount = 0;

            res = DriverAPINativeMethods.DeviceManagement.cuDeviceGetCount(ref deviceCount);
            Debug.Write("");            //Line(String.Format("{0:G}, {1}: {2}", DateTime.Now, "cuDeviceGetCount", res));

            if (res == CUResult.ErrorNotInitialized)
            {
                res = DriverAPINativeMethods.cuInit(CUInitializationFlags.None);
                Debug.Write("");                //Line(String.Format("{0:G}, {1}: {2}", DateTime.Now, "cuInit", res));
                if (res != CUResult.Success)
                {
                    throw new CudaException(res);
                }

                res = DriverAPINativeMethods.DeviceManagement.cuDeviceGetCount(ref deviceCount);
                Debug.Write("");                //Line(String.Format("{0:G}, {1}: {2}", DateTime.Now, "cuDeviceGetCount", res));
                if (res != CUResult.Success)
                {
                    throw new CudaException(res);
                }
            }
            else if (res != CUResult.Success)
            {
                throw new CudaException(res);
            }

            if (deviceCount == 0)
            {
                throw new CudaException(CUResult.ErrorNoDevice, "Cuda initialization error: There is no device supporting CUDA", null);
            }

            _deviceID = deviceId;

            res = DriverAPINativeMethods.DeviceManagement.cuDeviceGet(ref _device, deviceId);
            Debug.Write("");            //Line(String.Format("{0:G}, {1}: {2}", DateTime.Now, "cuDeviceGet", res));
            if (res != CUResult.Success)
            {
                throw new CudaException(res);
            }



            res = DriverAPINativeMethods.ContextManagement.cuDevicePrimaryCtxRetain(ref _context, _device);
            Debug.Write("");            //Line(String.Format("{0:G}, {1}: {2}", DateTime.Now, "cuDevicePrimaryCtxRetain", res));
            if (res != CUResult.Success)
            {
                throw new CudaException(res);
            }
        }