Remove support for Intel MIC offloading (was: [PATCH] Remove dead code.)
Checks
Commit Message
Hi!
On 2021-11-12T06:41:41-0800, "H.J. Lu via Gcc-patches" <gcc-patches@gcc.gnu.org> wrote:
> On Fri, Nov 12, 2021 at 6:27 AM Martin Liška <mliska@suse.cz> wrote:
>> On 11/8/21 15:19, Jeff Law wrote:
>> > On 11/8/2021 2:59 AM, Jakub Jelinek via Gcc-patches wrote:
>> >> liboffloadmic is copied from upstream [...]
>> >> But I have no idea where it even lives upstream.
>> > I thought MIC as an architecture was dead, so it could well be the case that there isn't a viable upstream anymore for that code.
>>
>> @H.J. ?
>
> We'd like to deprecate MIC offload in GCC 12.
This had been done in
wwwdocs commit 5c7ecfb5627e412a3d142d8dc212f4cd39b3b73f
"Document deprecation of OpenMP MIC offloading in GCC 12".
I'm sad about this, because -- in theory -- such a plugin is very useful
for offloading simulation/debugging (separate host/device memory spaces,
allow sanitizers to run on offloaded code (like LLVM a while ago
implemented), and so on), but all that doesn't help -- in practice -- if
nobody is maintaining that code. Also, currently that (very "bulky")
code is buildable for x86/x86_64 GNU/Linux only (again for no particular
reason, as far as I can tell).
> We will remove all traces of
> MIC offload in GCC 13.
This had come up again at the GNU Tools Cauldron 2022 (relevant folks
CCed), and I had been tasked to execute that. Explicitly note that this
does not bear any relationship with our ongoing work to support
offloading to AMD and Nvidia GPUs: the more, the merrier, as far as I'm
concerned, and actually I had been testing Intel MIC (emulated)
offloading until a few days ago. (Also, I had been curious about support
for Intel GPUs --
<https://inbox.sourceware.org/gcc/87v933nlhn.fsf@dem-tschwing-1.ger.mentorg.com/>
"GCC/OpenMP offloading for Intel GPUs?" -- but Intel don't seem
interested in working on that themselves?)
I'm proposing the attached "Remove support for Intel MIC offloading"
(generated with 'git format-patch --irreversible-delete', and 'diff's for
regenerated files manually snipped, to reduce its size).
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
Comments
On Thu, Oct 20, 2022 at 01:15:43PM +0200, Thomas Schwinge wrote:
> I'm proposing the attached "Remove support for Intel MIC offloading"
> (generated with 'git format-patch --irreversible-delete', and 'diff's for
> regenerated files manually snipped, to reduce its size).
ChangeLog missing, you'll need one for a successful commit.
Otherwise LGTM. But we'll need to update the offloading wiki too.
Jakub
Hey,
On Thu, 20 Oct 2022, Thomas Schwinge wrote:
> This had been done in
> wwwdocs commit 5c7ecfb5627e412a3d142d8dc212f4cd39b3b73f
> "Document deprecation of OpenMP MIC offloading in GCC 12".
>
> I'm sad about this, because -- in theory -- such a plugin is very useful
> for offloading simulation/debugging (separate host/device memory spaces,
> allow sanitizers to run on offloaded code
Yeah, I think that's a _very_ useful feature, but indeed ...
> (like LLVM a while ago
> implemented), and so on), but all that doesn't help -- in practice -- if
> nobody is maintaining that code.
... it should then be somewhat maintained properly. Maybe the
MIC-specifics could be removed from the code, and it could be transformed
into a "null"-offload target, as example and testing vehicle (and implying
that such new liboffloadmic^H^H^Hnull would have its upstream in the GCC
repo). Alas, if noone is going to do that work removing is the right
choice.
Ciao,
Michael.
On Thu, Oct 20, 2022 at 12:33:28PM +0000, Michael Matz wrote:
> Hey,
>
> On Thu, 20 Oct 2022, Thomas Schwinge wrote:
>
> > This had been done in
> > wwwdocs commit 5c7ecfb5627e412a3d142d8dc212f4cd39b3b73f
> > "Document deprecation of OpenMP MIC offloading in GCC 12".
> >
> > I'm sad about this, because -- in theory -- such a plugin is very useful
> > for offloading simulation/debugging (separate host/device memory spaces,
> > allow sanitizers to run on offloaded code
>
> Yeah, I think that's a _very_ useful feature, but indeed ...
>
> > (like LLVM a while ago
> > implemented), and so on), but all that doesn't help -- in practice -- if
> > nobody is maintaining that code.
>
> ... it should then be somewhat maintained properly. Maybe the
> MIC-specifics could be removed from the code, and it could be transformed
> into a "null"-offload target, as example and testing vehicle (and implying
> that such new liboffloadmic^H^H^Hnull would have its upstream in the GCC
> repo). Alas, if noone is going to do that work removing is the right
> choice.
Yeah. But we really shouldn't need a large MIC specific library for that,
everything should be implementable with a simple portable plugin that just
forks + execs the offloading ELF and transfers data to/out of it etc.
And the config/i386/intelmic-mkoffload etc. stuff would need to be done
somewhere in generic code, such that we can do it for all targets.
Also ideally by using just the normal lto1 with some special option that
it acts as an offloading compiler, so that we don't need to bother with
building a separate offloading compiler for it.
True, everything guarded with #ifdef ACCEL_COMPILER etc. would need to
change into code guarded with some option.
Jakub
> Am 20.10.2022 um 14:41 schrieb Jakub Jelinek via Gcc-patches <gcc-patches@gcc.gnu.org>:
>
> On Thu, Oct 20, 2022 at 12:33:28PM +0000, Michael Matz wrote:
>> Hey,
>>
>>> On Thu, 20 Oct 2022, Thomas Schwinge wrote:
>>>
>>> This had been done in
>>> wwwdocs commit 5c7ecfb5627e412a3d142d8dc212f4cd39b3b73f
>>> "Document deprecation of OpenMP MIC offloading in GCC 12".
>>>
>>> I'm sad about this, because -- in theory -- such a plugin is very useful
>>> for offloading simulation/debugging (separate host/device memory spaces,
>>> allow sanitizers to run on offloaded code
>>
>> Yeah, I think that's a _very_ useful feature, but indeed ...
>>
>>> (like LLVM a while ago
>>> implemented), and so on), but all that doesn't help -- in practice -- if
>>> nobody is maintaining that code.
>>
>> ... it should then be somewhat maintained properly. Maybe the
>> MIC-specifics could be removed from the code, and it could be transformed
>> into a "null"-offload target, as example and testing vehicle (and implying
>> that such new liboffloadmic^H^H^Hnull would have its upstream in the GCC
>> repo). Alas, if noone is going to do that work removing is the right
>> choice.
>
> Yeah. But we really shouldn't need a large MIC specific library for that,
> everything should be implementable with a simple portable plugin that just
> forks + execs the offloading ELF and transfers data to/out of it etc.
> And the config/i386/intelmic-mkoffload etc. stuff would need to be done
> somewhere in generic code, such that we can do it for all targets.
> Also ideally by using just the normal lto1 with some special option that
> it acts as an offloading compiler, so that we don't need to bother with
> building a separate offloading compiler for it.
> True, everything guarded with #ifdef ACCEL_COMPILER etc. would need to
> change into code guarded with some option.
Might be a nice GSoC project …
Richard
> Jakub
>
Hi Jakub, Tobias!
On 2022-10-20T13:15:43+0200, I wrote:
> I'm proposing the attached "Remove support for Intel MIC offloading"
Can you please confirm:
> --- a/gcc/config/i386/i386-options.cc
> +++ b/gcc/config/i386/i386-options.cc
> @@ -307,10 +307,6 @@ 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)
Only remove this bit as quoted, or actually remove the whole function
(used for 'gcc/config/i386/i386.cc:TARGET_OMP_DEVICE_KIND_ARCH_ISA')?
But if I do the latter, I get a few FAILs in compiler-side
'[...]/gomp/declare-variant-[...]' test cases, and
'libgomp.c/declare-variant-1.c'.
You, Jakub, had originally added that in
Subversion r277662 (Git commit 9ba66bf5b9c69e0e2bcd1b2ab88160bf9b2aa417)
"targetm.omp.device_kind_arch_isa and OpenMP declare variant kind/arch/isa handling".
Reading these emails, and the discussion in
<https://gcc.gnu.org/PR105640>
"[OpenMP] Context selectors missing for PowerPC", I infer that we
generally would like to keep this stuff, for non-offloading OpenMP use,
and thus indeed just remove the Intel MIC parts (as quoted above).
Thus:
> --- a/libgomp/libgomp.texi
> +++ b/libgomp/libgomp.texi
> @@ -4303,10 +4303,6 @@ offloading devices (it's not clear if they should be):
>
> @multitable @columnfractions .60 .10 .25
> @headitem @code{arch} @tab @code{kind} @tab @code{isa}
> -@item @code{intel_mic}, @code{x86}, @code{x86_64}, @code{i386}, @code{i486},
> - @code{i586}, @code{i686}, @code{ia32}
> - @tab @code{host}
> - @tab See @code{-m...} flags in ``x86 Options'' (without @code{-m})
> @item @code{amdgcn}, @code{gcn}
> @tab @code{gpu}
> @tab See @code{-march=} in ``AMD GCN Options''
..., I should also restore this, and only remove the Intel MIC mention.
On the other hand:
> diff --git a/gcc/config/i386/t-omp-device b/gcc/config/i386/t-omp-device
> deleted file mode 100644
| index cfb41ed71ce..00000000000
| --- gcc/config/i386/t-omp-device
| +++ /dev/null
| @@ -1,6 +0,0 @@
| -omp-device-properties-i386: $(srcdir)/config/i386/i386-options.cc
| - echo kind: cpu > $@
| - 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.cc | \
| - sed -n 's/",.*$$//;s/^ { "-m//p'` >> $@
Indeed remove this whole file, or just Intel MIC, again? Here, as I
understand, this is fine to remove completely, as is only used if there
is an actual offload compiler (which now there isn't anymore); unused as
of here:
> --- a/gcc/configure.ac
> +++ b/gcc/configure.ac
> @@ -1153,10 +1147,6 @@ for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
>
> enable_offloading=1
> case "$tgt" in
> - *-intelmic-* | *-intelmicemul-*)
> - omp_device_property=omp-device-properties-i386
> - omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device"
> - ;;
> amdgcn*)
> omp_device_property=omp-device-properties-gcn
> omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device"
So I assume that is OK the way I had it prepared.
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
Hi!
On 2022-10-20T22:56:57+0200, I wrote:
> Hi Jakub, Tobias!
>
> On 2022-10-20T13:15:43+0200, I wrote:
>> I'm proposing the attached "Remove support for Intel MIC offloading"
>
> Can you please confirm:
Taking your non-response as silent approval, I've now pushed to master
branch commit e4cba49413ca429dc82f6aa2e88129ecb3fdd943
"Remove support for Intel MIC offloading", see attached (generated with
'git format-patch --irreversible-delete', 'xz -9').
Grüße
Thomas
>> --- a/gcc/config/i386/i386-options.cc
>> +++ b/gcc/config/i386/i386-options.cc
>> @@ -307,10 +307,6 @@ 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)
>
> Only remove this bit as quoted, or actually remove the whole function
> (used for 'gcc/config/i386/i386.cc:TARGET_OMP_DEVICE_KIND_ARCH_ISA')?
> But if I do the latter, I get a few FAILs in compiler-side
> '[...]/gomp/declare-variant-[...]' test cases, and
> 'libgomp.c/declare-variant-1.c'.
>
> You, Jakub, had originally added that in
> Subversion r277662 (Git commit 9ba66bf5b9c69e0e2bcd1b2ab88160bf9b2aa417)
> "targetm.omp.device_kind_arch_isa and OpenMP declare variant kind/arch/isa handling".
> Reading these emails, and the discussion in
> <https://gcc.gnu.org/PR105640>
> "[OpenMP] Context selectors missing for PowerPC", I infer that we
> generally would like to keep this stuff, for non-offloading OpenMP use,
> and thus indeed just remove the Intel MIC parts (as quoted above).
>
> Thus:
>
>> --- a/libgomp/libgomp.texi
>> +++ b/libgomp/libgomp.texi
>> @@ -4303,10 +4303,6 @@ offloading devices (it's not clear if they should be):
>>
>> @multitable @columnfractions .60 .10 .25
>> @headitem @code{arch} @tab @code{kind} @tab @code{isa}
>> -@item @code{intel_mic}, @code{x86}, @code{x86_64}, @code{i386}, @code{i486},
>> - @code{i586}, @code{i686}, @code{ia32}
>> - @tab @code{host}
>> - @tab See @code{-m...} flags in ``x86 Options'' (without @code{-m})
>> @item @code{amdgcn}, @code{gcn}
>> @tab @code{gpu}
>> @tab See @code{-march=} in ``AMD GCN Options''
>
> ..., I should also restore this, and only remove the Intel MIC mention.
>
> On the other hand:
>
>> diff --git a/gcc/config/i386/t-omp-device b/gcc/config/i386/t-omp-device
>> deleted file mode 100644
> | index cfb41ed71ce..00000000000
> | --- gcc/config/i386/t-omp-device
> | +++ /dev/null
> | @@ -1,6 +0,0 @@
> | -omp-device-properties-i386: $(srcdir)/config/i386/i386-options.cc
> | - echo kind: cpu > $@
> | - 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.cc | \
> | - sed -n 's/",.*$$//;s/^ { "-m//p'` >> $@
>
> Indeed remove this whole file, or just Intel MIC, again? Here, as I
> understand, this is fine to remove completely, as is only used if there
> is an actual offload compiler (which now there isn't anymore); unused as
> of here:
>
>> --- a/gcc/configure.ac
>> +++ b/gcc/configure.ac
>
>> @@ -1153,10 +1147,6 @@ for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
>>
>> enable_offloading=1
>> case "$tgt" in
>> - *-intelmic-* | *-intelmicemul-*)
>> - omp_device_property=omp-device-properties-i386
>> - omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device"
>> - ;;
>> amdgcn*)
>> omp_device_property=omp-device-properties-gcn
>> omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device"
>
> So I assume that is OK the way I had it prepared.
>
>
> 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
On Fri, Nov 04, 2022 at 10:54:02AM +0100, Thomas Schwinge wrote:
> Hi!
>
> On 2022-10-20T22:56:57+0200, I wrote:
> > Hi Jakub, Tobias!
> >
> > On 2022-10-20T13:15:43+0200, I wrote:
> >> I'm proposing the attached "Remove support for Intel MIC offloading"
> >
> > Can you please confirm:
>
> Taking your non-response as silent approval, I've now pushed to master
I have responded in
https://gcc.gnu.org/pipermail/gcc-patches/2022-October/603988.html
> branch commit e4cba49413ca429dc82f6aa2e88129ecb3fdd943
> "Remove support for Intel MIC offloading", see attached (generated with
> 'git format-patch --irreversible-delete', 'xz -9').
Jakub
Hi Jakub!
On 2022-11-04T11:30:04+0100, Jakub Jelinek <jakub@redhat.com> wrote:
> On Fri, Nov 04, 2022 at 10:54:02AM +0100, Thomas Schwinge wrote:
>> On 2022-10-20T22:56:57+0200, I wrote:
>> > Hi Jakub, Tobias!
>> >
>> > On 2022-10-20T13:15:43+0200, I wrote:
>> >> I'm proposing the attached "Remove support for Intel MIC offloading"
>> >
>> > Can you please confirm:
>>
>> Taking your non-response as silent approval, I've now pushed to master
>
> I have responded in
> https://gcc.gnu.org/pipermail/gcc-patches/2022-October/603988.html
That's correct, but later I sent this other email where I asked "Can you
please confirm: [...]", which had not gotten a response. (..., but I
convinced myself that my thinking was correct, so I now did proceed
understanding "non-response as silent approval".)
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
Hello,
On Thu, Oct 20 2022, Richard Biener via Gcc-patches wrote:
>> Am 20.10.2022 um 14:41 schrieb Jakub Jelinek via Gcc-patches <gcc-patches@gcc.gnu.org>:
>>
>> On Thu, Oct 20, 2022 at 12:33:28PM +0000, Michael Matz wrote:
>>> Hey,
>>>
>>>> On Thu, 20 Oct 2022, Thomas Schwinge wrote:
>>>>
>>>> This had been done in
>>>> wwwdocs commit 5c7ecfb5627e412a3d142d8dc212f4cd39b3b73f
>>>> "Document deprecation of OpenMP MIC offloading in GCC 12".
>>>>
>>>> I'm sad about this, because -- in theory -- such a plugin is very useful
>>>> for offloading simulation/debugging (separate host/device memory spaces,
>>>> allow sanitizers to run on offloaded code
>>>
>>> Yeah, I think that's a _very_ useful feature, but indeed ...
>>>
>>>> (like LLVM a while ago
>>>> implemented), and so on), but all that doesn't help -- in practice -- if
>>>> nobody is maintaining that code.
>>>
>>> ... it should then be somewhat maintained properly. Maybe the
>>> MIC-specifics could be removed from the code, and it could be transformed
>>> into a "null"-offload target, as example and testing vehicle (and implying
>>> that such new liboffloadmic^H^H^Hnull would have its upstream in the GCC
>>> repo). Alas, if noone is going to do that work removing is the right
>>> choice.
>>
>> Yeah. But we really shouldn't need a large MIC specific library for that,
>> everything should be implementable with a simple portable plugin that just
>> forks + execs the offloading ELF and transfers data to/out of it etc.
>> And the config/i386/intelmic-mkoffload etc. stuff would need to be done
>> somewhere in generic code, such that we can do it for all targets.
>> Also ideally by using just the normal lto1 with some special option that
>> it acts as an offloading compiler, so that we don't need to bother with
>> building a separate offloading compiler for it.
>> True, everything guarded with #ifdef ACCEL_COMPILER etc. would need to
>> change into code guarded with some option.
>
> Might be a nice GSoC project …
>
I really think it could be. Would any one of those involved in this
thread be willing to mentor it?
Thanks,
Martin
Hi!
On 2023-02-01T16:12:07+0100, Martin Jambor <mjambor@suse.cz> wrote:
> On Thu, Oct 20 2022, Richard Biener via Gcc-patches wrote:
>>> Am 20.10.2022 um 14:41 schrieb Jakub Jelinek via Gcc-patches <gcc-patches@gcc.gnu.org>:
>>> On Thu, Oct 20, 2022 at 12:33:28PM +0000, Michael Matz wrote:
>>>>> On Thu, 20 Oct 2022, Thomas Schwinge wrote:
>>>>> This had been done in
>>>>> wwwdocs commit 5c7ecfb5627e412a3d142d8dc212f4cd39b3b73f
>>>>> "Document deprecation of OpenMP MIC offloading in GCC 12".
>>>>>
>>>>> I'm sad about this, because -- in theory -- such a plugin is very useful
>>>>> for offloading simulation/debugging (separate host/device memory spaces,
>>>>> allow sanitizers to run on offloaded code
>>>>
>>>> Yeah, I think that's a _very_ useful feature, but indeed ...
>>>>
>>>>> (like LLVM a while ago
>>>>> implemented), and so on), but all that doesn't help -- in practice -- if
>>>>> nobody is maintaining that code.
>>>>
>>>> ... it should then be somewhat maintained properly. Maybe the
>>>> MIC-specifics could be removed from the code, and it could be transformed
>>>> into a "null"-offload target, as example and testing vehicle (and implying
>>>> that such new liboffloadmic^H^H^Hnull would have its upstream in the GCC
>>>> repo). Alas, if noone is going to do that work removing is the right
>>>> choice.
>>>
>>> Yeah. But we really shouldn't need a large MIC specific library for that,
>>> everything should be implementable with a simple portable plugin that just
>>> forks + execs the offloading ELF and transfers data to/out of it etc.
>>> And the config/i386/intelmic-mkoffload etc. stuff would need to be done
>>> somewhere in generic code, such that we can do it for all targets.
>>> Also ideally by using just the normal lto1 with some special option that
>>> it acts as an offloading compiler, so that we don't need to bother with
>>> building a separate offloading compiler for it.
>>> True, everything guarded with #ifdef ACCEL_COMPILER etc. would need to
>>> change into code guarded with some option.
>>
>> Might be a nice GSoC project …
>
> I really think it could be.
Agreed! Something like: "Separate Host Process Offloading"! (Back
in October, I actually had made a TODO note to put this one onto
<https://gcc.gnu.org/wiki/SummerOfCode>, but so far...)
> Would any one of those involved in this
> thread be willing to mentor it?
I'd offer to co-mentor, but I'd rather not be the only one.
I'm now off for FOSDEM, but unless someone gets it done before, I'll cook
up a GSoC project idea text when I'm back, on Tuesday.
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
Hi!
On 2023-02-02T22:13:20+0100, I wrote:
> On 2023-02-01T16:12:07+0100, Martin Jambor <mjambor@suse.cz> wrote:
>> On Thu, Oct 20 2022, Richard Biener via Gcc-patches wrote:
>>>> Am 20.10.2022 um 14:41 schrieb Jakub Jelinek via Gcc-patches <gcc-patches@gcc.gnu.org>:
>>>> On Thu, Oct 20, 2022 at 12:33:28PM +0000, Michael Matz wrote:
>>>>>> On Thu, 20 Oct 2022, Thomas Schwinge wrote:
>>>>>> This had been done in
>>>>>> wwwdocs commit 5c7ecfb5627e412a3d142d8dc212f4cd39b3b73f
>>>>>> "Document deprecation of OpenMP MIC offloading in GCC 12".
>>>>>>
>>>>>> I'm sad about this, because -- in theory -- such a plugin is very useful
>>>>>> for offloading simulation/debugging (separate host/device memory spaces,
>>>>>> allow sanitizers to run on offloaded code
>>>>>
>>>>> Yeah, I think that's a _very_ useful feature, but indeed ...
>>>>>
>>>>>> (like LLVM a while ago
>>>>>> implemented), and so on), but all that doesn't help -- in practice -- if
>>>>>> nobody is maintaining that code.
>>>>>
>>>>> ... it should then be somewhat maintained properly. Maybe the
>>>>> MIC-specifics could be removed from the code, and it could be transformed
>>>>> into a "null"-offload target, as example and testing vehicle (and implying
>>>>> that such new liboffloadmic^H^H^Hnull would have its upstream in the GCC
>>>>> repo). Alas, if noone is going to do that work removing is the right
>>>>> choice.
>>>>
>>>> Yeah. But we really shouldn't need a large MIC specific library for that,
>>>> everything should be implementable with a simple portable plugin that just
>>>> forks + execs the offloading ELF and transfers data to/out of it etc.
>>>> And the config/i386/intelmic-mkoffload etc. stuff would need to be done
>>>> somewhere in generic code, such that we can do it for all targets.
>>>> Also ideally by using just the normal lto1 with some special option that
>>>> it acts as an offloading compiler, so that we don't need to bother with
>>>> building a separate offloading compiler for it.
>>>> True, everything guarded with #ifdef ACCEL_COMPILER etc. would need to
>>>> change into code guarded with some option.
>>>
>>> Might be a nice GSoC project …
>>
>> I really think it could be.
>
> Agreed! Something like: "Separate Host Process Offloading"! (Back
> in October, I actually had made a TODO note to put this one onto
> <https://gcc.gnu.org/wiki/SummerOfCode>, but so far...)
>
>> Would any one of those involved in this
>> thread be willing to mentor it?
>
> I'd offer to co-mentor, but I'd rather not be the only one.
Still looking for someone to join, please! :-)
> I'm now off for FOSDEM, but unless someone gets it done before, I'll cook
> up a GSoC project idea text when I'm back, on Tuesday.
Here it is:
<https://gcc.gnu.org/wiki/SummerOfCode#Separate_Host_Process_Offloading>.
Please have a look, and fix up if necessary.
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
Hi Thomas, hi all,
On 08.02.23 00:26, Thomas Schwinge wrote:
> On 2023-02-02T22:13:20+0100, I wrote:
>> I'd offer to co-mentor, but I'd rather not be the only one.
> Still looking for someone to join, please! :-)
As kind of mentioned before, I am willing to co-mentor :-)
> Here it is:
> https://gcc.gnu.org/wiki/SummerOfCode#Separate_Host_Process_Offloading
> Please have a look, and fix up if necessary.
Thanks. (Disclaimer: I still have to read it.)
I think this could be also the basis for remote OpenMP offload handling
via the to-be-created target-specific plugin. In this case, to do
offloading to the remote CPU. Writing such an RPC wrapper would be an
independent task, which then should also handle the offloading to a
remote GPU. — Citing an LLVM paper about such a feature:
"The basic idea behind the Remote OpenMP Offloading implementation is to
provide a transparent communication channel between the
target-independent library on the host with the target-dependent library
on the remote system. This use case matches the well-known remote
procedure calls (RPC) idiom. To facilitate communication, we added two
new components into LLVM/OpenMP that build a tunnel from the host to the
remote system through which all plugin API calls ( in Fig. 3) are
forwarded. The first is a remote offloading plugin () which presents
itself to the host as any other plugin would, i.e., it looks no
different than the NVIDIA GPU offloading plugin. The second is a server
application that must be running on the remote system () that mimics
when it communicates with the remote device plugin, such as the one for
NVIDIA GPU offloading. The bottom row of Fig. 3 illustrates their
interaction with the existing infrastructure."
(From https://link.springer.com/chapter/10.1007/978-3-031-07312-0_16
(requires subscription))
About this topic, see also
https://www.hpcwire.com/off-the-wire/remote-openmp-offloading-paper-recognized-at-isc/
and https://baodishan.com/assets/pdf/iwomp22.pdf (both freely
accessible, the latter has a lot of details).
Tobias
-----------------
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
From cedd4fa1ad2ee78355d75b30696669716cc9546e Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <thomas@codesourcery.com>
Date: Mon, 17 Oct 2022 22:19:55 +0200
Subject: [PATCH] Remove support for Intel MIC offloading
---
Makefile.def | 8 -
Makefile.in | 520 +-
configure | 66 +-
configure.ac | 57 +-
contrib/gcc-changelog/git_commit.py | 1 -
contrib/gcc_update | 6 -
contrib/update-copyright.py | 1 -
gcc/config.gcc | 8 -
gcc/config/i386/i386-options.cc | 4 -
gcc/config/i386/intelmic-mkoffload.cc | 728 -
gcc/config/i386/intelmic-offload.h | 35 -
gcc/config/i386/t-intelmic | 10 -
gcc/config/i386/t-omp-device | 6 -
gcc/configure | 14 +-
gcc/configure.ac | 10 -
gcc/doc/install.texi | 2 +-
gcc/doc/sourcebuild.texi | 3 -
include/gomp-constants.h | 3 +-
libgomp/configure | 3 -
libgomp/libgomp-plugin.h | 1 -
libgomp/libgomp.texi | 4 -
libgomp/plugin/configfrag.ac | 3 -
libgomp/testsuite/lib/libgomp.exp | 37 -
.../libgomp.c-c++-common/on_device_arch.h | 35 -
.../libgomp.c-c++-common/target-45.c | 2 -
.../testsuite/libgomp.fortran/target10.f90 | 1 -
liboffloadmic/ChangeLog | 765 -
liboffloadmic/Makefile.am | 160 -
liboffloadmic/Makefile.in | 1310 --
liboffloadmic/aclocal.m4 | 1180 --
liboffloadmic/configure | 17512 ----------------
liboffloadmic/configure.ac | 143 -
liboffloadmic/configure.tgt | 39 -
liboffloadmic/doc/doxygen/config | 2328 --
liboffloadmic/doc/doxygen/header.tex | 90 -
.../include/coi/common/COIEngine_common.h | 121 -
.../include/coi/common/COIEvent_common.h | 84 -
.../include/coi/common/COIMacros_common.h | 229 -
.../include/coi/common/COIPerf_common.h | 87 -
.../include/coi/common/COIResult_common.h | 148 -
.../include/coi/common/COISysInfo_common.h | 126 -
.../include/coi/common/COITypes_common.h | 88 -
.../include/coi/sink/COIBuffer_sink.h | 133 -
.../include/coi/sink/COIPipeline_sink.h | 137 -
.../include/coi/sink/COIProcess_sink.h | 174 -
.../include/coi/source/COIBuffer_source.h | 1806 --
.../include/coi/source/COIEngine_source.h | 273 -
.../include/coi/source/COIEvent_source.h | 301 -
.../include/coi/source/COIPipeline_source.h | 437 -
.../include/coi/source/COIProcess_source.h | 1235 --
liboffloadmic/liboffloadmic_host.spec.in | 3 -
liboffloadmic/liboffloadmic_target.spec.in | 3 -
liboffloadmic/plugin/Makefile.am | 125 -
liboffloadmic/plugin/Makefile.in | 840 -
liboffloadmic/plugin/aclocal.m4 | 1180 --
liboffloadmic/plugin/configure | 17000 ---------------
liboffloadmic/plugin/configure.ac | 147 -
.../plugin/libgomp-plugin-intelmic.cpp | 545 -
liboffloadmic/plugin/offload_target_main.cpp | 380 -
liboffloadmic/runtime/cean_util.cpp | 421 -
liboffloadmic/runtime/cean_util.h | 137 -
liboffloadmic/runtime/coi/coi_client.cpp | 494 -
liboffloadmic/runtime/coi/coi_client.h | 176 -
liboffloadmic/runtime/coi/coi_server.cpp | 180 -
liboffloadmic/runtime/coi/coi_server.h | 94 -
liboffloadmic/runtime/compiler_if_host.cpp | 501 -
liboffloadmic/runtime/compiler_if_host.h | 209 -
liboffloadmic/runtime/compiler_if_target.cpp | 64 -
liboffloadmic/runtime/compiler_if_target.h | 70 -
liboffloadmic/runtime/dv_util.cpp | 153 -
liboffloadmic/runtime/dv_util.h | 84 -
liboffloadmic/runtime/emulator/coi_common.h | 168 -
liboffloadmic/runtime/emulator/coi_device.cpp | 401 -
liboffloadmic/runtime/emulator/coi_device.h | 66 -
liboffloadmic/runtime/emulator/coi_host.cpp | 1634 --
liboffloadmic/runtime/emulator/coi_host.h | 65 -
.../runtime/emulator/coi_version_asm.h | 91 -
.../emulator/coi_version_linker_script.map | 91 -
liboffloadmic/runtime/liboffload_error.c | 561 -
.../runtime/liboffload_error_codes.h | 337 -
liboffloadmic/runtime/liboffload_msg.c | 66 -
liboffloadmic/runtime/liboffload_msg.h | 416 -
liboffloadmic/runtime/mic_lib.f90 | 282 -
liboffloadmic/runtime/offload.h | 565 -
liboffloadmic/runtime/offload_common.cpp | 190 -
liboffloadmic/runtime/offload_common.h | 553 -
liboffloadmic/runtime/offload_engine.cpp | 1128 -
liboffloadmic/runtime/offload_engine.h | 724 -
liboffloadmic/runtime/offload_env.cpp | 384 -
liboffloadmic/runtime/offload_env.h | 112 -
liboffloadmic/runtime/offload_host.cpp | 7255 -------
liboffloadmic/runtime/offload_host.h | 541 -
liboffloadmic/runtime/offload_iterator.h | 103 -
liboffloadmic/runtime/offload_omp_host.cpp | 1267 --
liboffloadmic/runtime/offload_omp_target.cpp | 736 -
liboffloadmic/runtime/offload_orsl.cpp | 104 -
liboffloadmic/runtime/offload_orsl.h | 47 -
liboffloadmic/runtime/offload_table.cpp | 671 -
liboffloadmic/runtime/offload_table.h | 468 -
liboffloadmic/runtime/offload_target.cpp | 878 -
liboffloadmic/runtime/offload_target.h | 129 -
liboffloadmic/runtime/offload_target_main.cpp | 37 -
liboffloadmic/runtime/offload_timer.h | 192 -
liboffloadmic/runtime/offload_timer_host.cpp | 379 -
.../runtime/offload_timer_target.cpp | 87 -
liboffloadmic/runtime/offload_trace.cpp | 409 -
liboffloadmic/runtime/offload_trace.h | 86 -
liboffloadmic/runtime/offload_util.cpp | 226 -
liboffloadmic/runtime/offload_util.h | 182 -
liboffloadmic/runtime/ofldbegin.cpp | 337 -
liboffloadmic/runtime/ofldend.cpp | 114 -
.../runtime/orsl-lite/include/orsl-lite.h | 241 -
.../runtime/orsl-lite/lib/orsl-lite.c | 357 -
liboffloadmic/runtime/orsl-lite/version.txt | 1 -
114 files changed, 9 insertions(+), 75952 deletions(-)
delete mode 100644 gcc/config/i386/intelmic-mkoffload.cc
delete mode 100644 gcc/config/i386/intelmic-offload.h
delete mode 100644 gcc/config/i386/t-intelmic
delete mode 100644 gcc/config/i386/t-omp-device
delete mode 100644 liboffloadmic/ChangeLog
delete mode 100644 liboffloadmic/Makefile.am
delete mode 100644 liboffloadmic/Makefile.in
delete mode 100644 liboffloadmic/aclocal.m4
delete mode 100755 liboffloadmic/configure
delete mode 100644 liboffloadmic/configure.ac
delete mode 100644 liboffloadmic/configure.tgt
delete mode 100644 liboffloadmic/doc/doxygen/config
delete mode 100644 liboffloadmic/doc/doxygen/header.tex
delete mode 100644 liboffloadmic/include/coi/common/COIEngine_common.h
delete mode 100644 liboffloadmic/include/coi/common/COIEvent_common.h
delete mode 100644 liboffloadmic/include/coi/common/COIMacros_common.h
delete mode 100644 liboffloadmic/include/coi/common/COIPerf_common.h
delete mode 100644 liboffloadmic/include/coi/common/COIResult_common.h
delete mode 100644 liboffloadmic/include/coi/common/COISysInfo_common.h
delete mode 100644 liboffloadmic/include/coi/common/COITypes_common.h
delete mode 100644 liboffloadmic/include/coi/sink/COIBuffer_sink.h
delete mode 100644 liboffloadmic/include/coi/sink/COIPipeline_sink.h
delete mode 100644 liboffloadmic/include/coi/sink/COIProcess_sink.h
delete mode 100644 liboffloadmic/include/coi/source/COIBuffer_source.h
delete mode 100644 liboffloadmic/include/coi/source/COIEngine_source.h
delete mode 100644 liboffloadmic/include/coi/source/COIEvent_source.h
delete mode 100644 liboffloadmic/include/coi/source/COIPipeline_source.h
delete mode 100644 liboffloadmic/include/coi/source/COIProcess_source.h
delete mode 100644 liboffloadmic/liboffloadmic_host.spec.in
delete mode 100644 liboffloadmic/liboffloadmic_target.spec.in
delete mode 100644 liboffloadmic/plugin/Makefile.am
delete mode 100644 liboffloadmic/plugin/Makefile.in
delete mode 100644 liboffloadmic/plugin/aclocal.m4
delete mode 100755 liboffloadmic/plugin/configure
delete mode 100644 liboffloadmic/plugin/configure.ac
delete mode 100644 liboffloadmic/plugin/libgomp-plugin-intelmic.cpp
delete mode 100644 liboffloadmic/plugin/offload_target_main.cpp
delete mode 100644 liboffloadmic/runtime/cean_util.cpp
delete mode 100644 liboffloadmic/runtime/cean_util.h
delete mode 100644 liboffloadmic/runtime/coi/coi_client.cpp
delete mode 100644 liboffloadmic/runtime/coi/coi_client.h
delete mode 100644 liboffloadmic/runtime/coi/coi_server.cpp
delete mode 100644 liboffloadmic/runtime/coi/coi_server.h
delete mode 100644 liboffloadmic/runtime/compiler_if_host.cpp
delete mode 100644 liboffloadmic/runtime/compiler_if_host.h
delete mode 100644 liboffloadmic/runtime/compiler_if_target.cpp
delete mode 100644 liboffloadmic/runtime/compiler_if_target.h
delete mode 100644 liboffloadmic/runtime/dv_util.cpp
delete mode 100644 liboffloadmic/runtime/dv_util.h
delete mode 100644 liboffloadmic/runtime/emulator/coi_common.h
delete mode 100644 liboffloadmic/runtime/emulator/coi_device.cpp
delete mode 100644 liboffloadmic/runtime/emulator/coi_device.h
delete mode 100644 liboffloadmic/runtime/emulator/coi_host.cpp
delete mode 100644 liboffloadmic/runtime/emulator/coi_host.h
delete mode 100644 liboffloadmic/runtime/emulator/coi_version_asm.h
delete mode 100644 liboffloadmic/runtime/emulator/coi_version_linker_script.map
delete mode 100644 liboffloadmic/runtime/liboffload_error.c
delete mode 100644 liboffloadmic/runtime/liboffload_error_codes.h
delete mode 100644 liboffloadmic/runtime/liboffload_msg.c
delete mode 100644 liboffloadmic/runtime/liboffload_msg.h
delete mode 100644 liboffloadmic/runtime/mic_lib.f90
delete mode 100644 liboffloadmic/runtime/offload.h
delete mode 100644 liboffloadmic/runtime/offload_common.cpp
delete mode 100644 liboffloadmic/runtime/offload_common.h
delete mode 100644 liboffloadmic/runtime/offload_engine.cpp
delete mode 100644 liboffloadmic/runtime/offload_engine.h
delete mode 100644 liboffloadmic/runtime/offload_env.cpp
delete mode 100644 liboffloadmic/runtime/offload_env.h
delete mode 100644 liboffloadmic/runtime/offload_host.cpp
delete mode 100644 liboffloadmic/runtime/offload_host.h
delete mode 100644 liboffloadmic/runtime/offload_iterator.h
delete mode 100644 liboffloadmic/runtime/offload_omp_host.cpp
delete mode 100644 liboffloadmic/runtime/offload_omp_target.cpp
delete mode 100644 liboffloadmic/runtime/offload_orsl.cpp
delete mode 100644 liboffloadmic/runtime/offload_orsl.h
delete mode 100644 liboffloadmic/runtime/offload_table.cpp
delete mode 100644 liboffloadmic/runtime/offload_table.h
delete mode 100644 liboffloadmic/runtime/offload_target.cpp
delete mode 100644 liboffloadmic/runtime/offload_target.h
delete mode 100644 liboffloadmic/runtime/offload_target_main.cpp
delete mode 100644 liboffloadmic/runtime/offload_timer.h
delete mode 100644 liboffloadmic/runtime/offload_timer_host.cpp
delete mode 100644 liboffloadmic/runtime/offload_timer_target.cpp
delete mode 100644 liboffloadmic/runtime/offload_trace.cpp
delete mode 100644 liboffloadmic/runtime/offload_trace.h
delete mode 100644 liboffloadmic/runtime/offload_util.cpp
delete mode 100644 liboffloadmic/runtime/offload_util.h
delete mode 100644 liboffloadmic/runtime/ofldbegin.cpp
delete mode 100644 liboffloadmic/runtime/ofldend.cpp
delete mode 100644 liboffloadmic/runtime/orsl-lite/include/orsl-lite.h
delete mode 100644 liboffloadmic/runtime/orsl-lite/lib/orsl-lite.c
delete mode 100644 liboffloadmic/runtime/orsl-lite/version.txt
@@ -158,9 +158,6 @@ target_modules = { module= libvtv;
bootstrap=true;
lib_path=.libs;
raw_cxx=true; };
-target_modules = { module= liboffloadmic;
- lib_path=.libs;
- extra_configure_flags='@extra_liboffloadmic_configure_flags@'; };
target_modules = { module= libssp; lib_path=.libs; };
target_modules = { module= newlib; };
target_modules = { module= libgcc; bootstrap=true; no_check=true;
@@ -603,7 +600,6 @@ dependencies = { module=all-m4; on=all-build-texinfo; };
// on libgcc and newlib/libgloss.
lang_env_dependencies = { module=libitm; cxx=true; };
lang_env_dependencies = { module=libffi; cxx=true; };
-lang_env_dependencies = { module=liboffloadmic; cxx=true; };
lang_env_dependencies = { module=newlib; no_c=true; };
lang_env_dependencies = { module=libgloss; no_c=true; };
lang_env_dependencies = { module=libgcc; no_gcc=true; no_c=true; };
@@ -625,14 +621,12 @@ dependencies = { module=all-target-libphobos; on=all-target-libbacktrace; };
dependencies = { module=all-target-libphobos; on=all-target-zlib; };
dependencies = { module=all-target-libphobos; on=all-target-libatomic; };
dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; };
-dependencies = { module=configure-target-liboffloadmic; on=configure-target-libgomp; };
dependencies = { module=configure-target-libsanitizer; on=all-target-libstdc++-v3; };
dependencies = { module=configure-target-libvtv; on=all-target-libstdc++-v3; };
// parallel_list.o and parallel_settings.o depend on omp.h, which is
// generated by the libgomp configure. Unfortunately, due to the use of
// recursive make, we can't be that specific.
dependencies = { module=all-target-libstdc++-v3; on=configure-target-libgomp; };
-dependencies = { module=all-target-liboffloadmic; on=all-target-libgomp; };
dependencies = { module=install-target-libgo; on=install-target-libatomic; };
dependencies = { module=install-target-libgfortran; on=install-target-libquadmath; };
@@ -642,8 +636,6 @@ dependencies = { module=install-target-libsanitizer; on=install-target-libstdc++
dependencies = { module=install-target-libsanitizer; on=install-target-libgcc; };
dependencies = { module=install-target-libvtv; on=install-target-libstdc++-v3; };
dependencies = { module=install-target-libvtv; on=install-target-libgcc; };
-dependencies = { module=install-target-liboffloadmic; on=install-target-libstdc++-v3; };
-dependencies = { module=install-target-liboffloadmic; on=install-target-libgcc; };
dependencies = { module=install-target-libitm; on=install-target-libgcc; };
dependencies = { module=install-target-libobjc; on=install-target-libgcc; };
dependencies = { module=install-target-libstdc++-v3; on=install-target-libgcc; };
[snipped]
[snipped]
@@ -150,7 +150,6 @@ target_libraries="target-libgcc \
target-libgloss \
target-newlib \
target-libgomp \
- target-liboffloadmic \
target-libatomic \
target-libitm \
target-libstdc++-v3 \
@@ -473,42 +472,6 @@ ENABLE_LIBSTDCXX=default)
noconfigdirs="$noconfigdirs target-libstdc++-v3"
fi]
-# If this is accelerator compiler and its target is intelmic we enable
-# target liboffloadmic by default. If this is compiler with offloading
-# for intelmic we enable host liboffloadmic by default. Otherwise
-# liboffloadmic is disabled by default.
-AC_ARG_ENABLE([liboffloadmic],
-AC_HELP_STRING([[--enable-liboffloadmic[=ARG]]],
- [build liboffloadmic @<:@ARG={no,host,target}@:>@]),
-[case "$enableval" in
- no | host | target)
- enable_liboffloadmic=$enableval ;;
- *)
- AC_MSG_ERROR([--enable-liboffloadmic=no/host/target]) ;;
-esac],
-[if test x"$enable_as_accelerator_for" != x; then
- case "${target}" in
- *-intelmic-* | *-intelmicemul-*)
- enable_liboffloadmic=target
- extra_liboffloadmic_configure_flags="--enable-liboffloadmic=target"
- ;;
- *)
- enable_liboffloadmic=no
- ;;
- esac
-else
- case "${enable_offload_targets}" in
- *-intelmic-* | *-intelmicemul-*)
- enable_liboffloadmic=host
- extra_liboffloadmic_configure_flags="--enable-liboffloadmic=host"
- ;;
- *)
- enable_liboffloadmic=no
- ;;
- esac
-fi])
-AC_SUBST(extra_liboffloadmic_configure_flags)
-
# Enable libgomp by default on hosted POSIX systems, and a few others.
if test x$enable_libgomp = x ; then
case "${target}" in
@@ -544,22 +507,6 @@ if test -d ${srcdir}/libatomic; then
fi
fi
-# Disable liboffloadmic on unsupported systems.
-if test -d ${srcdir}/liboffloadmic; then
- if test x$enable_liboffloadmic != xno; then
- AC_MSG_CHECKING([for liboffloadmic support])
- if (srcdir=${srcdir}/liboffloadmic; \
- . ${srcdir}/configure.tgt; \
- test -n "$UNSUPPORTED")
- then
- AC_MSG_RESULT([no])
- noconfigdirs="$noconfigdirs target-liboffloadmic"
- else
- AC_MSG_RESULT([yes])
- fi
- fi
-fi
-
# Disable libitm on unsupported systems.
if test -d ${srcdir}/libitm; then
if test x$enable_libitm = x; then
@@ -2328,7 +2275,7 @@ case ,${enable_languages},:${enable_objc_gc} in *,objc,*:yes|*,objc,*:auto)
fi
esac
-# Disable libitm, libsanitizer, libvtv, liboffloadmic if we're not building C++
+# Disable libitm, libsanitizer, libvtv if we're not building C++
case ,${enable_languages}, in
*,c++,*)
# Disable libitm, libsanitizer if we're not building libstdc++
@@ -2340,7 +2287,7 @@ case ,${enable_languages}, in
esac
;;
*)
- noconfigdirs="$noconfigdirs target-liboffloadmic target-libitm target-libsanitizer target-libvtv"
+ noconfigdirs="$noconfigdirs target-libitm target-libsanitizer target-libvtv"
;;
esac
@@ -67,7 +67,6 @@ default_changelog_locations = {
'libiberty',
'libitm',
'libobjc',
- 'liboffloadmic',
'libphobos',
'libquadmath',
'libsanitizer',
@@ -162,12 +162,6 @@ libsanitizer/sanitizer_common/Makefile.in: libsanitizer/sanitizer_common/Makefil
libvtv/aclocal.m4: libvtv/configure.ac libvtv/acinclude.m4
libvtv/Makefile.in: libvtv/Makefile.am libvtv/aclocal.m4
libvtv/configure: libvtv/configure.ac libvtv/aclocal.m4
-liboffloadmic/aclocal.m4: liboffloadmic/configure.ac
-liboffloadmic/Makefile.in: liboffloadmic/Makefile.am
-liboffloadmic/configure: liboffloadmic/configure.ac
-liboffloadmic/plugin/aclocal.m4: liboffloadmic/plugin/configure.ac
-liboffloadmic/plugin/Makefile.in: liboffloadmic/plugin/Makefile.am
-liboffloadmic/plugin/configure: liboffloadmic/plugin/configure.ac
libbacktrace/aclocal.m4: libbacktrace/configure.ac
libbacktrace/Makefile.in: libbacktrace/Makefile.am libbacktrace/aclocal.m4
libbacktrace/configure: libbacktrace/configure.ac libbacktrace/aclocal.m4
@@ -760,7 +760,6 @@ class GCCCmdLine (CmdLine):
self.add_dir ('libiberty')
self.add_dir ('libitm')
self.add_dir ('libobjc')
- # liboffloadmic is imported from upstream.
self.add_dir ('libphobos', LibPhobosFilter())
self.add_dir ('libquadmath')
# libsanitizer is imported from upstream.
@@ -3531,14 +3531,6 @@ case ${target} in
;;
esac
-# Build mkoffload tool
-case ${target} in
-*-intelmic-* | *-intelmicemul-*)
- tmake_file="${tmake_file} i386/t-intelmic"
- tm_file="${tm_file} i386/intelmic-offload.h"
- ;;
-esac
-
if [ "$target_has_targetcm" = "no" ]; then
c_target_objs="$c_target_objs default-c.o"
cxx_target_objs="$cxx_target_objs default-c.o"
@@ -307,10 +307,6 @@ 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)
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
[snipped]
@@ -1133,12 +1133,6 @@ if test x"$enable_as_accelerator_for" != x; then
AC_DEFINE(ACCEL_COMPILER, 1,
[Define if this compiler should be built as the offload target compiler.])
enable_as_accelerator=yes
- case "${target}" in
- *-intelmicemul-*)
- # In this case we expect offload compiler to be built as native, so we
- # need to rename the driver to avoid clashes with host's drivers.
- program_transform_name="s&^&${target}-&" ;;
- esac
sedscript="s#${target_noncanonical}#${enable_as_accelerator_for}-accel-${target_noncanonical}#"
program_transform_name=`echo $program_transform_name | sed $sedscript`
accel_dir_suffix=/accel/${target_noncanonical}
@@ -1153,10 +1147,6 @@ for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
enable_offloading=1
case "$tgt" in
- *-intelmic-* | *-intelmicemul-*)
- omp_device_property=omp-device-properties-i386
- omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device"
- ;;
amdgcn*)
omp_device_property=omp-device-properties-gcn
omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device"
@@ -2318,7 +2318,7 @@ specifying paths @var{path1}, @dots{}, @var{pathN}.
@smallexample
% @var{srcdir}/configure \
- --enable-offload-targets=x86_64-intelmicemul-linux-gnu=/path/to/x86_64/compiler,nvptx-none
+ --enable-offload-targets=amdgcn-amdhsa,nvptx-none
@end smallexample
@item --enable-offload-defaulted
@@ -116,9 +116,6 @@ The runtime support library for transactional memory.
@item libobjc
The Objective-C and Objective-C++ runtime library.
-@item liboffloadmic
-A library to allow OpenMP to Intel MIC targets.
-
@item libphobos
The D standard and runtime library. The bulk of this library is mirrored
from the @uref{https://github.com/@/dlang, master D repositories}.
@@ -229,7 +229,7 @@ enum gomp_map_kind
/* #define GOMP_DEVICE_HOST_NONSHM 3 removed. */
#define GOMP_DEVICE_NOT_HOST 4
#define GOMP_DEVICE_NVIDIA_PTX 5
-#define GOMP_DEVICE_INTEL_MIC 6
+/* #define GOMP_DEVICE_INTEL_MIC 6 removed. */
#define GOMP_DEVICE_HSA 7
#define GOMP_DEVICE_GCN 8
@@ -284,7 +284,6 @@ enum gomp_map_kind
to the plugin interface defined in libgomp/libgomp.h. */
#define GOMP_VERSION 2
#define GOMP_VERSION_NVIDIA_PTX 1
-#define GOMP_VERSION_INTEL_MIC 0
#define GOMP_VERSION_GCN 2
#define GOMP_VERSION_PACK(LIB, DEV) (((LIB) << 16) | (DEV))
[snipped]
@@ -49,7 +49,6 @@ enum offload_target_type
OFFLOAD_TARGET_TYPE_HOST = 2,
/* OFFLOAD_TARGET_TYPE_HOST_NONSHM = 3 removed. */
OFFLOAD_TARGET_TYPE_NVIDIA_PTX = 5,
- OFFLOAD_TARGET_TYPE_INTEL_MIC = 6,
OFFLOAD_TARGET_TYPE_HSA = 7,
OFFLOAD_TARGET_TYPE_GCN = 8
};
@@ -4303,10 +4303,6 @@ offloading devices (it's not clear if they should be):
@multitable @columnfractions .60 .10 .25
@headitem @code{arch} @tab @code{kind} @tab @code{isa}
-@item @code{intel_mic}, @code{x86}, @code{x86_64}, @code{i386}, @code{i486},
- @code{i586}, @code{i686}, @code{ia32}
- @tab @code{host}
- @tab See @code{-m...} flags in ``x86 Options'' (without @code{-m})
@item @code{amdgcn}, @code{gcn}
@tab @code{gpu}
@tab See @code{-march=} in ``AMD GCN Options''
@@ -59,9 +59,6 @@ if test x"$enable_offload_targets" != x; then
tgt=`echo $tgt | sed 's/=.*//'`
tgt_plugin=
case $tgt in
- *-intelmic-* | *-intelmicemul-*)
- tgt_plugin=intelmic
- ;;
nvptx*)
case "${target}" in
aarch64*-*-* | powerpc64le-*-* | x86_64-*-*)
@@ -119,18 +119,6 @@ proc libgomp_init { args } {
# Compute what needs to be put into LD_LIBRARY_PATH
set always_ld_library_path ".:${blddir}/.libs"
- # Add liboffloadmic build directory in LD_LIBRARY_PATH to support
- # Intel MIC offloading testing.
- global offload_plugins
- if { [string match "*,intelmic,*" ",$offload_plugins,"] } {
- append always_ld_library_path ":${blddir}/../liboffloadmic/.libs"
- append always_ld_library_path ":${blddir}/../liboffloadmic/plugin/.libs"
- # libstdc++ is required by liboffloadmic
- append always_ld_library_path ":${blddir}/../libstdc++-v3/src/.libs"
- # libgcc_s is required by libstdc++
- append always_ld_library_path ":${blddir}/../libgcc"
- }
-
global offload_additional_lib_paths
if { $offload_additional_lib_paths != "" } {
append always_ld_library_path "${offload_additional_lib_paths}"
@@ -313,9 +301,6 @@ proc offload_target_to_openacc_device_type { offload_target } {
disable {
return "host"
}
- *-intelmic* {
- return ""
- }
nvptx* {
return "nvidia"
}
@@ -437,28 +422,6 @@ 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 "testsuite/libgomp.c-c++-common/on_device_arch.h"
- int main ()
- {
- return !on_device_arch_intel_mic ();
- }
- } ]
-}
-
-# Return 1 if any Intel MIC offload device is available.
-proc check_effective_target_offload_device_any_intel_mic { } {
- return [check_runtime_nocache offload_device_any_intel_mic {
- #include "testsuite/libgomp.c-c++-common/on_device_arch.h"
- int main ()
- {
- return !any_device_arch_intel_mic ();
- }
- } ]
-}
-
# Return 1 if the OpenACC 'host' device type is selected.
proc check_effective_target_openacc_host_selected { } {
@@ -7,14 +7,7 @@ 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)
{
@@ -36,31 +29,3 @@ 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);
-}
-
-static int
-any_device_arch (int d)
-{
- int nd = omp_get_num_devices ();
- for (int i = 0; i < nd; ++i)
- {
- int d_cur;
- #pragma omp target device(i) map(from:d_cur)
- d_cur = device_arch ();
- if (d_cur == d)
- return 1;
- }
-
- return 0;
-}
-
-int
-any_device_arch_intel_mic ()
-{
- return any_device_arch (GOMP_DEVICE_INTEL_MIC);
-}
@@ -1,5 +1,3 @@
-/* { dg-xfail-run-if TODO { offload_device_any_intel_mic } } */
-
#include <omp.h>
#include <stdlib.h>
@@ -1,5 +1,4 @@
! { dg-do run }
-! { dg-xfail-run-if TODO { offload_device_any_intel_mic } }
program main
use omp_lib
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100755
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100755
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
--
2.35.1