八分木に詰め込まれる Stanford Bunny
一つのforest-of-octrees gridから各levelのsolid voxelizationを取り出した例。出典: K. Jaber, E. E. Essel, P. E. Sullivan, “GPU-native Embedding of Complex Geometries in Adaptive Octree Grids Applied to the Lattice Boltzmann Method”, Figure 23, Computer Physics Communications 324, 110155 (2026).
今回のStanford bunny
今回のStanford bunnyは、複雑な三角形メッシュをGPU上だけでadaptive Cartesian gridへ埋め込み、solid voxelizationと境界近傍refinementを行えるかを調べる性能評価に使われています。
入力は112,394三角形です。著者らはStanford 3D Scanning Repository由来のモデルとして扱っていますが、実際の入力にはWikimedia Commonsから取得したbinary STL variantを使用し、Blenderでunit cubeへrescaleしています。
Figure 23では同じforest-of-octrees gridから各levelのvoxelizationを取り出しています。粗いlevelではかなりブロック状ですが、refinementにより耳や脚の輪郭が細かくなります。今回はGPUの中で大小の箱へ几帳面に仕分けされています。
今回の扱い:三角形メッシュをray castingでsolid voxel化され、表面近傍だけoctree refinementされる
状態:その他(階層Cartesian gridへ変換)
論文の内容
GPU-nativeなAMR構築
GPU CFDでは時間積分は並列化しやすい一方、mesh refinementやtree管理をCPUで行うframeworkも多く、dynamic AMRではCPU–GPU間metadata transferがbottleneckになります。
この研究はgeometry embeddingを含むmesh constructionをGPU上で完結させます。実装はC++ / CUDAです。
Forest-of-octrees
計算領域をblock-based forest-of-octreesで表現し、3次元では各blockに64 cellを持ちます。必要な場所だけ8 childへ分割し、隣接level差を1以内にする2:1 balanceを維持します。
Hierarchical spatial binning
全cellから全triangleへrayを飛ばす代わりに、各grid levelへuniformなspatial binを作り、重なるtriangleだけを登録します。
さらにcoarse levelでは不要なtriangleをfilteringし、stream compactionで後段の処理量を減らします。大規模benchmarkではcoarse levelで最大約90%のfaceが除外されています。
Voxelizationとflag propagation
surface近傍だけray castingでinside / outsideを判定し、残りはcell-block内とneighbor blockへのflag propagationで埋めます。
これによりsolid内部の全cellで高価なtriangle intersectionを行う必要がなくなります。
CFD boundary情報
単なるoccupancyだけでなく、boundary cellから実際のtriangle surfaceまでのlink-lengthを計算してflat lookup tableへ保持します。
この値をInterpolated Bounce-Backへ利用することで、Cartesian gridのstaircase boundaryより実surface位置を反映したLBM boundary conditionを構成できます。
GPU benchmark
GTX 970M、RTX 4070 Mobile、A100、H100で評価します。各simulationは100回実行し95% confidence intervalを算出します。
約11万triangleのL5条件では、H100でrefinement/balancing 8.18 ms、spatial binning 8.53 ms、voxelization 13.02 ms、合計29.73 ± 0.05 msです。GTX 970Mでは262.07 ± 0.57 msです。
別の700万triangle超のgeometryでもH100で27.49 msで、元triangle数がそのままvoxelization時間へ比例しないことが示されています。
数値精度と制約
高解像度ではfloating-point round-offにより一部ray castがtriangleを見逃し、その誤分類がflag propagationでspike artifactへ広がる場合があります。
CFD accuracy自体は円柱、角柱、球など単純形状で別途検証しています。complex geometryは主にembedding・AMR construction・GPU performanceのbenchmarkです。
現在はstatic geometryかつsingle GPUです。moving geometry、multi-GPU、exact arithmetic、spatially/temporally varying boundary conditionsが今後の課題です。
論文情報
GPU-native Embedding of Complex Geometries in Adaptive Octree Grids Applied to the Lattice Boltzmann Method
Khodr Jaber, Ebenezer E. Essel, Pierre E. Sullivan
- arXiv: 2512.01251
- Journal: Computer Physics Communications 324, 110155
- DOI: https://doi.org/10.1016/j.cpc.2026.110155
- 分野: GPU / Adaptive Mesh Refinement / Voxelization / LBM
- 使用モデル: Stanford bunny
- triangle数: 112,394
- 使用箇所: Section 4.1、4.2、Tables 1・3・4・7、Figures 21・23
- benchmark: BunnyL5 / BunnyL7、各100 runs
- H100 / L5 total: 29.73 ± 0.05 ms
- GTX 970M / L5 total: 262.07 ± 0.57 ms
- 用途: GPU-native geometry embedding、solid voxelization、octree construction評価