cuMAC 入门#

所有 cuMAC 数据结构和调度器模块类都包含在命名空间 cumac 中

头文件 api.h 和 cumac.h 应包含在 cuMAC 的应用程序中

数据流#

下图给出了用于 CPU MAC 调度器主机和 GPU 执行的 cuMAC 数据流图

../_images/cumac-multi-cell-scheduler-data-flow.png

cuMAC 多小区调度器执行数据流#

每个 cuMAC 调度器模块(UE 选择、PRB 分配、层选择、MCS 选择等)都实现为 C++ 类,包括具有不同输入参数组合的构造函数、析构函数、用于在每个 TTI 中设置 CUDA 内核的 setup () 函数以及用于在每个 TTI 中执行调度算法的 run () 函数。

cuMAC 调度器模块所需的所有参数和数据缓冲区都封装到三个 cuMAC API 数据结构中,包括 cumacCellGrpUeStatuscumacCellGrpPrmscumacSchdSol。这些数据结构中的每一个都包含许多常量参数,以及许多内存分配在 GPU 上的数据缓冲区。

在初始化阶段,使用其对应的构造函数创建所有 cuMAC 调度器模块的对象。同时,也创建上述三个 API 数据结构,正确设置其常量参数,并在 GPU 上为数据缓冲区分配内存。

在每个 TTI 的执行中,CPU MAC 调度器主机首先在 GPU 内存中为三个 API 数据结构准备所有必需的数据。然后调用每个 cuMAC 调度器模块的 setup () 函数,1) 将所需的常量参数和数据缓冲区 GPU 内存地址从 API 数据结构传递到调度器模块对象,以及 2) 完成 CUDA 内核的内部配置。接下来,调用每个调度模块的 run () 函数以执行调度算法并获得调度解决方案。最后,CPU MAC 主机将计算出的调度解决方案从 GPU 传输到 CPU,并在系统中应用它们。

快速设置#

先决条件#

  1. CMake(3.18 或更高版本)

    如果您安装了 CMake 版本,可以通过以下方式确定版本号

    cmake --version
    

    您可以从 官方 CMake 网站 下载最新版本的 CMake。

  2. 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 “。)

  3. cuMAC 要求最低 GPU 架构为 Ampere 或更高版本。

  4. HDF5(分层数据格式 5)

    cuMAC CMake 系统当前检查特定版本 (1.10) 的 HDF5。要从源代码存档安装特定版本的 HDF5

    1. 删除原始 hdf5 库(如果需要)

      dpkg -l \| grep hdf5
      
      sudo apt-get remove <name of these libraries>
      
    2. 要从源代码构建

      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#

  1. 要下载 cuMAC,您可以使用以下链接

    git clone --recurse-submodules https://gitlab-master.nvidia.com/gputelecom/cumac
    
  2. 要构建 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 "