Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
8 Views

Concurrent / Asynchronous IPP Functions in a single executable process possible?

Jump to solution
Hi,

I have been developed my applications using IPP functions for quite some time and, have benefited the performance gain from the functions. Recently, I have discovered that some of my functions which individually, runs a set of IPP functions and each functions do not dependent on each other output. I realized that each IPP function uses OpenMP for its multicore/multi-threaded operations.

Is it possible that I can run my functions concurrent or asynchronously in a single executable process, where each functions uses a separate sets of CPU cores?

Regards,

I2R D&T Team
0 Kudos

Accepted Solutions
Highlighted
New Contributor III
8 Views
Quoting - I2R D&T Team
Hi,

I have been developed my applications using IPP functions for quite some time and, have benefited the performance gain from the functions. Recently, I have discovered that some of my functions which individually, runs a set of IPP functions and each functions do not dependent on each other output. I realized that each IPP function uses OpenMP for its multicore/multi-threaded operations.

Is it possible that I can run my functions concurrent or asynchronously in a single executable process, where each functions uses a separate sets of CPU cores?

Regards,

I2R D&T Team

Hi,
If the IPP functions you call are threaded (check ThreadedFunctionsList.txt), then, you're application is already multithreaded (if you link against IPP Dynamic libraries or threaded static libraries). If you're not using threaded IPP functions and you have an OpenMP compatible compiler, you could use OpenMP (parallel sections if I recall correctly) to do the threading yourself ; this will lead to run the functions concurrently on your process. IPP is thread safe so you can call functions from different thread given that the arguments you pass don't go against basic multithreading rules (ie, passing the same destination buffer for 2 functions running concurrently).

Hope this helps,
Matthieu

View solution in original post

0 Kudos
1 Reply
Highlighted
New Contributor III
9 Views
Quoting - I2R D&T Team
Hi,

I have been developed my applications using IPP functions for quite some time and, have benefited the performance gain from the functions. Recently, I have discovered that some of my functions which individually, runs a set of IPP functions and each functions do not dependent on each other output. I realized that each IPP function uses OpenMP for its multicore/multi-threaded operations.

Is it possible that I can run my functions concurrent or asynchronously in a single executable process, where each functions uses a separate sets of CPU cores?

Regards,

I2R D&T Team

Hi,
If the IPP functions you call are threaded (check ThreadedFunctionsList.txt), then, you're application is already multithreaded (if you link against IPP Dynamic libraries or threaded static libraries). If you're not using threaded IPP functions and you have an OpenMP compatible compiler, you could use OpenMP (parallel sections if I recall correctly) to do the threading yourself ; this will lead to run the functions concurrently on your process. IPP is thread safe so you can call functions from different thread given that the arguments you pass don't go against basic multithreading rules (ie, passing the same destination buffer for 2 functions running concurrently).

Hope this helps,
Matthieu

View solution in original post

0 Kudos