特集
» 2011年01月01日 00時00分 UPDATE

「MATLAB」の関数がGPUを用いた並列計算処理に対応

[EDN]

 米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のプログラミングに用いることができるようになった。

画面1 Mandelbrot集合の分布に関する計算処理時間の比較 画面1 Mandelbrot集合の分布に関する計算処理時間の比較 CPUだけを用いて計算処理を行う場合(左)と比べて、GPUを用いて計算処理を行う場合(右)のほうが処理時間を短縮できている。

 会見では、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© 2017 ITmedia, Inc. All Rights Reserved.

RSSフィード

EDN 海外ネットワーク

All material on this site Copyright © 2005 - 2017 ITmedia Inc. All rights reserved.
This site contains articles under license from UBM Electronics, a division of United Business Media LLC.