gpu を用いた超並列高速計算入門—v 進化 ...tsutsui/paper/iscie-lecture.pdf ·...

8
システム/制御/情報,Vol. 60, No. 10, pp. 443–450, 2016 443 GPU を用いた超並列高速計算入門—V 進化計算への適用 筒井 茂義* 1. はじめに 進化計算は,複数の個体(解候補)からなる集団を, 対象問題(環境)における各個体の評価値を用いて,よ りよい個体をもつ集団に進化させることにより,解の探 索を行うメタヒューリスティックスの総称である.進化計 算は,数学的に定式化が困難な問題や組合せ爆発により 厳密解を得ることが困難な問題に有効であり,本学会の 研究対象分野としても関連が深い.進化計算は集団ベー スの探索手法であることから並列計算に向いている. GPU では,同じ命令からなる処理が「スレッド」と して多数生成され,それらが SIMD(Single Instruction, Multiple Data) 風に並列に実行される.しかし,この並列 実行では MIMD(Multiple Instruction, Multiple Data) として並列実行されるマルチコア CPU のように複数の スレッドを独立したプログラムとして柔軟に実行するこ とができない(本講座 III[17,18] 参照).このため,並 列計算に向いている進化計算といえども GPU の超並列 性を効率的に実現するには,個別の問題に応じて進化計 算のモデル構築や実装法に工夫が必要となる. 今回の講座では,進化計算を概観した後,アントコロ ニー最適化 (Ant Colony Optimization, ACO) 法にタ ブーサーチ (Tabu Search, TS) を組み合わせ,最適化問 題の中でも最も困難な問題の一つである 2 次割当て問題 (Quadratic Assignment Problem, QAP) GPU によ る並列計算により高速に解く研究 [16,20] を紹介しよう. 2. 進化計算概観 進化計算の源流は,生物進化にヒントを得たアルゴリ ズムとして研究が始まった進化戦略 (Evolution Strategy, ES),進化プログラミング (Evolutionary Programming, EP) および遺伝的アルゴリズム (Genetic Algorithm, GA) にあり,1960 年代にまでさかのぼる. これらの研究は 1980 年代の後半まではお互いに遭遇 することなく研究されてきた.事実,1989 年に出版さ れ,GA の研究者に多大な影響を与えた Goldberg の著 [6] には ES EP の記述は一切見当たらない.EP 関してはお互いに無視しあっていたのかもしれない.ES に関しては,研究論文や報告がドイツ語で書かれていた * 大阪府立大学 Key Words : GPU, GPGPU, evolutionary computation, ACO, QAP. ことが大きな原因と思われる.1980 年代の後半からは, 国際会議を通してこれらの研究の交流が始まった. 1990 年代に入り,従来の生物進化をベースとする手法 に加え,群れの集団行動をモデルとするアントコロニー 最適化法 (Ant Colony Optimization, ACO)[4] や粒子 群最適化 (Particle Swarm Optimization, PSO)[7],さ らには差分進化法 (Differential Evolution, DE)[11] GA に統計的手法を融合する分布推定型アルゴリズム (Estimation of Distribution Algorithm, EDA)[9,8] どの手法が,集団ベースの探索手法である進化計算の仲 間に加わってきた. 進化計算により問題を解く際の解の表現法(コーディン グ法)には, (1) バイナリ表現 (1011 ··· 11)(2) 実数値列 表現(2.11, 2.55, ··· , 5.55)(3) 順列表現(3, 2, 0, ··· , 4, 5) の三つが代表的である.バイナリ表現は各種問題に適用 できる汎用的な表現法であり,理論的な研究が最も進ん でいる.実数値列表現は,最適化設計問題など,実数値 を扱う問題で最もよく使われている.順列表現は,スケ ジューリング問題など組合せ最適化問題で多く使われる. 各進化計算と表現法との関係を第 1 表にまとめた.この 中で GA は,各種表現法に対応できる汎用性を有してい る.ESPSODE は主として実数値最適化問題に有効 である.本稿で取り上げる ACO は,順序表現問題に有 効な手法である. 1 図に進化計算のフレームワークを示す.各手法の 大きな相違は,新しい解候補(個体)の生成法 (Variation operator) にあり,基本的なフレームワークは同じであ る.進化計算では複数の解候補を用いて集団で探索す るので,広域探索 (Exploration) に優れている.適切な 選択法 (Selection operator) を用いて集団を収束 (Ex- ploitation) させていく.進化計算ではこの Exploration Exploitation とのバランスが重要となる.また,同 図に示したように,進化計算の実際の応用では,効率的 探索のために各個体に対して問題領域に適した局所探索 Local Search, LS)を併用することが一般的である.ま た,計算量の観点からは,評価ならびに LS にかかる時 間が最も大きくなる. – 31 –

Upload: others

Post on 20-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GPU を用いた超並列高速計算入門—V 進化 ...tsutsui/paper/iscie-lecture.pdf · ニー最適化(Ant Colony Optimization, ACO) 法にタ ブーサーチ(Tabu Search, TS)を組み合わせ,最適化問

 システム/制御/情報,Vol. 60, No. 10, pp. 443–450, 2016 443

  講 座

