Blender V5.0
MultiDevice Class Reference

Inherits Device.

Classes

struct  SubDevice

Public Member Functions

 MultiDevice (const DeviceInfo &info_, Stats &stats, Profiler &profiler, bool headless)
void verify_hardware_raytracing ()
const string & error_message () override
BVHLayoutMask get_bvh_layout_mask (const uint kernel_features) const override
bool load_kernels (const uint kernel_features) override
bool load_osl_kernels () override
void build_bvh (BVH *bvh, Progress &progress, bool refit) override
OSLGlobals * get_cpu_osl_memory () override
bool is_resident (device_ptr key, Device *sub_device) override
SubDevicefind_matching_mem_device (device_ptr key, SubDevice &sub)
SubDevicefind_suitable_mem_device (device_ptr key, const vector< SubDevice * > &island)
device_ptr find_matching_mem (device_ptr key, SubDevice &sub)
void * host_alloc (const MemoryType type, const size_t size) override
void host_free (const MemoryType type, void *host_pointer, const size_t size) override
void mem_alloc (device_memory &mem) override
void mem_copy_to (device_memory &mem) override
void mem_move_to_host (device_memory &mem) override
bool is_shared (const void *shared_pointer, const device_ptr key, Device *sub_device) override
void mem_copy_from (device_memory &mem, const size_t y, size_t w, const size_t h, size_t elem) override
void mem_zero (device_memory &mem) override
void mem_free (device_memory &mem) override
void const_copy_to (const char *name, void *host, const size_t size) override
int device_number (Device *sub_device) override
void foreach_device (const std::function< void(Device *)> &callback) override
Public Member Functions inherited from Device
virtual ~Device () noexcept(false)
bool have_error ()
virtual void set_error (const string &error)
virtual void cancel ()
virtual bool is_ready (string &) const
virtual unique_ptr< DeviceQueuegpu_queue_create ()
virtual void get_cpu_kernel_thread_globals (vector< ThreadKernelGlobalsCPU > &)
virtual void release_bvh (BVH *)
virtual bool set_bvh_limits (size_t, size_t)
virtual void optimize_for_scene (Scene *)
virtual bool check_peer_access (Device *)
virtual bool should_use_graphics_interop (const GraphicsInteropDevice &, const bool=false)
virtual void * get_native_buffer (device_ptr)
virtual void * get_guiding_device () const

Public Attributes

list< SubDevicedevices
device_ptr unique_key = 1
vector< vector< SubDevice * > > peer_islands
Public Attributes inherited from Device
DeviceInfo info
Statsstats
Profilerprofiler
bool headless = true

Additional Inherited Members

Static Public Member Functions inherited from Device
static const CPUKernelsget_cpu_kernels ()
static unique_ptr< Devicecreate (const DeviceInfo &info, Stats &stats, Profiler &profiler, bool headless)
static DeviceType type_from_string (const char *name)
static string string_from_type (DeviceType type)
static vector< DeviceTypeavailable_types ()
static vector< DeviceInfoavailable_devices (const uint device_type_mask=DEVICE_MASK_ALL)
static DeviceInfo dummy_device (const string &error_msg="")
static string device_capabilities (const uint device_type_mask=DEVICE_MASK_ALL)
static DeviceInfo get_multi_device (const vector< DeviceInfo > &subdevices, const int threads, bool background)
static void tag_update ()
static void free_memory ()
Protected Member Functions inherited from Device
 Device (const DeviceInfo &info_, Stats &stats_, Profiler &profiler_, bool headless_)
virtual device_ptr mem_alloc_sub_ptr (device_memory &, size_t, size_t)
virtual void mem_free_sub_ptr (device_ptr)
Protected Attributes inherited from Device
string error_msg

Detailed Description

Definition at line 21 of file device/multi/device.cpp.

Constructor & Destructor Documentation

◆ MultiDevice()

Member Function Documentation

◆ build_bvh()

◆ const_copy_to()

void MultiDevice::const_copy_to ( const char * name,
void * host,
const size_t size )
inlineoverridevirtual

Implements Device.

