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
        }
示例#2
0
 public static extern CUResult cuD3D9CtxCreate(ref CUcontext pCtx, ref CUdevice pCuDevice, CUCtxFlags Flags, IntPtr pDxDevice);
示例#3
0
 public static extern CUResult cuD3D10CtxCreate(ref CUcontext pCtx, ref CUdevice pCuDevice, uint Flags, IntPtr pDxDevice);
示例#4
0
 public static extern CUResult cuCtxPopCurrent_v2(ref CUcontext pctx);
示例#5
0
 public static extern CUResult cuCtxPushCurrent_v2(CUcontext ctx);
示例#6
0
 public void StopFloating(CUcontext pctx)
 {
     this.LastError = CUDADriver.cuCtxPushCurrent(pctx);
 }
示例#7
0
 public static extern CUResult cuCtxDisablePeerAccess(CUcontext peerContext);
示例#8
0
 public static extern CUResult cuCtxDestroy_v2(CUcontext ctx);
示例#9
0
 public static extern CUResult cuCtxDetach(CUcontext ctx);
示例#10
0
 public static extern CUResult cuCtxAttach(ref CUcontext pctx, uint flags);
示例#11
0
 public static extern CUResult cuCtxCreate(ref CUcontext pctx, uint flags, CUdevice dev);
示例#12
0
 public static extern CUResult cuPointerGetAttribute(ref CUcontext ctx, CUPointerAttribute attribute, CUdeviceptr ptr);
示例#13
0
 public static extern CUResult cuMemcpyPeerAsync(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, CUcontext srcContext, SizeT ByteCount, CUstream hStream);
示例#14
0
 public static extern CUResult cuMemcpyPeer (CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, CUcontext srcContext, SizeT ByteCount);
示例#15
0
 public CUDAContextSynchronizer(CUcontext ctx)
 {
     this.ctx = ctx;
 }
示例#16
0
 public static extern CUResult cuCtxGetCurrent(ref CUcontext pctx);
示例#17
0
        //private CUcontext _pctx;

        public CUcontext MakeFloating()
        {
            CUcontext pctx = new CUcontext();
            this.LastError = CUDADriver.cuCtxPopCurrent(ref pctx);
            return pctx;
        }
示例#18
0
 public static extern CUResult cuCtxSetCurrent(CUcontext pctx);
示例#19
0
 public static extern CUResult cuGLCtxCreate(ref CUcontext pCtx, uint Flags, CUdevice device);
示例#20
0
 public static extern CUResult cuCtxEnablePeerAccess(CUcontext peerContext, uint Flags);