Skip to content

Commit 4a7e11e

Browse files
authored
Merge pull request #139 from eltociear/add-ja-docs
docs: add Japanese README
1 parent ec8979d commit 4a7e11e

File tree

3 files changed

+119
-3
lines changed

3 files changed

+119
-3
lines changed

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# HAMi-core —— Hook library for CUDA Environments
22

3-
English | [中文](README_CN.md)
3+
English | [中文](README_CN.md) | [日本語](README_JA.md)
44

55
## Introduction
66

@@ -48,7 +48,6 @@ If you run CUDA applications locally, please create the local directory first.
4848
mkdir /tmp/vgpulock/
4949
```
5050

51-
```
5251
If you have updated `CUDA_DEVICE_MEMORY_LIMIT` or `CUDA_DEVICE_SM_LIMIT`, please delete the local cache file.
5352

5453
```

README_CN.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# HAMi-core —— CUDA 环境的 Hook 库
22

3-
[English](README.md) | 中文
3+
[English](README.md) | 中文 | [日本語](README_JA.md)
44

55
## 介绍
66

README_JA.md

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
# HAMi-core —— CUDA環境向けフックライブラリ
2+
3+
[English](README.md) | [中文](README_CN.md) | 日本語
4+
5+
## はじめに
6+
7+
HAMi-coreはコンテナ内GPUリソースコントローラーで、[HAMi](https://github.com/Project-HAMi/HAMi)[volcano](https://github.com/volcano-sh/devices)で採用されています。
8+
9+
<img src="./docs/images/hami-arch.png" width = "600" />
10+
11+
## 機能
12+
13+
HAMi-coreには以下の機能があります:
14+
1. デバイスメモリの仮想化
15+
2. 自己実装のタイムシェアリングによるデバイス使用率の制限
16+
3. リアルタイムデバイス使用率モニタリング
17+
18+
![image](docs/images/sample_nvidia-smi.png)
19+
20+
## 設計
21+
22+
HAMi-coreは、以下の図のようにCUDAランタイム(libcudart.so)とCUDAドライバー(libcuda.so)間のAPI呼び出しをフックすることで動作します:
23+
24+
<img src="./docs/images/hami-core-position.png" width = "400" />
25+
26+
## Dockerでのビルド
27+
28+
```bash
29+
make build-in-docker
30+
```
31+
32+
## 使用方法
33+
34+
_CUDA_DEVICE_MEMORY_LIMIT_ はデバイスメモリの上限を指定します(例:1g、1024m、1048576k、1073741824)
35+
36+
_CUDA_DEVICE_SM_LIMIT_ は各デバイスのSM使用率のパーセンテージを指定します
37+
38+
```bash
39+
# すべてのデバイスに対して1GiBのメモリ制限を追加し、最大SM使用率を50%に設定
40+
export LD_PRELOAD=./libvgpu.so
41+
export CUDA_DEVICE_MEMORY_LIMIT=1g
42+
export CUDA_DEVICE_SM_LIMIT=50
43+
```
44+
45+
CUDAアプリケーションをローカルで実行する場合は、まずローカルディレクトリを作成してください。
46+
47+
```
48+
mkdir /tmp/vgpulock/
49+
```
50+
51+
`CUDA_DEVICE_MEMORY_LIMIT`または`CUDA_DEVICE_SM_LIMIT`を更新した場合は、ローカルキャッシュファイルを削除してください。
52+
53+
```
54+
rm /tmp/cudevshr.cache
55+
```
56+
57+
## Dockerイメージ
58+
59+
```bash
60+
# Dockerイメージのビルド
61+
docker build . -f=dockerfiles/Dockerfile -t cuda_vmem:tf1.8-cu90
62+
63+
# コンテナ用のGPUデバイスとライブラリマウントの設定
64+
export DEVICE_MOUNTS="--device /dev/nvidia0:/dev/nvidia0 --device /dev/nvidia-uvm:/dev/nvidia-uvm --device /dev/nvidiactl:/dev/nvidiactl"
65+
export LIBRARY_MOUNTS="-v /usr/cuda_files:/usr/cuda_files -v $(which nvidia-smi):/bin/nvidia-smi"
66+
67+
# コンテナを実行してnvidia-smiの出力を確認
68+
docker run ${LIBRARY_MOUNTS} ${DEVICE_MOUNTS} -it \
69+
-e CUDA_DEVICE_MEMORY_LIMIT=2g \
70+
-e LD_PRELOAD=/libvgpu/build/libvgpu.so \
71+
cuda_vmem:tf1.8-cu90 \
72+
nvidia-smi
73+
```
74+
75+
実行後、以下のようなnvidia-smiの出力が表示され、メモリが2GiBに制限されていることが確認できます:
76+
77+
```
78+
...
79+
[HAMI-core Msg(1:140235494377280:libvgpu.c:836)]: Initializing.....
80+
Mon Dec 2 04:38:12 2024
81+
+-----------------------------------------------------------------------------------------+
82+
| NVIDIA-SMI 550.107.02 Driver Version: 550.107.02 CUDA Version: 12.4 |
83+
|-----------------------------------------+------------------------+----------------------+
84+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
85+
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
86+
| | | MIG M. |
87+
|=========================================+========================+======================|
88+
| 0 NVIDIA GeForce RTX 3060 Off | 00000000:03:00.0 Off | N/A |
89+
| 30% 36C P8 7W / 170W | 0MiB / 2048MiB | 0% Default |
90+
| | | N/A |
91+
+-----------------------------------------+------------------------+----------------------+
92+
93+
+-----------------------------------------------------------------------------------------+
94+
| Processes: |
95+
| GPU GI CI PID Type Process name GPU Memory |
96+
| ID ID Usage |
97+
|=========================================================================================|
98+
+-----------------------------------------------------------------------------------------+
99+
[HAMI-core Msg(1:140235494377280:multiprocess_memory_limit.c:497)]: Calling exit handler 1
100+
```
101+
102+
## ログ
103+
104+
環境変数LIBCUDA_LOG_LEVELを使用してログの表示レベルを設定します
105+
106+
| LIBCUDA_LOG_LEVEL | 説明 |
107+
| ----------------- | ----------- |
108+
| 0 | エラーのみ |
109+
| 1(デフォルト),2 | エラー、警告、メッセージ |
110+
| 3 | 情報、エラー、警告、メッセージ |
111+
| 4 | デバッグ、エラー、警告、メッセージ |
112+
113+
## Raw APIのテスト
114+
115+
```bash
116+
./test/test_alloc
117+
```

0 commit comments

Comments
 (0)