注目★★★★★Lobsters
Futhark、ついに再帰関数の完全サポートを実装 GPU上での動作課題を解決
30秒で把握
- 1Futhark が9年ぶりに再帰関数をサポート・GPU上での動作課題をフラットニング技術で解決
- 2GPU スレッドのスタック制約と動的メモリ割当の困難を、CPU 側での制御フロー実行で回避
- 3型検査器刷新により単一型・寸法多態再帰に対応・再帰的分割統治アルゴリズムの直観的記述が可能に
要約
Futhark は関数型言語としては異例にも再帰関数をサポートしていなかったが、今回その実装が進展した。再帰がGPUカーネル上で難しい理由は、スレッドのスタック制約とメモリ事前割当の困難さにあり、言語全体で統一した制限ルールを定めるのが困難だったためだ。開発チームはフラットニング技術を用いて、再帰的な制御フローをCPU側で実行し、GPU側は並列演算に専念させる方式を採用した。
あなたへの影響
Futhark のような並列化専用言語では GPU上での再帰実装が困難だが、フラットニングで制御フローをCPU側へ逃すアプローチは、他の並列データ処理言語の設計にも参考になり得る。
推奨:再帰的分割統治アルゴリズムの並列化を試みているなら、この実装方式の詳細を確認する価値がある。