Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

NVC++ (NVIDIA HPC SDK C++ Compiler)

@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった 

NVIDIAC++ Compiler をアナウンス。

developer.nvidia.com

NVC++では、標準的なC++にて、GPUアクセラレート可能に。

- C++言語拡張

- pragmas

- diirectives

- non-standard libraries

も無しに。。。

PGI Compiler をベースにしたのかな?どんなんだろうか?

C++標準の下記の std::execution というの使えばいいようだが、そんなの知らなかったよ。いつ導入されたのよ。。。

std::execution::seq: Sequential execution. No parallelism is allowed.
std::execution::unseq: Vectorized execution on the calling thread (this execution policy was added in C++20).
std::execution::par: Parallel execution on one or more threads.
std::execution::par_unseq: Parallel execution on one or more threads, with each thread possibly vectorized.

あ、C++ 17コンパイラだから、C++ 17 なのね。

これか。

cpprefjp.github.io

ここから、引用します。

seq 逐次処理を実行し、並列化を行わない
par マルチスレッド化を許可する 
par_unseq マルチスレッド化および・もしくはベクトル化を許可する 
unseq ベクトル化を許可する 

unseq は、C++20とあるんですが、、、

上にも (this execution policy was added in C++20). とあった。

ベンチマークでは、C++ on A100 と OpenACC on A100 でおぼ同じだと。

 

NVIDIA HPC SDK は、こちら。

developer.nvidia.com

なお、Volta、Turing、Ampare しか対応していないって。TensorCore対応のGPUのみなんでしょうかね。

The NVC++ compiler can automatically offload C++ Parallel Algorithms to NVIDIA GPUs based on the Volta, Turing, or Ampere architectures.

 

Arm, OpenPOWER, or x86-64 CPUsから、将来的には、RISC-Vも入ってくるでしょうかね

 

Softekのサイトにも日本語の解説があります。

www.softek.co.jp

となっていますが、12月8日に下記のようなアナウンスがあり、ソフテックのHPCエンジニアリングに関する業務がプロメテック・ソフトウェアにご業務移管されたようです。

www.prometech.co.jp