GPUを用いた超並列高速計算入門—V—進化計算への適用

筒井 茂義*

1. はじめに進化計算は,複数の個体(解候補)からなる集団を,

対象問題(環境)における各個体の評価値を用いて,よりよい個体をもつ集団に進化させることにより,解の探索を行うメタヒューリスティックスの総称である.進化計算は,数学的に定式化が困難な問題や組合せ爆発により厳密解を得ることが困難な問題に有効であり,本学会の研究対象分野としても関連が深い.進化計算は集団ベースの探索手法であることから並列計算に向いている.GPUでは,同じ命令からなる処理が「スレッド」と

して多数生成され,それらが SIMD(Single Instruction,

Multiple Data)風に並列に実行される.しかし,この並列実行ではMIMD(Multiple Instruction, Multiple Data)

として並列実行されるマルチコアCPUのように複数のスレッドを独立したプログラムとして柔軟に実行することができない(本講座 I,II[17,18]参照).このため,並列計算に向いている進化計算といえどもGPUの超並列性を効率的に実現するには,個別の問題に応じて進化計算のモデル構築や実装法に工夫が必要となる.今回の講座では,進化計算を概観した後,アントコロ

ニー最適化 (Ant Colony Optimization, ACO)法にタブーサーチ (Tabu Search, TS)を組み合わせ,最適化問題の中でも最も困難な問題の一つである 2次割当て問題(Quadratic Assignment Problem, QAP) をGPUによる並列計算により高速に解く研究 [16,20]を紹介しよう.

2. 進化計算概観進化計算の源流は,生物進化にヒントを得たアルゴリ

ズムとして研究が始まった進化戦略 (Evolution Strategy,

ES),進化プログラミング (Evolutionary Programming,

EP) および遺伝的アルゴリズム (Genetic Algorithm,

GA)にあり,1960年代にまでさかのぼる.これらの研究は 1980年代の後半まではお互いに遭遇

することなく研究されてきた.事実,1989年に出版され,GAの研究者に多大な影響を与えたGoldbergの著書 [6]にはESやEPの記述は一切見当たらない.EPに関してはお互いに無視しあっていたのかもしれない.ES

に関しては,研究論文や報告がドイツ語で書かれていた∗ 大阪府立大学Key Words: GPU, GPGPU, evolutionary computation,

ACO, QAP.

ことが大きな原因と思われる.1980年代の後半からは,国際会議を通してこれらの研究の交流が始まった.1990年代に入り,従来の生物進化をベースとする手法

に加え,群れの集団行動をモデルとするアントコロニー最適化法 (Ant Colony Optimization, ACO)[4]や粒子群最適化 (Particle Swarm Optimization, PSO)[7],さらには差分進化法 (Differential Evolution, DE)[11]やGAに統計的手法を融合する分布推定型アルゴリズム(Estimation of Distribution Algorithm, EDA)[9,8]などの手法が,集団ベースの探索手法である進化計算の仲間に加わってきた.進化計算により問題を解く際の解の表現法(コーディン

グ法)には,(1)バイナリ表現 (1011···11),(2)実数値列表現(2.11, 2.55, ···, 5.55),(3)順列表現(3, 2, 0, ···, 4, 5)の三つが代表的である.バイナリ表現は各種問題に適用できる汎用的な表現法であり,理論的な研究が最も進んでいる.実数値列表現は,最適化設計問題など,実数値を扱う問題で最もよく使われている.順列表現は,スケジューリング問題など組合せ最適化問題で多く使われる.各進化計算と表現法との関係を第 1表にまとめた.この中でGAは,各種表現法に対応できる汎用性を有している.ES,PSO,DEは主として実数値最適化問題に有効である.本稿で取り上げるACOは,順序表現問題に有効な手法である.第 1図に進化計算のフレームワークを示す.各手法の

大きな相違は,新しい解候補(個体)の生成法 (Variation

operator)にあり,基本的なフレームワークは同じである.進化計算では複数の解候補を用いて集団で探索するので,広域探索 (Exploration)に優れている.適切な選択法 (Selection operator) を用いて集団を収束 (Ex-

ploitation)させていく.進化計算ではこのExploration

と Exploitationとのバランスが重要となる.また,同図に示したように,進化計算の実際の応用では,効率的探索のために各個体に対して問題領域に適した局所探索(Local Search, LS)を併用することが一般的である.また,計算量の観点からは,評価ならびに LSにかかる時間が最も大きくなる.

– 31 –

Page 2: GPU を用いた超並列高速計算入門—V 進化 ...tsutsui/paper/iscie-lecture.pdf · ニー最適化(Ant Colony Optimization, ACO) 法にタ ブーサーチ(Tabu Search, TS)を組み合わせ,最適化問

444 システム/制御/情報 第 60 巻 第 10 号  (2016)

第 1 表 代表的な進化計算手法における解の表現法

第 1 図 進化計算の基本フレームワーク

3. アントコロニー最適化法 (ACO)と 2

