StandardExtension#

Most commonly used interfaces and components in Gxf Core.

  • UUID: 8ec2d5d6-b5df-48bf-8dee-0252606fdd7e

  • Version: 2.6.0

  • Author: NVIDIA

  • License: LICENSE

Interfaces#

nvidia::gxf::Codelet#

Interface for a component which can be executed to run custom code.

  • Component ID: 5c6166fa-6eed-41e7-bbf0-bd48cd6e1014

  • Base Type: nvidia::gxf::Component

  • Defined in: gxf/std/codelet.hpp

nvidia::gxf::Clock#

Interface for clock components which provide time.

  • Component ID: 779e61c2-ae70-441d-a26c-8ca64b39f8e7

  • Base Type: nvidia::gxf::Component

  • Defined in: gxf/std/clock.hpp

nvidia::gxf::System#

Component interface for systems which are run as part of the application run cycle.

  • Component ID: d1febca1-80df-454e-a3f2-715f2b3c6e69

  • Base Type: nvidia::gxf::Component

nvidia::gxf::Queue#

Interface for storing entities in a queue.

  • Component ID: 792151bf-3138-4603-a912-5ca91828dea8

  • Base Type: nvidia::gxf::Component

  • Defined in: gxf/std/queue.hpp

nvidia::gxf::Router#

Interface for classes which are routing messages in and out of entities.

  • Component ID: 8b317aad-f55c-4c07-8520-8f66db92a19e

  • Defined in: gxf/std/router.hpp

nvidia::gxf::Transmitter#

Interface for publishing entities.

  • Component ID: c30cc60f-0db2-409d-92b6-b2db92e02cce

  • Base Type: nvidia::gxf::Queue

  • Defined in: gxf/std/transmitter.hpp

nvidia::gxf::Receiver#

Interface for receiving entities.

  • Component ID: a47d2f62-245f-40fc-90b7-5dc78ff2437e

  • Base Type: nvidia::gxf::Queue

  • Defined in: gxf/std/receiver.hpp

nvidia::gxf::Scheduler#

A simple poll-based single-threaded scheduler which executes codelets.

  • Component ID: f0103b75-d2e1-4d70-9b13-3fe5b40209be

  • Base Type: nvidia::gxf::System

  • Defined in: nvidia/gxf/system.hpp

nvidia::gxf::SchedulingTerm#

Interface for terms used by a scheduler to determine if codelets in an entity are ready to step.

  • Component ID: 184d8e4e-086c-475a-903a-69d723f95d19

  • Base Type: nvidia::gxf::Component

  • Defined in: gxf/std/scheduling_term.hpp

nvidia::gxf::Allocator#

Provides allocation and deallocation of memory.

  • Component ID: 3cdd82d0-2326-4867-8de2-d565dbe28e03

  • Base Type: nvidia::gxf::Component

  • Defined in: nvidia/gxf/allocator.hpp

nvidia::gxf::Monitor#

Monitors entities during execution.

  • Component ID: 9ccf9421-b35b-8c79-e1f0-97dc23bd38ea

  • Base Type: nvidia::gxf::Component

  • Defined in: nvidia/gxf/monitor.hpp

nvidia::gxf::IPCServer#

Interface for a component which works as a API server to respond on remote requests.

  • Component ID: 00e6f23d-0bf6-4c1c-ada5-630c711d3be1

  • Base Type: nvidia::gxf::Component

  • Defined in: nvidia/gxf/ipc_server.hpp

nvidia::gxf::IPCClient#

Interface for a component which works as a API client to send remote requests. It’s the counterpart to IPCServer

  • Component ID: 6f3cf830-7628-49a6-b925-f94171b019da

  • Base Type: nvidia::gxf::Component

  • Defined in: nvidia/gxf/ipc_client.hpp

nvidia::gxf::ResourceBase#

A resource component base type.

  • Component ID: 76b9234d-5eac-4c65-b1a1-0306d3f354e5

  • Base Type: nvidia::gxf::Component

  • Defined in: nvidia/gxf/resources.hpp

nvidia::gxf::Controller#

Controls entities’ termination policy and tracks behavior status during execution.

  • Component ID: c8e80475-3c79-43a4-9083-eaf294b0600d

  • Base Type: nvidia::gxf::Component

  • Defined in: nvidia/gxf/controller.hpp

Components#

nvidia::gxf::RealtimeClock#

A real-time clock which runs based off a system steady clock.

  • Component ID: 7b170b7b-cf1a-4f3f-997c-bfea25342381

  • Base Type: nvidia::gxf::Clock

Parameters#

initial_time_offset

The initial time offset used until time scale is changed manually.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_FLOAT64


initial_time_scale

The initial time scale used until time scale is changed manually.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_FLOAT64


use_time_since_epoch

If true, clock time is time since epoch + initial_time_offset at initialize().Otherwise clock time is initial_time_offset at initialize().

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_BOOL

nvidia::gxf::ManualClock#

A manual clock which is instrumented manually.

  • Component ID: 52fa1f97-eba8-472a-a8ca-4cff1a2c440f

  • Base Type: nvidia::gxf::Clock

Parameters#

initial_timestamp

The initial timestamp on the clock (in nanoseconds).

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_INT64

nvidia::gxf::SyntheticClock#

A synthetic clock used to inject simulated time.

  • Component ID: 9a2bfd7b-2d84-79b4-bc71-f47eb53f28c8

  • Base Type: nvidia::gxf::Clock

Parameters#

initial_timestamp

The initial timestamp on the clock (in nanoseconds).

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_INT64

  • Default: 0

nvidia::gxf::SystemGroup#

A group of systems.

  • Component ID: 3d23d470-0aed-41c6-ac92-685c1b5469a0

  • Base Type: nvidia::gxf::System

nvidia::gxf::MessageRouter#

A router which sends transmitted messages to receivers.

  • Component ID: 84fd5d56-fda6-4937-0b3c-c283252553d8

  • Base Type: nvidia::gxf::Router

nvidia::gxf::NetworkRouter#

A router which sends transmitted messages to remote receivers.

  • Component ID: a1e6c5d5-947d-40fd-b248-117dddc9f0ae

  • Base Type: nvidia::gxf::Router

nvidia::gxf::RouterGroup#

A group of routers.

  • Component ID: ca64ee14-2280-4099-9f10-d4b501e09117

  • Base Type: nvidia::gxf::Router

nvidia::gxf::DoubleBufferTransmitter#

A transmitter which uses a double-buffered queue where messages are pushed to a backstage after they are published.

  • Component ID: 0c3c0ec7-77f1-4389-aef1-6bae85bddc13

  • Base Type: nvidia::gxf::Transmitter

Parameters#

capacity

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_UINT64

  • Default: 1


policy

0: pop, 1: reject, 2: fault.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_UINT64

  • Default: 2

nvidia::gxf::DoubleBufferReceiver#

A receiver which uses a double-buffered queue where new messages are first pushed to a backstage.

  • Component ID: ee45883d-bf84-4f99-8419-7c5e9deac6a5

  • Base Type: nvidia::gxf::Receiver

Parameters#

capacity

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_UINT64

  • Default: 1


policy

0: pop, 1: reject, 2: fault

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_UINT64

  • Default: 2

nvidia::gxf::Connection#

A component which establishes a connection between two other components.

  • Component ID: cc71afae-5ede-47e9-b267-60a5c750a89a

  • Base Type: nvidia::gxf::Component

Parameters#

source

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Transmitter


target

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Receiver

nvidia::gxf::PeriodicSchedulingTerm#

A component which specifies that an entity shall be executed periodically.

  • Component ID: d392c98a-9b08-49b4-a422-d5fe6cd72e3e

  • Base Type: nvidia::gxf::SchedulingTerm

Parameters#

recess_period

The recess period indicates the minimum amount of time which has to pass before the entity is permitted to execute again. The period is specified as a string containing of a number and an (optional) unit. If no unit is given the value is assumed to be in nanoseconds. Supported units are: Hz, s, ms. Example: 10ms, 10000000, 0.2s, 50Hz.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_STRING

nvidia::gxf::CountSchedulingTerm#

A component which specifies that an entity shall be executed exactly a given number of times.

  • Component ID: f89da2e4-fddf-4aa2-9a80-1119ba3fde05

  • Base Type: nvidia::gxf::SchedulingTerm

Parameters#

count

The total number of time this term will permit execution.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_INT64

nvidia::gxf::TargetTimeSchedulingTerm#

A component where the next execution time of the entity needs to be specified after every tick.

  • Component ID: e4aaf5c3-2b10-4c9a-c463-ebf6084149bf

  • Base Type: nvidia::gxf::SchedulingTerm

