フランスCAPS社のGPUコードジェネレーター(コンパイラ)の販売と導入コンサルティングを主に行っております。



HMPPはCAPS entreprise社が開発したGPGPUアプリケーション開発ツールです. CAPS社はフランス レンヌ市に 本社がありGPUコンピューティングに特化した開発ツールを自社開発販売している革新的なソフトメーカです. 2002年にINRIA(フランス国立情報学自動制御研究所)、レンヌ大学等7名の研究者でコンパイラーの開発を目的にプロジェクトチームが発足し、ベンチャーキャピタルの出資を受け株式会社となりその後GPUコンピューティングのエポックメーキング的な時流に乗り目下GPU開発ツールHMPP(Hybrid Multicore Parallel Programming)を欧州、米国、アジアで拡販中です.

HMPP(ディレクティブ手法)はCAPS社が提唱するOpen StandardPathScaleコンパイラでも導入されております.




◆ディレクティブベースのプログラミング
  ・CPUコードを保持するためCPU環境でのコンパイラ実行も従来どおり活用可能.
  ・コンパイル時にGPUコード(CUDAの場合、xxx.cu)が同時生成され適宜手動修正も可能.
  ・GPU言語を習得する必要がないため開発時間の大幅短縮. 特にコード行数の多いときに効果を発揮.

CUDAとHMPPによるプログラミングの比較(1次元配列の和)

◆CUDAとOpenCLに対応
  ・CUDAやOpenCLのコードの生成を行い、GPUコードの修正も可能.
  ・GPUコードの種類はディレクティブの一部分を修正するだけで対応.

◆さまざまなCPUコンパイラに対応
  ・Intel, GNU, PGIをはじめとして様々なCPUコンパイラが使用可能.

◆HMPPランタイムの使用
  ・HMPPアプリケーション実行時に環境を識別し、GPUが使用不可ならCPUで実行.
  ・OpenMPと組み合わせたマルチGPU化や、MPIと組み合わせたGPUクラスタへの移行が可能.

◆オープンスタンダード指向
  ・OpenHMPPというHMPPディレクティブ手法のオープンスタンダード化を推進.





情報通信研究機構(小金井) 産業技術総合研究所(つくば) 高エネルギー加速器研究機構
統計数理研究所 東北大学(理・工学部)  新潟大学 筑波大学(計算科学センター) 
東京理科大学 東京工業大学(TSUBAME) 東京大学(弥生、本郷、駒場、柏) 早稲田大学 慶應大学
明治大学 横浜国立大学 富山大学 大阪大学 大阪工業大学 京都工繊大学 同志社大学
京都大学(防災研、化学研、ACCMS) 兵庫県立大学 九州大学 民間企業R&D等



 
  現在windows版も販売してます

HMPPは既存のCPUソースコード中でGPU処理させたい部分にOpenMPのようなディレクティブ(指示行)を挿入してコンパイルするだけで、GPU化可能な部分を自動的にGPUコードとして生成し、実行ファイルを作成することができます. また、ランタイムを利用しているために、プラットフォームに依存せずに実行時の環境に合わせて可能なアプリケーションを作ることができます.

 







C/Fortranで記述された既存のソースコードにディレクティブを挿入することで、指定した部分をGPU化することができます. HMPPによるGPU化の最小構成は2つのディレクティブを挿入するだけであり、既存のコード資産を効率よく活用することができます. また、ディレクティブはホストコンパイラでコンパイルする際には無視されるため、他のプログラミングツールとの干渉を防ぐことができます. ディレクティブの除去が容易であり、大きな変更なくコードを保持することができます.




HMPPではディレクティブ中でターゲット(CUDAもしくはOpenCL)を指定することで、GPUコードを生成します. そのため、1つのオリジナルのコードからCUDAかOpenCLのコードを生成することができ、プラットフォームが変わっても対応することが可能です.

HMPPで作成したアプリケーションはHMPPランタイムを利用しており、ランタイムを利用することによって柔軟な構成が可能になります. 例えばHMPPで作成したアプリケーションを実行するときにGPUが使用できない場合でも、ランタイムがGPUを使えないことを判別してCPU上で実行しま
す.また、ランタイムがリソースの管理を行っているためマルチCPU、マルチGPUに移行させることも可能です.
HMPPライセンスは、HMPPコンパイル時だけ必要でバイナリ実行時には不要です(RUNTIMEフリー).









HMPPでコンパイルを行う場合にはユーザーがhmppコマンドを使ってコンパイルするだけで、自動的にホストコードからGPUコードになる部分を分離してGPUコードを生成し、それぞれをコンパイルして実行ファイルを生成します. ホストコードと別にGPUターゲット向けのコードが生成される"source to source"コンパイラであり、生成されたソースの修正を行うこともできます. hmppコマンドでのコンパイル時にはホストコンパイラのオプション(最適化-O3など)を指定することができます.


HMPPを使うことにより、GPU用のプログラミング言語に関する深い知識がなくてもGPUを利用することができます.  GPUの知識があればメモリ確保やデータ転送などを指定するディレクティブを使った細かな制御も可能となり、さらに高速化を行いたい場合にはチューニング用のディレクティブを使うこともできます.



   (C)Copyright JCC-Gimmick Ltd. 2009 All rights reserved.