Пример #1
0
        public CUdevice GetDevice(int ordinal)
        {
            CUdevice device = new CUdevice();

            this.LastError = CUDADriver.cuDeviceGet(ref device, ordinal);
            return(device);
        }
Пример #2
0
        public HuForceDirectedLayout(int steps)
        {
#if !DEBUG
            try
            {
#endif
            CUDADriver.cuInit(0);

            dev = new CUdevice();
            CUDADriver.cuDeviceGet(ref dev, 0);

            ctx = new CUcontext();
            CUDADriver.cuCtxCreate(ref ctx, 0, dev);

            mod = new CUmodule();
            CUDADriver.cuModuleLoad(ref mod, "BarnesHut.cubin");

            prop = new CUDeviceProperties();
            CUDADriver.cuDeviceGetProperties(ref prop, dev);
            int version = 0;
            CUDADriver.cuDriverGetVersion(ref version);

            string caps = "";

            GASS.CUDA.CUDARuntime.cudaRuntimeGetVersion(ref version);


            caps += "\tClock rate        = " + prop.clockRate / 1000000 + " MHz\n";
            caps += "\tMemory size       = " + prop.totalConstantMemory / 1024 + " KB\n";
            caps += "\tThreads per block = " + prop.maxThreadsPerBlock + "\n";
            caps += "\tWarp size         = " + prop.SIMDWidth + "\n";
            caps += "\tCUDA version      = " + version + "\n";

            Logger.AddMessage(LogEntryType.Info, "Successfully initialized CUDA GPU computation\n" + caps);
#if !DEBUG
        }
        catch (Exception ex)
        {
            Logger.AddMessage(LogEntryType.Warning, "CUDA not available, falling back to CPU. Exception was: " + ex.Message);
            CUDAEnabled = false;
        }
#endif
        }