Parameters#

clock

The clock used to define target time.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Clock

nvidia::gxf::DownstreamReceptiveSchedulingTerm#

A component which specifies that an entity shall be executed if receivers for a certain transmitter can accept new messages.

  • Component ID: 9de75119-8d0f-4819-9a71-2aeaefd23f71

  • Base Type: nvidia::gxf::SchedulingTerm

Parameters#

min_size

The term permits execution if the receiver connected to the transmitter has at least the specified number of free slots in its back buffer.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_UINT64


transmitter

The term permits execution if this transmitter can publish a message, i.e. if the receiver which is connected to this transmitter can receive messages.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Transmitter

nvidia::gxf::MessageAvailableSchedulingTerm#

A scheduling term which specifies that an entity can be executed when the total number of messages over a set of input channels is at least a given number of messages.

  • Component ID: fe799e65-f78b-48eb-beb6-e73083a12d5b

  • Base Type: nvidia::gxf::SchedulingTerm

Parameters#

front_stage_max_size

If set the scheduling term will only allow execution if the number of messages in the front stage does not exceed this count. It can for example be used in combination with codelets which do not clear the front stage in every tick.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_UINT64


min_size

The scheduling term permits execution if the given receiver has at least the given number of messages available.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_UINT64


receiver

The scheduling term permits execution if this channel has at least a given number of messages available.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Receiver

nvidia::gxf::MultiMessageAvailableSchedulingTerm#

A component which specifies that an entity shall be executed when a queue has at least a certain number of elements.

  • Component ID: f15dbeaa-afd6-47a6-9ffc-7afd7e1b4c52

  • Base Type: nvidia::gxf::SchedulingTerm

Parameters#

min_size

The scheduling term permits execution if all given receivers together have at least the given number of messages available.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_UINT64


receivers

The scheduling term permits execution if the given channels have at least a given number of messages available.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Receiver

nvidia::gxf::ExpiringMessageAvailableSchedulingTerm#

A component which tries to wait for specified number of messages in queue for at most specified time.

  • Component ID: eb22280c-76ff-11eb-b341-cf6b417c95c9

  • Base Type: nvidia::gxf::SchedulingTerm

Parameters#

clock

Clock to get time from.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Clock


max_batch_size

The maximum number of messages to be batched together.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_INT64


max_delay_ns

The maximum delay from first message to wait before submitting workload anyway.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_INT64


receiver

Receiver to watch on.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Receiver

nvidia::gxf::BooleanSchedulingTerm#

A component which acts as a boolean AND term that can be used to control the execution of the entity.

  • Component ID: e07a0dc4-3908-4df8-8134-7ce38e60fbef

  • Base Type: nvidia::gxf::SchedulingTerm

Parameters#

enable_tick

The default initial condition for enabling tick.

  • Flags: GXF_PARAMETER_FLAGS_DYNAMIC

  • Type: GXF_PARAMETER_TYPE_BOOL

nvidia::gxf::BTSchedulingTerm#

A component which is used to control the execution of the behavior tree entities.

  • Component ID: 0161ca51-2fed-4a8c-8f24-67cf1b5e330a

  • Base Type: nvidia::gxf::SchedulingTerm

Parameters#

is_root

If entity is a root node

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_BOOL

nvidia::gxf::AsynchronousSchedulingTerm#

A component which is used to inform of that an entity is dependent upon an async event for its execution.

  • Component ID: 56be1662-ff63-4179-9200-3fcd8dc38673

  • Base Type: nvidia::gxf::SchedulingTerm

nvidia::gxf::MessageAvailableFrequencyThrottler#

A component which is used to execute an entity at specific frequency or sooner if there are a minimum number of incoming messages in its receivers.

  • Component ID: 5ae1d56c-a196-11ed-8759-ef34a33d45a6

  • Base Type: nvidia::gxf::SchedulingTerm

Parameters#

execution_frequency

The recess period indicates the minimum amount of time which has to pass before the entity is permitted to execute again. The period is specified as a string containing of a number and an (optional) unit. If no unit is given the value is assumed to be in nanoseconds. Supported units are: Hz, s, ms. Example: 10ms, 10000000, 0.2s, 50Hz

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_STRING


receivers

The scheduling term permits execution if the given channels have at least a given number of messages available.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_CUSTOM


