type t (* void *)

ソフトウエアのこととか

レジスタ割付けにグラフ彩色を使うの微妙だなという話

レジスタ割付け

コンパイラはコード生成の最後に変数(無限にレジスタがあると仮定したときの仮想レジスタ)を実際のレジスタに対応付ける、レジスタ割付けを行う。 この際には一般的にはグラフの彩色問題に帰着して解く事が多い。

彩色問題の色を使用レジスタに見立てて、何色で塗ることができるかというのを求め、それが実際のレジスタ数を超えていれば spill(メモリに退避)/fill(メモリから復帰)の処理を追加して仮装レジスタの生存区間を分割し、もう一度彩色を試みる。

疑問

  • コンパイルターゲットが分かっているわけだからNはもう分かっており、N色で塗れるかどうかを解くべきで、何色で塗ることができるのかという問題を解くのは変なのでは? これはRegister-Pressure-Aware schedulingの論文を読んで、これでこんなに性能が向上するのか、、、今まで何をしていたんだ感を感じました(@tanimocchi さん @khibino さんに感謝) Register pressure aware scheduling for high level synthesis - IEEE Conference Publication
  • CPUでしかうまく動かなくないですか?
    例えばVideoCore4というGPUでは自由に読み書きできるローカルメモリがないので、スピルを行うためにはCPU側のメモリにDMA転送でに書き戻さなければならないが、スタックポインタというものはない。アドレッシングモードでBase+Offsetを計算せずにいっぺんに行うLoad命令みたいなものがないので多数の演算が必要である。 更に書き戻す先のアドレスを保持する変数が生きている必要があり、Base+Offsetの計算のための演算命令を挿入する必要がありそのレジスタも要求するようになる。

    そうすると次はその命令をスケジューリングしたり、共通式の除去などの最適化を行いたくなるだろう。フェーズ間で影響を与え合いすぎてしまう。

    スピルをしやすいアーキテクチャでしかうまくいかないのでは?という疑問

生活リズム改善

生活リズム見直し月間実施中です。

Twitterの時間制限

Androidアプリで、アプリの使用制限を入れるものを使い始めた。 この手のものはたくさんあると思うけど、一応URLを貼っておく。

play.google.com

制限は5分/30分と23:00 ~ 7:00の制限。PCでTwitterやっていると意味がない感じがするが、 電車内でKindle本を読む時間が増えた。ほんとはPDFを読もうと思ったらスマホからは読みにくすぎた。 この前の通知では週10時間くらいTwitterアプリを使っていたらしいが、このときには8時間くらいになっている。 依存。。。。

f:id:no_maddojp:20180602150407p:plain

Save My Eyes

PCで作業しているとつい熱中して目が痛くなったり腰が痛くなったりするので、 一定時間ごとに休め!って言ってくれる拡張プラグインを入れた。

chrome.google.com

30分に一回5分休憩するようにしている。これでリズムをつくっていきたい。。。

睡眠記録

最近昼間の眠気を治療したいので、入眠時間・うとうとした時間の記録をつけている。

f:id:no_maddojp:20180602145438j:plain

8時間位の睡眠を確保したいのだけど、ちょくちょく朝目が覚めていることに気づいた。
記録をつけてないときには気づかなかった。
睡眠記録をつけていると、なんだか勝手に睡眠リズムが整ってきて、生活が整ってきた感じがある。記録をつけるだけで効果があるやつだ。

情報密度が薄いコンテンツの消費をやめる

Youtube関連。みたいやつは1.5倍速で見るようになった。

VC4CLについて

www.slideshare.net

  • テストケースがfailするのは大体の原因は使用変数の数がレジスタ数を超えてしまい、レジスタ割付けに失敗するから
    このアーキテクチャにおいてはレジスタスピルは現実的な時間で行うことは不可能で、レジスタ割付け自体の改善がもとめられるが これはさらなる解析が必要で一朝一夕には解決しない
  • 性能が低い理由はかなりいっぱいあるが
    • 2命令同時実行のための命令スケジューラがない
    • メモリのread, writeをfusionしないといけないが、これが全然動いていない
    • Kernel fusionが動いていない
    • メモリを気をつけないとすぐ不効率になる
      例えばDMA転送とTMUでのロードで、キャッシュ不整合が起きるために保守的にTMUロードで十分なところをVPMでロードする
    • (当然基本的な最適化不足)

ML Day#1を開催しました

3/31にML_Dayを開催しました。もみあげさん@pocketburserkerに協力頂いてドワンゴの会議室をお借りました!
毎度ありがとうございます!

ML Dayは前のML勉強会と名乗っていた勉強会でしたが、今回名前を変えてみました。
今回は最近関数型言語に関連する勉強会があまり見られないため、制約を緩めてMLに関する話題・さらにMLユーザが聞いて楽しめそうな内容ならOKと 発表の内容を緩めました。結果的にElmの発表など様々な発表が集まりとても楽しかったです。
今回発表枠・LT枠あわせて12枠ありましたが全て埋まりました!発表していただいた方御礼申し上げます! 下のリンクから当日の発表資料などが見れますので是非見て下さい!

ml-lang.connpass.com

続きを読む