2019年4月29日月曜日

Table Tennis World Championships

日本の選手たちは、中国の壁に阻まれた。中国以前に負けてしまった選手もいたが、その壁は大きい。
いままで、平野や伊藤がするすると優勝していたけど、その後全然勝てなくなってしまう。伊藤のボールの回転を自在にする様を見て、こんなん対応できるの?と思っていたけど、その後の中国の選手との履歴を見ると、対応しているようだ。
この差は思うに、コーチの差だと思う。ここまで追いついてきたのは日本の育成と、それに答えた選手たちの頑張りだったと思う。でも、これ以上引き上げるのは卓球の暗黒時代にいたコーチ陣では無理なのでは。
天才が現れてその対抗策が練られないうちになら勝つことは出来るが、卓球頭脳の粋が対策を練ってしまうと、勝てなくなってしまう。
テニスの錦織はチャンをコーチにして、クレーで強くなったし、4位にまで成った。バドミントンでは、素晴らしいコーチを外から入れて、現在王国となりつつある。そんなことが必要なんじゃ無いだろうか。

2019年4月25日木曜日

Tensorflow Lite

Tensorflowは有名なNeural Net用のTraining/Inferation  フレームワークだ。
名前の通りテンソルの計算をパイプラインのように繋げていくことが簡単にできる。
学習には科学技術計算並の計算が必要で、GPUありきで開発されている。余りCPU/SIMDでは高速には成っていないようだ。GPUだとメモリネックになってしまうが、Google Colaboratoryを使うことで大分解消される。
さて、学習されたあとのネットを使って推論するのはたいした計算量では無いので、Mobile Devicesに使うことを考えるのは自然だし、実際GoogleからもMobileとかLiteとか出ていた。
最近、Liteに集約することに決めた後、開発がすごい勢いで進められてきた。TensorflowとTensorflowliteの間では、使えるオペレーションが異なっていて、単純にTensorflowで学習したネットをtflite_convertすることは出来ないことが多かった。それでもどんどん対応するオペレーションが増え、対応されていない物も元のTensorflowの学習する時のオペレーションをPython Nativeにするとかして対応できるようになった。
今日、Tensorflow Liteのサイトを見たら大分変わっていた。
IT Yearとか言うけど、ホントに速いなあ。

2019年4月16日火曜日

ALPS MD-5500 on Windows XP

今更ながらだが、Alps電気のMD-5500プリンタを所有している。溶融型のプリンタで、子供たちのアイロンプリントに活用していた。
先日、専用マシンのPowerBook G4 Titaniumが壊れた。ヒンジ部分が壊れたのだ。
仕方が無いので、Virtual BoxにWindows XPをのせてそこで動かそうと考えた。
Windows XP 32bit用に設定して、Virtual BoxにWindows XP SP2 Home Editionをインストールして認証させようとしたら、繋がらないとのこと。
ググって、SP3のアップデータをWindows 7マシンからダウンロードして、インストールしたところ、認証された。しかしながら、デフォルトのExplorerのHTTPSの認証データが古すぎてHTTPSでは接続できない。またもや、しかたなしにFirefox 52.9 esrをダウンロードしてインストールしたところ、またもや、繋がるようになった。
プリンタは幸いにも生きていてちゃんと印刷してくれた。やれやれ。でも、何に使おうか。まだ一杯インクフィルムがあるし。

2019年4月1日月曜日

Printer Repair Fees

三大プリンタメーカの複合プリンタ修理代金のうち、送料について調べてみた。修理なんか普通しないけどね。
canon : 3,240 (税込み)
brother : 2,500 (税抜き)
epson : 1,500 (税抜き)
いわゆる引き取りサービス(梱包材込み)のお値段。プリンタはむちゃくちゃやすいぶん、あちこちでサービスを省略しているのが分かる。最初に付いてくるインクも量が少なくなっているし、USBケーブルも付いていない。
しかし、あんな値段で良くビジネスが成り立つものだ。すごい。

2018年12月21日金曜日

Fink install Python27 : certificate verify failed

macOSもだんだん世知辛くなって、システムレベルの変更が出来なくなったりしてきている。そのためPythonなんかも/usr/binがらみのほうはいじれない。そこで、FinkやBrewを使う。ただ、私は個人的に/usr/localには一杯入れ込んでしまっているのでBrewは使わない。
Python2.7.9以降だと、SSL通信のpackageを使おうとすると、掲題のエラーが出てしまう。これは、SSL通信用の公開鍵が無いためだ。そこで、
 # fink install ca-bundle
してやってから、
# cd /sw/etc/ssl
# ln -s cert/ca-bundle.crt cert.pem
としてやればエラーは出なくなる。めでたし。

