17:15 〜 18:45
[S02P-07] WIN/WIN32フォーマット地震波形ファイルの高速読み込みツールの開発
WINファイルは卜部・他(1990)により開発された地震波検測システム(WINシステム)の地震波形ファイルである.防災科学技術研究所よって制定されたWIN32を含めたWIN/WIN32(以下まとめてWINと略す)ファイル形式は,現代の日本国内における連続地震波形流通おける事実上の標準である.WINはデータ容量の小ささやデータの結合性など優れた点を持つが,その反面ファイル形式はやや難解であり,WINシステムで地震波形を使う場合以外には,他フォーマットへの波形記録変換ツールを介するのが常であった.しかし,観測網が稠密化したいま,大容量・連続地震波形記録の解析においては,この波形フォーマットの変換がデータ解析における最大のボトルネックであり,その傾向は今後ますます顕著になっていくと予想される.そこで本研究では,これまでよりもはるかに高速にWINファイルの読み出しができるライブラリを作成した.
本ライブラリは,Fortran2008言語のモジュールとして作成した.FORTRANは古典的な言語ではあるが,Fortran2003/2008といった最近の規格では,動的なメモリ確保やオブジェクト指向といった現代的な機能が含まれている.特に,Fortran2008で規格が制定され,最近になって多くのコンパイラで実装された非同期入出力は,WINファイルのような複雑かつ多数のファイルの入力にきわめて有効である.本研究で開発したライブラリでは,他形式へのファイルの変換・保存や,複数のWINファイルの結合などの処理を一切必要とせず,時間的に連続した複数のWINファイルから目的のチャネルの記録をFortranの配列として直接取得できる.中間処理が不要になったことで,処理の単純化のみならず高速化に対して劇的な効果が見込まれる.さらに,本ライブラリはWIN形式とWIN32形式の両方に対応し,ファイル形式の簡易自動判定機能も備えている.
また,開発したライブラリでは,WINファイルのファイル内容をそのままメモリイメージとして読み込むロード部分と,メモリ上に格納されたWINファイルから必要なデータを抽出するデコード部分を分離実装した.これらとFortran2008の非同期入出力機能を用いて,あるファイル内容のデコード中に次のファイルをメモリに読み込む並列動作を実現した.このことにより,ロードとデコードのうち片方の処理時間を隠蔽することができ,多数のファイルを読み込む場合に高速化が期待される.このような隠蔽処理は並列数値計算においてCPUやGPU間の通信時間の隠蔽にしばしば用いられてきたが,本報告ではこれをファイル入力に対して活用した.
開発したライブラリの性能を評価するため,WIN32波形を読み込むdewin_32プログラムを比較対象とした実験を行った.防災科学技術研究所Hi-net により収録された任意の日付時刻の連続速度波形ファイル1時間分を対象とし,そこに含まれる全てのチャネルを読み出す.WIN32ファイルはLAN上のNASに格納されているものとする.dewin_32と同等の機能を持つツールを今回開発したライブラリに基づいて作成し,読み込み速度を比較した.
実験の結果,dewin_32で1時間分のファイルの全チャネルの読み込みと出力に最大621秒かかったところ,本ツールでは,非同期入力なしで267秒,非同期入力ありで236秒で読み込めた.また,Fortran言語上で利用する場合は,そもそも読み込んだデータを一旦ファイルに保存する必要がない.そこでデータの出力に掛かる時間を無視すると,読み込み時間は非同期入力なしで38秒,ありで21秒まで短縮された.実際の解析でHi-net全チャネル1時間分データが利用可能になるまでの時間は,本研究で開発したツールではdewin_32と比べて最大約20倍短縮されたことになる.読み込みのみに限定すると,非同期入力の導入によって性能がおおむね倍になった.
比較に用いたWIN32ファイルの1時間分の総容量は約1GBであり,この結果はデータ通信速度に換算すると約400Mbpsに相当する.これは実験環境におけるLAN(1Gbps)の通信の実効速度の上限に近い.すなわち,ネットワークファイルシステムに連続記録が配置されている環境においては,もはやこれ以上の劇的な速度向上は望めない.
本研究で開発したライブラリは,周辺ツールや利用マニュアル等を整備の上,オープンソースとして公開する予定である.講演ではアルゴリズムの詳細の説明,高速データ読み込みとその利用の実演,およびコードの公開を行う.
謝辞 本研究では防災科学技術研究所により登録ユーザーに対して配布されているwin32toolsを利用しました.記して謝意を表します.
本ライブラリは,Fortran2008言語のモジュールとして作成した.FORTRANは古典的な言語ではあるが,Fortran2003/2008といった最近の規格では,動的なメモリ確保やオブジェクト指向といった現代的な機能が含まれている.特に,Fortran2008で規格が制定され,最近になって多くのコンパイラで実装された非同期入出力は,WINファイルのような複雑かつ多数のファイルの入力にきわめて有効である.本研究で開発したライブラリでは,他形式へのファイルの変換・保存や,複数のWINファイルの結合などの処理を一切必要とせず,時間的に連続した複数のWINファイルから目的のチャネルの記録をFortranの配列として直接取得できる.中間処理が不要になったことで,処理の単純化のみならず高速化に対して劇的な効果が見込まれる.さらに,本ライブラリはWIN形式とWIN32形式の両方に対応し,ファイル形式の簡易自動判定機能も備えている.
また,開発したライブラリでは,WINファイルのファイル内容をそのままメモリイメージとして読み込むロード部分と,メモリ上に格納されたWINファイルから必要なデータを抽出するデコード部分を分離実装した.これらとFortran2008の非同期入出力機能を用いて,あるファイル内容のデコード中に次のファイルをメモリに読み込む並列動作を実現した.このことにより,ロードとデコードのうち片方の処理時間を隠蔽することができ,多数のファイルを読み込む場合に高速化が期待される.このような隠蔽処理は並列数値計算においてCPUやGPU間の通信時間の隠蔽にしばしば用いられてきたが,本報告ではこれをファイル入力に対して活用した.
開発したライブラリの性能を評価するため,WIN32波形を読み込むdewin_32プログラムを比較対象とした実験を行った.防災科学技術研究所Hi-net により収録された任意の日付時刻の連続速度波形ファイル1時間分を対象とし,そこに含まれる全てのチャネルを読み出す.WIN32ファイルはLAN上のNASに格納されているものとする.dewin_32と同等の機能を持つツールを今回開発したライブラリに基づいて作成し,読み込み速度を比較した.
実験の結果,dewin_32で1時間分のファイルの全チャネルの読み込みと出力に最大621秒かかったところ,本ツールでは,非同期入力なしで267秒,非同期入力ありで236秒で読み込めた.また,Fortran言語上で利用する場合は,そもそも読み込んだデータを一旦ファイルに保存する必要がない.そこでデータの出力に掛かる時間を無視すると,読み込み時間は非同期入力なしで38秒,ありで21秒まで短縮された.実際の解析でHi-net全チャネル1時間分データが利用可能になるまでの時間は,本研究で開発したツールではdewin_32と比べて最大約20倍短縮されたことになる.読み込みのみに限定すると,非同期入力の導入によって性能がおおむね倍になった.
比較に用いたWIN32ファイルの1時間分の総容量は約1GBであり,この結果はデータ通信速度に換算すると約400Mbpsに相当する.これは実験環境におけるLAN(1Gbps)の通信の実効速度の上限に近い.すなわち,ネットワークファイルシステムに連続記録が配置されている環境においては,もはやこれ以上の劇的な速度向上は望めない.
本研究で開発したライブラリは,周辺ツールや利用マニュアル等を整備の上,オープンソースとして公開する予定である.講演ではアルゴリズムの詳細の説明,高速データ読み込みとその利用の実演,およびコードの公開を行う.
謝辞 本研究では防災科学技術研究所により登録ユーザーに対して配布されているwin32toolsを利用しました.記して謝意を表します.