Ejemplo n.º 1
0
        private void LoadKernels()
        {
            if (_kernelLoader == null)
            {
                _kernelLoader = new KernelLoader <float>(this._context);

                var assembly = Assembly.GetExecutingAssembly();
                using (Stream stream = assembly.GetManifestResourceStream("ConvNetSharp.Volume.GPU.Single.Kernels.log.cu"))
                {
                    _kernelLoader.LoadKernel("Log", stream);
                }

                using (Stream stream = assembly.GetManifestResourceStream("ConvNetSharp.Volume.GPU.Single.Kernels.exp.cu"))
                {
                    _kernelLoader.LoadKernel("Exp", stream);
                }

                using (Stream stream = assembly.GetManifestResourceStream("ConvNetSharp.Volume.GPU.Single.Kernels.div.cu"))
                {
                    _kernelLoader.LoadKernel("Div", stream);
                }

                using (Stream stream = assembly.GetManifestResourceStream("ConvNetSharp.Volume.GPU.Single.Kernels.leakyrelu.cu"))
                {
                    _kernelLoader.LoadKernel("LeakyRelu", stream);
                }

                using (Stream stream = assembly.GetManifestResourceStream("ConvNetSharp.Volume.GPU.Single.Kernels.leakyrelu_gradient.cu"))
                {
                    _kernelLoader.LoadKernel("LeakyReluGradient", stream);
                }
            }
        }
        public static void init(int maxCnt)
        {
            _gpuVelocity = KernelLoader.load_kernel("update_velocities");
            _gpuUpdate   = KernelLoader.load_kernel("update_particles");

            _dt = ISF.properties.dt;

            torus_d = new float[3] {
                ISF.properties.dx, ISF.properties.dy, ISF.properties.dz
            };
            torus_res = new int[3] {
                ISF.properties.resx, ISF.properties.resy, ISF.properties.resz
            };
            torus_size = new int[3] {
                ISF.properties.sizex, ISF.properties.sizey, ISF.properties.sizez
            };

            d_k1x = new CudaDeviceVariable <float>(maxCnt);
            d_k1y = new CudaDeviceVariable <float>(maxCnt);
            d_k1z = new CudaDeviceVariable <float>(maxCnt);

            d_k2x = new CudaDeviceVariable <float>(maxCnt);
            d_k2y = new CudaDeviceVariable <float>(maxCnt);
            d_k2z = new CudaDeviceVariable <float>(maxCnt);

            d_k3x = new CudaDeviceVariable <float>(maxCnt);
            d_k3y = new CudaDeviceVariable <float>(maxCnt);
            d_k3z = new CudaDeviceVariable <float>(maxCnt);

            d_k4x = new CudaDeviceVariable <float>(maxCnt);
            d_k4y = new CudaDeviceVariable <float>(maxCnt);
            d_k4z = new CudaDeviceVariable <float>(maxCnt);
        }
Ejemplo n.º 3
0
        static TensorOpGpu()
        {
            _CudaContext    = new CudaContext(0, true);
            _CudaBlasHandle = new CudaBlas();
            _CudaStream     = new CudaStream();
            _CudnnContext   = new CudaDNNContext();

            _KernelLoader = new KernelLoader();
        }
Ejemplo n.º 4
0
        private void LoadKernels()
        {
            if (_kernelLoader != null)
            {
                return;
            }

            _kernelLoader = new KernelLoader <double>(this._context);

            var assembly = Assembly.GetExecutingAssembly();

            // Retrieve all kernels from resources
            var regex  = new Regex(@"ConvNetSharp\.Volume\.GPU\.Double\.Kernels\.(.*)\.cu", RegexOptions.Compiled);
            var tuples = assembly.GetManifestResourceNames().Where(o => regex.IsMatch(o)).Select(o => new Tuple <string, string>(o, regex.Match(o).Groups[1].Value));

            foreach (var t in tuples)
            {
                using var stream = assembly.GetManifestResourceStream(t.Item1);

                _kernelLoader.LoadKernel(t.Item2, stream);
            }
        }
Ejemplo n.º 5
0
        public static void Init(SpaceProperties properties)
        {
            staggered = KernelLoader.load_kernel("staggered_sharp");
            staggered.BlockDimensions = new dim3(1, 1, 1);
            staggered.GridDimensions  = new dim3(properties.num, 1, 1);

            div = KernelLoader.load_kernel("div");
            div.BlockDimensions = new dim3(1, 1, 1);
            div.GridDimensions  = new dim3(properties.num, 1, 1);

            velocity_one = KernelLoader.load_kernel("velocity_one");
            velocity_one.BlockDimensions = new dim3(1, 1, 1);
            velocity_one.GridDimensions  = new dim3(properties.num, 1, 1);

            normalize = KernelLoader.load_kernel("normalize");
            normalize.BlockDimensions = new dim3(1, 1, 1);
            normalize.GridDimensions  = new dim3(properties.num, 1, 1);

            gauge = KernelLoader.load_kernel("gauge");
            gauge.BlockDimensions = new dim3(1, 1, 1);
            gauge.GridDimensions  = new dim3(properties.num, 1, 1);

            shift = KernelLoader.load_kernel("shift");
            shift.BlockDimensions = new dim3(1, 1, 1);
            shift.GridDimensions  = new dim3(properties.num, 1, 1);

            mul_each = KernelLoader.load_kernel("mul_each");
            mul_each.BlockDimensions = new dim3(1, 1, 1);
            mul_each.GridDimensions  = new dim3(properties.num, 1, 1);

            copy = KernelLoader.load_kernel("copy");
            copy.BlockDimensions = new dim3(1, 1, 1);
            copy.GridDimensions  = new dim3(properties.num, 1, 1);

            fft_norm = KernelLoader.load_kernel("fft_norm");
            fft_norm.BlockDimensions = new dim3(1, 1, 1);
            fft_norm.GridDimensions  = new dim3(properties.num, 1, 1);
        }
Ejemplo n.º 6
0
        private void LoadKernels()
        {
            if (_kernelLoader == null)
            {
                _kernelLoader = new KernelLoader <double>(this._context);

                var assembly = Assembly.GetExecutingAssembly();
                using (Stream stream = assembly.GetManifestResourceStream("ConvNetSharp.Volume.GPU.Double.Kernels.log.cu"))
                {
                    _kernelLoader.LoadKernel("Log", stream);
                }

                using (Stream stream = assembly.GetManifestResourceStream("ConvNetSharp.Volume.GPU.Double.Kernels.exp.cu"))
                {
                    _kernelLoader.LoadKernel("Exp", stream);
                }

                using (Stream stream = assembly.GetManifestResourceStream("ConvNetSharp.Volume.GPU.Double.Kernels.div.cu"))
                {
                    _kernelLoader.LoadKernel("Div", stream);
                }
            }
        }
Ejemplo n.º 7
0
 public new static void init()
 {
     _gpu = KernelLoader.load_kernel("add_particles");
 }