Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PyCUDAの紹介

18,280 views

Published on

Published in: Technology
  • Follow the link, new dating source: ❤❤❤ http://bit.ly/2u6xbL5 ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating direct: ❤❤❤ http://bit.ly/2u6xbL5 ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

PyCUDAの紹介

  1. 1. PyCUDAの紹介<br />PythonとAWSですぐ始める<br />GPUコンピューティング<br />
  2. 2. お前、誰よ<br />尾上洋介(おのうえようすけ)<br />関西大学総合情報学部4年<br />CUDA,PyCUDAは卒研で使用<br />4月から同大学院<br />数理最適化アルゴリズムの開発,応用<br />株式会社スプーキーズアルバイト<br />Web開発,ソーシャルアプリ,Androidアプリなど<br />Twitter: @_likr<br />
  3. 3. GPGPU<br />
  4. 4. GPU処理の特徴<br />コア数が多い<br />メモリアクセスが高速<br />演算能力の費用対効果が高い<br />近年の性能向上率が高い<br />
  5. 5. 極端な誤解<br />何でも速くなるって聞いたんだけど!<br />何でも速くなるわけではない<br />うまく並列化できればCPUシングルスレッドの100倍ぐらいは出ることも<br />条件分岐が苦手って聞いたんだけど!<br />CPUとは条件分岐の機構がちょっと違う<br />条件分岐を工夫すれば速くなる場合もある<br />メモリアクセスの最適化の方が大事<br />
  6. 6. GPGPUの適用分野<br />画像処理,音声処理<br />流体計算,天体シミュレーション<br />線形計画問題,ナップサック問題,スケジューリング問題,金融工学<br />行列演算<br />
  7. 7. GPGPUのアーキテクチャ<br />ヘテロジニアスコンピューティング<br />メモリ間の転送がボトルネックになる<br />手続きが複雑<br />ホストのメモリの確保<br />デバイスのメモリ確保<br />デバイスへのデータ転送<br />デバイスでの計算<br />デバイスからのデータ転送<br />デバイスのメモリ解放<br />ホストのメモリ解放<br />Host<br />Memory<br />Device<br />Memory<br />Device<br />Memory<br />
  8. 8. `<br />BlockとThread<br />行列をうまく扱うような仕組み<br />const inti=blockDim.x* blockIdx.x + threadIdx.x;out[i] = 2 * in[i];<br />Block内のThread同士は同期可能<br />Block間の同期は不可能<br />Hostに戻す<br />Blocks<br />Threads<br />Grid<br />
  9. 9. CUDA<br />NVIDIA GPU向けの統合開発環境<br />パフォーマンスを上げるためにはカーネル関数内でのメモリアクセスの最適化が重要<br />カーネル関数はCや他言語のものと共通<br /> ->Pythonでも十分速くなる!<br />
  10. 10. Amazon EC2Cluster GPU Instance<br />
  11. 11. スペック<br />Intel Xeon X5570 × 2<br />64bit 4コア<br />NVIDIA Tesla M2050 × 2<br />448GPUコア<br />単精度ピーク時1.03Tflops<br />倍精度対応<br />Memory 22GB<br />高速なネットワーク<br />同一Placement Group内は高速通信可能<br />CentOS 5.5<br />同程度のマシンを買うと80〜100万円ぐらい?<br />
  12. 12. 費用<br />On-Demand Instance<br />$2.1 / hour (¥178.5 / hour)<br />1年¥1,563,660,3年¥4,690,980,…<br />Reserved Instance<br />1年 $5,630 (¥478,550)<br />$0.65 / hour (¥55 / hour)<br />3年 $8,650 (¥735,250)<br />$0.33 / hour (¥28 / hour)<br />+EBS料金など(月$2〜)<br />※$1 = ¥85で計算<br />
  13. 13. PyCUDA<br />
  14. 14. PyCUDA<br />CUDAのPythonバインディング<br />高度な抽象化<br />実行時コンパイル<br />
  15. 15. cf. PyOpenCl<br />NVIDIA以外のGPUや,マルチコアCPUでのヘテロジニアスコンピューティング<br />結局チューニングはデバイスに依存?<br />どっちがいいの?<br />好きな方を<br />http://wiki.tiker.net/PyCuda/FrequentlyAskedQuestions#Should_I_use_PyOpenCL_or_PyCUDA.3F<br />
  16. 16. インストール<br />NVIDIAドライバのインストール<br />CUDA Toolkitのインストール<br />pip install pycuda<br />
  17. 17. GPU Instanceへのインストール<br />CentOSだしちょっと面倒…<br />http://d.hatena.ne.jp/likr/20110213#1297602704<br />http://d.hatena.ne.jp/likr/20110214#1297664336<br />Cluster GPU InstanceにPython2.7とPyCUDAなどをインストールしたAMIを公開中<br />501488653145/PythonGPU<br />
  18. 18. SourceModule<br />カーネル関数をJITコンパイル<br />numpy.ndarrayを使ってデータの転送<br />
  19. 19. Cだと<br />
  20. 20. PyCUDAだと<br />
  21. 21. GPUArray<br />numpy.ndarrayライクなAPI<br />データがGPU上のメモリに確保される<br />演算はGPUで並列計算される<br />
  22. 22.
  23. 23.
  24. 24.
  25. 25.
  26. 26. ElementwiseKernelReductionKernel<br />毎回書くには面倒な定形処理を抽象化<br />
  27. 27. CでReduction<br />Shared Memory使ったり,条件分岐を工夫したり,入力サイズに応じて処理を変えたり…<br />サンプルで500行ぐらいあったから割愛!<br />
  28. 28. PyCUDAでReduction<br />
  29. 29. その他<br />Stream<br />Texture<br />Multi GPU<br />メタプログラミング<br />高速フーリエ展開等々<br />
  30. 30. 参考文献<br />Amazon EC2 Documentation<br />http://aws.amazon.com/documentation/ec2/<br />PyCUDA Documentation<br />http://documen.tician.de/pycuda/<br />PyCUDA wiki<br />http://wiki.tiker.net/PyCuda<br />はじめてのCUDAプログラミング青木尊之,額田彰(I・O BOOKS) <br />
  31. 31. Enjoy GPU Computing !<br />
  32. 32. ご清聴ありがとうございました<br />

×