Esempio n. 1
0
        /// <summary>Static Constructor. Builds kernels</summary>
        static SparseLinalg()
        {
            if (CLCalc.CLAcceleration == CLCalc.CLAccelerationType.Unknown)
            {
                try { CLCalc.InitCL(); }
                catch
                {
                }
            }

            if (CLCalc.CLAcceleration == CLCalc.CLAccelerationType.UsingCL)
            {
                //Kernel
                CLLinalgSrc src = new CLLinalgSrc();
                CLCalc.Program.Compile(new string[] { src.srcDotProd, src.srcMatVecMult, src.srcLinConjGrad });
                kernelDotProduct = new CLCalc.Program.Kernel("dotProd");
                kernelSum        = new CLCalc.Program.Kernel("sumDotProd");
                kernelGetDotSum  = new CLCalc.Program.Kernel("GetResp");

                kernelSparseMatrixVecMult = new CLCalc.Program.Kernel("SparseMatrixVecMult");

                //Linear solving
                kernelInitRP      = new CLCalc.Program.Kernel("InitRP");
                kernelMultiplyAdd = new CLCalc.Program.Kernel("MultiplyAdd");
                kernelCopyToTemp  = new CLCalc.Program.Kernel("CopyToTemp");
            }
        }
Esempio n. 2
0
        /// <summary>Static Constructor. Builds kernels</summary>
        static SparseLinalg()
        {
            if (CLCalc.CLAcceleration == CLCalc.CLAccelerationType.Unknown)
            {
                try { CLCalc.InitCL(); }
                catch
                {
                }
            }

            if (CLCalc.CLAcceleration == CLCalc.CLAccelerationType.UsingCL)
            {
                //Kernel
                CLLinalgSrc src = new CLLinalgSrc();
                CLCalc.Program.Compile(new string[] { src.srcDotProd, src.srcMatVecMult, src.srcLinConjGrad });
                kernelDotProduct = new CLCalc.Program.Kernel("dotProd");
                kernelSum = new CLCalc.Program.Kernel("sumDotProd");
                kernelGetDotSum = new CLCalc.Program.Kernel("GetResp");

                kernelSparseMatrixVecMult = new CLCalc.Program.Kernel("SparseMatrixVecMult");

                //Linear solving
                kernelInitRP = new CLCalc.Program.Kernel("InitRP");
                kernelMultiplyAdd = new CLCalc.Program.Kernel("MultiplyAdd");
                kernelCopyToTemp = new CLCalc.Program.Kernel("CopyToTemp");
            }
        }