CUDA による高速な磁束クリープ・フローモデルの数値計算と性能評価
松下研究室
石橋 知裕
平成 23 年 2 月 18 日
電子情報工学科

目次
第 1 章 序章
1.1 はじめに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 CUDA とは . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2 プログラムの構成 . . . . . . . . . . . . . . . . . . . . . . . .
1.2.3 CUDA のアーキテクチャ . . . . . . . . . . . . . . . . . . . .
1.3 NDIVIA の GPU の構造 . . . . . . . . . . . . . . . . . . . . . . . .
1.4 SPMD 演算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5 SIMD 演算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6 磁束クリープフローモデル . . . . . . . . . . . . . . . . . . . . . . .
1.6.1 磁束ピンニング . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.2 磁束クリープ . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.3 磁束フロー . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.4 磁束クリープ・フローモデル . . . . . . . . . . . . . . . . .
1.7 Simpson 法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.1 計算誤差を確かめる . . . . . . . . . . . . . . . . . . . . . .
1.8 遺伝的アルゴリズム . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.1 概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.2 個体操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.3 実数値 GA . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.4 島モデル . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9 目的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1
1
2
2
2
3
3
4
4
5
5
5
8
12
14
14
15
15
15
17
17
18

第 2 章 実験
2.1 実験環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 磁束クリープ・フローモデルの並列計算の最適手法 . . . . . . . . .
2.2.1 手法 A(simpson) . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2 手法 B(E-J) . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 GA による磁束クリープ・フローモデルのピンニングパラメータ探索プログラムの高速化 . . . . . . . . . . . . . . . . . . . . . . . . .

19
19
19
19
19

i

20

第 3 章 結果と考察
3.1 磁束クリープ・フローモデルの並列計算の最適手法 . . . . . . . . .
3.2 磁束クリープ・フローモデルの並列計算の最適手法 . . . . . . . . .
3.2.1 手法 B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 GA による磁束クリープ・フローモデルのピンニングパラメータ探索プログラムの高速化 . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 計算時間 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21
21
21
22
22
22

第 4 章 まとめ23
4.1 まとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2 今後の課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
参考文献

25

ii

図目次
1.1 NVIDIA の GPU の構造 . . . . . . . . . . . . . . . . . . . . . . . .
1.2 SIMD 演算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 磁束バンドルの位置とエネルギーの関係 . . . . . . . . . . . . . . .
1.4 磁束線が平衡位置から変位したときの (a) ピン力密度および (b) ピンニング・エネルギー密度の変化 . . . . . . . . . . . . . . . . . . .
1.5 磁束バンドルの形状 . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6 Simpson 法の分割数と誤差 . . . . . . . . . . . . . . . . . . . . . . .
1.7 BLX-α . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1

3
4
6
10
11
14
18

コア数に対する処理速度の関係 . . . . . . . . . . . . . . . . . . . . 21

iii

表目次
1.1

メモリの種類 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.1

実験環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.1

CPU と GPU の処理時間 . . . . . . . . . . . . . . . . . . . . . . . . 22

iv

3

第1章

1.1

序章

はじめに

GPU(Graphics Processing Units) は一般的に画像処理を専門とする演算装置であり、多くの場合、CPU(Central Processing Unit) と呼ばれる主演算装置の制御の下で用いられる動画信号生成専用の補助演算用 IC(Integrated Circuit) である。
画像処理の実時間内での生成は高負荷な演算能力が要求されるが、その多くが定式化された単純な演算の繰り返しであるためハードウェア化に向いており、GPUを製造している半導体メーカー数社からは、高速なメモリ・インターフェース機
能と高い画像演算能力を備えた IC 製品のシリーズがいくつも製造・販売されている。特に 1990 年代中盤以降は 3D 描画性能が劇的に向上し、それに伴い行列演算を中心とした SIMD(Single Instruction Multiple Data) 演算機の色彩が強くなってきた。2000 年代に入ると、表現力の向上を求めて GPU がシェーダ機能を強化す
るにつれ、OpenGL や Direct3D といった主なグラフィックライブラリは API に専用のプログラマブル（プログラム可能）なシェーディング機能（プログラマブル
シェーダ）を備えるようになり、演算の自由度が飛躍的に増した。そこでプログラ
マブルシェーダをグラフィック・レンダリングのみならず、他の数値演算にも利用するのが GPGPU（General-purpose computing on graphics processing units) のコンセプトである。
GPU の浮動小数点演算能力は 2005 年頃に 100GFLOPS をオーバーした一方で、CPU の浮動小数点演算能力は頭打ち状態にあり、2007 年時点で数十 GFLOPS の水準に留まっている。GPU は構成が単純であるために浮動小数点演算での効率がよ
く、GPU 専用にローカル接続されたメモリ IC とのメモリバンド幅を広く備えるために、CPU と比べて性能比で安価かつ成長の伸び率が高い。また主な使途がパソ
コンゲームと動画再生で、ゲームをしないユーザーにとって余り気味の資源ということもあって注目されている。DirectX 9.0 の登場以降、NVIDIA 社による GPGPU
専用の統合開発環境「CUDA(Compute Unified Device Architecture)」や、AMD社の「ATI Stream」が現われ、GPGPU 活用の幅が広がりつつある。また NVIDIA
社は自社の GPU「G80」をベースにした HPC(High-Performance Computing) 向
け GPGPU「Tesla」を投入するなど、従来のベクトル計算機からの置き換えを視野に置いた市場展開を行っている。
苦手だった GPU は倍精度の浮動小数点演算も、GPU から派生して新たに開発された GPGPU 用の IC では、倍精度浮動小数点演算やより広いメモリ空間に対応
1

