コード例 #1
0
        /// <summary>
        /// Loads the source and initializes the CLProgram
        /// </summary>
        private void Initialize(CLAPI instance)
        {
            int vnum = GetVectorNum(genType);

            string source = TextProcessorAPI.PreprocessSource(filePath, new Dictionary <string, bool>());

            string[] kernelNames = FindKernelNames(source);

            ClProgramHandle = CLAPI.CreateClProgramFromSource(instance, source);


            foreach (string kernelName in kernelNames)
            {
                Kernel k = CLAPI.CreateKernelFromName(ClProgramHandle, kernelName);
                int    kernelNameIndex = source.IndexOf(" " + kernelName + " ", StringComparison.InvariantCulture);
                kernelNameIndex = kernelNameIndex == -1
                    ? source.IndexOf(" " + kernelName + "(", StringComparison.InvariantCulture)
                    : kernelNameIndex;
                KernelParameter[] parameter = KernelParameter.CreateKernelParametersFromKernelCode(source,
                                                                                                   kernelNameIndex,
                                                                                                   source.Substring(kernelNameIndex, source.Length - kernelNameIndex).IndexOf(')') + 1);
                if (k == null)
                {
                    ContainedKernels.Add(kernelName, new CLKernel(instance, null, kernelName, parameter));
                }
                else
                {
                    ContainedKernels.Add(kernelName, new CLKernel(instance, k, kernelName, parameter));
                }
            }
        }
コード例 #2
0
ファイル: CLProgram.cs プロジェクト: ByteChkR/Minor
        /// <summary>
        /// Loads the source and initializes the CLProgram
        /// </summary>
        private void Initialize()
        {
            int vnum = GetVectorNum(_genType);

            string[] lines = TextProcessorAPI.GenericIncludeToSource(".cl", _filePath, _genType,
                                                                     vnum == 0 || vnum == 1 ? "float" : "float" + vnum);
            Dictionary <string, bool> defs = new Dictionary <string, bool> {
                { "V_" + vnum, true }
            };
            string source = TextProcessorAPI.PreprocessSource(lines, _filePath, defs);

            string[] kernelNames = FindKernelNames(source);

            ClProgramHandle = CLAPI.CreateCLProgramFromSource(source);


            foreach (string kernelName in kernelNames)
            {
                Kernel k = CLAPI.CreateKernelFromName(ClProgramHandle, kernelName);
                int    kernelNameIndex = source.IndexOf(" " + kernelName + " ", StringComparison.InvariantCulture);
                kernelNameIndex = kernelNameIndex == -1
                    ? source.IndexOf(" " + kernelName + "(", StringComparison.InvariantCulture)
                    : kernelNameIndex;
                KernelParameter[] parameter = KernelParameter.CreateKernelParametersFromKernelCode(source,
                                                                                                   kernelNameIndex,
                                                                                                   source.Substring(kernelNameIndex, source.Length - kernelNameIndex).IndexOf(')') + 1);
                if (k == null)
                {
                    ContainedKernels.Add(kernelName, new CLKernel(null, kernelName, parameter));
                }
                else
                {
                    ContainedKernels.Add(kernelName, new CLKernel(k, kernelName, parameter));
                }
            }
        }