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のディレクトリを追加して終了。

2018年11月19日月曜日

AVPlayer from AVFoundation

学生の時はFORTRAN。社会人になってから、C, Pascal。そしてC++をコンパイラもままならないうちから使い出して、四半世紀。もう新しいのは使わないかなと思っていたら、Javaを使ってアプリを作成。そして最近はObjective-Cと格闘中。という程言語そのものでは苦労はしてないかも。
先週末から、ずっと悩んでいたのが、AVPlayerとかAVAssetとかをローカルファイルから作成するところでずっと悩み続けていた。リソースとして使うと問題ないのだが、ローカルファイルから読み出そうとしてもどうしてもダメ。様々なチェックを行うのだが、読み出せない。ファイルの情報を別に要しなければならないのかとか、いろいろ試してみたがダメ。今日はもう悲しくなってしまうくらいだったが、慣れ親しんだXCodeのはずだったが、Constraintなどというタブがあるのに気づいて、中を見たらSandboxにチェックが入っていた。外したら今までの苦労は何だったのかっつーくらい普通に思った通りに動き出した。
どうしてこんな所にチェックが入っていたのやら。俺の貴重な時間を返せぇ。;;

2018年11月13日火曜日

まむし指

私の手の親指は逆側に90度くらいまで反ることが出来る。これができる人は多くは無いが少なくもない。指立て伏せとか、指圧とかの時に凄く力を乗せることが出来るので、多少ラッキーみたいに感じていた。
広辞苑や大辞林などの国語辞典には、まむし指とは「蝮の頭のような形に、第一関節が自由に曲がる」と書かれているので多分そうだと思っている。
ところが、ネットで調べると、短指症のことをいうと書かれている文書の多いこと多いこと。なんでこんなことになってるの。辞書を調べてから書けよ、と言いたい。
しかし、辞書に書いてある、自由に曲がるという記述はどうかと思う。指のメカニズム上、首のようにはぐるぐる回りはしないし、前にはみんな曲がるわけだし。なかには親指以外の指の第一関節だけを普通の方向に曲げているような写真もあったりして、これも勘違いしている。漫画(多分空手バカ一代)でそんな事が書かれていたので、たぶん鍛えれば普通に誰でも出来るはず。私は子供の頃から出来たのではっきりしていないが。
第一関節が以上に反れば、蝮の頭の形になる。逆だと角張っているのでまむし頭には見えない。と理解している。#金田一先生、教えて。

2018年10月26日金曜日

CAFFE: Using Apple BLAS

Caffeをソースコードからビルドするときには、一般的にはMakefile.configを編集して自分の環境に合わせるのがまっとうなやり方。LINUX上では、CMakeが使えたけど、macOSではうまくいかなかった。
CAFFEをなるべくmacOSで用意されているライブラリを極力使おうと思えば、BLASをAccelerate Frameworkのものを使いたい。そのための設定としては、Makefile.config内のBLASの設定の部分を、適当にblasとでもいれておけばAccelerate FrameworkのBLASを使ってくれる。問題は、このCAFFEのライブラリを使った自前のプログラムを動かすときに、

d.cpp:2:10: fatal error: 'cblas.h' file not found

というメッセージが出てしまう。これはBLASのCバインディング用のヘッダが見つからないというエラーだ。この手のヘッダは、/usr/includeあたりにリンクが張られていると思っていたが、macOS 10.12 (Sierra)のXcode9.2ではそうではないようだ。仕方が無いので、直接Frameworkのヘッダを指定する。つまり、
-I/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/Headers/


と指定してやらなければならない、みたいだ。面倒だな。/usr/includeにシンボリックリンクを張ってしまっても良いんじゃ無いか。

2018年10月18日木曜日

Access Denied. You don't have permission to access "SITE" on this server.

掲題のエラーが少し前にSafariでSMBCのサイトにアクセスした時に出現した。びびった。とりあえず、SMBCに電話。ちゃんとサーバは動いているとのお返事。次にプロバイダ(ISP)に電話。これも通常運転。
そこで、次にDNSでSMBCを引いてみた。そして別のISPのサーバからDNSを引いてみた。全然違う。これは、DNS Changerなのか。ウィルスか。とりあえずCISCOのCLANSCANでチェック。なんもでない。アンチウィルスソフトを片っ端からダウンロードしてスキャン。出てこない。。。。
いろいろすったもんだしたあげく、ルータが原因だと言うことが分かった。調べてみると、いろいろ困っている人が世界中にいらっしゃる。アクセスできないサイトは特定のサイト。www.smbc.co.jp, www.ebay.com, www.usps.com, www.costco.com などが上げられていた。逆引きすると、これは全部akamaiedge.netのサーバ。なにか有るのか。多くの人はルータのリセットで元に戻ったのこと。わたしんとこでは、ひとつはこけて、もう使えなくなったが、もう一つはリセットで元に戻る。
解決方法が分かったけど、リセットばっかしてらんないしな。どうにかならんかな。