/// <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"); } }