public void LoadKernel(string filepath) { this.Log("Loading File: " + filepath, DebugChannel.Log, 8); string path = Path.GetFullPath(filepath); string source = PPAPI.PreprocessSource(path, null); string[] kernelNames = FindKernelNames(source); foreach (var kernelName in kernelNames) { this.Log("Trying to Load Kernel: " + kernelName, DebugChannel.Log, 8); if (_kernels.ContainsKey(kernelName)) { this.Log("Kernel " + kernelName + " was already cached.", DebugChannel.Log, 7); return; } this.Log("Building Program from source..", DebugChannel.Log, 8); CLProgram p = c.CreateAndBuildProgramFromString(source); int kernelNameIndex = source.IndexOf(" " + kernelName + " "); kernelNameIndex = (kernelNameIndex == -1) ? source.IndexOf(" " + kernelName + "(") : kernelNameIndex; _kernels.Add(kernelName, new CLFilter(kernelName, p.CreateKernel(kernelName), KernelParameter.CreateKernelParametersFromKernelCode(source, kernelNameIndex, source.Substring(kernelNameIndex, source.Length - kernelNameIndex).IndexOf(')') + 1))); } }
public void LoadKernel(string filepath, string kernel) { this.Log("Loading File: " + filepath, DebugChannel.Log, 8); string path = Path.GetFullPath(filepath); this.Log("Trying to Load Kernel:" + kernel, DebugChannel.Log, 8); if (_kernels.ContainsKey(kernel)) { this.Log("Kernel " + kernel + " was already cached.", DebugChannel.Log, 7); return; } this.Log("Building Program from source..", DebugChannel.Log, 8); string source = File.ReadAllText(filepath); CLProgram p = c.CreateAndBuildProgramFromString(source); int kernelNameIndex = source.IndexOf(kernel); _kernels.Add(kernel, new CLFilter(kernel, p.CreateKernel(kernel), KernelParameter.CreateKernelParametersFromKernelCode(source, kernelNameIndex, source.Substring(kernelNameIndex, source.Length - kernelNameIndex).IndexOf(')') + 1))); }