同一の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のインストール
でインストール
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
こんな感じ。
なんかインストールで力尽きたよ。。(ー ー)
Cドライブが一杯だけどDドライブがすかすか。そんな時は(・ ・)
今日は簡単なネタで(・ ・)
Windowsって、My Documentsとか一杯でもうCドライブがパンパン、とかそんな事有りますよね。んでもってドライブ増設してDドライブは空いてるんだけど・・とかとか。
こんな時にお勧めの設定が有ります。
以下のコマンドでCドライブのフォルダをDドライブの中に作ることができます。
まず管理者権限でコマンドラインプロンプトを起動して
(Windows10だと画面の左下で右クリック>コマンドプロンプト(管理者))
mklink /j Cドライブに作りたいフォルダ名 D:\Dドライブのフォルダ名
こんな感じにします。
例えばCドライブのMy Kindle Contentがデカくて困ったりしたときは、
まずフォルダごとDドライブに移動した後で、元々My Kindle Contentが存在したフォルダに移動した上で
C:\Users\nobikko\Documents>mklink /j "My Kindle Content" "E:\My Kindle Content"
こんな風にすると、Dドライブに移動できます。
良かったら試してみてね(*・ ・*)v
それではまたー