次割当て問題 (QAP)

3.1 アントコロニー最適化法 (ACO)

アントコロニー最適化法 (Ant Colony Optimization,

ACO)は,アリの群れによる採餌行動の際の経路生成過程にヒントを得た探索手法であり,主として組合せ最適化問題の解法に適用される [4].アリはフェロモンを介したコミュニケーションを行いながら群れで行動し,ある種の秩序を形成する.ACOでは,この秩序形成過程を探索に用いる.ACOの基本モデルは,DorigoらによるAnt System (AS)[3] とよばれるアルゴリズムである.その後,Ant Colony System (ACS)[2],Max-Min Ant

System (MMAS)[12] など多くの改良型ACOアルゴリズムが提案されている [4].ACOは,代表的な組合せ最適化問題である巡回セー

ルスマン問題 (Traveling Salesman Problem, TSP)の解法として研究が始まっており,理解の容易さから以下では TSPを用いて ACOの概要を説明する.各アリを本稿では個体とよぶ.各個体は,各都市に均等もしくはランダムに配置され,そこを出発点として TSPの巡回路を形成する.このとき,各個体は,フェロモン濃度に比例して確率的に経路を選択する.二つの都市 i,j間の経路(エッジ)のフェロモン濃度を τij としよう.一度行った都市は訪問しないという TSPの規則に従う.この経路選択の過程を第 2図に示す.第 2図では,6都市(1, 2, ···, 6)があり,これらの都市を一巡する最短巡回路を探索しなければならない.同図 (a)は,都市 1から出発する個体 kを示している.

都市にいる個体 kがつぎに訪問できる都市の集合は {2,3, 4, 5, 6}である.そこで,これらの都市 j (j ∈ {2, 3,4, 5, 6})を選択する確率 pk1,j は,(a)に示されているようになる.(b)は,この確率に基づいて都市 2が選ばれた状況である.都市 2にいる個体がつぎに訪問できる都市の集合は {3, 4, 5, 6}であるので,この個体がこれら

第 2 図 フェロモン濃度に基づく巡回路生成過程

の都市 j (j ∈ {3, 4, 5, 6})を選択する確率 pk2,jは (b)に示されているようになる.(c)は,この確率に基づいて都市 4が選ばれた状況である.以下,同様に訪問する都市を順次決定して個体 kはTSPの巡回路を完成させる.各都市に配置されたm個の個体がTSPの巡回路を完

成させる動作を 1サイクルとする.このときフェロモン濃度は,次式によって更新される.

τij(t+1)= ρ ·τij(t)+m∑

k=1

∆τij,k (1)

ここで,ρは蒸発係数とよばれ,(1−ρ)がサイクル tとt+1との間にフェロモンが蒸発する割合を示す.また,∆τij,kは個体 kにより経路 (i,j)に新たに排出されるフェロモン濃度である.この値は,個体 kの巡回路 Tk の長さCkが短いほど大きな値となるようにするため,次式のようにCkの逆数とする.

∆τij,k =

{1/Ck, Tkにエッジ (i,j)を含むとき0, それ以外

(2)

初期状態ではすべての経路に同じ濃度 τ0のフェロモンが存在すると考える(τij(0)= τ0).第 2図で説明した選択確率,すなわち,都市 iにいる個体 kが都市 jに移動する確率 pkij(t)は次式に示すように一般化される.

pkij(t)=

τij(t)∑s ∈ Jk(i)

τis(t), j ∈ Jk(i)のとき

0, それ以外

(3)

ただし,Jk(i)は,都市 iにいる個体 kが訪問できる都市(まだ訪問していない都市)のリストである.このように,TSPでは都市 iと jとが隣接する好ましさの度合いをフェロモン濃度 τij に対応させているので,直感的にわかりやすい.(3)式に基づいてすべての個体が巡回路を生成したとき,フェロモン濃度が (1)式に基づいて更新される.以下,t← t+1として終了条件が満たされるまでこのサイクルが繰り返される.この過程で,短い巡回路に属する経路のフェロモン濃度 τij が徐々に大きくなり,最終的に最短の巡回路が得られる.本稿で用いるACOは筆者が開発した cAS[14,19]であ

る.cASは,ASを拡張したもので,解を生成する際に既存解を部分的に借用し,残りの部分を (3)式に基づいて生成するという方式である.これにより Exploration

– 32 –

Page 3: GPU を用いた超並列高速計算入門—V 進化 ...tsutsui/paper/iscie-lecture.pdf · ニー最適化(Ant Colony Optimization, ACO) 法にタ ブーサーチ(Tabu Search, TS)を組み合わせ,最適化問

筒井:GPUを用いた超並列高速計算入門—V 445

第 3 図 ACOアルゴリズムの全体の流れ

とExploitationとの均衡が図られ,高性能ACOとなっている.第 3図に本稿におけるACOアルゴリズムの全体の流れを示す.

3.2 2次割当て問題 (QAP)の解法へのACOの適用

2 次割当て問題 (Quadratic Assignment Problem,

QAP) は,n 個からなる部門を n 個の場所に,次式で定義される関数値 f(ϕ)が最小になるように, 順列ϕで表現される割当てを決定する組合せ最適化問題である.

f(ϕ)=n∑

i=1

n∑j=1

aijbϕ(i)ϕ(j) (4)

ここで,A=(aij)およびB=(bij)はそれぞれ n×nのマトリックスであり,ϕは {1, 2, ···, n} の順列である.マトリックスAとBは,それぞれ,部門 i,j間の流量(物流や人的交流の強さ),場所 i,j間の距離を表している.QAPの簡単な例を第 4図に示す.ここで,順列 ϕ=

{2, 1, 4, 3} は,部門 1を場所 2に,部門 2を場所 1に,部門3を場所4に,部門4を場所3にそれぞれ割り当てることを示す.第 4図の関数値は (4)式から,f(ϕ)=1524

である.このように f(ϕ)は,ϕによって示された割当てにおける,流量×距離の総和であり,部門間の交流におけるコストを示している.このコスト f(ϕ)を最小にする割当てを求める問題がQAPである.QAPは (4)式からもわかるように評価関数が距離と

流量との積になっているため,TSPに比べて解くことがはるかに困難である.また,QAPは組合せ最適化問題の解法のテスト問題としてよく使われるが,実際の応用問題も多くある.たとえば,大きなビルにおける部門の最適配置問題や,グローバル企業における事業所立地の最適配置問題などである.第 4図に示したように,順列 ϕの i番目の要素 j は,

部門 iに場所 jを割り当てることを示している.そこで,QAPをACOの解法に適用するには,部門 iに場所 jを

第 4 図 QAPの簡単な例(n=4)

割り当てる好ましさの度合いをフェロモン濃度 τijとすればよい.したがって,TSPの場合のフェロモン更新の第1式はQAPでもそのままとし,その式における∆τij,k

はTSPの第2式の代わりにQAPでは次式のようになる.

∆τij,k=

{1/f(ϕk), ϕkの iの要素に jを含むとき

0, それ以外(5)

ただし,ϕkは個体 kの順列であり,f(ϕk)はその関数値である.f(ϕk)の値が小さいほどこの値に反比例して新たに放出するフェロモン量が多くなる.また,個体 kのi番目の要素に j が選ばれる(部門 iに場所 j が選ばれる)選択確率 pkij(t)は (3)式と同じであるが,QAPでは同式における Jk(i)は個体 kについて部門 iに割り当てることができる場所(まだ割り当てられていない場所)のリストとなる.なお,(3)式によって得られる新しいϕk (k={1, 2, ···, m})

に対して,第 3図に示したようにローカルサーチが適用される.今回説明するACOによるQAPの解法では,タブーサーチ (Tabu Search, TS)[5]とよばれるローカルサーチを適用している.アルゴリズムの全体の計算時間に占めるTSの計算時間は大きく(5.3節の第 3表参照),また,GPUの適用における重要な並列化の対象の処理である.そこで,TSについて章を改めて少し詳しく説明しよう.

4. ローカルサーチとしてのタブーサーチQAPにおけるローカルサーチ (LS)として 2-OPT法

がよく知られている.一方,タブーサーチ (Tabu Search,

TS)[5]は,それ自身が組合せ最適化問題の解法に適用される強力なメタヒューリスティックスの一つであるが,進化計算と組み合わせてLSとしてもよく用いられる [12].QAPにおけるTSは 2-OPT法によく似たアルゴリズ

ムである.2-OPT法では常に最良近傍に移動させるのに対して,TSでは現在解の最良近傍解の関数値が現在解の関数値より悪くても最良近傍解に移動させる.この場合,移動先の近傍探索において移動元の解が最良近傍に

– 33 –

Page 4: GPU を用いた超並列高速計算入門—V 進化 ...tsutsui/paper/iscie-lecture.pdf · ニー最適化(Ant Colony Optimization, ACO) 法にタ ブーサーチ(Tabu Search, TS)を組み合わせ,最適化問

446 システム/制御/情報 第 60 巻 第 10 号  (2016)

第 5 図 TSの擬似コード

第 6 図 QAPにおける ϕの近傍の例

なる場合が当然起こりうる.このような場合,現在解が移動元に戻ってしまうことになる.TSはその名のとおり,そのような近傍への移動をある期間(禁断期間)禁止するということを特徴とする.移動が禁止される近傍(禁断近傍)は禁断リスト (Tabu list)とよばれるデータ構造で管理される.TSではこのような移動を決められた回数まで繰り返し,関数値の改良を図る.第5図にTSの擬似コードを示す.禁断近傍であっても

ある基準(アスピレーション基準)を満たせば移動を許す場合がある.本稿のTSでは標準的な基準である「最良解が更新された」場合としている.第 5図からわかるようにTSをQAPに適用する場合,

現在の解 ϕのすべての近傍N(ϕ)への移動による関数値f(ϕ)の変化量(以下,移動コストとよぶ)を計算しなければならない.近傍としては第 6図に示すように ϕの二つの位置の値を交換したものを採用する.ϕ′を ϕの r番目の要素と s番目の要素を交換して得ら

れた近傍解とすると,移動コスト

∆(ϕ,r,s)= f(ϕ′)−f(ϕ) (6)

は次式のようになり,その計算量はO(n)となる.

∆(ϕ,r,s)= arr(bϕ(s)ϕ(s)−bϕ(r)ϕ(r))+

ars(bϕ(s)ϕ(r)−bϕ(r)ϕ(s))+

asr(bϕ(r)ϕ(s)−bϕ(s)ϕ(r))+

ass(bϕ(r)ϕ(r)−bϕ(s)ϕ(s))+

n∑k=1,k =r,s

akr(bϕ(k)ϕ(s)−bϕ(k)ϕ(r))+

aks(bϕ(k)ϕ(r)−bϕ(k)ϕ(s))+

ark(bϕ(s)ϕ(k)−bϕ(r)ϕ(k))+

ask(bϕ(r)ϕ(k)−bϕ(s)ϕ(k))

(7)

ここで現在解 ϕが,TSの繰返しにおける一つ前の解φの rと sとの交換によって得られた解であるとし,移動コスト∆(φ,i,j) (i=1, 2, ···, n, j=1, 2, ···, n) を記憶する n×n個の領域を用いるとすると,現在解 ϕの移動コスト∆(ϕ,u,v)の計算は,{u,v}∩{r,s}= ∅が満たされる {u, v}に対しては (8)式のようになり,その計算量はO(1)となる [13].ここで紹介する研究では,この式を適用して高速化が

図れるように,∆(φ,i,j)の移動コストを記憶する n×n

個の記憶領域を用いる.

∆(ϕ,u,v)=∆(φ,u,v)+

+(aru−arv+asv−asu)×(bϕ(s)ϕ(u)−bϕ(s)ϕ(v)+bϕ(r)ϕ(v)−bϕ(r)ϕ(u))

+(aur−avr+avs−aus)×(bϕ(u)ϕ(s)−bϕ(v)ϕ(s)+bϕ(v)ϕ(r)−bϕ(u)ϕ(r)) (8)

5. ACOにタブーサーチを結合したアルゴリズムのGPU計算への実装

5.1 CUDAによるGPU計算の概要今まで述べたアルゴリズムの GPU への実装につい

て述べる前に,ここでは NVIDIA社の GPUを用いたCUDAによる並列計算の概要を簡単に振り返ろう.第 7

図にCUDAプログラミングモデルを示す.CUDAプログラムでは,スレッドはグリッド (grid)レベルとブロック (block)レベルの 2階層の並列構成をとる.ブロックは,スレッドの集合であり,1次元,2次元,または 3次元構成をとることができる.一方,グリッドはブロックの集合であり,1次元または 2次元構成をとることができる.複数の演算装置 (Core)からなるストリーミング・マル

チプロセッサ (Streaming Multiprocessor, SM)は,カーネル関数 (Kernel function)に記述されたコードをスレッドとして実行する.カーネル関数は,通常のデータ引数のほか,グリッドとブロックの定義を引数としてもつ.カーネル関数がコールされると,グリッドとブロックの定義にしたがってスレッドが生成され,それらのスレッドが一斉に実行される.なお,詳しくは本講座 I,II[17,18]

を参照していただきたい.

– 34 –

Page 5: GPU を用いた超並列高速計算入門—V 進化 ...tsutsui/paper/iscie-lecture.pdf · ニー最適化(Ant Colony Optimization, ACO) 法にタ ブーサーチ(Tabu Search, TS)を組み合わせ,最適化問

筒井:GPUを用いた超並列高速計算入門—V 447

第 7 図 CUDAプログラミングモデル

第 8 図 ACOのGPUへの実装の全体構成

5.2 CUDAアーキテクチャに基づく並列ACOの全体構成

QAPを解くためのCUDAに基づく並列化ACOの全体構成を第 8図に示した.この実装では,ACOの各ステップの機能はすべてGPUで実行されるカーネル関数としてコード化した(第 8図には主要な三つのカーネル関数,Construct solutions(···),Apply TS(···)およびUpdate Pheromone Density(···)を示している).CPUはACOの各カーネル関数を順次呼び出してACOの繰返しを制御するのみである.これにより,GPUからCPU

へのデータ転送は,ACOの各繰返しにおける最良解の関数値と繰返しの最終回における最良解のデータ(ϕ)のみである.したがって,CPUとGPUとの間の通信オーバヘッドは小さくなる.VRAMには,個体の集団,フェロモンマトリックス

τij,TSで用いる作業領域(第 4章の n×nの記憶領域∆(φ,i,j))ならびにQAPのデータ(3.2のフローマトリックス A= (aij)および距離マトリックス B = (bij))を配置している.なお,これらのデータの記憶場所はキャッシュ効果を得るためにテクスチャーメモリに設定している.第2表に,カーネル関数Construct solutions(···),Ap-

第 2 表 主要カーネル関数のグリッドとブロックの構成

第 3 表 ACOにおける処理時間の内訳

ply TS(···)および Update Pheromone Density(···)のグリッドとブロックの構成を示す(TTOTALは 5.4節を参照).いずれも一次元である.

5.3 GPUによる移動コスト計算の並列化の課題ACOをCPUによりシーケンシャル実行した場合の各

処理に要する時間の内訳の代表例を第 3表に示した.ここで tai50aなどはQAPの問題の名称であり,名称にある数字は問題サイズとなっている.この表からわかるように,TSの処理時間のアルゴリズム全体に占める割合が 99.9% 以上となっている.この処理時間の内訳から高速処理のためにはステップ 2のTSの効率的な実装が重要であることがわかる.したがって以下では,TSの部分(第 8図のカーネル関数Apply TS())を中心にその並列化について述べよう.カーネル関数 Apply TS()では,各ブロック内で TS

の繰返しごとに現在解 ϕ の近傍の移動コスト∆(ϕ,u,v)

の計算をしなければならない.ϕの近傍N(ϕ)のサイズをCとするとC=n(n−1)/2である(nは問題サイズ).TSの計算時間がアルゴリズム全体の大部分を占める理由は,これらC個の移動コストの計算に多くの時間を要するからである.したがって,この処理をブロック内で効率よく並列実行させることが重要となる.各ブロックにおいて移動コストの計算を並列化する単

純な方法は,現在解 ϕの C 個の近傍に対して第 9図のように番号を付与し,近傍の移動コストの計算をブロック内でこの番号に対応する C 個のスレッドに割り当てて並列に実行させる方法である.同図において,n=14,C =105であり,(8)式で現在解ϕ がφの 5と 11の要素を入れ替えて得られたものと仮定している.ここで,移動コストの計算量が,(7)式のO(n)のものは背景を黒の文字で示し,(8)式のO(1)であるものは背景を白の文字で示している.しかし,この方法では,つぎのような二つの解決しな

ければならない課題が発生する.まずは,C個の近傍のうち,移動コストの計算が (7)式のO(n)の計算量で行える近傍数はCO(n)=2n−3であり,(8)式のO(1)の計算量で行える近傍数はCO(1) =(n−2)(n−3)/2である.

– 35 –

Page 6: GPU を用いた超並列高速計算入門—V 進化 ...tsutsui/paper/iscie-lecture.pdf · ニー最適化(Ant Colony Optimization, ACO) 法にタ ブーサーチ(Tabu Search, TS)を組み合わせ,最適化問

448 システム/制御/情報 第 60 巻 第 10 号  (2016)

第 9 図 ϕの近傍の番号付け

第 4 表 近傍サイズの例

第 4表は各 nに対するC,CO(1)およびCO(n)を示している.これからわかるように,CO(n)はCの 10%以下であり,問題サイズ nが大きくなるにしたがってその割合は小さくなる.ストリーミング・マルチプロセッサ (Streaming Multi-

processor, SM)ではプログラムはスレッドとして実行されるが,ここで注意しなければならないことは,各スレッドは,「ウォープ (warp)」とよばれる 32 スレッドを単位として,各 SM で SIMD(Single Instruction/Multiple

Data) 風に実行されることである.したがって,同一ウォープ内のスレッドの計算が,分岐などにより相互に大きく異なる処理を実行する場合には,処理待ちに伴うアイドリングタイムが発生する.GPU におけるこのスレッドの実行法を,NVIDIA社では SIMT(Single In-

struction, Multiple Threads)とよんでいる [10].SIMT

では,同一ウォープ内では,できるだけ分岐処理がないようにプログラムを作成し,アイドリングタイムを少なくすることが非常に重要となる.今回の問題に当てはめると,わずかな割合であるO(n)

の計算量のスレッドが,大部分を占めるO(1)の計算量のスレッドと同じウォープ内で混在することになるため,第 10図に示すように分岐に伴いそのウォープに属するO(1),O(n)のスレッドともアイドリング時間が生じ,処理時間が長くなる.もう一つの課題は,一つのブロックにおける最大ス

レッド数に関するものである.CUDAではハードウエアの制限から,一つのブロックにおける最大スレッド数が1024である [18].第 4表からも明らかなように,たとえば問題サイズ 50でも近傍サイズCは 1225であり,すでにこのサイズで最大スレッドの制限を超えてしまう.

第 10 図 ウォープ内のアイドリング時間によるスレッド実行時間の遅延

5.4 移動コスト計算の効率的並列計算法MATA

この研究では,前節で述べた課題に対処する方法として MATA(Move-Cost Adjusted Thread Assignment)

とよび,以下のような手法を提案している.• O(1)の処理を行うスレッドとO(n)の処理を行うスレッドとを別のウォープとなるようにスレッド番号を割り当てる.

• O(n)の計算を行うスレッドには一つの近傍計算のみを割り当てるのに対して,軽い処理である O(1)

の計算を行うスレッドには,NO(1)(NO(1)>1)個の近傍計算を割り当てる.これを実現するため,MATA では処理オーバヘッ

ドを伴わない以下のような方法を用いる.まず,交換ペア(近傍)(u, v) に対して,第 9 図に示したように番号 k(k = 0, 1, 2, ···, C− 1) を付与する.あるスレッド番号 t=

⌊k/NO(1)

⌋には,k が t×NO(1) から

t×NO(1)+NO(1)−1までの近傍の計算を割り当てる.ここで,O(1)の処理の数は (n−2)(n−3)/2であるが,実装の容易さから C 個を割り当て,k が O(n) となる近傍計算のスレッドでは,スレッドでの計算がO(n)かO(1)かの分岐判定でO(n)と判定したのち直ちに終了して何も計算しない.したがって,O(1)の近傍計算が割り当てられるスレッドの総数はTO(1)=

⌈C/NO(1)

⌉となる.

O(n) の近傍計算は,ウォープのサイズが 32 であることから,32 単位の区切れ目となるスレッド番号TO(n) start =

⌈TO(1)/32

⌉×32から始まる TO(n) =2nの

スレッドにO(n)の処理を割り当てる.ここで,O(n)の個数は 2n−3であるが,先の場合と同様,実装の容易性から 2n個のスレッドを使い,3個のスレッドには何も計算させない.以上から,ブロック内において使用される総スレッド

数はTtotal=TO(n) start+2nとなる.第 11図にMATA

– 36 –

Page 7: GPU を用いた超並列高速計算入門—V 進化 ...tsutsui/paper/iscie-lecture.pdf · ニー最適化(Ant Colony Optimization, ACO) 法にタ ブーサーチ(Tabu Search, TS)を組み合わせ,最適化問

筒井:GPUを用いた超並列高速計算入門—V 449

第 11 図 MATAによる移動コスト計算のブロック内のスレッド構成

による近傍コスト計算のスレッドの構成を示す.この方式により,各スレッドのアイドリング時間を大幅に減少させることができる.

6. 並列計算の高速化の効果の実験本実験で用いた計算機はインテル社のCore i7 965 (3.2

GHz)プロセッサとNVIDIA社のGTX480を 1個搭載した PCである.実行は,Windows上の CUDA SDK

4.0を用いた.テスト問題にはQAPLIBベンチマークライブラリ [1]の問題を用いる.QAPLIBのテスト問題は,つぎの四つのクラス,すなわち,(1)ランダム生成問題,(2)グリッド距離ベースランダム問題,(3)実問題,(4)

実問題風に生成した問題,に分けられる [12].ここでの実験では,各種問題サイズを有するTaillardによるクラス (1)の問題(tai*aシリーズ)およびクラス (4)の問題(tai*b シリーズ)を用いる.

ACO により生成された一つの解に対する TS の繰返し回数を ITTS MAX (第 5 図参照),ACO の最大繰返し回数を ITACO MAX とすると,ITTOATAL =

m×ITACO MAX×ITTS MAXは,アルゴリズム中のTS

の総繰返し数となる.この実験ではITTOTAL=n×50000

に固定し,TSの総繰返し数が ITTOTALに達すること,もしくは最適解が得られたことをアルゴリズムの終了条件とした.その他詳しい実行条件は文献 [16]を参照していただきたい.第 5表に実験結果を示す.この実験では,各問題に対

して (1)MATAを用いたGPU計算,(2)MATAを用いないGPU計算(ウォープ内でO(1)とO(n)の混在を許す,以下,non-MATA)および (3)シングルスレッドで行っ

第 5 表 GTX480における結果

たCPU計算の3種類の実験を行い,実行時間(Tavg)および最適解からの誤差 (Error)((実行で得られた最良解−最適解)/最適解×100)を同表に示した.なお,値は10回の実行の平均である.なお,non-MATAでは,一つのブロック内のスレッド数は

⌈C/NO(1)

⌉としている.

まず,MATAと non-MATAの平均実行時間(Tavg)の比を見ると,tai100aでは 4.1倍,tai100bでは 4.3倍MATAの方が高速である.全体の平均で見ると 5.0倍高速となっている.これは 5.4節で述べたMATAが有効であることを示している.つぎにGPU計算と CPU計算の Tavg の比をMATA

で見ると,GPU計算は CPU計算に対して 13.8~30.3

倍高速になることを示しており,平均すると約 20倍の高速化が得られている.なお,ここで用いたGTX480は,NVIDIA社の 2世代前のFermiアーキテクチャのものであり,現在のMaxwellアーキテクチャのGPUではさらなる高速化と省電力化が達成されている.

7. おわりに以上本稿では,進化計算を概観した後,組合せ最適化

問題の中でも最も困難な問題の一つである 2次割り当て問題 (Quadratic Assignment Problem,QAP)を取り上げ,アントコロニー最適化 (Ant Colony Optimization,

ACO)法にタブーサーチ (TS)を組み合わせ,GPU計算により高速に解く研究を紹介した.GPUの進化計算への適用に関する研究や実用化に関して,さらに興味ある読者は,文献 [15]を参照していただきたい.GPUの進化計算への適用では,以下のことに留意す

る必要がある.進化計算の応用分野は多くあるが,実数値最適化分野と組合せ最適化分野に大別できる.実数値最適化分野は,航空機の形状設計やエンジンの設計など多次元の実数値パラメータを決定する問題などで,このような問題では,最適化過程での計算時間の大部分は第1図で示した「個体の評価」に費やされる.したがって進化計算自体の並列化による高速化はあまり重要でない.一方,組合せ最適化問題は,個体の評価に費やされる

時間よりも本稿で紹介したようなローカルサーチ (LS)

– 37 –

Page 8: GPU を用いた超並列高速計算入門—V 進化 ...tsutsui/paper/iscie-lecture.pdf · ニー最適化(Ant Colony Optimization, ACO) 法にタ ブーサーチ(Tabu Search, TS)を組み合わせ,最適化問

450 システム/制御/情報 第 60 巻 第 10 号  (2016)

を含めた探索処理に多くの時間が費やされ,GPUによる並列進化計算が有効となる.

(2016年 6月 6日受付)

参 考 文 献

[1] R. E. Burkard, E. Cela, S. E. Karisch and F. Rendl:

QAPLIB –a quadratic assignment problem library

(2009); www.seas.upenn.edu/qaplib.

[2] M. Dorigo and L. M. Gambardella: Ant colony sys-

tem: A cooperative learning approach to the travel-

ing salesman problem; IEEE Trans. on EC, Vol. 1,

No. 1, pp. 53–66 (1997)

[3] M. Dorigo, V. Maniezzo and A. Colorni: The ant sys-

tem: Optimization by a colony of cooperating agents;

IEEE Trans. on SMC-Part B, Vol. 26, No. 1, pp. 29–

41 (1996)

[4] M. Dorigo and T. Stutzle: Ant Colony Optimization,

MIT Press (2004)

[5] F. Glover and M. Laguna: Tabu Search, Kluwer

(1997)

[6] D. E. Goldberg: Genetic Algorithms in Search, Op-

timization and Machine Learning, Addison-Wesley

(1989)

[7] J. Kennedy and R. C. Eberhart: Particle swarm op-

timization; Proc. of the IEEE Int. Conf. on Neural

Networks, pp. 1942–1948 (1995)

[8] P. Larranaga and J. A. Lozano: Estimation of Dis-

tribution Algorithms, Kluwer Academic Publishers

(2002)

[9] H. Muhlenbein and G. Paaß: From recombination

of genes to the estimation of distribution I. Binary

parameters; Parallel Problem Solving from Nature

(PPSN IV), pp. 178–187 (1996)

[10] NVIDIA (2010);

developer.download.nvidia.com/compute/cuda/3 2

prod/toolkit/docs/CUDA C Programming Guide.pdf.

[11] R. Storn and K. Price: Differential evolution - a

simple and efficient heuristic for global optimization

over continuous spaces, Vol. 11, pp. 341–359 (1997)

[12] T. Stutzle and H. Hoos: Max-min ant system; Future

Generation Computer Systems, Vol. 16, No. 9, pp.

889–914 (2000)

[13] E. D. Taillard: Comparison of iterative searches for

the quadratic assignment problem; Location Science,

Vol. 3, No. 2, pp. 87–105 (1995)

[14] S. Tsutsui: cAS: Ant colony optimization with cun-

ning ants; Parallel Problem Solving from Nature, pp.

162–171 (2006)

[15] S. Tsutsui and P. Collet, editors: Massively Paral-

lel Evolutionary Computation on GPGPUs, Natural

Computation Series, Springer (2014)

[16] S. Tsutsui and N. Fujimoto: ACO with tabu search

on a GPU for solving QAPs using move-cost adjusted

thread assignment; Genetic and Evolutionary Com-

putation Conference, pp. 1547–1554, ACM (2011)

[17] 藤本: GPUを用いた超並列高速計算入門–I–GPUハードウェアの概要; システム/制御/情報, Vol. 60, No. 2,

pp. 79–85 (2016)

[18] 藤本: GPU を用いた超並列高速計算入門–II–低水準GPUプログラミング; システム/制御/情報, Vol. 60,

No. 4, pp. 166–173 (2016)

[19] 筒井: cAS:カニングアントを用いたACOの提案; 人工知能学会論文誌, Vol. 22, No. 1, pp. 29–36 (2007)

[20] 筒井: GPGPUを用いた並列アントコロニー最適化法による 2次割当て問題の高速解法; 電気学会論文誌 C

(電子・情報・システム部門誌), Vol. 133, No. 3, pp.

583–595 (2013)

著 者 略 歴つつ筒

い井

  

しげ茂

よし義

1944年生.1967年大阪市立大学工学部電気工学科卒業,1969年同大学大学院工学研究科修士課程修了.同年(株)日立製作所入社,1987年より阪南大学に勤務.現在大阪府立大学客員研究員,阪南大学名誉教授.2000年 4月~2001年 3月イリノイ

大学客員研究員.おもに進化計算の研究に従事.工学博士.1996 年度人工知能学会論文賞受賞.GECCO 2013 GPUs

for Genetic and Evolutionary Computation Competition

Winner.IEEE Life Memberなど.

– 38 –