seri::diary

プログラミングのこととかポエムとか

じぶん Release Notes (ver 0.33.1)

個人開発

f:id:serihiro:20190427112205j:plain
DE10-Lite

  • FPGAを勉強したくてDE10-Lite買った

    • ソリトンウェーブで購入したが,学生なのでアカデミア価格で買えた*1
    • 最終的にはFPGA上で簡単なマルチパーセプトロン,ゆくゆくはcNNもFPGA上で実装して,ホントに量子化したNNの推論が高速に動作するのか確かめたい
    • まずFPGAボードで学ぶ 組込みシステム開発入門[Intel FPGA編]の第1章を読んで,FPGAの概要,歴史,FPGAの構造について学んだあとにQuartus PrimeのLite EditionをVirtualBox上のUbuntuにセットアップした
    • 現在の進捗として,この本の第2章の課題である60秒計を実装して動作させるところまではできた
    • しかし,後述するように5月中はあまり時間が取れなくてほとんど触れなかった
    • 簡単な時計を作るにしても,動作クロックを考慮して内部カウンタを用いて「1秒を測る」というアプローチを通じて,動作時のタイミングを考慮して実装しなければならない,という電子回路独自の概念を学んだ
    • あと,verilog HDLのif文はifブロック内部に2行以上処理を書けないということを学んだ*2
  • my9cc

    • 研究が忙しく,今月は作業できていない
    • 大変よくない状態だが,SWoPP2019の予稿を書き終えるまでは再開できそうもない

読書

読み終わった

読んでる

研究

  • 連休中は作業がかなり捗るという発見をした
    • 普段の研究室も静かで良い環境なのだが,MTG等のイベントが一切ないことが保証されているというだけで心理的なストレスはかなり減る
    • おそらくは,そのイベントのための準備とか,イベントに遅刻しないようにするために時間を気にすることに無意識のうちに相当なパワーを使っているためだと考えられる
  • 一方で,連休中にガーっと実装したやつを評価したら思ったようなパフォーマンスが出ずに窮地に追いやられた
  • しかし,5月いっぱいかけて地味にホットスポットを探してパフォーマンスチューニングし,なんとかベースラインの実装よりは良い性能が出せそうな見込みが出てきた
    • Pythonでの並列プログラミングは色々罠があって大変である
  • 5月31日現在,何とか諸々の問題は解決できて,6月からは評価と論文執筆に集中できそうである

    • いろいろ詰みそうになったが,その度に原因を調査して問題解決する胆力は大学院に入ってから少しは伸びたのではないかと思う
  • 研究の副産物として,動作検証用のPythonコードをいくつか書いてgistに放流した

chainer iterator_statemachine examination · GitHub

python mulitprocessing.Queue test for each Context · GitHub

python mulitprocessing.Queue test for each Context. See also https://gist.github.com/serihiro/bb9614b816b9c35e95ec4b53d3382f72 · GitHub

勉強

  • 研究が忙しくてほとんど何もできていない
  • ただでさえ就活が近づいてるというのにソフトウェアエンジニアとしてのリハビリが何もできてなくてやばい
  • AtCoderも今月は1回ABCに出ただけかな.よろしくない.
  • 単純な幅優先探索が実装できなくて痛い目を見たので,グラフアルゴリズムは少し復習した

Keep

  • 適度な息抜き

Problem

  • いつも走ったり歩いたりしているコースに羽がある系の虫が増えてつらい
  • 忙しいのでついサボってしまい,結局ジョギング再開できておらず,体重が減らない

Try

  • ジョギング再開
  • 9ccの作業時間を毎週少しでも割くようにする

まとめ

  • かなり厳しい一ヶ月だったが,その分進捗もあった
  • 来月は,6月末にSWoPP2019の予稿の締切があるのでそれに向けてがんばる

*1:買ったあとに気づいたが,OpenCLのBSPに対応してないFPGAなのでDE10-Nanoの方が良かったかなと思ったが,値段が5,000円ぐらい違うのでまずは安いFPGAverilog HDLで実装する修行をするのだ

*2:論理ブロックで条件分岐を実装してるためと考えられるが,普通にプログラミングしてると意識しないところなのでコンパイルエラーになって結構悩んだ