title: OpenMP task dependencies to thread-private storages
body: <p>Considering the following example, OpenMP requires that the addresses stored in <code>buff1</code> and <code>buff2</code> must be determined. However, the addresses stored in <code>buff1</code> and <code>buff2</code> are determined according to the id (<code>myid</code>) of the thread that runs the task. How can I solve my problem? Any solution is appreciated. I am not allowed to allocate memory.</p>
  
  <pre class="lang-c prettyprint-override"><code>mystruct* buff1;
  mystruct* buff2;
  #pragma omp task depend(in: data[0:1000]) depend(inout: buff1[0:0])
  {
    int myid=omp_get_thread_num();
    buff1=buffers[myid];
    processA(data, buff1);
  }
  #pragma omp task depend(in: data[0:1000]) depend(inout: buff2[0:0])
  {
    int myid=omp_get_thread_num();
    buff2=buffers[myid];
    processB(data, buff2);
  }
  #pragma omp task depend(in: data[0:1000]) depend(inout: buff1[0:0])  depend(inout: buff2[0:0])
  {
    processC(data, buff1, buff2);
  }
  </code></pre>