Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save srinivasyadav18/f3b9ede8cff1e8b23b487290e877c907 to your computer and use it in GitHub Desktop.
Save srinivasyadav18/f3b9ede8cff1e8b23b487290e877c907 to your computer and use it in GitHub Desktop.
unseq_doubts
I still did not get clarity about unseq.
I am clear that datapar/dataseq is about using simd or
some kind vector intrinsics and provide vectorization.
But what does unseq do?
could you elobarate on this
--> "while unseq leaves the vectorization to the compiler"
to understand this i went to c++ standard unseq i.e
std::execution::unseq,
and currently std supports unseq only with c++20
and only gcc and msvc have implemented it.
defined here https://en.cppreference.com/w/cpp/20
and http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1001r2.html
gcc implementation of it from gcc mirrors
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/pstl/pstl_config.h
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/pstl/unseq_backend_simd.h
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/pstl/execution_impl.h
here they use some kind of pragma simd, simd, or even omp simd
for vectorisation (in pstl_config.h)
which is backend for unseq
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment