OWL
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | List of all members
owl::DeviceContext Struct Reference

#include <DeviceContext.h>

Inheritance diagram for owl::DeviceContext:

Public Types

typedef std::shared_ptr< DeviceContextSP
 

Public Member Functions

 DeviceContext (Context *parent, int owlID, int cudaID)
 
std::string getDeviceName () const
 
int getCudaDeviceID () const
 
CUstream getStream () const
 
void configurePipelineOptions (bool debug=false)
 
void buildPrograms ()
 
void buildMissPrograms ()
 
void buildRayGenPrograms ()
 
void buildHitGroupPrograms ()
 
void destroyPrograms ()
 
void destroyMissPrograms ()
 
void destroyRayGenPrograms ()
 
void destroyHitGroupPrograms ()
 
void destroyPipeline ()
 
void buildPipeline ()
 
void buildCurvesModules ()
 
void buildSphereModule ()
 

Public Attributes

std::vector< OptixProgramGroup > allActivePrograms
 
OptixDeviceContext optixContext = nullptr
 
CUcontext cudaContext = nullptr
 
CUstream stream = nullptr
 
OptixPipelineCompileOptions pipelineCompileOptions = {}
 
OptixPipelineLinkOptions pipelineLinkOptions = {}
 
OptixModuleCompileOptions moduleCompileOptions = {}
 
OptixPipeline pipeline = nullptr
 
SBT sbt = {}
 
OptixModule curvesModule [2][3]
 
OptixModule spheresModule = nullptr
 
Context *const parent
 
const int ID
 
const int cudaDeviceID
 

Detailed Description

optix and cuda context for a single, specific GPU

Constructor & Destructor Documentation

◆ DeviceContext()

owl::DeviceContext::DeviceContext ( Context parent,
int  owlID,
int  cudaID 
)

create a new device context with given context object, using given GPU "cudaID", and serving the rols at the "owlID"th GPU in that context

Member Function Documentation

◆ buildMissPrograms()

void owl::DeviceContext::buildMissPrograms ( )

build all optix progrmas for miss program types

◆ configurePipelineOptions()

void owl::DeviceContext::configurePipelineOptions ( bool  debug = false)

configures the optixPipeline link options and compile options, based on what values (motion blur on/off, multi-level instnacing, etc) are set in the context

◆ getCudaDeviceID()

int owl::DeviceContext::getCudaDeviceID ( ) const

helper function - return cuda device ID of this device

◆ getDeviceName()

std::string owl::DeviceContext::getDeviceName ( ) const

helper function - return cuda name of this device

return CUDA's name string for given device

◆ getStream()

CUstream owl::DeviceContext::getStream ( ) const
inline

return the optix default stream for this device. launch params may use their own stream

Member Data Documentation

◆ allActivePrograms

std::vector<OptixProgramGroup> owl::DeviceContext::allActivePrograms

collects all compiled programs during 'buildPrograms', such that all active progs can then be passed to optix durign pipeline creation

◆ curvesModule

OptixModule owl::DeviceContext::curvesModule[2][3]
Initial value:
= {
{ nullptr, nullptr, nullptr },
{ nullptr, nullptr, nullptr }
}

optix builtin modules for curves of degree 1, 2, and 3; only get loaded once the user calls owlEnableCurves()

◆ ID

const int owl::DeviceContext::ID

linear ID (0,1,2,...) of how we number devices (i.e., 'first' device is always device 0, no matter if it runs on another physical/cuda device)

◆ parent

Context* const owl::DeviceContext::parent

the owl context that this device is in

◆ spheresModule

OptixModule owl::DeviceContext::spheresModule = nullptr

optix builtin module for spheres


The documentation for this struct was generated from the following files: