<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p><font face="Hack Nerd Font Mono">Thanks! Can you also commit the
        reproducer as a test?</font></p>
    <p><font face="Hack Nerd Font Mono"></font><br>
    </p>
    <div class="moz-cite-prefix">On 5/23/20 4:04 PM, Joachim Protze via
      Openmp-dev wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:a2d50061-4c74-03cf-92e3-7edd380412c7@gmail.com">I think,
      I found the issue and posted a fix at:
      <br>
      <br>
      <a class="moz-txt-link-freetext" href="https://reviews.llvm.org/D80480">https://reviews.llvm.org/D80480</a>
      <br>
      <br>
      - Joachim
      <br>
      <br>
      <br>
      Am 21.05.20 um 18:12 schrieb Raúl Peñacoba Veigas via Openmp-dev:
      <br>
      <blockquote type="cite">Hello again,
        <br>
        <br>
        I've managed to remove MPI from the equation. It seems a race
        condition in the runtime.
        <br>
        <br>
        int main(int argc, char **argv)
        <br>
        {
        <br>
                 int TIMESTEPS = 10;
        <br>
                 int BLOCKS = 100;
        <br>
        <br>
                 int nranks = 4;
        <br>
        <br>
                 int DATA;
        <br>
        <br>
                 #pragma omp parallel
        <br>
                 #pragma omp single
        <br>
                 {
        <br>
                         for (int t = 0; t < TIMESTEPS; ++t) {
        <br>
                                 for (int r = 0; r < nranks; ++r) {
        <br>
                                         for (int b = 0; b < BLOCKS;
        ++b) {
        <br>
                                                 #pragma omp task
        depend(in: DATA)
        <br>
                                                 { }
        <br>
                                         }
        <br>
                                 }
        <br>
        <br>
                                 #pragma omp task depend(inout: DATA)
        <br>
                                 {}
        <br>
                         }
        <br>
                         #pragma omp taskwait
        <br>
                 }
        <br>
        }
        <br>
        <br>
        To run it execute:
        <br>
        <br>
        clang -fopenmp t1.c -o t1
        <br>
        <br>
        for i in {1..5000}; do echo $i; OMP_NUM_THREADS=3 ./t1; done
        <br>
        <br>
        Regards,
        <br>
        <br>
        Raúl
        <br>
        <br>
        El 21/5/20 a las 9:57, Raúl Peñacoba Veigas escribió:
        <br>
        <blockquote type="cite">Hello everyone,
          <br>
          <br>
          Writing an OpenMP + MPI code I've triggered a debug assert in
          __kmp_task_start:
          <br>
          <br>
          KMP_DEBUG_ASSERT(taskdata->td_flags.tasktype ==
          TASK_EXPLICIT);
          <br>
          <br>
          I attach a simpler code that does not do anything special with
          additional info.
          <br>
          <br>
          #include <mpi.h>
          <br>
          <br>
          #include <assert.h>
          <br>
          #include <stdio.h>
          <br>
          #include <stdlib.h>
          <br>
          #include <string.h>
          <br>
          #include <unistd.h>
          <br>
          <br>
          int main(int argc, char **argv)
          <br>
          {
          <br>
                  int TIMESTEPS = 10;
          <br>
                  int BLOCKS = 100;
          <br>
          <br>
                  MPI_Init(&argc, &argv);
          <br>
          <br>
                  int rank, nranks;
          <br>
                  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
          <br>
                  MPI_Comm_size(MPI_COMM_WORLD, &nranks);
          <br>
          <br>
                  int DATA;
          <br>
          <br>
                  #pragma omp parallel
          <br>
                  #pragma omp single
          <br>
                  {
          <br>
                          for (int t = 0; t < TIMESTEPS; ++t) {
          <br>
                                  for (int r = 0; r < nranks; ++r) {
          <br>
                                          for (int b = 0; b < BLOCKS;
          ++b) {
          <br>
                                                  #pragma omp task
          depend(in: DATA)
          <br>
                                                  { }
          <br>
                                          }
          <br>
                                  }
          <br>
          <br>
                                  #pragma omp task depend(inout: DATA)
          <br>
                                  {}
          <br>
                          }
          <br>
                          #pragma omp taskwait
          <br>
                  }
          <br>
          <br>
                  MPI_Finalize();
          <br>
          <br>
          }
          <br>
          <br>
          llvm_project debug build, commitaafdeeade8d
          <br>
          MPICH Version: 3.3a2
          <br>
          MPICH Release date: Sun Nov 13 09:12:11 MST 2016
          <br>
          <br>
          $ MPICH_CC=clang mpicc -fopenmp t1.c -o t1
          <br>
          $ for i in {1..100}; do mpiexec.hydra -n 4 ./t1; done
          <br>
          <br>
          <br>
        </blockquote>
        <br>
        <a class="moz-txt-link-freetext" href="http://bsc.es/disclaimer">http://bsc.es/disclaimer</a>
        <br>
        _______________________________________________
        <br>
        Openmp-dev mailing list
        <br>
        <a class="moz-txt-link-abbreviated" href="mailto:Openmp-dev@lists.llvm.org">Openmp-dev@lists.llvm.org</a>
        <br>
        <a class="moz-txt-link-freetext" href="https://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev">https://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev</a>
        <br>
      </blockquote>
      <br>
      _______________________________________________
      <br>
      Openmp-dev mailing list
      <br>
      <a class="moz-txt-link-abbreviated" href="mailto:Openmp-dev@lists.llvm.org">Openmp-dev@lists.llvm.org</a>
      <br>
      <a class="moz-txt-link-freetext" href="https://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev">https://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev</a>
      <br>
    </blockquote>
  </body>
</html>