Files
calculet-npu-research-archive/source/baseline-expanded/calrt-sdk-0.7.6/usr/local/include/calrt/calrt_vdevice.h
T

115 lines
3.2 KiB
C++

/**
* @file calrt_vdevice.h
* @brief temporary only support one physical device.
* @version 0.1
* @date 2024-11-11
*
* @copyright Copyright (c) 2024
*
*/
#pragma once
#include <memory>
#include <atomic>
#include "calrt_device.h"
#include "calrt_buffer.h"
namespace calrt
{
//class CalrtDeviceHandle; // device resource manage
//struct CalrtDeviceStatus;// record device status
//class CalDeviceParams; // the device params;
class CALRT_API VirtualDevice
{
public:
~VirtualDevice();
static std::unique_ptr<VirtualDevice> CreateVDevice();//create device using default params;
static std::unique_ptr<VirtualDevice> CreateVDevice(CalrtDeviceType_e type);
CalrtDevice* GetDevice() { return m_phyDevices.get(); }
const char *GetDeviceInfo(size_t idx) {return m_phyDevices->GetDevInfo().c_str();}
// std::size_t GetPhyDeviceNum() { return m_phyDevices.size(); }
/**
* @brief
*
* @param model
* @param inputBuffer
* @param outputBuffer
* @param forceEngineMode default: -1, automatically run engine mode. 0: force ping. 1: force pong
*/
void SubmitJob(CalbinModel* model, CalrtInputBuf* inputBuffer, CalrtOutputBuf* outputBuffer, TaskType_e forceEngineMode = TaskType_e::UNDEFINED_TASK);
void Shutdown();
void ReportDeviceInfo();
void EnableTraceDevice(bool enable) {m_phyDevices->EnableTraceDevice(enable);}
CalrtError_e Status();
void EnableParallelMode(bool switch_on);
/**
* @brief read device memory from selected chip
*
* @param srcAddr
* @param dst
* @param size
* @param chipId chip id, default 0
* @return CalrtError_e
*/
CalrtError_e ReadMem(void *srcAddr, uint64_t dst, uint64_t size, uint32_t chipId = 0);
/**
* @brief write data to selected chip's memory
*
* @param srcAddr
* @param dst
* @param size
* @param chipId chip id, default 0
* @return CalrtError_e
*/
CalrtError_e WriteMem(void *srcAddr, uint64_t dst, uint64_t size, uint32_t chipId = 0);
/**
* @brief reset CCU
*
*/
void ResetCCU();
/**
* @brief reset deployed calbin on the current device
*
*/
void ResetConfiguration();
/**
* @brief reset device
*
*/
void Reset();
/**
* @brief release device. for handle sigabrt, sigint signal
*
*/
void Release();
CalrtDeviceType_e Type() noexcept;
VirtualDevice(const VirtualDevice &) = delete;
VirtualDevice &operator=(const VirtualDevice&) = delete;
VirtualDevice(VirtualDevice &&) = delete;
VirtualDevice &operator=(VirtualDevice &&other) = delete;
private:
VirtualDevice();
class CalrtJobEngine;
std::unique_ptr<CalrtJobEngine> m_dispatchEngine;
std::atomic<bool> m_shutdown;
std::shared_ptr<CalrtDevice> m_phyDevices;
};
}