金融HPC

金融計算とHPC

弊社が提供しているモンテカルロ法を使用してVaRを求めるようなシミュレーションではある程度のパーセンタイル点を求めるためにそれなりのシミュレーション回数が要求されます。また、シミュレーションで実行される問題の規模も年々大きくなっています。

高性能なコンピューターで処理を行わせることを一般に HPC (High Performance Computing) と言い、大学などでも研究されています。構造計算、流体計算、気象予測、医薬などの多くの分野で HPC を応用して多くの科学技術計算が行われていますが、金融の分野でも古くからリスク管理、オプション計算などにコンピューターが使われてきました。金融危機の影響もあり、要求が複雑化、大規模化するに伴い、金融計算への HPC の応用へのニーズはますます高まっています。コンピューターの性能は年々向上しておりますが、その性能を享受するのは簡単ではなくアプリケーションの作成には高度な技術が要求されます。

またコンピュータの台数が増大するに伴い、それらを性能を無駄なく使うにはさらに注意が必要となります。すでに多くの金融機関で複数のマシンを使用したシミュレーションなどが行われていると思いますが、コンピューターが本来持っている性能を出し切れているでしょうか?

ノード内並列化(マルチスレッド、マルチプロセス)、マルチノード、GPGPU

計算を実行するユーザーとしては早く結果が欲しいわけなので、HPC 計算とは結局のところいかに一度に多くの計算を行うかということに帰着します。その手法としては、主に以下が挙げられるのではないでしょうか。

  • 1つのコンピューターのみで性能を向上させる
  • 複数のコンピューターを使って性能を向上させる
  • コンピューターにアクセラレーターをつける

もちろん汎用のコンピューターを使わずに・・・、という選択もあるかもしれませんが、ここではその選択は現実的ではないので考えないことにします。もっと知りたい方はまず Wikipedia などを見てみて、あとは関連キーワードを適当に検索してみるとよいかと思います。もちろんこれらはそれぞれ単独で利用しなければならないわけではなく、これらを組み合わせて利用することができます。

1つのコンピューターのみで性能を向上させる

マルチプロセッサ、マルチコアこれらの言葉を聞いたことがあるのではないでしょうか。最近のコンピューターでは一つのマシンに複数の CPU コアが搭載されることが普通になっています。CPU コアとはコンピューターで処理を行う単位のようなもので、CPU コアが多ければ同時に多くのことを処理することができます。一般向けのコンピューターではたいてい複数のコアを搭載した CPU(マルチコア)が1つ搭載されています。サーバーであれば、その CPU 自体が複数(マルチプロセッサ)搭載されることも多々あります。

したがってコンピューター1台の同時処理可能数としては、「(1CPUあたりのコア数)×(搭載されるCPU数)」となります。ハイパースレッディングという言葉を聞いたことがある方もいるかもしれません。これは物理的な1つの CPU コアを論理的に 2 つに見せて同時処理可能数を増やす仕組みです。詳しくはこちら。別々の処理をたくさん実行するのであればあまり深く考える必要はありませんが、1つの処理(アプリケーション)で同時に複数の CPU コアを使って処理時間を短くしようとすると急に難しくなります。それぞれの CPU コアでの処理は、通常はそれぞれ独立に実行されるため、複数のコアを用いて1つの処理をさせるには協調して動作するための同期処理などが必要となります。

複数のコンピューターを使って性能を向上させる

単一のコンピューターでの並列処理を複数のコンピューターに拡張して考えます。おおまかに言うと異なる点は以下が挙げられます。

  • 単一のコンピューターの場合
    • メモリを共有したマルチスレッド処理が行える
    • 使用可能メモリ量が限られる
  • 複数のコンピューターで処理する場合
    • 同期やデータのやりとりにネットワークによる通信が必要
    • コンピューターごとにメモリを搭載できるため使用可能メモリ領域が増える
    • コンピューターの数をどんどん増やすことができる(数100台超も一般的)
    • コンピューターが増える分費用がたくさんかかる

コンピューターにアクセラレーターをつける

いろいろと手法はありますが、最近だと GPGPU という言葉が一般的だと思います。どんどん高性能化してきたグラフィックカードを計算に使おうと言うものです。とは言え、きちんとした計算を行うにはグラフィックカードそのものではなく、グラフィックカードと同じアーキテクチャによる HPC 専用のアクセラレータを使います。一般的な CPU とは計算を実行する部分の構造が異なっており、一般的な CPU での処理に対して、うまく使えれば劇的に高速化できる、というものです。数値演算は一般的には高速化しやすい部類に入ると思いますが、一般的にはプログラミングは容易ではありません。現在のところ、事実上 1 社のグラフィックカードメーカーのみが提供しているため、今後さらに普及していくか否かは未知数なところもあります。

ただし上手に利用することができた場合の効果は絶大です。簡単な問題を弊社で試したところ数10万円の投資で100倍以上の性能が得られるケースもありました。詳細は「金融HPCを変えるアクセラレータ技術」をご覧ください。

HPC への取り組み

弊社が提供している製品で高速処理が要求されるものは、全てマルチスレッド対応となっており、コンピューターに搭載されている全ての CPU 能力を使いきることができます。計算実行時に Windows のタスクマネージャーをご覧いただくと、CPU 使用率が100%となる快感を味わうことができます。また、特に計算規模が大きい Altitude に関しては、複数のコンピューターを使用したグリッドコンピューティングへも対応しており、複数のお客様へ導入しています。

また、進化を続けるコンピューター性能を十分に利用するため、拡大し続ける問題規模や処理の複雑化へ対応するため、弊社では HPC 業界を注視しつつ HPC 技術の研究にも取り組んでいます。近年では世界のスーパーコンピューターランキングの常連である東京工業大学のスーパーコンピューター(TSUBAME)を利用して、1台あたり16コアを使用可能なコンピューターを100台超使用して超大規模な計算を行いました。詳しくは以下の関連情報をご参照ください。

関連情報

 
Copyright © 2011 Numerical Technologies Incorporated. All rights reserved.