[Openmp-dev] potential OpenMP library back ports for 3.9.1

Churbanov, Andrey via Openmp-dev openmp-dev at lists.llvm.org
Mon Oct 31 07:05:50 PDT 2016


As these are bug fixes they may worth adding to the branch.

I'd also note that the r277991, if accepted, should better be accompanied by the following correction r284747:

Author: achurbanov
Date: Thu Oct 20 12:14:17 2016
New Revision: 284747

URL: http://llvm.org/viewvc/llvm-project?rev=284747&view=rev
Log:
Fixed memory leak mistakenly introduced by https://reviews.llvm.org/D23115

Differential Revision: http://reviews.llvm.org/D25510


- Andrey

-----Original Message-----
From: Openmp-dev [mailto:openmp-dev-bounces at lists.llvm.org] On Behalf Of Jack Howarth via Openmp-dev
Sent: Monday, October 31, 2016 4:14 PM
To: Peyton, Jonathan L <jonathan.l.peyton at intel.com>; openmp-dev (openmp-dev at lists.llvm.org) <openmp-dev at lists.llvm.org>
Subject: [Openmp-dev] potential OpenMP library back ports for 3.9.1

Jonathan,
      Do any of these commits merit back porting to openmp 3.9 branch for the 3.9.1 release?
                 Jack

Author: hahnfeld
Date: Mon Aug  8 05:08:07 2016
New Revision: 277991

URL: http://llvm.org/viewvc/llvm-project?rev=277991&view=rev
Log:
__kmp_free_task: Fix for serial explicit tasks producing proxy tasks

Consider the following code which may be executed by a serial team:

    int dep;
    #pragma omp target nowait depend(out: dep)
    {
        sleep(1);
    }
    #pragma omp task depend(in: dep)
    {
        #pragma omp target nowait
        {
            sleep(1);
        }
    }

Here the explicit task may not be freed until the nested proxy task has finished. The current code hasn't considered this and called __kmp_free_task anyway which triggered an assert because of remaining incomplete children:

    KMP_DEBUG_ASSERT( TCR_4(taskdata->td_incomplete_child_tasks) == 0 );

Differential Revision: https://reviews.llvm.org/D23115

------------------------

Author: hahnfeld
Date: Mon Aug  8 05:08:14 2016
New Revision: 277992

URL: http://llvm.org/viewvc/llvm-project?rev=277992&view=rev
Log:
Do not block on explicit task depending on proxy task

Consider the following code:

    int dep;
    #pragma omp target nowait depend(out: dep)
    {
        sleep(1);
    }
    #pragma omp task depend(in: dep)
    {
        printf("Task with dependency\n");
    }
    printf("Doing some work...\n");

In its current state the runtime will block on the second task and not continue execution.

Differential Revision: https://reviews.llvm.org/D23116

------------------------

Author: achurbanov
Date: Thu Oct 27 06:43:07 2016
New Revision: 285283

URL: http://llvm.org/viewvc/llvm-project?rev=285283&view=rev
Log:
Fixed a memory leak related to task dependencies.

Differential Revision: http://reviews.llvm.org/D25504

Patch by Alex Duran.
_______________________________________________
Openmp-dev mailing list
Openmp-dev at lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev

--------------------------------------------------------------------
Joint Stock Company Intel A/O
Registered legal address: Krylatsky Hills Business Park,
17 Krylatskaya Str., Bldg 4, Moscow 121614,
Russian Federation

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.


More information about the Openmp-dev mailing list