SDFstateSpaceBufferAnalysisNingGao Class Reference
#include <buffer_ning_gao.h>
Detailed Description
Throughput / storage-space trade-off exploration for Ning and Gao's buffer sizing problem. Analyze the trade-offs between storage distributions and throughput.
Constructor & Destructor Documentation
SDFstateSpaceBufferAnalysisNingGao::SDFstateSpaceBufferAnalysisNingGao | ( | ) | [inline] |
SDFstateSpaceBufferAnalysisNingGao::~SDFstateSpaceBufferAnalysisNingGao | ( | ) | [inline] |
Member Function Documentation
bool SDFstateSpaceBufferAnalysisNingGao::addStorageDistributionToChecklist | ( | StorageDistribution * | d | ) | [private] |
addStorageDistributionToChecklist () The function add the storage distribution 'd' to the list of storage distributions which must still be checked. This list is ordered wrt to the size of the storage distribution. A storage distribution is only added if it is not already contained in the list. When the distribution is added to the list, the function returns 'true', else the function returns 'false'.
References a, ASSERT, _StorageDistributionSet::distributions, g, minStorageDistributions, _StorageDistribution::next, _StorageDistributionSet::next, SDFgraph::nrActors(), _StorageDistribution::prev, _StorageDistributionSet::prev, _StorageDistribution::sp, _StorageDistribution::sz, _StorageDistributionSet::sz, and _StorageDistributionSet::thr.
Referenced by exploreStorageDistribution(), and findMinimalStorageDistributions().
StorageDistribution * SDFstateSpaceBufferAnalysisNingGao::analyze | ( | TimedSDFgraph * | gr, | |
vector< SDFtime > & | startTime | |||
) |
analyze () The function returns a minimal storage distribution that gives maximal throughput under the assumptions made by Ning and Gao. It also returns a static periodic rate-optimal schedule for the graph under the computed buffer constraints.
References _StorageDistributionSet::distributions, execStorageDistribution(), findMinimalStorageDistributions(), g, initBoundsSearchSpace(), minStorageDistributions, minSz, minSzStep, _StorageDistributionSet::next, and transitionSystem.
Referenced by analyzeSDFG().
void SDFstateSpaceBufferAnalysisNingGao::deleteStorageDistribution | ( | StorageDistribution * | d | ) | [private] |
deleteStorageDistribution () Deallocate memory for a storage distribution.
References _StorageDistribution::dep, and _StorageDistribution::sp.
Referenced by exploreStorageDistribution(), findMinimalStorageDistributions(), and minimizeStorageDistributionsSet().
void SDFstateSpaceBufferAnalysisNingGao::execStorageDistribution | ( | StorageDistribution * | d, | |
vector< SDFtime > & | startTime | |||
) | [private] |
execStorageDistribution () Compute throughput and storage dependencies of the given storage distribution.
References c, _StorageDistribution::dep, SDFstateSpaceBufferAnalysisNingGao::TransitionSystem::execSDFgraph(), g, SDFgraph::nrChannels(), _StorageDistribution::sp, _StorageDistribution::thr, and transitionSystem.
Referenced by analyze(), and exploreStorageDistribution().
void SDFstateSpaceBufferAnalysisNingGao::exploreStorageDistribution | ( | StorageDistributionSet * | ds, | |
StorageDistribution * | d | |||
) | [private] |
exploreStorageDistribution () The function computes the throughput of the storage distribution 'd' and adds new storage distributions to the list of distributions which must be checked based on the storage dependencies found in d. The function also updates the maximal throughput of the set of storage distributions when needed.
References addStorageDistributionToChecklist(), c, deleteStorageDistribution(), _StorageDistribution::dep, execStorageDistribution(), g, SDFgraph::getChannel(), SDFcomponent::getId(), SDFchannel::getSrcActor(), minSzStep, newStorageDistribution(), _StorageDistribution::next, SDFgraph::nrActors(), SDFgraph::nrChannels(), _StorageDistribution::prev, _StorageDistribution::sp, _StorageDistribution::sz, _StorageDistributionSet::thr, and _StorageDistribution::thr.
Referenced by exploreStorageDistributionSet().
void SDFstateSpaceBufferAnalysisNingGao::exploreStorageDistributionSet | ( | StorageDistributionSet * | ds | ) | [private] |
exploreStorageDistributionSet () Explore all distributions within the set and remove all non-minimal distributions from it.
References _StorageDistributionSet::distributions, exploreStorageDistribution(), minimizeStorageDistributionsSet(), and _StorageDistribution::next.
Referenced by findMinimalStorageDistributions().
void SDFstateSpaceBufferAnalysisNingGao::findMinimalStorageDistributions | ( | const double | thrBound | ) | [private] |
findMinimalStorageDistributions () Explore the throughput/storage-size trade-off space till either all minimal storage distributions are found or the throughput bound is reached.
References a, addStorageDistributionToChecklist(), deleteStorageDistribution(), _StorageDistributionSet::distributions, exploreStorageDistributionSet(), g, lbDistributionSz, maxThroughput, minStorageDistributions, minSz, newStorageDistribution(), _StorageDistributionSet::next, _StorageDistribution::next, SDFgraph::nrActors(), _StorageDistributionSet::prev, _StorageDistribution::prev, _StorageDistribution::sp, _StorageDistributionSet::sz, _StorageDistribution::sz, _StorageDistributionSet::thr, and _StorageDistribution::thr.
Referenced by analyze().
void SDFstateSpaceBufferAnalysisNingGao::initBoundsSearchSpace | ( | TimedSDFgraph * | g | ) | [private] |
initBoundsSearchSpace () Compute bounds on the trade-off space that must be explored.
References initLbDistributionSz(), initMaxThroughput(), initMinimalChannelSz(), and initMinimalChannelSzStep().
Referenced by analyze().
void SDFstateSpaceBufferAnalysisNingGao::initLbDistributionSz | ( | TimedSDFgraph * | g | ) | [private] |
initLbDistributionSz () Compute lower bound on the buffer size needed for positive throughput
References a, lbDistributionSz, minSz, and SDFgraph::nrActors().
Referenced by initBoundsSearchSpace().
void SDFstateSpaceBufferAnalysisNingGao::initMaxThroughput | ( | TimedSDFgraph * | g | ) | [private] |
initMaxThroughput () Compute the maximal throughput that can be achieved by the graph.
References SDFstateSpaceThroughputAnalysis::analyze(), and maxThroughput.
Referenced by initBoundsSearchSpace().
void SDFstateSpaceBufferAnalysisNingGao::initMinimalChannelSz | ( | TimedSDFgraph * | g | ) | [private] |
initMinimalChannelSz () Compute lower bound on the buffer size needed for positive throughput
References a, SDFgraph::channelsBegin(), SDFgraph::channelsEnd(), SDFcomponent::getId(), SDFchannel::getInitialTokens(), SDFchannel::getSrcActor(), minSz, and SDFgraph::nrActors().
Referenced by initBoundsSearchSpace().
void SDFstateSpaceBufferAnalysisNingGao::initMinimalChannelSzStep | ( | TimedSDFgraph * | g | ) | [private] |
initMinimalChannelSzStep () Compute lower bound on the step size of channels
References a, minSzStep, and SDFgraph::nrActors().
Referenced by initBoundsSearchSpace().
void SDFstateSpaceBufferAnalysisNingGao::minimizeStorageDistributionsSet | ( | StorageDistributionSet * | ds | ) | [private] |
minimizeMinStorageDistributions () The function removes all storage distributions within the supplied set of storage distributions which are non-minimal. All storage distributions within the set should have the same size.
References deleteStorageDistribution(), _StorageDistributionSet::distributions, _StorageDistribution::next, _StorageDistribution::prev, _StorageDistributionSet::prev, _StorageDistribution::thr, and _StorageDistributionSet::thr.
Referenced by exploreStorageDistributionSet().
StorageDistribution * SDFstateSpaceBufferAnalysisNingGao::newStorageDistribution | ( | ) | [private] |
newStorageDistribution () Allocate memory for a new storage distribution.
References _StorageDistribution::dep, g, SDFgraph::nrActors(), SDFgraph::nrChannels(), and _StorageDistribution::sp.
Referenced by exploreStorageDistribution(), and findMinimalStorageDistributions().
Member Data Documentation
StorageDistributionSet* SDFstateSpaceBufferAnalysisNingGao::lastExploredStorageDistributionSet [private] |
Referenced by findMinimalStorageDistributions(), and initLbDistributionSz().
Referenced by findMinimalStorageDistributions(), and initMaxThroughput().
Referenced by addStorageDistributionToChecklist(), analyze(), and findMinimalStorageDistributions().
Referenced by analyze(), findMinimalStorageDistributions(), initLbDistributionSz(), and initMinimalChannelSz().
Referenced by analyze(), exploreStorageDistribution(), and initMinimalChannelSzStep().
Referenced by analyze(), and execStorageDistribution().
The documentation for this class was generated from the following files: