Add rudimentary pcloud dumper and meshing with OFM & GP3

The OFM algo runs in fractions of a millisecond. GP3 runs in
fractions of a second. I think if we can get more input data to
the OFM or something akin to it, we will have a winner.
This commit is contained in:
2026-04-03 21:23:29 -04:00
parent 7435c6e393
commit 156da322b6
7 changed files with 1035 additions and 0 deletions
@@ -102,6 +102,7 @@ averageIntensityBuffer(
nDgramsPerStagingBufferFrame),
averageIntensityBufferMlockPinner(
averageIntensityBuffer.makeMlockPinner()),
pcloudFrameDumper(deviceAttachmentSpec),
tempStimulusFrameMem(0),
tempStimulusFrame(
FrameAssemblyDesc::SlotDesc{
@@ -154,6 +155,8 @@ void PcloudStimulusProducer::start()
std::cout << __func__ << ": Starting PcloudStimulusProducer for device "
<< device->discoveredDevice.deviceIdentifier << std::endl;
pcloudFrameDumper.prepareForRun();
// Call ioUringAssemblyEngine setup() as the first step
if (!ioUringAssemblyEngine.setup())
{
@@ -513,6 +516,23 @@ public:
std::cerr << __func__ << ": Failed to compact and collate frame" << std::endl;
} else
{
lock.unlockPrematurely();
if (pcloudProducer.pcloudFrameDumper.isEnabled())
{
try
{
pcloudProducer.pcloudFrameDumper.dumpProducedFrame(
*pcloudProducer.device,
pcloudProducer.collationBuffer,
context->frameAssemblyResult);
}
catch (const std::exception& e)
{
std::cerr << __func__ << ": Failed to dump pcloud frame: "
<< e.what() << std::endl;
}
}
#if 0
// Print execution durations
auto assemblyDuration = pcloudProducer.ioUringAssemblyEngine.getAssemblyDuration();