この主張がスローされる理由がわかりません。スクリプトグループを設定するための正しいコード シーケンスがあると思います
ScriptGroup.Builder sBuilder = new ScriptGroup.Builder(mRS);
sBuilder.addKernel(K1.getKernelID_root());
sBuilder.addKernel(K2.getKernelID_root());
sBuilder.addConnection(inAlloc.getType(),
K1.getKernelID_root(),
K2.getKernelID_root());
ScriptGroup sGroup = sBuilder.create();
sGroup.setInput(K1.getKernelID_root(), inAlloc);
sGroup.setOutput(k2.getKernelID_root(), outAlloc);
sGroup.execute();
K1 が実行されることがわかったので質問しますが、K2 はまったく実行されません。代わりに、このアサーションがスローされます。このアサーションは、この動作と関係がありますか?
@jason属性((kernel))でカーネルを修飾することでこの問題を解決し、スクリプトグループの実行が正しくトリガーされます。これによりアサーションが回避され、両方のカーネルが期待どおりに実行されていることがはっきりとわかります。ただし、このアサーションが発生したときのシナリオについて、もう少し詳しく説明します。以前のカーネルの定義はvoid root(short3 *out, uint32_t out_x, uint32_t out_y)
. そのため、カーネルがそのように定義された (つまり、ルートとして定義された) 場合、アサーションがスローされたように見えます。ScriptGroup.SetInput と、カーネルがルートとして定義されている場合との間に何らかの衝突があるようです。機会があれば、この問題を再現してみます。今のところ、上記のようにこの問題を解決しました。