public JittedModule(String ptx, CUmodule handle) { CudaDriver.Ensure(); Ptx = ptx.AssertNotNull(); Handle = handle.AssertThat(h => h.IsNotNull); var match = Regex.Match(Ptx, @"\.entry\s*(?<entrypoint>\w*?)\s*\("); Functions = match.Unfoldi(m => m.NextMatch(), m => m.Success).Select(m => { var name = match.Result("${entrypoint}"); var hfunc = nvcuda.cuModuleGetFunction(this, name); return new JittedFunction(hfunc, name); }).ToReadOnly(); }
public JittedModule(JitResult jitResult, CUmodule handle) : this(jitResult.Ptx, handle) { JitResult = jitResult.AssertNotNull(); }
public static CUfunction cuModuleGetFunction(CUmodule hmod, String name) { return Wrap(() => { try { CUfunction hfunc; var error = nativeModuleGetFunction(out hfunc, hmod, name); if (error != CUresult.CUDA_SUCCESS) throw new CudaException(error); return hfunc; } catch (CudaException) { throw; } catch (DllNotFoundException dnfe) { throw new CudaException(CudaError.NoDriver, dnfe); } catch (Exception e) { throw new CudaException(CudaError.Unknown, e); } }); }
public bool Equals(CUmodule other) { return other.Handle.Equals(Handle); }
// http://developer.download.nvidia.com/compute/cuda/3_1/toolkit/docs/online/group__CUMODULE_ge18a9f0d853ae3a96a38416a0671606b.html private static extern CUresult nativeModuleGetFunction(out CUfunction hfunc, CUmodule hmod, String name);
public static void cuModuleUnload(CUmodule mod) { Wrap(() => { try { var error = nativeModuleUnload(mod); if (error != CUresult.CUDA_SUCCESS) throw new CudaException(error); } catch (CudaException) { throw; } catch (DllNotFoundException dnfe) { throw new CudaException(CudaError.NoDriver, dnfe); } catch (Exception e) { throw new CudaException(CudaError.Unknown, e); } }); }
// http://developer.download.nvidia.com/compute/cuda/3_1/toolkit/docs/online/group__CUMODULE_g35a621d73ee186733f051de672fbe02b.html private static extern CUresult nativeModuleUnload(CUmodule mod);
// http://developer.download.nvidia.com/compute/cuda/3_1/toolkit/docs/online/group__CUMODULE_gbfbf77eb2a307af8aa81376ecc909bd3.html private static extern CUresult nativeModuleLoadDataEx(out CUmodule module, IntPtr image, uint numOptions, CUjit_option[] options, IntPtr optionValues);
public bool Equals(CUmodule other) { return(other.Handle.Equals(Handle)); }