Osx lion Xcode(10.7)--clGetProgramBinaries结果不可读

Osx lion Xcode(10.7)--clGetProgramBinaries结果不可读,osx-lion,opencl,Osx Lion,Opencl,我有一个运行良好的OpenCL内核,但我想看看中间代码。我使用getprograminfo取出二进制文件并将其保存到文本文件中。我试过使用nVidia、AMD、i7和Xeon 在所有这些情况下,二进制文件都是不可读的 我知道在OSX上返回的数据块实际上是一个二进制plist。我找到了使用plutil将其转换为xml的说明,它们很有效 它仍然不可读。。。虽然我已经在网上看到了说明,这是您找到PTX代码的地方(在我的AMD5870的情况下)。存在预期的clBinaryData键,但该键下的数据仍然是

我有一个运行良好的OpenCL内核,但我想看看中间代码。我使用getprograminfo取出二进制文件并将其保存到文本文件中。我试过使用nVidia、AMD、i7和Xeon

在所有这些情况下,二进制文件都是不可读的

我知道在OSX上返回的数据块实际上是一个二进制plist。我找到了使用plutil将其转换为xml的说明,它们很有效

它仍然不可读。。。虽然我已经在网上看到了说明,这是您找到PTX代码的地方(在我的AMD5870的情况下)。存在预期的clBinaryData键,但该键下的数据仍然是一大块内容,而不是文本形式的可读IL指令

我真的很想检查中间语言,以评估我在使用gpu时的低效率。这在Xcode下是不可能的吗?或者,我做错了什么


谢谢你提供的任何信息

如果使用以下环境变量集运行程序,您应该会看到目录中的.IL和.ISA文件

$ GPU_DUMP_DEVICE_KERNEL=3 ./my-program
另一种方法是使用(AMD APP SDK附带的)查看中间文件,即IL和ISA。 (我不确定AMD APP SDK是否可用于MAC)

根据APP SDK文档,还有一个选项,请在主机代码中添加以下内容

putenv("GPU_DUMP_DEVICE_KERNEL=3");
参考资料

  • (这是一个顶级答案,以便我可以进行一些格式化。)

    奥克卢瑟的回答很有帮助,因为它很有启发性,并带来了大量的知识,尽管它并没有解决问题

    我已经验证了所描述的环境变量是否已设置,并且在xcode中运行时,该变量对我的应用程序可用。但是,它没有(在OSX下)在Linux下所具有的非常理想的效果

    但是,我现在知道如何用8种不同的方式中的7种来设置环境变量。我还设置了“tracer”envars来告诉我哪些方法在我的应用程序范围内是有效的。从下面可以看出,添加参数的“editscheme”方法和ocluser建议的“putenv”方法都有效。没有在该范围内设置它的内容:~/.MACOS/environment.plist、特定于应用程序的plist、.profile,并添加一个构建阶段来运行自定义脚本(我在xcode中找到了至少一种其他方法来设置它,但忘记了我称之为tracer的内容,现在找不到它;可能它在另一台机器上……)

    GPU_转储_设备_内核为3

    GPU_DUMP_TRK_ENVPLIST为(空)

    GPU_DUMP_TRK_APPPLIST为(空)

    GPU_DUMP_TRK_DOTPROFILE为(空)

    GPU_DUMP_TRK_运行脚本为(null)

    GPU_DUMP_TRK_SCHARGS为1

    GPU_DUMP_TRK_PUTENV为1

    。。。所以,不,这并不能真正回答这个问题,但会进一步扩展。对不起,如果你的表现不好。谢谢


    没有放弃,如果我找到了问题解决者,我会提供一个实际的问题解决者。

    好的,非常感谢;至少在Linux上,它看起来应该可以工作,但我还没有让它在OS X上工作。至少我现在知道如何以3种不同的方式设置env变量——putenv、setenv,以及通过在Xcode中编辑方案以包含变量名和值。现在还没有。如果我能想出如何将您的第一个示例放入unixshell中,我将尝试一下,尽管我认为“editscheme”就是这么做的。如果没有苹果校园内的内部工具,在OSX下可能不可能实现?无法想象他们的开发者没有这种能力。。。。。。。看起来我还可以在~/.MacOSX/environment.plist中设置一个环境变量,然后注销并再次登录,每个人都可以永远得到它。我回家后会试试(现在我只有带nV mobile GPU的笔记本电脑),如果不行的话,我可能认为env var根本不会帮我这么做……谢谢你,ocluser!;你让我参加了一场有趣的学习狂欢,尽管它似乎不适合osx。请参阅我自己的答案,了解更多您不想阅读的信息。。。。