2011年12月3日 星期六

求知若飢 < 沒有飯吃

這一陣子真的是現實壓力太大了,,,主要都是來自於$$$$$$$
想想, 學生時代還真輕鬆阿,,,努力做研究,讀paper,,之外什麼都可以不用煩惱.
自從弄丟了車子之後,,整個人都改變了...變成了一個以金錢為主的人生...

不過最近真的有種感覺了,,,,很明顯的感覺自己再混, 很明顯的感覺自己沒有在進步!
因為薪水領的一樣多, 所以就拒絕多做一些額外的事情. 久而久之就變成老油條...
但是兩年後發現,,,自己在這一段時間裡面都沒有任何的成長....其實多做一些事情可以多長一些知識, 雖然內心上是拒絕的(因為多做多累, 薪水又沒有比較多), 但現在反而有種莫名的遺憾.

以知識層面來說, 我想要讀很多paper, 想要知道更多高手的想法.
每次覺得就算是top conference的那些paper, 也很少有令人為之一嘆的想法, 多數的想法不稀奇, 只是多了很複雜的數學模型去包裝. 但是我對那些paper都嗤之以鼻,,,但是只要讀到好的paper, 就會讚賞不已!
另外一方面, 覺得自己的想法很創新,,,reviewer的結果也沒有什麼不好( 但結果總是在接受與拒絕邊緣)...但總是討不到chair的歡喜....

在這樣的怨念底下, 又在加上被塞一堆額外的鳥事,,,自然就會加重討厭的成分......

即便是如此,,,,我還是想要進步. 但是首先要克服對周遭人事物的不爽!


2011年3月20日 星期日

cuda under matlab mex

最近需要用到cuda來提升方法的速度,,,因為用得環境是matlab, 所以就透過mex來連結cuda與matlab.
事實上, matlab 2010b以經可以直接在matlab底下撰寫gpu的kernel function了(參考), 所以如果您有capability >= 1.3 以上的顯示卡, 就不需要透過mex file來當做matlab與cuda的溝通橋樑了.
如果您需要mex的話, 請參考底下.

環境: win7 + cuda 3.1 + matlab 2010b.
先從底下這個網址下載好心人寫好的setup_cuda_mex.m, 接著在matlab底下直接run 該.m檔.
注意:
 1. win 7在C槽底下有permission的限制, 所以要將產生的cuda_mex.pl放到matlab/bin底下
 2. x64的問題該聯結底下有好心人回答.

正常來說這樣應該就可以順利產生.mexw64檔案了.

FAQ1. cuda底下並不支援double-precison的加速效果, 可以參考這篇文章.
如果真的有double-precision的需求, 可在 setup_cuda_mex.m中 'compflags' 底下加上
' --arch sm_13' 就有支援double.
FAQ2. launched timeout問題:
如果在測試的過程中有出現"launched timeout"等訊息的話, 可以參考這篇文章,
如果不是register 或share memory用得過多的話, 就是kernel func花了太多時間在執行上.
所以有個方法可以設定kernel func的launched time參考.(不是很建議, 因為該時間內您的螢幕將會沒有反應XD)
cmd->regedit-> enter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ GraphicsDrivers
TdrLevel = yourtimeoutinsec
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ GraphicsDrivers \ DCI\
Timeout = yourtimeoutinsec

然後reboot your computer, then it is done.

2011年3月9日 星期三

cuda inside visual studio

之前一些實驗需要用到cuda, 所以就大概紀錄一下安裝cuda在visual studio上的文章.
env: win 7 + visual studio 08
cuda version: cuda 3.2

steps:

1. 安裝cuda toolkit
%%假設64bits安裝在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2
2. 安裝cuda sdk 32bits or 64bits
%%假設64bits安裝在C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2

3. 設定visual studio
Tools->Options ->CV++ Directories:
Executable file:
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\shared\bin\win64\Release
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\bin
include file:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\include
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\shared\inc
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\C\common\inc 
lib file:
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\shared\lib 
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\C\common\lib
C:\Program Files (x86)\NVIDIA GPU Computing Toolkit\CUDA\v3.2\lib\x64

4. 安裝npp(NVIDIA Performance Primitives library, optional)
%%假設64bitx安裝在C:\NVIDIA\NPP_SDK_0_9_3_1_X64
32bits or 64bits

Tools->Options ->CV++ Directories:
include file:
C:\NVIDIA\NPP_SDK_0_9_3_1_X64\common\npp\include
C:\NVIDIA\NPP_SDK_0_9_3_1_X64\common\FreeImage\include
lib file:
C:\NVIDIA\NPP_SDK_0_9_3_1_X64\common\lib
C:\NVIDIA\NPP_SDK_0_9_3_1_X64\common\FreeImage\lib


5. 編譯example code
%%C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\C\src
開啟其中一個example, 重編譯, 沒問題的話就是ok了.
note: 若要編譯x32的code, 路徑設定成win32底下即可(或是直接安裝32bits的版本也可).