[Openmp-dev] Libomptarget fatal error 1: failure of target construct while offloading is mandatory

Itaru Kitayama via Openmp-dev openmp-dev at lists.llvm.org
Mon Sep 30 17:13:26 PDT 2019


Ravi thanks for the confirmation.

On Tue, Oct 1, 2019 at 1:05 AM Narayanaswamy, Ravi <
ravi.narayanaswamy at intel.com> wrote:

> Support for virtual functions will be in 5.1
>
> Ravi
>
>
>
>
>
> *From:* Openmp-dev [mailto:openmp-dev-bounces at lists.llvm.org] *On Behalf
> Of *Alexey Bataev via Openmp-dev
> *Sent:* Friday, September 27, 2019 7:14 PM
> *To:* Itaru Kitayama <itaru.kitayama at gmail.com>
> *Cc:* openmp-dev <openmp-dev at lists.llvm.org>
> *Subject:* Re: [Openmp-dev] Libomptarget fatal error 1: failure of target
> construct while offloading is mandatory
>
>
>
> 1. If the is trivial, it is guaranteed to be offloaded correctly.
>
> 2. No, 5.0 does not add anything like this.
>
> Best regards,
>
> Alexey Bataev
>
>
>
> 27 сент. 2019 г., в 21:59, Itaru Kitayama <itaru.kitayama at gmail.com>
> написал(а):
>
> 
>
> Do you mean, depending the type it might be offloaded correctly? Is this
> situation improved once 5.0 API is supported in trunk?
>
>
>
> On Sat, Sep 28, 2019 at 10:22 Alexey Bataev <a.bataev at hotmail.com> wrote:
>
> Non trivial types are not guaranteed to be offloaded correctly.
>
> Best regards,
> Alexey Bataev
>
> > 27 сент. 2019 г., в 21:17, Itaru Kitayama via Openmp-dev <
> openmp-dev at lists.llvm.org> написал(а):
> >
> > 
> > Hi,
> > This simple C++ program:
> >
> > #include <iostream>
> >
> > class Abstract {
> > public:
> >         virtual int f() = 0;
> > };
> > class Derived : public Abstract {
> >         public:
> >         int f() { return 1; };
> > };
> >
> > int main() {
> >         Abstract *p[10];
> >         for (int i=0;i<10;i++) {
> >             p[i] = new Derived;
> >         }
> >         int sum=0;
> > #pragma omp target parallel for map(p[:10]) reduction(+: sum)
> >         for (int i=0;i<10;i++) {
> >                 sum += p[i]->f();
> >         }
> >         std::cout << "sum " << sum << std::endl;
> > }
> >
> > can be built with the offloading flags of Clang and runs fine on host,
> but on
> > the device it crashes at runtime leaving the error message:
> >
> > ==60659== NVPROF is profiling process 60659, command: ./a.out
> > Libomptarget fatal error 1: failure of target construct while offloading
> is mandatory
> > ==60659== Profiling application: ./a.out
> > ==60659== Warning: 5 records have invalid timestamps due to insufficient
> device buffer space. You can configure the buffer space using the option
> --device-buffer-size.
> > ==60659== Warning: 4 records have invalid timestamps due to insufficient
> semaphore pool size. You can configure the pool size using the option
> --profiling-semaphore-pool-size.
> > ==60659== Profiling result:
> > No kernels were profiled.
> >
> > Does this just indicate the limitation of the current trunk Clang
> implementation?
> >
> > _______________________________________________
> > Openmp-dev mailing list
> > Openmp-dev at lists.llvm.org
> > https://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/openmp-dev/attachments/20191001/2c704eda/attachment.html>


More information about the Openmp-dev mailing list