米The MathWorks社は2010年11月、東京都内で記者会見を開き、技術計算ソフトウエア「MATLAB」の新バージョン「R2010b」で追加された新機能について説明した。会見では、主に、米NVIDIA社のGPU(Graphics Processing Unit)を用いた並列計算処理に対応する機能について紹介した。
MATLABでは、2005年から、さまざまなオプション製品によって並列計算処理に関する機能が強化され続けている。R2010bの前のバージョンである「R2010a」であれば、オプションの「Parallel Computing Toolbox」により、マルチコアプロセッサとマルチプロセッサ環境に対応することができる。また、クラスタ/クラウドコンピューティングについては、クライアント側で用いるParallel Computing Toolboxに加えて、スケジューラサーバーに対して「MATLAB Distributed Computing Server」を適用することで対応が可能になる。
R2010bにおけるGPUを用いた並列計算処理への対応は、Parallel Computing Toolboxの機能向上により実現された。それにより、MATLAB本体の計算処理にかかわる約800個の関数のうち123個(以下、GPU対応関数)を、GPU上で並列計算処理を行う際のMATLABのプログラミングに用いることができるようになった。
会見では、GPUを用いて並列計算処理を行う際のMATLABのプログラミングについて、R2010aまでとR2010bを比較した事例を挙げて説明した。その1つ目は、R2010bからサポートを開始したGPU対応関数を用いる例である。R2010aまで、GPU上で並列計算処理をさせるためのプログラミングを行うには、MATLAB、C言語、そしてNVIDIA社のGPU向けのC言語開発環境である「CUDA(Compute Unified Device Architecture)」の知識が必要だった。一方、2010bでは、GPU対応関数だけを用いるのであれば、CUDAに関する知識は不要である。また、プログラムの行数も大幅に削減することができる。例えば、5000×5000の要素に対する単精度の2次元フーリエ変換をGPU上で並列計算処理するプログラムの行数は、2010aまでは20行程度必要だったのに対して、2010bでは3行で済む。また、この計算処理にかかった時間は、CPUのみを用いた場合が約0.86秒であるのに対し、GPUを用いた場合には約0.14秒まで短縮できたという。
2つ目は、123個のGPU対応関数を使って作成したユーザー定義の関数を利用する例である。これについては、複素平面上の集合の1つであるMandelbrot(マンデルブロ)集合の分布の計算処理に関するデモンストレーションを行った。この計算処理をCPUのみで行った場合の処理時間は、約19.45秒だった。一方、GPU対応関数を使って定義したユーザー関数を用いてGPU上で並列計算処理を行った場合には、処理時間を約1.42秒に短縮することができた(画面1)。
(朴 尚洙)
Copyright © ITmedia, Inc. All Rights Reserved.