Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is external threading in Intel's IPP library?

I am reading about Intel's Integrated Performance Primitives library for C and C++. They mentioned external threading as one of the new features.

New API’s for external threading is more effective than internal threading. source

What is external threading and how does it relates to std::thread in C++ ?

like image 615
tommyk Avatar asked Oct 30 '22 20:10

tommyk


2 Answers

In IPP:
Internal threading - inside a primitive
External threading - at the application level

Intel IPP 8.2 continues deprecation of internal threading that was started in version 7.1. The threaded static libraries will be available as a separate download, and code developed with these libraries will still work as before. The ThreadedFunctionsList.txt file in ...\Documentation\en_US\ipp\ lists functions that are available in an internally threaded format. However, multi-threaded libraries are deprecated and moving to external threading is recommended for the following reasons:

Internal (inside a primitive) threading is significantly less effective than external (at the application level) threading.

source

With std::thread external threading is unrelated.

like image 167
Dolk13 Avatar answered Nov 15 '22 06:11

Dolk13


"Ready for external threading" in IPP basically means, that for all (almost all, except functions, which by algorithm are not suited for threading) functionalities (functional groups) the list of function arguments contains enough input/output arguments to organize external threading. So, some function APIs were modified for external threading.

It can be addresses, offsets, service buffers and so on, to execute a function in multiple threads for processing 1D vectors by chunks, or 2D images by slices or tiles. It's going to be helpful, especially as vectors/images grow now (more megapixels to process:)).

like image 21
Sergey Khlystov Avatar answered Nov 15 '22 05:11

Sergey Khlystov