sampling_mode

The sampling method to use when checking for messages in receiver queues. Option: SumOfAll,PerReceiver

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_CUSTOM


min_sizes

The scheduling term permits execution if all given receivers have at least the given number of messages available in this list.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_CUSTOM


min_sum

The scheduling term permits execution if the sum of message counts of all receivers have at least the given number of messages available.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_UINT64

nvidia::gxf::MemoryAvailableSchedulingTerm#

A component waiting until a minimum amount of memory is available.

  • Component ID: f976d23a-8220-74e2-a5d9-04ed71b2454a

  • Base Type: nvidia::gxf::SchedulingTerm

Parameters#

allocator

The allocator to wait on.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Allocator


min_bytes

The minimum number of bytes that must be available for the codelet to get scheduled. Exclusive with min_blocks.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_UINT64


min_blocks

The minimum number of blocks that must be available for the codelet to get scheduled. On allocators that do not support block allocation, this behaves the same as min_bytes. Exclusive with min_bytes.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_UINT64

nvidia::gxf::GraphWorker#

A GXF System component which governs the execution of one or multiple graph segments. The key ingredients are event based thread, IPC server, and IPC client. The graph segments can be provided by users via YAML config or C++ API.

  • Component ID: 54b88529-2c91-436b-83b6-7f5c10369354

  • Base Type: nvidia::gxf::GraphWorker

Parameters#

server

GXF IPC server to handle the service callbacks in GraphWorker. Example server implementation can be nvidia::gxf::HttpServer

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::IPCServer


client

GXF IPC client to communicate with the IPC server. Example client implementation can be nvidia::gxf::HttpIPCClient

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::IPCClient


graph-specs

A dictionary of graph specs that are executed by this GraphWorker. The schema for each entry is: {user_given_segment_name: {app-path: , parameter-path: , manifest-path: , severity: }}

Example:

graph-specs:
  ucx_upstream:
    app-path: gxf/ucx/tests/test_ping_ucx_tx.yaml
    manifest-path: gxf/test/distributed/test_graph_worker_manifest.yaml
    severity: 4
  ucx_downstream:
    app-path: gxf/ucx/tests/test_ping_ucx_rx.yaml
    manifest-path: gxf/test/distributed/test_graph_worker_manifest.yaml
    severity: 4
  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_CUSTOM


driver-reconnection-times

How many times to try to reconnect the GraphDriver at startup. Abandon the execution after the last try.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_INT64

nvidia::gxf::GraphDriver#

A GXF System component which coordinates the execution of GraphWorker, resolving graph segments UCX connection addresses.

  1. Listen to remote or local GraphWorkers that each runs one or more segments.

  2. Register all GraphWorkers until all segments are discovered

  3. Resolve connection address between each segment pair

  4. Send result address to each target segment via GraphWorker that manages the segment

  • Component ID: 76ca3719-fcd1-4ae3-8e06-8ce161b0f881

  • Base Type: nvidia::gxf::GraphDriver

Parameters#

server

GXF IPC server to handle the service callbacks in GraphDriver. Example server implementation can be nvidia::gxf::HttpServer

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::IPCServer


client

GXF IPC client to communicate with the IPC server. Example client implementation can be nvidia::gxf::HttpIPCClient

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::IPCClient


connections

A dictionary of graph segment connections. A segment connection consists of source field and target field. The schema for each entry is: {Connections: [source: , target: ]} The schema for source and target is: user_given_segment_name.entity_name.queue_name

Example:

connections:
- source: ucx_upstream.tx.signal
  target: ucx_downstream.rx.signal
  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_CUSTOM

nvidia::gxf::GreedyScheduler#

A simple poll-based single-threaded scheduler which executes codelets.

  • Component ID: 869d30ca-a443-4619-b988-7a52e657f39b

  • Base Type: nvidia::gxf::Scheduler

Parameters#

clock

The clock used by the scheduler to define flow of time. Typical choices are a RealtimeClock or a ManualClock.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Clock


max_duration_ms

The maximum duration for which the scheduler will execute (in ms). If not specified the scheduler will run until all work is done. If periodic terms are present this means the application will run indefinitely.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_INT64


realtime

This parameter is deprecated. Assign a clock directly.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_BOOL


stop_on_deadlock

If enabled the scheduler will stop when all entities are in a waiting state, but no periodic entity exists to break the dead end. Should be disabled when scheduling conditions can be changed by external actors, for example by clearing queues manually.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_BOOL

nvidia::gxf::MultiThreadScheduler#

A multi thread scheduler that executes codelets for maximum throughput.

  • Component ID: de5e0646-7fa5-11eb-a5c4-330ebfa81bbf

  • Base Type: nvidia::gxf::Scheduler

Parameters#

check_recession_perios_ms

The maximum duration for which the scheduler would wait (in ms) when an entity is not ready to run yet.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_INT64


clock

The clock used by the scheduler to define flow of time. Typical choices are a RealtimeClock or a ManualClock.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Clock


max_duration_ms

The maximum duration for which the scheduler will execute (in ms). If not specified the scheduler will run until all work is done. If periodic terms are present this means the application will run indefinitely.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_INT64


stop_on_deadlock

If enabled the scheduler will stop when all entities are in a waiting state, but no periodic entity exists to break the dead end. Should be disabled when scheduling conditions can be changed by external actors, for example by clearing queues manually.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_BOOL


worker_thread_number

Number of threads.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_INT64

  • Default: 1

nvidia::gxf::EpochScheduler#

A scheduler for running loads in externally managed threads.

  • Component ID: 3d175ab4-2e0d-11ec-8d3d-0242ac130003

  • Base Type: nvidia::gxf::Scheduler

Parameters#

clock

The clock used by the scheduler to check maximum time budget. Typical choice is a RealtimeClock.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Clock

nvidia::gxf::EventBasedScheduler#

A multi thread event based scheduler that executes codelets for maximum throughput.

  • Component ID: 99bef5a8-48bc-11ee-be56-0242ac120002

  • Base Type: nvidia::gxf::Scheduler

Parameters#

clock

The clock used by the scheduler to define flow of time. Typical choices are a RealtimeClock or a ManualClock.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Clock


max_duration_ms

The maximum duration for which the scheduler will execute (in ms). If not specified the scheduler will run until all work is done. If periodic terms are present this means the application will run indefinitely.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_INT64


stop_on_deadlock

If enabled the scheduler will stop when all entities are in a waiting state, but no periodic entity exists to break the dead end. Should be disabled when scheduling conditions can be changed by external actors, for example by clearing queues manually.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_BOOL

  • Default: True


worker_thread_number

Number of threads.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_INT64

  • Default: 1


thread_pool_allocation_auto

If enabled, only one thread pool will be created. If disabled, user should enumerate pools and priorities

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_BOOL

  • Default: True


stop_on_deadlock_timeout

Scheduler will wait this amount of time when stop_on_dead_lock indicates should stop. It will reset if a job comes in during the wait. Negative value means not stop on deadlock.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_INT64

  • Default: 0

nvidia::gxf::BlockMemoryPool#

A memory pools which provides a maximum number of equally sized blocks of memory.

  • Component ID: 92b627a3-5dd3-4c3c-976c-4700e8a3b96a

  • Base Type: nvidia::gxf::Allocator

Parameters#

block_size

The size of one block of memory in byte. Allocation requests can only be fulfilled if they fit into one block. If less memory is requested still a full block is issued.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_UINT64


do_not_use_cuda_malloc_host

If enabled operator new will be used to allocate host memory instead of cudaMallocHost.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_BOOL

  • Default: True


num_blocks

The total number of blocks which are allocated by the pool. If more blocks are requested allocation requests will fail.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_UINT64


storage_type

The memory storage type used by this allocator. Can be kHost (0) or kDevice (1) or kSystem (2).

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_INT32

  • Default: 0

nvidia::gxf::UnboundedAllocator#

Allocator that uses dynamic memory allocation without an upper bound.

  • Component ID: c3951b16-a01c-539f-d87e-1dc18d911ea0

  • Base Type: nvidia::gxf::Allocator

Parameters#

do_not_use_cuda_malloc_host

If enabled operator new will be used to allocate host memory instead of cudaMallocHost.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_BOOL

  • Default: True

nvidia::gxf::ThreadPool#

  • Component ID: 4025b68b-206b-4b3d-a088-f4805fdf8703

  • Base Type: nvidia::gxf::ResourceBase

Parameters#

initial_size

Initial number of worker threads in the pool.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_INT64

  • Default: 0

priority

Priority level for threads in the pool. Default is 0 (low). Can also be set to 1 (medium) or 2 (high).

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_INT64

  • Default: 0

