のびっこ日記

(*|         |*)v ういっすー。 VRとかコンピュータービジョンとかARとかに興味があります。OpenCVとかPCLとかOculusRiftとかUnityとかKinectとかLeapMotionとか手を出していますが、いろいろドツボにハマっててくじけそう。誰か教えてー

ワイドハイターEXで10年物のミッフィを白くしようとした話(・  x  ・)

なんだかとってもブラウニーちゃんになりつつある10年物のミッフィ時計

f:id:nobikko_nobinobi:20170922180316j:plain

 

ミッフィの開き にして、

f:id:nobikko_nobinobi:20170922180400j:plain

 

白いプラスチックの日焼けを直すと言われてるこいつで

f:id:nobikko_nobinobi:20170922180813j:plain

 

ぶくぶくぶく

f:id:nobikko_nobinobi:20170922180441j:plain

 

約一週間後

f:id:nobikko_nobinobi:20170922180607j:plain

 

白くなったよ(*・        ・*v

f:id:nobikko_nobinobi:20170922180620j:plain

 

と、実はちょっと失敗・・。ミッフィの目が消えかけたり(マッキーで書いた)

服の色がツートンカラーになったり(溶液が浸ってない部分があったっぽい)しました・・。。

・・・まあでも、とりあえずよしとしましょう(・     ・)

おしまい。

 

同一のDLLを使用しているアプリ同士で、データの共有をする方法(・      ・)

最近あんまりブログ更新してませんでしたが、そろそろ復活したいと思います。

しかし、何書こうかな~。リクエスト有ったらお願いしますね。

 

 

今日はWin32の方のWindowsのDLLの話です。

WindowsのDLL、よく使う同じルーチンとかをまとめて入れておくといろんなEXEから呼べて便利なのですが、通常、複数のEXEから呼び出された時にはデータの共有がされません。呼び出し元のEXE毎に、別の変数用のデータのエリアが作成されます。

 

EXE(1) --> DLL

 

EXE(2) --> DLL

 

こんなかんじ。

 

でも、たまにEXE(1)でもEXE(2)でも同じ変数を参照したい時ってあるじゃないですか。

そんな時どうしたら良いのかというお話です。

 

実はこんな風にすると共有できたりします。

 

#pragma comment( linker, "/SECTION:.shared,RWS" )
#pragma data_seg( ".shared" )
extern int a = 0;
#pragma data_seg()

 

こうすると、データセグメントという共通のメモリエリアに変数を置いてくれます。

上の例でいうと、int aに関してだけは、

 

EXE(1)--> DLL <-- EXE(2)

 

こんな感じにアクセスができます。

ただ、アクセスは排他処理とかされないので、問題になるケースではクリティカルセクションとかミューテックスで囲んであげて下さいね。

 

今日はこのへんで。。(・        ・v

 

TensorflowをMac book Pro 2014(NVIDIAモデル)にGPU有りでインストールする方法(・     ・)

なんか流行ってるらしいTensorflowを始めたいので、Mac book Pro 2014 (NVIDIAモデル)のOSXにTensorflowをGPU有りでインストールしてました。

今回はとりあえず自分用インストール手順メモな感じです(・    ・)

特に最後のシンボリックリンク張るとこはかなり苦労しました。。libcupti.dylibのリンク張らないと一部のサンプル動かなかったです。。

 

brew.shからHomebrewをインストール

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

これでbrewコマンドがインストールされる。

 

Coreutilsのインストール

$ brew install coreutils

でインストール

 

XCodeのインストール

Appstoreからxcodeをインストール。

xcodeを一度起動してライセンスに同意しておく。

 

CUDAインストール

$ brew tap caskroom/cask

$ brew cask install cuda

以下を~/.bash_profileに記述

export CUDA_HOME=/usr/local/cuda
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$CUDA_HOME/lib"
export PATH="$CUDA_HOME/bin:$PATH"

 

CUDA Deep Neural Network (cuDNN v5.1) libraryのインストール

Developer.nvidia.comで

Accelerated Computing Developer Program accountを作って、以下をダウンロード 

cuDNN v5.1 for CUDA 8.0
cuDNN v5.1 Library for OSX

tar xvf cudnn-8.0-osx-x64-v5.1.tar
cd cuda

$ sudo mv include/cudnn.h /Developer/NVIDIA/CUDA-8.0/include/

$ sudo mv lib/libcudnn* /Developer/NVIDIA/CUDA-8.0/lib
$ sudo ln -s /Developer/NVIDIA/CUDA-8.0/lib/libcudnn* /usr/local/cuda/lib/

 

pipのインストール

Sudo easy_install pip
Sudo easy_install --upgrade six

Sudo pip install tensorflow
Sudo pip install tensorflow-gpu

 

足りてないシンボリックリンクを作る

$ sudo ln -s /usr/local/cuda/lib/libcuda.dylib /usr/local/cuda/lib/libcuda.1.dylib

$ sudo ln -s /usr/local/cuda/lib/libcudnn.5.dylib /usr/local/cuda/lib/libcudnn.5

$ cd /usr/local/lib

$ sudo ln -s libcuda.dylib libcuda.1.dylib

$ sudo ln -s ../cuda/lib/libcudart.8.0.dylib .

$ sudo ln -s /usr/local/cuda/lib/* /usr/local/lib

$ sudo ln -s /Developer/NVIDIA/CUDA-8.0/extras/CUPTI/lib/libcupti.dylib /usr/local/lib/.

 

mnistサンプルを実行してみる

Git clone https://github.com/tensorflow/tensorflow.git

Cp -r tensorflow/tensorflow/examples .
Cd examples/tutorials/mnist/
Python mnist_with_summaries.py

 

こんな感じ。

なんかインストールで力尽きたよ。。(ー      ー)