Omniverse Carbonite SDK
The Omniverse Carbonite SDK is the foundational software layer for Omniverse applications, microservices, tools, plugins, Connectors, and SDKs.
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.
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.
License
Carbonite is proprietary software of NVIDIA Corporation. License details can be found here.