カテゴリ:PCとか( 132 )

もくじ

V-scale というオープンソースマイコンを拾ってきて FPGA に乗せて遊んでます

_コンソール付きのシミュレータが欲しい 端末 XMODEM
乗算・除算器を改良した話 : github
FPU 拡張を追加したい話
_演算器のモデル記述 FADD FMUL FMADD FDIV FSQRT : github
_組み込み 転送 演算器

[PR]
by tom01h | 2017-12-31 23:59 | PCとか | Trackback | Comments(0)

CuPy を使いたい

PyCUDA が役に立ちそうもないので、Chainer のおまけ?の CuPy を試してみた。
こっちの方がインストールが簡単みたいです。
ここら辺のソフトはどんどん新しくなっているので、ちょっと古い情報だと Windows では使えないとか書いてあって惑わされます。
で、import cupy as cp って書いて、 np. を cp. に書き換えていくだけで動いた。
でも、高速化するためには dtype=np.float32 も付けた方が良いみたいです。
そして、2倍以上に高速化されたっぽいです。
よく10倍以上とか書いているけどそこまではいかず。ネットが小さすぎるんでしょうかね?

[PR]
by tom01h | 2017-09-21 23:52 | PCとか | Trackback | Comments(0)

PyCUDAを使いたい

dot演算で行列積を求めてくれないっぽいです。
役に立ちそうにありません。


DeepLearing の勉強を始めたし、別にこのために買ったんじゃなかったんだけど、GPUを使えるようにしたい。
正直排熱とか心配なんだけど、やっぱりこのままでは時間がかかりすぎる。

ちょっと古い情報でバージョン違いとかあるみたいだけど ここ を参考にした。
なんで Visual Studio とか必要なんだろう?ってただなんだ、今時すごいね。
んで、pip install しようと思ったら…

error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
えぇ~~っ、Visual Studio は最新版使っちゃダメなんじゃん。っていうか、コンパイル済みのPyCUDAとかないの?
くそぅ。毎日毎日何ギガバイトも…
で、やっぱり上手く行かない
fatal error LNK1158: cannot run ‘rc.exe’
こんな方法で良いの?で、とりあえずインストールできたみたい。

[PR]
by tom01h | 2017-09-20 23:23 | PCとか | Trackback | Comments(0)
Normalizer のシフト判定は前段シフトの結果を使って判定していたのですが、前々段の結果に前倒しすることでちょっとだけ論理が増えますがスラックが -6ns を割るところまで高速化しました。ここまでくるとドングリの背比べになって、本当に遅いのがどこなのか分からなくなります。ただ、非正規化数出力のための仕組みを外すと、ちょっとだけ早くなりそうなので、別の方式を思いついたら試してみようと思います。

次に、何か所にもコピーされてしまっているアラインメントシフタを1本化しました。ちょっとだけ小さくなってる。
|23 | md |vscale_mul_div | 3232|

最後に、32ビット加算器を3個連結して96ビット加算器として使っている部分を、2連結までに戻します。実際問題として、3連結が必要なのは、FMADDの加数をシフトする時で、かつ、-1倍した時のキャリーが発生する時だけです。V-scaleの乗算器は遅いので、下位の32bitを前もって-1倍しておくことも可能です。で、とってもわかりにくいものになりましたが、スラックもトップ10にはFPUは出てこなくなって -5ns 付近まで減少、面積も以下のごとく。
Report Instance Areas:
+------+---------------+----------------+------+
| |Instance |Module |Cells |

+------+---------------+----------------+------+
|1 |top | | 7667|
|18 | vscale |vscale_core | 7081|
|19 | pipeline |vscale_pipeline | 7076|
|20 | csr |vscale_csr_file | 1305|
|21 | ctrl |vscale_ctrl | 2038|
|22 | fregfile |vscale_fregfile | 92|
|23 | md |vscale_mul_div | 3157|
|24 | regfile |vscale_regfile | 71|

[PR]
by tom01h | 2017-09-15 15:16 | PCとか | Trackback | Comments(0)
ADD,SUB,MUL に続いて MADD もバークレーテストフロートで検証しました。動作モデルがあったので、とりあえず動くものはあまり頭を使わなくても作れます。が、スラックは -7ns をこえました… そして、恐ろしく大きくなっている。

最新版
Report Instance Areas:
+------+---------------+----------------+------+
| |Instance |Module |Cells |
+------+---------------+----------------+------+
|1 |top | | 7941|
|18 | vscale |vscale_core | 7355|
|19 | pipeline |vscale_pipeline | 7349|
|20 | csr |vscale_csr_file | 1634|
|21 | ctrl |vscale_ctrl | 1639|
|22 | fregfile |vscale_fregfile | 133|
|23 | md |vscale_mul_div | 3463|
|24 | regfile |vscale_regfile | 71|
|25 | vscale_xbar |vscale_xbar | 36|
+------+---------------+----------------+------+

