Intel® Moderncode for Parallel Architectures
Support for developing parallel programming applications on Intel® Architecture.

omp tasq inside a parallel block

Is subject possible. I got the following error trying to compile it:
../../inspector/SecurityWrapper.cpp(229): (col. 17) remark: TASK CONSTRUCT WAS PARALLELIZED.
../../inspector/SecurityWrapper.cpp(221): (col. 13) remark: TASKQ CONSTRUCT WAS PARALLELIZED.
../../inspector/SecurityWrapper.cpp(218): (col. 1) remark: OpenMP DEFINED REGION WAS PARALLELIZED.
(0): internal error: backend signals

compilation aborted for ../../inspector/SecurityWrapper.cpp (code 4)

The code I tried to compile:
#pragma omp parallel shared(it)

#pragma intel omp taskq reduction(+:count) //shared(it)
#ifdef _OPENMP
printf( " OMP is using %d thread(s) ", omp_get_num_threads());

for(it = _engines.begin(); it != _engines.end(); ++it)
#pragma intel omp task captureprivate(it)
uint nsize = 0;
char *ndata = 0;
#ifdef _OPENMP
printf( " %d thread running ", omp_get_thread_num());
InspectionEngine *engine = (InspectionEngine *)*it;
if(mask & engine->_mask || (engine->_mask == STRUCTURED_ENGINE_MASK && _enable_ccn_pattern))
ndata = (char*)_normalizer.getNormalized(engine->getType(), nsize);
if (SecurityWrapperLayer::_normalized_log)
count += engine->process(pid, ndata, nsize, eof);
}//omp task
}//for loop
#pragma omp single nowait
#ifdef _OPENMP
printf( " %d thread checks DB config ", omp_get_thread_num());



return count;

Whereas #pragma intel omp parrallel itself works well, any combination of omp pragmas and tasq inside a parallel block doesn't compile.
Any workaround? All I want is just to update DB configuration in parallel with tasq processing.
0 Kudos
0 Replies