From: John P. <jwp...@gm...> - 2015-02-13 15:08:54
|
On Fri, Feb 13, 2015 at 5:10 AM, <bar...@ar...> wrote: > > > Hello, > > I am using PGI compilers 15.1 on a Ubuntu 14.04 system. > I would like to install the MOOSE framework. In order to do so I am first > trying to install libMesh. > The configuration and compilation steps seem to run fine and they finish. > But when typing 'make check' there is an error at a certain step. > When I compile with METHODS='opt oprof dbg' I get the following error in > make check: > make[3]: `example-dbg' is up to date. > make[3]: `example-opt' is up to date. > CXXLD example-oprof > ../../../.libs/libmesh_oprof.a(libmesh_oprof_la-tree_node.o): In function > `.st50665': > tree_node.C:(.gnu.linkonce.r._ZNK7libMesh8TreeNodeILj2EE19create_bounding_boxEj[_ZNK7libMesh8TreeNodeILj2EE19create_bounding_boxEj]+0x0): > undefined reference to `.LB14852' > > make[3]: *** [example-oprof] Error 2 > This error appears to be related to explicit template instantiation of the TreeNode<T> class, create_bounding_box() is one of its member functions. According to demangler.com, specifically the binary and quad-tree instantiations: > libMesh::TreeNode<2u>::create_bounding_box(unsigned int) const > libMesh::TreeNode<4u>::create_bounding_box(unsigned int) const This is a fairly straightforward use of explicit instantiation, so I think the code is correct. The only real difference between opt and oprof modes is that, in oprof mode, we pass "-g -fno-omit-frame-pointer" to the compiler. As per your email to the moose-users list, you mentioned changing this flag: > I have to change the flags '-fno-omit-frame-pointer' to the PGI-flag '-Mnoframe' Did you manually remove -fno-omit-frame-pointer from the flags in opt mode as well as adding -Mnoframe? When I compile with METHODS='opt dbg' I get the following message in make > check: > *************************************************************** > * Running Example miscellaneous_ex8: > * example-opt > *************************************************************** > > Generating 100 point cloud...done > bounding box is > (x,y,z)=( 0.11, 0.34, 0.19) > (x,y,z)=( 9.96, 9.65, 9.96) > bounding box is > (x,y,z)=( 0.11, 0.34, 0.19) > (x,y,z)=( 9.96, 9.65, 9.96) > r_bbox = 16.7078 > rbf(r_bbox/2) = 0.1875 > [0]PETSC ERROR: ------------------------------------------------------------ > ------------ > [0]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation, > probably memory access out of range This is the nanoflann example. nanoflann is a heavily-templated contrib library. I don't know too much about it, but we've never had issues with this example on any other compilers so I again have to suspect PGI. As Paul mentioned, we would need a stack trace in debug mode from the same example to be able to say more... -- John |