Пример #1
0
        /// <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]);
                }
            }
        }
Пример #2
0
        /// <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]);
                }
            }
        }