From abf5a4527faccecf76a4871704625d24258e9e70 Mon Sep 17 00:00:00 2001 From: Nicklas Boman Date: Sun, 7 Apr 2024 18:33:05 +0200 Subject: [PATCH] hsa docs kernel dispatch added --- README.md | 3 +- docs/CU.md | 2 +- docs/HSA.md | 58 +++++++++++++++++++++++ docs/{ => img}/arch1.jpg | Bin docs/{ => img}/big_compute-unit-pair.jpg | Bin docs/img/gpu_with_hsa.png | Bin 0 -> 28544 bytes docs/img/mmu_iommu.png | Bin 0 -> 47732 bytes 7 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 docs/HSA.md rename docs/{ => img}/arch1.jpg (100%) rename docs/{ => img}/big_compute-unit-pair.jpg (100%) create mode 100644 docs/img/gpu_with_hsa.png create mode 100644 docs/img/mmu_iommu.png diff --git a/README.md b/README.md index 22f3aaa..a080d0c 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ aka Navi31 aka gfx1100 aka Plum Bonito aka amd744c - DCN = Display Core Next (dcn320) (amdgpu/dcn_3_2_0_dmcub.bin) - VCN = Video Core Next (encoder/decoder) (vcn400) (vcn_4_0_0.bin) - [SDMA](/docs/SDMA.md) = System DMA (lsdma600) (sdma_6_0_0.bin) (F32) +- [HSA](/docs/HSA.md) = Heterogeneous System Architecture More info on each piece: https://mjmwired.net/kernel/Documentation/gpu/amdgpu/driver-core.rst @@ -32,7 +33,7 @@ RS64 = RISCV/RV64I + a few custom instructions! Load (at least MEC) with offset ## Architechture Diagram -![](/docs/arch1.jpg) +![](/docs/img/arch1.jpg) - 1x 5nm GCD (graphics compute die) - 6x 6nm MCD (memory cache die) diff --git a/docs/CU.md b/docs/CU.md index f3dad63..dc03876 100644 --- a/docs/CU.md +++ b/docs/CU.md @@ -2,7 +2,7 @@ It's where compute happens -![](/docs/big_compute-unit-pair.jpg) +![](/docs/img/big_compute-unit-pair.jpg) 7900XTX has 96 compute units (48 work-group processors) diff --git a/docs/HSA.md b/docs/HSA.md new file mode 100644 index 0000000..a5e7ebf --- /dev/null +++ b/docs/HSA.md @@ -0,0 +1,58 @@ +# HSA stands for Heterogeneous System Architecture + +[HSA](https://en.wikipedia.org/wiki/Heterogeneous_System_Architecture) is a cross-vendor set of specifications that allow for the integration of central processing units and graphics processors on the same bus, with shared memory and tasks. + +Idea of HSA is to reduce communication latency between CPUs, GPUs and to make it easier to offload calculations to the GPU +![](/docs/img/gpu_with_hsa.png) + +HSA defines a unified virtual address space for compute. + +Usually GPU and CPU have their own memory, HSA requires them to share page tables, to exchange data by sharing pointers. Needs to be supported by HSA specific [memory management units](https://web.archive.org/web/20140328140823/http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/hsa10.pdf) + +HSA should support both GPUs and CPUs and high-level languages. + +The CPU's [MMU](https://en.wikipedia.org/wiki/Memory_management_unit) and the GPU's [IOMMU](https://en.wikipedia.org/wiki/IOMMU) must both comply with HSA hardware specifications. +![](/docs/img/mmu_iommu.png) + +Some of the HSA-specific features implemented in the hardware need to be supported by the operating system kernel and specific device drivers. + +`amdkfd` supports heterogeneous queuing (HQ), which aims to simplify the distribution of computational jobs among multiple CPUs and GPUs from the programmer's perspective. Support for heterogeneous memory management (HMM), suited only for graphics hardware featuring version 2 of the AMD's IOMMU, + + +## Graphics Core Next (GCN) + +HSA kernel driver resides in the directory `/drivers/gpu/hsa`, while the DRM graphics device drivers reside in `/drivers/gpu/drm` + +Hardware schedulers are used to perform scheduling and offload the assignment of compute queues to the ACEs from the driver to hardware, by buffering these queues until there is at least one empty queue in at least one ACE. This causes the HWS to immediately assign buffered queues to the ACEs until all queues are full or there are no more queues to safely assign + +Part of the scheduling work performed includes prioritized queues which allow critical tasks to run at a higher priority than other tasks without requiring the lower priority tasks to be preempted to run the high priority task, therefore allowing the tasks to run concurrently with the high priority tasks scheduled to hog the GPU as much as possible while letting other tasks use the resources that the high priority tasks are not using. These are essentially Asynchronous Compute Engines that lack dispatch controllers. They were first introduced in the fourth generation [GCN](https://en.wikipedia.org/wiki/Graphics_Core_Next) microarchitectur + +## Kernel dispatch + +[Dispatching a kernel](https://llvm.org/docs/AMDGPUUsage.html#kernel-dispatch) can be done from a CPU hosted program or from an HSA kernel executing on a GPU +* Get pointer to AQL queue +* Get pointer to the kernel [descriptor](https://llvm.org/docs/AMDGPUUsage.html#amdgpu-amdhsa-kernel-descriptor), kernel must be part of code loaded by an HSA runtime, where the AQL queue is associated +* Space is allocated, atleast 16-byte aligned, for the kernel arguments +* Kernel arguments values are asssigned to allocated memory, according to [HSA](https://llvm.org/docs/AMDGPUUsage.html#hsa). For AMDGPU kernel execution has direct access to kernel arguments memory +* An AQL kernel dispatch packet is created on the AQL queue. 64-bit atomic operationss is used to reserve space in the AQL queue + - Final write must use an atomic store release to set the packet kind + - AQL defines a doorbell signal mechanism, to notify kernel agent that AQL has been updated.[For more info](https://llvm.org/docs/AMDGPUUsage.html#hsa) +* A kernel dispatch contains information about the actual dispatch and information about the kernel. The HSA runtime can be used tofind values recorded in the [Code Object Metadata](https://llvm.org/docs/AMDGPUUsage.html#amdgpu-amdhsa-code-object-metadata) +* CP executes micro-code and is responsible for detecting and setting up the GPU to execute wavefronts of a kernel dispatch +* CP ensures SGRP and VGRP is setup as required by the machine code. See [Kernel Descriptor](https://llvm.org/docs/AMDGPUUsage.html#amdgpu-amdhsa-kernel-descriptor) and [Initial Kernel Execution State](https://llvm.org/docs/AMDGPUUsage.html#amdgpu-amdhsa-initial-kernel-execution-state) + - SGRP = Scalar General Purpose Registers + - VGRP = Vector General Purpose Registers +* [Kernel Prolog](https://llvm.org/docs/AMDGPUUsage.html#amdgpu-amdhsa-kernel-prolog) initialized by the compiler from instructions in the Initial Kernel Execution State via the Kernel descriptor +* When execution is complete, CP signals completion specified in the kernel dispatch packet, if not 0. + +## HSA Signals + +HSA Signal handles, are 64-bit addresses of a structure allocated in memory. Accessible both from CPU and GPU + +## HSA AQL Queue + +The HSA AQL queue structure, is defined by an HSA compatible runtime + +## Example HSA kernel in assembler + +GFX900 HSA kernel in [asm](https://llvm.org/docs/AMDGPUUsage.html#code-object-v3-and-above-example-source-code) diff --git a/docs/arch1.jpg b/docs/img/arch1.jpg similarity index 100% rename from docs/arch1.jpg rename to docs/img/arch1.jpg diff --git a/docs/big_compute-unit-pair.jpg b/docs/img/big_compute-unit-pair.jpg similarity index 100% rename from docs/big_compute-unit-pair.jpg rename to docs/img/big_compute-unit-pair.jpg diff --git a/docs/img/gpu_with_hsa.png b/docs/img/gpu_with_hsa.png new file mode 100644 index 0000000000000000000000000000000000000000..91535d911769b5aabf454c69a24e1482469c7028 GIT binary patch literal 28544 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

2>{r2ZSKCIY5m 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 N;U5*5vKMb){{?W0q;miO literal 0 HcmV?d00001 diff --git a/docs/img/mmu_iommu.png b/docs/img/mmu_iommu.png new file mode 100644 index 0000000000000000000000000000000000000000..f24e3e8b8d10006a2689279d7516563b45f029d2 GIT binary patch literal 47732 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�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 QBH*8fnzm}Lih1z=18V~J#{d8T literal 0 HcmV?d00001