#pragma once #include "shm_helper.h" #include "xpu_helper.h" class ShmManager { public: ShmManager(); ~ShmManager(); void set_xpu_info(int device_id, uint32_t xpu_pci_addr, size_t vmem_size, const XPUIpcMemHandle &xpu_ipc_mem_handle); void run_busy_loop(); void stop_busy_loop() { stop_loop_flag.store(true, std::memory_order_release); } private: ShmHelper *shm_helper; int32_t _cur_worker_id; std::vector local_worker_ids; std::vector alive_worker_ids; std::vector valid_gpu_ids; std::atomic stop_loop_flag; int32_t get_next_worker_id(); // request void process_requests(); // heart beat void check_heart_beats(); };