タグ

ブックマーク / shinh.hatenablog.com (33)

  • Deep Learning Acceleration 勉強会 - 兼雑記

    https://connpass.com/event/64632/ すごく面白かった。最近こういう会に行って感心することは多いのだけど、しかしなんか書きたいと思うレベルになかなか来ない、まあそれなりに年喰ったしな、とか思ってたんですが。低レイヤとか、自分がある程度既に知ってるところの話を聞くのも楽しいけど、自分が最近勉強してて理解しはじめたことの話を見聞きする方が楽しいよねえということかと思いました。まさににわかほど語りたがる現象で、実際懇親会とかで間違ってること結構言ってそうな気がする。 ジャンルとして、他のCSのジャンルとかと違って、深層学習はとにかく論理的に確定できない話が多くて、あの論文はあやしいなあ、あれは説得力あるなあ、というような、口コミベースの情報が回してる面が、良くも悪くもあるのかなあ、という印象を持っています。 つーわけで口コミレベルの適当なことを、以下、書きます。(定

    Deep Learning Acceleration 勉強会 - 兼雑記
    kuenishi
    kuenishi 2017/09/11
    "コンテナがある程度制御してるとはいえ、同じマシンで動いてる他のタスクの影響がどうしても出てしまって、同期+分散は遅いやつに性能がひっぱられがち" 某検索会社がやっぱり一歩先行ってる感じあるなー
  • tanlog - 兼雑記

    最近、 tanlog というのを作って使っていて、割と便利なので紹介してみます。 https://github.com/shinh/test/blob/master/tanlog.rb 元々は同僚と、なんか端末に出たもの前もって lv とか tee に入れておくのって、忘れることあるし、 lv とか tee に流すと isatty が false になって色出ないのうざいよねえ…みたいな話をしてたように思います。 grep については fake_isatty とか作ったりしたんですが、この時 soda さんに仮想端末作ってやる方法があると教えてもらったのを思い出して、 script とかで記録しておいたら…とか話していました。 結果、その同僚は zenlog というのを作って便利になった、とか言ってたのですが、なんか Perl と bash 混じってるとか、コマンドの切れ目をプロンプトで教

    tanlog - 兼雑記
    kuenishi
    kuenishi 2017/02/16
  • ELVM Compiler Infrastructure - 兼雑記

    最近作ってたオモチャがだいたいまとまってきました。 https://github.com/shinh/elvm 第12回 kernel/vm 勉強会で発表した時のスライド: http://shinh.skr.jp/slide/elvm/000.html これは何かというと、前作った bflisp を改良したり整理したりしたもので、 C 言語をシンプルな中間言語 (EIR) に変換する改造 8cc と、その中間言語を Brainfuck をはじめとした他言語に変換するバックエンドから成り立っています。 bflisp との差分は、 Brainfuck 以外のバックエンドを追加しやすくしたり、バックエンドを C で書いて、完全に Brainfuck だけで 8cc.bf を再現することができるようにしたり、という感じです。 特に興味深いであろうバックエンドとしては、 Brainfuck, Unl

    ELVM Compiler Infrastructure - 兼雑記
    kuenishi
    kuenishi 2016/10/21
    あたまおかしい、すごい
  • kati について - 兼雑記

    https://github.com/google/kati kati について、ドキュメント書こう…と思っていたのですがなかなか進まないので、とりあえず日語で書いてみることにしました。何書くかがあまり明確じゃないテーマなので、何書くか考えるのと英語考えるのを両方同時にやるのが少し大変で。 動機 kati は GNU make のクローンです。いずれ完全なコンパチになると嬉しいですが、なかなか難しいだろうと個人的には諦めています。用途に対して実用的ならば良いかなと。 動機としては、 Android platform のビルドシステムが、なかなかシュールな GNU make 黒魔術で構成されていて、 make が実際になんかしはじめるまでが遅かったので、そこを高速化したいというものでした。 ビルドシステムが遅いという時、まずだいたいヌルビルドとフルビルドの2点を考えます。ヌルビルドてのは生

    kati について - 兼雑記
    kuenishi
    kuenishi 2016/08/05
  • 就職して9年が過ぎる - 兼雑記

    転職して7年が過ぎたというのを読んで気づいたんだけど、そろそろ入社後9年が経過したらしい。僕は結構長い期間をここで過ごしたことになるんだなと思った。ちょっと以前のことを振り返ってみようと思う。言うまでもないけどこれは僕の書ける範囲での個人的な感想と体験談であって会社の見解等を表しているものではない。 きっかけ わりと重要でない Borgチーム (の周辺) いつのまにやらBorgという名前を普通に言って良くなっている。嬉しい。まあ当時もぶっちゃけ、秘密だから出してないっていうよりは、単に誰もアカデミア的なキャリアに興味が無いから出してなかったんだと思う(私見)。 さて、当時Borgというかクラスタマネージメントのあたりでは、コンピュータのリソースて適当にたくさん使ってるけど、これ節約したらすっげー支出減ったりしない?みたいなのがホットで、なんかとりあえず色々な人々が色んなことをやっていた。い

    就職して9年が過ぎる - 兼雑記
    kuenishi
    kuenishi 2016/03/11
  • static link について - 兼雑記

    案外、 static link ってわかってないもんです。というかリンカってわかってないもんです。そして案外はまるものです。以下のクイズに答えられるでしょうか。 クイズ1 $ nm main.o # int main() {} 0000000000000000 T main $ nm foo.a # void foo() { bar(); } void baz() {} foo.o: U bar 0000000000000010 T baz 0000000000000000 T foo $ nm bar.a # void bar() {} void baz() {} bar.o: 0000000000000000 T bar 0000000000000006 T baz $ gcc main.o foo.a bar.a最後のコマンドで、何が起きますか? 普通にリンクできる undefine

    static link について - 兼雑記
    kuenishi
    kuenishi 2015/03/27
  • 失敗ロック例いくつか - 兼雑記

    なにかあまりスレッドとか得意でない人のコードを見ていて、いくつかダメな予感がするパターンがあるよね、ってことで適当に集めてみました。どれもこれも小さな例にすると、こんなミスしねーよ、って感じなんですけど、複雑なコードの中にあると結構ミスるもんかな、と。私自身マルチスレッドはたいへん苦手で、実際私がやらかしたケースもいくつか。 ひとつめ: ロック順序逆転 // そこらじゅうで確保されてるグローバルなロック pthread_mutex_t g_mu = PTHREAD_MUTEX_INITIALIZER; // このクラスを使うところは全域 g_mu でロックされてるとします class C { public: C() { pthread_mutex_init(&mu_, NULL); } void doSlowOperation() { pthread_mutex_lock(&mu_); /

    失敗ロック例いくつか - 兼雑記
    kuenishi
    kuenishi 2014/06/04
  • binutils にパッチ投げてみた話 - 兼雑記

    Mach-O バイナリをコード見ながら逆アセンブルする方法が無いってのがずっと困っていました。つまり linux でよくやっている objdump -S みたいなことがやりたかったんですが、 objdump -S は Mach-O に対しては動かないし、 otool -tvV もソースコードは見せてくれないし、っていう。でまぁ一念発起して binutils というか libbfd をいじってみたのでした。 今回はじめて FSF なソフトに patch 投げてみて、まぁ特に著作権の処理とかどのくらい時間かかるもんなのかよくわからなくて、こちらのかた以外にあまり体験談的なのが見つからなかったので、なんか書いていみようかと。 とりあえず適当にパッチ書き。経験上デカいパッチいきなり投げるヤツはうざがられるので、なんか小さめな目標で…ってことで objdump -S を .o に対してだけ動くような

    binutils にパッチ投げてみた話 - 兼雑記
    kuenishi
    kuenishi 2012/04/07
    GNUというかOSSにパッチを投げる話。書面でサインとか契約社会だなあ
  • atomic operation どころか mutex もわかってなかったという話 2011-09-05 - 兼雑記

    read write lock ってものがあります。 pthread だと pthread_rwlock_t 。コレの私の思ってたセマンティクスは以下のようなもんです。 writer lock を取ると普通の mutex lock みたいな感じ。その thread が unlock するまで、以降の reader lock と writer lock は block する。 reader lock を取ると、それ以降の writer lock は block する。 reader lock は block せずに取れる これは glibc の pthread のデフォルトの挙動なんですが、これは変えられるし、 POSIX によると環境によって違う挙動をすることもあるらしい、ってのを知りませんでした。 どういう時の挙動が変わるかというと、 reader lock が取られてて、 writer

    atomic operation どころか mutex もわかってなかったという話 2011-09-05 - 兼雑記
  • 開発環境勉強会 - 兼雑記

    http://partake.in/events/afe6657b-b54c-44d2-8af5-d39e98e6f2bd で、どうでもいい話をしました。 http://shinh.skr.jp/slide/env/000.html 質問で受けた「いじっていると環境を同期させるのが大変ではないか」って質問はなかなか面白い話だと思う。後で話していたりもしたのでだいぶ自分の中ではっきりしてきたこともあって、このへんは色々と論点があるかなぁと思います。 たまに「俺は .emacs 環境ごとに別な設定が読まれるように工夫してあって、特定のマシン依存な設定はこっちのファイルに…」みたいな人がいるんですが、これは私の感覚ではやややりすぎな感があります。なんだかんだいって重要なマシンは自宅のメインマシンと会社のメインマシンだけで、両方が共有しなければならない設定ってそんなにないし、必要なら片方でやった変

    開発環境勉強会 - 兼雑記
    kuenishi
    kuenishi 2011/08/10
    「ゆくゆくはエディタとシェルくらいは自作のもので人生を終えたいとか思っている」
  • πのケタ数世界記録の話 - 2010-12-28 - 兼雑記

    TCC の作者であるところの Fabrice Bellard という人は何やらものすごくて、 TCC のスライドにも書いたように、 qemu とか ffmpeg の作者であると同時に、πの任意桁を比較的高速に求めるアルゴリズムを開発したり、πをたくさんの桁数計算して、8ヶ月ほど世界一の記録を持っていた人だったりもします。 でまぁそのへんの話。 http://en.wikipedia.org/wiki/Chronology_of_computation_of_%CF%80 あたりを見るとわかる通り、世界記録は2002年からずっと、1.2兆桁くらいってのが更新されてなかったのですが、2009年に 2.6兆、2.7兆、と来て、2010年に5兆と来ているみたいです。 2009年の最初の2.6兆というのは T2K Open Supercomputer とかいう 640 ノードとかあるスパコンによる記

    πのケタ数世界記録の話 - 2010-12-28 - 兼雑記
  • maloader - a mach-o loader for linux - 兼雑記

    https://github.com/shinh/maloader Linux で動く Mach-O loader を書いています。何ができるかというと、 Mac のバイナリが Linux でそれなりに動きます。今のところ、 gcc 、 otool 、 nm などの、いくつかのコマンドラインツールと、その gcc が生成した簡単なプログラムなんかが動きます。 Safari とか iTunes とかはもちろん動きませんし、動くようにしたいとも思ってないです。 仕組みとしては、引数に与えられた Mach-O バイナリを適当に読み込んで、指定された通りに mmap して、未定義なシンボルは linux の世界から探してきて再配置して、でエントリポイントに jmp する、と。まぁローダの説明そのまんまという感じです。 ローダはまぁ Mach-O のフォーマットが mach-o/loader.h か

    maloader - a mach-o loader for linux - 兼雑記
  • 中二病と三大美徳とプロプログラマ - 2010-10-07 - 兼雑記

    プログラマに取って重要な能力というか気質として、中二病というのがあるんじゃないかなーとかふと思ったのだった。 なんかちょっとしたことを達成した時に、「おおなんてこったオレすげー!!やばいオレ新世界の神だ!!!」みたいなことを思ったことがある人は結構いると思うわけです。まぁ数年、一年、一ヶ月、時には一日で実はそんなにたいしたことでもなかったことに気付いて、恥ずかしい思いをしたりするわけです。だから自分の過去の日記とか見るのは面白いわけです。 でまぁこの気質って、後で考えると恥ずかしいことだったりするんだけど、しかしこの喜びを味わった瞬間というのはなかなか快感なもんで、プログラマの人だと結構こういう経験がある人は多いんじゃないかと思います。プログラマじゃなくても研究職とかでも結構ありそうですね。 で、こういう気質が無い人って、「あっそう Hello, world! って出たね、あっそうテトリス

    中二病と三大美徳とプロプログラマ - 2010-10-07 - 兼雑記
  • 2009年度言語雑談会 - 兼雑記

    なんか例年あるよくわからない雑談会を id:kmizushima さんが主催してくれました。最初は6人とかだったけど今年は15人とかいたらしい。 私は最近うなされがちなメモリがどうこうという話をしてみました。言語機能の紹介とかじゃなくて俺の欲しい機能を喋るだけでかつ要求は自分でもきちんと言語化できてない感じなのでアレなのですが。 http://shinh.skr.jp/dat_dir/memori/000.html id:ytqwerty さんによるとそれほとんど Ada でできるよとのこと。私の理解が正しければ、初期化時に特殊な方法で渡した実行時パラメータを使って構造体のレイアウトを自由にいじれる感じなんだと思う。私の要求のうち初期化以降にメモリをいじらない系はだいたいいけそう。 Ada はあの文法さえなければいい子そうだよなぁと思ったのは何度目だろうか。 あとまぁ一つ一つはあの言語なら

    2009年度言語雑談会 - 兼雑記
    kuenishi
    kuenishi 2010/11/08
  • WebKit について (基本的な構成とかAPIとか) - 2010-01-01 - 兼雑記

    なんかしばらく WebKit について書いてみたいと思います。開発するために必要な基的なこととかより、まぁなんか個人的に話として面白いと思ったことについて。 とりあえず WebKit 内のコンポーネントの構成とかから。 WebKit ってのはまぁライブラリなわけで、かつ Win/Mac/Linux などで動いてるので、「WebKit を使って書いたら portable なコード一個管理したら OK」的な感じなのかなーと思うんですが、その実 WebKit API は環境ごとに少しずつ違う物体だったりします。 例えば Windows だったら COM を使ったり Mac だったら ObjC だったり gtk とか kde もそれぞれのシグナル配送モデルを使って色々やったりとか。 portable なライブラリっていうと portable に書けない部分は最小限のライブラリを環境ごとに実装して

    WebKit について (基本的な構成とかAPIとか) - 2010-01-01 - 兼雑記
  • WebKit について (レビューとか文化とか) - 2010-01-03 - 兼雑記

    WebKitコードレビューについて。 Google ではこのコンポーネントはあの人が詳しそうだなーという人にコードレビューをお願いするシステムなのですが、 WebKit では WebKit reviewer 全体に review を頼んで、このコードは俺が得意だとか見られると思った reviewer が review するシステムになっています。また、 Google やら Chrome やらではほぼ committer==reviewer と言って良いのですが、 WebKit の場合は committer になってさらにかなりの修行を積んだ人だけが reviewer として認められるシステムになっていて、 reviewer は committer よりかなり人数が少なめになっています。 さてこのシステムだと実際のところどういう感じになるかというと、 reviewer を指定しないので「

    WebKit について (レビューとか文化とか) - 2010-01-03 - 兼雑記
  • WebKit について (コード) - 2010-01-02 - 兼雑記

    WebKit のコードについて。 Google 社内のコードを見慣れてると、 WebKit のコードはまず、オープンソース的な感じというか、ありていに言うとコメントが圧倒的に少ないように感じます。特に内部についてわかってない人もわかるようなコメントを書く気は基的に無いらしく、冗長気味なコメントを書くとむしろ削ってちょとレビューされたりします。偉い人死んだらどうするのかなー的な。 あとは関数名とかもイマイチなのが多いように思います。個人的な体験で一番印象的だったのは HTML parser 内にあった parseSpecial という関数でした。この special ってのは textarea, script, style, iframe なんかの中にあるタグが無視されるような種類のものを指していたのですが、 special って命名はアレだなぁ…と。そう思いつつ WebKit の人はみん

    WebKit について (コード) - 2010-01-02 - 兼雑記
  • C1X - 兼雑記

    なんか tgmath.h について調べてて、 GCC 拡張にある type generic macro をサポートする機能を C に入れてはどうすかという提案があることに気付きました。 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1404.htm でなんか C1X ってどういう感じなのかなーと眺めてみました。 http://en.wikipedia.org/wiki/C1X http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1425.pdf ぱーと眺めると面白そうなのは、 新キーワード _Thread_local に threads.h と stdatomic.h あたりのスレッドサポート系 他の増えるキーワードは alignof と _Align と _Static_assert らしい

    C1X - 兼雑記
    kuenishi
    kuenishi 2010/06/14
  • mutual exclusion ってなんかかっこいい - 兼雑記

    なんか必殺技ぽい。 まぁそれはそうとお勉強会で当は SELinux の勉強をするつもりだったんだけど、電車の中でふと mutex 的なものを書いたことないなーと思い出したのでちょっと書いてみました。 元のプログラムはカウンタ。こんなやつ。 int cnt; void* count_up(void* idp) { int id = (int)idp; int i; printf("thread %d start\n", id); for (i = 0; i < 10000000; i++) { cnt++; } printf("thread %d end\n", id); return NULL; } int main() { int i; pthread_t th[NUM_THREADS]; for (i = 0; i < NUM_THREADS; i++) { pthread_crea

    mutual exclusion ってなんかかっこいい - 兼雑記
    kuenishi
    kuenishi 2010/02/04
  • ゴルフ場のなかみ (そのに) 08:03 2009-11-28 - 兼雑記

    最近ゴルフ場を新しいマシンに引越したので、前回の記述より色々とよくなった部分もあるので、それについて書いてみます。といっても sandbox についてだけですが。 http://github.com/shinh/ags/blob/master/be/modules/sandbox.c 新しい sandbox は、 arcus-judge のシステムのやってることをまんまパクった部分が多いです。 kernel いじっちゃうとメンテ大変そうだなーと思ったので module でやってるのと、全体的に色々雑なのが大きな違いです。 http://code.google.com/p/arcus-judge/wiki/ArcusSandbox kernel module での system call のフックは、 /boot/System.map-2.6.26-2-xen-686 を見て sys_cal

    ゴルフ場のなかみ (そのに) 08:03 2009-11-28 - 兼雑記
    kuenishi
    kuenishi 2009/12/04