我使用一个名为 CLoo 的 C# 包装器来使用 OpenCL API。我使用的 openCL 平台是 Intel CPU。
当我运行官方的英特尔示例代码(一个 C/C++ 应用程序)然后在 VS2010 IntelOpenCL 插件窗口(工具/Cod builder-OpenCL 调试器)中,我可以看到命令队列、API 调用历史等。所以主机端 API 调试作品。内核调试也有效。
当我对 Cloo 做同样的事情时,我只能调试内核,而不能调试主机端 API。我打开了内核调试检查框(工具/代码生成器-选项/基本设置/启用 OpenCL 内核调试)和主机端 API 调试(工具/代码生成器-选项/API 调试器/启用 OpenCL API 调试器)。
对于我在调用第一个 OpenCL API 函数 (clGetPlatformIDs) 时看到的英特尔 C/C++ 示例,然后我的应用程序打开了一个端口 (56202),VS 英特尔 OpenCL 插件连接到它。我还注意到,然后创建了上下文,然后我的应用程序打开了另一个端口(56203),VS 连接到它。这必须是内核调试端口。
我的问题是,当我使用 Cloo 调用第一个 OpenCL API 调用 (clGetPlatformIDs) 时,为什么它没有像 C/C++ 应用程序那样打开 API 调试器端口。
作为一种解决方法,我发现可以通过使用环境变量来打开日志记录,但它不像 VS 插件那样方便。INTEL_OCL_DBG_LOG=1 INTEL_OCL_DBG_LOG_FILE=c:\temp\debugger.txt