Omniverse Carbonite SDK

The Omniverse Carbonite SDK is the foundational software layer for Omniverse applications, microservices, tools, plugins, Connectors, and SDKs.

Carbonite SDK Stack

The Omniverse Carbonite SDK provides the following high-level features:

ABI Stable Interfaces

The core of Carbonite provides tooling that enables developers to define and maintain ABI stable interfaces. We call these interfaces Omniverse Native Interfaces (ONI). These interfaces allow the creation of software components that are binary stable across compiler toolchains, OS revisions, and SDK releases. In short, developers are able to release long-lived, reusable software components that do not require recompilation when new versions of Omniverse, or other software components, are released. Likewise, customers are able to take dependencies on first and third party software components and mitigate the risk of their use and upgrade due to Omniverse Native Interfaces.

Plugins

Carbonite provides a plugin system that allows the functionality of applications to be dynamically extended at runtime. These plugins export zero or more ABI stable interfaces for use by other loaded components. The modularity this approach enables allows the creation of truly reusable software components that can be used to quickly create solutions to domain specific problems.

Cross-Platform Abstractions

In order to be useful on a variety of hardware and operating systems, Carbonite exposes ABI-stable interfaces which provide a uniform abstraction over low-level platform facilities. For instance, Carbonite not only provides simple interfaces to “open a file” but also powerful interfaces to schedule concurrent chains of work across a machine’s compute resources.

Inline Headers

Carbonite contains a rich suite of well tested, efficient, cross-platform, general purpose inline headers. For example, your process can explicitly load a .dll or .so in a cross platform way in a couple lines of code. These headers are designed to not only be valuable, but also ABI stable due to their inlined nature.

Diagnostics

Universally useful diagnostic APIs for profiling, crash reporting, and telemetry are provided by Carbonite as first-class citizens.

While Carbonite was designed to lay the software foundation for Omniverse, the concepts Carbonite provides are not Omniverse specific. Carbonite is useful, even in the absence of the larger Omniverse, to define high-performance, cross-platform, reusable code.

Grabbing the Code

Carbonite uses a “forking” model similar to http://gitlab.com. An in-depth guide to setting up a fork can be found at Forking Carbonite.

Building

To build on Windows:

build

To build on Linux:

./build.sh

Carbonite has a strict philosophy that master should always build without errors or warnings. We have a considerable amount of infrastructure to ensure this is true. If your build fails, please reach out to #ct-carbonite on Slack.

For faster build times, see Building Carbonite.

Testing

To run Carbonite’s unit tests on Windows:

_build\windows-x86_64\release\test.unit.exe

To understand how to run debug builds of the unit test, run tests on other platforms, or run a subset of tests, see Testing Carbonite.

Contributing (i.e. Submitting an MR)

Contributions to Carbonite are celebrated. See Contributing to Carbonite for how to get started.

License

Carbonite is proprietary software of NVIDIA Corporation. License details can be found here.