pointersintelintel-oneapiintel-cloud

On running the code in Intel Devcloud, it is throwing runtime error


I was trying to run this code but while compiling in intel devcloud using these commands:

icpx -qopenmp -fopenmp-targets=spir64 openmp_target_offload_clause_ordering.cpp
export OMP_TARGET_OFFLOAD=MANDATORY

it is showing runtime error.

#include <stdio.h>
int main() {
  double *V = reinterpret_cast<double*>(0xdeadbeef);
  printf("pointer=%p\n", V);
  #pragma omp target parallel for simd is_device_ptr(V) if(true)
  for(int i = 0; i < 1; ++i) {
    printf("pointer=%p\n", V);
  }
  #pragma omp target parallel for simd if(true) is_device_ptr(V)
  for(int i = 0; i < 1; ++i) {
    printf("pointer=%p\n", V);
  }
  return 100;
}


Solution

  • The device pointer you are entering is invalid. Replace (0xdeadbeef) with (omp_target_alloc(size, 0)) in the first line of your main function as follows:

    double ptr = reinterpret_cast<double>(omp_target_alloc(size, 0));

    Hope this helps!