HAMi-core

下载源代码:

$ git clone git@github.com:Project-HAMi/HAMi-core.git

构建

在主机上

HAMi-core 使用 C 语言开发,主机需要安装开发环境,如 gcc 工具链,makeCMake 工具。

HAMi-core 不支持最新的 CUDA 13.0, 建议降级到 CUDA 12.8.

Hami-core 源代码目录内:

$ ./build.sh

[ 95%] Linking C executable ../../shrreg-tool
[ 95%] Built target test_runtime_host_register
[ 95%] Built target shrreg-tool
[ 97%] Linking C shared library ../libvgpu.so
[ 97%] Built target vgpu
nvcc warning : Support for offline compilation for architectures prior to '<compute/sm/lto>_75' will be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
[100%] Linking CXX executable test_runtime_launch
[100%] Built target test_runtime_launch

输出文件 libvgpu.so 在目录 build/ 下。

使用

设置环境变量:

$ export LD_PRELOAD="$(pwd)/build/libvgpu.so"
$ export CUDA_DEVICE_MEMORY_LIMIT=1g
$ export CUDA_DEVICE_SM_LIMIT=50

Caution

设置 LD_PRELOAD 将使所有新启动的进程都依赖 libcuda.so.1, 不管有没有用 GPU.

如果之前用过 HAMi-core, 可能需要删除缓存的配置:

$ rm /tmp/cudevshr.cache

查看:

$ nvidia-smi 
[HAMI-core Msg(3263897:139913786537792:libvgpu.c:836)]: Initializing.....
Thu Aug 28 15:34:24 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.124.06             Driver Version: 570.124.06     CUDA Version: 12.8     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  Tesla P4                       Off |   00000000:00:05.0 Off |                    0 |
| N/A   39C    P0             22W /   75W |       0MiB /   1024MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+
[HAMI-core Msg(3263897:139913786537792:multiprocess_memory_limit.c:459)]: Calling exit handler 3263897

从输出可见报告的内存被限制在了 1GiB.