mindspore gpu類圖

@startuml

class GpuQueue {
    RegisterRelease
    IsEmpty
    IsFull
    Push
    Front
    Pop
    Destroy
}
class BlockingQueue {
    Create
    RegisterRelease
    Push
    Front
    Pop
    Destroy
    std::shared_ptr<GpuQueue> queue_
}

class GpuBufferMgr {
    GetInstance()
    Create(device_id, channel_name, *addr, shape,capacity)
    Open(device_id, channel_name, shape,
    std::function<void(void *)> func)
    Push(handle, data, unsigned int timeout_in_sec);
    Front(unsigned int handle, void **addr, size_t *len);
    Pop(unsigned int handle);
    set_device_id(int device_id);
    Close(unsigned int handle) noexcept;
    IsInit()
    IsClosed()
    Destroy()
    CloseNotify()
    CloseConfirm()
    std::map<unsigned int, std::shared_ptr<BlockingQueue>> handle_queue_map_
    std::map<std::string, std::shared_ptr<BlockingQueue>> name_queue_map_

}

interface KernelMod {
  GetInputSizeList()
  GetOutputSizeList()
  GetWorkspaceSizeList()
  bool Launch(inputs, workspace,
              outputs, stream_ptr)
  GenParameters()
}
class AscendKernelMod {
    GenTask
    block_dim
    stream_id
}
class AicpuOpKernelMod{
    SetInputSizeList
    SetOutputSizeList
    SetWorkspaceSizeList
    GetInputSizeList
    GetOutputSizeList
    GetWorkspaceSizeList
    Launch
    GenTask
    SetInputList
    SetOutputList
    SetAnfNode
    SetNodeDef
    SetNodeName
    CreateCpuKernelInfo(inputs, outputs)    
}

class TbeKernelMod{
    SetInputSizeList
    SetOutputSizeList
    SetWorkspaceSizeList
    GetInputSizeList
    GetOutputSizeList
    GetWorkspaceSizeList
    Launch
    GenTask
    GenParameters
}
class AkgKernelMod
class HcclKernel

class RtKernel
class ProfilingKernelMod
class ProfilingKernelMod
class SendKernel
class RecvKernel
class StreamActiveKernel
class StreamSwitchKernel
class MemCpyAsyncKernel
class AssignKernel
class LabelGotoKernel
class LabelSetKernel
class LabelSwitchKernel
  
class CPUKernel
class GpuKernel {
  Init(const CNodePtr &kernel_node)
}
class AddNGpuFwdKernel{
    Init()
    Launch()
}
class xxxKernel {
    Init()
    Launch()
}
class Conv2dGpuFwdKernel {
    Init()
    Launch()
}


KernelMod <|.. GpuKernel
KernelMod <|.. AscendKernelMod
KernelMod <|.. CPUKernel
GpuKernel <|-- AddNGpuFwdKernel
GpuKernel <|-- xxxKernel
GpuKernel <|-- Conv2dGpuFwdKernel

AscendKernelMod <|-- AicpuOpKernelMod
AscendKernelMod <|-- TbeKernelMod
AscendKernelMod <|-- AkgKernelMod
AscendKernelMod <|-- HcclKernel
AscendKernelMod <|-- RtKernel
RtKernel <|-- ProfilingKernelMod
RtKernel <|-- SendKernel
RtKernel <|-- RecvKernel
RtKernel <|-- StreamActiveKernel
RtKernel <|-- StreamSwitchKernel
RtKernel <|-- MemCpyAsyncKernel
RtKernel <|-- AssignKernel
RtKernel <|-- LabelGotoKernel
RtKernel <|-- LabelSetKernel
RtKernel <|-- LabelSwitchKernel


class GPUDeviceManager
class GPUKernelRuntime
class DatasetInitKernel
class DatasetIteratorKernel

GpuBufferMgr *-right- BlockingQueue
BlockingQueue o-right- GpuQueue
GpuBufferMgr <.down. GPUDeviceManager
GpuBufferMgr <.down. GPUKernelRuntime
GpuBufferMgr <.down. DatasetInitKernel
GpuBufferMgr <.. DatasetIteratorKernel

@enduml
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容