nvidia::gxf::GPUDevice#

  • Component ID: 2036939f-a32a-43ee-83f8-826576d8f170

  • Base Type: nvidia::gxf::ResourceBase

Parameters#

dev_id

Create CUDA Stream on which device.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_INT32

  • Default: 0

nvidia::gxf::CPUThread#

  • Component ID: 34f46728-496d-4d8b-b9c9-c5a54de5d3a0

  • Base Type: nvidia::gxf::Component

Parameters#

pin_entity

Set the cpu_core to be pinned to a worker thread or not.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_BOOL

  • Default: false

nvidia::gxf::Forward#

Forwards incoming messages at the receiver to the transmitter.

  • Component ID: 97cee543-8fb5-4541-8ff7-589318187ec0

  • Base Type: nvidia::gxf::Codelet

Parameters#

in

The channel for incoming messages.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Receiver

out

The channel for outgoing messages.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Transmitter

nvidia::gxf::Topic#

Adds transmitters/receivers to a topic.

  • Component ID: 70529494-8bca-49ef-51bf-44b08ecf460b

  • Base Type: nvidia::gxf::Component

Parameters#

topic_name

Topic name.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_STRING

transmitters

Transmitters that will be added to this topic.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Transmitter

receivers

Receivers that will be added to this topic.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Receiver

nvidia::gxf::Tensor#

A component which holds a single tensor.

  • Component ID: 377501d6-9abf-447c-a617-0114d4f33ab8

  • Defined in: gxf/std/tensor.hpp

nvidia::gxf::Timestamp#

Holds message publishing and acquisition related timing information.

  • Component ID: d1095b10-5c90-4bbc-bc89-601134cb4e03

  • Defined in: gxf/std/timestamp.hpp

nvidia::gxf::MultiSourceTimestamp#

Holds timestamps from various sources.

  • Component ID: 872e77ec-bde8-11ed-afa1-0242ac120002

  • Defined in: gxf/std/timestamp.hpp

nvidia::gxf::Metric#

Collects, aggregates, and evaluates metric data.

  • Component ID: f7cef803-5beb-46f1-186a-05d3919842ac

  • Base Type: nvidia::gxf::Component

Parameters#

aggregation_policy

Aggregation policy used to aggregate individual metric samples. Choices:{mean, min, max}.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_STRING


lower_threshold

Lower threshold of the metric’s expected range.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_FLOAT64


upper_threshold

Upper threshold of the metric’s expected range.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_FLOAT64

nvidia::gxf::JobStatistics#

Collects runtime statistics.

  • Component ID: 2093b91a-7c82-11eb-a92b-3f1304ecc959

  • Base Type: nvidia::gxf::Component

Parameters#

clock

The clock component instance to retrieve time from.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Clock


codelet_statistics

If set to true, JobStatistics component will collect performance statistics related to codelets.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_BOOL


json_file_path

If provided, all the collected performance statistics data will be dumped into a json file.

  • Flags: GXF_PARAMETER_FLAGS_OPTIONAL

  • Type: GXF_PARAMETER_TYPE_STRING

nvidia::gxf::Broadcast#

Messages arrived on the input channel are distributed to all transmitters.

  • Component ID: 3daadb31-0bca-47e5-9924-342b9984a014

  • Base Type: nvidia::gxf::Codelet

Parameters#

mode

The broadcast mode. Can be Broadcast or RoundRobin.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_CUSTOM


source

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Receiver

nvidia::gxf::Gather#

All messages arriving on any input channel are published on the single output channel.

  • Component ID: 85f64c84-8236-4035-9b9a-3843a6a2026f

  • Base Type: nvidia::gxf::Codelet

Parameters#

sink

The output channel for gathered messages.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Transmitter


tick_source_limit

Maximum number of messages to take from each source in one tick. 0 means no limit.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_INT64

nvidia::gxf::TensorCopier#

Copies tensor either from host to device or from device to host.

  • Component ID: c07680f4-75b3-189b-8886-4b5e448e7bb6

  • Base Type: nvidia::gxf::Codelet

Parameters#

allocator

Memory allocator for tensor data

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Allocator


mode

Configuration to select what tensors to copy:

  1. kCopyToDevice (0) - copies to device memory, ignores device allocation

  2. kCopyToHost (1) - copies to pinned host memory, ignores host allocation

  3. kCopyToSystem (2) - copies to system memory, ignores system allocation.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_INT32

