cuMAC 入门#
所有 cuMAC 数据结构和调度器模块类都包含在命名空间 cumac 中
头文件 api.h 和 cumac.h 应包含在 cuMAC 的应用程序中
数据流#
下图给出了用于 CPU MAC 调度器主机和 GPU 执行的 cuMAC 数据流图

cuMAC 多小区调度器执行数据流#
每个 cuMAC 调度器模块(UE 选择、PRB 分配、层选择、MCS 选择等)都实现为 C++ 类,包括具有不同输入参数组合的构造函数、析构函数、用于在每个 TTI 中设置 CUDA 内核的 setup () 函数以及用于在每个 TTI 中执行调度算法的 run () 函数。
cuMAC 调度器模块所需的所有参数和数据缓冲区都封装到三个 cuMAC API 数据结构中,包括 cumacCellGrpUeStatus、cumacCellGrpPrms 和 cumacSchdSol。这些数据结构中的每一个都包含许多常量参数,以及许多内存分配在 GPU 上的数据缓冲区。
在初始化阶段,使用其对应的构造函数创建所有 cuMAC 调度器模块的对象。同时,也创建上述三个 API 数据结构,正确设置其常量参数,并在 GPU 上为数据缓冲区分配内存。
在每个 TTI 的执行中,CPU MAC 调度器主机首先在 GPU 内存中为三个 API 数据结构准备所有必需的数据。然后调用每个 cuMAC 调度器模块的 setup () 函数,1) 将所需的常量参数和数据缓冲区 GPU 内存地址从 API 数据结构传递到调度器模块对象,以及 2) 完成 CUDA 内核的内部配置。接下来,调用每个调度模块的 run () 函数以执行调度算法并获得调度解决方案。最后,CPU MAC 主机将计算出的调度解决方案从 GPU 传输到 CPU,并在系统中应用它们。
快速设置#
先决条件#
CMake(3.18 或更高版本)
如果您安装了 CMake 版本,可以通过以下方式确定版本号
cmake --version
您可以从 官方 CMake 网站 下载最新版本的 CMake。
CUDA(12 或更高版本)
CMake 固有 CUDA 支持将使用 CUDA 编译器 (nvcc) 自动检测 CUDA 安装,该编译器通过 PATH 环境变量定位。要检查 PATH 中是否存在 nvcc
which nvcc
要使用非标准的 CUDA 安装路径(或使用特定版本的 CUDA)
export PATH=/usr/local/cuda-12.0/bin:$PATH`
有关 CMake 中 CUDA 支持的更多信息,请参阅 https://devblogs.nvidia.com/building-cuda-applications-cmake/。(以上语句等效于“ -gencode arch=compute_80,code=sm_80 -gencode arch=compute_90,code=sm_90 “。)
cuMAC 要求最低 GPU 架构为 Ampere 或更高版本。
HDF5(分层数据格式 5)
cuMAC CMake 系统当前检查特定版本 (1.10) 的 HDF5。要从源代码存档安装特定版本的 HDF5
删除原始 hdf5 库(如果需要)
dpkg -l \| grep hdf5
sudo apt-get remove <name of these libraries>
要从源代码构建
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.5/src/hdf5-1.10.5.tar.gz` tar -xzf hdf5-1.10.5.tar.gz cd hdf5-1.10.5 ./configure --prefix=/usr/local --enable-cxx --enable-build-mode=production sudo make install
获取和构建 cuMAC#
要下载 cuMAC,您可以使用以下链接
git clone --recurse-submodules https://gitlab-master.nvidia.com/gputelecom/cumac
要构建 cuMAC,请使用以下命令
cd cumac mkdir build && cd build cmake .. make
其他 CMake 选项
创建发布版本(使用默认的目标架构列表)
cmake -DCMAKE_BUILD_TYPE=Release ..
创建调试版本(使用默认的目标架构列表)
cmake .. -DCMAKE_BUILD_TYPE=Debug
指定单个 GPU 架构(例如,以减少编译时间)
cmake .. -DCMAKE_CUDA_ARCHITECTURES="80"
指定多个 GPU 架构
cmake .. -DCMAKE_CUDA_ARCHITECTURES="80;90"
以上语句等效于
-gencode arch=compute_80,code=sm_80 -gencode arch=compute_90,code=sm_90 "
。