| 593 | } |
| 594 | |
| 595 | void ChannelImpl::set_option(std::string name, size_t value) { |
| 596 | MGB_LOCK_GUARD(m_spin); |
| 597 | assert_available(); |
| 598 | auto& state = get_channel_state(); |
| 599 | state.options.set_option(name, value); |
| 600 | // FIXME |
| 601 | if (name == "enable_dtr_auto_drop" && value) { |
| 602 | auto custom_allocator = [&](CompNode device, size_t size) { |
| 603 | auto blob = Blob::make(device, size); |
| 604 | alloc_tensor_with_evict(blob.get()); |
| 605 | return blob->storage(); |
| 606 | }; |
| 607 | BlobManager::inst()->set_allocator(custom_allocator); |
| 608 | } |
| 609 | if (Profiler::is_profiling()) { |
| 610 | m_worker.add_task( |
| 611 | {Profiler::next_id(), SetOption{name, value}, |
| 612 | get_channel_state().stack_manager.dump()}); |
| 613 | } else { |
| 614 | m_worker.add_task({ |
| 615 | Profiler::next_id(), |
| 616 | SetOption{name, value}, |
| 617 | }); |
| 618 | } |
| 619 | } |
| 620 | |
| 621 | void ChannelImpl::clear_candidates() { |
| 622 | MGB_LOCK_GUARD(m_spin); |
no test coverage detected