Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
なおき きしだ
PDF, PPTX
9,422 views
GPUをJavaで使う話(Java Casual Talks #1)
GPUとは何か、GPUをJavaで使うにはどうするか
Software
◦
Read more
5
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 29
2
/ 29
3
/ 29
4
/ 29
5
/ 29
6
/ 29
Most read
7
/ 29
8
/ 29
9
/ 29
Most read
10
/ 29
11
/ 29
12
/ 29
13
/ 29
14
/ 29
Most read
15
/ 29
16
/ 29
17
/ 29
18
/ 29
19
/ 29
20
/ 29
21
/ 29
22
/ 29
23
/ 29
24
/ 29
25
/ 29
26
/ 29
27
/ 29
28
/ 29
29
/ 29
More Related Content
PDF
高速な倍精度指数関数expの実装
by
MITSUNARI Shigeo
PDF
不遇の標準ライブラリ - valarray
by
Ryosuke839
PDF
プログラムを高速化する話Ⅱ 〜GPGPU編〜
by
京大 マイコンクラブ
PDF
C++ マルチスレッド 入門
by
京大 マイコンクラブ
PDF
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
by
Preferred Networks
PDF
できる!並列・並行プログラミング
by
Preferred Networks
PDF
OpenCLに触れてみよう
by
You&I
PDF
例外設計における大罪
by
Takuto Wada
高速な倍精度指数関数expの実装
by
MITSUNARI Shigeo
不遇の標準ライブラリ - valarray
by
Ryosuke839
プログラムを高速化する話Ⅱ 〜GPGPU編〜
by
京大 マイコンクラブ
C++ マルチスレッド 入門
by
京大 マイコンクラブ
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
by
Preferred Networks
できる!並列・並行プログラミング
by
Preferred Networks
OpenCLに触れてみよう
by
You&I
例外設計における大罪
by
Takuto Wada
What's hot
PDF
【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる
by
Yasuhiro Yoshimura
PPTX
HttpClient詳解、或いは非同期の落とし穴について
by
Yoshifumi Kawai
PDF
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
by
智啓 出川
PDF
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
by
智啓 出川
PDF
Chainer で Tensor コア (fp16) を使いこなす
by
NVIDIA Japan
PDF
GoによるWebアプリ開発のキホン
by
Akihiko Horiuchi
PDF
[DL輪読会]近年のエネルギーベースモデルの進展
by
Deep Learning JP
PDF
SAT/SMTソルバの仕組み
by
Masahiro Sakai
PDF
すごい constexpr たのしくレイトレ!
by
Genya Murakami
PDF
C++ マルチスレッドプログラミング
by
Kohsuke Yuasa
PDF
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
PDF
こわくない Git
by
Kota Saito
PDF
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
by
shinjiigarashi
PDF
関数型プログラミングのデザインパターンひとめぐり
by
Kazuyuki TAKASE
PPTX
DockerコンテナでGitを使う
by
Kazuhiro Suga
PDF
いまさら聞けない!CUDA高速化入門
by
Fixstars Corporation
PPTX
Map
by
kikairoya
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
by
Preferred Networks
PDF
[DL輪読会]Weight Agnostic Neural Networks
by
Deep Learning JP
PDF
20分くらいでわかった気分になれるC++20コルーチン
by
yohhoy
【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる
by
Yasuhiro Yoshimura
HttpClient詳解、或いは非同期の落とし穴について
by
Yoshifumi Kawai
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
by
智啓 出川
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
by
智啓 出川
Chainer で Tensor コア (fp16) を使いこなす
by
NVIDIA Japan
GoによるWebアプリ開発のキホン
by
Akihiko Horiuchi
[DL輪読会]近年のエネルギーベースモデルの進展
by
Deep Learning JP
SAT/SMTソルバの仕組み
by
Masahiro Sakai
すごい constexpr たのしくレイトレ!
by
Genya Murakami
C++ マルチスレッドプログラミング
by
Kohsuke Yuasa
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
こわくない Git
by
Kota Saito
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
by
shinjiigarashi
関数型プログラミングのデザインパターンひとめぐり
by
Kazuyuki TAKASE
DockerコンテナでGitを使う
by
Kazuhiro Suga
いまさら聞けない!CUDA高速化入門
by
Fixstars Corporation
Map
by
kikairoya
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
by
Preferred Networks
[DL輪読会]Weight Agnostic Neural Networks
by
Deep Learning JP
20分くらいでわかった気分になれるC++20コルーチン
by
yohhoy
Similar to GPUをJavaで使う話(Java Casual Talks #1)
PDF
コンピューティングとJava~なにわTECH道
by
なおき きしだ
PPTX
Javaで簡単にgpgpu aparapi
by
Ken'ichi Sakiyama
PDF
Maxwell と Java CUDAプログラミング
by
NVIDIA Japan
PPTX
もしも… Javaでヘテロジニアスコアが使えたら…
by
Yasumasa Suenaga
KEY
NVIDIA Japan Seminar 2012
by
Takuro Iizuka
PDF
Introduction to OpenCL (Japanese, OpenCLの基礎)
by
Takahiro Harada
KEY
PyOpenCLによるGPGPU入門
by
Yosuke Onoue
PDF
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
by
なおき きしだ
KEY
CUDAを利用したPIV解析の高速化
by
翔新 史
PDF
1072: アプリケーション開発を加速するCUDAライブラリ
by
NVIDIA Japan
PDF
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境(OpenCL)
by
智啓 出川
PDF
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
by
Mr. Vengineer
PDF
2015年度GPGPU実践プログラミング 第3回 GPGPUプログラミング環境
by
智啓 出川
PDF
Cuda
by
Shumpei Hozumi
PDF
これからのコンピューティングとJava(Hacker Tackle)
by
なおき きしだ
PDF
Hello, DirectCompute
by
dasyprocta
PDF
PEZY-SC programming overview
by
Ryo Sakamoto
DOC
GPGPUによるパーソナルスーパーコンピュータの可能性
by
Yusaku Watanabe
KEY
GTC2011 Japan
by
Takuro Iizuka
PDF
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
by
智啓 出川
コンピューティングとJava~なにわTECH道
by
なおき きしだ
Javaで簡単にgpgpu aparapi
by
Ken'ichi Sakiyama
Maxwell と Java CUDAプログラミング
by
NVIDIA Japan
もしも… Javaでヘテロジニアスコアが使えたら…
by
Yasumasa Suenaga
NVIDIA Japan Seminar 2012
by
Takuro Iizuka
Introduction to OpenCL (Japanese, OpenCLの基礎)
by
Takahiro Harada
PyOpenCLによるGPGPU入門
by
Yosuke Onoue
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
by
なおき きしだ
CUDAを利用したPIV解析の高速化
by
翔新 史
1072: アプリケーション開発を加速するCUDAライブラリ
by
NVIDIA Japan
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境(OpenCL)
by
智啓 出川
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
by
Mr. Vengineer
2015年度GPGPU実践プログラミング 第3回 GPGPUプログラミング環境
by
智啓 出川
Cuda
by
Shumpei Hozumi
これからのコンピューティングとJava(Hacker Tackle)
by
なおき きしだ
Hello, DirectCompute
by
dasyprocta
PEZY-SC programming overview
by
Ryo Sakamoto
GPGPUによるパーソナルスーパーコンピュータの可能性
by
Yusaku Watanabe
GTC2011 Japan
by
Takuro Iizuka
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
by
智啓 出川
More from なおき きしだ
PDF
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
by
なおき きしだ
PDF
GraalVM at Fukuoka LT
by
なおき きしだ
PDF
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
by
なおき きしだ
PDF
GraalVMについて
by
なおき きしだ
PDF
VRカメラが楽しいのでブラウザで見たくなった話
by
なおき きしだ
PDF
最近のJava事情
by
なおき きしだ
PDF
怖いコードの話 2018/7/18
by
なおき きしだ
PDF
Java新機能観察日記 - JJUGナイトセミナー
by
なおき きしだ
PDF
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
by
なおき きしだ
PDF
これからのコンピューティングの変化とこれからのプログラミング at 広島
by
なおき きしだ
PDF
Summary of JDK10 and What will come into JDK11
by
なおき きしだ
PDF
Summary of JDK10 and What will come into JDK11
by
なおき きしだ
PDF
Java10 and Java11 at JJUG CCC 2018 Spr
by
なおき きしだ
PPTX
New thing in JDK10 even that scala-er should know
by
なおき きしだ
PPTX
Java Release Model (on Scala Matsuri)
by
なおき きしだ
PDF
これからのJava言語と実行環境
by
なおき きしだ
PDF
JavaOne報告2017
by
なおき きしだ
PDF
JavaOne2017で感じた、Javaのいまと未来 in 大阪
by
なおき きしだ
PDF
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
by
なおき きしだ
PDF
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
by
なおき きしだ
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
by
なおき きしだ
GraalVM at Fukuoka LT
by
なおき きしだ
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
by
なおき きしだ
GraalVMについて
by
なおき きしだ
VRカメラが楽しいのでブラウザで見たくなった話
by
なおき きしだ
最近のJava事情
by
なおき きしだ
怖いコードの話 2018/7/18
by
なおき きしだ
Java新機能観察日記 - JJUGナイトセミナー
by
なおき きしだ
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
by
なおき きしだ
これからのコンピューティングの変化とこれからのプログラミング at 広島
by
なおき きしだ
Summary of JDK10 and What will come into JDK11
by
なおき きしだ
Summary of JDK10 and What will come into JDK11
by
なおき きしだ
Java10 and Java11 at JJUG CCC 2018 Spr
by
なおき きしだ
New thing in JDK10 even that scala-er should know
by
なおき きしだ
Java Release Model (on Scala Matsuri)
by
なおき きしだ
これからのJava言語と実行環境
by
なおき きしだ
JavaOne報告2017
by
なおき きしだ
JavaOne2017で感じた、Javaのいまと未来 in 大阪
by
なおき きしだ
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
by
なおき きしだ
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
by
なおき きしだ
GPUをJavaで使う話(Java Casual Talks #1)
1.
GPUをJavaで使う話 (来れたので) 2015/10/16 きしだ なおき
2.
自己紹介 ● 最近、化物語を見ました。
3.
今日の話 ● GPU速そう ● Cめんどい ● Javaでやりたい ● ディープラーニング書いてみた ● 高速化してみた
4.
CPU ● 高機能・高性能・高粒度 ● OSが実行できる ● 演算器はコアあたり10個程度 – 一チップに100個程度 ● 明示的にメモリを制御できない – いかにキャッシュに載せるか ● =
いかにメモリをまとめて扱うか
5.
GPU ● GPU – ちょうたくさんコアがある – 同じ処理を行う –
行列計算に向いてる ● GTX 970 – 1664コア! – 衝動買い!
6.
GPUの構成 ● いくつかのコアでグループを作る – 同時に同じ命令を実行する – グループだけからアクセスできるメモリをもつ ● コアのグループが多数ある ● コアのグループあたり数個の演算器 –
数千から数万の演算器 – グループ内では同じ演算が行われる ● とってもSIMD
7.
GPUの製品 ● NVIDIA – GeForce –
Tesla ● GPGPU専用 ● AMD – Radeon ● Intel – Intel HD Graphics ● CPUチップに内蔵されたGPU
8.
GPGPU ● General Purpose
computing on GPU ● GPUで汎用計算 ● シミュレーションとか速い ● 最近のスーパーコンピュータはGPUがたくさん載って る
9.
GPGPU環境 ● CUDA – NVIDIA製品用 ●
DirectX – Windows専用 ● OpenCL – OpenGLとか作った団体(Khronos Group)が策定 – さまざまなデバイスで使える – FPGAでも使えたりする
10.
JavaでGPU ● Aparapi – JavaコードをOpenCLに変換 ● OpenCLを呼び出す – OpenCL:並列計算フレームワーク ● AMD始め、IntelやNVIDIAなどが参加 –
JOCL(jogamp.org) – JOCL(jocl.org) – JavaCL ● Project Sumatra – Stream処理を自動的にGPUで行う – Java VMに組み込む
11.
Aparapi ● A PARalell API ● 実行時にJavaコードをOpenCLに変換 ● https://code.google.com/p/aparapi/
12.
Aparapiコード public class AparapiKernel
extends Kernel{ float[] inputA; float[] inputB; float[] output; @Override public void run() { int gid = getGlobalId(); output[gid] = inputA[gid] * inputB[gid]; } public static void main(String[] args) { AparapiKernel kernel = new AparapiKernel(); int elementCount = 1_444_477; kernel.inputA = new float[elementCount]; kernel.inputB = new float[elementCount]; kernel.output = new float[elementCount]; fillBuffer(kernel.inputA); fillBuffer(kernel.inputB); kernel.execute(elementCount); } }
13.
バグがある・・・ • 三項演算子のカッコが反映されない – (修正してプルリクなげてとりこまれてます) •
CPUとの結果と比較するテストを用意したほうがいい – けど、丸めの違いを考慮するの面倒 void proc(int fxy) { float d = (result[fxy] >= 0 ? 1 : 0) * delta[fxy]; tempBiasDelta[fxy] = learningRate * d; } void kishida_cnn_kernels_ConvolutionBackwordBiasKernel__proc(This *this, int fxy){ float d = (float)(this->result[fxy]>=0.0f)?1:0 * this->delta[fxy]; this->tempBiasDelta[fxy] = this->learningRate * d; return; } ↓
14.
JOCL(jogamp.org) ● OpenCLを薄くラップ ● https://jogamp.org/jocl/www/
15.
JOCLのコード String KERNEL_CODE = "kernel
void add(global const float* inputA," + " global const float* inputB," + " global float* output," + " uint numElements){" + " size_t gid = get_global_id(0);" + " if(gid >= numElements){" + " return;" + " }" + " output[gid] = inputA[gid] + inputB[gid];" + "}"; CLContext ctx = CLContext.create(); CLDevice device = ctx.getMaxFlopsDevice(); CLCommandQueue queue = device.createCommandQueue(); CLProgram program = ctx.createProgram(KERNEL_CODE).build(); int elementCount = 1_444_477; int localWorkSize = Math.min(device.getMaxWorkGroupSize(), 256); int globalWorkSize = ((elementCount + localWorkSize - 1) / localWorkSize) * localWorkSize; CLBuffer<FloatBuffer> clBufferA = ctx.createFloatBuffer( elementCount, CLMemory.Mem.READ_ONLY); CLBuffer<FloatBuffer> clBufferB = ctx.createFloatBuffer( elementCount, CLMemory.Mem.READ_ONLY); CLBuffer<FloatBuffer> clBufferC = ctx.createFloatBuffer( elementCount, CLMemory.Mem.READ_WRITE); fillBuffer(clBufferA.getBuffer()); fillBuffer(clBufferB.getBuffer()); CLKernel kernel = program.createCLKernel("add"); kernel .putArgs(clBufferA, clBufferB, clBufferC) .putArg(elementCount); queue.putWriteBuffer(clBufferA, false) .putWriteBuffer(clBufferB, false) .put1DRangeKernel(kernel, 0, globalWorkSize, localWorkSize) .putReadBuffer(clBufferC, true);
16.
比較 ● Aparapi – めちゃ楽 – GPUの性能出しにくい ● JOCL –
ちょっと面倒 – GPUの性能出しやすい
17.
Sumatra ● Java VMに組み込むことを目標 ● 実装難しそう ● コード書くのもわかりにくそう ● 性能出しにくそう ● Java VMに組み込むほどメリットなさそう –
性能欲しい人はOpenCL使うよね
18.
と思ったら ● 「Sumatra is not
in active development for now.(2015/5/1) 」 http://mail.openjdk.java.net/pipermail/sumatra-dev/2015- May/000310.html
19.
ところでディープラーニング 実装してみました
20.
ディープラーニング ● 階層の深いニューラルネット ● 最近、人工知能っていわれてるのは、ほぼこれ
21.
Aparapiを使う ● 15枚/分→75枚/分 ● 1400万枚の画像処理が650日→130日!
22.
DoubleではなくFloatを使う ● ディープラーニングに精度は不要 ● 精度が半分になれば並列度があげれる ● データの転送量が減る ● 75枚/分→95枚/分 ● 1400万枚の画像処理が130日→102日!
23.
JOCLを使う ● 95枚/分→298枚/分 ● 1400万枚の画像処理が102日→34日!
24.
GPUローカルメモリを使う ● 298枚/分→300枚/分 ● 1400万枚の画像処理が34日→33日
25.
違う処理を並列に行う ● 畳み込み層の逆伝播処理 – 重み更新 – 誤差伝播 –
バイアス更新 if(n < deltaCount){ // 誤差伝播 }else if (n < deltaCount + filterCount){ // 重み更新 }else if (n < deltaCount + filterCount + biasCount){ // バイアス更新 }
26.
条件分岐の注意 ● ひとつのグループにif/else両方走ると if→elseの順に両方の処理が走る ● ひとつのグループではどちらかになるように調 整が必要 ● 32個単位くらい
27.
画面表示をはぶく ● 画面表示のためにGPU→CPU間転送が行われて いた ● 300枚/分→320枚/分 ● 1400万枚の画像処理が34日→30日
28.
結果 ● 機械学習 – まだ学習できてません・・・ ● オレ学習 – GPUのプログラミングが学習できました。
29.
まとめ ● GPUで高速化たのしい ● 世の中ね、顔かお金かなのよ
Download