使用Visual Studio 2005 撰寫CUDA 程式
在前面一篇的《nVidia CUDA 簡介》中,已經大概介紹過 CUDA 的概念了~接下來,大概來講一下寫 CUDA 程式的方法吧!不過這一篇,應該算是事前準備的前置工作部分就是了。而 Heresy 在這邊,會用 Visual Studio 2005 來當作開發環境。
編譯架構
由於 CUDA 有一部分是 C 語言的延伸,所以要編譯 CUDA 的程式,還需要有 nVidia CUDA 的編譯程式:nvcc。
而整個編譯的流程,可以參考右圖(本圖參考 nVidia 在 Siggraph 2007 的 talk 的投影片繪製)。我們將包含 C/C++ 以及 CUDA 的程式寫好之後,須要透過 nvcc 來進行編譯;nvcc 會把 CUDA 的 GPU 程式的部分,轉換成 PTX code,再經過數到手續,最後變成在 GPU 可以執行的程式。而 CPU 程式的部分,則會保留讓 C/C++ 的編譯程式來編譯。不過,這一部分 Heresy 只是大概在概念上了解,實際運作的過程則比較不清楚。
在 CUDA 提供的 Sample 中,大部分的情形下,都會把 CUDA 的程式集中,寫成一個(或數個)附檔名是 .cu 的檔案;而其他沒有用到 CUDA 的部分,則還是寫成 C++ 的 .cpp。而在編譯的時候,就只會把 .cu 的檔案丟給 CUDA 的 nvcc 進行編譯,.cpp 的檔案則仍然由 VS 的編譯程式來處理。
而由於要另外指定一個 nvcc 在特定的檔案,所以其實在 VisualStudio 的設定,就有一些小麻煩了~
官方建議:用 template 修改
以 nVidia 官方來說,是建議從 SDK 範例的 template 這個範例來做修改,這樣就可以不用多費勁做其他設定了~
要這樣做的話,他的說明檔案是在「C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\doc\CUDA_SDK_release_notes_win32.txt」(根據安裝設定不同,可能在不同地方)。這樣的方法還算滿簡單的,步驟大概如下:
1. 將「NVIDIA CUDA SDK\projects\template」的內容,複製到自己的新專案目錄下,假設專案名稱是「myproject」。
2. 修改檔名成自己想要的。
3. 修改 *.sln 和 *.vcproj 以及程式檔案,把所有的「template」用「myproject」取代。
到此,應該就算成功的把 template 改成 myproject 了;而應該會有 release, debug, emurelease, emudebug 四種建置的方法。其中,「emu」開頭的,代表是用模擬的方法來執行的;也就是說,CUDA 會把 GPU 的程式也編譯成 CPU 的程式,這樣就可以用 Visual Studio 來設定斷點或 debug 了!不過當然,速度也會非常的慢…
不過,nVidia 官方所有的 Sample Projects 都有使用到 SDK 提供的「CUda UTility Library」(cutil,位於「NVIDIA CUDA SDK\common」),所以直接根據上面的方法修改,可能會找不到 cutil 的路徑。這時候,就要把專案裡的「../../common/inc」、「../../common b」這兩個 cutil 的相對路徑做對硬的修改。另一個方法,就是不要使用 cutil~因為實際上,這也不是完全必須的;實際上,Heresy 就是採去「不使用 cutil」的方法。
而如果堅持想要開新專案來重頭設定呢?最麻煩的部分,應該會是在編譯規則的部分;在 nVidia 的 CUDA Forum <http://forums.nvidia.com/index.php?showforum=62> 中,有一些相關的討論,有興趣的可以參考《Simple CUDA build rule for Visual Studio 2005 <http://forums.nvidia.com/index.php?showtopic=30273>》這篇。不過 Heresy 自己在嘗試了一段時間後,還是沒有成功…最後還是放棄了。
語法的 highlight
由於 nVidia 建議 CUDA 程式的附檔名是用 .cu,所以雖然 CUDA 程式接近是基本的 C 語言,但是 VS 還是不會有語法解析的效果。而要讓 .cu 的程式檔案可以和 .c 或 .cpp 一樣,有 highlight 效果的話,可以依照下面的步驟:
1. 首先,在 nVidia CUDA SDK 的安裝目錄(一般是在「C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK」)的「\doc\syntax_highlighting」資料夾裡,有一個 visual_studio_8 的資料夾;裡面的 usertype.dat 這個檔案,就是 nVidia 寫好的語法檔案。
2. 找到 VS2005 的安裝目錄,一般是在「C:\Program Files\Microsoft Visual Studio 8」;然後,確認底下的「Common7\IDE」目錄下,是否已經有 usertype.dat 這個檔案。 有的話,可以把 nVidia 提供的檔案內容附加到 VS 目錄下的檔案裡;沒有的話,直接複製一份過來就可以了。
3. 開啟 Visual Studio 2005,選擇選單的「Tools」、「Options...」,展開左邊的「Text Editor」那一項,並選擇「File Extension」。接著,在右邊的「Extension」的地方輸入「cu」後,按下「Add」,並按下右腳的「ok」。
4. 重新啟動 Visual Studio 2005,就可以看到 .cu 的檔案也有語法 highlight 了~
不過這樣也只會有語法 highlight 的效果,其他像是自動完成、function 的折迭功能,仍然是沒有的…
源自:<http://heresy.spaces.live.com/blog/cns%21E0070FB8ECF9015F%212760.entry>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22785983/viewspace-619751/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 Visual Studio 2005 建立新 CUDA 專案
- cuda的 visual studio 環境配置
- Visual Studio 2005 如何建立“Web 應用程式”Web
- Visual Studio 2005:在組織內部採用 Visual Studio ExpressExpress
- 使用 Visual Studio 2005 Team System 管理開發過程
- 使用Visual Studio Code編寫和啟用ABAP程式碼 (上)
- Microsoft Visual Studio 2005 Service Pack 1ROS
- 循序漸進:將 eMbedded Visual C++ 應用程式遷移到 Visual Studio 2005C++
- 當 Visual Studio 2005遇上LINQ To SQLSQL
- visual studio 2005 學習日記 (1)
- visual studio 2005 學習日記 (2)
- OpenCV 2.4.9 + CUDA 6.5 + Visual Studio 2013 [中文教程]OpenCV
- Visual Studio - Now with Go support,你會用 Visual Studio來寫go嗎?Go
- Visual Studio 2005 Team System:軟體專案管理專案管理
- Visual Studio 2005 Team Foundation Server Installation GuideServerGUIIDE
- 使用Visual Studio分析dump
- Visual Studio使用Git進行程式碼版本管理Git行程
- 101個微軟提供的Visual Studio 2005示例微軟
- 使用 Visual Studio 2005 Tools for Office 為 .NET 重新設計 Excel VBA 解決方案Excel
- Visual Studio Code 使用筆記筆記
- Visual Studio Code 使用指南
- Visual Studio Code 使用心得
- 使用Visual Studio分析.NET Dump
- Visual Studio 使用GIT詳解Git
- 使用Visual Studio Code進行MicroPython程式設計Python程式設計
- 寶付撰寫java基礎程式碼Java
- 在Visual Studio 中使用git——給Visual Studio安裝 git外掛(二)Git
- Visual Studio 開發彙編程式
- 使用Visual Studio 2015開發Android 程式Android
- Visual Studio Code 小白使用介紹
- Visual Studio Code 編輯器使用
- Visual Studio 2005 SP1 Update for Windows Vista釋出了Windows
- 在Visual Studio上用C++ 寫LinuxC++Linux
- 將 Web 專案從 Visual Studio .Net 2002/2003 轉換到 Visual Studio 2005 的分步指南Web
- Visual Studio程式碼去掉自動空格
- 使用 Visual Studio Code 入門 Angular 5Angular
- 循序漸進:Visual Studio 2005 中的新增本機開發功能
- Visual Studio Code