Abstruction
近年の大規模な数値シミュレーションは、シミュレーション時のデータ書き込みのみならず、何度も読み出しが実行されるポスト処理においてもストレージがボトルネックになることが多い。 ポスト処理の内容は多岐にわたるが、様々なポスト処理に対応するための条件として、不必要なデータのi/oを極力減らすことがあげられる。本論文では、シミュレーションデータのrefactoring, compressing, retrievalのフレームワークを紹介する。refactoringにより粒度の細かい精度でデータを分解でき、要求した精度でデータを取得することが可能になる。本研究で紹介するフレームワークを使うことで、state-of-the-artの手法を使った時と比べ、複数の精度でデータを要求したときに大幅に取得するデータを減らすことができた。さらに粗い精度でのデータ要求があったときに、分析時間の短縮につながった。 具体的には、本フレームワークを使うことでほかのフレームワークを使った時と比べ、ある精度でのデータ要求があったときに64%のデータ削減を達成した。さらに、1024コアを使って600GBのデータの書き込みと読み込みを実行した際、従来の手法と比較した際、それぞれ1.36倍、2.52倍の性能向上を示せた。
introduction
大規模な数値シミュレーションから生み出されるデータ量は、ストレージのI/O性能を超えている。 並列ファイルシステムは高価なため、増設することが難しい。 一方、並列ファイルシステムに書き込まれたデータは、PFSの容量が圧迫する目的と、長期保存をする目的ですぐに二次記憶に退避される。 PFSのバンド幅は2-2.5Tb/sであるのに対し、二次記憶のバンド幅は1-2GB/sである。そして、このI/Oバンド幅が低いことが、科学的な発見を遅らせる原因となっている。 これらの問題があるため、多くの科学者は可逆圧縮や非可逆圧縮を使い、データの書き込み量や読み込み量を減らす。しかし、可逆圧縮は圧縮率が低いため、先の問題解決には不十分である。このことから近年、より大幅に圧縮が可能な非可逆圧縮が注目を浴びている。非可逆圧縮は、ユーザが指定した許容誤差を保証する範囲でデータの圧縮をする。 しかし、この手法にも欠点がある。 それは、QoIがわからない、つまり、現象の発見に必要な最低限の許容誤差がわからない点である。 非可逆圧縮によるI/Oの恩恵と、QoIを両立させるためには、あるステップで許容誤差を緩めていき、様々な許容誤差で圧縮されたデータをためておけばいいが、それは本末転倒で、結果的に多くのデータをためることになってしまう。さらに、ある誤差で取得したデータの精度が十分でない場合は、再び誤差が小さいデータを1から取得する必要があり、結果的にI/Oを圧迫してしまう。
この問題に対処するのがProgressive compressionである。Progressive compressonとtransmitonは、まずデータを複数の精度に階層的に分解する。そして、ユーザがより高精度のデータを要求するときには、階層構造になったデータのより精度が高い一部分のみをユーザは新たに取得し、それを今までに取得したデータに重ね合わせる。これによりより高精度のデータを得られる。 本研究では、I/Oにボトルネックが生じるという課題を、このProgressive retrievalを用いて解決する。 MGARDというフレームワークを用いることではこれを実現することが可能である。しかし、MGARDはresolution incremental re-compositionをサポートしているのみで、各階層ごとに隣接している精度が粗いという課題がある (これが多分bit-plainを考慮していないっていう話につながるんだと思う) 。本論文ではこれを解決するフレームワークをMGARDを用いて新たに作る。 本研究のcontributionは下記のとおりである。
データリファクタリングアルゴリズムと理論の紹介。本アルゴリズムは、MGARDとbit-plane encodingを組み合わせである。このアルゴリズムは、データを複数の階層の解像度と精度に分解することを可能にする。
データを段階的に取得および再構成できるフレームワークの実装。この段階的な取得により、以下の2つの利点がある:1)データの取得/ストリーミング、再構成、および解析を非同期で実行でき、いつでも既知のエラー範囲内で行えます。2)次の精度レベルに至るデータの部分だけをストリーミングして解析結果が収束するまで、I/Oの負荷を減少。
私たちは貪欲アルゴリズムを一般化して、複数のエラーメトリクスに対してデータの取得効率を改善します。このアルゴリズムは多様な事後解析に適応でき、解析に基づいて再構成されたデータの取得順序を変更することで取得サイズをさらに削減したり、粗い粒度の表現を提供することで解析のパフォーマンスを向上させることができます。また、私たちはフレームワークを最適化します。
chapter2 問題と関連研究
イントロのようやく
・過去10年間におけるデータとストレージ容量の不均衡な成長は深刻な問題である。 ・exascaleコンピューティング時代ではさらに深刻化し、科学的な発見を妨げる要因となっている。 ・ストレージとI/Oの制約に対処する有望な候補として、非可逆圧縮があげられている ・しかし、文献には広範な圧縮技術が存在するにもかかわらず、科学アプリケーションのコミュニティにおけるこれらの受け入れは低い その理由は 1)データの削減プロセスがデータを生成した本来の現象に影響を及ぼす可能性があること。 2)単一のエラー制約の下で削減されたデータが、異なる解析のさまざまなニーズに適合しない可能性があること
また、シミュレーションデータはPFSから二次記憶に移される、が二次記憶はバンド幅が小さいためデータの取得が遅くなる。データの生成(例:大規模な実験、シミュレーション)は時折行われるのに対し、生成されたデータはさまざまな研究によって取得される。よって、セカンダリストレージ層の低い帯域幅が不適切な/過剰なデータの取得コストを高める。私たちは、解析に必要な精度にちょうど適合する量のデータをユーザーに提供したいと考えています。
背景
bit-plane encoding (ビットプレーン符号化)
整数をビットで表したときに、桁が上位なビットほど、精度に与える影響が大きい。これは浮動小数点でも同じで、各桁ごとにデータを保存することで、精度に与える影響を優先度付けすることが可能となる。
Multilevel decomposition and error control
ここが難しいのよね。ここさえ理解できれば勝ちです。 まずは難しい部分をchatGPTに聞いてみた。
Start with 𝑄𝐿𝑢 = 𝑢:
At the beginning of the multilevel decomposition, the finest (highest) level is denoted by 𝐿. The coefficient 𝑄𝐿 represents the data at the finest grid resolution, and it is set to be equal to the original data 𝑢 at this level.
Compute the piecewise linear interpolant Π𝑙−1𝑄𝑙𝑢:
To go to the next lower level, we compute the piecewise linear interpolant, denoted by Π𝑙−1𝑄𝑙𝑢. This interpolant approximates the original function 𝑢 at the grid points of level 𝑙−1 (one level coarser) using the values at grid points of level 𝑙 (the current level). In simple terms, it creates a lower-resolution representation of the data based on the values at a higher-resolution grid.
Subtract the interpolant Π𝑙−1𝑄𝑙𝑢 from 𝑄𝑙𝑢 to get the multilevel component Δ𝑙𝑢 = (𝐼 − Π𝑙−1)𝑄𝑙𝑢 in level 𝑙:
This step calculates the difference between the original data 𝑢 and the interpolated data Π𝑙−1𝑄𝑙𝑢 at the current level 𝑙. The result is a new set of coefficients, denoted by Δ𝑙𝑢, which represents the error or the part of the data that could not be captured by the interpolation process.
Compute the projection of the multilevel component Δ𝑙𝑢 on the next level, denoted as 𝑄𝑙−1Δ𝑙𝑢:
In this step, we project the multilevel component Δ𝑙𝑢 from the current level 𝑙 to the next coarser level 𝑙−1. This projection is calculated by taking the difference between the data at level 𝑙−1 (one level coarser) and the interpolant Π𝑙−1𝑄𝑙𝑢 obtained in step 2. This projection represents the error or correction needed to obtain the data at the next coarser level.
Add the obtained correction 𝑄𝑙−1Δ𝑙𝑢 to the interpolant Π𝑙−1𝑄𝑙𝑢 to obtain the next-level representation 𝑄𝑙−1𝑢:
Finally, we combine the obtained correction 𝑄𝑙−1Δ𝑙𝑢 with the interpolant Π𝑙−1𝑄𝑙𝑢 from step 2. This combination refines the lower-resolution representation at level 𝑙−1, resulting in the next-level representation 𝑄𝑙−1𝑢. Now, 𝑄𝑙−1𝑢 contains more accurate information about the data at the coarser grid level.
The above steps are repeated, moving from the current level 𝑙 to the next coarser level 𝑙−1, until we reach the coarsest level (level 0), where the decomposition process is completed.
The overall idea of multilevel decomposition is to break down the data into components at different resolutions, and each component captures specific details of the data. The process allows for efficient compression by storing the coefficients obtained from these components, which are often sparse or close to zero due to the interpolation process.
multilevel decomposition in MGARD uses piecewise linear interpolation and 𝐿2 projection to represent data at different resolutions. It decomposes the data into multilevel coefficients that capture different scales or levels of detail. The decomposition process forms a pyramid-like structure, where each level represents a different level of resolution, from the finest level (highest resolution) to the coarsest level (lowest resolution). This pyramid structure allows for efficient compression by storing only the essential coefficients.