SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
Javaによる専用ハードウェア開発を夢見て
Synthesijerのこれまでとこれから
わさらぼ
みよし たけふみ
(miyox)
2015.04.11
2
今日の話
✔ 何を作っているか
✔ どう作っているか
Javaによる専用ハードウェア開発を夢見て
Synthesijerのこれまでとこれから
わさらぼ
みよし たけふみ
(miyox)
2015.04.11
?
専用 汎用
専用 汎用
用途を特定しない
幅広く利用できる
特定の用途を想定
得手不得手がはっきり
専用HW 汎用HW
用途を特定しないHW
幅広く利用できるHW
特定の用途を想定したHW
得意な処理は得意HW
不得意な処理は不得意/できないHW
7
専用にすると何が嬉しいか?
汎用HW(CPU)の場合
専用HWの場合
高性能
低消費電力
コンパクト
8
専用にすると何が嬉しくないか?
汎用HW(CPU)の場合
専用HWの場合
使い回しできる
= 安い.みんな使える
使い回しできない
= 高い.使うの大変
9
いつまでもCPUだけでいいの?
✔ CPU,これ以上速くなるの?
✔ 動作周波数は頭打ち
✔ 性能向上のためのトランジスタがのせられない
✔ ちょっと,この処理遅いけど来年のCPUなら大丈夫
✔ たくさんCPUならべると電気/熱が大変
...と,ここ何年も言われてきた
(と共に,ここ何年もスゴイ人たちが乗り越え続けている)
10
専用にすると何が嬉しくないか?
汎用HW(CPU)の場合
専用HWの場合
使い回しできる
= 安い.みんな使える
使い回しできない
= 高い.使うの大変
11
専用HWを作れる手軽なアイテム!!
汎用HW(CPU)の場合
専用HWの場合
使い回しできる
= 安い.みんな使える
使い回しできない
= 高い.使うの大変
FPGA
12
✔ 論理回路・データパスを自由に作り込めるLSI
✔ I/Oを自由に使える
Field Programmable Gate Array
FPGAとは?
13
✔ 論理回路・データパスを自由に作り込めるLSI
✔ I/Oを自由に使える
✔ クロックレベルの同期と並列性を活用した処理を実現
Field Programmable Gate Array
FPGAとは?
14
1) http://japan.xilinx.com/support/documentation/data_sheets/ds180_7Series_Overview.pdf
2) http://hitechglobal.com/boards/virtex7_v2000t.htm
3) http://http://low-powerdesign.com/sleibson/2011/10/25/generation-jumping-2-5d-xilinx-virtex-7-2000t-fpga-delivers-
1954560-logic-cells-consumes-only-20w/
FPGAとは?
15
FPGAとは?
グラフは http://japan.intel.com/contents/museum/processor/index.html より
高いFPGAが
だいたいこの辺
Intelのプロセッサと比べてみてみると
16
FPGA 美味しいの?
検索FPGA ○○○○○○○○○○
○○○○○○○○○○にはコンピュータ界隈で
有名な会社の名前をいれてください
17
小さくてかわいいのも
https://cloud.altera.com/devstore/board/odyssey-max-10-fpga-kit/
例: Odyssey MAX10
注: Bluetooth機能はFPGAじゃなくて
この上にのるボードのマイコンが提供
FPGA
ここに,LEDとかセンサとか
モーターとかつないで遊ぶ
18
JavaでIoTといえば...
http://www.snm.ethz.ch/snmwiki/Projects/SunSPOT
Javaによる専用ハードウェア開発を夢見て
Synthesijerのこれまでとこれから
FPGAで
アプリを作ること
なぜJavaなのか?
Write Once, Run Anywhere!!
Write Once, Run Anywhere!!
たとえCPUがなくても!!
23
一般的なFPGAアプリ設計
✔ 論理回路構成要素の内容を決める
✔ 論理回路構成要素同士の接続関係を決める
24
一般的なFPGAアプリ設計
HDL(VHDLやVerilog HDL)によるRTL(Register Transfer Level)設計
25
HDLによるRTL設計
✔ ロジックを抽象化した式/構文で設計できる
✔ クロックレベルのデータ制御
✔ 細粒度の並列性の活用
✔ 記述が煩雑
✔ “状態”を自分で管理しなければいけない
✔ デバッグ/動作検証が難しい
メリット
デメリット
26
HDLによるRTL設計
if clk'event and clk = '1' then
case (s) is
when S0 =>
a <= 1;
s <= S1;
When S1 =>
b <= 2;
s <= S2;
When S2 =>
c <= a + b;
s <= S3;
end case;
end if;
a = 1;
b = 2;
c = a + b;
RTL書きたくない!!
Javaで書きたい!!
29
Synthesijer
http://www.slideshare.net/OracleMiddleJP/java-developer-workshop-2
おおお!
残念ながら無関係です
32
Synthesijer とは
✔ JavaプログラムをFPGA上のハードウェアに変換
✔ 複雑なアルゴリズムのハードウェア実装を楽に
✔ オブクジェクト指向設計による再利用性の向上
✔ 特殊な記法,追加構文はない
✔ ソフトウェアとして実行可能.動作の確認、検証が容易
✔ 書けるプログラムに制限は加える
(動的なnew,再帰は不可など)
✔ HDLモジュールのJavaからのインスタンス生成
Javaコンパイラ
フロントエンド
Synthesijer
エンジン
Javaコンパイラ
バックエンド
合成
配置配線
while(){
if(...){
…
}else{
…
…
}
….
}
複雑な状態遷移も,Javaの制御構文を使って楽に設計できる
同じJavaプログラムをソフトウェアとしても
FPGA上のハードウェアとしても実行可能
Open-source
33
たとえば,Lチカ
間隔をおいて変数ledをtrue/falseするプログラムを書く
Lチカに相当する変数
適当なウェイト
点滅
自動コンパイルが裏で動くので,Javaコードとしての正しさは
即座にチェックされる
34
たとえば,Lチカ
コンパイルしてFPGAにロードする
35
プロセッサ上で動くのと何が違うの?
CPU Synthesijerでできたもの
処理方式 読む→解釈→実行 演算器としてならべられる
適切なタイミングで確定
命令セット 決まっている 入力コードによって生成
I/O 決まっている 割と自由に追加できる
個数 決まっている 入力コードによって決まる
36
✔ クラスによるオブジェクト指向設計言語
 ← HWのモジュール設計との親和性は高そう
