Python, Cython, Numba, TensorFlowの処理速度比較

Python, Cython, Numba, TensorFlowで、処理速度を比較してみた。未完成感あるけれど、いったん今日時点での結果を記録しておく。

github.com

原点を中心とした半径 1 の円の、x, y ともに正である領域(四分の一円)を考えると、その面積は  \frac{\pi r^{2}}{4} = \frac{\pi}{4} ということで円周率の四分の一である。続いて、この領域の x 軸と接している辺を n 等分した点それぞれから垂線 (a) を、円弧に到達するまで y 軸正方向に垂線を引く。ここで、各 (a) を高さ、\frac{1}{n} を幅とする長方形群を考えると、それらの面積の総和は n を大きくすればするほど四分の一円の面積に近づいていく。この区分求積法の考え方でもって円周率を求める処理を、Python, Cython, Numba, TensorFlow (GPU), TensorFlow (CPU) で実装して実行速度を比較した。

今回の実装では、Numba の優秀さが際立つ結果となった。TensorFlow での GPU 演算では演算が軽すぎるのか、GPU へのメモリー転送コストによってか CPU 使用時の方が速かったりする結果となっている。

TensorFlow だけは、まだ理解できた感覚が無い。もう少し、細かく見てみたい。

Anacondaの仮想環境が作られる標準のディレクトリを変更する

Anacondaconda コマンドでは、いわゆる仮想環境を作成することで任意のバージョンの Python やパッケージの組み合わせを一つの計算機で共存させることができる。今日は、その仮想環境のファイル群を配置する標準のディレクトリを変更する方法について書いておく。

続きを読む

Windows 10、コマンドプロンプトのTabキーでの補完を有効化する

Windows 10を初期化して再セットアップしたところ、コマンドプロンプトで Tab キーでコマンドラインの補完が行われなくなっていた。そこで修復方法をネットで調べたところ、レジストリを編集すれば治せるらしいとのこと。

具体的な手順は以下の通り:

  1. レジストリエディタで以下のキーを開く HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
  2. REG_DWORD 型の CompletionChar9 (タブ文字の ASCII コード) を設定する

f:id:sgryjp:20181102124041p:plain

最近は PC 環境の大半をクラウドサービスに移行していて、OS の初期化も気軽に行えるようになった。それでも細々とした再設定などは無くならないものだね。

バッチファイルでの引数解析例

Windows バッチファイルは過去の遺物(レガシー)。決別したくとも決別できないし、依然として Windows での手軽なバッチ処理実現手段でもあるため、新しく「書き捨て」したりメンテが発生したりする。今日、少し前に書いたバッチにコマンドライン引数を解釈する処理を付ける機会があった。これを、ある程度汎用的にしたものを Gist 化しておいたので以下に引用。

続きを読む