* Allow matching Intel MIC in OpenMP 'declare variant'
@ 2021-08-23 14:58 Thomas Schwinge
2021-08-23 15:03 ` Jakub Jelinek
0 siblings, 1 reply; 2+ messages in thread
From: Thomas Schwinge @ 2021-08-23 14:58 UTC (permalink / raw)
To: Jakub Jelinek, gcc-patches
[-- Attachment #1: Type: text/plain, Size: 425 bytes --]
Hi!
See the attached "Allow matching Intel MIC in OpenMP 'declare variant'".
OK to push, or how should this be done better?
Grüße
Thomas
-----------------
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
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Allow-matching-Intel-MIC-in-OpenMP-declare-variant.patch --]
[-- Type: text/x-diff, Size: 5028 bytes --]
From 33e5efd0b9c4b1a0712b3dbe103e3a295c765ab4 Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <thomas@codesourcery.com>
Date: Mon, 2 Aug 2021 17:38:05 +0200
Subject: [PATCH] Allow matching Intel MIC in OpenMP 'declare variant'
..., and use that to improve XFAILing for Intel MIC offloading execution
instead of compilation in 'libgomp.c-c++-common/target-45.c',
'libgomp.fortran/target10.f90'.
---
gcc/config/i386/i386-options.c | 4 ++++
gcc/config/i386/t-omp-device | 2 +-
libgomp/testsuite/lib/libgomp.exp | 17 ++++++++++++-----
.../libgomp.c-c++-common/on_device_arch.h | 13 +++++++++++++
.../testsuite/libgomp.c-c++-common/target-45.c | 2 +-
libgomp/testsuite/libgomp.fortran/target10.f90 | 3 ++-
6 files changed, 33 insertions(+), 8 deletions(-)
diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c
index 6b789988baa..fee5a48c9a5 100644
--- a/gcc/config/i386/i386-options.c
+++ b/gcc/config/i386/i386-options.c
@@ -304,6 +304,10 @@ ix86_omp_device_kind_arch_isa (enum omp_device_kind_arch_isa trait,
case omp_device_kind:
return strcmp (name, "cpu") == 0;
case omp_device_arch:
+#ifdef ACCEL_COMPILER
+ if (strcmp (name, "intel_mic") == 0)
+ return 1;
+#endif
if (strcmp (name, "x86") == 0)
return 1;
if (TARGET_64BIT)
diff --git a/gcc/config/i386/t-omp-device b/gcc/config/i386/t-omp-device
index 037ae5e112d..29350a1d80b 100644
--- a/gcc/config/i386/t-omp-device
+++ b/gcc/config/i386/t-omp-device
@@ -1,6 +1,6 @@
omp-device-properties-i386: $(srcdir)/config/i386/i386-options.c
echo kind: cpu > $@
- echo arch: x86 x86_64 i386 i486 i586 i686 ia32 >> $@
+ echo arch: intel_mic x86 x86_64 i386 i486 i586 i686 ia32 >> $@
echo isa: sse4 `sed -n '/^static struct ix86_target_opts isa2\?_opts\[\] =/,/^};/p' \
$(srcdir)/config/i386/i386-options.c | \
sed -n 's/",.*$$//;s/^ { "-m//p'` >> $@
diff --git a/libgomp/testsuite/lib/libgomp.exp b/libgomp/testsuite/lib/libgomp.exp
index ba8a73275c5..57fb6b068f3 100644
--- a/libgomp/testsuite/lib/libgomp.exp
+++ b/libgomp/testsuite/lib/libgomp.exp
@@ -374,11 +374,6 @@ proc check_effective_target_offload_target_amdgcn { } {
return [libgomp_check_effective_target_offload_target "amdgcn"]
}
-# Return 1 if compiling for offload target intelmic
-proc check_effective_target_offload_target_intelmic { } {
- return [libgomp_check_effective_target_offload_target "*-intelmic"]
-}
-
# Return 1 if offload device is available.
proc check_effective_target_offload_device { } {
return [check_runtime_nocache offload_device_available_ {
@@ -453,6 +448,18 @@ proc check_effective_target_openacc_nvidia_accel_selected { } {
return [string match "nvidia" $openacc_device_type]
}
+# Return 1 if using Intel MIC offload device.
+proc check_effective_target_offload_device_intel_mic { } {
+ return [check_runtime_nocache offload_device_intel_mic {
+ #include <omp.h>
+ #include "testsuite/libgomp.c-c++-common/on_device_arch.h"
+ int main ()
+ {
+ return !on_device_arch_intel_mic ();
+ }
+ } ]
+}
+
# Return 1 if the OpenACC 'host' device type is selected.
proc check_effective_target_openacc_host_selected { } {
diff --git a/libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h b/libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h
index 1c0753c3181..ee541dd2260 100644
--- a/libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h
+++ b/libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h
@@ -6,7 +6,14 @@ device_arch_nvptx (void)
return GOMP_DEVICE_NVIDIA_PTX;
}
+/* static */ int
+device_arch_intel_mic (void)
+{
+ return GOMP_DEVICE_INTEL_MIC;
+}
+
#pragma omp declare variant (device_arch_nvptx) match(construct={target},device={arch(nvptx)})
+#pragma omp declare variant (device_arch_intel_mic) match(construct={target},device={arch(intel_mic)})
/* static */ int
device_arch (void)
{
@@ -28,3 +35,9 @@ on_device_arch_nvptx ()
{
return on_device_arch (GOMP_DEVICE_NVIDIA_PTX);
}
+
+int
+on_device_arch_intel_mic ()
+{
+ return on_device_arch (GOMP_DEVICE_INTEL_MIC);
+}
diff --git a/libgomp/testsuite/libgomp.c-c++-common/target-45.c b/libgomp/testsuite/libgomp.c-c++-common/target-45.c
index ec0d202e51c..81acee81064 100644
--- a/libgomp/testsuite/libgomp.c-c++-common/target-45.c
+++ b/libgomp/testsuite/libgomp.c-c++-common/target-45.c
@@ -1,4 +1,4 @@
-/* { dg-do run { target { ! offload_target_intelmic } } } */
+/* { dg-xfail-run-if TODO { offload_device_intel_mic } } */
#include <omp.h>
#include <stdlib.h>
diff --git a/libgomp/testsuite/libgomp.fortran/target10.f90 b/libgomp/testsuite/libgomp.fortran/target10.f90
index 0b939ad7a0d..f41a726de75 100644
--- a/libgomp/testsuite/libgomp.fortran/target10.f90
+++ b/libgomp/testsuite/libgomp.fortran/target10.f90
@@ -1,4 +1,5 @@
-! { dg-do run { target { ! offload_target_intelmic } } }
+! { dg-do run }
+! { dg-xfail-run-if TODO { offload_device_intel_mic } }
program main
use omp_lib
--
2.25.1
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Allow matching Intel MIC in OpenMP 'declare variant'
2021-08-23 14:58 Allow matching Intel MIC in OpenMP 'declare variant' Thomas Schwinge
@ 2021-08-23 15:03 ` Jakub Jelinek
0 siblings, 0 replies; 2+ messages in thread
From: Jakub Jelinek @ 2021-08-23 15:03 UTC (permalink / raw)
To: Thomas Schwinge; +Cc: gcc-patches
On Mon, Aug 23, 2021 at 04:58:43PM +0200, Thomas Schwinge wrote:
> Hi!
>
> See the attached "Allow matching Intel MIC in OpenMP 'declare variant'".
> OK to push, or how should this be done better?
LGTM.
> >From 33e5efd0b9c4b1a0712b3dbe103e3a295c765ab4 Mon Sep 17 00:00:00 2001
> From: Thomas Schwinge <thomas@codesourcery.com>
> Date: Mon, 2 Aug 2021 17:38:05 +0200
> Subject: [PATCH] Allow matching Intel MIC in OpenMP 'declare variant'
>
> ..., and use that to improve XFAILing for Intel MIC offloading execution
> instead of compilation in 'libgomp.c-c++-common/target-45.c',
> 'libgomp.fortran/target10.f90'.
> ---
> gcc/config/i386/i386-options.c | 4 ++++
> gcc/config/i386/t-omp-device | 2 +-
> libgomp/testsuite/lib/libgomp.exp | 17 ++++++++++++-----
> .../libgomp.c-c++-common/on_device_arch.h | 13 +++++++++++++
> .../testsuite/libgomp.c-c++-common/target-45.c | 2 +-
> libgomp/testsuite/libgomp.fortran/target10.f90 | 3 ++-
> 6 files changed, 33 insertions(+), 8 deletions(-)
>
> diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c
> index 6b789988baa..fee5a48c9a5 100644
> --- a/gcc/config/i386/i386-options.c
> +++ b/gcc/config/i386/i386-options.c
> @@ -304,6 +304,10 @@ ix86_omp_device_kind_arch_isa (enum omp_device_kind_arch_isa trait,
> case omp_device_kind:
> return strcmp (name, "cpu") == 0;
> case omp_device_arch:
> +#ifdef ACCEL_COMPILER
> + if (strcmp (name, "intel_mic") == 0)
> + return 1;
> +#endif
> if (strcmp (name, "x86") == 0)
> return 1;
> if (TARGET_64BIT)
> diff --git a/gcc/config/i386/t-omp-device b/gcc/config/i386/t-omp-device
> index 037ae5e112d..29350a1d80b 100644
> --- a/gcc/config/i386/t-omp-device
> +++ b/gcc/config/i386/t-omp-device
> @@ -1,6 +1,6 @@
> omp-device-properties-i386: $(srcdir)/config/i386/i386-options.c
> echo kind: cpu > $@
> - echo arch: x86 x86_64 i386 i486 i586 i686 ia32 >> $@
> + echo arch: intel_mic x86 x86_64 i386 i486 i586 i686 ia32 >> $@
> echo isa: sse4 `sed -n '/^static struct ix86_target_opts isa2\?_opts\[\] =/,/^};/p' \
> $(srcdir)/config/i386/i386-options.c | \
> sed -n 's/",.*$$//;s/^ { "-m//p'` >> $@
> diff --git a/libgomp/testsuite/lib/libgomp.exp b/libgomp/testsuite/lib/libgomp.exp
> index ba8a73275c5..57fb6b068f3 100644
> --- a/libgomp/testsuite/lib/libgomp.exp
> +++ b/libgomp/testsuite/lib/libgomp.exp
> @@ -374,11 +374,6 @@ proc check_effective_target_offload_target_amdgcn { } {
> return [libgomp_check_effective_target_offload_target "amdgcn"]
> }
>
> -# Return 1 if compiling for offload target intelmic
> -proc check_effective_target_offload_target_intelmic { } {
> - return [libgomp_check_effective_target_offload_target "*-intelmic"]
> -}
> -
> # Return 1 if offload device is available.
> proc check_effective_target_offload_device { } {
> return [check_runtime_nocache offload_device_available_ {
> @@ -453,6 +448,18 @@ proc check_effective_target_openacc_nvidia_accel_selected { } {
> return [string match "nvidia" $openacc_device_type]
> }
>
> +# Return 1 if using Intel MIC offload device.
> +proc check_effective_target_offload_device_intel_mic { } {
> + return [check_runtime_nocache offload_device_intel_mic {
> + #include <omp.h>
> + #include "testsuite/libgomp.c-c++-common/on_device_arch.h"
> + int main ()
> + {
> + return !on_device_arch_intel_mic ();
> + }
> + } ]
> +}
> +
> # Return 1 if the OpenACC 'host' device type is selected.
>
> proc check_effective_target_openacc_host_selected { } {
> diff --git a/libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h b/libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h
> index 1c0753c3181..ee541dd2260 100644
> --- a/libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h
> +++ b/libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h
> @@ -6,7 +6,14 @@ device_arch_nvptx (void)
> return GOMP_DEVICE_NVIDIA_PTX;
> }
>
> +/* static */ int
> +device_arch_intel_mic (void)
> +{
> + return GOMP_DEVICE_INTEL_MIC;
> +}
> +
> #pragma omp declare variant (device_arch_nvptx) match(construct={target},device={arch(nvptx)})
> +#pragma omp declare variant (device_arch_intel_mic) match(construct={target},device={arch(intel_mic)})
> /* static */ int
> device_arch (void)
> {
> @@ -28,3 +35,9 @@ on_device_arch_nvptx ()
> {
> return on_device_arch (GOMP_DEVICE_NVIDIA_PTX);
> }
> +
> +int
> +on_device_arch_intel_mic ()
> +{
> + return on_device_arch (GOMP_DEVICE_INTEL_MIC);
> +}
> diff --git a/libgomp/testsuite/libgomp.c-c++-common/target-45.c b/libgomp/testsuite/libgomp.c-c++-common/target-45.c
> index ec0d202e51c..81acee81064 100644
> --- a/libgomp/testsuite/libgomp.c-c++-common/target-45.c
> +++ b/libgomp/testsuite/libgomp.c-c++-common/target-45.c
> @@ -1,4 +1,4 @@
> -/* { dg-do run { target { ! offload_target_intelmic } } } */
> +/* { dg-xfail-run-if TODO { offload_device_intel_mic } } */
>
> #include <omp.h>
> #include <stdlib.h>
> diff --git a/libgomp/testsuite/libgomp.fortran/target10.f90 b/libgomp/testsuite/libgomp.fortran/target10.f90
> index 0b939ad7a0d..f41a726de75 100644
> --- a/libgomp/testsuite/libgomp.fortran/target10.f90
> +++ b/libgomp/testsuite/libgomp.fortran/target10.f90
> @@ -1,4 +1,5 @@
> -! { dg-do run { target { ! offload_target_intelmic } } }
> +! { dg-do run }
> +! { dg-xfail-run-if TODO { offload_device_intel_mic } }
>
> program main
> use omp_lib
> --
> 2.25.1
>
Jakub
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-08-23 15:03 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-23 14:58 Allow matching Intel MIC in OpenMP 'declare variant' Thomas Schwinge
2021-08-23 15:03 ` Jakub Jelinek
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).