したものがあり、これらは広範な科学技術計算への利用が期待される。

1.2

CUDA

1.2.1

CUDA とは

CUDA（Compute Unified Device Architecture）とは、NVIDIA 社が提供する
GPU 向けの C 言語の統合開発環境であり、コンパイラやライブラリなどから構成
されている。

1.2.2

プログラムの構成

スレッド

SP 上で動作するプログラムの最小単位
ブロック

スレッドをまとめたもの 1 ブロック内の最大スレッド数は 512 最大 3 次元まで拡
張できる
グリッド

ホスト側から GPU がカーネル関数で実行された時、指定されたブロックを制御する。ブロックをまとめたもの。1 グリッド内の最大ブロック数は 65535 最大
2 次元まで拡張できる 1 グリッドあたりの最大スレッド数は,65535x65535x512=
2198956147200。
プログラミング

プログラムには、CUDA の特性に合わせた数値解析の最適化をするために、メモリの最適化と、スレッドの最適化をした。メモリの最適化とは、GPU 上にある複数のメモリの特性に合わせた活用をしてメモリアクセス回数、メモリの使用量を減らすことである。次にスレッドの最適化とは、CUDA の場合ウォープ (32 スレッドで１ウォープ) 毎に条件分岐の判断し、SIMD 演算をするので、1 ウォープ中に分岐が起きるとウォープ・ダイバージェントが発生し処理速度の低下の原因となる。つまり、ブロック単位では複数の命令と複数のデータを扱い、同時に処理を行う SPMD（Single Program/Multiple Data）演算を行う。スレッド単位では複数のデータをベ2

クトルとして扱い、同時に処理を行う SIMD（Single Instruction/Multiple Data）
演算を行うように構成した。

1.2.3

CUDA のアーキテクチャ

1.3

NDIVIA の GPU の構造

GPU は実際に演算を行う SP(Scalar Processor)。プログラムを取得し、プロセッ
サが理解できる形式に変更し、SP に伝える SM(Streaming Multi-processor) と用途の違う複数のメモリで構成されている。

図 1.1: NVIDIA の GPU の構造

表 1.1: メモリの種類

メモリの種類

ホスト側のアクセス

デバイス側のアクセス

アクセス時間［Clock］

スコープ

容量

場所

Register

N/A

R/W

1

スレッド

8192[bit]

チップ上

Shared Memory

N/A

R/W

4〜16

ブッロク

16[kB]

チップ上

Constant Cache

N/A

R

1

スレッド

-

チップ上

Texture Cache

N/A

R

4〜16

スレッド

-

チップ上

Global Memory

R/W

R/W

100〜

グリッド

128[MB]〜2[GB]

チップ外

Local Memory

N/A

R/W

100〜

グリッド

-

チップ外

Constant Memory

W

R

-

グリッド

-

チップ外

Texture Memory

W

R

-

グリッド

-

チップ外

※ N/A：アクセス不可、R：読み込み可能、W：書き込み可能※アクセス時間・容量は、GTS250 の性能

3

1.4

SPMD 演算

SPMD (Single Process、 Multiple Data) は、複数のプロセッサが同時並行的に同じプログラムを実行する。ただし、SIMD や MISD (Multiple Instruction 、Multiple
Data) のように同じ箇所ではなく、それぞれ別の箇所を実行し、別々のデータを
使用する。

1.5

SIMD 演算

SIMD(Single Instruction Multiple Data) とは、演算装置において 1 回の命令で複数データに対する処理を同時に行うもの。演算装置設計手法の 1 つ。例えば、通常 32 ビットのデータを受け付けるプロセッサなら 128 ビットのデータを 4 回のクロックで計算するが、128 ビットのデータを受け付けるプロセッサは、1 回のクロックで処理が済む。ただ多くの場合、128 ビットを使い切るデータはあまりなく、一般に 128 ビットを 2 分割し 64 ビットとして使うか、4 分割して 32 ビットとして使うが、結局それぞれ 1 回のクロックで 2 倍、4 倍のデータ処理が可能になり、結果として相対的に低いクロックでも高い性能を引き出しやすい。

図 1.2: SIMD 演算

4

1.6

磁束クリープフローモデル

1.6.1

磁束ピンニング

