😻
cudair - live-reloadingをCUDA Appでできるようにするツールを作りました
作成背景
私の研究室では、GPU を用いた並列プログラミングを行っています。GPGPU で主に使われるものとして、CUDA や OPENCL などがあり、私の研究室では CUDA を利用しています。CUDA は基本的に C/C++上で動作します。そのため、プログラムが完成するたびに、ビルドして、実行して、修正して、またビルドして…と繰り返していました。当初は、make コマンドを利用してビルドと実行をまとめていたのですが、terminal を行き来する必要があり、ストレスに感じていました。そこで、golang にある Air のような live-reloading できるツールを作ろうと思ったのがきっかけです。
repository
使い方
step1
まずは、設定ファイルを作成しましょう。一から作成するのは面倒なので、
cudair init
でシンプルな設定ファイルを作成できます。
できた設定ファイルを見ると、
root = "."
tmp_dir = "tmp"
[build]
bin = "./tmp/main"
cmd = "nvcc --std=c++17 -o ./tmp/main main.cu"
log = "build-errors.log"
exclude_dir = ["tmp"]
root
:監視するディレクトリのルートパス
tmp_dir
:build 結果を格納する一時 dir の名前
bin
:実行コマンド
cmd
:コンパイルコマンド
log
:build 失敗時に原因を書き込む log ファイルの名前(まだ対応していないです)
exclude_dir
:監視対象から除外したい dir の名前
step2
作成した設定ファイルを用いてcudair
を起動しましょう。
cudair run -c .cudair.toml
-c, --config
:設定ファイルのパス
起動すると、以下の通りになります。
step3
実際に、ファイルを編集して live-reloading できているか確認しましょう。
補足
docker を使って起動することもできます。
FROM nvcr.io/nvidia/cuda:12.6.2-cudnn-devel-ubuntu20.04
RUN apt-get update && apt-get install -y wget
# installing Golang
RUN rm -rf /usr/local/go && wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz && tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz
ENV PATH=$PATH:/usr/local/go/bin:/root/go/bin
RUN go install github.com/ei-sugimoto/cudair@latest
WORKDIR /app
COPY . .
CMD ["cudair", "run", "-c", ".cudair.toml"]
最後に
star をつけていただけると励みになるので、使用する際にはぜひお願いします!
Discussion