2014年6月11日(水)-13日(金) 第43回数値解析シンポジウム・ポスター発表 も MAGMAとGPUを用いた線型常微分方程式の解析解計算 ~GPUベンチマークテストの一環として~ 幸谷 智紀 静岡理工科大学 総合情報学部 http://cs-tklab.na-inet.jp/ 1.目的 4. 行列指数関数exp(A) ①CUDAが普及したとはいえ,GPUプログラミングは煩雑で習得が難しい (という人が多い)。 ②倍精度線型計算はLAPACK/BLAS互換の高性能ライブラリの使用が スタンダードに。 Host Grid 0 Block 0 Local memory Grid 1 Block 1 S L L L L L L L L Block 2 L L L L Block 3 S L L S L L L L Grid 2 Grid 3 Block 1 Block 0 S S L L L Block 2 L L L L L Z2 := T -1Z1 Y(t) := Re Z2 L L Block 2 L L L Double Prec. exp(A) * y0: Speedup Ratio CPU vs. GPU GT640 is Faster! 2 1.5 Block 3 1 S L L L L 0.5 GTX780 is Faster! Device(GPU) 0 PCIe bus 64 128 256 512 1024 Dimension RAM ・PCIeバスを通じて のデータ転送が低速 ・CUDA Toolkitを使用してのプログラミング(特にカーネル関数)が複雑 ●MAGMAの特徴 MAGMA ・オープンソースソフトウェアとして無料 MAGMA LAPACK CUBLAS BLAS で使用できる(http://icl.cs.utk.edu/ BLAS Level1, 2 and 3 CUDA magma/) ・通常のCPU用プログラミング(ホストプログラム)として作成可能 ・LAPACKと同様の関数が使用可能→LAPACKベースのホストプログラ ムのGPU使用対応作業が楽 DGEEV(PhenomII+GT640) Host(CPU) Tridiag Dim 64 128 256 512 1024 2048 4096 8192 CPU/GPU 7 5 // LAPACK(Row-Major or Column-Major) info = LAPACKE_dgeev(LAPACK_COL_MAJOR, 'N', 'V', dim, ma, dim, re_eig, im_eig, NULL, dim, revec, dim); 2 Host DGESV A GPU T, Λ z1 := T -1y0 z2 := exp(tΛ) z1 magma_dgeev magma_dgesv A T, Λ z1 := T -1y0 z3 := T z2 y(t) := Re z3 8192 Time(s) PhenomPhenomII II+GT640 0.1 1.0 0.3 1.4 2.8 1.8 7.9 6.9 30.0 23.0 172.2 108.4 1305.5 781.7 6131.5 2656.6 ||exp(A)||_F RelDiff 2.58E-15 3.20E-14 3.24E-15 8.41E-15 5.11E-14 6.92E-13 6.88E-14 2.56E-12 Time(s) ||exp(A)||_F Corei7H+GTX Corei7H RelDiff 780 0.01 0.59 2.58E-15 0.06 0.65 2.02E-14 0.4 1.67 1.49E-13 2.15 3.29 1.61E-13 5.84 5.62 1.06E-14 26.78 20.85 8.30E-13 189.51 138.71 2.13E-13 1499.66 913.38 1.12E-11 Double Prec. exp(A): Speedup Ratio CPU vs. GPU GT640 is Faster! 3 GTX780 is Faster! 1 0 128 512 1024 2048 4096 Dimension DGSYEVD(PhenomII+GT640) DGSYEVD(Corei7H+GTX780) DGEEV(PhenomII+GT640) DGEEV(Corei7H+GTX780) DSYEVD Dim 128 256 512 1024 2048 4096 8192 DGEEV DGEMV 4096 DGEEV(Corei7H+GTX780) 4 64 3. 線型常微分方程式(ODE)の解析解 2048 6 // MAGMA(Column-Major) magma_dgeev('N', 'V', dim, magma_ma, dim, re_eig, im_eig, NULL, dim, magma_revec, dim, h_work, (magma_int_t)lwork_num, &info); DGEEV ・計算性能はCPU, GPU 共,Core i7H (+ GTX780)が圧倒的に高 い ・CPU性能に対するGPU 性能向上比はPhenom II x6 + GT640の方が高 い L S L CPU/GPU 2.5 S L S L Block 1 S Block 3 S L Block 0 Constant memory S L L Global memory L Z2 := Z1T -1 DGESV S Texture memory L Block 1 S Block 3 S L Block 0 S Block 2 L magma_dgesv Z1 := Z1Y0 [共通Software] CUDA 6.0 x86_64 + MAGMA 1.4.1 + Intel C Compiler 14.04 [Corei7H+GTX780] Intel Core i7 4770(3.4GHz) + GTX780 (3GB) [PhenomII+GT640] AMD Phenom II x6 + GT640 (512MB) Thread 2 Shared Thread 1 memory Thread 0 L A 5. ベンチマークテスト 2. GPUとMAGMA L T, Λ magma_dgeev Z1 := T exp(tΛ) ○LAPACK互換のMAGMA(Matrix Algebra on GPU and Multicore Architectures)を使ったベンチマークテストを行い,教育用コンテンツとして使 いたい。 ○線型常微分方程式(LODE)の解析解を固有値計算を用いて解いてみ る(倍精度計算で高精度な対角化が可能な行列に限定)。・・・適度に複 雑で,(理工系の数学的素養があれば)誰でも分かるものを選択。 ●GPUの特徴と機 能 ・低性能な演算コ アを多数備えるの で並列処理が得意 ・グラフィックスカー ド上のメモリを使用 し,CPU(Host)側の RAMとは分離され ている。 T, Λ A DGEEV GPU 256 8192 ・計算性能に関してはベ クトルのケースと同様の 傾向 ・実対称行列行列用の計 算はCPU側の処理が少 なく,GPUによる性能向 上率が高い Time(s) ||exp(A)||_F Time(s) PhenomII Phenom- RelDiff Corei7H Corei7H+G 0.52 1.62 2.81 9.26 56.6 457.95 3014.67 0.86 1.42 2.16 4.31 13.81 76.71 458.94 Time(s) Dim PhenomII 128 256 512 1024 2048 4096 8192 0.55 4.62 11.19 39.52 225.12 1674.83 8433.5 PhenomII+GT640 1.16 2.96 9.09 38.11 148.33 1082.68 4697.03 1.17E-14 0 1.23E-14 2.44E-14 5.32E-14 0 2.32E-13 ||exp(A)||_F 0.03 0.08 0.23 1.19 8.98 74.08 595.81 0.02 0.56 0.78 2.14 5.87 30.09 175.39 Time(s) Corei7H+G RelDiff Corei7H TX780 8.83E-15 0.05 0.5 7.42E-15 0.2 0.63 6.23E-15 0.93 1.48 7.92E-15 3.15 4.03 9.48E-14 17.24 15.46 6.68E-14 113.27 85.42 6.5E-13 968.17 688.32 ||exp(A)||_F RelDiff 2.05E-14 0 1.47E-14 5.67E-14 1.64E-14 1.49E-14 1.75E-13 ||exp(A)||_F RelDiff 0 6.2E-15 4.23E-15 2.99E-15 2.76E-14 2.41E-14 9.52E-15 →今後の課題:行列ごとに「成功」「失敗」のデータベースを作成 Copyright © 2014 Tomonori Kouya, All rights reserved.
© Copyright 2024 Paperzz