receiver

Receiver for incoming entities.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Receiver


transmitter

Transmitter for outgoing entities.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Transmitter

nvidia::gxf::TimedThrottler#

Publishes the received entity respecting the timestamp within the entity.

  • Component ID: ccf7729c-f62c-4250-5cf7-f4f3ec80454b

  • Base Type: nvidia::gxf::Codelet

Parameters#

execution_clock

Clock on which the codelet is executed by the scheduler.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Clock


receiver

Channel to receive messages that need to be synchronized.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Receiver


scheduling_term

Scheduling term for executing the codelet.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::TargetTimeSchedulingTerm


throttling_clock

Clock which the received entity timestamps are based on.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Clock


transmitter

Transmitter channel publishing messages at appropriate timesteps.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Transmitter

nvidia::gxf::Vault#

Safely stores received entities for further processing.

  • Component ID: 1108cb8d-85e4-4303-ba02-d27406ee9e65

  • Base Type: nvidia::gxf::Codelet

Parameters#

drop_waiting

If too many messages are waiting the oldest ones are dropped.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_BOOL


max_waiting_count

The maximum number of waiting messages. If exceeded the codelet will stop pulling messages out of the input queue.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_UINT64


source

Receiver from which messages are taken and transferred to the vault.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Receiver

nvidia::gxf::Subgraph#

Helper component to import a subgraph.

  • Component ID: 576eedd7-7c3f-4d2f-8c38-8baa79a3d231

  • Base Type: nvidia::gxf::Component

Parameters#

location

Yaml source of the subgraph.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_STRING

nvidia::gxf::EndOfStream#

A component which represents end-of-stream notification.

  • Component ID: 8c42f7bf-7041-4626-9792-9eb20ce33cce

  • Defined in: gxf/std/eos.hpp

nvidia::gxf::Synchronization#

Component to synchronize messages from multiple receivers based on the acq_time.

  • Component ID: f1cb80d6-e5ec-4dba-9f9e-b06b0def4443

  • Base Type: nvidia::gxf::Codelet

Parameters#

inputs

All the inputs for synchronization. Number of inputs must match that of the outputs.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Receiver


outputs

All the outputs for synchronization. Number of outputs must match that of the inputs.

  • Flags: GXF_PARAMETER_FLAGS_NONE

  • Type: GXF_PARAMETER_TYPE_HANDLE

  • Handle Type: nvidia::gxf::Transmitter

signed char#

  • Component ID: 83905c6a-ca34-4f40-b474-cf2cde8274de

unsigned char#

  • Component ID: d4299e15-0006-d0bf-8cbd-9b743575e155

short int#

  • Component ID: 9e1dde79-3550-307d-e81a-b864890b3685

short unsigned int#

  • Component ID: 958cbdef-b505-bcc7-8a43-dc4b23f8cead

int#

  • Component ID: b557ec7f-49a5-08f7-a35e-086e9d1ea767

unsigned int#

  • Component ID: d5506b68-5c86-fedb-a2a2-a7bae38ff3ef

long int#

  • Component ID: c611627b-6393-365f-d234-1f26bfa8d28f

long unsigned int#

  • Component ID: c4385f5b-6e25-01d9-d7b5-6e7cadc704e8

float#

  • Component ID: a81bf295-421f-49ef-f24a-f59e9ea0d5d6

double#

  • Component ID: d57cee59-686f-e26d-95be-659c126b02ea

bool#

  • Component ID: c02f9e93-d01b-1d29-f523-78d2a9195128

Python Bindings#

Python binings for the standard extension’s components enable them to be used in python codelets. These python bindings are present in gxf.std and contain the following:

Clock#

from gxf.std import Clock

The python binding for nvidia::gxf::Clock.

Methods:

time()

  • Returns: float The current time of the clock. Time is measured in seconds.

timestamp()

  • Returns: float The current timestamp of the clock. Timestamps are measured in nanoseconds.

Receiver#

from gxf.std import Receiver

The python binding for nvidia::gxf::Receiver component which connects with a transmitter and can receive a message.

gxf.std.Receiver has the following methods:

receive()

  • Returns: gxf.std.Entity - Receives the next entity from the main stage.

sync()

  • Returns: None - Moves entities which recently arrived to the main stage.

