Version 1.0.0
In-Game Inferencing (NVIGI) is an open-sourced cross platform solution that simplifies integration of the latest NVIDIA and other provider's technologies into applications and games. This framework allows developers to easily implement one single integration and enable multiple technologies supported by the hardware vendor or cloud provider. Supported technologies include AI inference but, due to the generic nature of the NVIGI SDK, can be expanded to graphics or any other field of interest.
For high-level details of NVIGI, as well as links to the official downloads for the priduct, see NVIDIA In-Game Inferencing
This directory contains the core API used by applications and plugins; all NVIGI-based applications and plugins are built against this component.
IMPORTANT: For important changes and bug fixes included in the current release, please see the release notes at the end of this document BEFORE use.
- NVIDIA RTX 30x0/A6000 series or (preferably) RTX 4080/4090 or RTX 5080/5090 with a minimum of 8GB and recommendation of 12GB VRAM.
NOTE: Some plugins only support RTX 40x0 and above, and will not be available on RTX 30x0.
- Win10 20H1 (version 2004 - 10.0.19041) or newer
- Install graphics driver r555.85 or newer
- Install VS2022 or VS Code with SDK 10.0.19041+
The following sections detail each of the steps of how to set up, rebuild and run the samples in this pack from the debugger or command line. But the basic steps are:
- Generate the project files
- Open a VS2022 Development Command Prompt to the repo directory (same directory as this file)
- Run
setup.bat
NOTE: If
setup.bat
fails with an error from thepackman
package downloader, please re-runsetup.bat
again as there are rare but possible issues with link-creation on initial run.
- Build the project
- Launch VS2022
- Load
sdk/_project/vs2022/nvigicoresdk.sln
as the workspace - Build ALL configurations (Debug, Release, Production) manually or using Batch Build...
- Run the test app
- Open a (or use an existing) VS2022 Development Command Prompt to therepo directory (same directory as this file)
2. Run
bin\Release_x64\nvigi.test.exe
- Open a (or use an existing) VS2022 Development Command Prompt to therepo directory (same directory as this file)
2. Run
- Package the core "SDK" if needed for use case
To setup the NVIGI Core repository for building all components and running the test, open a command prompt window or PowerShell to the same directory as this file and simply run the following command:
setup.bat
IMPORTANT: These steps are listed in the following section are done for you by the
setup.bat
script - do not run these steps manually/individually. This is merely to explain what is happening for you.
When you run the setup.bat
script, the script will cause two things to be done for you:
- The NVIDIA tool
packman
will pull all build dependencies to the local machine and cache them in a shared directory. Links will be created fromexternal
in the NVIGI tree to this shared cache for external build dependencies. premake
will generate the project build files in_project\vs20XX
(for Windows)
NOTE: If
setup.bat
fails with an error from thepackman
package downloader, please re-runsetup.bat
again as there are rare but possible issues with link-creation on initial run.
To build the project, simply open _project\vs20XX\nvigicoresdk.sln
in Visual Studio, select the desired build configuration and build. In general, when building core it is best to build all three configurations (Core builds quickly)
NOTE: To build the project minimal configuration is needed. Any version of Windows 10 will do. Then run the setup and build scripts as described here above. That's it. The specific version of Windows, and NVIDIA driver are all runtime dependencies, not compile/link time dependencies. This allows NVIGI to build on stock virtual machines that require zero configuration.
The built-in nvigi.test.exe
is the Core unit test suite. It uses the open source Catch2 framework to run basic tests and log the status.
To run nvigi.test.exe
from the command line, take the following steps:
- Open a command prompt in the same directory as this readme
- Run the command:
bin\Release_x64\nvigi.test.exe
- Open the project solution and build the desired configuration
- Set the default project to tests/nvigi.test
- Launch the project in the debugger
- Note the log output
The Core SDK component is packaged into two distinct types of package: Runtime SDK and Plugin Development Kit (PDK). The former is designed to be used by NVIGI applications; the latter is to be used for developing/building plugins.
The PDK is basically a subset of what is created by simply building the NVIGI Core source repo. Headers are expected in their source locations, the binaries are built into their expected locations. So, having built all configurations of NVIGI Core, the root of core already contains everything a PDK needs (i.e. bin
, lib
, source
etc), and more. I.e. once you have built all configs, <CORE_ROOT>
can be used as the root of a PDK.
However, if desired, a more minimal, consolidated Core PDK can be packaged into any desired directory using the package.bat
script. Such a packaged PDK is easier to zip and reuse, if desired, and contains only the subset of a core source tree that is needed as a PDK. This can be done by running the package.bat
script after building all configurations of Core:
package.bat -config pdk -dir _pdk
Which will package the Runtime SDK into _pdk
(and could be used by other trees making a link to the _pdk
directory as nvigi_core
)
The Runtime SDK must be packaged via the packaging script. This can be done by running the package.bat
script after building all configurations of Core:
package.bat -config runtime -dir _sdk
Which will package the Runtime SDK into _sdk
IMPORTANT: Do not edit the MSVC project files directly! Always modify the
premake.lua
or files inpremake
.
When changing an existing project's settings or contents (ie: adding a new source file, changing a compiler setting, linking to a new library, etc), it is necessary to run setup.bat
again for those changes to take effect and MSVC project files and or solution will need to be reloaded in the IDE.
NOTE: NVIDIA does not recommend making changes to the headers in core, as these can affect the API itself and can make developer-built components incompatible with NVIDIA-supplied components.
- TBD