<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic omp tasq inside a parallel block in Intel® Moderncode for Parallel Architectures</title>
    <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/omp-tasq-inside-a-parallel-block/m-p/864192#M2614</link>
    <description>Is subject possible. I got the following error trying to compile it:
&lt;BR /&gt;../../inspector/SecurityWrapper.cpp(229): (col. 17) remark: TASK CONSTRUCT WAS PARALLELIZED.
&lt;BR /&gt;../../inspector/SecurityWrapper.cpp(221): (col. 13) remark: TASKQ CONSTRUCT WAS PARALLELIZED.
&lt;BR /&gt;../../inspector/SecurityWrapper.cpp(218): (col. 1) remark: OpenMP DEFINED REGION WAS PARALLELIZED.
&lt;BR /&gt;(0): internal error: backend signals
&lt;BR /&gt;
&lt;BR /&gt;compilation aborted for ../../inspector/SecurityWrapper.cpp (code 4)
&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;The code I tried to compile:
&lt;BR /&gt;...
&lt;BR /&gt;#pragma omp parallel shared(it)
&lt;BR /&gt;{
&lt;BR /&gt;
&lt;BR /&gt;            #pragma intel omp taskq reduction(+:count) //shared(it)
&lt;BR /&gt;            {
&lt;BR /&gt;                #ifdef _OPENMP
&lt;BR /&gt;                  printf( "
OMP is using %d thread(s)
", omp_get_num_threads());
&lt;BR /&gt;                #endif
&lt;BR /&gt;
&lt;BR /&gt;              for(it = _engines.begin(); it != _engines.end(); ++it)
&lt;BR /&gt;              {
&lt;BR /&gt;                #pragma intel omp task captureprivate(it)
&lt;BR /&gt;                {
&lt;BR /&gt;                    uint nsize = 0;
&lt;BR /&gt;                    char *ndata = 0;
&lt;BR /&gt;            ///*
&lt;BR /&gt;                    #ifdef _OPENMP
&lt;BR /&gt;                        printf( "
%d thread running
", omp_get_thread_num());
&lt;BR /&gt;                    #endif
&lt;BR /&gt;            //*/
&lt;BR /&gt;                    InspectionEngine *engine = (InspectionEngine *)*it;
&lt;BR /&gt;                    if(mask &amp;amp; engine-&amp;gt;_mask || (engine-&amp;gt;_mask == STRUCTURED_ENGINE_MASK &amp;amp;&amp;amp; _enable_ccn_pattern))
&lt;BR /&gt;                    {
&lt;BR /&gt;                      engine-&amp;gt;setRawSrc((char*)src,size);
&lt;BR /&gt;                      ndata = (char*)_normalizer.getNormalized(engine-&amp;gt;getType(), nsize);
&lt;BR /&gt;                      if (SecurityWrapperLayer::_normalized_log) 
&lt;BR /&gt;                          SecurityWrapperLayer::_normalized_log-&amp;gt;write((char*)ndata,nsize,getStreamId(),engine-&amp;gt;getType());
&lt;BR /&gt;                      count += engine-&amp;gt;process(pid, ndata, nsize, eof);
&lt;BR /&gt;                    }
&lt;BR /&gt;                }//omp task
&lt;BR /&gt;              }//for loop
&lt;BR /&gt;             }//tasq
&lt;BR /&gt;             #pragma omp single nowait
&lt;BR /&gt;             {
&lt;BR /&gt;                        #ifdef _OPENMP
&lt;BR /&gt;                            printf( "
%d thread checks DB config
", omp_get_thread_num());
&lt;BR /&gt;                        #endif
&lt;BR /&gt;                    
&lt;BR /&gt;                        checkDBConfig();
&lt;BR /&gt;             }//single
&lt;BR /&gt;
&lt;BR /&gt;  }//parallel
&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;  return count;
&lt;BR /&gt;
&lt;BR /&gt;Whereas #pragma intel omp parrallel itself works well, any combination of omp pragmas and tasq inside a parallel block doesn't compile. 
&lt;BR /&gt;Any workaround? All I want is just to update DB configuration in parallel with tasq processing.</description>
    <pubDate>Wed, 02 Jul 2008 15:52:53 GMT</pubDate>
    <dc:creator>anviko</dc:creator>
    <dc:date>2008-07-02T15:52:53Z</dc:date>
    <item>
      <title>omp tasq inside a parallel block</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/omp-tasq-inside-a-parallel-block/m-p/864192#M2614</link>
      <description>Is subject possible. I got the following error trying to compile it:
&lt;BR /&gt;../../inspector/SecurityWrapper.cpp(229): (col. 17) remark: TASK CONSTRUCT WAS PARALLELIZED.
&lt;BR /&gt;../../inspector/SecurityWrapper.cpp(221): (col. 13) remark: TASKQ CONSTRUCT WAS PARALLELIZED.
&lt;BR /&gt;../../inspector/SecurityWrapper.cpp(218): (col. 1) remark: OpenMP DEFINED REGION WAS PARALLELIZED.
&lt;BR /&gt;(0): internal error: backend signals
&lt;BR /&gt;
&lt;BR /&gt;compilation aborted for ../../inspector/SecurityWrapper.cpp (code 4)
&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;The code I tried to compile:
&lt;BR /&gt;...
&lt;BR /&gt;#pragma omp parallel shared(it)
&lt;BR /&gt;{
&lt;BR /&gt;
&lt;BR /&gt;            #pragma intel omp taskq reduction(+:count) //shared(it)
&lt;BR /&gt;            {
&lt;BR /&gt;                #ifdef _OPENMP
&lt;BR /&gt;                  printf( "
OMP is using %d thread(s)
", omp_get_num_threads());
&lt;BR /&gt;                #endif
&lt;BR /&gt;
&lt;BR /&gt;              for(it = _engines.begin(); it != _engines.end(); ++it)
&lt;BR /&gt;              {
&lt;BR /&gt;                #pragma intel omp task captureprivate(it)
&lt;BR /&gt;                {
&lt;BR /&gt;                    uint nsize = 0;
&lt;BR /&gt;                    char *ndata = 0;
&lt;BR /&gt;            ///*
&lt;BR /&gt;                    #ifdef _OPENMP
&lt;BR /&gt;                        printf( "
%d thread running
", omp_get_thread_num());
&lt;BR /&gt;                    #endif
&lt;BR /&gt;            //*/
&lt;BR /&gt;                    InspectionEngine *engine = (InspectionEngine *)*it;
&lt;BR /&gt;                    if(mask &amp;amp; engine-&amp;gt;_mask || (engine-&amp;gt;_mask == STRUCTURED_ENGINE_MASK &amp;amp;&amp;amp; _enable_ccn_pattern))
&lt;BR /&gt;                    {
&lt;BR /&gt;                      engine-&amp;gt;setRawSrc((char*)src,size);
&lt;BR /&gt;                      ndata = (char*)_normalizer.getNormalized(engine-&amp;gt;getType(), nsize);
&lt;BR /&gt;                      if (SecurityWrapperLayer::_normalized_log) 
&lt;BR /&gt;                          SecurityWrapperLayer::_normalized_log-&amp;gt;write((char*)ndata,nsize,getStreamId(),engine-&amp;gt;getType());
&lt;BR /&gt;                      count += engine-&amp;gt;process(pid, ndata, nsize, eof);
&lt;BR /&gt;                    }
&lt;BR /&gt;                }//omp task
&lt;BR /&gt;              }//for loop
&lt;BR /&gt;             }//tasq
&lt;BR /&gt;             #pragma omp single nowait
&lt;BR /&gt;             {
&lt;BR /&gt;                        #ifdef _OPENMP
&lt;BR /&gt;                            printf( "
%d thread checks DB config
", omp_get_thread_num());
&lt;BR /&gt;                        #endif
&lt;BR /&gt;                    
&lt;BR /&gt;                        checkDBConfig();
&lt;BR /&gt;             }//single
&lt;BR /&gt;
&lt;BR /&gt;  }//parallel
&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;  return count;
&lt;BR /&gt;
&lt;BR /&gt;Whereas #pragma intel omp parrallel itself works well, any combination of omp pragmas and tasq inside a parallel block doesn't compile. 
&lt;BR /&gt;Any workaround? All I want is just to update DB configuration in parallel with tasq processing.</description>
      <pubDate>Wed, 02 Jul 2008 15:52:53 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/omp-tasq-inside-a-parallel-block/m-p/864192#M2614</guid>
      <dc:creator>anviko</dc:creator>
      <dc:date>2008-07-02T15:52:53Z</dc:date>
    </item>
  </channel>
</rss>

