MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ calculate_dispatch_size()

std::array< uint32_t, 3 > MayaFlux::Yantra::GpuDispatchCore::calculate_dispatch_size ( size_t  total_elements,
const DataStructureInfo structure_info 
) const
protectedvirtual

Calculate workgroup dispatch counts from structure dimensions.

Reads SPATIAL_X/Y/Z roles for 2D/3D shaders; falls back to 1D element-count dispatch when no spatial dimensions exist.

Parameters
total_elementsFlat element count for the 1D fallback.
structure_infoDimension metadata.

Reimplemented in MayaFlux::Yantra::TextureExecutionContext.

Definition at line 193 of file GpuDispatchCore.cpp.

195{
196 uint64_t sz_x = 0, sz_y = 0, sz_z = 0;
197 for (const auto& dim : structure_info.dimensions) {
198 switch (dim.role) {
200 sz_x = dim.size;
201 break;
203 sz_y = dim.size;
204 break;
206 sz_z = dim.size;
207 break;
208 default:
209 break;
210 }
211 }
212
213 const auto& ws = m_gpu_config.workgroup_size;
214 if (sz_x > 0) {
215 return {
216 static_cast<uint32_t>((sz_x + ws[0] - 1) / ws[0]),
217 sz_y > 0 ? static_cast<uint32_t>((sz_y + ws[1] - 1) / ws[1]) : 1U,
218 sz_z > 0 ? static_cast<uint32_t>((sz_z + ws[2] - 1) / ws[2]) : 1U,
219 };
220 }
221
222 return { static_cast<uint32_t>((total_elements + ws[0] - 1) / ws[0]), 1U, 1U };
223}
@ SPATIAL_X
Spatial X axis (images, tensors)
std::array< uint32_t, 3 > workgroup_size

References MayaFlux::Yantra::DataStructureInfo::dimensions, m_gpu_config, MayaFlux::Kakshya::DataDimension::SPATIAL_X, MayaFlux::Kakshya::DataDimension::SPATIAL_Y, MayaFlux::Kakshya::DataDimension::SPATIAL_Z, and MayaFlux::Yantra::GpuShaderConfig::workgroup_size.

Referenced by dispatch_core(), and dispatch_core_chained().

+ Here is the caller graph for this function: