LoginSignup
18
16

More than 5 years have passed since last update.

NVIDIAのドライバでOpenCLをやる

Last updated at Posted at 2014-08-13

OpenCLでDFTやろうかなって思ったのですが,導入でハマったので忘備録を.

OpenCL用のドライバをインストール

GPGPU用のドライバは各ベンダーで配布されています.
もし,GPUがNVIDIAであればNVIDIAの,AMDであればAMDのドライバを使います.
僕のマシンはNVIDIAが入っているので,NVIDIAのドライバを入れます.

昔はCUDA ToolkitとSDKは別々だったのですが,CUDA 6になった辺りから全部1つに統合されたみたいです.
下のリンクから該当する環境のインストーラを落としてください.

環境変数の確認

ドライバのインストールが終わると,自動的にパスが通っていると思います.
重要なパスは以下の4つです.

  • CUDA_PATH
  • CUDA_INC_PATH
  • CUDA_LIB_PATH
  • CUDA_BIN_PATH

ところが,僕の環境だとCUDA_PATHしか設定されていませんでした.
とてもつらいです.

もし,CUDA~PATHが設定されていなければ,コマンドプロンプトを開いて以下のコマンドを実行するか,バッチファイルに保存して実行させるかどちらかを試してみてください.

cuda_env.bat
setx /M CUDA_INC_PATH "%CUDA_PATH%\include"
setx /M CUDA_BIN_PATH "%CUDA_PATH%\bin"
setx /M CUDA_LIB_PATH "%CUDA_PATH%\lib"

ちなみに,CUDA_PATHのディレクトリは
インストール先/NVIDIA GPU Computing Toolkit\CUDA\v6.0
になっています.

Visual Studioでパスを通す

適当なC++プロジェクトを開きます.
今回は設定の仕方なので,面倒くさい場合は空のプロジェクトを作るといいでしょう.

プロジェクトのプロパティを開いて,以下の3点の設定をします.

  • インクルードディレクトリの設定
  • ライブラリディレクトリの設定
  • 依存ライブラリの設定

構成は「全ての構成」にしておいてください.
今回はお試しなのでDebugでもいいのですが,Releaseで設定し直すのが面倒くさいので,ライブラリ関係はなるべく全ての構成で設定すると楽です.

インクルードディレクトリの設定

[構成プロパティ]-[C/C++]-[全般]を開いてください.
追加のインクルードディレクトリと言う項目がありますので,$(CUDA_INC_PATH)と設定してください.

ライブラリディレクトリの設定

[構成プロパティ]-[リンカー]-[全般]を開いてください.
追加のライブラリディレクトリがあるはずなので,$(CUDA_LIB_PATH)\Win32と入力してください.

x64向けの設定方法は最後に書きます.

依存ライブラリの設定

[構成プロパティ]-[リンカー]-[入力]を開いてください
追加の依存ファイルというのがあるので,そこにOpenCL.libと入力してください.

これでビルドの準備ができました.

ビルドして実行してみる

以下のコードを入力してみて,何事もなければ成功です.
お疲れ様でした.

Source.cpp
#include <CL\cl.h>

int main() {
    cl_platform_id test;
    cl_uint num;
    cl_uint ok = 1;
    clGetPlatformIDs(ok, &test, &num);
    return 0;
}

x64の設定をしたい場合

x64でビルドする場合は,また面倒くさい設定をしなければなりません.
まずは,今までの設定を全て終わらせている状態にしてください.

プロジェクトのプロパティを開いて,構成マネージャを立ち上げてください.
構成マネージャに「アクティブソリューションプラットフォーム」というプルダウンリストがあります.
これをこれをクリックすると,<新規作成>という項目があるので,それをクリックします.

すると,新しいソリューションプラットフォームというウィンドウが出てくるので,そこの「新しいプラットフォームを入力(ry」というリストボックスから,「x64」を選択し,OKボタンを押します.

また,プロジェクトのプロパティに戻るのですが,構成を「すべての構成」,プラットフォームを「x64」にしてください.
[構成プロパティ]-[リンカー]-[全般]の「追加のライブラリディレクトリ」ですが,これを$(CUDA_LIB_PATH)\x64に変更してください.

ここからは独り言なのですが,もしかするとVisual Studioがもっと賢い子であれば,ライブラリディレクトリの子ディレクトリもプロジェクトに追加してくれると思うのですが,どうでしょう?

18
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
16