back_size()

  • Returns: Integer - The total number of entities which have recently arrived but are not yet on the main stage.

size()

  • Returns: Integer - The total number of entities present in the main stage.

capacity()

  • Returns: Integer - The total number of entities the receiver can hold.

Transmitter#

from gxf.std import Transmitter

The python binding for nvidia::gxf::Transmitter component which connects with a receiver and can transmit a message.

gxf.std.Transmitter has the following methods:

publish(message, acqtime):

Value

Return Type

Description

message

gxf.std.Entity

A message entity.

acqtime

Integer

Acqusition time of the message

  • Returns: String - Error message or Success.

back_size()

  • Returns: Integer - The total number of entities which have recently arrived but are not yet on the main stage.

size()

  • Returns: Integer - The total number of entities present in the main stage.

capacity()

  • Returns: Integer - The total number of entities the transmitter can hold.

PrimitiveType#

from gxf.std import PrimitiveType

A python enum which defines types of data types.

Value

Description

kCustom

Custom data type

kInt8

Signed Integer 8 bytes

kUnsigned8

Unsigned Interger 8 bytes

kInt16

Signed Integer 16 bytes

kUnsigned16

Unsigned Integer 16 bytes

kInt32

Signed Integer 32 bytes

kUnsigned32

Unsigned Integer 32 bytes

kInt64

Signed Integer 64 bytes

kUnsigned64

Unsigned Integer 64 bytes

kFloat32

Floating Point 32 bytes

kFloat64

Floating point 64 bytes

Shape#

from gxf.std import Shape

Shape of the tensor data.

Shape(dims)

Parameter

Description

dims

List A list containing the size of each dimension

  • Returns: gxf.std.Shape with set values.

rank()

  • Returns: Integer Rank of the tensor Dimension

size()

  • Returns: Integer Number of elements in the tensor

dimension(index)

  • Returns: Integer Size of the dimension at index

MemoryStorageType#

from gxf.std import MemoryStorageType

A python enum which defines where the data is stored.

Value

Description

kHost

Data is stored on Host

kDevice

Data is stored on the Device (GPU)

kSystem

Data is stored on the System (TODO(sl)

Tensor#

from gxf.std import Tensor

The python binding for nvidia::gxf::Tensor component which contains the tensor data which can be attached to messages.

gxf.std.Tensor has the following methods:

get_tensor_info():

  • Returns: Tuple

Tuple Values

Return Type

Description

buffer pointer

pybind11 object

Containing the buffer pointer

size

Integer

Size of one element

dtype

String

Description of the type of data

rank

Integer

Rank of the tensor

dims

Integer

Array of size rank containing the dimensions

stride

Integer

Array of size rank containing the strides for each dimension

shape()

  • Returns: gxf.std.Shape - Shape of the tensor

element_type()

  • Returns: gxf.std.PrimitiveType - Element type of the data.

storage_type()

  • Returns: gxf.std.MemoryStorageType - The device on which the data is stored.

reshape_custom(shape, element_type, bytes_per_element, strides, storage_type, allocator)

Parameter

Return Type

Description

shape

gxf.std.Shape

Shape of the tensor

element_type

PrimitiveType

Type of elements

bytes_per_element

Integer

Size of individual element

strides

Integer

Array of size rank containing the strides for each dimension

storage_type

gxf.std.MemoryStorageType

The deive on which the data is stored.

allocator

gxf.std.Allocator

Allocator to provide memory for the tensor data.

  • Returns: None

gxf.std.add_to_entity(entity, name=nullptr)

Parameter

Return Type

Description

entity

gxf.std.Entity

A message entity to attach the tensor

name

String

Name of the tensor

  • Returns: gxf.std.Tensor Added Tensor

gxf.std.get_from_entity(entity, name=nullptr)

Parameter

Return Type

Description

entity

gxf.std.Entity

A message entity to extract the tensor

name

String

Name of the tensor

  • Returns: gxf.std.Tensor Tensor, if present. Throws value_error if not.

find_all_from_entity(entity)

Parameter

Return Type

Description

entity

gxf.std.Entity

A message entity to extract all the tensors

  • Returns: List(Tensors) A list of tensors present in the message entity.

Allocator#

from gxf.std import Allocator

The python binding for nvidia::gxf::Allocator to allocate memory on device, host, or system needed for gxf.std.Tensor.custom_reshape().