https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89377

            Bug ID: 89377
           Summary: [OMPVV SOLLVE] map of class member array with no
                    modifier illegal memory access
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libgomp
          Assignee: unassigned at gcc dot gnu.org
          Reporter: josem at udel dot edu
                CC: jakub at gcc dot gnu.org
  Target Milestone: ---

Created attachment 45740
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45740&action=edit
Whole code

Hello, 

The following code has a runtime error that generates an illegal memory acceess
when calling the "modify()" method. Attached is a full version of the code.  

class A {

private:
  int h_array[N];
  int size;

public:
  A(const int s) : size(s) {
    for (int i = 0; i < N; i++)
      h_array[i] = 0;
  }

  void modify() {
#pragma omp target
    {
      for (int i = 0; i < size; ++i)
          h_array[i] += 1;
    }
  }

  int* getArray() {
    return &h_array[0];
  }
};

I've tried GCC 7.1 on a POWER system + P100, and GCC 8.2 on an Intel
architecture + K40. On POWER it hangs, on Intel it breaks with the following:

target_map_method_array.cpp.o:

libgomp: cuCtxSynchronize error: an illegal memory access was encountered

libgomp: cuMemFreeHost error: an illegal memory access was encountered

libgomp: device finalization failed


Thanks and have a great day

Reply via email to