2021 Fiscal Year Research-status Report
Project/Area Number |
21K21281
|
Research Institution | Tokyo Medical and Dental University |
Principal Investigator |
伊東 聰 東京医科歯科大学, M&Dデータ科学センター, 助教 (30525358)
|
Project Period (FY) |
2021-08-30 – 2023-03-31
|
Keywords | 全ゲノム解析 / GPU / HPC |
Outline of Annual Research Achievements |
本研究は、全ゲノム解析パイプラインをGPUで実装するためのフレームワークを開発することを目的とする。 本年度は、全ゲノム解析パイプラインで最も使用頻度の高いFASTQ、SAM、BAM等のシークエンスデータフォーマットとCPU上でこれらを取り扱うソフトウェア(SAMtools)におけるデータ構造を調査し、GPU上でこれらを効率的にハンドリング出来るデータ構造の検討を行った。その結果、非圧縮BAMフォーマットをベースにしたデータ構造の採用が最も効率的であると判断した。I/O機能の実装にあたりSAMtoolsのソースコード調査を実施したところ、多様な機能の全てに対応する必要から処理内に多数の条件分岐が含まれており、ストリーミング処理に適応できないことが判明した。本フレームワーク内で求められる処理は定型化することが予想されるため、I/Oとデータ構造は処理の組み合わせに適応する数種類を用意し、高速化を図ることにした。VIEW機能専用I/Oを試作した結果、CPU上で従来SAMtoolsの3倍程度の高速化が確認できた。また、Markduplicatesに関してのアルゴリズム検討を実施した。アプローチは主に2種類であり、塩基配列ベースの方法とポジションベースの方法である。本フレームワークでは、広く採用されているポジションベースの方法を採用する。本アプローチではマッピング後のリードデータが保有する塩基位置、CIGARコード、インサーションサイズなどのデータをもとに重複判定を実施する。ここでは、データ構造をリード単位からフィールド単位に変更することで、処理に必要なデータ量を最小化しGPUの限られたメモリを有効活用できるようにした。
|
Current Status of Research Progress |
Current Status of Research Progress
2: Research has progressed on the whole more than it was originally planned.
Reason
フレームワークの設計として、まずデータ構造の検討とI/O機能の実装に着手した。パイプライン前半を構成するマッピング、ソート、Markduplicatesの全てを網羅するBAM(非圧縮)が最適であるが、データ構造としては2種類を用いることにした。具体的には、リード単位のデータ構造とフィールド単位のデータ構造である。マッピングおよびMarkduplicatesに関してはリード単位または連続する複数リードブロックで処理が完結するが、ソートではデータ全体を検索しなければならない。このため、必要なデータフィールドのみをGPUに転送できるフィールド単位のデータ構造の方がデータ量を削減でき、また処理も効率的になる。 想定するデータサイズは数百GB以上であり、GPUメモリサイズよりはるかに大きい。ソートなどの全データをスキャンするタイプの処理が入る場合、どうしてもCPU-GPU間のデータ転送を実施しなければならない。そのため、I/O機能はその後の処理に合わせて専用機能として実装することにした。専用I/OにすることでSAMtoolsのI/Oに見られる大量の条件分岐を排除し、高速に入出力を実施可能になった。VIEW機能のCPUテストでは、SAMtoolsに対して3倍程度の高速化を達成した。 Markduplicatesについて、SAMtools等で広く利用されているポジションベースの判定アルゴリズムとストリーミング処理について検討を行った。判定に必要なデータはリードの位置、インサーションサイズ、CIGARの3種である。データはソート後なので重複リードはすべて連続して配置されている。よって、適切な本数のリードをブロックとし、GPUのストリーミングプロセッサに担当させることで各ブロックを独立して処理することが可能となる。
|
Strategy for Future Research Activity |
MarkduplicatesのGPU実装を行う。まずはCPU-GPU間で複数回のデータ転送が不要な、数百MB程度のデータで処理内容の正確性とどの程度高速化されるのかを実測し、確認する。次に実データを用いてGPUメモリに載りきらない大規模データに対する高速化について確認と検討を実施する。Markduplicatesが完成し次第、ソート等の多処理についてもGPU実装を行う。GitHub上への公開を行い、並行してマニュアルの整備を行うことでフレームワークの利用促進に努める。
|