NvSciSync Attributes#
NvSciSync clients must supply the properties and constraints of an NvSciSync object to NvSciSync before allocating the object. This is expressed with attributes. An attribute is a key - value pair. You can view all supported keys in the header files together with value types that can be used with them.
One of the attributes that can be used relates to the synchronization primitives. Only use the primitives supported on the hardware platform.
Each application wanting to use a sync object indicates its needs in the form of various attributes before the sync object is created. Those attributes are then communicated to the signaler, who gathers all applications’ attributes and has NvSciSync reconcile them. Successful reconciliation creates a new attribute list satisfying all applications constraints. The signaler then allocates a sync object using resources described by those attributes. This sync object, together with the reconciled attribute list, is then shared with all waiters that need access to this sync object.
NUMA Attribute#
On systems with NUMA support, such as Dual Thor with NVLink, applications can set NvSciSyncAttrKey_Numa in unreconciled NvSciSyncAttrList objects before reconciliation to request synchronization object placement on a specific NUMA node.
The value is a uint64_t NUMA node ID. On non-Linux OSes, this attribute is unused.
During reconciliation, if a waiter attribute list specifies a NUMA node, the corresponding signaler attribute list must specify the same node. Reconciliation fails when the signaler and waiter specify different nodes or when only the waiter specifies a node. Reconciliation succeeds when both specify the same node, or when the waiter leaves the attribute unspecified. On non-NUMA systems, this attribute is a no-op.