2016-01-01から1ヶ月間の記事一覧
またまたCNTKである。次に、どこでもかしこでも登場してくるMNISTの認識(手書き文字認識)のチュートリアルに挑戦してみよう。 (僕の思う)CNTKとTensorFlowにおけるネットワーク構成方法の違い TensorFlowでも、MNISTは最初のチュートリアルで登場してきた。…
自作ISSに、GDBのインタフェースを追加したので、これを使ってxv6のデバッグを行いたい。何となくMIPSの移植は出来ているので、プロセスの切り替えとか、GDBで観察できれば、よりデバッグが容易になると思うんだ。 xv6のコードは、どなたかがMIPSに移植して…
仕事をしながら考えていたのだが、前回のSimple2dの問題は、0と1に分類するときに、どの程度の確率で0と1に分類されるかについて示されているんじゃないかと思った。 という訳で、もう一度データを見ながらリトライしてみよう。 注意: この記事は機械学習初…
とりあえず前回までにCNTKのインストールは完了したので、サンプルを見ながら何が出来るのか、調査していこう。 msyksphinz.hatenablog.com 目次 目次 Simple2dをCNTKで実行する 何が起きているのか? Simple2dのサンプルで実行しているのは、CNNの構築 トレ…
前回、CMTKを頑張ってソースコードからインストールしようとして、途中で大量のエラーが出て失敗してしまった。いったい何が駄目だったのだろう? msyksphinz.hatenablog.com 良く見てみると、僕の環境はUbuntu-12.10を使っていた。これが古すぎるのかもしれ…
TensorFlowに続いて、Microsoftの機械学習ツールキットもオープンソースとして公開された。最近は機械学習のツールを公開するのが流行っているのかね? ある意味では、自社の技術力を宣伝するのには良いのかもしれない。クローズに開発しても良いものではな…
Node.jsの本を買った。最近JavaScriptとNode.jsが流行っているので、どんなものなのかを勉強するためだ。 JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック作者: クジラ飛行机出版社/メーカー: ソシム発売日: 2015/08/31メディア: 単行本こ…
msyksphinz.hatenablog.com ブレークポイントとステップ実行が何となく動くようになったので、データの取得のためのレジスタ値取得コマンドとメモリ設定コマンドを調整していこう。 現在対象としているアーキテクチャはMIPS64のため、これに合うように、まず…
前回の実装では、continue命令を実装したのだった。次は、step操作を実装していこう。 msyksphinz.hatenablog.com step実行は、GDBの中ではどのように実装されるのだろうか? Howto: GDB Remote Serial Protocol In the RSP, the s packet indicates steppin…
msyksphinz.hatenablog.com いよいよプログラムの実行に移る。GDB側からプログラムの実行として、stepかcontinueを実装していく。まずは、continueからだ。 その前に、continueで正確に停止できるように、breakpointの設定を行っていこう。 breakpointの実装…
msyksphinz.hatenablog.com 前回までで、GDBのパケットの仕組みについて学んだ。今度は、GDBのリンク確立とプログラムのダウンロードだ。 まずは適当にGDBのフロンドエンドからパケットを受信して、どのような形式のパケットがやってくるか観察してみる。 GD…
前回、GDBのパケット通信の確立方法について学んだ。次は、実際にどのようなパケットが送信されているのか、観察してみることにしよう。 msyksphinz.hatenablog.com https://github.com/msyksphinz/swimmer_iss/tree/feature/gdb_implgithub.com GDBリモート…
さて、前回でGDBのリモートデバッグプロトコルについて分かってきた。 今度は、これを実装していこう。 基本的には、OpenRISCのISSであるor1ksimの実装を参考にする。 といっても、or1ksimはC言語で実装してあるので、必要な部分はC++に置き換えていく必要が…
これまで、自作ISSに様々な機能を組み込んできた。Luaのインタフェースを使ってインタラクティブなデバッガを実現したり、elfを読み込むことで関数トレースや、関数フローを表示できるような改良を施してきた。 ベンチマークを実行したときに、関数をどのよ…
RISC-VのISS実装を進めていっている。今回はアトミック演算についてだ。 アトミック演算は、Read Modify Writeを使って実現している。ReadModifyWriteは、メモリからの読み込み、値の変更、メモリへのストアを1つの命令で実現しており、またこれらのメモリア…
RISC-Vに限らず、大概の64ビットプロセッサには64ビット同士の乗算を行う命令が存在する。RISC-Vでは、以下の命令が定義されている。 MUL : 64bit signed × 64bit signed → 下位64ビットを結果として格納 MULH : 64bit signed × 64bit signed → 上位64ビット…
msyksphinz.hatenablog.com RISC-VのISSを引き続き修正している。 MMUの実装と、ベクタの部分が間違っていたので修正した。RISC-Vでは、ECALLという命令を使って一つ上の権限に移ることができる。 RISC-Vには4つの権限があり、上から Machine Mode Hyperviso…
RISC-Vのテストパタン(riscv-tests)をパスさせるにあたり、RISC-Vの持つ仮想化の方式について勉強する必要が生じた。 これを機に、RISC-Vの仮想化の方式についてまとめてみよう。 RISC-Vの持つ仮想化のモード RISC-Vには、オペレーションモードに応じていく…
僕のISSを、Travis-CIを使ってリグレッションをしてみることにした。基本的には、既にコンパイルしたパタンを一緒にアップロードしておき、これを流すことでリグレッションとする。 リグレッションには、CTestを使い、既にriscv-toolsより提供されているrisc…
RISC-V用のISSで、倍精度と単精度の浮動小数点をサポートをするために、RISC-V ISSで32ビットモードと64ビットモードをサポートしよう。 32ビットモードと64ビットモードのレジスタファイル対応 まずは、レジスタファイルの大きさとアドレスの範囲を64ビット…
MIPSの浮動小数点命令についても、大分実装が進んできたので、RISC-Vの実装を進めていこう。 RISC-Vにも単精度、倍精度の浮動小数点演算命令が定義されている。 Download - RISC-V RISC-Vの浮動小数点命令をISSに実装する ISSの実装についてはMIPSのそれと殆…
本屋にふらっとよった時に発見。まさに本日発売でした。 高速化プログラミング入門作者: 北山洋幸出版社/メーカー: カットシステム発売日: 2016/01メディア: 単行本この商品を含むブログを見る 内容としては、高速化の基礎から、メモリアクセス回数の削減、…
前回までで、どうにかこうにかCMakeでVivado Simulatorのビルド環境を構築した。 ここまで出来たら、実はCTestによるテストの追加は容易なのだ。 CMakeLists.txtに以下を追加してみた。 # CTest enable_testing() add_test (NAME basic_test COMMAND /cygdri…
ブログのコメントで、CMakeを使ってVerilogのプロジェクトを扱うためにはどのようにすれば良いのか、という話を頂いた。 確かに、CMakeがサポートしているのはC++とか、ソフトウェアのプロジェクトばかりだ。 Verilogをプロジェクトをサポートするためにはど…
msyksphinz.hatenablog.com 昨年12月に受験したTOEICの結果が出てきた。結果としては、前回受験(ほぼ1年前)に比べて40点アップ。これによりついにTOEIC高得点の大台にのった感じになった。 TOEICを受験し始めたのは高校三年生のときからで、かれこれそれから…
softfloatは、浮動小数点をソフトウェアで実現するためのライブラリだ。 Berkeley SoftFloat 今までは整数命令ばかり実装していたけど、MIPS64やRISC-Vも注目を浴びてきたということもあり、浮動小数点の命令も実装していこう。 そのためには、x86の命令を使…
徐々にRISC-Vに注目が集まってきましたね。 www.publickey1.jp www.eetimes.com オープンなプロセッサということで、ARMなどと違い無料で利用することができるという点や、ARMに拘束されるよりもオープンに開発した方が良いという点も挙げられるが、個人的に…
Odooというのは、昔はOpenERPと呼ばれていたのだが、その名の通りERP(Enterprise Resource Planning)を行うためのWebツールだ。 通常Redmineであれば開発プロジェクトとか、特定のエンジニア向けのツールしか用意されていないが、Odooはそれ以外に在庫管理、…
ISSのリグレッションテストを実行するための環境を構築していこう。 CMakeを使ってリグレッションの環境を構築する CMakeLists.txtの記述 CTestのためのパッケージを追加 Travis-CIを使ってリグレッションを実行する .travis.ymlを記述する Travis-CIのCMake…
ISSのインタフェースを統一するために、まずはコア部とインタフェース部を分離する。 現在のISSは、基本的に以下のようなインタフェースを持っている。 図では、コントロール部とCPUコア部を分離して記述しているが、実際には同じ階層としてビルドしていた。…