5

我试图制作一个简单的应用程序,用于使用 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 是提交 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 上运行它

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

4

2 回答 2

2

您正在体验金属中未完成的事情之一。错误说“内部”的原因是因为这是编译器错误,由编译器引起。不是你。试试这个:

  1. 复制“.metal”文件中所有不可编译的代码。
  2. 删除 .metal 文件(不仅仅是参考)。
  3. 删除位于 users/yourUser/Library/Developer/Xcode/DerivedData 的“DerivedData”文件夹的所有内容
  4. 创建一个新的 .metal 文件并将旧代码粘贴到这个新的金属文件中。

现在构建并运行,你应该很高兴。任何发现此错误的人确保向 Apple 发送某种错误报告,以便他们可以正确调试它并在 Xcode 的下一个版本中修复它。

于 2015-10-12T00:05:08.420 回答
0

对于任何有同样问题的人,我已经弄清楚了。

这只是意味着内核函数有问题。即使您在 Xcode 中看不到任何错误,它也很可能无法编译。

于 2015-03-24T16:12:44.907 回答