@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
mindspore gpu類圖
?著作權(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ù)。
【社區(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)容
- 第02章 GPU 圖形繪制管線 萬(wàn)事開(kāi)頭難,每門科學(xué)都是如此。------ 馬克思 圖形繪制管線描述 GPU 渲...
- 通過(guò)閱讀本文你將能夠知道: 統(tǒng)一渲染架構(gòu)和分離式渲染架構(gòu)是什么以及二者的區(qū)別 固定功能渲染管線和可編程渲染管線是什...
- 系統(tǒng)配置 我所使用的環(huán)境總體來(lái)說(shuō)為: Ubuntu 18.04 cuda 9.0 cudnn 7.5.0 pyth...
- CPU(中央處理器)、GPU(圖像處理器)、顯示器的關(guān)系如下: -- CPU 負(fù)責(zé)計(jì)算顯示內(nèi)容,比如視圖的創(chuàng)建、布...
- 5月以來(lái),哪怕對(duì)市場(chǎng)風(fēng)向再不敏感的人,也感覺(jué)到陣陣涼意。二級(jí)市場(chǎng)連續(xù)下挫,一級(jí)市場(chǎng)融資環(huán)境惡化,不論企業(yè)融資數(shù)量還...