直流電気抵抗無しで超伝導状態である超伝導体に流すことができる最大の電流を I c 、電流密度を Jc という。Jc は超伝導体の特性を評価する上で重要な値であり、Jc を決定する基本的な機構は磁束ピンニングである。
磁界中で超伝導体に電流を流すと、内部の磁束線に Lorentz 力 F L が働く。Lorentz
力 F L は、超伝導体に流れる電流密度を J 、超伝導体内部に侵入した磁束線の磁束密度を B とすると F L = J × B と書ける。磁束線が F L によって速度 ν を持つと、電磁誘導によって E = B × ν の誘導起電力が発生して損失が生じる。したがって、誘導起電力を発生させないために、磁束線の運動を止めなければならない。その作用が磁束ピンニングである。磁束ピンニングは転移、常伝導析出物、空隙、結晶粒界面など、あらゆる欠陥や不均質部分で起こる。こうした欠陥などをピンニング・センターと呼ぶ。磁束ピンニングにより、Lorentz 力がある値を超えるまで磁束線の動きを止めることで、損失なしに超伝導電流を流すことが可能となる。単位体積あたりのピンニング・センターが磁束線に及ぼす力をピン力密度
Fp とすると、超伝導体に流れる電流密度が誘導起電力が発生し始める臨界電流密度 Jc のとき、磁束線には単位体積あたり Jc B の Lorentz 力が働いており、これがピン力密度とつりあっているので、

Jc =

Fp
B

(1.1)

の関係があることがわかる。Fp は超伝導体に固有な特性ではなく、もっと巨視的な構造によって決まる後天的な特性である。そのため、ピンニング・センターを導入して Fp を強くすることで、大きな臨界電流密度を得ることが可能となる。

1.6.2

磁束クリープ

磁束クリープとは、ピンニング・センターに捕まった磁束線が熱振動によってある確率でピンニング・センターから外れてしまう磁束線の運動のことである。磁束線が移動するとき、磁束線は何本かまとまった集団で移動すると考えられ、この磁束線の集団を磁束バンドルという。磁束クリープの影響が現れるのは、超伝導永久電流の緩和である。理論的には、外部環境が変わらなければ超伝導体に流れる電流は減衰しないと考えられる。しかし、実際に超伝導体試料の直流磁化を長時間にわたって測定すると減衰することが確認できる。即ち、外部環境が一定であっても遮蔽電流が時間とともに減衰しており、ピンニングに基づく超伝導電流が真の永久電流ではないことを示している。高温になると熱活性化運動がより盛んになるため、電流の減衰が著しくなり、臨界電流密度がゼロになってしまう
ことようなことが起こる。これは特に高温超電導体でよく見られ、臨界電流密度5がゼロとなる時の磁界を不可逆磁界と呼ぶ。
いま、電流が流れている状態で 1 つの磁束バンドルを考える。その磁束バンド
ルを Lorentz 力の方向に仮想的に変位させていった場合のエネルギー変化は図 1.1のようになると考えられる。ただし、Lorentz 力は図 1.1 において右向きであると仮定している。エネルギーが全体として右下がりになっているのは Lorentz 力の仕事を考慮しているからである。図の谷の部分 (点 A, 点 C) は磁束バンドルがピン止めされている状態である。磁束バンドルがピン止めされた状態から外れるためには、点 B のエネルギー・バリアを超える必要がある。熱振動が無ければ磁束バン
ドルは動くことがないので、この図の状態で安定である。

図 1.3: 磁束バンドルの位置とエネルギーの関係

熱エネルギー kB T (kB は Boltzman 定数) がエネルギー・バリア U よりも十分小
さければ、磁束バンドルがこのバリアを超える確率は Arrhenius の式 exp(−U/kB T )で与えられる。また、この U を活性化エネルギーという。磁束バンドルが磁束線
格子間隔 af だけ変位すると、ほぼ元の状態に戻ると予想されるので、磁束バンド
ルが磁束クリープを起こして一度に移動する距離は磁束線格子間隔 af 程度であると考えられる。したがって、磁束バンドルの熱振動周波数を ν0 とすると Lorentz
力方向の平均の磁束線の移動速度 ν+ は以下のようになる。
(

ν+ = af ν0 exp −

U )
kB T

(1.2)

ただし、クリープの際の磁束バンドルの振動周波数 ν0 は以下の形で与えられる。

ν0 =ζρf Jc02πaf B(1.3)
6

ここで ζ はピンの種類に依存する定数であり、点状ピンの場合は ζ ≃ 2π 、サイズ
が af 以上の非超伝導粒子の場合は ζ = 4 であることが知られている。また、ρf はフロー比抵抗であり、Jc0 は磁束クリープがない場合の仮想的な臨界電流密度である。Lorentz 力とは逆方向の平均の磁束線の移動速度を考慮すると、全体としての平均の磁束線の移動速度 ν は以下のようになる。
[(

U
ν = af ν0 exp −
kB T

)

(

′

U
− exp −
kB T

)]

(1.4)

′

ただし、U は Lorentz 力と逆方向の運動に対する場合の活性化エネルギーである。
したがって、E = B × ν の関係から、生じる電界の大きさは以下のようになる。
[(

U
E = Baf ν0 exp −
kB T

)

(

′

U
− exp −
kB T

)]

(1.5)

