Objective c AMDRadeonX6000MTLDriver的用途是什么?

Objective c AMDRadeonX6000MTLDriver的用途是什么?,objective-c,macos,metal,Objective C,Macos,Metal,我以前问过,但我觉得这已经足够不同了,足以证明它有自己的思路 出于好奇,我试图了解金属内核和API调用是如何映射到我的MacBookPro的AMD Radeon Pro 5500M的。我编写了一个简单的Metal程序并在lldb下运行,看到它引入了很多动态库,但其中一个特别吸引我: 它在我的笔记本电脑上的完整路径是/System/Library/Extensions/AMDRadeonX6000MTLDriver.bundle/Contents/MacOS/AMDRadeonX6000MTLD

我以前问过,但我觉得这已经足够不同了,足以证明它有自己的思路

出于好奇,我试图了解金属内核和API调用是如何映射到我的MacBookPro的AMD Radeon Pro 5500M的。我编写了一个简单的Metal程序并在lldb下运行,看到它引入了很多动态库,但其中一个特别吸引我:

  • 它在我的笔记本电脑上的完整路径是
    /System/Library/Extensions/AMDRadeonX6000MTLDriver.bundle/Contents/MacOS/AMDRadeonX6000MTLDriver
  • 文件AMDRadeonX6000MTLDriver
    表示它是一个“Mach-O 64位动态链接共享库x86_64”
  • 在我的可执行文件上,
    otool-L
    没有将其显示为链接的动态库,而是在执行时显示为“延迟加载”
  • nm
    表示它包含来自AMD开源ROCr运行时的符号超集,如
    HSA::HSA_init()
    ,尽管我还并没有找到我的程序实际调用的符号超集
  • 它还包含一些Objective-C/Objective-C++符号,这些符号可能对应于“低级”GPU编程操作,例如
    amdmtlppMemMgraloc(id,unsigned int,unsigned int)
    ,它可能在GPU上进行分配
从这一点上,在我看来,苹果公司已经分叉了ROCr运行时来提供低级别的金属支持。然而,我还没能把我自己的程序和它联系起来来验证这个假设。这个文件是什么?为什么在执行开始时不立即加载它?它与我系统上的其他动态库有什么“不同”吗