From: Thomas Schwinge <thomas@codesourcery.com>
To: Tobias Burnus <tobias@codesourcery.com>
Cc: Hafiz Abid Qadeer <abidh@codesourcery.com>,
Jakub Jelinek <jakub@redhat.com>, <gcc-patches@gcc.gnu.org>,
<fortran@gcc.gnu.org>
Subject: Re: [PATCH] [gfortran] Add support for allocate clause (OpenMP 5.0).
Date: Fri, 4 Feb 2022 10:37:17 +0100 [thread overview]
Message-ID: <87mtj7rn02.fsf@euler.schwinge.homeip.net> (raw)
In-Reply-To: <e536f2c4-fdfe-7e6c-56b5-191713404933@codesourcery.com>
Hi Tobias!
On 2022-01-24T09:45:48+0100, Tobias Burnus <tobias@codesourcery.com> wrote:
> On 21.01.22 18:43, Tobias Burnus wrote:
>> On 21.01.22 18:15, Thomas Schwinge wrote:
>>> 11 | integer(c_int) function is_64bit_aligned (a) bind(C)
>>> Warning: Variable ‘a’ at (1) is a dummy argument of the BIND(C)
>>> procedure ‘is_64bit_aligned’ but may not be C interoperable
>>> [-Wc-binding-type]
>>>
>>> Is that something to worry about?
> I have attached a patch (not commited), which silences the three kind of
> warnings and fixes the interface issue.
> TODO: commit it.
Still "TODO: commit it" ;-) -- and while I haven't reviewed the changes
in detail, I did spot one item that should be addressed, I suppose:
> --- a/libgomp/testsuite/libgomp.fortran/allocate-1.c
> +++ b/libgomp/testsuite/libgomp.fortran/allocate-1.c
> @@ -1,7 +1,7 @@
> #include <stdint.h>
>
> int
> -is_64bit_aligned_ (uintptr_t a)
> +is_64bit_aligned (uintptr_t a)
> {
> return ( (a & 0x3f) == 0);
> }
> --- a/libgomp/testsuite/libgomp.fortran/allocate-1.f90
> +++ b/libgomp/testsuite/libgomp.fortran/allocate-1.f90
> @@ -5,30 +5,30 @@
> module m
> use omp_lib
> use iso_c_binding
> - implicit none
> + implicit none (type, external)
>
> interface
> integer(c_int) function is_64bit_aligned (a) bind(C)
> import :: c_int
> - integer :: a
> + type(*) :: a
> end
> end interface
> -end module m
>
> -subroutine foo (x, p, q, px, h, fl)
> +contains
> +
> +subroutine foo (x, p, q, h, fl)
> use omp_lib
> use iso_c_binding
> integer :: x
> integer, dimension(4) :: p
> integer, dimension(4) :: q
> - integer :: px
> integer (kind=omp_allocator_handle_kind) :: h
> integer :: fl
>
> integer :: y
> integer :: r, i, i1, i2, i3, i4, i5
> integer :: l, l3, l4, l5, l6
> - integer :: n, n1, n2, n3, n4
> + integer :: n, n2, n3, n4
> integer :: j2, j3, j4
> integer, dimension(4) :: l2
> integer, dimension(4) :: r2
> @@ -118,6 +118,7 @@ subroutine foo (x, p, q, px, h, fl)
> end if
> !$omp end parallel
> !$omp end teams
> +stop
>
> !$omp parallel do private (y) firstprivate (x) reduction(+: r) allocate (h: x, y, r, l, n) lastprivate (l) linear (n: 16)
> do i = 0, 63
That early 'stop' should probably be backed out? ;-)
Grüße
Thomas
> @@ -153,77 +154,77 @@ subroutine foo (x, p, q, px, h, fl)
> ((is_64bit_aligned(l2(1)) == 0) .or. &
> (is_64bit_aligned(l3) == 0) .or. &
> (is_64bit_aligned(i1) == 0))) then
> - stop 10
> + stop 10
> end if
> end do
>
> !$omp do collapse(2) lastprivate(l4, i2, j2) linear (n2:17) allocate (h: n2, l4, i2, j2)
> do i2 = 3, 4
> do j2 = 17, 22, 2
> - n2 = n2 + 17
> - l4 = i2 * 31 + j2
> - if ( (and(fl, 1) /= 0) .and. &
> - ((is_64bit_aligned(l4) == 0) .or. &
> - (is_64bit_aligned(n2) == 0) .or. &
> - (is_64bit_aligned(i2) == 0) .or. &
> - (is_64bit_aligned(j2) == 0))) then
> - stop 11
> - end if
> + n2 = n2 + 17
> + l4 = i2 * 31 + j2
> + if ( (and(fl, 1) /= 0) .and. &
> + ((is_64bit_aligned(l4) == 0) .or. &
> + (is_64bit_aligned(n2) == 0) .or. &
> + (is_64bit_aligned(i2) == 0) .or. &
> + (is_64bit_aligned(j2) == 0))) then
> + stop 11
> + end if
> end do
> end do
>
> !$omp do collapse(2) lastprivate(l5, i3, j3) linear (n3:17) schedule (static, 3) allocate (n3, l5, i3, j3)
> do i3 = 3, 4
> do j3 = 17, 22, 2
> - n3 = n3 + 17
> - l5 = i3 * 31 + j3
> - if ( (and(fl, 2) /= 0) .and. &
> - ((is_64bit_aligned(l5) == 0) .or. &
> - (is_64bit_aligned(n3) == 0) .or. &
> - (is_64bit_aligned(i3) == 0) .or. &
> - (is_64bit_aligned(j3) == 0))) then
> - stop 12
> - end if
> + n3 = n3 + 17
> + l5 = i3 * 31 + j3
> + if ( (and(fl, 2) /= 0) .and. &
> + ((is_64bit_aligned(l5) == 0) .or. &
> + (is_64bit_aligned(n3) == 0) .or. &
> + (is_64bit_aligned(i3) == 0) .or. &
> + (is_64bit_aligned(j3) == 0))) then
> + stop 12
> + end if
> end do
> end do
>
> !$omp do collapse(2) lastprivate(l6, i4, j4) linear (n4:17) schedule (dynamic) allocate (h: n4, l6, i4, j4)
> do i4 = 3, 4
> do j4 = 17, 22,2
> - n4 = n4 + 17;
> - l6 = i4 * 31 + j4;
> - if ( (and(fl, 1) /= 0) .and. &
> - ((is_64bit_aligned(l6) == 0) .or. &
> - (is_64bit_aligned(n4) == 0) .or. &
> - (is_64bit_aligned(i4) == 0) .or. &
> - (is_64bit_aligned(j4) == 0))) then
> - stop 13
> - end if
> + n4 = n4 + 17;
> + l6 = i4 * 31 + j4;
> + if ( (and(fl, 1) /= 0) .and. &
> + ((is_64bit_aligned(l6) == 0) .or. &
> + (is_64bit_aligned(n4) == 0) .or. &
> + (is_64bit_aligned(i4) == 0) .or. &
> + (is_64bit_aligned(j4) == 0))) then
> + stop 13
> + end if
> end do
> end do
>
> !$omp do lastprivate (i5) allocate (i5)
> do i5 = 1, 17, 3
> if ( (and(fl, 2) /= 0) .and. &
> - (is_64bit_aligned(i5) == 0)) then
> - stop 14
> + (is_64bit_aligned(i5) == 0)) then
> + stop 14
> end if
> end do
>
> !$omp do reduction(+:p, q, r2) allocate(h: p, q, r2)
> do i = 0, 31
> - p(3) = p(3) + i;
> - p(4) = p(4) + (2 * i)
> - q(1) = q(1) + (3 * i)
> - q(3) = q(3) + (4 * i)
> - r2(1) = r2(1) + (5 * i)
> - r2(4) = r2(4) + (6 * i)
> - if ( (and(fl, 1) /= 0) .and. &
> - ((is_64bit_aligned(q(1)) == 0) .or. &
> - (is_64bit_aligned(p(1)) == 0) .or. &
> - (is_64bit_aligned(r2(1)) == 0) )) then
> - stop 15
> - end if
> + p(3) = p(3) + i;
> + p(4) = p(4) + (2 * i)
> + q(1) = q(1) + (3 * i)
> + q(3) = q(3) + (4 * i)
> + r2(1) = r2(1) + (5 * i)
> + r2(4) = r2(4) + (6 * i)
> + if ( (and(fl, 1) /= 0) .and. &
> + ((is_64bit_aligned(q(1)) == 0) .or. &
> + (is_64bit_aligned(p(1)) == 0) .or. &
> + (is_64bit_aligned(r2(1)) == 0) )) then
> + stop 15
> + end if
> end do
>
> !$omp task private(y) firstprivate(x) allocate(x, y)
> @@ -305,11 +306,13 @@ subroutine foo (x, p, q, px, h, fl)
> .or. r2(1) /= (5 * p(3)) .or. r2(4) /= (6 * p(3))) then
> stop 25
> end if
> -
> end subroutine
> +end module m
>
> program main
> use omp_lib
> + use m
> + implicit none (type, external)
> integer, dimension(4) :: p
> integer, dimension(4) :: q
>
> @@ -323,11 +326,11 @@ program main
> if (a == omp_null_allocator) stop 1
>
> call omp_set_default_allocator (omp_default_mem_alloc);
> - call foo (42, p, q, 2, a, 0);
> - call foo (42, p, q, 2, omp_default_mem_alloc, 0);
> - call foo (42, p, q, 2, a, 1);
> + call foo (42, p, q, a, 0);
> + call foo (42, p, q, omp_default_mem_alloc, 0);
> + call foo (42, p, q, a, 1);
> call omp_set_default_allocator (a);
> - call foo (42, p, q, 2, omp_null_allocator, 3);
> - call foo (42, p, q, 2, omp_default_mem_alloc, 2);
> + call foo (42, p, q, omp_null_allocator, 3);
> + call foo (42, p, q, omp_default_mem_alloc, 2);
> call omp_destroy_allocator (a);
> end
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
next prev parent reply other threads:[~2022-02-04 9:37 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20211022130502.2211568-1-abidh@codesourcery.com>
2021-10-22 13:28 ` Tobias Burnus
[not found] ` <20211102162714.GF304296@tucnak>
[not found] ` <e3c9083c-0906-699a-b437-84a49ece33b8@mentor.com>
[not found] ` <20211220200650.GN2646553@tucnak>
[not found] ` <fddcdfcf-3fab-1674-722e-2756a1d6aef8@mentor.com>
2022-01-14 9:10 ` Thomas Schwinge
2022-01-14 11:45 ` Tobias Burnus
2022-01-14 11:55 ` Jakub Jelinek
2022-01-14 12:20 ` Tobias Burnus
2022-01-17 14:01 ` Hafiz Abid Qadeer
2022-01-21 17:15 ` Thomas Schwinge
2022-01-21 17:43 ` Tobias Burnus
2022-01-24 8:45 ` Tobias Burnus
2022-01-24 12:54 ` Hafiz Abid Qadeer
2022-01-25 9:19 ` Thomas Schwinge
2022-01-25 10:32 ` Tobias Burnus
2022-01-31 19:13 ` Hafiz Abid Qadeer
2022-02-04 9:46 ` Thomas Schwinge
2022-02-04 11:25 ` Hafiz Abid Qadeer
2022-02-05 19:09 ` Hafiz Abid Qadeer
2022-02-16 10:29 ` Hafiz Abid Qadeer
2022-02-04 9:37 ` Thomas Schwinge [this message]
2022-02-04 13:57 ` [committed] libgomp.fortran/allocate-1.f90: Minor cleanup (was: Re: [PATCH] [gfortran] Add support for allocate clause (OpenMP 5.0).) Tobias Burnus
2022-02-04 15:33 ` Thomas Schwinge
2022-02-04 16:34 ` Tobias Burnus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87mtj7rn02.fsf@euler.schwinge.homeip.net \
--to=thomas@codesourcery.com \
--cc=abidh@codesourcery.com \
--cc=fortran@gcc.gnu.org \
--cc=gcc-patches@gcc.gnu.org \
--cc=jakub@redhat.com \
--cc=tobias@codesourcery.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).