タグ

optimizationに関するmoozのブックマーク (16)

  • OpenXLA Project

    Send feedback XLA Stay organized with collections Save and categorize content based on your preferences. XLA (Accelerated Linear Algebra) is an open-source compiler for machine learning. The XLA compiler takes models from popular frameworks such as PyTorch, TensorFlow, and JAX, and optimizes the models for high-performance execution across different hardware platforms including GPUs, CPUs, and ML

    OpenXLA Project
    mooz
    mooz 2017/11/16
    TensorFlow の内部表現とコンパイラ
  • Beyond EXPLAIN: Query Optimization From Theory To Code

    EXPLAIN is too much explained. Let's go "beyond EXPLAIN". This talk will take you to an optimizer backstage tour: from theoretical background of state-of-the-art query optimization to close look at current implementation of PostgreSQL.Read less

    Beyond EXPLAIN: Query Optimization From Theory To Code
    mooz
    mooz 2016/05/30
    ポスグレのコスト見積もり詳解と、発展的なクエリ最適化
  • Greed is Good: 劣モジュラ関数最大化とその発展

    This document discusses generative adversarial networks (GANs) and their relationship to reinforcement learning. It begins with an introduction to GANs, explaining how they can generate images without explicitly defining a probability distribution by using an adversarial training process. The second half discusses how GANs are related to actor-critic models and inverse reinforcement learning in re

    Greed is Good: 劣モジュラ関数最大化とその発展
    mooz
    mooz 2015/11/18
    submodular, supermodular
  • RecSys2013のBestPaperを読む_Fast_Parallel_SGD - 分からんこと多すぎ

    RecSys 2013 (Hong Kong) - RecSysのbest paperが、なんだか面白そうだったので読む。 A Fast Parallel SGD for Matrix Factorization in Shared Memory Systems 著:Yong Zhuang, Wei-Sheng Chin, Yu-Chin Juan, and Chih-Jen Lin 論文自体は、Matrix FactorizationのためのSGDの拡張である点が、他の論文とは違うらしい。 序論は確率的勾配降下法(SGD)の並列化について - 分からんこと多すぎに書いたので、文の3章(SGDの並列化に関する諸問題)からになる。 また結論から言うと、計算速度は従来手法の十倍程度になる。 ただし、プログラミング上のテクニック的な話なので、理論とかあんまりない。 勉強になるし実用的で、企業

    RecSys2013のBestPaperを読む_Fast_Parallel_SGD - 分からんこと多すぎ
  • AdaGradが12倍速くなる魔法

    AdaGradは学習率を自動調整してくれる勾配法の亜種で、いろんな人が絶賛しています。 勾配を足し込む時に、各次元ごとに今までの勾配の2乗和をとっておいて、その平方根で割ってあげるだけと、恐ろしくシンプルです。 Adaptive Subgradient Methods for Online Learning and Stochastic Optimization John Duchi, Elad Hazan, Yoram Singer. JMLR 2011. 丁度、 @echizen_tm さんがブログを書いてました。 AdaGrad+RDAを実装しました。 通常のSGDなどは学習率をだんだん減衰させながら勾配を足していくわけですが、どの様に減衰させるかという問題にいつも頭を悩ませます。 AdaGradでは最初の学習率こそ外から与えますが、減衰のさせ方や減衰率といったハイパーパラメータから

    mooz
    mooz 2014/08/07
    -Ofast によるベクトル化。面白いなー。
  • perfの使いかた

    概要 Linuxのパフォーマンス解析ツールであるperfの使いかたの紹介 背景 個人的にperfよくできてると思うので紹介したいというのと、 パフォーマンスカウンタの読み方ってあんまり知られてないみたいなので、 それの解説を書きたい。 構成 perf について説明したあと、パフォーマンスカウンタの読みかた、見かた、を説明する。 perfとは何か Linuxに付いてくるプロファイラ。 man perf によると、 NAME ---- perf - Performance analysis tools for Linux と、書いてある。名前がひどいのでなんとかしてほしい。 perf の特徴 個人的には、手軽に使えるのが素晴らしいと思う。 2.6.31以降カーネルに標準で付いてる。(Ubuntuだとlinux-tools-common(TODO:あとで確認)で入るはず) 特殊な設定が必要無く、

  • 数理助教の会

    今回の助教の会は数理1研の多が「polar符号および非対称通信路の符号化について」ということで情報理論の最近の結果に関する発表をしました.polar符号は2008年に提案された比較的新しい符号で,符号長に対して多項式時間で指数関数的に小さい復号誤り確率が達成できること示された初めての符号になります. 情報理論で扱う多くの符号が符号理論特有の手法により解析を行うのに対して,polar符号では分極現象という確率過程に関する基的な結果から導かれる現象を用いた説明がなされ,情報理論にあまりなじみがない人にはおそらく最も分かりやすい符号になっています.もう少し具体的には,「確率変数のコピーを用意してそれらを可逆な演算により対称性を崩す」という操作を再帰的に繰り返すことにより,値が一意に定まる確率変数と完全にランダムな確率変数に分離することができることから,後者の確率変数のみにより元の確率変数全体

  • restrictキーワード - yohhoyの日記

    C99で追加された restrict キーワードについてのメモ。 コンパイラに対して「aliasが存在しないと仮定した最適化を許す」と伝えるためのキーワード。C99以降でのみ有効なキーワードであり、C++11現在でもC++には同キーワードが存在しない。(ただしコンパイラの独自拡張として、C++言語でもrestirctキーワードを使えるケースはある。) 要約: 構文的にはconstやvolatileキーワードと同列で、ポインタ型に対してのみ型修飾を行える。int * restrictなど。restrict intやint restrict *はill-formed*1。 コンパイラでの最適化を助けるためのもの。restrictキーワードを削除してもプログラムの意味は変化しない。 用法と意味 restrictキーワードの用法は、C標準ライブラリmemcpy関数/memmove関数における動作仕

    restrictキーワード - yohhoyの日記
    mooz
    mooz 2013/07/05
    pointer aliasing
  • JIT の話あれこれ

    Egtra (ysk-noh) @egtra @phoenixstarhiro Javaなんかは状況次第でC++より速いのではないでしょうか?実行時にしか分からない情報を使ってJITで最適化したり、GCありでメモリ確保も速くできたりするし(それともJavaは最近聞く言語に入らないって?) 2013-07-01 01:10:06 ぷりん大王・鰹節大臣(兼任) @phoenixstarhiro . @egtra うわ、すみません。通知がなく気づきませんでした・・・。不勉強で恐縮ですが、現在のJITでネイティブコードより速くなるケースって結構あるものなんでしょうか? GCはメモリの回収に時間がかかるので、平均的にはマイナスだと思うのですが、いかがでしょうか? 2013-07-02 22:52:36 Shuhei Takahashi @nya3jp JIT は実行時情報を使って最適化できるから静的

    JIT の話あれこれ
  • CSE 231

    mooz
    mooz 2013/05/05
    Advanced Compiler Design and Implementation. コンパイラ最適化の定番本らしい.
  • Partial-redundancy elimination - Wikipedia

    This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (May 2015) (Learn how and when to remove this template message) In compiler theory, partial redundancy elimination (PRE) is a compiler optimization that eliminates expressions that are redundant on some but not necess

  • Polymorphic Inline Cache implementation of iv / lv5 - 枕を欹てて聴く

    This is a blog post for 12/22 VM advent calendar. See http://qiita.com/advent-calendar/2012/vm for more nice blog posts :) この記事は更新中です... 完成しました Introduction ECMA262 engine, iv / lv5 には, Polymorphic Inline Cache(以下PIC)が実装されています. ということで, ここではPIC, 特にLoadPropertyICの実装について記述したいと思います. PICのsystem体についてはかなり多くの場所で記述されていると思うので, ここでは, かなり実践的な方向で記述したいと思います. そのため, 多くの前提知識を要求していますのでご容赦ください. LoadOwnPropertyIC &

    Polymorphic Inline Cache implementation of iv / lv5 - 枕を欹てて聴く
    mooz
    mooz 2012/12/23
    iv/lv5 の PIC 実装について
  • ruby-trunk-changes r37180 - r37195 - ruby trunk changes

    今日はメソッド呼び出しまわりの VM の処理の最適化で大きな変更がいくつか入りました。かなり書きかわっているので trunk で手元のアプリケーション/ライブラリが動作するか確認してみて頂けるとおそらくささださんが喜ぶと思います。 ko1:r37180 2012-10-15 01:59:05 +0900 r37121 でインラインキャッシュから切り出したメソッド呼び出しのキャッシュ用の構造体 rb_call_info_t を拡張して、メソッドのID(メソッド名のシンボルの内部表現)、flag、引数の数、ブロックの命令列などメソッド呼び出しに必要な情報をまとめて持たせて、この構造体ごとやりとりするようにすることでメソッド呼び出しを高速化しています。vm_call_method() の引数が th, cfp, ci(callinfo) だけになってすっきりしました。また Instruction

    ruby-trunk-changes r37180 - r37195 - ruby trunk changes
    mooz
    mooz 2012/10/16
    メソッド呼び出しを行う VM 関数の引数を構造体にまとめる変更。C 側でスタックに積む引数の数が減って高速に? とのこと。
  • Pythonでメモリを食い過ぎた時に見直すポイント - 西尾泰和のはてなダイアリー

    ちょっと複雑なアルゴリズムをPythonで実装してみて、自分の予想以上にメモリをってしまったので何が原因なのかプロファイルしてみた。 辞書を大量に使ってはいけない 指摘されてみれば当たり前のことなんだけども、辞書はハッシュテーブルなのでメモリをたくさん使う。「グラフの頂点ごとに整数→整数のマッピングを持ちたいな」と思って、うっかり辞書を使ってしまったのだが、エントリー数が6個でも 1048バイト×頂点数 のメモリが吹っ飛んでいく。いくらハッシュのアクセスがO(1)だからといって、1048バイトmallocしてスラッシング起こしてんだったら全然安くない。エントリの個数とアクセス頻度によってはO(n)で線形探索したほうがよっぽどよい。 エントリーの個数が5件までならハッシュテーブルではないコンパクトな持ち方をするので280バイト。それでもでかい。 自作クラスのインスタンスも辞書を持っている

    Pythonでメモリを食い過ぎた時に見直すポイント - 西尾泰和のはてなダイアリー
  • 静的単一代入 - Wikipedia

    静的単一代入(せいてきたんいつだいにゅう、英: Static Single Assignment form, SSA)形式は、コンパイラ設計における 中間表現 (IR) のひとつで、各変数が一度のみ代入されるよう定義されたものである。もともとの中間表現における変数は「バージョン」に分割され、全ての変数の定義がバージョンを表現できるよう、通例新たな変数は元の名前に添え字を付けて表現される。SSA ではuse-def 連鎖が明示的であり、連鎖は要素を一つだけ持つ。 SSA はRon Cytron、Jeanne Ferrante、Barry Rosen、Mark Wegman、Ken Zadeck および IBM の研究者たちにより1980年代に開発された。 Scheme、ML、Haskell などの関数型言語のコンパイラでは、Fortran や C などのコンパイラで SSA の利用が期待され

    静的単一代入 - Wikipedia
  • Software optimization resources. C++ and assembly. Windows, Linux, BSD, Mac OS X

    See also my blog Contents Optimization manuals Vector class library Object file converter and disassembler Subroutine library ForwardCom: An open standard instruction set for high performance microprocessors Test programs for measuring clock cycles in C++ and assembly code Floating point exception tracking through NAN propagation CPUID manipulation program Links Optimization manuals This series of

  • 1