✔ 言語仕様で並列処理をサポート
✔ Thread,wait-notify
✔ (Cと違い)明示的なポインタの扱いが不要
✔ 言語の想定するメモリ構造から解放され得るかも
✔ 動的な振る舞いは厄介そう
Javaベースの高位合成処理系
なぜJavaなのか?
デモと応用事例の紹介
38
✔ Javaといえば,スクリプト言語のホストとしても魅力的
✔ JRuby,Scala,Clojure,and etc.
✔ BF: とても小さなスクリプト言語処理系
→ hoge
デモ(1) BrainF**k
+, -, >, <, [, ], ., ,の記号からなるインタプリタ
++++++++++[>++++++++++<-]>++++.+++++++.--------.--.
http://www.kmonos.net/alang/etc/brainfuck.php
どう作っているか?
40
Javaコンパイラ
Javaコード 字句解析/構文解析
コントロール・データフロー作成
最適化
出力
VHDL/
Verilog HDL
コード
Javaコード
class
JVM用の
バイトコード
JVM命令セット内
での最適化
41
Synthesijerオーバービュー
Javaコード 字句解析/構文解析
コントロール・データフロー作成
最適化
出力
VHDL/
Verilog HDL
コード
Javaコード
VHDL/
Verilog HDL
コード
42
✔ オープンソースなJavaの実装
✔ 勿論Javaコンパイラもオープンソース
✔ openjdk/com/sun/tools/javac/main/JavaCompiler.java
をフックすれば,解析/最適化済みの情報にアクセス可
OpenJDKすてき!!
43
OpenJDKすてき!!
/** Generate code and emit a class file for a given class
* @param env The attribution environment of the outermost class
* containing this class.
* @param cdef The class definition from which code is generated.
*/
JavaFileObject genCode(Env<AttrContext> env, JCClassDecl cdef) throws IOException {
synthesijer.jcfrontend.Main.newModule(env, cdef); // add hook for synthesijer
try {
if (gen.genClass(env, cdef) && (errorCount() == 0))
return writer.writeClass(cdef.sym);
} catch (ClassWriter.PoolOverflow ex) {
log.error(cdef.pos(), "limit.pool");
} catch (ClassWriter.StringOverflow ex) {
log.error(cdef.pos(), "limit.string.overflow",
ex.value.substring(0, 20));
} catch (CompletionFailure ex) {
chk.completionError(cdef.pos(), ex);
}
return null;
}
JavaCompiler.javaの中身
44
Javaコードの内部表現
この構造をたどりながら,すきな形(VHDL/Verilog HDL)に変換する
JCMethodDecl
JCVariableDecl
JCMethodDecl
JCMethodDecl
・
・
・
・
・
・
JCVariableDecl
JCVariableDecl
JCExpressionState
JCBlock
JCIf
JCFor
JCAssign
JCArrayAccess
JCBinary
JCIdent
JCLiteral
・
・
・
・
・
・
JSCtatement
JSExpression
JCClassDecl
45
たとえばclass
public class JCTopVisitor extends Visitor{
private final Module module;
...
public void visitClassDef(JCClassDecl that){
for (JCTree def : that.defs) {
if(def == null){
;
}else if(def instanceof JCMethodDecl){
def.accept(this);
}else if(def instanceof JCVariableDecl){
def.accept(new JCStmtVisitor(module));
}else{
System.err.printf("Unknown class: %s (%s)", def, def.getClass());
}
}
}
...
46
たとえばmethod
public void visitMethodDef(JCMethodDecl decl){
String name = decl.getName().toString();
Type type;
if(JCFrontendUtils.isConstructor(decl)){
type = new MySelfType();
}else{
type = TypeBuilder.genType(decl.getReturnType());
}
Method m = new Method(module, name, type);
m.setArgs(parseArgs(decl.getParameters(), m));
...
m.setPrivateFlag(JCFrontendUtils.isPrivate(decl.mods));
m.setParallelFlag(JCFrontendUtils.isAnnotatedBy(decl.mods.annotations, "parallel"));
...
m.setConstructorFlag(JCFrontendUtils.isConstructor(decl));
...
for(JCStatement stmt: decl.body.getStatements()){
JCStmtVisitor visitor = new JCStmtVisitor(m);
stmt.accept(visitor);
m.getBody().addStatement(visitor.getStatement());
}
module.addMethod(m);
}
47
たとえば制御構文
public void visitIf(JCIf that){
IfStatement tmp = new IfStatement(scope);
tmp.setCondition(stepIn(that.cond, scope));
tmp.setThenPart(wrapBlockStatement(stepIn(that.thenpart, scope)));
if(that.elsepart != null){
tmp.setElsePart(wrapBlockStatement(stepIn(that.elsepart, scope)));
}
stmt = tmp;
}
public void visitForLoop(JCForLoop that){
ForStatement tmp = new ForStatement(scope);
for(JCStatement s: that.init){
//tmp.addInitialize(stepIn(s, scope));
tmp.addInitialize(stepIn(s, tmp));
}
tmp.setCondition(stepIn(that.cond, tmp));
for(JCStatement s: that.step){
tmp.addUpdate(stepIn(s, tmp));
}
tmp.setBody(wrapBlockStatement(stepIn(that.body, tmp)));
stmt = tmp;
}
48
Synthesijer でのHDL生成: 出力(状態遷移)
メソッド毎にスケジュール表を生成 → 状態遷移機械
while
for
for
49
Synthesijerのこれから
50
ロードマップ
手続き型言語的
基本演算,操作
整数プリミ
ティブ型変
数の利用
算術,論理,
シフト演算
(除算・剰
余算以外)
制御構文
(分岐,ルー
プ)
メソッド呼び
出し
除算・剰余
算
浮動小数点
数演算
オブジェクト指向
的インスンタンス
協調
finalでのイ
ンスタンス
の生成
インスタン
スメソッドの
呼び出し
インスタン
ス変数への
リードアクセ
ス
インスタン
ス変数への
ライトアクセ
ス
インスタン
ス間での配
列読み書き
のサポート
インスタン
スの配列,
配列の配列
のサポート
コンストラク
タのサポー
ト
インスタン
スのチェイ
ンアクセス
並列化
パフォーマンス
基本ブロッ
ク内自動並
列化
Threadに
よる明示的
な処理の並
列化をサ
ポート
ループ内パ
イプライニ
ング
ライブラリ 整数プリミ
ティブ変数
の配列
AXI接続用
のコンポー
ネントライブ
ラリの提供
Stringクラ
スのサポー
ト
ユーザビリティ コマンドライ
ンでのコン
パイル
HDLモ
ジュールと
のバイン
ディング機
構
FPGA合成
ツールとの
連携,統一
的な開発フ
ローの提供
スケジュー
リング可視
化ツール
HDL生成ラ
イブラリを
活用した
DSLの提供
2014年7月 2014年12月 2015年3月 2015年6月
51
今後挑戦したいこと
✔ メソッドのパイプライン化
✔ I/Oストリームへの対応
✔ コンストラクタに対応
✔ コンパイル時のJavaプログラム実行
✔ lambda式対応
✔ Streamへの対応
✔ Erlangフロントエンド
52
Synthesijer とは
✔ JavaプログラムをFPGA上のハードウェアに変換
✔ 複雑なアルゴリズムのハードウェア実装を楽に
✔ オブクジェクト指向設計による再利用性の向上
✔ 特殊な記法,追加構文はない
✔ ソフトウェアとして実行可能.動作の確認、検証が容易
✔ 書けるプログラムに制限は加える
(動的なnew,再帰は不可など)
✔ HDLモジュールのJavaからのインスタンス生成
Javaコンパイラ
フロントエンド
Synthesijer
エンジン
Javaコンパイラ
バックエンド
合成
配置配線
while(){
if(...){
…
}else{
…
…
}
….
}
複雑な状態遷移も,Javaの制御構文を使って楽に設計できる
同じJavaプログラムをソフトウェアとしても
FPGA上のハードウェアとしても実行可能
Open-source
53
参考
✔ http://synthesijer.sourceforge.net
✔ リソース一式,クイックスタートガイドなど
✔ http://qiita.com/kazunori279/items/4951ca5f6164040878ce
✔ Kazunori279さん: Synthesijer関連資料まとめ
✔ http://labs.beatcraft.com/ja/index.php?Synthesijer
✔ ビートクラフトさん: Altera DE0-nanoでのサンプルの動作手順など
✔ http://marsee101.blog19.fc2.com/blog-category-116.html
✔ FPGAの部屋さん: Synthesijerでラプラシアンフィルタを作ってみた
✔ http://cellspe.matrix.jp/parallella/synthesijer.html
✔ Parallela Fan!さん: SynthesijerでJavaプログラムからHDLコードを自動生成する
✔ http://wasa-labo.com/wp/
✔ わさらぼ ブログ – 開発状況,Tipsなど

Más contenido relacionado

La actualidad más candente

jcmd をさわってみよう
jcmd をさわってみようjcmd をさわってみよう
jcmd をさわってみようTsunenaga Hanyuda
 
Xilinx SDSoC(2016.2)解体新書ソフトウェア編
Xilinx SDSoC(2016.2)解体新書ソフトウェア編Xilinx SDSoC(2016.2)解体新書ソフトウェア編
Xilinx SDSoC(2016.2)解体新書ソフトウェア編Mr. Vengineer
 
Use JWT access-token on Grails REST API
Use JWT access-token on Grails REST APIUse JWT access-token on Grails REST API
Use JWT access-token on Grails REST APIUehara Junji
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGUehara Junji
 
Zynq + Vivado HLS入門
Zynq + Vivado HLS入門Zynq + Vivado HLS入門
Zynq + Vivado HLS入門narusugimoto
 
Groovy Shell Scripting 2015
Groovy Shell Scripting 2015Groovy Shell Scripting 2015
Groovy Shell Scripting 2015Uehara Junji
 
SDSoC解体新書2016.2版ソフトウェア編 (チラ見) : Inside SDSoC v2016.2 (Software short edtion)
SDSoC解体新書2016.2版ソフトウェア編 (チラ見) : Inside SDSoC v2016.2 (Software short edtion)SDSoC解体新書2016.2版ソフトウェア編 (チラ見) : Inside SDSoC v2016.2 (Software short edtion)
SDSoC解体新書2016.2版ソフトウェア編 (チラ見) : Inside SDSoC v2016.2 (Software short edtion)Mr. Vengineer
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にTaku Miyakawa
 
JetsonでOpenCV
 JetsonでOpenCV JetsonでOpenCV
JetsonでOpenCVtomoaki0705
 
OpenCV4Androidで画像処理アプリのススメ
OpenCV4Androidで画像処理アプリのススメOpenCV4Androidで画像処理アプリのススメ
OpenCV4Androidで画像処理アプリのススメMasaki Otsuki
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツールYasumasa Suenaga
 
OpenCVを用いた画像処理入門
OpenCVを用いた画像処理入門OpenCVを用いた画像処理入門
OpenCVを用いた画像処理入門uranishi
 
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4bitter_fox
 
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしようYasuhiro Yoshimura
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
SDSoC でストリーム
SDSoC でストリームSDSoC でストリーム
SDSoC でストリームryos36
 
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみたYasuhiro Yoshimura
 

La actualidad más candente (20)

jcmd をさわってみよう
jcmd をさわってみようjcmd をさわってみよう
jcmd をさわってみよう
 
Xilinx SDSoC(2016.2)解体新書ソフトウェア編
Xilinx SDSoC(2016.2)解体新書ソフトウェア編Xilinx SDSoC(2016.2)解体新書ソフトウェア編
Xilinx SDSoC(2016.2)解体新書ソフトウェア編
 
Use JWT access-token on Grails REST API
Use JWT access-token on Grails REST APIUse JWT access-token on Grails REST API
Use JWT access-token on Grails REST API
 
Heap statsfx analyzer
Heap statsfx analyzerHeap statsfx analyzer
Heap statsfx analyzer
 
Microblaze loader
Microblaze loaderMicroblaze loader
Microblaze loader
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
 
Zynq + Vivado HLS入門
Zynq + Vivado HLS入門Zynq + Vivado HLS入門
Zynq + Vivado HLS入門
 
20130819 jjugnslt
20130819 jjugnslt20130819 jjugnslt
20130819 jjugnslt
 
Groovy Shell Scripting 2015
Groovy Shell Scripting 2015Groovy Shell Scripting 2015
Groovy Shell Scripting 2015
 
SDSoC解体新書2016.2版ソフトウェア編 (チラ見) : Inside SDSoC v2016.2 (Software short edtion)
SDSoC解体新書2016.2版ソフトウェア編 (チラ見) : Inside SDSoC v2016.2 (Software short edtion)SDSoC解体新書2016.2版ソフトウェア編 (チラ見) : Inside SDSoC v2016.2 (Software short edtion)
SDSoC解体新書2016.2版ソフトウェア編 (チラ見) : Inside SDSoC v2016.2 (Software short edtion)
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
 
JetsonでOpenCV
 JetsonでOpenCV JetsonでOpenCV
JetsonでOpenCV
 
OpenCV4Androidで画像処理アプリのススメ
OpenCV4Androidで画像処理アプリのススメOpenCV4Androidで画像処理アプリのススメ
OpenCV4Androidで画像処理アプリのススメ
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツール
 
OpenCVを用いた画像処理入門
OpenCVを用いた画像処理入門OpenCVを用いた画像処理入門
OpenCVを用いた画像処理入門
 
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
 
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
SDSoC でストリーム
SDSoC でストリームSDSoC でストリーム
SDSoC でストリーム
 
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
 

Destacado

Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Takefumi MIYOSHI
 
SDSoC と Vivado
SDSoC と VivadoSDSoC と Vivado
SDSoC と Vivadoryos36
 
Java 20年史 (JJUG CCC 2015 春 基調講演)
Java 20年史 (JJUG CCC 2015 春 基調講演)Java 20年史 (JJUG CCC 2015 春 基調講演)
Java 20年史 (JJUG CCC 2015 春 基調講演)Kazuyuki Kawamura
 
ビズリーチ x ScalaMatsuri by BIZREACH, Inc.
ビズリーチ x ScalaMatsuri  by BIZREACH, Inc.ビズリーチ x ScalaMatsuri  by BIZREACH, Inc.
ビズリーチ x ScalaMatsuri by BIZREACH, Inc.scalaconfjp
 
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)torutk
 
JJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-bootJJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-bootTsuyoshi Yamamoto
 
クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)
クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)
クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)Tsuyoshi Miyake
 
高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応marsee101
 
Vivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリームVivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリームmarsee101
 
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)marsee101
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたTakefumi MIYOSHI
 
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)Koichi Sakata
 
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」Shinya Takamaeda-Y
 
Java web application testing
Java web application testingJava web application testing
Java web application testingTokuhiro Matsuno
 
PythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミングPythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミングShinya Takamaeda-Y
 

Destacado (20)

Synthesijer hls 20150116
Synthesijer hls 20150116Synthesijer hls 20150116
Synthesijer hls 20150116
 
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
 
Dart on Raspberry Pi
Dart on Raspberry PiDart on Raspberry Pi
Dart on Raspberry Pi
 
SDSoC と Vivado
SDSoC と VivadoSDSoC と Vivado
SDSoC と Vivado
 
Java 20年史 (JJUG CCC 2015 春 基調講演)
Java 20年史 (JJUG CCC 2015 春 基調講演)Java 20年史 (JJUG CCC 2015 春 基調講演)
Java 20年史 (JJUG CCC 2015 春 基調講演)
 
ビズリーチ x ScalaMatsuri by BIZREACH, Inc.
ビズリーチ x ScalaMatsuri  by BIZREACH, Inc.ビズリーチ x ScalaMatsuri  by BIZREACH, Inc.
ビズリーチ x ScalaMatsuri by BIZREACH, Inc.
 
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
 
JJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-bootJJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-boot
 
クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)
クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)
クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)
 
高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応
 
Vivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリームVivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリーム
 
$30で始めるFPGA
$30で始めるFPGA$30で始めるFPGA
$30で始めるFPGA
 
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
 
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
 
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
 
Java web application testing
Java web application testingJava web application testing
Java web application testing
 
PythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミングPythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミング
 
Gpu vs fpga
Gpu vs fpgaGpu vs fpga
Gpu vs fpga
 

Similar a Synthesijer jjug 201504_01

ななめ45°から見たJavaOne
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOneAdvancedTechNight
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Tokuhiro Matsuno
 
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTHeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTYuji Kubota
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門spring_raining
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みChihiro Ito
 
Async awaitでの繰り返し処理についての小話
Async awaitでの繰り返し処理についての小話Async awaitでの繰り返し処理についての小話
Async awaitでの繰り返し処理についての小話Masakazu Muraoka
 
Java トラブル解析支援ツール HeapStats のご紹介
Java トラブル解析支援ツール HeapStats のご紹介Java トラブル解析支援ツール HeapStats のご紹介
Java トラブル解析支援ツール HeapStats のご紹介Shinya Takebayashi
 
Nodejuku01 ohtsu
Nodejuku01 ohtsuNodejuku01 ohtsu
Nodejuku01 ohtsuNanha Park
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]David Buck
 
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)Iwana Chan
 
JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)taskie
 
Xamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみたXamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみたHironov OKUYAMA
 
Web development fundamental
Web development fundamentalWeb development fundamental
Web development fundamentalTakuya Kumagai
 

Similar a Synthesijer jjug 201504_01 (20)

ななめ45°から見たJavaOne
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOne
 
Nodejs
NodejsNodejs
Nodejs
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTHeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LT
 
Bp study39 nodejs
Bp study39 nodejsBp study39 nodejs
Bp study39 nodejs
 
実践 NestJS
実践 NestJS実践 NestJS
実践 NestJS
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
Async awaitでの繰り返し処理についての小話
Async awaitでの繰り返し処理についての小話Async awaitでの繰り返し処理についての小話
Async awaitでの繰り返し処理についての小話
 
Java トラブル解析支援ツール HeapStats のご紹介
Java トラブル解析支援ツール HeapStats のご紹介Java トラブル解析支援ツール HeapStats のご紹介
Java トラブル解析支援ツール HeapStats のご紹介
 
Nodejuku01 ohtsu
Nodejuku01 ohtsuNodejuku01 ohtsu
Nodejuku01 ohtsu
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
 
Java1
Java1Java1
Java1
 
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
 
PHPコアから読み解くPHP5.5
PHPコアから読み解くPHP5.5PHPコアから読み解くPHP5.5
PHPコアから読み解くPHP5.5
 
JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)
 
Xamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみたXamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみた
 
Web development fundamental
Web development fundamentalWeb development fundamental
Web development fundamental
 
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャーNode.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
 

Más de 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)
 
Slide
SlideSlide
Slide
 
Das 2015
Das 2015Das 2015
Das 2015
 
Reconf 201506
Reconf 201506Reconf 201506
Reconf 201506
 
Synthesijer fpgax 20150201
Synthesijer fpgax 20150201Synthesijer fpgax 20150201
Synthesijer fpgax 20150201
 
Reconf_201409
Reconf_201409Reconf_201409
Reconf_201409
 
Vyatta 201310
Vyatta 201310Vyatta 201310
Vyatta 201310
 
Fpgax 20130830
Fpgax 20130830Fpgax 20130830
Fpgax 20130830
 
Fpgax 20130604
Fpgax 20130604Fpgax 20130604
Fpgax 20130604
 
Fpga local 20130322
Fpga local 20130322Fpga local 20130322
Fpga local 20130322
 
Google 20130218
Google 20130218Google 20130218
Google 20130218
 

Synthesijer jjug 201504_01