整数MUL/DIV高速版
+------+----------------+-----------------+------+
| |Instance |Module |Cells |
+------+----------------+-----------------+------+
|1 |top | | 5044|
|17 | vscale |vscale_core | 4485|
|18 | pipeline |vscale_pipeline | 4482|
|19 | csr |vscale_csr_file | 1567|
|20 | ctrl |vscale_ctrl | 1045|
|21 | imm_gen |vscale_imm_gen | 1|
|22 | md |vscale_mul_div | 1430|
|23 | regfile |vscale_regfile | 60|
|24 | src_a_mux |vscale_src_a_mux | 32|
|25 | src_b_mux |vscale_src_b_mux | 37|

オリジナル
+------+----------------+-----------------+------+
| |Instance |Module |Cells |
+------+----------------+-----------------+------+

|1 |top | | 4475|
|17 | vscale |vscale_core | 3916|
|18 | pipeline |vscale_pipeline | 3913|
|19 | csr |vscale_csr_file | 1562|
|20 | ctrl |vscale_ctrl | 1135|
|21 | imm_gen |vscale_imm_gen | 1|
|22 | md |vscale_mul_div | 777|
|23 | regfile |vscale_regfile | 60|
|24 | src_a_mux |vscale_src_a_mux | 32|
|25 | src_b_mux |vscale_src_b_mux | 37|

ちなみに、fnmadd と fmsub と fnmsub は、テストフロートにないので検証が弱そうです。仕様書を見た感じでは fnm… はネゲート後に丸めるので良いのですよね?まぁ、近傍丸めでは差は出ないんですけど。

[PR]
by tom01h | 2017-09-14 21:00 | PCとか | Trackback | Comments(0)

SiFive GNU Embedded Toolchain

いつも参考にさせてもらっているFPGA開発日記にあるように、SiFive が Windows 用の GNU Toolchain を公開しています。せっかくなので、試してみることにしました。インストールは、ただ解くだけです。
これを BoW 上で Vscale-chip 用に使ってみます。変更は src/main/c/XXX/Makefile の変更のみ。

-PREFIX = /opt/riscv
-ARCH = riscv32-unknown-elf
+PREFIX = ${HOME}/riscv64-unknown-elf-gcc-20170612-x86_64-w64-mingw32
+ARCH = riscv64-unknown-elf

-CFLAGS = -Wall -nostdinc -nostdlib -fno-builtin
+CFLAGS = -Wall -nostdinc -nostdlib -fno-builtin -march=rv32im -mabi=ilp32

こんな感じですが、BoW から Windows 用のコマンドを使うには .exe が必要なので、

-AR = $(BINDIR)/$(ADDNAME)ar
-AS = $(BINDIR)/$(ADDNAME)as
-CC = $(BINDIR)/$(ADDNAME)gcc
:
+AR = $(BINDIR)/$(ADDNAME)ar.exe
+AS = $(BINDIR)/$(ADDNAME)as.exe
+CC = $(BINDIR)/$(ADDNAME)gcc.exe


[PR]
by tom01h | 2017-09-12 20:55 | PCとか | Trackback | Comments(0)
FMA を仮に組み込んだらスラックが -6ns を超えました。フラグ更新のパスがワーストです。
サブノーマル対応のノーマライザが遅いのかなぁ?なんかよい方法を考えないといけなさそうです。
でもその前に、ちゃんと機能を積み込みます。安心のバークレーテストフロートを使うために、モデル検証環境を再利用しました。ADD/SUB/MUL は完成したつもり。
精度不足を補ったり、特殊値の入力に対応して FMA が完成したら、最適化に取り組もうと思います。
しかし、デフォルト非数の符号がテストフロートとRISC-Vで違うっぽいのが面倒ですねぇ。


[PR]
by tom01h | 2017-09-11 23:57 | PCとか | Trackback | Comments(0)

V-scale に FPU MADD 仮組込

rv32uf-p-fmadd がPASS するところまで組み込みました。
どう考えても精度が足りないし、特殊値の入力も対応していません。
ここから、もうちょっときれいに回路の共有をしたり、単体で検証できるようにして行こうと思います。

[PR]
by tom01h | 2017-09-10 15:20 | PCとか | Trackback | Comments(0)

wsl-terminal

Bash on Ubuntu on Windows のターミナルがあまりに使いにくいので、wsl-terminal なるものを入れてみました。もっと便利なものもあるのかもしれませんが、とりあえず画面が崩れたりしなくなりました。マウスのコピペも普通になりました。もっと早く試せばよかった。
しかし、ググったページに必ずと言ってよいほど BoW から Windows のコマンドを実行可能にする拡張の話も一緒に出ているのですが、皆さん Creators Update から標準で出来るようになったこと知らないんですかね?それとも、標準のより便利なんですかね?標準のは BoW の環境変数を Windows のコマンドに渡してくれないあたりを不便に感じています。

[PR]
by tom01h | 2017-09-07 19:57 | PCとか | Trackback | Comments(0)
だいぶ強引に組み込みました。特殊値の入力は FMUL はまだ対応していません。
清書とか検証とかは FMADD を組み込んでから考えます。
とりあえずリハビリです。でも、tests の rv32uf-p-fadd は PASS したので、Github にはおいておきました。

[PR]
by tom01h | 2017-09-06 22:46 | PCとか | Trackback | Comments(0)