sst-elements
sst-elements copied to clipboard
[Ember] SST-Elements Build failed with OTF-2
New Issue for sst-elements
1 - Detailed description of problem or enhancement Compilation Error while building SST-elements with OTF-2
2 - Describe how to reproduce Inside SST ELEMENTS directory (using SST 12.1.0) ./configure --prefix=$SST_ELEMENTS_HOME --with-sst-core=$SST_CORE_HOME --with-otf2=<path_to_otf2> ; make all
3 - What Operating system(s) and versions Ubuntu 22.04.2 LTS
4 - What version of external libraries (Boost, MPI) OpenMPI-4.0.5
I can see that SST-elements was able to find OTF2-library (image attached). Looking at the compilation error I'm assuming this is due to type casting void pointer to EmberOTF2Generator* . But the code looks fine.
Should I change the code from
EmberOTF2Generator* gen = (EmberOTF2Generator*) userData;
to
EmberOTF2Generator* gen = static_cast<EmberOTF2Generator*> userData;
Here is the error log:
In file included from mpi/motifs/emberotf2.h:22,
from mpi/motifs/emberotf2.cc:24:
mpi/motifs/emberotf2.cc: In function ‘OTF2_CallbackCode EmberOTF2MPISend(OTF2_LocationRef, OTF2_TimeStamp, void*, OTF2_AttributeList*, uint32_t, OTF2_CommRef, uint32_t, uint64_t)’:
./mpi/embermpigen.h:32:21: error: ‘SST::Ember::EmberMpiLib& SST::Ember::EmberMessagePassingGenerator::mpi()’ is protected within this context
32 | #define enQ_send mpi().send
mpi/motifs/emberotf2.cc:97:14: note: in expansion of macro ‘enQ_send’
97 | gen->enQ_send( *(gen->getEventQueue()), 0, msgLen, gen->extractDataTypeFromAttributeList(attributes), receiver, tag, GroupWorld );
| ^~~~~~~~
./mpi/embermpigen.h:80:22: note: declared protected here
80 | EmberMpiLib& mpi() { return *m_mpi; }
| ^~~
mpi/motifs/emberotf2.cc: In function ‘OTF2_CallbackCode EmberOTF2MPIISend(OTF2_LocationRef, OTF2_TimeStamp, void*, OTF2_AttributeList*, uint32_t, OTF2_CommRef, uint32_t, uint64_t, uint64_t)’:
./mpi/embermpigen.h:34:22: error: ‘SST::Ember::EmberMpiLib& SST::Ember::EmberMessagePassingGenerator::mpi()’ is protected within this context
34 | #define enQ_isend mpi().isend
mpi/motifs/emberotf2.cc:116:14: note: in expansion of macro ‘enQ_isend’
116 | gen->enQ_isend( *(gen->getEventQueue()), 0, msgLen, gen->extractDataTypeFromAttributeList(attributes), receiver, tag, GroupWorld, newReq );
| ^~~~~~~~~
./mpi/embermpigen.h:80:22: note: declared protected here
80 | EmberMpiLib& mpi() { return *m_mpi; }
| ^~~
mpi/motifs/emberotf2.cc: In function ‘OTF2_CallbackCode EmberOTF2MPIISendComplete(OTF2_LocationRef, OTF2_TimeStamp, void*, OTF2_AttributeList*, uint64_t)’:
./mpi/embermpigen.h:39:21: error: ‘SST::Ember::EmberMpiLib& SST::Ember::EmberMessagePassingGenerator::mpi()’ is protected within this context
39 | #define enQ_wait mpi().wait
mpi/motifs/emberotf2.cc:141:14: note: in expansion of macro ‘enQ_wait’
141 | gen->enQ_wait( *(gen->getEventQueue()), checkReq->second, NULL );
| ^~~~~~~~
./mpi/embermpigen.h:80:22: note: declared protected here
80 | EmberMpiLib& mpi() { return *m_mpi; }
| ^~~
mpi/motifs/emberotf2.cc: In function ‘OTF2_CallbackCode EmberOTF2MPIRecv(OTF2_LocationRef, OTF2_TimeStamp, void*, OTF2_AttributeList*, uint32_t, OTF2_CommRef, uint32_t, uint64_t)’:
./mpi/embermpigen.h:33:21: error: ‘SST::Ember::EmberMpiLib& SST::Ember::EmberMessagePassingGenerator::mpi()’ is protected within this context
33 | #define enQ_recv mpi().recv
mpi/motifs/emberotf2.cc:186:14: note: in expansion of macro ‘enQ_recv’
186 | gen->enQ_recv( *(gen->getEventQueue()), 0, msgLen, gen->extractDataTypeFromAttributeList(attributes), sender, tag, GroupWorld );
| ^~~~~~~~
./mpi/embermpigen.h:80:22: note: declared protected here
80 | EmberMpiLib& mpi() { return *m_mpi; }
| ^~~
mpi/motifs/emberotf2.cc: In function ‘OTF2_CallbackCode EmberOTF2MPIIRecv(OTF2_LocationRef, OTF2_TimeStamp, void*, OTF2_AttributeList*, uint32_t, OTF2_CommRef, uint32_t, uint64_t, uint64_t)’:
./mpi/embermpigen.h:33:21: error: ‘SST::Ember::EmberMpiLib& SST::Ember::EmberMessagePassingGenerator::mpi()’ is protected within this context
33 | #define enQ_recv mpi().recv
mpi/motifs/emberotf2.cc:218:14: note: in expansion of macro ‘enQ_recv’
218 | gen->enQ_recv( *(gen->getEventQueue()), 0, msgLen, gen->extractDataTypeFromAttributeList(attributes), sender, tag, GroupWorld );
| ^~~~~~~~
./mpi/embermpigen.h:80:22: note: declared protected here
80 | EmberMpiLib& mpi() { return *m_mpi; }
| ^~~
mpi/motifs/emberotf2.cc: In function ‘OTF2_CallbackCode EmberOTF2MPICollectiveEnd(OTF2_LocationRef, OTF2_TimeStamp, void*, OTF2_AttributeList*, OTF2_CollectiveOp, OTF2_CommRef, uint32_t, uint64_t, uint64_t)’:
./mpi/embermpigen.h:45:24: error: ‘SST::Ember::EmberMpiLib& SST::Ember::EmberMessagePassingGenerator::mpi()’ is protected within this context
45 | #define enQ_barrier mpi().barrier
mpi/motifs/emberotf2.cc:250:22: note: in expansion of macro ‘enQ_barrier’
250 | gen->enQ_barrier( *(gen->getEventQueue()), GroupWorld );
| ^~~~~~~~~~~
./mpi/embermpigen.h:80:22: note: declared protected here
80 | EmberMpiLib& mpi() { return *m_mpi; }
| ^~~
./mpi/embermpigen.h:46:22: error: ‘SST::Ember::EmberMpiLib& SST::Ember::EmberMessagePassingGenerator::mpi()’ is protected within this context
46 | #define enQ_bcast mpi().bcast
mpi/motifs/emberotf2.cc:255:22: note: in expansion of macro ‘enQ_bcast’
255 | gen->enQ_bcast( *(gen->getEventQueue()), 0, sizeSent, CHAR, static_cast<int>(root),
| ^~~~~~~~~
./mpi/embermpigen.h:80:22: note: declared protected here
80 | EmberMpiLib& mpi() { return *m_mpi; }
| ^~~
./mpi/embermpigen.h:50:26: error: ‘SST::Ember::EmberMpiLib& SST::Ember::EmberMessagePassingGenerator::mpi()’ is protected within this context
50 | #define enQ_allreduce mpi().allreduce
mpi/motifs/emberotf2.cc:262:22: note: in expansion of macro ‘enQ_allreduce’
262 | gen->enQ_allreduce( *(gen->getEventQueue()), 0, 0, sizeSent, CHAR, SUM, GroupWorld );
| ^~~~~~~~~~~~~
./mpi/embermpigen.h:80:22: note: declared protected here
80 | EmberMpiLib& mpi() { return *m_mpi; }
| ^~~
./mpi/embermpigen.h:49:23: error: ‘SST::Ember::EmberMpiLib& SST::Ember::EmberMessagePassingGenerator::mpi()’ is protected within this context
49 | #define enQ_reduce mpi().reduce
mpi/motifs/emberotf2.cc:268:22: note: in expansion of macro ‘enQ_reduce’
268 | gen->enQ_reduce( *(gen->getEventQueue()), 0, 0, sizeSent, CHAR, SUM, static_cast<int>(root),
| ^~~~~~~~~~
./mpi/embermpigen.h:80:22: note: declared protected here
80 | EmberMpiLib& mpi() { return *m_mpi; }
| ^~~
mpi/motifs/emberotf2.cc: At global scope:
mpi/motifs/emberotf2.cc:291:39: error: expected constructor, destructor, or type conversion before ‘(’ token
291 | EmberOTF2Generator::EmberOTF2Generator(SST::ComponentId_T id, Params& params)