Hi Charles,

I know little about the threading inside MPICH at this point and even less about per object builds. Though I intend to now learn more about this, I’m CC’ing the mpich-devel mailing list in an effort to bring in the right people more quickly.

Wesley





On Jan 23, 2014, 2:03:48 PM, Archer, Charles J <charles.j.archer@intel.com> wrote:

Hi, Wesley, I’m playing around with per-obj builds, using per-object/tls configure options.

 

pamid defined it’s own critical sections so it doesn’t see this build error, but I’m trying to use default per-obj builds and I hit this:

 

mpiimplthreadpost.h:27: error: static declaration of 'MPIU_Thread_CS_enter_lockname_impl_' follows non-static declaration

 

My solution for me was to prototype the functions in  src/include/mpiimplthread.h:

 

diff --git a/src/include/mpiimplthread.h b/src/include/mpiimplthread.h

index f0141c6..c9af705 100644

--- a/src/include/mpiimplthread.h

+++ b/src/include/mpiimplthread.h

@@ -1039,5 +1039,20 @@ do {                                           \

#define MPIU_THREAD_MPI_OBJ_FINALIZE(objptr_) do {} while (0)

#endif

+

+#if 0

+static MPIU_DBG_INLINE_KEYWORD void

+MPIU_Thread_CS_enter_lockname_impl_(enum MPIU_Nest_mutexes kind,

+                                    const char *lockname,

+                                    MPID_Thread_mutex_t *mutex);

+

+

+static MPIU_DBG_INLINE_KEYWORD void

+MPIU_Thread_CS_exit_lockname_impl_(enum MPIU_Nest_mutexes kind,

+                                   const char *lockname,

+                                   MPID_Thread_mutex_t *mutex);

+#endif

+

+

#endif /* !defined(MPIIMPLTHREAD_H_INCLUDED) */

 

….

 

Can you guys add in the prototypes?  This patch isn’t complete, I wanted to talk to you first.

Is this the right solution?

 

 

Also related (reported by Bill):

https://trac.mpich.org/projects/mpich/ticket/1937