Which threading library does -stdpar=multicore use?

Hello,

I have a couple questions about nvc++'s -stdpar=multicore flag:

  1. Which CPU threading library does it use? The documentation only mentions that the code runs on multiple cores but I haven’t been able to find any specific implementation details. Is it implemented directly on top of pthreads or is it built on top of a threading library like TBB?

  2. What is the advantage of using nvc++ with -stdpar=multicore over any other mainstream C++17 compiler? Is it just the flexibility to be able to use nvc++ for code that might either run on CPU or GPU? If I’m already using parallel execution policies with g++ then is there any reason to consider using nvc++ with -stdpar=multicore instead?

Is it implemented directly on top of pthreads or is it built on top of a threading library like TBB?

It uses our OpenMP runtime via Thrust’s OpenMP back-end.

Is it just the flexibility to be able to use nvc++ for code that might either run on CPU or GPU?

This would be the primary advantage.

For OpenMP, we do often will out perform GNU in multicore performance, but I don’t have any benchmarks so don’t know if this carries over to C++ stdpar. Then again, the best benchmark is you’re own code. So, if you’re happy with g++ and only want to use us for GPU offload, that’s fine. Plus it’s always recommended to develop and test using multiple compilers.

I am on the SPEC CPU committee and we are looking for new codes to be candidates for the follow-on to SPEC CPU 2017, including codes using stdpar. Do you have an application that you may be able to submit? Please see: SPEC CPU v8 Benchmark Search Program

Thanks for the info!

Let me think a bit about SPEC and get back to you.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.