|
docc 0.8.3 (0d44999b)
C++ API Reference
|
Coalesces pure device buffer allocations (deviceMalloc/deviceFree without any host/device transfer) so that non-overlapping buffers of the same element type share a single, max-sized allocation. More...
#include <sdfg/passes/offloading/device_buffer_reuse_pass.h>
Public Member Functions | |
| DeviceBufferReusePass (bool consider_dataflow_branching=false) | |
| std::string | name () override |
| bool | run_pass (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager) override |
| Public Member Functions inherited from sdfg::passes::Pass | |
| Pass ()=default | |
| Pass (const Options &options) | |
| virtual | ~Pass ()=default |
| virtual std::vector< OptionSpec > | options () |
| bool | run (builder::SDFGBuilder &builder, bool create_report=false) |
| bool | run (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, bool create_report=false) |
| virtual bool | run_pass (builder::SDFGBuilder &builder) |
| virtual void | invalidates (analysis::AnalysisManager &analysis_manager, bool applied) |
Additional Inherited Members | |
| Protected Member Functions inherited from sdfg::passes::Pass | |
| template<class T> | |
| T | option (const OptionKey< T > &key, T fallback=T{}) const |
Coalesces pure device buffer allocations (deviceMalloc/deviceFree without any host/device transfer) so that non-overlapping buffers of the same element type share a single, max-sized allocation.
The pass works in a mark-then-sweep fashion:
NOTE: This pass operates purely through the base offloading::DataOffloadingNode interface and is therefore target agnostic (deviceMalloc/deviceFree).
Branching can occur in two ways and both prevent reuse:
|
explicit |
|
overridevirtual |
Implements sdfg::passes::Pass.
|
overridevirtual |
Reimplemented from sdfg::passes::Pass.