在 Visual Studio 2017 使用 CUDA 9.2

雖然 Heresy 個人算是滿早期開始接觸 NVIDIA CUDA 的,但是其實已經沒有在碰 NVIDIA CUDA 程式好一段時間了…不過,由於在開發的專案裡面,還是有一些地方有用到別人寫的 CUDA 程式,所以在維護的時候,還是需要去考慮他。

而根據從以前到現在的經驗,NVIDIA 針對 Visual Studio 的支援,一向不是做得很快、很好;往往 Visual Studio 已經出了新版本了,CUDA 才終於支援上一個版本…

某方面來說,這應該也是由於 NVIDIA CUDA 的重點是高速計算、大部分這個領域的用戶,其實都是把程式放在 Linux 叢集上跑的關係吧?但是,這對於一般 Windows 的開發者來說,其實還滿麻煩的…

最近,Heresy 在把手邊的專案移植到 Visual Studio 2017 上,CUDA 又出現問題了… orz

閱讀更多»

廣告

C++14 到 C++17 的變化

這篇是參考《Changes between C++14 and C++17 DIS》,他主要是在描述 C++14 到 C++17 的變化;雖然由於 C++17 其實還是草案,所以很多東西都還有變數。不過由於他這邊整理的滿清楚的,所以這邊就稍微紀錄一下。

這篇文章,基本上把 C++14 到 C++17 的變化,整理出幾個部分:

  1. Removed or deprecated features(移除與已棄用的功能)
  2. New core language features with global / local applicability (新的核心語言功能)
  3. New library features(新的函式庫功能)
  4. Modifications to existing features(現有功能的修改)
  5. Miscellaneous(雜項)

閱讀更多»

AMD 放大招了…推出 Boltzmann Initiative、支援 CUDA 程式的轉移!

NVIDIA 的 CUDA 架構,基本上應該算是現階段最成功的 GPGPU 環境之一。他在新一代、專門用來做大量平行計算的環境裡面,算是推出最早的,所以相對起來、發展的也算是最完整的;而後來雖然 Khronos 有推出跨硬體平台的開放標準 OpenCL(Intel、AMD、NVIDIA 都有支援),但是就 Heresy 所知,還是有許多開發人員是偏好 CUDA 的。

而 AMD 在 GPGPU 這一塊…個人是覺得發展的始終有點悲劇吧?Heresy 有紀錄的部分,他最早是推出自家的「Stream SDK」,而之後就徹底捨棄自己的語言、完全轉投向 OpenCL、Stream SDK 也改名為「AMD APP SDK」了。

儘管 AMD 也試著在靠 OpenCL、以及後來所推出、基於 AMD APU 的「Heterogeneous System Architecture」(異質系統架構、官網)來做平行計算的發展方向(AMD 稱之為「Heterogeneous Computing」、異質計算),但是實際上…就個人所知,成效似乎不算是很好。

閱讀更多»

支援 64bit ARM 架構:CUDA 6.5 推出

NVIDIA CUDA 又更新囉~這次的版本編號是 6.5,相較於去年年底的 6.0 版,這次的改版,最主要的變化、是加入了對於 64-bit ARM 的支援!之前在 CUDA 5.5 的時候,NVIDIA 是第一次支援 ARM 的架構,而當時都還是僅有 32 位元版;而現在則是正式支援 64-bit 的 ARM 系統了!某方面來看,或許算是 NVIDIA 在為自家的 Denver 版 Tegra K1 鋪路吧?

如果要下載的話,則可以到官方網頁:

https://developer.nvidia.com/cuda-toolkit

而除了支援 64bit ARM 以外,其他的新功能還包括了:

閱讀更多»

OpenCV GPU 簡單紀錄

OpenCV 實際上在 2011 年開始,就有一個「gpu」的模組,可以透過 NVIDIA CUDA 來使用顯示卡做 GPGPU 的計算了!目前官網上也有相關的文件了(連結)。

不過,現在 OpenCV 官網上,有提供已經建置好的 2.4.9 的程式可以下載,其中也包括了 Heresy 需要的 Windows 版;不過很遺憾的,官方所提供的預先建置好的版本,看來都沒有建置成支援 GPU 的版本…所以如果需要使用 OpenCV 的 GPU 功能的話,就需要自己下載原始碼來自己建置了。

而這篇,基本上就是 Heresy 自己試著用 Visual Studio 來建置 OpenCV 的 GPU 版本的紀錄。

閱讀更多»

OpenCL 的 C++ 函式庫:Boost.Compute

這是前幾天在 GPGPU.org 上看到的消息,原文是《Boost.Compute v0.2 Released》。

基本上,Boost.Compute 是一個基於 OpenCL 的 C++ GPGPU、大量平行化函式庫,主要的設計目的,是用來簡化 GPGPU 程式的開發。Boost.Compute 實際上是一個 OpenCL C API 的一個 C++ wrapper,讓開發者可以用 C++ 的概念、以及 STL-like 的程式風格、來開發 OpenCL 的程式。個人會覺得他的形式應該相當接近 nVIDIA CUDAThrust 這個函式庫。

他的原始碼目前是放在 GitHub 上,網址是:

https://github.com/kylelutz/compute

目前還僅只是 0.2 版、同時也還沒有被納為 Boost C++ Libraries 的一部分,基本上,應該還是算是在測試階段吧~

閱讀更多»

Visual C++ 2013 的 STL 平行化函示庫

之前在《C++14 進行中,來看目前的委員會草案吧~》一文中有提過了,在 C++14 這個尚未定案的 C++ 新標準裡、又針對了 C++ 的核心語言、以及標準函示庫(STL)做出了若干的改進。其中,Heresy 覺得相當重要的一部分,就是讓平行化程式開發更簡單的 STL 新函示庫、Parallel STL 了!

而之前在《Modern C++: What you need to know》一文也有提過,微軟在 Build 2014 上曾經預告過,將會放出根據《Working Draft, Technical Specification for C++ Extensions for Parallelism》實作的 Parallel STL 雛型版本;而現在,微軟終於把他放在 CodePlex 上了!

官方的介紹,是《Parallel STL – Democratizing Parallelism in C++》這篇文章,專案的網址則是:

https://parallelstl.codeplex.com/

閱讀更多»

提供統一記憶體架構:NVIDIA CUDA 6

話說,NVIDIA CUDA 這個 GPGPU 的程式開發架構從 2007 年推出 1.0 版發展至今,也已經好一段時間了;這段期間,NVIDIA 也不斷地推出新的 GPU 架構、以及對應的新版 CUDA SDK,在效能和功能上做強化,基本上應該也算是目前最成熟的 GPGPU 開發環境之一。

而日前,NVIDIA 也發表了還沒正式發布的最新版的 CUDA 6.0(現在還沒有可以下載的 SDK)的一個主要的功能,那就是「統一記憶體」(Unified Memory);原文可以參考官方的《Unified Memory in CUDA 6》一文。

閱讀更多»