作業記録2022岡
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[組込みシステム 2022]]
&size(40){とりあえず研究室に来い};
* 研究内容 [#f336fd66]
-PYNQでLSTM(最適化)
* 予定 [#oe724aec]
** 月曜日 [#fa69cdcd]
-10:30〜12:00 コミュニケーション英語 (オンライン,...
** 火曜日 [#s0699cf4]
-10:30〜12:00 情報創世工学特論
** 水曜日 [#t5254986]
-8:50〜10:30 並列ソフトウェア演習(開講時間は不定期)
** 木曜日 [#oa5664cf]
-10:30〜12:00 高木班ミーティング
-13:00〜14:30 全体ミーティング
** 金曜日 [#m931bbf2]
-10:30〜12:00 コンピュータ・アーキテクチャ特論
** 土曜日 [#q57887c5]
** 日曜日 [#o2d76127]
* 参考文献 [#c958434c]
-いろいろありそう https://github.com/Xilinx/SDSoC_Example...
-プラグマ https://japan.xilinx.com/htmldocs/xilinx2019_1/...
-VivadoのIPの概要が書いてあるところ https://docs.xilinx.c...
-PYNQ_Workshop https://github.com/Xilinx/PYNQ_Workshop
-HLSのなんかいろいろ書いてあるやつ https://docs.xilinx.co...
-疎行列を効率よく計算 https://qiita.com/KQTS/items/e5500b...
-Pythonで疎行列を扱う https://note.nkmk.me/python-scipy-s...
* 参考論文 [#c85db2d5]
-https://arxiv.org/pdf/1511.05552v4.pdf
-https://reader.elsevier.com/reader/sd/pii/S2405959522000...
-https://arxiv.org/pdf/2101.02667.pdf
-Eciton: Very Low-Power LSTM Neural Network Accelerator f...
* メモ [#p33dbbb4]
&color(red,white){&size(35){''今作業しているファイル名は...
&size(20){ここには一時的に書いておきたいメモを書く};
-次これをやるのはどうでしょうメモ
--刈り込み(圧縮)
---if matrix[i]/sparse<0 : matrix[i]=0
---行列をブロックに分けてから刈り込むやつなどの他のアルゴ...
--データフロー見直し
---101
--perplexityを頑張る
&size(10){類似したコードをコピペする時は変数名の変え忘れ...
-base 2,app 3, sparse 4, stream 5
* 作業記録 [#x3c7adb2]
**12/04 [#sb144470]
-no_opt
-opt
-new_sparse
もしくは
-今までのやつ
-new_sparse
-通信時間がボトルネックそうなのでwaitする必要ないの?
--sparseによってボトルネックが行列積<通信になったっぽお
**12/03 [#v8197523]
メモ
-weight_x,weight_h,count
-導入
-行列積と活性化関数分ける
**11/24 [#v4339529]
-メモ;streamは配列の同じ場所を見るのがダメなのかもしれない
-101のやつ刈り込みを考えると無しかもしれない
-これやるのどうでしょうメモ
--Estimatedが10超えてる奴の実行時間(stream_global)
-↑のやつを調べる
**11/15 [#o032dcc6]
-量子化の時点でまあまあの誤差が出でるからperplexityで評価...
-DMA通信する配列のサイズを小さくしたら速くなった6.73
--ほらな
**11/9 [#a30e1361]
-perplexityで評価するやつは逆伝搬の処理にも影響するせいで...
--ctとhtの平均誤差でやるやつが簡単そうでいいのかもね
-これどうでしょうメモ(上のメモが渋滞しているから一時的に...
--重み行列とバイアスを合体
---入力xの末尾に1を追加して行列積を計算するといい感じにな...
--いちいちcとhの結果をコピーしなくてもよいのでは
---なんかうまいことメモリ参照したら行けそう?
---cとhは出力のみにして入力は内部で頑張って読み取るとか
--重み行列を入力にする(これは期待薄)
---そもそもサイズがやばいのである程度小さくする
---CSC形式だとDMA通信増えてボトルネックになるかも?
**10/18 [#faecb48c]
-誤差の測定はperplexityでやるのが良いかもしれない
--最適化前と後でperplexityを比較して大体形同じだよねって...
**7/23 [#oba79a7f]
-DATAFLOWは渡したい変数が複数のタスクで呼び出されるとエラ...
**7/22 [#wd62c880]
-DATAFLOWで変な奴混ざってるとダメらしい
--ループ数も合わせなければならない?
-関数のfor呼び出し(もしくはパイプライン)は高位合成がバカ...
**7/13 [#qbf6029f]
-行列のDMA通信ができそうなのでCSR方式を行列にまとめてHLS...
-pop(pushかもしれない)が複数あるとなんかうまく通信できな...
--じゃあ行列のDMA通信の利用価値が高そうですね
-サイズの違うnumpy行列は結合できないからpandasなるもので...
-高位合成でも初期化しないと前回の残留思念が残っているらし...
**7/12 [#p7a203f5]
-今やってるやつのメモ的な
--xtかhtの読み込みがダメ?
--サイズをわかりやすくする?
-axisはinputとoutputを両立できない
**6/30 [#x1312519]
-axisで変数のreadはできたけどwriteはどうするんだろう
--s_axiliteで引数に&つけたらいけた
--あとはpython側で配列を調整したらいいんじゃない?
**6/24 [#y34c5710]
-疎行列と密行列の行列積のアルゴリズムを考えてた
--演算に向いている(らしい)CSR形式を使用
--SIZE^3回が非0要素数*SIZE^2回に
---密行列がある時点でSIZE^2は避けられない?
--COOはどうなんだろう
--通信時間との兼ね合いとかも考えないと
--DMAでint?
-axis使えばループ回数を可変にすることができるので拡張性が...
**6/23 [#ic722af5]
-重み刈り込みのしきい値を動的に設定することに成功
--結局s_axiliteがダメッだった説があるのでaxisでやった
--帰ってくる配列がでかいので最後に-1とかつけとけば後々便...
-COOとCSRができた
--多分CSCもできるでしょう
**6/21 [#ie0fbda9]
-array_partitionが活躍する場所ってunrollの時限定なのかな?
--unrollの時の高位合成の時間がバカ長いから気が進まない
--そもそもstreamでいい気もするし
-s_axiliteでfloat型が認識しない
--そもそもintも認識しない
---原因を考えよう
---floatとintを比較してる
---if文がダメ
---floatを渡すのはなんか別のことをしなければならない
**6/20 [#i20400d2]
-動的確保のやつが速度にどれだけ影響してるか調査
--動的確保無しとそこまで速度変わってない(要素が少ない可能...
--要素数を減らしたらちゃんと速度速くなった(ループを更に最...
--まあとりあえずは動的確保で行くか
-ZYNQの左にあるGPやらHPやらは何が違うのか軽く見てみたけど...
-行列の刈り込みを高位合成で実装
--速度はまだ遅いけど最適化したら多分良くなると思うけど?
**6/9 [#q67b3886]
-AXI SmartconnectのProduct Guideのリンク消されてるじゃね...
-レイテンシ?のやつのgenerate bitstreamってもしかしてめち...
--でもaxisとs_axilite併用でタイミング違反なしでいけました
**6/8 [#s08fb1ac]
-Q. does not have a TLASTだとどうなるの
--A. python上でエラーになる
-OUTPUT_STREAM[k] = push_stream<float,4,5,5>(img1.read(),...
--k=DATA_SIZE-1 (DATA_SIZEは15) で止まってk=7は動く
-stream型をさらに挟んだら動いた
--入力(ap_axiu)→ストリーム1(ap_axiu)→ストリーム2(float)→...
--考えられること:dataflowが速すぎてストリームのポッププ...
--最終的にFFもLUTもそこまで増えなかった,そのうえレイテン...
--こりゃあすごいぞ
**6/7 [#l467c514]
-https://github.com/Xilinx/PYNQ_Workshop/blob/master/Sess...
-ということでStream型に再挑戦
--なんかエラーなくなって動くかもしれない (サンプルプログ...
---レイテンシ半分
---BRAMなくなる
---FF倍くらい
---LUTバカ増え
---Estimatedが小さくなる(つまりどういうこと?)
--所感:BRAMなくなるのは美味しいけどLUTバカ増えてるの後々...
**6/3 [#e8250534]
-FIFO使うときに使えそうな話 https://se.hatenablog.jp/entr...
--Vivadoの合成は成功,あとはうまく動作するか
**6/1 [#ka952bf7]
-Eciton: Very Low-Power LSTM Neural Network Accelerator f...
--FIFOをうまいこと使って重みやら計算結果の保持を最小限に...
--計算ユニットを使いまわす
--乗算,除算をビットのシフトでなんとかする,除算はなるべ...
--量子化を何種類か試して誤差の観点を踏まえて調整する
-データのpop,pushを踏まえた上でのパイプライン化が速いこ...
**5/27 [#kd7413b7]
-[[FPL2021]]のページを作成,参考になりそうな論文はより深...
-パッケージ g++-aarch64-linux-gnu は利用できません。
--?????
**5/26 [#ob7bb950]
-armのクロスコンパイルに関連するページ
--https://installati.one/centos/7/gcc-c++-arm-linux-gnu/
--https://qiita.com/simapaso/items/8a3ff77ae29ac041be0d
--https://centos.pkgs.org/7/epel-x86_64/gcc-arm-linux-gnu...
**5/23 [#z033ee77]
-タイミング違反してるけど配列の動的確保(っぽいやつ)はできた
-これ https://github.com/Xilinx/SDSoC_Examples/tree/maste...
--AXIS→ap_axisが必要
**5/18 [#c68b58ae]
-これ何か使えるかもしれない https://github.com/Xilinx/SDS...
**5/12 [#u7ad7342]
-ストリーム型を試してみる
**4/28 [#f45cbbc4]
-作業記録作成
* おまけ [#hf5e735b]
-[[作業記録2021岡]]去年のやつ
-[[作業記録2022岡]]今年のやつ
終了行:
[[組込みシステム 2022]]
&size(40){とりあえず研究室に来い};
* 研究内容 [#f336fd66]
-PYNQでLSTM(最適化)
* 予定 [#oe724aec]
** 月曜日 [#fa69cdcd]
-10:30〜12:00 コミュニケーション英語 (オンライン,...
** 火曜日 [#s0699cf4]
-10:30〜12:00 情報創世工学特論
** 水曜日 [#t5254986]
-8:50〜10:30 並列ソフトウェア演習(開講時間は不定期)
** 木曜日 [#oa5664cf]
-10:30〜12:00 高木班ミーティング
-13:00〜14:30 全体ミーティング
** 金曜日 [#m931bbf2]
-10:30〜12:00 コンピュータ・アーキテクチャ特論
** 土曜日 [#q57887c5]
** 日曜日 [#o2d76127]
* 参考文献 [#c958434c]
-いろいろありそう https://github.com/Xilinx/SDSoC_Example...
-プラグマ https://japan.xilinx.com/htmldocs/xilinx2019_1/...
-VivadoのIPの概要が書いてあるところ https://docs.xilinx.c...
-PYNQ_Workshop https://github.com/Xilinx/PYNQ_Workshop
-HLSのなんかいろいろ書いてあるやつ https://docs.xilinx.co...
-疎行列を効率よく計算 https://qiita.com/KQTS/items/e5500b...
-Pythonで疎行列を扱う https://note.nkmk.me/python-scipy-s...
* 参考論文 [#c85db2d5]
-https://arxiv.org/pdf/1511.05552v4.pdf
-https://reader.elsevier.com/reader/sd/pii/S2405959522000...
-https://arxiv.org/pdf/2101.02667.pdf
-Eciton: Very Low-Power LSTM Neural Network Accelerator f...
* メモ [#p33dbbb4]
&color(red,white){&size(35){''今作業しているファイル名は...
&size(20){ここには一時的に書いておきたいメモを書く};
-次これをやるのはどうでしょうメモ
--刈り込み(圧縮)
---if matrix[i]/sparse<0 : matrix[i]=0
---行列をブロックに分けてから刈り込むやつなどの他のアルゴ...
--データフロー見直し
---101
--perplexityを頑張る
&size(10){類似したコードをコピペする時は変数名の変え忘れ...
-base 2,app 3, sparse 4, stream 5
* 作業記録 [#x3c7adb2]
**12/04 [#sb144470]
-no_opt
-opt
-new_sparse
もしくは
-今までのやつ
-new_sparse
-通信時間がボトルネックそうなのでwaitする必要ないの?
--sparseによってボトルネックが行列積<通信になったっぽお
**12/03 [#v8197523]
メモ
-weight_x,weight_h,count
-導入
-行列積と活性化関数分ける
**11/24 [#v4339529]
-メモ;streamは配列の同じ場所を見るのがダメなのかもしれない
-101のやつ刈り込みを考えると無しかもしれない
-これやるのどうでしょうメモ
--Estimatedが10超えてる奴の実行時間(stream_global)
-↑のやつを調べる
**11/15 [#o032dcc6]
-量子化の時点でまあまあの誤差が出でるからperplexityで評価...
-DMA通信する配列のサイズを小さくしたら速くなった6.73
--ほらな
**11/9 [#a30e1361]
-perplexityで評価するやつは逆伝搬の処理にも影響するせいで...
--ctとhtの平均誤差でやるやつが簡単そうでいいのかもね
-これどうでしょうメモ(上のメモが渋滞しているから一時的に...
--重み行列とバイアスを合体
---入力xの末尾に1を追加して行列積を計算するといい感じにな...
--いちいちcとhの結果をコピーしなくてもよいのでは
---なんかうまいことメモリ参照したら行けそう?
---cとhは出力のみにして入力は内部で頑張って読み取るとか
--重み行列を入力にする(これは期待薄)
---そもそもサイズがやばいのである程度小さくする
---CSC形式だとDMA通信増えてボトルネックになるかも?
**10/18 [#faecb48c]
-誤差の測定はperplexityでやるのが良いかもしれない
--最適化前と後でperplexityを比較して大体形同じだよねって...
**7/23 [#oba79a7f]
-DATAFLOWは渡したい変数が複数のタスクで呼び出されるとエラ...
**7/22 [#wd62c880]
-DATAFLOWで変な奴混ざってるとダメらしい
--ループ数も合わせなければならない?
-関数のfor呼び出し(もしくはパイプライン)は高位合成がバカ...
**7/13 [#qbf6029f]
-行列のDMA通信ができそうなのでCSR方式を行列にまとめてHLS...
-pop(pushかもしれない)が複数あるとなんかうまく通信できな...
--じゃあ行列のDMA通信の利用価値が高そうですね
-サイズの違うnumpy行列は結合できないからpandasなるもので...
-高位合成でも初期化しないと前回の残留思念が残っているらし...
**7/12 [#p7a203f5]
-今やってるやつのメモ的な
--xtかhtの読み込みがダメ?
--サイズをわかりやすくする?
-axisはinputとoutputを両立できない
**6/30 [#x1312519]
-axisで変数のreadはできたけどwriteはどうするんだろう
--s_axiliteで引数に&つけたらいけた
--あとはpython側で配列を調整したらいいんじゃない?
**6/24 [#y34c5710]
-疎行列と密行列の行列積のアルゴリズムを考えてた
--演算に向いている(らしい)CSR形式を使用
--SIZE^3回が非0要素数*SIZE^2回に
---密行列がある時点でSIZE^2は避けられない?
--COOはどうなんだろう
--通信時間との兼ね合いとかも考えないと
--DMAでint?
-axis使えばループ回数を可変にすることができるので拡張性が...
**6/23 [#ic722af5]
-重み刈り込みのしきい値を動的に設定することに成功
--結局s_axiliteがダメッだった説があるのでaxisでやった
--帰ってくる配列がでかいので最後に-1とかつけとけば後々便...
-COOとCSRができた
--多分CSCもできるでしょう
**6/21 [#ie0fbda9]
-array_partitionが活躍する場所ってunrollの時限定なのかな?
--unrollの時の高位合成の時間がバカ長いから気が進まない
--そもそもstreamでいい気もするし
-s_axiliteでfloat型が認識しない
--そもそもintも認識しない
---原因を考えよう
---floatとintを比較してる
---if文がダメ
---floatを渡すのはなんか別のことをしなければならない
**6/20 [#i20400d2]
-動的確保のやつが速度にどれだけ影響してるか調査
--動的確保無しとそこまで速度変わってない(要素が少ない可能...
--要素数を減らしたらちゃんと速度速くなった(ループを更に最...
--まあとりあえずは動的確保で行くか
-ZYNQの左にあるGPやらHPやらは何が違うのか軽く見てみたけど...
-行列の刈り込みを高位合成で実装
--速度はまだ遅いけど最適化したら多分良くなると思うけど?
**6/9 [#q67b3886]
-AXI SmartconnectのProduct Guideのリンク消されてるじゃね...
-レイテンシ?のやつのgenerate bitstreamってもしかしてめち...
--でもaxisとs_axilite併用でタイミング違反なしでいけました
**6/8 [#s08fb1ac]
-Q. does not have a TLASTだとどうなるの
--A. python上でエラーになる
-OUTPUT_STREAM[k] = push_stream<float,4,5,5>(img1.read(),...
--k=DATA_SIZE-1 (DATA_SIZEは15) で止まってk=7は動く
-stream型をさらに挟んだら動いた
--入力(ap_axiu)→ストリーム1(ap_axiu)→ストリーム2(float)→...
--考えられること:dataflowが速すぎてストリームのポッププ...
--最終的にFFもLUTもそこまで増えなかった,そのうえレイテン...
--こりゃあすごいぞ
**6/7 [#l467c514]
-https://github.com/Xilinx/PYNQ_Workshop/blob/master/Sess...
-ということでStream型に再挑戦
--なんかエラーなくなって動くかもしれない (サンプルプログ...
---レイテンシ半分
---BRAMなくなる
---FF倍くらい
---LUTバカ増え
---Estimatedが小さくなる(つまりどういうこと?)
--所感:BRAMなくなるのは美味しいけどLUTバカ増えてるの後々...
**6/3 [#e8250534]
-FIFO使うときに使えそうな話 https://se.hatenablog.jp/entr...
--Vivadoの合成は成功,あとはうまく動作するか
**6/1 [#ka952bf7]
-Eciton: Very Low-Power LSTM Neural Network Accelerator f...
--FIFOをうまいこと使って重みやら計算結果の保持を最小限に...
--計算ユニットを使いまわす
--乗算,除算をビットのシフトでなんとかする,除算はなるべ...
--量子化を何種類か試して誤差の観点を踏まえて調整する
-データのpop,pushを踏まえた上でのパイプライン化が速いこ...
**5/27 [#kd7413b7]
-[[FPL2021]]のページを作成,参考になりそうな論文はより深...
-パッケージ g++-aarch64-linux-gnu は利用できません。
--?????
**5/26 [#ob7bb950]
-armのクロスコンパイルに関連するページ
--https://installati.one/centos/7/gcc-c++-arm-linux-gnu/
--https://qiita.com/simapaso/items/8a3ff77ae29ac041be0d
--https://centos.pkgs.org/7/epel-x86_64/gcc-arm-linux-gnu...
**5/23 [#z033ee77]
-タイミング違反してるけど配列の動的確保(っぽいやつ)はできた
-これ https://github.com/Xilinx/SDSoC_Examples/tree/maste...
--AXIS→ap_axisが必要
**5/18 [#c68b58ae]
-これ何か使えるかもしれない https://github.com/Xilinx/SDS...
**5/12 [#u7ad7342]
-ストリーム型を試してみる
**4/28 [#f45cbbc4]
-作業記録作成
* おまけ [#hf5e735b]
-[[作業記録2021岡]]去年のやつ
-[[作業記録2022岡]]今年のやつ
ページ名: