我目前正在努力实施Karras(2012)的并行BVH建设。
算法并行创建每个节点并计算其子节点。 (这是内核)。内核将节点的子节点及其子节点写入父节点引用。
我的内核代码适用于完全随机的场景,最大可达41个三角形。如果我走得更高,在某些情况下,除了父值之外,单个(有时是2或3个)节点没有写入任何值。
我已经仔细检查了groupSizes,并确保内核只运行适量的项目。
有没有人知道这里可能出现什么问题?是否有可能看到一个线程是否死亡/被杀?
注意:如果需要,我会发布一些代码,但它是从F#到OpenCL编译器生成的代码。