This might be a naive question. I installed the pgi compiler with open acc and it works with some simple examples ( gpu started well, no errors). Now I want to compile one of my programs that use boost and intel IPP, the compiler reports several errors saying that some buill-in boost functions are undefined. Do I need to recompile all my libraries (boost, ipp) with pgi compiler?
If the kernel code that I have calls boost and interl ipp, is the pgi compiler able to generate kernel code?
C++ is difficult since most compilers are not interoperable. Hence, if your C++ libraries are built with one compiler, it most likely wont link with another (due to name mangling, STL versions, and exception handling). In our up coming PGI version 13.0 C++ Linux compiler we are adding g++ compatibility, but I don’t if this will help with Intel C++ compiled code.
My advice would be to write your OpenACC code in C or Fortran and then call these routines from your main C++ program. C doesn’t have the interoperability issues that C++ has. See Chapter 13 of the PGI User’s Guide for help on inter-language calling.
Also, you’ll need to add the PGI runtime libraries to your link. Though the exact library names are going to change in 13.0. To get the current libraries that we pass to the linker, run the command “pgcc -acc -dryrun x.o”.
Hope this helps,