On Fri, Feb 13, 2015 at 5:10 AM, <[email protected]> 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
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to