35 lines
715 B
C++
35 lines
715 B
C++
#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<int32_t> local_worker_ids;
|
|
std::vector<int32_t> alive_worker_ids;
|
|
std::vector<int> valid_gpu_ids;
|
|
std::atomic<bool> stop_loop_flag;
|
|
|
|
int32_t get_next_worker_id();
|
|
|
|
// request
|
|
void process_requests();
|
|
// heart beat
|
|
void check_heart_beats();
|
|
};
|