Pass Registration

Macros to register a plugin’s passes.

Pass registration macros should be called at global scope (not within a function/method).

In order to avoid accidentally registering a pass twice, it is recommended to call registration macros from a *.cpp* file rather than a *.h* file.

Registration macros only add the pass to a list of passes to register. This is useful if you have passes defined in several **.cpp** files in your module. It is up to the module developer to call registerModulePasses() and deregisterModulePasses() to perform the actual registration.

See Passes for more pass related functionality.

Classes

Macros

OMNI_GRAPH_EXEC_REGISTER_GLOBAL_PASS

Adds an omni::graph::exec::unstable::IGlobalPass to a list to be registered as type omni::graph::exec::unstable::PassType::eGlobal at the module's (i.e.g DLL) startup.

OMNI_GRAPH_EXEC_REGISTER_PARTITION_PASS

Adds an omni::graph::exec::unstable::IPartitionPass to a list to be registered as type omni::graph::exec::unstable::PassType::ePartitioning at the module's (i.e.g DLL) startup.

OMNI_GRAPH_EXEC_REGISTER_PASS

Adds an omni::graph::exec::unstable::IPass to a list to be registered at the module's (i.e.g DLL) startup.

OMNI_GRAPH_EXEC_REGISTER_POPULATE_PASS

Adds an omni::graph::exec::unstable::IPopulatePass to a list to be registered as type omni::graph::exec::unstable::PassType::ePopulate at the module's (i.e.g DLL) startup.

Enumerations

omni::graph::exec::unstable::PassType

Grouping type for different passes.

Functions

void omni::graph::exec::unstable::deregisterModulePasses() noexcept

Deregisters the module's omni::graph::exec::unstable::IPass factories with IPassRegistry .

IPassRegistry * omni::graph::exec::unstable::getPassRegistry() noexcept

Returns the singleton pass registry.

void omni::graph::exec::unstable::registerModulePasses() noexcept

Registers the module's omni::graph::exec::unstable::IPass factories with omni::graph::exec::unstable::IPassRegistry .

Enumerations

enum class omni::graph::exec::unstable::PassType

Grouping type for different passes.

Graph transformation pass is registered with a given type and type can’t be changed after.

See Passes for more pass related functionality.

Note

We are not yet using all these states…expect changes.

Values:

enumerator ePopulate

open-up graph types

enumerator ePartitioning

change granularity of executions (including executors)

enumerator eGlobal

pass is running over entire graph. no other passes can run now

enumerator eTypeInference

resolve types

enumerator eOverrideExecution

override compute methods, executors, etc

enumerator eScheduling

memory access, pipeline stages, etc

enumerator eCount

total number of known pass types

Functions

inline void omni::graph::exec::unstable::deregisterModulePasses() noexcept

Deregisters the module’s omni::graph::exec::unstable::IPass factories with IPassRegistry.

Failure to call this function may lead to crashes during program shutdown.

This function should be called in the module’s function registered with omni::core::OMNI_MODULE_ON_MODULE_UNLOAD(). This is usually called onUnload().

When developing a Kit extension, prefer calling OMNI_KIT_EXEC_CORE_ON_MODULE_UNLOAD() rather than this function.

See Pass Registration for more information about pass registration.

Thread Safety

This function is not thread safe.

inline IPassRegistry *omni::graph::exec::unstable::getPassRegistry() noexcept

Returns the singleton pass registry.

Returns a singleton containing the pass registry.

See Pass Registration for more information about pass registration.

inline void omni::graph::exec::unstable::registerModulePasses() noexcept

Registers the module’s omni::graph::exec::unstable::IPass factories with omni::graph::exec::unstable::IPassRegistry.

This function should be called in the module’s function registered with omni::core::OMNI_MODULE_ON_MODULE_STARTED(). This is usually called onStarted().

When developing a Kit extension, prefer calling OMNI_KIT_EXEC_CORE_ON_MODULE_STARTED() rather than this function.

See Pass Registration for more information about pass registration.

Thread Safety

This function is not thread safe.