SlideShare a Scribd company logo
1 of 52
LLVM meets GPU
    twitter : iitaku
LLVMってなによ?
Low
L e ve l
Vi r t ua l
M a c hi ne
ろーれべる・・・ばーちゃるましん?
高級




             低級


     低級な空想上の機械?
ちがいます
説明しよう!CV:富山敬
LLVMとは!

コンパイル時、リンク時、実行時などあらゆる時点で
 プログラムを最適化するように設計された、
  任意のプログラミング言語に対応可能な
      コンパイラ基盤である!

                    by wikipedia
That’s it!
なんか・・・よくわからないけど?
LLVMの仕事
        C                                             X86
                       Lexer           Optimize
                       Parser      Generate Asm
                       Generate IR

      C++                                             ARM

                            LLVM IR

    Obj-C                                            Power
                                 JIT



      Yet Another
Programming Language        Program                  Yet Another
                                                  Hardware Platform
ようするに
• ククク・・・俺の最強言語(ことだま)で

世界を書き換えてやるよ

• やれやれ・・この程度の最適化、奴にまかせておけ


• いつの間にこんな速く・・・?!

動的コード生成・・だとッ・・・・?

• ああ・・どうやら新たなチップらしい。・・・わかっ
なんてことができます
さて、そろそろGPUの話を
去年あたりから、
LLVMにはNVIDIA GPU向けの実装が入っています
CUDA Frontend

    PTX Backend

など。しかしこれとは別に・・・
May, 2012 @GTC2012

CUDA Compiler SDK Preview Launched !
なにができるの?
                   CUDA Compiler SDK Preview



                   NVVM IR                   PTX

                         Optimize, Codegen



      Yet Another                                  NVIDIA
Programming Language
                                                    GPU
・・・んん?
なにができるの?
                   CUDA Compiler SDK Preview



                   NVVM IR                   PTX

                         Optimize, Codegen



      Yet Another                                  NVIDIA
Programming Language
                                                    GPU
誤植ではありません
説明しよう!(2回目)
NVVM IRとは!

GPUのカーネルを表現するためにデザインされた、
      LLVM IRのサブセットである!
LLVM IRにwell-formedなため、既存のツールチェイ
ンからはLLVM IRとして取り扱うことが可能である!
細かい話
•   __device__、 __constant__などはLLVMのaddress space
    number という概念で表される

•   __global__関数、__device__関数などの種別はmetadataという
    仕組みで表される

•   追加の組み込み関数が幾つか(nvvm.*)

    •   同期、テクスチャ/サーフェス、特殊レジスタ、etc..
NVVM Library API

• Start   and Shutdown

• Create   Compiler Unit

• Verify

• Compile    To PTX

• Get   Result
おや、いいところに・・・
!
・・・しつれいしました
PyCUDA
1 import pycuda.driver as drv
     2 import pycuda.tools
     3 import pycuda.autoinit
     4 import numpy
     5 import numpy.linalg as la
     6 from pycuda.compiler import SourceModule
     7
     8 mod = SourceModule("""
     9 __global__ void multiply_them(float *dest, float *a, float *b)
    10 {
    11 const int i = threadIdx.x;
    12 dest[i] = a[i] * b[i];
    13 }
    14 """)
    15
    16 multiply_them = mod.get_function("multiply_them")
    17
    18 a = numpy.random.randn(400).astype(numpy.float32)
    19 b = numpy.random.randn(400).astype(numpy.float32)
    20
    21 dest = numpy.zeros_like(a)
    22 multiply_them(
    23       drv.Out(dest), drv.In(a), drv.In(b),
    24       block=(400,1,1))
    25
    26 print dest-a*b




PythonからGPUプログラミングが簡単にできる!
でも・・・
4 import numpy
 5 import numpy.linalg as la
 6 from pycuda.compiler import SourceModule
 7
 8 mod = SourceModule("""
 9 __global__ void multiply_them(float *dest, float *a, float *b)
10 {
11 const int i = threadIdx.x;
12 dest[i] = a[i] * b[i];
13 }
14 """)
15
16 multiply_them = mod.get_function("multiply_them")
17
18 a = numpy.random.randn(400).astype(numpy.float32)
19 b = numpy.random.randn(400).astype(numpy.float32)
20
21 dest = numpy.zeros_like(a)
22 multiply_them(
23       drv.Out(dest), drv.In(a), drv.In(b),
24       block=(400,1,1))
8 mod = SourceModule("""
 9 __global__ void multiply_them(float *dest, float *a,
float *b)
10 {
11 const int i = threadIdx.x;
12 dest[i] = a[i] * b[i];
13 }
14 """)
ダサッ☆
1 import pycuda.driver as drv
 2 import pycuda.tools
 3 import pycuda.autoinit
 4 import numpy
 5 import numpy.linalg as la
 6 from pycuda.compiler import SourceModule
 7
 8 @kernel
 9 def multiply_them(dest, a, b):
10 i = threadIdx.x
11 dest[i] = a[i] * b[i];
12
                                      こんなかんじで書きたい
13 a = numpy.random.randn(400).astype(numpy.float32)
14 b = numpy.random.randn(400).astype(numpy.float32)
15
16 dest = numpy.zeros_like(a)
17 multiply_them(
18       drv.Out(dest), drv.In(a), drv.In(b),
19       block=(400,1,1))
20
21 print dest-a*b
実装してみた

 pynvvm
@kernelデコレータで
 1 import numpy as np
 2
 3 from pynvvm.kernel import kernel                                   コード生成
 4 from pynvvm.nvtype import array, float32, int32
 5
 6 @kernel(array(float32), array(float32), array(float32), float32(), int32(), int32())
 7 def saxpy(z, x, y, a, w, h):
 8 xidx = pynvvm_ctaid_x() * pynvvm_ntid_x() + pynvvm_tid_x()
 9 yidx = pynvvm_ctaid_y() * pynvvm_ntid_y() + pynvvm_tid_y()
10
11 if yidx < h and xidx < w:                          専用のintrinsic
12    i = yidx * w + xidx
13    z[i] = a * x[i] + y[i]
14
15 return
16
17 n = 1024
18
19 x = np.random.randn(n*n).astype(np.float32)
20 y = np.random.randn(n*n).astype(np.float32)
21 a = np.float32(2.71828183)
22
23 z = np.zeros_like(x)
24
25 bsz = (16, 16, 1)                                In, Outはコード生成時に
26 gsz = ((n+16-1)/16, (n+16-1)/16, 1)
27
28 saxpy(bsz, gsz)(z, x, y, a, np.int32(n), np.int32(n))   解析して自動転送
29
30 print(z)
ast.parse()
   @kernel decorator
                                                        AST
              inspect.getsource()

                                                   型推論

 kernel function
                                                    Typed AST


                                              NVVM Codegen


GO GPU!                              PTX Codegen
                       PTX                           NVVM IR
こんなのがサクッとできるので、
NVVMはえらいとおもいます!
つくったもの

• LLVM   LibraryのPython Binding

 • boost::pythonすばらしい


• NVVM   LibraryのPython Binding

 • CTypesすばらしい


• Python   AST -> NVVM IRのトランスレータ
で、速いの?


• saxpy

 • numpy    : 0.052

 • pynvvm   : 0.051

 • python   : 10.88
結論:numpyすげえ
• saxpyだと計算量少なすぎる


• じゃあsgemmでも実装しよう
ast.Forのトランスレータ書いてないから
    実装できないやんけ!
pynvvm current status



• 対応していない構文いっぱい


• 対応していない命令いっぱい


• 対応していない関数いっぱい


• バグも(たぶん)いっぱい
http://bitbucket.org/iitaku/pynvvm
まとめ

• NVVM   IRはLLVM IR Builderで作れるので
 オレオレ言語をGPUで動かすのもカンタン!

• アホなIR作っても色々最適化してくれるのでハッピー


• みんなもCUDA     Compiler SDKであそぼう
Related Works

•   py2llvm
    •   python -> LLVM IR
    •   http://code.google.com/p/py2llvm/
•   copperhead
    •   自動並列化

    •   http://code.google.com/p/copperhead/
Any Question?

More Related Content

What's hot

条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxpsMITSUNARI Shigeo
 
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能MITSUNARI Shigeo
 
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mclMITSUNARI Shigeo
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013Ryo Sakamoto
 
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたGPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたRyo Sakamoto
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門Yosuke Onoue
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装MITSUNARI Shigeo
 
Wavelet matrix implementation
Wavelet matrix implementationWavelet matrix implementation
Wavelet matrix implementationMITSUNARI Shigeo
 
研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法Takeshi Yamamuro
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたWASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたMITSUNARI Shigeo
 
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Keisuke Fukuda
 
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用MITSUNARI Shigeo
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案yohhoy
 

What's hot (20)

Prosym2012
Prosym2012Prosym2012
Prosym2012
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
 
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
 
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
 
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたGPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみた
 
Emcjp item33,34
Emcjp item33,34Emcjp item33,34
Emcjp item33,34
 
optimal Ate pairing
optimal Ate pairingoptimal Ate pairing
optimal Ate pairing
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
Wavelet matrix implementation
Wavelet matrix implementationWavelet matrix implementation
Wavelet matrix implementation
 
研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
20180728 halide-study
20180728 halide-study20180728 halide-study
20180728 halide-study
 
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたWASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
 
From IA-32 to avx-512
From IA-32 to avx-512From IA-32 to avx-512
From IA-32 to avx-512
 
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
 
Boost.SIMD
Boost.SIMDBoost.SIMD
Boost.SIMD
 
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案
 

Viewers also liked

Code iq interpretation_tanaka_publish
Code iq interpretation_tanaka_publishCode iq interpretation_tanaka_publish
Code iq interpretation_tanaka_publishFixstars Corporation
 
SQL+GPU+SSD=∞ (Japanese)
SQL+GPU+SSD=∞ (Japanese)SQL+GPU+SSD=∞ (Japanese)
SQL+GPU+SSD=∞ (Japanese)Kohei KaiGai
 
[計算シミュレーション勉強会#1] 粒子法の復習(陽解法と陰解法の比較から)
[計算シミュレーション勉強会#1] 粒子法の復習(陽解法と陰解法の比較から)[計算シミュレーション勉強会#1] 粒子法の復習(陽解法と陰解法の比較から)
[計算シミュレーション勉強会#1] 粒子法の復習(陽解法と陰解法の比較から)aokomoriuta
 
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていることWebの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていることKei Nakazawa
 
並列プログラミング 入門!&おさらい!
並列プログラミング入門!&おさらい!並列プログラミング入門!&おさらい!
並列プログラミング 入門!&おさらい!道化師 堂華
 
OpenMPSみんな使ってねー[第36回オープンCAE勉強会@関東]
OpenMPSみんな使ってねー[第36回オープンCAE勉強会@関東]OpenMPSみんな使ってねー[第36回オープンCAE勉強会@関東]
OpenMPSみんな使ってねー[第36回オープンCAE勉強会@関東]aokomoriuta
 
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門Shumpei Shiraishi
 
1075: .NETからCUDAを使うひとつの方法
1075: .NETからCUDAを使うひとつの方法1075: .NETからCUDAを使うひとつの方法
1075: .NETからCUDAを使うひとつの方法NVIDIA Japan
 
C#, C/CLI と CUDAによる画像処理ことはじめ
C#, C/CLI と CUDAによる画像処理ことはじめC#, C/CLI と CUDAによる画像処理ことはじめ
C#, C/CLI と CUDAによる画像処理ことはじめNVIDIA Japan
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門NVIDIA Japan
 

Viewers also liked (10)

Code iq interpretation_tanaka_publish
Code iq interpretation_tanaka_publishCode iq interpretation_tanaka_publish
Code iq interpretation_tanaka_publish
 
SQL+GPU+SSD=∞ (Japanese)
SQL+GPU+SSD=∞ (Japanese)SQL+GPU+SSD=∞ (Japanese)
SQL+GPU+SSD=∞ (Japanese)
 
[計算シミュレーション勉強会#1] 粒子法の復習(陽解法と陰解法の比較から)
[計算シミュレーション勉強会#1] 粒子法の復習(陽解法と陰解法の比較から)[計算シミュレーション勉強会#1] 粒子法の復習(陽解法と陰解法の比較から)
[計算シミュレーション勉強会#1] 粒子法の復習(陽解法と陰解法の比較から)
 
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていることWebの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること
 
並列プログラミング 入門!&おさらい!
並列プログラミング入門!&おさらい!並列プログラミング入門!&おさらい!
並列プログラミング 入門!&おさらい!
 
OpenMPSみんな使ってねー[第36回オープンCAE勉強会@関東]
OpenMPSみんな使ってねー[第36回オープンCAE勉強会@関東]OpenMPSみんな使ってねー[第36回オープンCAE勉強会@関東]
OpenMPSみんな使ってねー[第36回オープンCAE勉強会@関東]
 
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
 
1075: .NETからCUDAを使うひとつの方法
1075: .NETからCUDAを使うひとつの方法1075: .NETからCUDAを使うひとつの方法
1075: .NETからCUDAを使うひとつの方法
 
C#, C/CLI と CUDAによる画像処理ことはじめ
C#, C/CLI と CUDAによる画像処理ことはじめC#, C/CLI と CUDAによる画像処理ことはじめ
C#, C/CLI と CUDAによる画像処理ことはじめ
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門
 

Similar to 関東GPGPU勉強会 LLVM meets GPU

Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputingNoboru Irieda
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成Izumi Tsutsui
 
20210515 cae linux_install_vb
20210515 cae linux_install_vb20210515 cae linux_install_vb
20210515 cae linux_install_vbYohichiShiina
 
Dalvik仮想マシンのアーキテクチャ 改訂版
Dalvik仮想マシンのアーキテクチャ 改訂版Dalvik仮想マシンのアーキテクチャ 改訂版
Dalvik仮想マシンのアーキテクチャ 改訂版Takuya Matsunaga
 
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングCMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングComputational Materials Science Initiative
 
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説Takao Tetsuro
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングKiwamu Okabe
 
130710 02
130710 02130710 02
130710 02openrtm
 
IL2CPPに関する軽い話
IL2CPPに関する軽い話IL2CPPに関する軽い話
IL2CPPに関する軽い話Wooram Yang
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpMasahito Zembutsu
 
Pythonによる並列プログラミング -GPGPUも-
Pythonによる並列プログラミング   -GPGPUも- Pythonによる並列プログラミング   -GPGPUも-
Pythonによる並列プログラミング -GPGPUも- Yusaku Watanabe
 
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519Yasuhiro Ishii
 
The Next Generation for C# Developers
The Next Generation for C# DevelopersThe Next Generation for C# Developers
The Next Generation for C# DevelopersTakayoshi Tanaka
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺MITSUNARI Shigeo
 
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築yaegashi
 
Hello, DirectCompute
Hello, DirectComputeHello, DirectCompute
Hello, DirectComputedasyprocta
 
NetBSD on Google Compute Engine
NetBSD on Google Compute EngineNetBSD on Google Compute Engine
NetBSD on Google Compute EngineRyo ONODERA
 

Similar to 関東GPGPU勉強会 LLVM meets GPU (20)

Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputing
 
Let's play with Goldfish
Let's play with GoldfishLet's play with Goldfish
Let's play with Goldfish
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
 
20210515 cae linux_install_vb
20210515 cae linux_install_vb20210515 cae linux_install_vb
20210515 cae linux_install_vb
 
Dalvik仮想マシンのアーキテクチャ 改訂版
Dalvik仮想マシンのアーキテクチャ 改訂版Dalvik仮想マシンのアーキテクチャ 改訂版
Dalvik仮想マシンのアーキテクチャ 改訂版
 
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングCMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
 
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミング
 
130710 02
130710 02130710 02
130710 02
 
IL2CPPに関する軽い話
IL2CPPに関する軽い話IL2CPPに関する軽い話
IL2CPPに関する軽い話
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorp
 
Pythonによる並列プログラミング -GPGPUも-
Pythonによる並列プログラミング   -GPGPUも- Pythonによる並列プログラミング   -GPGPUも-
Pythonによる並列プログラミング -GPGPUも-
 
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
 
GTC Japan 2017
GTC Japan 2017GTC Japan 2017
GTC Japan 2017
 
The Next Generation for C# Developers
The Next Generation for C# DevelopersThe Next Generation for C# Developers
The Next Generation for C# Developers
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
 
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
 
20130819 jjugnslt
20130819 jjugnslt20130819 jjugnslt
20130819 jjugnslt
 
Hello, DirectCompute
Hello, DirectComputeHello, DirectCompute
Hello, DirectCompute
 
NetBSD on Google Compute Engine
NetBSD on Google Compute EngineNetBSD on Google Compute Engine
NetBSD on Google Compute Engine
 

関東GPGPU勉強会 LLVM meets GPU

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n