sigplanブログにMPLの記事が投稿されていた

並列MLであるMPLについての記事がsigplanのブログに投稿されていました> Provably Space-Efficient Parallel Functional Programming | SIGPLAN Blog
面白いし論文より分かり易いので読みましょう。


MPLはSMLに並列計算のための機能を追加した並列MLの一つです。Parallel for関数*1を使うとruntimeがスケジューリングします。
MLtonをforkして開発されており、シーケンシャルなプログラムについてはMLtonと同じように使うことが出来るので使いましょう。
以前このブログでも紹介しました > 並列ML: MaPLe v0.2 がリリースされていた - ::Eldesh a b = LEFT a | RIGHT b ちょうど1年前ですね(POPL2021の論文を読んだ時期)。


sigplanの記事はとても分かり易いので改めて紹介することは特に無いんですが一応まとめておくと、ポイントとしては以下二つで:

  • (dis)entanglement というプログラムとヒープについての並列化出来るフラグメントについて(大抵簡単に)成り立つ性質を提案
  • それを使ったヒープのCPU割り当てをスレッドスケジューラと統合(GCとも統合?)
  • 学部生でも並列アルゴリズム記述するのに使えたよ(eldesh注: CMUの学生である)

です。


気になる点として、(dis)entanglementであることを機械的に保証or検査する手段が無いというのが有ったんですが、
直近のコミットには CONTROL_FLAGS.detectEntanglement というのが含まれており、とりあえず動的な検査が可能になりそうです。


リポジトリwatchしている感じでは、わずかずつですが基幹的な部分にコミットがあるので Sam Westrick 先生の次回作に期待です。

*1:ForkJoin.parfor