2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

windows10とvisual studio 2017とcuda9.1を初めて使ってみる

Last updated at Posted at 2018-04-25

インストール

https://docs.microsoft.com/en-us/visualstudio/productinfo/installing-an-earlier-release-of-vs2017
でBuild Tools 15.4.5をダウンロード&実行
Visual C++ Build Toolsでデスクトップ用のvc++ 2015.3 v140 ツールセットを選択してインストール
https://developer.nvidia.com/cuda-downloads
で自分の環境に該当するファイルをダウンロードし、インストール
私の場合はWindows10, x86_64

コマンドプロンプト

VS2017用 x64 Native Toolsを実行、Visual Studio 2017 Developer Command Prompt v15.0を確認する。v15.6.4はダメ

ビルド

nvcc -w sample.cu
(-w : 警告を表示しない)

実行

a

OpenCV build with cuda

  1. cmake-guiでconfigureするとcuda toolkitがinstallされているなら、

    cuda関連の変数が自動的にcmake cacheに追加される。
  2. Build_opencv_worldをチェックするとdllファイルがworldに統合されてlinkするとき便利だが、libの容量が大きくなる。
  3. ★重要:visual studio 15 (2017)のコンパイラではエラーのため、cudaをコンパイルできないため、

    visual studio 14 (2015)のコンパイラをcuda専用のコンパイラとして指定する。

    「Visual C++ Build Toolsでデスクトップ用のvc++ 2015.3 v140 ツールセット」をinstallした場合、

    C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64/cl.exeがあるのでこのpathを

    CUDA_HOST_COMPILERに指定するとbuildできる。(MSVC 14.0 -> 2015)
  4. pythonがinstallされている場合、自動的に関連ライブラリーの設定が追加されるので必要ないなら消す。
  5. OPENCV_EXTRA_MODULES_PATHにopencv_contrib341のmodulesのpathを指定、

    たとえば、C:\opencv\opencv_contrib-3.4.1\modules
  6. コンパイル(Release mode)

    cmake.exe --build . --config Release --target INSTALL
  7. コンパイル(Debug mode)

    cmake.exe --build . --config Debug --target INSTALL
  8. 何かわけ分からないが、朝起きてまだcompileやってたのでビックリ。

    buildするのに非常に時間がかかった。大体、Releaseに3時間、Debugに14時間。

Opencv GPU example code (threshold)

example
//https://opencv.org/platforms/cuda.htmlのshort sampleの修正
//元のコードが旧バージョン用なので修正した
# include <iostream>
# include "opencv2/opencv.hpp"
# include "opencv2/cudaarithm.hpp"

int main(int argc, char* argv[])
{
	try
	{
		cv::Mat src_host = cv::imread("lenna.png", CV_LOAD_IMAGE_GRAYSCALE);
		cv::cuda::GpuMat dst, src;
        //host2device(src_host -> src)
		src.upload(src_host);
        //devicekernel(src -> dst)
		cv::cuda::threshold(src, dst, 128.0, 255.0, CV_THRESH_BINARY);
		cv::Mat result_host;
        //device2host(dst -> result_host)
		dst.download(result_host);

		cv::imshow("Result", result_host);
		cv::waitKey();
	}
	catch (const cv::Exception& ex)
	{
		std::cout << "Error: " << ex.what() << std::endl;
	}
	return 0;
}

ビルド with OpenCV 例

windows10の環境変数にopencv_world341.dllがあるpathを追加。

command(nvcc)
nvcc -w image.cpp gray.cu opencv_world341.lib -I C:\opencv\build\install\include -L C:\opencv\build\install\x64\vc15\lib
※command(cl)
cl opencvgpu.cpp /I C:\opencv\build\install\include /link C:\opencv\build\install\x64\vc15\lib\opencv_world341.lib
2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?