SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
OpenCLやってみた + α
みよし たけふみ
わさらぼ
2016/08/24
動機
OpenCL あまり使ったことないし,やってみるか
評価版のライセンスをいただいた
DE0-nano-SoCでOpenCL
Atlas のサンプル (Mandelbrot) からはじめるのがよい?
buildroot な Linux 環境
いくつかのユーティリティを追加
dhcpcd,ssh,ImageMagick,lighthttpd
FPGA は/dev/acl0 に見えている
OpenCL Mandelbrot Demo on Altera を読む&試す@Qiita
+α
FPGA なので I/O たたきたい
OpenCL 面倒.より高級な言語で使える?
OpenCLでI/O叩く
Altera の I/O チャネルが用意されてる
HDL 側のレジスタに OpenCL で値を出力→ LED へ
データムーバができれば,後は何とかなりそう
OpenCL
Kernel
Register
FIFO
LED
CPU
Main Memory
ドキュメントを参考に,
OpenCL コードとボード定義を作ってみる
I/OチャネルでI/Oする
OpenCL のコード.読んだり書いたり.
channel uint inCtrlCh __attribute__ (( io (” aux_ctrl_in ” ) ) ) ;
channel uint outCtrlCh __attribute__ (( io (”aux_ctrl_out” ) ) ) ;
channel uint inDataCh __attribute__ (( io (”aux_data_in” ) ) ) ;
channel uint outDataCh __attribute__ (( io (”aux_data_out” ) ) ) ;
__kernel void ctrl_write_read ( int a ,
__global int * r e s t r i c t b ){
write_channel_altera ( outCtrlCh , a ) ;
*b = read_channel_altera ( inCtrlCh ) ;
}
__kernel void data_write_read ( __global int * r e s t r i c t a ,
__global int * r e s t r i c t b ){
for ( int i = 0; i < 256; i++){
write_channel_altera (outDataCh , a [ i ] ) ;
b [ i ] = read_channel_altera ( inDataCh ) ;
}
}
データの読み書きを確認
LEDが光ったよ
カメラをつないでみよう
カメラをつないでみよう
定番,OV7670 をカメラに直結
SCCB 経由でのレジスタ設定を OpenCL 経由で
設定しないと動かない
結構面倒.読んだり書いたり.
プリミティブ操作をカーネルで実装
1 フレームのデータをキャプチャしてメインメモリに
YUV → RGB の SW 実装 v.s. HW 実装で処理時間を比較
システム構成
ov7670_ctrl
ov7670_data
RegisterFIFO
ov7670
_capture
sccb_iface
OV7670
OpenCL
CPU
Main Memory
Cynclon V SoC
YUV422
YUV422 or RGB
Y0 U Y1 V
カメラ画像取得 - 取得するだけ
__kernel
void ov7670_capture ( __global unsigned int * r e s t r i c t buf ){
const int s i z e = 320 * 480;
for ( int i = 0; i < s i z e ; i++){
int d = read_channel_altera ( inDataCh ) ;
buf [ i ] = d ;
}
}
Y0UY1V の順でデータを書き出す
YUV->RGB はソフトウェアで変換
カメラ画像取得 - 取得しつつRGBに
#define RANGE(x) (x < 16 ? 16 : x > 235 ? 235 : x)
__kernel void ov7670_capture ( __global unsigned char * r e s t r i c t buf ){
const int s i z e = 320 * 480;
for ( int i = 0; i < s i z e ; i++){
int d = read_channel_altera ( inDataCh ) ;
int y0 = (d >> 24) & 0x000000FF ;
int cb = (d >> 16) & 0x000000FF ;
int y1 = (d >> 8) & 0x000000FF ;
int cr = (d >> 0) & 0x000000FF ;
int r0 , g0 , b0 ;
r0 = y0+140750*(cr −128)/100000;
g0 = y0− 34550*(cb−128)/100000−71690*(cr −128)/100000;
b0 = y0+177900*(cb −128)/100000;
int r1 , g1 , b1 ;
. . .
int ptr ;
ptr = 3*(640*480−1−(2* i ) ) ;
buf [ ptr +0] = ( unsigned char )(RANGE(b0 ) ) ;
buf [ ptr +1] = ( unsigned char )(RANGE(g0 ) ) ;
buf [ ptr +2] = ( unsigned char )(RANGE( r0 ) ) ;
ptr = 3*(640*480−1−(2* i +1));
. . .
}
}
動いたよ
capture: 41.994ms
conv: 14.888ms
write bmp: 7.602ms
total: 64.484ms
capture: 36.725ms
write bmp: 7.614ms
total: 44.339ms
※ SW 側は,データ転送の工夫で性能改善の余地はある
+α
FPGA なので I/O たたきたい
OpenCL 面倒.より高級な言語で使える?
もっと高級言語で!!
C/C++とか,よく使いこなせない
カーネルとホストコード両方書くの面倒...
世の中には OpenCL を生成するコンパイラが
たくさんある
Harlanを試してみた
https://github.com/eholk/harlan
Scheme で書かれた処理系
入力も Scheme っぽい感じで
ホスト/カーネル両方書ける
コードの例
test/dot-product.kfc
; ; Dense dot product between two vectors .
(module
( define (main)
( l e t ((X ( vector 1 2 3 4))
(Y ( vector 4 3 2 1)))
( l e t (( dot ( reduce + ( kernel (( x X) (y Y))
(* x y ) ) ) ) )
( p r i n t l n dot )
( assert (= dot 20))
0))))
コンパイル
./ harlanc −g −v test /dot−product . kfc
出力されたカーネル(抜粋)
__kernel void harlan_main_282 ( region_ptr danger_vector_259 , region_ptr kern_256 ,
int stride_20 , region_ptr y_32 , region_ptr x_33 ,
void __global * rk_143_285 , void __global * rv_53_284 , void __global * rv_63_283)
{
region __global * rk_143 = (( region __global *)( rk_143_285 ) ) ;
region __global * rv_53 = (( region __global *)( rv_53_284 ) ) ;
region __global * rv_63 = (( region __global *)( rv_63_283 ) ) ;
{
int __global * retval_260 = (&((( int __global *)( get_region_ptr (rk_143 , ( kern_256 ) +
int i_34 = get_global_id (0);
int x_36 = (( int __global *)( get_region_ptr (rv_63 , (x_33) + ( 8 ) ) ) ) [ i_34 ] ;
int y_35 = (( int __global *)( get_region_ptr (rv_53 , (y_32) + ( 8 ) ) ) ) [ i_34 ] ;
int t_37 = (x_36) * (y_35 ) ;
int reduce_dindex_40 = ( i_34 ) + ( stride_20 ) ;
int stepv_39 = stride_20 ;
int stopv_38 = *(( int __global *)( get_region_ptr (rv_63 , x_33 ) ) ) ;
while (( reduce_dindex_40 ) < ( stopv_38 ))
{
int x_42 = (( int __global *)( get_region_ptr (rv_63 , (x_33) + ( 8 ) ) ) ) [ reduce_dind
int y_41 = (( int __global *)( get_region_ptr (rv_53 , (y_32) + ( 8 ) ) ) ) [ reduce_dind
t_37 = (t_37) + (( x_42) * (y_41 ) ) ;
reduce_dindex_40 = ( reduce_dindex_40 ) + ( stepv_39 ) ;
}
*retval_260 = t_37 ;
}
}
出力されたホストコード(抜粋)
. . .
c l : : kernel harlan_main_282_288 = g_prog . createKernel (”harlan_main_282” ) ;
int dim_289 = stride_20 ;
unmap_region ( rk_143 ) ;
unmap_region ( rv_53 ) ;
unmap_region ( rv_63 ) ;
harlan_main_282_288 . setArg (0 , danger_vector_259 ) ;
harlan_main_282_288 . setArg (1 , kern_256 ) ;
harlan_main_282_288 . setArg (2 , stride_20 ) ;
harlan_main_282_288 . setArg (3 , y_32 ) ;
harlan_main_282_288 . setArg (4 , x_33 ) ;
harlan_main_282_288 . setArg (5 , get_cl_buffer ( rk_143 ) ) ;
harlan_main_282_288 . setArg (6 , get_cl_buffer ( rv_53 ) ) ;
harlan_main_282_288 . setArg (7 , get_cl_buffer ( rv_63 ) ) ;
g_queue . execute ( harlan_main_282_288 , dim_289 ) ;
. . .
int dot_48 = if_res_272 ;
pri nt (dot_48 ) ;
a s s e r t (( dot_48) == (20));
. . .
コンパイルしてみると
いくつか手を入れないとだめ
オフラインコンパイルに対応
$記号が使えない
← 簡単なスクリプトで変換する程度
_も好ましくない
ホストコードの DEVICE_TYPE の修正
clCreateProgramWithBinary に対応
あとは Altera OpenCL ツールでコンパイル
aoc でハードウェア側を合成
ホストコードは arm-linux-gnuebahf-を使う
動いた
評価とか...
続きは後日 (Qiita? )
まとめ
簡単な I/O の追加をテスト → カメラの接続
“組み込み” にも嬉しいかも
汎用の CPU/FPGA 協調動作環境として
メインメモリが簡単に使える
ソフトウェア/CPU との連携も
I/O アクセス直結の処理は見通しよく書ける
IO チャネルアクセスが一箇所は,ちょっと面倒
OpenCL では書かないのが吉?
それ,Synthesijer で...?
沢山チャネルはやして外でアービトレーション?
より高級言語で Altera OpenCL を使う
できる (できた)
記号の使い方に注意が必要
最適化とかはこれから考えてみる
Iroha でよいのでは?
ところで,Traxとかどうですか?
http://trax-fit2016.github.io/contest/

Weitere ähnliche Inhalte

Was ist angesagt?

Async design with Unity3D
Async design with Unity3DAsync design with Unity3D
Async design with Unity3DKouji Hosoda
 
effective modern c++ chapeter36
effective modern c++ chapeter36effective modern c++ chapeter36
effective modern c++ chapeter36Tatsuki SHIMIZU
 
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Keisuke Fukuda
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPUTakuro Iizuka
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案yohhoy
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介MITSUNARI Shigeo
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチンyohhoy
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門Yosuke Onoue
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013Ryo Sakamoto
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Fixstars Corporation
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチMasami Ichikawa
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Ryo Suzuki
 
Cloud TPU Driver API ソースコード解析
Cloud TPU Driver API ソースコード解析Cloud TPU Driver API ソースコード解析
Cloud TPU Driver API ソースコード解析Mr. Vengineer
 
Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説JPCERT Coordination Center
 
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」Mr. Vengineer
 

Was ist angesagt? (20)

Async design with Unity3D
Async design with Unity3DAsync design with Unity3D
Async design with Unity3D
 
effective modern c++ chapeter36
effective modern c++ chapeter36effective modern c++ chapeter36
effective modern c++ chapeter36
 
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
 
emc++ chapter32
emc++ chapter32emc++ chapter32
emc++ chapter32
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
From IA-32 to avx-512
From IA-32 to avx-512From IA-32 to avx-512
From IA-32 to avx-512
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチ
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
 
Cloud TPU Driver API ソースコード解析
Cloud TPU Driver API ソースコード解析Cloud TPU Driver API ソースコード解析
Cloud TPU Driver API ソースコード解析
 
Boost tour 1.60.0 merge
Boost tour 1.60.0 mergeBoost tour 1.60.0 merge
Boost tour 1.60.0 merge
 
コルーチンの使い方
コルーチンの使い方コルーチンの使い方
コルーチンの使い方
 
Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説
 
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
 

Andere mochten auch

電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみたHiroki Nakahara
 
FPGAX2016 ドキュンなFPGA
FPGAX2016 ドキュンなFPGAFPGAX2016 ドキュンなFPGA
FPGAX2016 ドキュンなFPGAHiroki Nakahara
 
mHealth Israel_Synchronizing Reimbursement and Regulatory Activities_Amir Inb...
mHealth Israel_Synchronizing Reimbursement and Regulatory Activities_Amir Inb...mHealth Israel_Synchronizing Reimbursement and Regulatory Activities_Amir Inb...
mHealth Israel_Synchronizing Reimbursement and Regulatory Activities_Amir Inb...Levi Shapiro
 
Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)Hiroki Nakahara
 
OpenCLに触れてみよう
OpenCLに触れてみようOpenCLに触れてみよう
OpenCLに触れてみようYou&I
 
高位合成友の会第四回(2016/11/22)スライド
高位合成友の会第四回(2016/11/22)スライド高位合成友の会第四回(2016/11/22)スライド
高位合成友の会第四回(2016/11/22)スライド一路 川染
 
Jeová e o ministério pre mortal e a criação
Jeová e o ministério pre mortal e a criaçãoJeová e o ministério pre mortal e a criação
Jeová e o ministério pre mortal e a criaçãoÉlida Rolim
 
HPCで使えそうなFPGA搭載AWS F1 インスタンス_20161218
HPCで使えそうなFPGA搭載AWS F1 インスタンス_20161218HPCで使えそうなFPGA搭載AWS F1 インスタンス_20161218
HPCで使えそうなFPGA搭載AWS F1 インスタンス_20161218HPCシステムズ株式会社
 
Virtual Reality Workshop (3/13/2017)
Virtual Reality Workshop (3/13/2017)Virtual Reality Workshop (3/13/2017)
Virtual Reality Workshop (3/13/2017)KR_Barker
 
Resolución bases y convocatoria para contrato de relevo
Resolución bases y convocatoria para contrato de relevoResolución bases y convocatoria para contrato de relevo
Resolución bases y convocatoria para contrato de relevoguadalinfoporcuna
 
Magazine front covers 4
Magazine front covers 4Magazine front covers 4
Magazine front covers 4ah05007283
 

Andere mochten auch (20)

電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
 
FPGAX2016 ドキュンなFPGA
FPGAX2016 ドキュンなFPGAFPGAX2016 ドキュンなFPGA
FPGAX2016 ドキュンなFPGA
 
なにわTech20160827
なにわTech20160827なにわTech20160827
なにわTech20160827
 
mHealth Israel_Synchronizing Reimbursement and Regulatory Activities_Amir Inb...
mHealth Israel_Synchronizing Reimbursement and Regulatory Activities_Amir Inb...mHealth Israel_Synchronizing Reimbursement and Regulatory Activities_Amir Inb...
mHealth Israel_Synchronizing Reimbursement and Regulatory Activities_Amir Inb...
 
自称IQ診断 --- いわゆる頭の体操
自称IQ診断 --- いわゆる頭の体操自称IQ診断 --- いわゆる頭の体操
自称IQ診断 --- いわゆる頭の体操
 
なにわTech20161215
なにわTech20161215 なにわTech20161215
なにわTech20161215
 
なにわテック道0903
なにわテック道0903なにわテック道0903
なにわテック道0903
 
Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)
 
Hls friends 20161122.key
Hls friends 20161122.keyHls friends 20161122.key
Hls friends 20161122.key
 
20161120_HPCでFPGAを使ってみたい_fpgastartup
20161120_HPCでFPGAを使ってみたい_fpgastartup20161120_HPCでFPGAを使ってみたい_fpgastartup
20161120_HPCでFPGAを使ってみたい_fpgastartup
 
OpenCLに触れてみよう
OpenCLに触れてみようOpenCLに触れてみよう
OpenCLに触れてみよう
 
高位合成友の会第四回(2016/11/22)スライド
高位合成友の会第四回(2016/11/22)スライド高位合成友の会第四回(2016/11/22)スライド
高位合成友の会第四回(2016/11/22)スライド
 
Jeová e o ministério pre mortal e a criação
Jeová e o ministério pre mortal e a criaçãoJeová e o ministério pre mortal e a criação
Jeová e o ministério pre mortal e a criação
 
TF.RGO.81
TF.RGO.81TF.RGO.81
TF.RGO.81
 
Gure lanbideak
Gure lanbideakGure lanbideak
Gure lanbideak
 
HPCで使えそうなFPGA搭載AWS F1 インスタンス_20161218
HPCで使えそうなFPGA搭載AWS F1 インスタンス_20161218HPCで使えそうなFPGA搭載AWS F1 インスタンス_20161218
HPCで使えそうなFPGA搭載AWS F1 インスタンス_20161218
 
Virtual Reality Workshop (3/13/2017)
Virtual Reality Workshop (3/13/2017)Virtual Reality Workshop (3/13/2017)
Virtual Reality Workshop (3/13/2017)
 
Resolución bases y convocatoria para contrato de relevo
Resolución bases y convocatoria para contrato de relevoResolución bases y convocatoria para contrato de relevo
Resolución bases y convocatoria para contrato de relevo
 
Magazine front covers 4
Magazine front covers 4Magazine front covers 4
Magazine front covers 4
 
Atelier réunion de projet
Atelier réunion de projetAtelier réunion de projet
Atelier réunion de projet
 

Ähnlich wie Slide

Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)ryos36
 
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519Yasuhiro Ishii
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competitionyak1ex
 
PBL1-v1-008j.pptx
PBL1-v1-008j.pptxPBL1-v1-008j.pptx
PBL1-v1-008j.pptxNAIST
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングKiwamu Okabe
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたMITSUNARI Shigeo
 
ただのリンカを書いた話.pdf
ただのリンカを書いた話.pdfただのリンカを書いた話.pdf
ただのリンカを書いた話.pdfsimotin13 Miyazaki
 
Dive into RTS - another side
Dive into RTS - another sideDive into RTS - another side
Dive into RTS - another sideKiwamu Okabe
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)Takeshi Yamamuro
 
自作LSIコミュニティの可能性
自作LSIコミュニティの可能性自作LSIコミュニティの可能性
自作LSIコミュニティの可能性Junichi Akita
 
PL/CUDA - GPU Accelerated In-Database Analytics
PL/CUDA - GPU Accelerated In-Database AnalyticsPL/CUDA - GPU Accelerated In-Database Analytics
PL/CUDA - GPU Accelerated In-Database AnalyticsKohei KaiGai
 
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。Kazuki Onishi
 
HalideでつくるDomain Specific Architectureの世界
HalideでつくるDomain Specific Architectureの世界HalideでつくるDomain Specific Architectureの世界
HalideでつくるDomain Specific Architectureの世界Fixstars Corporation
 
自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみた自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみたJunichi Akita
 

Ähnlich wie Slide (20)

Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
 
Prosym2012
Prosym2012Prosym2012
Prosym2012
 
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
 
フラグを愛でる
フラグを愛でるフラグを愛でる
フラグを愛でる
 
PBL1-v1-008j.pptx
PBL1-v1-008j.pptxPBL1-v1-008j.pptx
PBL1-v1-008j.pptx
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミング
 
LLVM最適化のこつ
LLVM最適化のこつLLVM最適化のこつ
LLVM最適化のこつ
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
llvm入門
llvm入門llvm入門
llvm入門
 
ただのリンカを書いた話.pdf
ただのリンカを書いた話.pdfただのリンカを書いた話.pdf
ただのリンカを書いた話.pdf
 
Dive into RTS - another side
Dive into RTS - another sideDive into RTS - another side
Dive into RTS - another side
 
TVM の紹介
TVM の紹介TVM の紹介
TVM の紹介
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
 
自作LSIコミュニティの可能性
自作LSIコミュニティの可能性自作LSIコミュニティの可能性
自作LSIコミュニティの可能性
 
PL/CUDA - GPU Accelerated In-Database Analytics
PL/CUDA - GPU Accelerated In-Database AnalyticsPL/CUDA - GPU Accelerated In-Database Analytics
PL/CUDA - GPU Accelerated In-Database Analytics
 
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
 
HalideでつくるDomain Specific Architectureの世界
HalideでつくるDomain Specific Architectureの世界HalideでつくるDomain Specific Architectureの世界
HalideでつくるDomain Specific Architectureの世界
 
自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみた自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみた
 
Clojure
ClojureClojure
Clojure
 

Mehr von Takefumi MIYOSHI

Mehr von Takefumi MIYOSHI (20)

ACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyoACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyo
 
DAS_202109
DAS_202109DAS_202109
DAS_202109
 
ACRiルーム1年間の活動と 新たな取り組み
ACRiルーム1年間の活動と 新たな取り組みACRiルーム1年間の活動と 新たな取り組み
ACRiルーム1年間の活動と 新たな取り組み
 
RISC-V introduction for SIG SDR in CQ 2019.07.29
RISC-V introduction for SIG SDR in CQ 2019.07.29RISC-V introduction for SIG SDR in CQ 2019.07.29
RISC-V introduction for SIG SDR in CQ 2019.07.29
 
Misc for edge_devices_with_fpga
Misc for edge_devices_with_fpgaMisc for edge_devices_with_fpga
Misc for edge_devices_with_fpga
 
Cq off 20190718
Cq off 20190718Cq off 20190718
Cq off 20190718
 
Synthesijer - HLS frineds 20190511
Synthesijer - HLS frineds 20190511Synthesijer - HLS frineds 20190511
Synthesijer - HLS frineds 20190511
 
Reconf 201901
Reconf 201901Reconf 201901
Reconf 201901
 
Hls friends 201803.key
Hls friends 201803.keyHls friends 201803.key
Hls friends 201803.key
 
Abstracts of FPGA2017 papers (Temporary Version)
Abstracts of FPGA2017 papers (Temporary Version)Abstracts of FPGA2017 papers (Temporary Version)
Abstracts of FPGA2017 papers (Temporary Version)
 
Das 2015
Das 2015Das 2015
Das 2015
 
Microblaze loader
Microblaze loaderMicroblaze loader
Microblaze loader
 
Reconf 201506
Reconf 201506Reconf 201506
Reconf 201506
 
Synthesijer jjug 201504_01
Synthesijer jjug 201504_01Synthesijer jjug 201504_01
Synthesijer jjug 201504_01
 
Synthesijer zynq qs_20150316
Synthesijer zynq qs_20150316Synthesijer zynq qs_20150316
Synthesijer zynq qs_20150316
 
Synthesijer fpgax 20150201
Synthesijer fpgax 20150201Synthesijer fpgax 20150201
Synthesijer fpgax 20150201
 
Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)
 
ICD/CPSY 201412
ICD/CPSY 201412ICD/CPSY 201412
ICD/CPSY 201412
 
Reconf_201409
Reconf_201409Reconf_201409
Reconf_201409
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
 

Slide