重いDataFrame処理をしているので、RAPIDSのcuDFに興味があります。Windowsで使えるようにしてみます。
以下の流れでRAPIDSしてみます。
- 自分のPC環境でRAPIDSが使えるか確認する。
- RAPIDSをインストールする。
- WSL2でGPUを使えるようにする。
- cuDFを使う。
RAPIDS を使える環境
2025年8月時点では、RAPIDSはLinuxとWSL2上でのみ使えます。私のPCはWindowsなのでWSL2で環境構築していきます。
RAPIDSが動作可能な環境を見ておきます。
https://docs.rapids.ai/install/#wsl2

> wsl --version
WSL バージョン: 2.5.9.0
$ cat /etc/issue
Ubuntu 24.04.2 LTS \n \l
私の環境は Windows11 で WSL2 をインストール済で Ubuntu 24.04.2 でした。
搭載GPU は NVIDIA GeForce RTX 3050 なので Compute Capability は 8.6 です。
https://developer.nvidia.com/cuda-gpus
RAPIDSの制約を満たしているので、RAPIDSできそうです。
GPU情報
nvidia-smi で見てみます。

- NVIDIA Driver Version: 576.02
- CUDA Version: 12.9
CUDA Version が 12.9 になっていますが、これは Ubuntu にインストールしたバージョンではなく、NVIDIA ドライバーがサポートする最新の CUDA のバージョンという意味です。
RAPIDS インストール
RAPIDSのサイトでインストール環境を選択し、インストールコマンドを生成します。
https://docs.rapids.ai/install/#selector

生成されたコマンドをコピーして、Ubuntuで実行します。
完了後、pip list するとかなりのモジュールがインストールされていました。
LinuxにCUDA Toolkitのインストール
先にCUDAがインストールされているか nvcc –version で確認します。
インストールしていないので、not found になりました。
$ nvcc --version
Command 'nvcc' not found, but can be installed with:
sudo apt install nvidia-cuda-toolkit
CUDA Toolkit のバージョン選択
RAPIDS のサイトを見てみます。
https://docs.rapids.ai/install/#selector
動作確認済みのCUDAのバージョンが書かれていました。

最新の CUDA 12.9 でもいいのですが、CUDA 12.5 にしようと思います。
ブラウザで cuda toolkit archive と打ち、バージョン一覧を見てみます。CUDA Toolkit 12.5.1 をインストールします。
https://developer.nvidia.com/cuda-toolkit-archive

CUDA Toolkit 12.5.1 のインストール
NVIDIA のダウンロードページに行き、環境を選択し、ダウンロードコマンドを決定します。
https://developer.nvidia.com/cuda-12-5-1-download-archive

いろいろな参考サイトを見ると sudo apt install cuda-toolkit-12-5 だけで終わらせていますが、複数コマンドを打つように指示されます。
Base Installer です。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin
sudo mv cuda-ubuntu2404.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.5.1/local_installers/cuda-repo-ubuntu2404-12-5-local_12.5.1-555.42.06-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2404-12-5-local_12.5.1-555.42.06-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2404-12-5-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-5
Driver Installer のコマンドも表示されましたが、kernel module flavor を open/legacy のどちらを選べば良いのかわかりませんでしたが、バージョン指定しない方を実行します。
sudo apt-get install -y cuda-drivers
環境変数の設定
CUDA のパスを PATH 設定に追加するのですが、いくつか問題に直面したので対処方法を書きます。
WindowsのPATH設定を引き継がない
Ubuntuで PATH 設定を見ると、/mnt/c/Program Files/… みたいなのがいくつかあり、Windows 側の PATH 設定を持ってきているようです。
$ echo $PATH | tr ':' '\n'
CUDA は Ubuntu 側でインストールして、/usr/local/cuda にあるのでこちらを見るようにしたいです。
このサイトを参考にしました。
「WSL2でWindowsのPATH設定が引き継がれるのを解除する」
https://zenn.dev/o2z/articles/zenn-20210524-01
wsl.conf を書き換えて、以下を末尾に追加します。
[interop]
appendWindowsPath = false
wsl.conf は ReadOnly っぽいので sudo 付きで変更します。
$ sudo vim /etc/wsl.conf
ここで Windows を再起動します。再起動後に PATH 設定を確認して、引き継がなくなっていることを確認しました。
Ubuntu起動時に.bashrcが読み込まれない
.bashrc に PATH 設定を書いても効かなかったので原因を調査しました。
こちらのサイトを参考にしました。
「WSLのUbuntu起動時に.bashrcが読み込まれない」
https://scrapbox.io/ryoheimorimoto/WSL%E3%81%AEUbuntu%E8%B5%B7%E5%8B%95%E6%99%82%E3%81%AB.bashrc%E3%81%8C%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BE%E3%82%8C%E3%81%AA%E3%81%84
.bash_profile があると .bashrc が読み込まれないらしい。
.bash_profile は pyenv 対応したときに作成して追加したようです。
.bash_profile に以下を追加して対応しました。
$ vim ~/.bash_profile
if [[ -f ~/.bashrc ]] ; then
. ~/.bashrc
fi
PATHにCUDAを追加する
.bashrc を編集して、最後尾に下記2行を追加しました。
$ vim ~/.bashrc
export PATH="/usr/local/cuda/bin${PATH:+:${PATH}}"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
PCを再起動して Ubuntu でnvcc –version してみます。CUDA へのパスは通っていました。
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Jun__6_02:18:23_PDT_2024
Cuda compilation tools, release 12.5, V12.5.82
Build cuda_12.5.r12.5/compiler.34385749_0
CUDA のインストールではいろいろとわからないことに出くわすので、参考にしたサイトを残しておきます。
「NVIDIA Driver, CUDA, cuDNNのインストールをAPTでサクッと済ませる – Ubuntu Linux」
https://zenn.dev/pon_pokapoka/articles/nvidia_cuda_install
cuDFの動作確認
ここまでで、Linux に RAPIDS と CUDA Toolkit をインストールすることができました。
cuDFのパフォーマンスを見てみましょう。PythonコードはCopilotが書いてくれました。
import cudf
import pandas as pd
import numpy as np
# ランダムなデータを作成
df_cpu = pd.DataFrame({
'a': np.random.rand(1000000),
'b': np.random.rand(1000000)
})
# pandasからcuDFに変換(GPUに載せる)
df_gpu = cudf.from_pandas(df_cpu)
# 処理時間を比較
import time
start = time.time()
result_cpu = df_cpu.groupby('a')['b'].sum()
print("CPU処理時間:", time.time() - start)
start = time.time()
result_gpu = df_gpu.groupby('a')['b'].sum()
print("GPU処理時間:", time.time() - start)
結果です。CPUとGPUの処理性能の差です。
CPU処理時間: 0.1407005786895752
GPU処理時間: 0.032184600830078125
今回の処理では、4~5倍くらいの高速化が実現できてそうです。
劇的に高速化している結果ではありませんでした。考えられるのは、今回のPythonコードはGoogleDriveに置いておいて、UbuntuでGoogleDriveをマウントさせて、そこで実行したことが影響しているのかもしれません。