・MITの研究者らは、Linuxスーパーコンピュータ上で16,384のWindowsアプリケーションを5分以内に同時に実行するモデルを開発しました。
・これは、リンカーン・ラボのLLMapReduce技術とWine Windows互換性レイヤーを用いて実現されました。
ムーアの法則のペースが低下しているため、アプリケーションの性能を向上させるためには並列処理を使用することが必要となっています。ニューラルネットワークや物理シミュレーション、データ解析アプリケーションはかなりの速度で進化しており、目標とするパフォーマンスを達成するために並列処理の力を利用しています。
このようなデータ量の多いアプリケーションを実行するには、並列処理の実装経験が豊富にあるMicrosoft WindowsのようなOSをベースにしたソフトウェアがいくつか必要になります。
しかし、世界トップ500のスーパーコンピュータはLinuxで動作しており、何千ものコアを使ったインタラクティブなアプリケーションを数秒で実行することができます。一般的に、Linusコンピュータ上でWindowsプログラムを実行する際は仮想マシン(VM)が使用されますが、同時にアプリケーションに多くのオーバーヘッドが課されます。
スーパーコンピュータ上で複数のVMを実行すると、仮想マシンごとに数秒、場合によっては数分かかることもあります。これを既存のスーパーコンピュータに搭載されている数千コアに拡張すると効率や性能の問題が生じてしまうため、大量のWindowsアプリケーションをスーパーコンピュータ上で同時に実行することは困難になります。
今回、マサチューセッツ工科大学(MIT)の研究チームは、最新のスーパーコンピュータに搭載されている数千のプロセッサ上で、Windowsアプリケーションを素早く起動して実行する新しい技術を開発しました。具体的には、16,000個のWindowsアプリケーションを5分以内に起動してみせたのです。各アプリケーションは1つのコアで処理されています。
仕組み
Linuxスーパーコンピュータ上でWindowsアプリケーションを迅速に起動するために、研究者らはリンカーン・ラボのLLMapReduce(マルチレベル・マップ・リデュース)技術とWine Windows互換性レイヤーを使用しました。ハイパフォーマンス・コンピューティングを実現するために、マルチレベル・スケジューリングによって1回のジョブ起動で多数のデータセットが処理するよう解析コードがわずかに変更されます。
MIT SuperCloudソフトウェアスタックには、LLMapReduceへアクセスして何千ものタスクをクラスター上で効率的に実行できる、使いやすいインターフェイスが用意されています。これにより、複雑な並列スケジューリングの削減や依存関係の解決、1行のコードへのタスクの投入ジョブの圧縮などがなされると同時に、各タスクのレイテンシーが最小化されてタスクのパフォーマンスが向上します。
特定の言語をベースにしていないLLMapReduceはどのような実行ファイルでも動くため、多数のWineインスタンスを同時に起動するのに適しています。
研究者らは、リソースの素早い特定から始まり、リソースのタスクへの割り当て、割り当てられたリソースでのタスク実行のスケジューリング、タスクの開始、実行中のタスクの監視、タスク終了時におけるエピログのクリーンアップまでを行うのに、Slurm Workload Managerというオープンソースのジョブスケジューラーを使用しました。
結果
研究者らは、648個の計算ノードの各ノードに64個以上のXeon Phiプロセッサコアを搭載させた、合計41,472コアを有するスーパーコンピュータにシステムを実装しました。1,2,4,8…256のノードで1つのWindowインスタンスを実行した後、256個の各ノードで2,4,8…64のインスタンスを実行し、合計16,384のインスタンスを同時に実行したのです。
これらのインスタンスが全て5分ほどで実行されたことから、スーパーコンピュータ上でさまざまなWindowsアプリケーションを実行することが可能になったとわかります。研究者らは今後、より多くのプロセッサでより多様なプログラムを実行できるよう、この機能を拡張していく予定です。