GeForce 1060搭載ノートPCにUbuntu 17.10 + NVIDIAドライバ + CUDA + Mathematia 8をインストール

MathematicaからCUDAを使いたかったので、GPU搭載のノートPCを購入してセットアップした。

購入PC

PC工房のGeForce 1060搭載ノートPC(OSなし) : STYLE-15FX093-i7-RNFR [OS LESS]

  • CPU: Intel Core i7-7700HQ 2.8GHz
  • Memory: 16GB
  • Storage: SSD 240GB + HDD 2TB
  • GPU: NVIDIA GeForce 1060 6GB

Ubuntu 17.10 日本語Remixをダウンロード

旧PC(Ubuntu 16.04)で Ubuntu Desktop 日本語 Remixのダウンロードから、ubuntu-ja-17.10-desktop-amd64.isoをダウンロード。 ddでUSBメモリに書き込む。

sudo dd if=ubuntu-ja-17.10-desktop-amd64.iso of=/dev/sde status=progress

ファームウェア設定

新PCに電源を入れ、ファームウェア設定画面に入り、起動モードをUEFIからBIOSに変更する。

Ubuntuインストール

USBメモリを挿入してPCを再起動し、インストールする。

  • 言語は日本語を選択
  • サードパーティー製のドライバを・・・にチェック
  • SSD(/dev/sda)を「/」(ext4)に、HDD(/dev/sdb)を「/home」にマウント
  • ブートローダを/dev/sdaにインストール
  • ホームディレクトリを暗号化にチェック(お好みで)

インストールができたらUSBメモリを抜いて再起動。

Ubuntuが無事に起動し、ログインできたら、まずはディレクトリ名を日本語から英語に直してから作業開始。

LANG=C xdg-user-dirs-gtk-update

DKMSがうまく動かないので、カーネルのバージョンを固定する。

sudo apt-mark hold linux-generic linux-image-generic linux-headers-generic

NVIDIA Driver

公式リポジトリにあるnvidia-387をインストールする。 デフォルトのnouveauの無効化は不要だった。

sudo apt update
sudo apt install nvidia-387

CUDA 9.1

CUDA Toolkit 9.1 DownloadからUbuntu 17.04用の「deb (network)」をダウンロード。

sudo dpkg -i cuda-repo-ubuntu1704_9.1.85-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1704/x86_64/7fa2af80.pub
sudo apt update
sudo apt install cuda

環境変数を設定する。

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda:$LD_LIBRARY_PATH

Mathematica 8.0.4 Home Edition

代理店の手順に従い、 Wolframシステム移行フォームで、新しいアクティベーションキーを取得する。

アクティベーションキーが記載されたメールが届いたら、インストールスクリプトを起動する。 インストール途中に届いたアクティベーションコードを入力。

sudo ./Mathematica_8.0.4_Japanese_LINUX.sh

そのままでは日本語を扱えないので修正する。 /usr/local/Wolfram/Mathematica/8.0/Executables/Mathematicaの9行目付近を下記のように修正する。

#LANG=ja_JP.eucJP
LANG=ja_JP.UTF-8

ISO8859-1.mは書き換えなくても大丈夫だった。

CUDALinkの設定

Wolframのドキュメントには環境変数NVIDIA_DRIVER_LIBRARY_PATHCUDA_LIBRARY_PATHを設定すれば良い、と書いてあるが、実際には読みに行ってくれない。 (なぜか環境変数をMathematicaが読み込めていない)

なので、デフォルトの位置にシンボリックリンクを作成する。

sudo mkdir /usr/lib64
sudo ln -s /usr/lib/nvidia-387/tls/libnvidia-tls.so.387.26 /usr/lib64/libnvidia-tls.so.387.26
sudo ln -s /usr/lib/x86_64-linux-gnu/libcuda.so /usr/lib64/libcuda.so

Mathematicaを起動して確認する。

In[7]:= Needs["CUDALink`"]

In[8]:= CUDAQ[]

Out[8]= True

In[9]:= CUDAInformation[]

Out[9]= {1 -> {"Name" -> "GeForce GTX 1060", "Clock Rate" -> 1733000, 
   "Compute Capabilities" -> 6.1, "GPU Overlap" -> 1, 
   "Maximum Block Dimensions" -> {1024, 1024, 64}, 
   "Maximum Grid Dimensions" -> {2147483647, 65535, 65535}, 
   "Maximum Threads Per Block" -> 1024, 
   "Maximum Shared Memory Per Block" -> 49152, 
   "Total Constant Memory" -> 65536, "Warp Size" -> 32, 
   "Maximum Pitch" -> 2147483647, 
   "Maximum Registers Per Block" -> 65536, "Texture Alignment" -> 512,
    "Multiprocessor Count" -> 10, "Core Count" -> 320, 
   "Execution Timeout" -> 1, "Integrated" -> False, 
   "Can Map Host Memory" -> True, "Compute Mode" -> "Default", 
   "Texture1D Width" -> 131072, "Texture2D Width" -> 131072, 
   "Texture2D Height" -> 65536, "Texture3D Width" -> 16384, 
   "Texture3D Height" -> 16384, "Texture3D Depth" -> 16384, 
   "Texture2D Array Width" -> 32768, 
   "Texture2D Array Height" -> 32768, 
   "Texture2D Array Slices" -> 2048, "Surface Alignment" -> 512, 
   "Concurrent Kernels" -> True, "ECC Enabled" -> False, 
   "TCC Enabled" -> False, "Total Memory" -> 6367739902}}