Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
 public JittedModule(JitResult jitResult, CUmodule handle)
     : this(jitResult.Ptx, handle)
 {
     JitResult = jitResult.AssertNotNull();
 }
Exemplo n.º 3
0
 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);
         }
     });
 }
Exemplo n.º 4
0
 public bool Equals(CUmodule other) { return other.Handle.Equals(Handle); }
Exemplo n.º 5
0
 // 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);
Exemplo n.º 6
0
 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);
         }
     });
 }
Exemplo n.º 7
0
 // http://developer.download.nvidia.com/compute/cuda/3_1/toolkit/docs/online/group__CUMODULE_g35a621d73ee186733f051de672fbe02b.html
 private static extern CUresult nativeModuleUnload(CUmodule mod);
Exemplo n.º 8
0
 // 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);
Exemplo n.º 9
0
 public bool Equals(CUmodule other)
 {
     return(other.Handle.Equals(Handle));
 }