/// <summary>Compiles code and initializes kernel for this svm stance</summary> private void CLSVMInit() { if (CLResource == null) { CLResource = new int[0]; } lock (CLResource) { if (CLCalc.CLAcceleration == CLCalc.CLAccelerationType.Unknown) { CLCalc.InitCL(); } if (CLCalc.CLAcceleration == CLCalc.CLAccelerationType.UsingCL) { if (kernelComputeKernelRBF == null) { CLSVMSrc s = new CLSVMSrc(); CLCalc.Program.Compile(new string[] { s.srcKernels, s.srcFindMaxMinErr, s.srcMultClass }); //Kernel computation kernelComputeKernelRBF = new CLCalc.Program.Kernel("ComputeKernelRBF"); kernelMaxErr = new CLCalc.Program.Kernel("maxErr"); kernelComputeMax = new CLCalc.Program.Kernel("computeMax"); kernelMinErr = new CLCalc.Program.Kernel("minErr"); kernelComputeMin = new CLCalc.Program.Kernel("computeMin"); kernelGetResp = new CLCalc.Program.Kernel("getResp"); //Update error kernelUpdateErr = new CLCalc.Program.Kernel("UpdateErr"); //Multiple classification kernelComputeMultiKernelRBF = new CLCalc.Program.Kernel("ComputeMultiKernelRBF"); kernelSumKernels = new CLCalc.Program.Kernel("SumKernels"); } //Memory obbjects //Find max/min CLErrLen = new CLCalc.Program.Variable(new int[1]); HostResp = new int[1]; CLResp = new CLCalc.Program.Variable(HostResp); CLMaxMinErrs = new CLCalc.Program.Variable(new float[MAXMINWORKSIZE]); CLMaxMinInds = new CLCalc.Program.Variable(new int[MAXMINWORKSIZE]); //Update error CLUpdtErrParams = new CLCalc.Program.Variable(new float[3]); } } }
/// <summary>Compiles code and initializes kernel for this svm stance</summary> private void CLSVMInit() { if (CLResource == null) CLResource = new int[0]; lock (CLResource) { if (CLCalc.CLAcceleration == CLCalc.CLAccelerationType.Unknown) CLCalc.InitCL(); if (CLCalc.CLAcceleration == CLCalc.CLAccelerationType.UsingCL) { if (kernelComputeKernelRBF == null) { CLSVMSrc s = new CLSVMSrc(); CLCalc.Program.Compile(new string[] { s.srcKernels, s.srcFindMaxMinErr, s.srcMultClass }); //Kernel computation kernelComputeKernelRBF = new CLCalc.Program.Kernel("ComputeKernelRBF"); kernelMaxErr = new CLCalc.Program.Kernel("maxErr"); kernelComputeMax = new CLCalc.Program.Kernel("computeMax"); kernelMinErr = new CLCalc.Program.Kernel("minErr"); kernelComputeMin = new CLCalc.Program.Kernel("computeMin"); kernelGetResp = new CLCalc.Program.Kernel("getResp"); //Update error kernelUpdateErr = new CLCalc.Program.Kernel("UpdateErr"); //Multiple classification kernelComputeMultiKernelRBF = new CLCalc.Program.Kernel("ComputeMultiKernelRBF"); kernelSumKernels=new CLCalc.Program.Kernel("SumKernels"); } //Memory obbjects //Find max/min CLErrLen = new CLCalc.Program.Variable(new int[1]); HostResp = new int[1]; CLResp = new CLCalc.Program.Variable(HostResp); CLMaxMinErrs = new CLCalc.Program.Variable(new float[MAXMINWORKSIZE]); CLMaxMinInds = new CLCalc.Program.Variable(new int[MAXMINWORKSIZE]); //Update error CLUpdtErrParams = new CLCalc.Program.Variable(new float[3]); } } }