OClCollMeshEngn: Produce ambience count; set postrin threshold
We modify the semantics/meaning of the ambience stim feature. It now represents the number of frames whose average intensity is below the ambienceLowVal. We can now implement the postrin as the event wherein the number of frames whose intensity <= ambienceLowVal exceeds postrin-interest-threshold.
This commit is contained in:
@@ -55,13 +55,23 @@ static StagingBuffer::IOEngineConstraints openClIntensityInputConstraints(
|
||||
static_cast<size_t>(sysconf(_SC_PAGE_SIZE)));
|
||||
|
||||
static StagingBuffer::IOEngineConstraints openClAmbienceInputConstraints(
|
||||
// slotStartAlignmentByteVal (page alignment)
|
||||
static_cast<size_t>(sysconf(_SC_PAGE_SIZE)),
|
||||
// slotPadToNBytes: This is dynamically calculated based on the return mode.
|
||||
// slotStartAlignmentByteVal (sizeof(void*))
|
||||
sizeof(void*),
|
||||
// slotPadToNBytes (sizeof(PcloudAmbienceStimulusValue))
|
||||
sizeof(PcloudAmbienceStencil::PcloudAmbienceStimulusValue),
|
||||
// frameStartAlignmentByteVal (page alignment)
|
||||
static_cast<size_t>(sysconf(_SC_PAGE_SIZE)),
|
||||
// framePadToNBytes (pointer size)
|
||||
// framePadToNBytes (page alignment)
|
||||
static_cast<size_t>(sysconf(_SC_PAGE_SIZE)));
|
||||
|
||||
static StagingBuffer::IOEngineConstraints openClAverageIntensityConstraints(
|
||||
// slotStartAlignmentByteVal (sizeof(float))
|
||||
sizeof(float),
|
||||
// slotPadToNBytes (sizeof(float))
|
||||
sizeof(float),
|
||||
// frameStartAlignmentByteVal (page alignment)
|
||||
static_cast<size_t>(sysconf(_SC_PAGE_SIZE)),
|
||||
// framePadToNBytes (page alignment)
|
||||
static_cast<size_t>(sysconf(_SC_PAGE_SIZE)));
|
||||
|
||||
PcloudStimulusProducer::PcloudStimulusProducer(
|
||||
@@ -85,6 +95,10 @@ collationBuffer(
|
||||
StagingBuffer::IOEngineConstraints::openClInputConstraints,
|
||||
StagingBuffer::IOEngineConstraints::openClInputConstraints,
|
||||
nDgramsPerStagingBufferFrame),
|
||||
averageIntensityBuffer(
|
||||
openClAverageIntensityConstraints,
|
||||
openClAverageIntensityConstraints,
|
||||
nDgramsPerStagingBufferFrame),
|
||||
tempStimulusFrameMem(0),
|
||||
tempStimulusFrame(
|
||||
FrameAssemblyDesc::SlotDesc{
|
||||
@@ -310,19 +324,6 @@ std::cout << __func__ << ": $$$$$$$ Created PcloudIntensityStimulusBuffer" << st
|
||||
}
|
||||
else if (qualeIfaceApi == "pcloudAmbience")
|
||||
{
|
||||
// Parse ambienceHighVal from qualeIfaceApiParams (temporary, undocumented)
|
||||
const std::vector<std::string> ambienceHighValParamNames = {
|
||||
"negtrin-intolerable-threshold",
|
||||
"negtrin-intolerable",
|
||||
"intolerable-threshold",
|
||||
"intolerable"
|
||||
};
|
||||
int ambienceHighValInt = device::DeviceAttachmentSpec
|
||||
::parseOptionalParamAsIntWithSynonyms(
|
||||
deviceAttachmentSpec->qualeIfaceApiParams,
|
||||
ambienceHighValParamNames, 116);
|
||||
uint32_t ambienceHighVal = static_cast<uint32_t>(ambienceHighValInt);
|
||||
|
||||
// Parse n-stencils from qualeIfaceApiParams
|
||||
const std::vector<std::string> nStencilsParamNames = {
|
||||
"n-stencils"
|
||||
@@ -333,18 +334,10 @@ std::cout << __func__ << ": $$$$$$$ Created PcloudIntensityStimulusBuffer" << st
|
||||
nStencilsParamNames, 1);
|
||||
size_t nStencils = static_cast<size_t>(nStencilsInt);
|
||||
|
||||
/* Calculate slotStrideNBytes:
|
||||
* nDgramsPerStagingBufferFrame * sizeof(uint32_t)
|
||||
*/
|
||||
size_t slotStrideNBytes = this->nDgramsPerStagingBufferFrame
|
||||
* sizeof(uint32_t);
|
||||
// Reuse openClAmbienceInputConstraints, only modify slotPadToNBytes
|
||||
openClAmbienceInputConstraints.slotPadToNBytes = slotStrideNBytes;
|
||||
|
||||
auto ambienceBuffer = std::make_shared<PcloudAmbienceStimulusBuffer>(
|
||||
*this, deviceAttachmentSpec, histbuffMs,
|
||||
openClAmbienceInputConstraints, openClAmbienceInputConstraints,
|
||||
*smoHooksPtr, CL_MEM_READ_WRITE, ambienceHighVal,
|
||||
*smoHooksPtr, CL_MEM_READ_WRITE,
|
||||
nStencils, this->nDgramsPerStagingBufferFrame);
|
||||
|
||||
std::cout << __func__ << ": $$$$$$$ Created PcloudAmbienceStimulusBuffer" << std::endl;
|
||||
|
||||
Reference in New Issue
Block a user