[関東GPGPU勉強会#2] ライブラリを使って大規模疎行列線形方程式を解いてみよう

2,581
-1

Published on

関東GPGPU勉強会#2で青子守歌が発表した資料です。
http://atnd.org/events/39073

Published in: Technology, News & Politics
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,581
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

[関東GPGPU勉強会#2] ライブラリを使って大規模疎行列線形方程式を解いてみよう

  1. 1. aokomoriuta (2013-06-01): 関東GPGPU勉強会青子守歌ライブラリを使って大規模疎行列線形方程式を解いてみよう
  2. 2. - 2 -aokomoriuta (2013-06-01): 関東GPGPU勉強会まずはじめに
  3. 3. - 3 -aokomoriuta (2013-06-01): 関東GPGPU勉強会感謝を述べましょうThank you!!!!!!!!!!!!!!山田さん&YamadaSysems<まずはじめに>
  4. 4. - 4 -aokomoriuta (2013-06-01): 関東GPGPU勉強会自己紹介
  5. 5. - 5 -aokomoriuta (2013-06-01): 関東GPGPU勉強会名前とアバター青子守歌 / aokomoriuta※call me “あお”<自己紹介>
  6. 6. - 6 -aokomoriuta (2013-06-01): 関東GPGPU勉強会いろんなとこのアカウントtwitter: @aokomoritagithub: aokomoriutaweb: j.mp/ao_komoriuta<自己紹介>
  7. 7. - 7 -aokomoriuta (2013-06-01): 関東GPGPU勉強会専門分野分類:土木工学>水理学>計算力学粒子法(MPS法)を用いた計算力学@土木工学(主に水工学分野)<自己紹介>
  8. 8. - 8 -aokomoriuta (2013-06-01): 関東GPGPU勉強会計算力学とは実験空間 計算空間File:Coastal defences, Beesands - geograph.org.uk - 69707.jpgby Nigel Chadwick : CC-BY-SA 2.0 GenericFile:Gileston20.jpgby Mick Lobbi : CC-BY-SA 2.0 GenericFile:Dolos.jpgby Adam Brinki : CC-BY-SA 3.0 Unported現実空間海岸工学・水工学分野において代替となりうるか?<自己紹介>
  9. 9. - 9 -aokomoriuta (2013-06-01): 関東GPGPU勉強会こんなこと言ってますのでプログラマじゃないです!!計算力学屋です!<自己紹介>(超重要)
  10. 10. - 10 -aokomoriuta (2013-06-01): 関東GPGPU勉強会だからカーネルがりがり低レイヤー最適化<自己紹介>嫌!!
  11. 11. - 11 -aokomoriuta (2013-06-01): 関東GPGPU勉強会というわけでライブラリを使ってらくらく<自己紹介>
  12. 12. - 12 -aokomoriuta (2013-06-01): 関東GPGPU勉強会解法の紹介
  13. 13. - 13 -aokomoriuta (2012-09-11): 関東GPGPU勉強会共役勾配法連立一次方程式の解法<解法の紹介>ベクトル・行列演算を収束するまで繰り返すAx=bを解くx・Ax/2 - x・bを最小化※Aが対称正定値のみ
  14. 14. - 14 -aokomoriuta (2012-09-11): 関東GPGPU勉強会共役勾配法アルゴリズムap=Axr2=r・rap=Apα=r2 / p・apx=x + αpp=rr=b - apr=r - αapr2=r・rβ=r2/r2p=r + βp収束するまで繰り返し<解法の紹介>
  15. 15. - 15 -aokomoriuta (2012-09-11): 関東GPGPU勉強会共役勾配法の内訳ap=Axr2=r・rap=Apα=r2 / p・apx=x + αpp=rr=b - apr=r - αapr2=r・rβ=r2/r2収束するまで繰り返しp=r + βp行列とベクトルの積ベクトル同士の加減ベクトルの複製ベクトルの内積行列とベクトルの積ベクトルの内積ベクトルの内積ベクトル同士の加減ベクトル同士の加減ベクトル同士の加減浮動小数点演算<解法の紹介>
  16. 16. - 16 -aokomoriuta (2012-09-11): 関東GPGPU勉強会共役勾配法は<解法の紹介>GPGPU向き?行列・ベクトル演算だけで解ける!!
  17. 17. - 17 -aokomoriuta (2013-06-01): 関東GPGPU勉強会GPGPU行列演算ライブラリ
  18. 18. - 18 -aokomoriuta (2012-09-11): 関東GPGPU勉強会GPGPU行列演算ライブラリ<ライブラリ>・CUBLAS/cuSPARSE・MAGMA・APPML・ViennaCLCUDAOpenCL両方
  19. 19. - 19 -aokomoriuta (2012-09-11): 関東GPGPU勉強会一番速いのは<ライブラリ>おそらくCUBLAS/cuSPARSE(※もちろん環境による)
  20. 20. - 20 -aokomoriuta (2012-09-11): 関東GPGPU勉強会一番手軽なのは<ライブラリ>(※もちろん環境による)おそらくViennaCL
  21. 21. - 21 -aokomoriuta (2012-09-11): 関東GPGPU勉強会今日は<ライブラリ>(せっかくTitanが使えるので)CUBLAS/cuSPARSE
  22. 22. - 22 -aokomoriuta (2013-06-01): 関東GPGPU勉強会CUBLAS/cuSPARSE
  23. 23. - 23 -aokomoriuta (2012-09-11): 関東GPGPU勉強会CUBLAS<CUBLAS/cuSPARSE>(CUDA SDKに標準付属)BLASがCUDAで使えるライブラリby NVIDIA
  24. 24. - 24 -aokomoriuta (2012-09-11): 関東GPGPU勉強会cuSPARSE<CUBLAS/cuSPARSE>(CUDA SDKに標準付属)CUBLAS=密行列cuSPARSE=疎行列
  25. 25. - 25 -aokomoriuta (2012-09-11): 関東GPGPU勉強会再掲:共役勾配法ap=Axr2=r・rap=Apα=r2 / p・apx=x + αpp=rr=b - apr=r - αapr2=r・rβ=r2/r2収束するまで繰り返しp=r + βp行列とベクトルの積ベクトル同士の加減ベクトルの複製ベクトルの内積行列とベクトルの積ベクトルの内積ベクトルの内積ベクトル同士の加減ベクトル同士の加減ベクトル同士の加減浮動小数点演算<CUBLAS/cuSPARSE>
  26. 26. - 26 -aokomoriuta (2012-09-11): 関東GPGPU勉強会必要な演算・行列=ベクトル積・ベクトル加減・ベクトル内積・ベクトルの複製・浮動小数点演算<CUBLAS/cuSPARSE>
  27. 27. - 27 -aokomoriuta (2012-09-11): 関東GPGPU勉強会ベクトル複製<CUBLAS/cuSPARSE>cublasDcopy_v2(cublas,count,x, offsetXy, offsetY);count: ベクトルのサイズoffsetX, offsetY: 演算を開始するベクトルの先頭(通常は1)cublas: 後述@p.27COPYy = x
  28. 28. - 28 -aokomoriuta (2012-09-11): 関東GPGPU勉強会ベクトル加減<CUBLAS/cuSPARSE>cublasDaxpy_v2(cublas,count,&alpha,x, offsetXy, offsetY);count: ベクトルのサイズoffsetX, offsetY: 演算を開始するベクトルの先頭(通常は1)cublas: 後述@p.27AXPYy = αx + y
  29. 29. - 29 -aokomoriuta (2012-09-11): 関東GPGPU勉強会ベクトル内積<CUBLAS/cuSPARSE>cublasDdot_v2(cublas,count,x, offsetX,y, offsetY,&z);count: ベクトルのサイズoffsetX, offsetY: 演算を開始するベクトルの先頭(通常は1)cublas: 後述@p.27DOTz = x・y
  30. 30. - 30 -aokomoriuta (2012-09-11): 関東GPGPU勉強会行列=ベクトル積<CUBLAS/cuSPARSE>cusparseDcsrmv_v2(cusparse,CUSPARSE_OPERATION_NON_TRANSPOSE,count, count, elementsCount,&alpha,matDescr,elements, rowOffsets, columnIndeces,x,&beta, y);y = αAx + βycount: 行列のサイズelementsCount: 行列の非ゼロ要素数elements, rowOffset, columnIndeces: 係数行列AのCSR形式cusparse, matDescr: 後述@p.27CSRMV
  31. 31. - 31 -aokomoriuta (2012-09-11): 関東GPGPU勉強会準備するもの<CUBLAS/cuSPARSE>cublasHandle/cusparseHandle// CUBLASハンドルを作成::cublasHandle_t cublas;::cublasCreate(&cublas);// cuSPARSEハンドルを作成::cusparseHandle_t cusparse;::cusparseCreate(&cusparse);cusparseMatDescr// 行列形式を作成// * 一般的な形式// * 番号は0から開始::cusparseMatDescr_t matDescr;::cusparseCreateMatDescr(&matDescr);::cusparseSetMatType(matDescr, CUSPARSE_MATRIX_TYPE_GENERAL);::cusparseSetMatIndexBase(matDescr, CUSPARSE_INDEX_BASE_ZERO);
  32. 32. - 32 -aokomoriuta (2012-09-11): 関東GPGPU勉強会詳しくは<CUBLAS/cuSPARSE>リファレンス見てね!・http://docs.nvidia.com/cuda/cublas/index.html・http://docs.nvidia.com/cuda/cusparse/index.html
  33. 33. - 33 -aokomoriuta (2013-06-01): 関東GPGPU勉強会コード解説・デモ
  34. 34. - 34 -aokomoriuta (2012-09-11): 関東GPGPU勉強会URLはこちら<コード解説・デモ>https://github.com/aokomoriuta/ConjugateGradient/tree/master/SimpleConjugateGradientTitanで動かしてみます!
  35. 35. - 35 -aokomoriuta (2012-09-11): 関東GPGPU勉強会CPUは?<コード解説・デモ>boost::numeric::ublas割と最適化されてて速いらしい
  36. 36. - 36 -aokomoriuta (2012-09-11): 関東GPGPU勉強会比較しなきゃ!!<コード解説・デモ>01:30 就寝08:00 起床11:11 GPU側コード書き終わり12:47 資料作成終わり13:57 会場入り(遅刻)14:00 エクストリームコーディング開始
  37. 37. - 37 -aokomoriuta (2012-09-11): 関東GPGPU勉強会エクストリームコーディング1<コード解説・デモ>serializationなんて用意してない@手元のノートPC
  38. 38. - 38 -aokomoriuta (2012-09-11): 関東GPGPU勉強会エクストリームコーディング2<コード解説・デモ>型チェック(?)で怒られる@YamadaSystem
  39. 39. - 39 -aokomoriuta (2012-09-11): 関東GPGPU勉強会頑張ったよ!<コード解説・デモ>CPUとの比較ができませんでしたぁぁ!!私が無能なばかりに(略)
  40. 40. - 40 -aokomoriuta (2012-09-11): 関東GPGPU勉強会はい<コード解説・デモ><お断り>前のページは、主宰者はじめ周囲からの圧力があったので入れたかっただけです。
  41. 41. - 41 -aokomoriuta (2012-09-11): 関東GPGPU勉強会結論<コード解説・デモ>GPGPUライブラリを使うと簡単に線形方程式が解けますね!
  42. 42. - 42 -aokomoriuta (2013-06-01): 関東GPGPU勉強会余談
  43. 43. - 43 -aokomoriuta (2012-09-11): 関東GPGPU勉強会GPGPU勉強会<余談>関西・関東GPGPU勉強会盛り上がってるなー
  44. 44. - 44 -aokomoriuta (2012-09-11): 関東GPGPU勉強会でも<余談>個人的にはなんか不完全燃焼な感じ
  45. 45. - 45 -aokomoriuta (2012-09-11): 関東GPGPU勉強会なんで<余談>GPGPUが専門じゃないから!!
  46. 46. - 46 -aokomoriuta (2012-09-11): 関東GPGPU勉強会みなさんの<余談>専門/興味分野はなんですか?
  47. 47. - 47 -aokomoriuta (2012-09-11): 関東GPGPU勉強会やりませんか<余談>計算シミュレーション勉強会
  48. 48. - 48 -aokomoriuta (2012-09-11): 関東GPGPU勉強会計算シミュレーション勉強会<余談>計算機を使ってシミュレーションしてる人たちの勉強会?
  49. 49. - 49 -aokomoriuta (2012-09-11): 関東GPGPU勉強会シミュレーション<余談>「シミュレーション」と言えればなんでも!(自称/他称問わず)
  50. 50. - 50 -aokomoriuta (2012-09-11): 関東GPGPU勉強会構想段階<余談>Coming not soon...
  51. 51. aokomoriuta (2012-10-13): 関東GPGPU勉強会一部で特別な指定があるものを除き、全ての文章と画像はクリエイティブ・コモンズ 表示-継承または表示-非営利 3.0 非移植で利用可能です。Otherwise noted, all text and images are availableunder the Creative Commons Attribution-Share Alike or Attribution-Noncommercial 3.0 Unported.CC-BY-SA: http://creativecommons.org/licenses/by-sa/3.0 CC-BY-NC: http://creativecommons.org/licenses/by-nc/3.0return 0;

×