磁束線がピンニング・センターに捕まった状態は一時的な安定状態であり、真の平衡状態ではないため、真の平衡状態への緩和、すなわち遮蔽電流の減衰が生じる。つまり、遮蔽電流の減衰は磁束クリープによる磁束線の運動によって、磁束密度の勾配が減少することに対応している。このため、遮蔽電流が時間とともに減少し、磁化の緩和が起こる。さらに磁束クリープが激しくなると、遮蔽電流がなくなる、すなわち真の平衡状態になるまで磁化の緩和が続く。
磁束クリープにより発生する電界は (1.5) 式で与えられる。一般的には、磁束バンドル位置に対するエネルギーの変化は図 1.1 のようなポテンシャルで近似的に与えられる。このポテンシャルを以下のように正弦的なものであると仮定する。
U0
F (x) =
sin(kx) − f x(1.6)
2
ここで、U0 /2 はポテンシャルの振幅、k = 2π/af はポテンシャルの周期、f = JBVは Lorentz 力の傾きを表していて、V は磁束バンドルの体積である。また、x は磁束バンドル中心の位置である。
磁束バンドルが平行位置にあるときを x = −x0 とし、x = x0 のときのエネル
ギーが極大となる、つまりそれぞれの位置でのエネルギー変化率はゼロとなるの′で、F (x) = 0 となる。これより
(

af
f af
x0 =
cos−1
2π
U0 π

)

(1.7)

が求まる。図 1.1 からエネルギー・バリア U は U = F (x0 ) − F (−x0 ) で与えられる
ので、
(

[

U = U0 sin cos
=

−1

f af
U0 π

)]

(

f af
f af
−
cos−1
π
U0 π

)



(
(
)2  12
)


2f
2f 
2f

U0  1 −
cos−1
−


U0 k 
U0 k
U0 k

7

(1.8)

√
と表される。ただし、ここで sin(cos−1 (x)) = 1 − x2 を用いており、また k = 2π/afと置いている。もし熱振動がなければ、U = 0 となる理想的な臨界状態が達成されるはずである。このためには、2f /U0 k = 2Jc0 BV /U0 k = 1 とならなければならない。このとき J = Jc0 となることから、一般に
(

2f
U0 k

)

=

J
=j
Jc0

(1.9)

の関係が得られる。j は規格化電流密度である。また、Jc0 はクリープがないと仮定したときの仮想的な臨界電流密度であり、経験的に、(

T
Jc0 = A 1 −
Tc

)m

(

B

γ−1

B
1−
Bc2

)2

(1.10)と表現できる。A、m、γ はピンニング・パラメータである。これより (1.8) 式は[U (j) = U0 (1 − j 2 )1/2 − j cos−1 j](1.11)となる。また、k = af /2π および (1.9) 式から′

U (j) ≃ U + f af = U + πU0 j(1.12)となる。この関係を用いて磁束クリープにより発生する電界 (1.6) 式を整理すると、[U (j)E = Baf ν0 exp −
kB T

][

(

πU0 j
1 − exp −kBT)](1.13)のように求まる。

1.6.3

磁束フロー

磁束フローとは、磁束クリープ状態からさらに電流を流したときに、磁束線が受ける Lorentz 力がピン力を超えてしまい、すべての磁束線が連続的に運動している状態である。図 1.1 で磁束フロー状態を説明すると、図に示す状態よりさらに Lorentz 力が増加すると、それに伴ってエネルギー・バリア U が減少する。すると、U が負の値をとる状態になり (J > Jc0 )、磁束バンドルが感じるエネルギー変化において安定状態を示す場所 (図 1.1 の点 A のような谷部分) が消失してしまうために、磁束バンドルが連続的に移動するようになる。ここで、U = 0 となる状態が臨界状態であると考えられ、そのときの電流密度が仮想的な臨界電流密度Jc0 で与えられる。
超伝導体に電流が流れており、そこに外部磁界が加わっているときに単位体積の磁束線に働く Lorentz 力は J × B で与えられる。一方、ピン力密度は Lorentz
力とは反対方向に働く。Lorentz 力方向の単位ベクトルを δ = ν/|ν| とすると、静8

的つりあいがとれる場合、すなわち仮想的な静的状態 (J < Jc0 ) でのつりあいの式
は、以下のようになる。

J × B − δFp = 0(1.14)

ここから J = Fp /B = Jc0 の関係が得られる。
一方、J > Jc0 となると、磁束フローを起こるので粘性力が働き、それを考慮したつりあいの式は以下のようになる。

J × B − δFp −Bην = 0ϕ0(1.15)

ここで ϕ0 は量子化磁束であり、η は粘性係数である。これに Jc0 = Fp /B およびE = B × ν の関係を用いて J について解くと、J = Jc0 +Rρf(1.16)となる。ここで ρf = Bϕ0 /η はフロー比抵抗である。(1.16) 式を E について整理す
ると、磁束フローにより発生する電界が以下のように求まる。

E = ρf (J − Jc0 )(1.17)

ここでは磁束クリープ現象において最も重要なパラメータであるピン・ポテン
シャル U0 を理論的に見積もる。ピン・ポテンシャルは磁束線の単位体積あたりの平均化したピン・ポテンシャルエネルギー Û0 と磁束バンドルの体積 V で表され、

U0 = Û0 V(1.18)となる。
磁束線の単位体積あたりに平均化したピン・ポテンシャル Û0 は Labusch パラ
メータ αL と相互作用距離 di を用いて、

Û0 =αL di 22

(1.19)と表せる。ここで αL および di は磁束クリープがないときの仮想的な臨界電流密度Jc0 と以下のような関係がある。

Jc0 B = αL di(1.20)

こうした変位によるピン力密度およびピンニング・エネルギー密度の変位を図 1.2に示す。変位が相互作用距離 di 以内であれば、磁束線の運動はほぼピン・ポテン
シャル内に限られるため可逆であるが、di を超えると現象は不可逆となり、ピン力密度は一般に知られた値に飽和していく。

9

図 1.4: 磁束線が平衡位置から変位したときの (a) ピン力密度および (b) ピンニング・エネルギー密度の変化

一方、磁束バンドルの形状は図 1.3 のように表される。1.3(a) のようにピンニ
ング相関距離 L よりも超伝導体の厚さ d が小さい場合は、縦方向の磁束バンドルのサイズは d によって制限を受ける。ここで、超伝導体の厚さ d が L よりも大きいとき、縦方向のバンドルサイズ L はクリープがないと仮定したときの磁束線の長さ方向の理想的な弾性相関距離 l44 なので、(

C44
L = l44 =
αL

(

)1/2

=

BαL
ζµ0 Jc0)1/2(1.21)

同様に、磁束線の横方向の弾性相関距離 R は l66 となり、(

C66
R = l66 =αL)1/2(1.22)

ここで、C66 と C44 は曲げおよびせん断のひずみに対する弾性定数で、C44 は

C44 =

B2
µ0

(1.23)

で与えられる。一方、C66 は磁束線の格子状態によって大きく変化し、完全な三角格子の場合には
(

Bc B
B
C66 =
1−
4µ0 Bc2
Bc2

)2
0
= C66

(1.24)
10図 1.5: 磁束バンドルの形状で与えられる。これは格子が乱れるにつれて小さな値となり、融解した状態ではゼロとなる。したがって、C66 は磁束線格子の状態によって変化し、C66 の実際の0
値は 0 から C66の間で値を取り得るが、決定論的には決まらない。また、ζ は相互作用距離 di と磁束線格子間隔 af を使って、

di =

af
ζ

(1.25)と表したときの定数である。
以上より、超伝導体の大きさが L、R より大きい場合の磁束バンドルの体積はV = LR2(1.26)と表され、ピン・ポテンシャルは

U0 =

af
Jc0 BR2 L
2ζ

(1.27)と表せる。
超伝導体のピンが極端に弱い場合を除いて、横方向磁束バンドルサイズ R は磁束線格子間隔 af 程度かその数倍程度であると考えられる。ピンがとても強い場合には理論的には横方向磁束バンドルサイズ R は af 以下になるが、実際には量子化
磁束 1 本より小さくなることはないので、横方向磁束バンドルサイズをR = gaf(1.28)のように表す。ここで、g 2 は横方向の磁束バンドルサイズの大きさを表す磁束バ
ンドル中の磁束線数である。したがって g 2 は (1.22) 式、(1.28) 式から

g2 =

C66
ζJc0 Baf(1.29)

11と表せる。また、完全な 3 次元的な三角格子の場合は0
C66
ζJc0 Bafge2 =(1.30)となり、g 2 の最大値を与える。上に述べた理由から C66 と同様に g 2 も決定論的に定まらない。そこで、熱力学的な方法を用いて g 2 の値は磁束クリープ下で臨界電流密度が最大となるように決定する。したがって、(1.27) 式のピン・ポテンシャ
ルは
1/2

U0 =

0.835kB g 2 Jc0
ζ 3/2 B 1/4(1.31)となる。
ここで図 1.3(a) のように超伝導体の厚み d が L よりも小さい場合における超伝導体のピン・ポテンシャルについて考える。この場合、(1.26) 式はV = dR2(1.32)

で与えられる。つまり、長さ方向の磁束バンドルの大きさが厚み d によって制限される。したがって、この場合の超伝導体のピン・ポテンシャルは

U0 =4.23g 2 kB Jc0 d
ζB 1/2(1.33)となる。本実験の解析では、ピンの形状は点状ピンであるとして、1.3.2 節で述べたように ζ は 2π を使用する。

1.6.4

磁束クリープ・フローモデル

ここまで述べたように、超伝導体には磁束クリープおよび磁束フローにより電界が発生する。磁束クリープによる電界成分 Ecr は以下のようになる。
[

Ecr

U (j)
= Baf ν0 exp −
kB T
[

(

][

= Baf ν0 1 − exp −

(

πU0 j
1 − exp −
kBT

πU0
kB T

)]

(J < Jc0 )(1.34))](J ≥ Jc0 )一方、磁束フローによる電界成分 Eﬀ は以下のようになる。

Eﬀ = 0(J < Jc0 )(1.35)= ρf (J − Jc0 )(J ≥ Jc0 )12

′

したがって、全体の電界 E は′

2
E = (Ecr+ Eﬀ2 )1/2

(1.36)のように近似的に与えられるとする。これは J < Jc0 の場合は E = Ecr となり磁束クリープのみの電界、J ≫ Jc0 のときには E ≃ Eﬀ となりほぼ磁束フロー状態になることを示している。
また、(1.10) 式から U0 の温度および磁界依存性が決定される。しかし、臨界温度 Tc やピンニングの強さは空間的に一様ではなく、分布していると予想される。
そこで、簡潔に (1.10) 式中で磁束ピンニングの強さを表す A のみが[(log A − log Am )2
f (A) = K exp −2σ 2](1.37)のように分布すると仮定する。ここで、K は規格化定数であり、σ 2 は分布広がりを表すパラメータである。また Am は A の最頻値である。このような A の分布を考慮に入れると、全体の電界はE(J) =∫ ∞′E f (A)dA(1.38)

0で与えられ、E − J 特性を評価することが可能となる。

13

Simpson 法

1.7

Simpson 法とは積分を数値積分するための手法である。被積分関数 f (x) を用いて以下の手順で積分値を近似していく。
∫ b
a

N

f (x)dx ≃

−1

N

2
2
∑
∑
h
[f (x0 ) + 2
f (x2n ) + 4
f (x2n−1 ) + f (xN )]
3
n=1
n=1

xn = a(1.39)(1.40)b−a(1.41)
N
N は積分区間の分割数。 N が大きくなるにつれ、積分区間を細かく足し合わ
せる。
h=

1.7.1

計算誤差を確かめる

手計算できる積分と Simpson 法を用いた数値積分とを比較するために次の関数を用意する。
∫ π

f (x) =

sin(x)(1.42)

0

手計算では積分値は 2 とする。 数値積分した結果から 2 を引いた値をプロットする。

図 1.6: Simpson 法の分割数と誤差

およそ、分割個数 N =1000 で誤差は 10−12 程度となり、誤差は h4 程度である。
14

1.8

遺伝的アルゴリズム

1.8.1

概要

遺伝的アルゴリズム (以下 GA) とは 1975 年にミシガン大学の John Henry Holland
によって提案された近似解探索のアルゴリズムである。このアルゴリズムはメタ
ヒュースティックアルゴリズムであり、特定の問題に依存しない、近似解の精度の保証がないという特徴がある。選択、交叉、突然変異といった生物の遺伝を模した操作を行うことによって、解の探索を行っていくものである。これらの内容については 1.4.2 節以降で説明する。
以下にアルゴリズムの流れの例を示す。

1. 個体数 N を格納できる配列を２つ用意する。これらを現世代を格納する配列(以下 now) と次世代を格納する配列 (以下 next) とする。
2. 現世代の配列にランダムな遺伝子を持つ個体を格納する。
3. 事前に用意した任意の評価関数に従って配列 now の各個体の評価を行い、適応度を計算する。
4. 確率的に選択、交叉、突然変異を行う。
5. 4 の動作を配列 next の個体数が N になるまで繰り返す。
6. 配列 next の個体を配列 now にコピーする。
7. 3 以降の動作を最大世代まで繰り返し、最終的な配列 now の個体の中で適応度が最も高いものを解とする。
1.8.2

個体操作

GA では選択、交叉、突然変異といった操作を行うことによって、解の探索を行っていく。この節ではこれらの説明を行う。
選択
この操作は自然淘汰をモデルとしたものである。適応度を用いたアルゴリズ
ムに従い、個体を操作する。例をいくつか示す。
ルーレット選択
個体数 N のある世代を対象に選択を行うとする。この時に個体 i が選ばれる確率を Pi 、i の適応度を fi とすると
Pi = ∑Nfifk=1 kとなるように選択を行っていく方法である。適応度をスケーリングして用いる場合もある。
15

ランキング選択
各個体を適応度の高い順に順位付けし、一位は確率 P1 、二位は P2 のようにあらかじめ順位に対して決まった確率を用いて選択する方法である。
エリート選択その世代の個体の中で適応度が最も高い、もしくは上位から任意の個体数を保存し、確実に次世代に引き継ぐ操作である。選択により最適解が悪化することを防げる反面、解の多様性が失われる可能性がある。
交叉
この操作は交配をモデルとしたものであり、各個体が持つ変数の値を入れ替える操作である。例をいくつか示す。以下の例では遺伝子長 10、遺伝子表現はバイナリ形式の以下の 2 個体間での交叉を行うものとする。
個体 A：1001001100
個体 B：0101011010
なおこの章でこれ以降に|が出てきた際は交叉点を示す。
一点交叉
任意の一点 (通常ランダムで選ばれる) を交叉点とし、それ以降のデータを入れ替える。
個体 A：100100|1100→100100|1010
個体 B：010101|1010→010101|1100
二点交叉
任意の二点を交叉点とし、これらに挟まれた部分のデータを入れ替える。
個体 A：10|01001|100→10|01011|010
個体 B：01|01011|010→01|01001|100
一様交叉
各変数それぞれをランダムに 1/2 の確率で入れ替える。
個体 A：1001001100→1101001010
個体 B：0101011010→0001011100

