C++AMP 已死


C++ AMP 是微軟在 2011 年發表、在 2012 年推出的一套適用於 GPGPU、大量平行化的 C++ 函式庫。他基本上算是相對高階的 GPGPU 開發方案,由於底層是使用 DirectX 來做的,所以理論上能支援不同廠牌的顯示卡(參考《C++ AMP 相關資料》)。

不過,由於 Heresy 這邊還是有考慮到要跨到 Linux 環境的問題,所以簡單玩了一下後,就沒有去認真研究這個東西了。(不過由於 C++AMP 屬於開放標準,倒也真有人在 CLANG/LLVM + OpenCL 弄出了 C++AMP 的實作;參考《Bringing C++AMP Beyond Windows via CLANG and LLVM》)

而前幾天,忽然和到 Google 推薦的文章《C++ AMPの死について》,這才發現原來 C++AMP 也已經被微軟賜死了…

在目前還在測試階段的 Visual Studio 2022 的 Preview 2(目前最新是 3.1)的 release note(連結)中,可以看到:

C++ AMP headers are now deprecated. Including <amp.h> in a C++ project will generate build errors. To silence the errors, define _SILENCE_AMP_DEPRECATION_WARNINGS. Please see [our AMP Deprecation links]https://aka.ms/amp_deprecate for more details.

在官方《C++ AMP Overview》 中,也可以看到,官方已經預計要在 Visual Studio 2022、也就是 17.0 開始、將 C++AMP 的 header 檔案標記成棄用(deprecated)了。

現階段還是可以可透過加上「_SILENCE_AMP_DEPRECATION_WARNINGS」這個定義來繼續使用,但是可以預期微軟應該也不會更新了。

而在《C++ AMP headers are deprecated: what is the replacement in Visual Studio?》中,則可以看到微軟針對他的後續,也有寫:

About C++ AMP work with _SILENCE_AMP_DEPRECATION_WARNINGS, we plan to support them at least through VS 2022 lifecycle, which is 5 years after last update + another 5 for extended support.

看起來,應該可以認定 Visual Stduio 2022 是最後支援 C++ AMP 的版本了。


話說,其實現在想在這個層級寫 GPGPU 的程式的方案,其實也不少了。

針對 NVIDIA CUDA 的話,早就有 Thrust(連結)可以用了。以 OpenCL 為基礎的話,也有 Boost.Compute(1.61.0 已正式進入 Boost)、或是官方的 SYCL(官網)可以用。

而實際上,OpenMP 4.0 開始,也有支援 SIMD 和 GPGPU 了~不過 Visual Studio 在這塊始終還是要加油就是了(參考)。

對「C++AMP 已死」的想法

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.