I’ve just picked up 14.6 and have been fighting with it all day for one reason or another. I’ve resolved my issues such that I’m able to compile but with a caveat. (targeting 64-bit Windows)
I can submit source code over e-mail if desired.
Your release notes state (pgirn146.pdf):
“C++ programs on Win64 that are compiled with the option –tp x64 fail when using PGI Unified Binaries. The –tp x64 switch is not yet supported on the Windows platform for C++.”
I have test code I can compile and execute with both situations taken from one of your helpfile examples:
#include<windows.h>
int main() {
#pragma global novector
float a[100][100], b[100][100],c[100][100];
int time, maxtime, n, i, j;
maxtime=10;
n=100;
for (time=0; time<maxtime;time++)
for (j=0; j<n;j++)
for (i=0; i<n;i++)
c_[j] = a[j] + b[j];
};
C:\Temp>pgcpp test.cpp -tp k8-64,k8-64e,sandybridge-64
C:\Temp>pgcpp test.cpp -tp x64
However, I have real code that fails to build a unified binary with either form of the expression but will succeed with just a single target. The two command lines issuing errors are as follows and the linker errors (multiply defined symbols) are pasted following.
“C:\Program Files\PGI\win64\14.6\bin\pgcpp.exe” “c:\analysis\surfaceextraction2\dim[3Dv] nv[1v] or[iso] parS[omp] out[incr] bool[bool] pvar[cref] nums[64] str[SoA] opt[O1] compiler[PG] preprocessor[ILI] typ[arr] id[thread]\SurfaceExtraction2.cpp” -o “c:\analysis\surfaceextraction2\SurfaceExtraction2__dim[3Dv] nv[1v] or[iso] parS[omp] out[incr] bool[bool] pvar[cref] nums[64] str[SoA] opt[O1] compiler[PG] preprocessor[ILI] typ[arr] id[thread].exe” -D “PGI” --no_exceptions -silent -w --no_exceptions -mp -D “AUTOCONFIG” -m64 -O1 -tp k8-64,k8-64e,sandybridge-64
“C:\Program Files\PGI\win64\14.6\bin\pgcpp.exe” “c:\analysis\surfaceextraction2\dim[3Dv] nv[1v] or[iso] parS[omp] out[incr] bool[bool] pvar[cref] nums[64] str[SoA] opt[O1] compiler[PG] preprocessor[ILI] typ[arr] id[thread]\SurfaceExtraction2.cpp” -o “c:\analysis\surfaceextraction2\SurfaceExtraction2__dim[3Dv] nv[1v] or[iso] parS[omp] out[incr] bool[bool] pvar[cref] nums[64] str[SoA] opt[O1] compiler[PG] preprocessor[ILI] typ[arr] id[thread].exe” -D “PGI” --no_exceptions -silent -w --no_exceptions -mp -D “AUTOCONFIG” -m64 -O1 -tp x64
libstdmp.lib(time_facets.obj) : error LNK2005: allocate__Q2_3std37__node_alloc__
tm__17_XCbL_1_1XCiL_1_0SFUL_Pv already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(time_facets.obj) : error LNK2005: deallocate__Q2_3std37__node_alloc
__tm__17_XCbL_1_1XCiL_1_0SFPvUL_v already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(time_facets.obj) : error LNK2005: copy_trivial__3stdFPCvT1Pv alre
ady defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(time_facets.obj) : error LNK2005: max__tm__3_UL__3stdFRCZ1ZT1_RCZ1Z
already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(locale_impl.obj) : error LNK2005: allocate__Q2_3std37__node_alloc
tm__17_XCbL_1_1XCiL_1_0SFUL_Pv already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(locale_impl.obj) : error LNK2005: deallocate__Q2_3std37__node_alloc
__tm__17_XCbL_1_1XCiL_1_0SFPvUL_v already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(locale_impl.obj) : error LNK2005: _copy_trivial__3stdFPCvT1Pv alre
ady defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(locale_impl.obj) : error LNK2005: max__tm__3_UL__3stdFRCZ1ZT1_RCZ1Z
already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(dll_main.obj) : error LNK2005: allocate__Q2_3std37__node_alloc__tm
_17_XCbL_1_1XCiL_1_0SFUL_Pv already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(dll_main.obj) : error LNK2005: deallocate__Q2_3std37__node_alloc__t
m__17_XCbL_1_1XCiL_1_0SFPvUL_v already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(dll_main.obj) : error LNK2005: copy_trivial__3stdFPCvT1Pv already
defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(dll_main.obj) : error LNK2005: max__tm__3_UL__3stdFRCZ1ZT1_RCZ1Z al
ready defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(num_get.obj) : error LNK2005: allocate__Q2_3std37__node_alloc__tm
17_XCbL_1_1XCiL_1_0SFUL_Pv already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(num_get.obj) : error LNK2005: deallocate__Q2_3std37__node_alloc__tm
__17_XCbL_1_1XCiL_1_0SFPvUL_v already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(num_get.obj) : error LNK2005: copy_trivial__3stdFPCvT1Pv already
defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(num_get.obj) : error LNK2005: max__tm__3_UL__3stdFRCZ1ZT1_RCZ1Z alr
eady defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(num_put.obj) : error LNK2005: allocate__Q2_3std37__node_alloc__tm
17_XCbL_1_1XCiL_1_0SFUL_Pv already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(num_put.obj) : error LNK2005: deallocate__Q2_3std37__node_alloc__tm
__17_XCbL_1_1XCiL_1_0SFPvUL_v already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(num_put.obj) : error LNK2005: __copy_trivial__3stdFPCvT1Pv already
defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(num_put.obj) : error LNK2005: max__tm__3_UL__3stdFRCZ1ZT1_RCZ1Z alr
eady defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(ctype.obj) : error LNK2005: _copy_trivial__3stdFPCvT1Pv already de
fined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(monetary.obj) : error LNK2005: allocate__Q2_3std37__node_alloc__tm
_17_XCbL_1_1XCiL_1_0SFUL_Pv already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(monetary.obj) : error LNK2005: deallocate__Q2_3std37__node_alloc__t
m__17_XCbL_1_1XCiL_1_0SFPvUL_v already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(monetary.obj) : error LNK2005: _copy_trivial__3stdFPCvT1Pv already
defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(monetary.obj) : error LNK2005: max__tm__3_UL__3stdFRCZ1ZT1_RCZ1Z al
ready defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(messages.obj) : error LNK2005: allocate__Q2_3std37__node_alloc__tm
_17_XCbL_1_1XCiL_1_0SFUL_Pv already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(messages.obj) : error LNK2005: deallocate__Q2_3std37__node_alloc__t
m__17_XCbL_1_1XCiL_1_0SFPvUL_v already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(messages.obj) : error LNK2005: copy_trivial__3stdFPCvT1Pv already
defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(collate.obj) : error LNK2005: allocate__Q2_3std37__node_alloc__tm
17_XCbL_1_1XCiL_1_0SFUL_Pv already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(collate.obj) : error LNK2005: deallocate__Q2_3std37__node_alloc__tm
__17_XCbL_1_1XCiL_1_0SFPvUL_v already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(collate.obj) : error LNK2005: _copy_trivial__3stdFPCvT1Pv already
defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(numpunct.obj) : error LNK2005: allocate__Q2_3std37__node_alloc__tm
_17_XCbL_1_1XCiL_1_0SFUL_Pv already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(numpunct.obj) : error LNK2005: deallocate__Q2_3std37__node_alloc__t
m__17_XCbL_1_1XCiL_1_0SFPvUL_v already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(numpunct.obj) : error LNK2005: __copy_trivial__3stdFPCvT1Pv already
defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(num_get_float.obj) : error LNK2005: min__tm__2_i__3stdFRCZ1ZT1_RCZ1
Z already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(num_put_float.obj) : error LNK2005: allocate__Q2_3std37__node_alloc
__tm__17_XCbL_1_1XCiL_1_0SFUL_Pv already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(num_put_float.obj) : error LNK2005: deallocate__Q2_3std37__node_all
oc__tm__17_XCbL_1_1XCiL_1_0SFPvUL_v already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(num_put_float.obj) : error LNK2005: _copy_trivial__3stdFPCvT1Pv al
ready defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(num_put_float.obj) : error LNK2005: min__tm__2_i__3stdFRCZ1ZT1_RCZ1
Z already defined in pgcpp5dwuibcUGMUjsQ.obj
libstdmp.lib(num_put_float.obj) : error LNK2005: max__tm__3_UL__3stdFRCZ1ZT1_RCZ
1Z already defined in pgcpp5dwuibcUGMUjsQ.obj
C:\Users\sgodfrey\AppData\Local\Temp/pgcpp6eguibsEMDfsdd.exe : fatal error LNK11
69: one or more multiply defined symbols found