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」、異質計算),但是實際上…就個人所知,成效似乎不算是很好。

閱讀全文

Khronos GDC 2015 新消息:Vulkan 與 OpenCL 2.1

這篇算是簡單整理一下 Khronos 在 GDC 2015 發表的一些消息。今年 Khronos 發表的消息,主要是下一代的 OpenGL、「Vulkan」,以及 OpenCL 兩個部分;而實際上,繪圖和計算這兩部分,看來已經越來越一體化了。

整體性的介紹,可以參考官方的投影片:Khronos GDC Press Briefing : Mar15.pdf

閱讀全文

支援 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/

閱讀全文

Khronos 更新一系列 3D 圖形以及計算標準

Khronos 在今年的 GDC(Game Developer’s Conference)上,發表了一波標準的更新,包括了:

  • OpenGL ES 3.1 Specification
  • WebCL 1.0 Specification
  • EGL 1.5 Specification
  • SYCL 1.2 Provisional Specification
  • OpenCL 2.0 Adopters Program

其官方新聞稿是《Khronos Releases Wave of New Standards and Initiatives for 3D Graphics, Heterogeneous Computing and API Interop》。

閱讀全文

提供統一記憶體架構: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》一文。

閱讀全文

GPGPU + SIMD、大改進的 OpenMP 4.0

很久以前,Heresy 曾經介紹過 OpenMP 這個超簡單的程式平行化的標準(參考);當時 Heresy 並沒有特別去管他的版本,不過實際上以 VisualStudio 來說,就算到了最新的 2013 版,也都還是只支援到 OpenMP 2.0(MSDN)。而實際上,OpenMP 在 2008 年就已經把標準更新到 3.0 了,而最新的版本,則是 2011 年的 3.1 版(維基百科)。

而在今年,OpenMP 則是發表了最新版的 OpenMP 4.0,做了相當大的改進!雖然現在似乎還沒有可以完整支援的編譯器(官方編譯器支援列表,不過似乎沒有更新的很快),不過這邊還是稍微來整理一下好了。

閱讀全文