Definition at line 545 of file device/multi/device.cpp.

References devices, name, and size().

◆ device_number()

int MultiDevice::device_number ( Device * sub_device)
inlineoverridevirtual

Reimplemented from Device.

Definition at line 552 of file device/multi/device.cpp.

References Device::Device(), devices, and i.

◆ error_message()

const string & MultiDevice::error_message ( )
inlineoverridevirtual

Reimplemented from Device.

Definition at line 111 of file device/multi/device.cpp.

References devices, and Device::error_msg.

◆ find_matching_mem()

device_ptr MultiDevice::find_matching_mem ( device_ptr key,
SubDevice & sub )
inline

◆ find_matching_mem_device()

SubDevice * MultiDevice::find_matching_mem_device ( device_ptr key,
SubDevice & sub )
inline

◆ find_suitable_mem_device()

SubDevice * MultiDevice::find_suitable_mem_device ( device_ptr key,
const vector< SubDevice * > & island )
inline

Definition at line 325 of file device/multi/device.cpp.

References assert, and MultiDevice::SubDevice::device.

Referenced by mem_alloc(), mem_copy_to(), mem_move_to_host(), and mem_zero().

◆ foreach_device()

void MultiDevice::foreach_device ( const std::function< void(Device *)> & callback)
inlineoverridevirtual

Reimplemented from Device.

Definition at line 566 of file device/multi/device.cpp.

References Device::Device(), and devices.

◆ get_bvh_layout_mask()

◆ get_cpu_osl_memory()

OSLGlobals * MultiDevice::get_cpu_osl_memory ( )
inlineoverridevirtual

Reimplemented from Device.

Definition at line 288 of file device/multi/device.cpp.

References DEVICE_CPU, and devices.

◆ host_alloc()

void * MultiDevice::host_alloc ( const MemoryType type,
const size_t size )
inlineoverridevirtual

Reimplemented from Device.

Definition at line 346 of file device/multi/device.cpp.

References DEVICE_CPU, devices, Device::host_alloc(), and size().

◆ host_free()

void MultiDevice::host_free ( const MemoryType type,
void * host_pointer,
const size_t size )
inlineoverridevirtual

Reimplemented from Device.

Definition at line 357 of file device/multi/device.cpp.

References DEVICE_CPU, devices, Device::host_free(), and size().

◆ is_resident()

bool MultiDevice::is_resident ( device_ptr key,
Device * sub_device )
inlineoverridevirtual

Reimplemented from Device.

Definition at line 298 of file device/multi/device.cpp.

References Device::Device(), MultiDevice::SubDevice::device, devices, and find_matching_mem_device().

◆ is_shared()

bool MultiDevice::is_shared ( const void * shared_pointer,
const device_ptr key,
Device * sub_device )
inlineoverridevirtual

Reimplemented from Device.

Definition at line 454 of file device/multi/device.cpp.

References assert, Device::Device(), devices, and Device::is_shared().

◆ load_kernels()

bool MultiDevice::load_kernels ( const uint kernel_features)
inlineoverridevirtual

Reimplemented from Device.

Definition at line 174 of file device/multi/device.cpp.

References devices.

◆ load_osl_kernels()

bool MultiDevice::load_osl_kernels ( )
inlineoverridevirtual

Reimplemented from Device.

Definition at line 185 of file device/multi/device.cpp.

References devices.

◆ mem_alloc()

◆ mem_copy_from()

void MultiDevice::mem_copy_from ( device_memory & mem,
const size_t y,
size_t w,
const size_t h,
size_t elem )
inlineoverridevirtual

◆ mem_copy_to()

◆ mem_free()

◆ mem_move_to_host()

◆ mem_zero()

◆ verify_hardware_raytracing()

void MultiDevice::verify_hardware_raytracing ( )
inline

Member Data Documentation

◆ devices

◆ peer_islands

◆ unique_key

device_ptr MultiDevice::unique_key = 1

Definition at line 31 of file device/multi/device.cpp.

Referenced by mem_alloc(), mem_copy_to(), mem_move_to_host(), and mem_zero().


The documentation for this class was generated from the following file: