You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hello, I am trying to update an external Component called sstStonne from SST 8.0.0 to SST 13.1.0. It's a simple Component which only connects to memory, thus I am updating from the SimpleMem interface to the StandardMem interface. However I am facing some problems and cannot figure out where the error is.
sstStonne requires a SubComponent, named memory, which implements the SST::Interfaces::StandardMem interface. The code compiles properly and is added to SST correctly. At execution time, it successfully loads the memory SubComponent and even gets to send a memory initialization request through StandardMem::sendUntimedData at the init() phase without getting any error. However, I am getting the next fatal error when trying to call StandardMem::send() in the 1st cycle of simulation:
FATAL: stonne:memory (MemLink) cannot find a destination for address 0
I guess I am missing some extra configuration, or maybe I am not using StandardMem properly, but I didn't find any further information about this in the documentation and the examples are working for me.
I attach further information next, hope it can be helpful. Thanks in advance!
sstStonne.h (main Component)
classsstStonne : publicSST::Component {
public:
{...}
SST_ELI_DOCUMENT_PORTS()
SST_ELI_DOCUMENT_SUBCOMPONENT_SLOTS({"memory", "The memory interface to use (e.g., interface to caches)", "SST::Interfaces::StandardMem"})
}
SstMem.h (ComponentExtension from sstStonne)
template <typename T>
classSstMem : publicMemory<T>, private ComponentExtension {
public:SstMem(SST::ComponentId_t id, SST::Output* output, SST::TimeConverter* timeConverter)
: ComponentExtension(id),
m_output(output),
m_requestHandler(output, *this),
m_memInterface(loadUserSubComponent<SST::Interfaces::StandardMem>(
"memory", SST::ComponentInfo::SHARE_NONE, timeConverter, new SST::Interfaces::StandardMem::Handler<SstMem<T>>(this, &SstMem<T>::handleEvent))) {
if (!m_memInterface) {
m_output->fatal(CALL_INFO, -1, "Unable to load memory interface. Make sure you attach a SubComponent to the STONNE Component called \"memory\"\n");
}
}
voidinit(uint32_t phase, std::uint64_t startAddr, const std::vector<std::uint8_t>& data) noexcept {
if (phase != 0) return;
m_memInterface->init(phase);
auto initMemory = newSST::Interfaces::StandardMem::Write(startAddr, data.size(), data);
m_memInterface->sendUntimedData(initMemory);
}
voidload(uint64_t addr, DataPackage* pck) noexceptoverride {
auto request = newSST::Interfaces::StandardMem::Read(addr, sizeof(T));
m_memInterface->send(request);
}
{...}
private:// SST Memory Interface
SST::Interfaces::StandardMem* m_memInterface;
// SST Output
SST::Output* m_output;
}
sstStonne_test.py (SST API, based on testStdMem.py example ; all connections seem to be configured properly)
I believe the issue may be that the memHierarchy.standardMem subcomponent is not getting fully initialized because m_memInterface->init(phase); is not called in every phase of init(). Try switching the order of that line and the if (phase != 0) return; above it in SstMem's init() function.
Thanks for your answer! If I remember well, I already tried using both ways but I got the same results. But anyway, we ended up doing some workaround and made it work with a previous SST version. I will reopen this issue again if we face this problem once more in the future
Hello, I am trying to update an external Component called
sstStonne
from SST 8.0.0 to SST 13.1.0. It's a simple Component which only connects to memory, thus I am updating from theSimpleMem
interface to theStandardMem
interface. However I am facing some problems and cannot figure out where the error is.sstStonne
requires a SubComponent, namedmemory
, which implements theSST::Interfaces::StandardMem
interface. The code compiles properly and is added to SST correctly. At execution time, it successfully loads thememory
SubComponent and even gets to send a memory initialization request throughStandardMem::sendUntimedData
at theinit()
phase without getting any error. However, I am getting the next fatal error when trying to callStandardMem::send()
in the 1st cycle of simulation:I guess I am missing some extra configuration, or maybe I am not using
StandardMem
properly, but I didn't find any further information about this in the documentation and the examples are working for me.I attach further information next, hope it can be helpful. Thanks in advance!
sstStonne.h
(main Component)SstMem.h
(ComponentExtension fromsstStonne
)sstStonne_test.py
(SST API, based ontestStdMem.py
example ; all connections seem to be configured properly)The text was updated successfully, but these errors were encountered: