2014年7月27日日曜日

Geforce TITAN でCUDA6.0を動かす

前回はCUDA5.0でのテストだったので、CUDA6.0ではどんなものかテストしてみた。
使用ソフトとはCUDA6.0のサンプルファイル「bandwidthTest」をVS2012でビルド。

■環境
CPU:3930k
GPU:Geforce TITAN
OS:Windows7 64bit

■前回データ(CUDA5.0)
 Host to Device Bandwidth, 1 Device(s)
 PINNED Memory Transfers
   Transfer Size (Bytes)        Bandwidth(MB/s)
   33554432                     5815.1

 Device to Host Bandwidth, 1 Device(s)
 PINNED Memory Transfers
   Transfer Size (Bytes)        Bandwidth(MB/s)
   33554432                     6282.0

 Device to Device Bandwidth, 1 Device(s)
 PINNED Memory Transfers
   Transfer Size (Bytes)        Bandwidth(MB/s)
   33554432                     220126.1


■今回実施結果(CUDA6.0)n=3
 Host to Device Bandwidth, 1 Device(s)
 PINNED Memory Transfers
   Transfer Size (Bytes)        Bandwidth(MB/s)
   33554432                     5924.5
   33554432                     6016.3
   33554432                     6015.6

 Device to Host Bandwidth, 1 Device(s)
 PINNED Memory Transfers
   Transfer Size (Bytes)        Bandwidth(MB/s)
   33554432                     6361.2
   33554432                     6399.1
   33554432                     6408.2

 Device to Device Bandwidth, 1 Device(s)
 PINNED Memory Transfers
   Transfer Size (Bytes)        Bandwidth(MB/s)
   33554432                     224998.1
   33554432                     224667.3
   33554432                     208915.6

若干高速化されてる?
割合にして3%ほど速くなったみたいだ。
ただ、PCIe Gen.2での話なのでGen.3だとどう変わるのか気になるところです。

CUDA 6.0インストール(Windows7 64bit)

CUDA 6.0が公開されていたのでインストールしてみる。
ついでに、Visual Studio 2012でサンプルファイルが動くところまで試してみた。

■環境
・CPU: Intel i7 3930k
・GPU:Geforce TITAN
・OS:Windows7 64bit
・Visual Studio Professional 2012(Ver.11.0)

■事前準備
下記リンクからCUDAのインストーラーをダウンロードしておく
※OSのビット数に合ったものでなければインストールできません


■インストール手順
(1). ダウンロードしたインストーラーを起動










インストーラーの解凍先を聞かれるが、デフォルトでOK


(2).インストーラーが立ち上がると「同意して続行する」をクリック





















(3).オプションもデフォルトの「高速」でOK





















(4).インストールが完了すると下記の画面になる
 「次へ」をクリックしてインストールは完了






















■インストール完了
はい、これでインストール完了です
前回と比べてえらく簡単に終わってしまいました

後は「C:\ProgramData\NVIDIA Corporation\CUDA Samples」
にサンプルファイルがあるので、インストールされているVisualStudioのバージョンに合うものであれば開くことが可能です。

■余談
ちなみに、私の環境で一度、インストールした後にサンプルファイルをビルドすると「MSB3721」のエラーが発生し、ビルドできませんでした。
前バージョンのように設定ファイルを変えてやる必要があるのかと思い、色々調べましたが有力な手掛かりは得られず、結局アンインストールした後に、再度インストールを行うと正常にサンプルファイルをビルドすることができました。

その前に一度再起動していたので、もしかしたらその時に変更した内容が反映されたのかもしれませんが、今となっては確かめる術も気力もないのでこのまま無かったことにしようと思います。

2014年3月16日日曜日

【VisualStudio2012】C++でフォームアプリ

C++でWindowsフォームアプリケーションを作ったことがなかったので調べてみた。

要約すると、
1.空のCLRプロジェクトを作成
2.ソリューションエクスプローラーから右クリック->追加->UI->Windowsフォーム
3.フォーム追加時にくっついてきた.cppファイルに下記コードを追加


// MyForm.cpp
#include "MyForm.h"//フォーム名

using namespace CPP;//プロジェクト名「CPP」

[STAThreadAttribute]
int main(){
 Application::EnableVisualStyles();
 Application::Run(gcnew MyForm());
}

【コマンドプロンプトを消す】
1.プロパティ->リンカ->システム->サブシステムにWindows (/SUBSYSTEM:WINDOWS)と入力
2.詳細設定のエントリポイントにmainと入力し、OK

2014年3月9日日曜日

C#でOpenCVを動かす

C++で実装するのに難儀していたこともあり、どうにかC#で実装できないか調べていたところ、OpenCvSharpなるものを発見。

どうやら、NuGetからインストールするだけでC#からOpenCVを動かせるそうな・・・

なにこれすごい


詳細については下記リンク先にて紹介されているので割愛します。




早速二値化してみた。

【元画像】


【二値化】



【AdaptiveThreshold MeanC】


















CPU:i7 3930k@1200MHz
上記スペックで1600x1200の適応的二値化を行うと20ms付近とかなり短い処理時間となった。
ただし、GaussianCではブロックサイズを大きくするにつれて、処理時間も伸びていった為、高速ラインで使用するらなMeanCの方が適切かなーと。

他にもblob関数もあったり色々実装されてるのでOpenCV+C#の入門に丁度いい気がする。
とはいえ、さすがにすべての関数を網羅しているわけではないので、そこは注意してほしい。

GPGPUも実装してみたいなぁ・・・