Xcode 8とiOS10に移行して以来、私のメタルベースのアプリケーションはまったく動作しません。打ち上げに私はエラーを取得する:これが原因正常に作成されていないMTLComputePipelineState
にクラッシュし、MTLDevice
機能makeComputePipelineState(function:)
を呼び出すときにエラーを投げる前に、コンソールに2〜3回表示されますメタル関数はXcode 8でコンパイルできません
を「コンパイラはXPC_ERROR_CONNECTION_INTERRUPTEDで失敗しました」。私がプロジェクトに行った唯一の変更は、Swift 3.0にアップデートすることですが、コンソールはコンパイルエラーを暗示しているようです。クラッシュのために、正しくコンパイルされないメタルコードがあると想定しています。
ご迷惑をおかけして申し訳ございませんが、これは時期尚早に老化しています。
UPDATE:パーマも同様である
static constant int permMod12 [512] = {7,4,5,7...}
:として
int gi1 = permMod12[ii+i1+perm[jj+j1+perm[kk+k1]]];
permMod12は静的定数配列が宣言されている:私は.metal
ファイルでトラブルを起こしラインを設置しました
静的で定数:
static constant int perm [512] = {151,160...}
個の
変数ii
、i1
、jj
、j1
、kk
とは同じカーネルで計算され、すべての整数です。
カーネルがかなり大きいので、linkをGitHubの場所に投稿します。問題を引き起こしているのはsimplex3D
とsimplex4D
という関数です。これらは非常に似ているので、それらのうちの1つにのみ焦点を当てます。カーボンコピーですが、4Dには変数の別のストレッチがあります(ll
、l1
、l
など)。
問題は、変数を単純なリテラルに変更したときにエラーがないように、計算された変数を使用してこれらの配列を検索しているように見えます。
エラーを発生させるには、カーネルを実行する必要があります。
この新しい情報をお寄せいただきありがとうございます。
これはほぼ確実にコンパイラのバグです。 MTLCompilerServiceのクラッシュについては、Xcodeのデバイスログをチェックして、提供可能な他の多くの情報を含むレーダーにログを添付してください。 – warrenm
チェック後、MTLCompilerServiceにクラッシュはありません。 –
他の関数呼び出しがないカーネルを実行しようとするとうまく動作します。カーネル内から別の関数を呼び出そうとすると、エラーがポップアップします。今は私のPCではありませんが、私がいるときには例をアップロードします –