2

我不明白为什么会这样断言。我相信我有正确的代码序列来设置脚本组

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 和内核是否被定义为 root 之间存在某种冲突。当我有机会时,我会尝试重现这个问题。目前,我已经解决了上面提到的这个问题。

4

1 回答 1

0

我在源代码中没有看到任何明显的问题。您是否有机会发布更多关于 K1 和 K2 是什么的背景信息?

您看到的断言确实表明存在问题。

于 2013-09-19T00:13:21.687 回答