我试图开发一个简单的应用程序,用于使用iOS Metal Framework在GPU上解决数独问题。

我正在按照此博客文章中的说明进行操作:

http://memkite.com/blog/2014/12/15/data-parallel-programming-with-metal-and-swift-for-iphoneipad-gpu/

我在这里将代码版本化:

https://github.com/mateuszbuda/Sudoku

(在编写此问题时,HEAD是commit c3e06e0)

而且我在打电话时遇到错误
newComputePipelineStateWithFunction

那是在ViewController中设置MTLDevice时(第95行):
https://github.com/mateuszbuda/Sudoku/blob/c3e06e0e1edc724eea20962f32e49f0df8143b7d/Sudoku/ViewController.swift

我得到的错误是:
Error Domain=AGXMetal Code=1 "Compiler encountered an internal error"

我在装有iOS 8.1.3的iPhone 6 Plus上运行它

有人知道什么会导致我得到错误吗?

最佳答案

您正在经历《 Metal 》中未完成的事情之一。错误说“内部”的原因是因为这是由编译器引起的编译器错误。不是你。试试这个:

  • 将所有无法编译的代码复制到“.metal”文件中。
  • 删除.metal文件(不仅仅是引用)。
  • 删除用户/yourUser/Library/Developer/Xcode/DerivedData中位于“DerivedData”文件夹中的所有内容
  • 创建一个新的.metal文件,并将旧代码粘贴到该新的Metal文件中。

  • 现在构建并运行,您应该一切顺利。
    任何发现此错误的人都要确保将某种错误报告发送给Apple,以便他们可以正确调试它并在下一版Xcode中对其进行修复。

    关于iOS Metal : Unable to create compute pipeline state with function,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29229270/

    10-13 02:37