data: publish complete Calculet NPU research archive
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
/**
|
||||
* @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;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user