更新中

VMwareESXiのDirectPassThroughでQUADORO K600によるCUDAを試したが、駄目みたい

以下は記録として。

QUADRO K600がある。
グラフィック目的で用意したのだが、使っていない。っでGPUエンジンをCUDAとして転用させてみた。
物理マシンに載せてもいいのだが、仮想化マシンESXiに載せてVMware/DirectPassThroughにて
仮想マシンに繋げてみた。
こんな感じで、デバイスを晒して、
2016y03m08d_235301735.png

仮想マシンcudaに付け加えて、OSをインストールした。
2016y03m19d_131418165.png

lspci出力

[root@cuda ~]# yum install pciutils
[root@cuda ~]# lspci | grep -i nvidia
03:00.0 VGA compatible controller: NVIDIA Corporation GK107GL [Quadro K600] (rev a1)
03:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1)
[root@cuda ~]#

CUDAインストール

はじめ、NVIDIAのビデオドライバーをインストールしてからCUDAのインストールかなって思ったが、
間違いのようで、NVIDIAのビデオドライバー(NVIDIA-Linux-x86_64-361.28.run)は不要みたい。

ここにてhttps://developer.nvidia.com/cuda-downloads所定の情報を入力してCUDAインストールパッケージを入手した
2016y03m19d_133023172.png

ファイル名は、cuda-repo-rhel7-9.0.176-1.x86_64.rpm
指示に従い、まずはこのrpmをインストールします。

[root@cuda ~]# yum localinstall ./cuda-repo-rhel7-9.0.176-1.x86_64.rpm

これでcuda向けのリポジトリが登録されました。

[root@cuda ~]# ls -l  /etc/yum.repos.d/cuda.repo
-rw-r--r--. 1 root root 204  9月  2 19:25 /etc/yum.repos.d/cuda.repo
 
[root@cuda ~]# cat /etc/yum.repos.d/cuda.repo
[cuda]
name=cuda
baseurl=http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64
enabled=1
gpgcheck=1
gpgkey=http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/7fa2af80.pub
[root@cuda ~]#

cudaを利用するためにはLinux kernelにnvidia kernelモジュールを組み込む必要がある
初回はコンパイルしてインストールしてくれるのだが、yum updateとかでkernelがupdateすると
手動で再度コンパイルする手間が生じます。

dkmsを利用するとこのlinux kernelのupdateにあわせて随時再コンパイルしてくれます

ここではdkmsを利用します.
また「コンパイル」なので開発環境も一緒にインストールします。

[root@cuda ~]# yum groupinstall "Development Tools"    <--開発環境のインストール
 
[root@cuda ~]# yum install epel-release                <--dkmsパッケージ向けにリポジトリをインストール

*yum install cudaにてkernelモジュール作成に必要な開発環境の一部が同時にインストールされる
しかしperlがインストールされないので途中でエラーとなる。なら初めからと、開発環境を丸ごと入れている

そしてcudaをインストールします

[root@cuda ~]# yum install cuda

パッケージダウンロード総量1.5GBと結構大きい。

カーネル確認

再起動して

[root@cuda ~]# lsmod | grep nvidia
nvidia               8536971  0
drm                   349210  5 ttm,drm_kms_helper,nvidia,vmwgfx
i2c_core               40582  4 drm,i2c_piix4,drm_kms_helper,nvidia
[root@cuda ~]#

と確かに組み込まれている。詳細は

[root@cuda ~]# modinfo nvidia
filename:       /lib/modules/3.10.0-327.10.1.el7.x86_64/extra/nvidia.ko
alias:          char-major-195-*
version:        352.79
supported:      external
license:        NVIDIA
rhelversion:    7.2
 :

とOKみたい。

試してみる

サンプルプログラムがあるので、それを実行してみた

[root@cuda ~]# /usr/local/cuda/bin/cuda-install-samples-7.5.sh .
[root@cuda ~]# cd NVIDIA_CUDA-7.5_Samples/
[root@cuda NVIDIA_CUDA-7.5_Samples]# 
[root@cuda NVIDIA_CUDA-7.5_Samples]# make
   :

とコンパイルは行われるのだが、それを実行しようとすると、ことごとく

[root@cuda cppIntegration]# ./cppIntegration
CUDA error at ../../common/inc/helper_cuda.h:1111 code=10(cudaErrorInvalidDevice) "cudaGetDeviceCount(&device_count)"

CUDA error at ../../common/inc/helper_cuda.h:1111 code=10(cudaErrorInvalidDevice) "cudaGetDeviceCount(&device_count)"
と言われる....
ハイエンドなカードならできるようなのだが....

リストがある
https://en.wikipedia.org/wiki/List_of_IOMMU-supporting_hardware

回避方法

「VMWare ESXi: Passing Through an NVidia graphics card to Windows」
https://ianmcdowell.net/blog/esxi-nvidia/
「hypervisor.cpuid.v0 = FALSE」をESXiのパラメータに加えると可能になるらしい...
当該仮想マシンのプロパティから「構成パラメータ」を開き
2017y11m07d_213321891.png
「構成パラメータ」画面を表示させる。その画面の「行の追加」ボタンを押下して
エントリーの最後に新規入力欄を作る
2017y11m07d_213512440.png

新規入力欄の名前には「hypervisor.cpuid.v0」、その値には「False」を記入します
2017y11m07d_213829838.png
その後、「構成パラメータ」画面を閉じるために「OK」ボタンを押下して、
次に仮想マシンのプロパティ画面も「OK」ボタンを押下して閉じます


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-11-08 (水) 02:35:15 (35d)