2018年12月13日木曜日

Intel Core i9-7980XE

https://www.intel.co.jp/content/www/jp/ja/architecture-and-technology/avx-512-overview.html

を見ると、AVX-512で単精度浮動小数点演算が、1命令で64できるとされている。???
どうも、FMA (Fused Multiply-Add)命令がAVX-512には含まれているらしい。でもそれだと、32。よくみると、FMA Unitが2つある。おお。でも、FMAが二つという演算ってどれだけあるんだろう。
コアが18個ということで、1インストラクション当たりのSIMD系の命令数の上限は、
18 x 64 = 1152
おお、かなり多くなった。これだけ多くのコアで、SOCだと歩留まりも相当悪いと思われるが、がんばってるな。SiPではないのか。GPUを越えるのはいつぐらいなんだろう。GPUもいつまでもPCI Expressなんぞでは先がない。Intelもメモリ並みのバスをGPUに用意する、ことは無いだろうな。メモリバスにGPUを付けたりは出来ないのか。やる気があれば何でも出来るが、やる気は無いだろうな、インテルさん。

2018年12月2日日曜日

caffe-ssd on Ubuntu 17 with CUDA

さて、caffe-ssd branchをUbuntu 17上でビルドしようとすると、いろいろスタックするが、やっとちゃんとビルドできたので、ご報告。
問題は、CUDA 8を使おうとすると、gcc-5を使わないといけないこと。そうすると、DistributionのBoostではリンカが通らない。これはDistributionで使われているBoostが新しいコンパイラで作られているため、Manglingの違いだかでリンカが関数を見つけられない事による。
そこで、まず、boost-1.65.1をgcc-5系のコンパイラでビルドする。

 ./bootstrap.sh 
 ./b2 install -j2 --prefix=/home/habe/boost_1_65_1 toolset=gcc-5

次に、Caffe-ssdをビルドする。

 export BOOST_ROOT=/home/habe/boost_1_65_1/
 git clone https://github.com/weiliu89/caffe.git
 cd caffe
 git checkout ssd

これでcaffe-ssdのソースが用意された。ここで、cmakeのための作業ディレクトリを作成して、そこでcmakeを使う。その際に、コンパイラをgcc-5を使うことを指定する。

 mkdir BUILD
 cd BUILD
 ccmake ..
 make -j8

ccmakeはUIが呼び出されて自分でいろいろパラメータを指定できる。boostは環境変数BOOST_ROOTで指定されているので勝手にセットしてくれる。

 CMAKE_CXX_COMPILER               /usr/bin/g++-5                                                                                                      
 CMAKE_CXX_COMPILER_AR            /usr/bin/gcc-ar-5                                                                                                   
 CMAKE_CXX_COMPILER_RANLIB        /usr/bin/gcc-ranlib-5                                                                                               
 CMAKE_CXX_FLAGS                                                                                                                                      
 CMAKE_CXX_FLAGS_DEBUG            -g                                                                                                                  
 CMAKE_CXX_FLAGS_MINSIZEREL       -Os -DNDEBUG                                                                                                        
 CMAKE_CXX_FLAGS_RELEASE          -O3 -DNDEBUG                                                                                                        
 CMAKE_CXX_FLAGS_RELWITHDEBINFO   -O2 -g -DNDEBUG                                                                                                     
 CMAKE_C_COMPILER                 /usr/bin/gcc-5                                                                                                      
 CMAKE_C_COMPILER_AR              /usr/bin/gcc-ar-5                                                                                                   
 CMAKE_C_COMPILER_RANLIB          /usr/bin/gcc-ranlib-5                                                                                               

make -j8した後暫くすると、以下の様なログが出て終了。

Scanning dependencies of target convert_cifar_data
[ 98%] Building CXX object examples/CMakeFiles/convert_cifar_data.dir/cifar10/convert_cifar_data.cpp.o
[ 98%] Linking CXX executable cifar10/convert_cifar_data
[ 98%] Built target convert_cifar_data
Scanning dependencies of target convert_mnist_siamese_data
[100%] Building CXX object examples/CMakeFiles/convert_mnist_siamese_data.dir/siamese/convert_mnist_siamese_data.cpp.o
[100%] Linking CXX executable siamese/convert_mnist_siamese_data
[100%] Built target convert_mnist_siamese_data
Scanning dependencies of target pycaffe
[100%] Building CXX object python/CMakeFiles/pycaffe.dir/caffe/_caffe.cpp.o
[100%] Linking CXX shared library ../lib/_caffe.so

これでcaffe-ssd環境が構築された。あとは、$CAFFE_ROOTを指定し、PYTHON_PATHにcaffeのpythonのディレクトリを追加して終了。