From d89651d3a219055ade6d2d218a0dfc2b39250198 Mon Sep 17 00:00:00 2001 From: Ceng <441651826@qq.com> Date: Wed, 6 Aug 2025 14:50:19 +0800 Subject: [PATCH 1/5] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0infinirt=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E8=99=9A=E5=AD=98=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ceng <441651826@qq.com> --- infinirt/README.md | 62 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/infinirt/README.md b/infinirt/README.md index e80d2d3..5a0dd2d 100644 --- a/infinirt/README.md +++ b/infinirt/README.md @@ -227,3 +227,65 @@ infiniStatus_t infinirtFreeAsync(void *ptr, infinirtStream_t stream); - ptr: 要释放的设备内存地址。 - stream: 异步释放所用的流。 + +### 5. 虚拟内存和物理内存管理 + +#### 获取内存属性 + +``` c++ +infiniStatus_t infinirtGetMemProp(infinirtMemProp_t *prop, infiniDevice_t device, int device_id); +``` + +- prop: 返回内存属性对象。 +- device: 设备类型。 +- device_id: 设备ID。 + +#### 获取内存最小粒度 + +``` c++ +infiniStatus_t infinirtGetMemGranularityMinimum(size_t *granularity, infinirtMemProp_t prop); +``` + +- granularity: 返回内存分配的最小粒度大小。 +- prop: 内存属性对象。 + +#### 创建物理内存 + +``` c++ +infiniStatus_t infinirtCreatePhysicalMem(infinirtPhyMem_t *phy_mem, size_t len, infinirtMemProp_t prop); +``` + +- phy_mem: 返回创建的物理内存对象。 +- len: 物理内存大小(单位:字节)。 +- prop: 内存属性对象。 + +#### 创建虚拟内存 + +``` c++ +infiniStatus_t infinirtCreateVirtualMem(infinirtVirtualMem_t *vm, infiniDevice_t device, size_t len, size_t min_addr); +``` + +- vm: 返回创建的虚拟内存对象。 +- device: 设备类型。 +- len: 虚拟内存大小(单位:字节)。 +- min_addr: 最小地址要求。 + +#### 映射虚拟内存 + +``` c++ +infiniStatus_t infinirtMapVirtualMem(void **mapped_ptr, infinirtVirtualMem_t vm, size_t offset, infinirtPhyMem_t phy_mem); +``` + +- mapped_ptr: 返回映射后的内存指针。 +- vm: 虚拟内存对象。 +- offset: 映射的偏移量。 +- phy_mem: 要映射的物理内存对象。 + +#### 解除虚拟内存映射 + +``` c++ +infiniStatus_t infinirtUnmapVirtualMem(infinirtVirtualMem_t vm, size_t offset); +``` + +- vm: 要解除映射的虚拟内存对象。 +- offset: 解除映射的偏移量。 From e42ffc2299f194038aa6945fe1293c7d616d6cf7 Mon Sep 17 00:00:00 2001 From: Ceng <441651826@qq.com> Date: Wed, 6 Aug 2025 16:56:27 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=99=9B=E5=AD=98?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ceng <441651826@qq.com> --- infinirt/README.md | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/infinirt/README.md b/infinirt/README.md index 5a0dd2d..9cdcd28 100644 --- a/infinirt/README.md +++ b/infinirt/README.md @@ -183,9 +183,9 @@ infiniStatus_t infinirtMemcpy(void *dst, const void *src, size_t size, infinirtM - dst: 目标地址。 - src: 源地址。 - size: 拷贝的字节数。 -- kind: 枚举类型infinirtMemcpyKind_t +- kind: 枚举类型infinirtMemcpyKind_t 其定义如下: -``` c++ +``` c++ typedef enum { INFINIRT_MEMCPY_H2H = 0, //Host to Host INFINIRT_MEMCPY_H2D = 1, //Host to Device @@ -230,45 +230,48 @@ infiniStatus_t infinirtFreeAsync(void *ptr, infinirtStream_t stream); ### 5. 虚拟内存和物理内存管理 -#### 获取内存属性 +#### 类型定义 ``` c++ -infiniStatus_t infinirtGetMemProp(infinirtMemProp_t *prop, infiniDevice_t device, int device_id); +typedef void *infinirtDeviceptr_t; // 设备指针类型 +typedef void *infinirtAllocationHandle_t;// 内存分配句柄类型 +typedef void *infinirtPhyMem_t; // 物理内存对象类型 +typedef void *infinirtVirtualMem_t; // 虚拟内存对象类型 ``` -- prop: 返回内存属性对象。 -- device: 设备类型。 -- device_id: 设备ID。 - #### 获取内存最小粒度 ``` c++ -infiniStatus_t infinirtGetMemGranularityMinimum(size_t *granularity, infinirtMemProp_t prop); +infiniStatus_t infinirtGetMemGranularityMinimum(size_t *granularity); ``` - granularity: 返回内存分配的最小粒度大小。 -- prop: 内存属性对象。 #### 创建物理内存 ``` c++ -infiniStatus_t infinirtCreatePhysicalMem(infinirtPhyMem_t *phy_mem, size_t len, infinirtMemProp_t prop); +infiniStatus_t infinirtCreatePhysicalMem(infinirtPhyMem_t *phy_mem, size_t len); ``` - phy_mem: 返回创建的物理内存对象。 - len: 物理内存大小(单位:字节)。 -- prop: 内存属性对象。 + +#### 释放物理内存 + +``` c++ +infiniStatus_t infinirtReleasePhysicalMem(infinirtPhyMem_t phy_mem); +``` + +- phy_mem: 需要释放的物理内存对象。 #### 创建虚拟内存 ``` c++ -infiniStatus_t infinirtCreateVirtualMem(infinirtVirtualMem_t *vm, infiniDevice_t device, size_t len, size_t min_addr); +infiniStatus_t infinirtCreateVirtualMem(infinirtVirtualMem_t *vm, size_t len); ``` - vm: 返回创建的虚拟内存对象。 -- device: 设备类型。 - len: 虚拟内存大小(单位:字节)。 -- min_addr: 最小地址要求。 #### 映射虚拟内存 @@ -289,3 +292,11 @@ infiniStatus_t infinirtUnmapVirtualMem(infinirtVirtualMem_t vm, size_t offset); - vm: 要解除映射的虚拟内存对象。 - offset: 解除映射的偏移量。 + +#### 释放虚拟内存 + +``` c++ +infiniStatus_t infinirtReleaseVirtualMem(infinirtVirtualMem_t vm); +``` + +- vm: 需要释放的虚拟内存对象。 From 4fde02fe241c16d8c23b175ec9420c87fa7dc5b8 Mon Sep 17 00:00:00 2001 From: Ceng <441651826@qq.com> Date: Tue, 12 Aug 2025 10:13:07 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0infinirt=E6=96=87?= =?UTF-8?q?=E6=A1=A3=EF=BC=8C=E5=AF=B9=E9=BD=90cuda=E6=98=87=E8=85=BE?= =?UTF-8?q?=E8=99=9A=E5=AD=98=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ceng <441651826@qq.com> --- infinirt/README.md | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/infinirt/README.md b/infinirt/README.md index 9cdcd28..6694035 100644 --- a/infinirt/README.md +++ b/infinirt/README.md @@ -234,9 +234,7 @@ infiniStatus_t infinirtFreeAsync(void *ptr, infinirtStream_t stream); ``` c++ typedef void *infinirtDeviceptr_t; // 设备指针类型 -typedef void *infinirtAllocationHandle_t;// 内存分配句柄类型 -typedef void *infinirtPhyMem_t; // 物理内存对象类型 -typedef void *infinirtVirtualMem_t; // 虚拟内存对象类型 +typedef void *infinirtAllocationHandle_t;// 物理内存分配句柄类型 ``` #### 获取内存最小粒度 @@ -250,53 +248,54 @@ infiniStatus_t infinirtGetMemGranularityMinimum(size_t *granularity); #### 创建物理内存 ``` c++ -infiniStatus_t infinirtCreatePhysicalMem(infinirtPhyMem_t *phy_mem, size_t len); +infiniStatus_t infinirtCreatePhysicalMem(infinirtAllocationHandle_t *pm_handle, size_t len); ``` -- phy_mem: 返回创建的物理内存对象。 +- pm_handle: 返回创建的物理内存句柄。 - len: 物理内存大小(单位:字节)。 #### 释放物理内存 ``` c++ -infiniStatus_t infinirtReleasePhysicalMem(infinirtPhyMem_t phy_mem); +infiniStatus_t infinirtReleasePhysicalMem(infinirtAllocationHandle_t pm_handle); ``` -- phy_mem: 需要释放的物理内存对象。 +- pm_handle: 需要释放的物理内存句柄。 #### 创建虚拟内存 ``` c++ -infiniStatus_t infinirtCreateVirtualMem(infinirtVirtualMem_t *vm, size_t len); +infiniStatus_t infinirtCreateVirtualMem(infinirtDeviceptr_t *vm, size_t len); ``` -- vm: 返回创建的虚拟内存对象。 +- vm: 返回创建的虚拟内存指针。 - len: 虚拟内存大小(单位:字节)。 #### 映射虚拟内存 ``` c++ -infiniStatus_t infinirtMapVirtualMem(void **mapped_ptr, infinirtVirtualMem_t vm, size_t offset, infinirtPhyMem_t phy_mem); +infiniStatus_t infinirtMapVirtualMem(infinirtDeviceptr_t vm, size_t len, size_t offset, infinirtAllocationHandle_t pm_handle); ``` -- mapped_ptr: 返回映射后的内存指针。 -- vm: 虚拟内存对象。 +- vm: 虚拟内存指针。 +- len: 映射的内存大小(单位:字节)。 - offset: 映射的偏移量。 -- phy_mem: 要映射的物理内存对象。 +- pm_handle: 要映射的物理内存句柄。 #### 解除虚拟内存映射 ``` c++ -infiniStatus_t infinirtUnmapVirtualMem(infinirtVirtualMem_t vm, size_t offset); +infiniStatus_t infinirtUnmapVirtualMem(infinirtDeviceptr_t vm, size_t len); ``` -- vm: 要解除映射的虚拟内存对象。 -- offset: 解除映射的偏移量。 +- vm: 要解除映射的虚拟内存指针。 +- len: 解除映射的内存大小(单位:字节)。 #### 释放虚拟内存 ``` c++ -infiniStatus_t infinirtReleaseVirtualMem(infinirtVirtualMem_t vm); +infiniStatus_t infinirtReleaseVirtualMem(infinirtDeviceptr_t vm, size_t len); ``` -- vm: 需要释放的虚拟内存对象。 +- vm: 需要释放的虚拟内存指针。 +- len: 释放的内存大小(单位:字节)。 From 1191f6c5516c7706805714c609fc1926f4d5acd2 Mon Sep 17 00:00:00 2001 From: Ceng <441651826@qq.com> Date: Tue, 12 Aug 2025 11:02:41 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E7=A7=BB=E9=99=A4infinirtDeviceptr=5Ft?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ceng <441651826@qq.com> --- infinirt/README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/infinirt/README.md b/infinirt/README.md index 6694035..e0b1089 100644 --- a/infinirt/README.md +++ b/infinirt/README.md @@ -233,7 +233,6 @@ infiniStatus_t infinirtFreeAsync(void *ptr, infinirtStream_t stream); #### 类型定义 ``` c++ -typedef void *infinirtDeviceptr_t; // 设备指针类型 typedef void *infinirtAllocationHandle_t;// 物理内存分配句柄类型 ``` @@ -265,7 +264,7 @@ infiniStatus_t infinirtReleasePhysicalMem(infinirtAllocationHandle_t pm_handle); #### 创建虚拟内存 ``` c++ -infiniStatus_t infinirtCreateVirtualMem(infinirtDeviceptr_t *vm, size_t len); +infiniStatus_t infinirtCreateVirtualMem(void **vm, size_t len); ``` - vm: 返回创建的虚拟内存指针。 @@ -274,7 +273,7 @@ infiniStatus_t infinirtCreateVirtualMem(infinirtDeviceptr_t *vm, size_t len); #### 映射虚拟内存 ``` c++ -infiniStatus_t infinirtMapVirtualMem(infinirtDeviceptr_t vm, size_t len, size_t offset, infinirtAllocationHandle_t pm_handle); +infiniStatus_t infinirtMapVirtualMem(void *vm, size_t len, size_t offset, infinirtAllocationHandle_t pm_handle); ``` - vm: 虚拟内存指针。 @@ -285,7 +284,7 @@ infiniStatus_t infinirtMapVirtualMem(infinirtDeviceptr_t vm, size_t len, size_t #### 解除虚拟内存映射 ``` c++ -infiniStatus_t infinirtUnmapVirtualMem(infinirtDeviceptr_t vm, size_t len); +infiniStatus_t infinirtUnmapVirtualMem(void *vm, size_t len); ``` - vm: 要解除映射的虚拟内存指针。 @@ -294,7 +293,7 @@ infiniStatus_t infinirtUnmapVirtualMem(infinirtDeviceptr_t vm, size_t len); #### 释放虚拟内存 ``` c++ -infiniStatus_t infinirtReleaseVirtualMem(infinirtDeviceptr_t vm, size_t len); +infiniStatus_t infinirtReleaseVirtualMem(void *vm, size_t len); ``` - vm: 需要释放的虚拟内存指针。 From 226e1f6a02e1bef36ad652b6dd89352dd14eb846 Mon Sep 17 00:00:00 2001 From: Ceng <441651826@qq.com> Date: Tue, 12 Aug 2025 11:25:49 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E7=89=A9=E7=90=86=E5=86=85=E5=AD=98?= =?UTF-8?q?=E5=8F=A5=E6=9F=84=E7=B1=BB=E5=9E=8B=E9=87=8D=E5=91=BD=E5=90=8D?= =?UTF-8?q?infinirtPhysicalMemoryHandle=5Ft?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ceng <441651826@qq.com> --- infinirt/README.md | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/infinirt/README.md b/infinirt/README.md index e0b1089..9ee4606 100644 --- a/infinirt/README.md +++ b/infinirt/README.md @@ -230,12 +230,6 @@ infiniStatus_t infinirtFreeAsync(void *ptr, infinirtStream_t stream); ### 5. 虚拟内存和物理内存管理 -#### 类型定义 - -``` c++ -typedef void *infinirtAllocationHandle_t;// 物理内存分配句柄类型 -``` - #### 获取内存最小粒度 ``` c++ @@ -247,7 +241,7 @@ infiniStatus_t infinirtGetMemGranularityMinimum(size_t *granularity); #### 创建物理内存 ``` c++ -infiniStatus_t infinirtCreatePhysicalMem(infinirtAllocationHandle_t *pm_handle, size_t len); +infiniStatus_t infinirtCreatePhysicalMem(infinirtPhysicalMemoryHandle_t *pm_handle, size_t len); ``` - pm_handle: 返回创建的物理内存句柄。 @@ -256,7 +250,7 @@ infiniStatus_t infinirtCreatePhysicalMem(infinirtAllocationHandle_t *pm_handle, #### 释放物理内存 ``` c++ -infiniStatus_t infinirtReleasePhysicalMem(infinirtAllocationHandle_t pm_handle); +infiniStatus_t infinirtReleasePhysicalMem(infinirtPhysicalMemoryHandle_t pm_handle); ``` - pm_handle: 需要释放的物理内存句柄。 @@ -273,7 +267,7 @@ infiniStatus_t infinirtCreateVirtualMem(void **vm, size_t len); #### 映射虚拟内存 ``` c++ -infiniStatus_t infinirtMapVirtualMem(void *vm, size_t len, size_t offset, infinirtAllocationHandle_t pm_handle); +infiniStatus_t infinirtMapVirtualMem(void *vm, size_t len, size_t offset, infinirtPhysicalMemoryHandle_t pm_handle); ``` - vm: 虚拟内存指针。 @@ -282,7 +276,6 @@ infiniStatus_t infinirtMapVirtualMem(void *vm, size_t len, size_t offset, infini - pm_handle: 要映射的物理内存句柄。 #### 解除虚拟内存映射 - ``` c++ infiniStatus_t infinirtUnmapVirtualMem(void *vm, size_t len); ```