計算ノード Arm の Box64 活用
ヒトゲノム解析センターでは、ARM64 アーキテクチャの CPU を搭載するサーバとして計算ノード Arm を導入しています。計算ノード Arm は、SHIROKANE の主要な計算ノードである計算ノード Thin よりも 1 ノードあたりのコア数が多いというメリットがある一方、利用可能なソフトウェア数は計算ノード Thin に劣ります。今回は計算ノード Arm の利用環境を計算ノード Thin に近づけることを目的に、Box64 を利用して計算ノード Arm で利用可能なソフトウェア数を増やす取り組みを行いました。
Box64
Box64 とは、主に ARM64 システム上で x86_64 バイナリを実行するためのエミュレータです。x86_64 命令を ARM64 命令へ変換する機能や、ARM64 のライブラリを x86_64 のライブラリに見せるラッパー機能を持ち、x86_64 バイナリを ARM64 システム上で動作させることが可能です。Box64 を用いることで、これまで計算ノード Thin でコンパイルしたソフトウェアをそのまま計算ノード Arm で実行できる可能性があります。
今回の取り組み
Box 64 を用い、x86_64 アーキテクチャでコンパイルしたソフトウェアが計算ノード Arm で動作するか、確かめました。計算ノード Thin で利用でき、計算ノード Arm では利用できないソフトウェアは、2024 年 7 月時点で 30 点でした。計算ノード Thin 上でコンパイルした左記 30 点のソフトウェア (x86_64 バイナリ) を、Box64 をインストールした計算ノード Arm 上で実行させ、動作確認しました。
また、Box64 はエミュレータのため Arm バイナリを実行した際と比較して処理性能が劣ることが予想されました。今回の取り組みでは Arm バイナリの UnixBench 実行と、Box64 を利用した x86_64 バイナリの UnixBench 実行の処理性能を比較しました。実行環境には Shirokane7 の 計算ノード Arm を用い、CPU 1 コアのみを使用しました。
取り組みの結果
box64 を利用した x86_64 バイナリの動作確認
今回の取り組みでは、上述した 30 点の x86_64 バイナリのうち、3 点が計算ノード Arm 上で動作しました。動作したソフトウェアを 表 1. に示します。
なお、取り組みの過程で計算ノード Arm 上でコンパイルし利用できることが判明したソフトウェアが新たに 6 点ありました。本取り組みにより Shirokane7 の稼働開始以降、計算ノード Arm で利用可能となったソフトウェアは 9 点増加しました。
ソフトウェア名 | express | lobstr | raxml |
Arm バイナリと x86_64 バイナリの処理性能の比較
Arm バイナリの UnixBench と、x86_64 バイナリの UnixBench を Box64 を用いて実行した際の処理性能を表 2. に示します。UnixBench のうち、整数演算処理能力を表す Dhrystone と、浮動小数点数演算処理能力を表す Double-Precision Whetstone の結果を表しています。x86_64 バイナリを Box64 を用いて実行した際の処理性能は、Arm バイナリを実行した際の処理性能の 1/2 ~ 1/3 程度に留まりました。
UnixBench 名 | Arm バイナリ | x86_64 バイナリ (Box64 使用) |
---|---|---|
Dhrystone | 45,683 Klps | 14,964 Klps |
Double-Precision Whetstone | 8,529 MWIPS | 4,079 MWIPS |
まとめ
Box64 を利用することで、x86_64 アーキテクチャでコンパイルしたソフトウェアのうち計算ノード Arm で動作するソフトウェアがあることがわかりました。また、x86_64 バイナリを Box64 を用いて実行した場合、Arm バイナリの実行と比較した処理性能は 1/2 ~ 1/3 程度となることがわかりました。
本取り組みによって、Box64 は全ての x86_64 バイナリを Arm アーキテクチャのシステム上で動作させるものではないということがわかりました。一方、Arm アーキテクチャのシステムで動作する x86_64 バイナリがあることは、過去に SHIROKANE の計算ノード Thin 上でコンパイルしホームディスクにインストールしたソフトウェアの中には、そのまま計算ノード Arm で動作するソフトウェアがあるかもしれない、という可能性を示唆しています。2024 年 8 月現在 SHIROKANE の計算ノード Arm は、計算ノード Arm よりも比較的混雑していない傾向にあり、計算ノード Arm 上でそのまま実行できる x86_64 バイナリがあった場合、Box64 の恩恵を受けられるかもしれません。
Box64 は SHIROKANE の全ての計算ノード Arm にインストールしており、x86_64 バイナリの実行に際して特別な操作は必要ありません。
SHIROKANE サポート係では、今後も計算ノード Arm がより使い易くなるような取り組みを続けていきますのでご期待ください。