Search code examples
c++openmp

OpenMp set number of threads for parallel loop depending on variable


Is there a way to set number of threads in OpenMP parallel for region based on the value of a variable? Initially for the whole application number of threads = nofCores. On my AMD FX 8350, nofCores =8. For this area if the variable is 3 then I only need 3 threads. If variable>cores then number of threads should remain equal to nofCores.

I do not want to set the number of threads globally for all the application. Just for this specific parallel loop.

Sorry if this is a naive question, but I am a newbie in OpenMP.


Solution

  • Add this to your omp parallel for directive:

    #pragma omp parallel for num_threads(variable)
    for( ... )