突然変異
この操作は突然変異をモデルとしたものであり、事前に決めた突然変異率に従い確率的に変数を変化させるものである。局所解への収束を防ぐ効果が期待できるが、突然変異率が高すぎると乱数解析に近づき解の収束に影響が出てくる。
16

1.8.3

実数値 GA

前節で説明した操作は個体のもつ遺伝子がビット形式で表現される際のものである。実際の数値解析に用いる際には遺伝子を実数で表現するほうが扱いやすい
ため、交叉や突然変異のような処理を実数型で考える必要がある。ここではそのために用いられるアルゴリズムを示す。
選択
この操作はビット形式の GA の場合と基本的には同じでよい。

交叉アルゴリズムとしてブレンド交叉 (BLX-α)、単峰性正規分布交叉 (UNDX)、
シンプレックス交叉 (SPX) などが知られている。以下では今回の実験で用いた BLX-α の説明を行う。
2 次元関数 A、B があり、それらの変数の値をそれぞれ A = X1 , Y1 、B = X2 , Y2とする。また X1 < X2 、Y1 < Y2 とする。この際に生成される子の遺伝子を
X3 、Y3 とすると
X1 − α(X2 − X1 ) ≤ X3 ≤ X2 + (X2 − X1 )Y1 − α(Y2 − Y1 ) ≤ Y3 ≤ Y2 + (Y2 − Y1 )のように選ぶ方法である。すなわち図 1.7 に示すような両親の各変数を頂点とする多次元直方体を両側に α 倍拡張したものの内部から選択するという方
法である。

突然変異
一様突然変異と境界突然変異という２種のアルゴリズムが知られている。0 ≤X ≤ 10 の範囲内での解析を行っていると仮定した場合、一様突然変異はこの範囲内から一様に実数値を生成する。これに対して境界突然変異は 0 若し
くは 10 が発生する乱数となる。境界突然変異は前述の交叉により発生しにく
い、変数の許容範囲の境界線上の値を持つ個体を生成するために用いられる。

1.8.4

島モデル

島モデルは分散 GA の手法の一つである。母集団を分散させることにより、遺伝子の多様性を保つことが可能となり、初期収束に陥る可能性を減らすことができる。島同士の個体の交換は移住という操作で行う。この操作は任意の世代ごとに任意の個体数を他の島に移住させるという操作である。この際に移住先を決める
操作は複数考えられるが、今回は Fisher-Yates 法を用いたランダムリングを形成することにより行っている。矢印は移住先と移住方向を示す。矢印が自分の島を指している場合は、今回はこの島からの移住はないという意味である。
17

αx

αx
αy

x

親1

y

親2
αy
図 1.7: BLX-α

1.9

目的

近年、GPU はプログラマブル・シェーダへの進化と共に汎用演算に適用され始め、GPU の高い処理能力、値段の安さ、導入が簡単な点と合わさり、個人で行える少規模で高速並列演算資源として期待されている。
磁束クリープ・フローモデルとは、超伝導体のピンニング特性を解析する際に用いるモデルの一つだが、解析を行う際に、5 つのピンニングパラメータ全てが合わ
さる解を求めなければならず、経験則がなければ、解析時間に多大な時間がかかる。このような時に、GPU を用いて高速計算できれば後々の解析を円滑に行うことができる。
本実験では、CUDA による磁束クリープ・フローモデルの計算を並列化し、高速な数値計算の実現し、超伝導体のピンニング特性の解析を円滑にするのが本研究の目的である。

18

第2章

2.1

実験

実験環境
表 2.1: 実験環境
Intel Core-i7 870
GeForceGTS250
コア数

4

SM 4 SP 128

動作周波数

2.93 [GHz]
4 [GB]

738 [MHz]
512 [MB]RAM

2.2

磁束クリープ・フローモデルの並列計算の最適手法

Simpson の分割数 90
E-J を求める回数 10,000
磁束クリープ・フローモデルを並列化する最適なパターンを求める。最適解の評
価は実行速度、汎用性の点から評価する。

2.2.1

手法 A(simpson)

磁束クリープ・フローモデルのプログラム中の数値積分を行う Simpson 法を並列化した。1 つの電界 E を求める。
CPU と GPU で分割数 N を変化させながら実行速度の比較を行なう。
また GPU のコア数による処理時間を試す。

2.2.2

手法 B(E-J)

複数の電流密度 J からそれぞれの E を求める。
1 スレッドで E-J を求める。
1 度のカーネルで複数の E-J が求められる。
実行時間は求める E-J 特性、Simpson 法の分割数 N 、変数に指定するピンニング
19

パラメータの数に依存。
スレッドごとにピンニングパラメータの設定が必要。

2.3

GA による磁束クリープ・フローモデルのピンニングパラメー
タ探索プログラムの高速化

試行回数 50
世代数 100
島 10
個体数 20
データ数 180 (20・25・30[K],1・2・3・4・5・6[T], 各 10 個)
Simpson の分割数 90(実験 2.2) の結果から最適な手法で磁束クリープ・フローモデルの並列計算を GA
によるピンニングパラメータの探索プログラムを組み込み高速化を行う。
GA によるピンニングパラメータの探索プログラムを並列化するに当たって、依存性のない範囲とで並列化するしなければならない。1 世代毎にのピンニングパラ
メータに対する E-J 特性の数値計算、島 *個体 * データ数＝

36,000 個を数値計算する。

20

第3章

結果と考察
処理速度

3.1

磁束クリープ・フローモデルの並列計算の最適手法

手法A(simpson)

4

手法B(E−J)23

処理速度[10 x Number of data/sec]

図 3.1 は、手法 A、手法 B で E-J を 10,000 個求めた時のコア数ごとの処理速度の依存性を示している。ため磁束クリープ・フローモデルの計算の最適な並列化は手法 B である。

0
0

100
コア数[個]

図 3.1: コア数に対する処理速度の関係

3.2

磁束クリープ・フローモデルの並列計算の最適手法

手法 A の結果においてはコア数を 8 から 16 に増やすと処理速度も比例しているが、コア数を 32 から 128 に増やしても処理速度が向上していない。手法 Aの場合、1 スレッドの処理内容が少ないため実行までの準備に時間かからないが、1 回の実行で 1 つの計算結果しか求めることができず、複数の計算結果を求める場
合に GPU の呼び出す回数が増える。
手法 A

21

3.2.1

手法 B

手法 B の場合は、コア数を 8 から 128 に増やした場合は、処理速度も比例して向上している。手法 B は 1 スレッドの処理内容が多いため GPU の準備に時間がかかるが、一度の実行で複数の計算結果をまとめて導出する

3.3

GA による磁束クリープ・フローモデルのピンニングパラメー
タ探索プログラムの高速化
表 3.1: CPU と GPU の処理時間
CPUGPU

720[min]25[min]手法 B で GA によるピンニングパラメータの探索アルゴリズムを E-J で並列処理したところ、計算時間が CPU では 720 分に対して、GPU は 25 分で計算することができた。

3.3.1

計算時間

CPU の計算時間については、構成に合わせたプログラムの最適化していないた
め処理に時間がかかっている。
CPU は GPU と違い計算中は他のプロセスによる同期などの問題で遅延が発生する。
実際に手計算で超伝導体のピンニング特性を解析していく場合、試料の材質からある程度のピンニング特性を 1 時間もかからずに求めることができるが、経験則に依存する傾向が強く、経験の少ない人間が解析すると多大な時間がかかり、研究に求められる精度を解析するとなると数カ月単位での時間が必要になってくる場合もある。今回の結果で計算時間の点においては、実用性のある成果を得ることができた。しかし、実際に求められたピンニングパラメータの精度を検討できていないので、実際に使用できる段階に到達していない。またプログラムの実行
途中で、計算結果が破損している部分があり問題点が多々見受けられる。

22

第4章

4.1

まとめ

まとめ

GPU で並列処理することによって、高速な磁束クリープ・フローモデルのプ
ログラムを実装することができた。
実際に手計算で超伝導体のピンニング特性を解析していく場合、試料の材質からある程度のピンニング特性を 1 時間もかからずに求めることができるが、経験則に依存する傾向が強く、経験の少ない人間が解析すると多大な時間がかかり、研究に求められる精度を解析するとなると数カ月単位での時間が必要になってくる場合もある。今回の結果で計算時間の点においては、実用性のある成果を得ることができた。しかし、実際に求められたピンニングパラメータの精度を検討できていないので、実際に使用できる段階に到達していない。

4.2

今後の課題

今回実装したプログラムには、実行途中で、計算結果が破損している部分があり問題点が多々見受けられる。また、手法 B で作成したプログラムは計算対象毎に変化させるパラメータを設定する必要がある。このプログラムを用いて解析を行うには、ある程度の CUDA の知識が必要になり、だれでも使えるようにより実用性のあるプログラムに改善する必要がある。
今後、精度向上と共に、角度依存性や他のパラメータを考慮した探索アルゴリズ
ムを作成し、手計算では難しい問題への解決策として発展して欲しい。

23

謝辞
本研究を行うにあたり、多大な御指導及び御助言を賜りました松下照男教授、小田部荘司教授、木内勝准教授に深く感謝を致します。
また、GA による磁束クリープ・フローモデルのピンニングパラメータの探索アル
ゴリズムを享受してくれた瓜生君に感謝します
さらに、様々な支援を頂いた松下研究室、小田部研究室、木内研究室の皆様に感謝の意を表します。

24

参考文献
[1] E.S. Otabe、K. Yamafuji、M. Kiuchi、M. Murakami、M. Jirsa、M. Muralidhar、N. Chikumoto、T. Fujiyoshi、T. Matsushita、Critical Currents in Superconductors、Chapter 5、pp.150、Fuzambo International (2005.6).
[2] 青木尊之、額田彰、「はじめての CUDA プログラミング」、工学社、2009 年発行[3] 枝本剛典、 「遺伝的アルゴリズムを用いた磁束クリープ・フローモデルのパラメータ解析」、2009 年度九州工業大学情報工学部卒業論文[4] CUDA ZONE、http://www.nvidia.co.jp/object/cuda ＿ showcase ＿ jp.html、
最終アクセス日 2011 年 2 月 15 日

25