MCPcopy Create free account
hub / github.com/0xShug0/audio.cpp / ensure_prepared

Method ensure_prepared

src/framework/runtime/session.cpp:333–387  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

331} // namespace
332
333int64_t GraphCapacityController::ensure_prepared(IGraphCapacityAdapter & adapter, int64_t request_size) const {
334 const auto prepared_capacities = sorted_prepared_capacities(adapter);
335 int64_t selected_capacity = 0;
336 switch (mode_) {
337 case GraphCapacityMode::Fixed: {
338 selected_capacity = adapter.fixed_capacity();
339 if (selected_capacity <= 0) {
340 throw std::runtime_error("fixed graph capacity must be positive");
341 }
342 if (request_size > 0 && request_size > selected_capacity) {
343 throw std::runtime_error("request exceeds fixed graph capacity");
344 }
345 break;
346 }
347 case GraphCapacityMode::Tiered:
348 if (request_size <= 0) {
349 selected_capacity = adapter.base_capacity();
350 break;
351 }
352 selected_capacity = select_smallest_prepared_fitting_capacity(prepared_capacities, request_size);
353 if (selected_capacity == 0) {
354 selected_capacity = adapter.canonical_capacity_for_request(request_size);
355 }
356 break;
357 case GraphCapacityMode::Grow:
358 if (request_size <= 0) {
359 selected_capacity = prepared_capacities.empty() ? adapter.base_capacity() : prepared_capacities.back();
360 break;
361 }
362 selected_capacity = prepared_capacities.empty() ? 0 : prepared_capacities.back();
363 if (selected_capacity < request_size) {
364 selected_capacity = adapter.canonical_capacity_for_request(request_size);
365 }
366 break;
367 case GraphCapacityMode::Double:
368 if (request_size <= 0) {
369 selected_capacity = prepared_capacities.empty() ? adapter.base_capacity() : prepared_capacities.back();
370 break;
371 }
372 selected_capacity = prepared_capacities.empty() ? 0 : prepared_capacities.back();
373 if (selected_capacity < request_size) {
374 selected_capacity = adapter.canonical_capacity_for_request(checked_double_capacity_request(request_size));
375 }
376 break;
377 case GraphCapacityMode::Unsupported:
378 throw std::runtime_error("graph capacity mode is unsupported");
379 }
380 if (selected_capacity <= 0) {
381 throw std::runtime_error("graph capacity selection must be positive");
382 }
383 if (std::find(prepared_capacities.begin(), prepared_capacities.end(), selected_capacity) == prepared_capacities.end()) {
384 adapter.prepare_capacity(selected_capacity);
385 }
386 return selected_capacity;
387}
388
389int64_t GraphCapacityController::select_capacity_for_run(
390 const IGraphCapacityAdapter & adapter,

Callers 3

prepareMethod · 0.80

Calls 10

fixed_capacityMethod · 0.80
base_capacityMethod · 0.80
prepare_capacityMethod · 0.80
emptyMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected