g++ and omp simd virtual functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear all,

I am having little success with making g++ use vector (aka omp simd) calls to virtual functions. I have a base class

class vecclass_v {
 public:

#pragma omp declare simd simdlen(4)
  virtual double vectest_ob(double v1, double v2) = 0;
}

and a derived class

class vecclass : public vecclass_v {
 public:

#pragma omp declare simd simdlen(4)
  double vectest_ob(double v1, double v2);
};

I can see that g++ correctly generates instances of vectorized functions for the derived class - they are present in the object file. But calling the virtual function is not resolved to a vectorized call, but uses the scalar member instance instead, e.g.,

vecclass_v *ob = [...]
ob->vectest_ob()

The Intel compiler does support vectorized virtual functions (https://software.intel.com/en-us/articles/virtual-vector-function-supported-in-intel-c-compiler-170). Does g++ support this?

Thanks!

Marcin




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux