A certain engineer "COMPLEX"

開発メモ その132 Visual Studio 2017 15.7 に CUDA 9.2 をインストールする

Introduction


CUDA Toolkitには、Visual Studioと統合されるVisual Studio Integrationが含まれています。
しかしながら、このツール、Visual Studioのバージョンをチェックしているのか、2018/09/01現在、最新のCUDA Toolkit、cuda_9.2.148_win10.exeでもインストールに失敗します。
というのも公式にも対応しているのは、Visual Studio 2017 15.6となっており対応していないことがうかがえます。
既に、15.8の登場が控えている状況でこれは非常にまずいです。

ということでその対応。

Resolution


公式のフォーラムでもこの問題は話題になっています。
Nvidiaの対応に不満の声が。

そんな中、下記のスレッドのinstalling CUDA 9.2 with VS2017 integration worked for me this way:と言う投稿で対応策が提示されました。

要点は、

  1. cuda_9.2.88_win10.exeをWinRARとかで展開
  2. CUDAVisualStudioIntegration\CUDAVisualStudioIntegration.nviを書き換える
  3. setup.exeを実行
  4. C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include\crt\host_config.hを書き換える

です。
私の試した手順だと、

  1. cuda_9.2.88_win10.exeを実行し、インストーラを起動して最初の画面で待機
  2. CUDAVisualStudioIntegration.nviを書き換える
  3. インストール続行
  4. C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include\crt\host_config.hを書き換える

でOKでした。

少し具体的に書くと、

CUDAVisualStudioIntegration.nvi を書き換える

インストーラを起動してから書き換える場合は、"%TEMP%\CUDA\CUDAVisualStudioIntegration\CUDAVisualStudioIntegration.nviが書き換える対象です。
そして、テキストエディタでCUDAVisualStudioIntegration.nviを開き、下記の箇所を削除します。


<custom phase="handleExistingNsight" action="HandleExistingNsight"/>
<custom phase="detectDisableCallHome" action="DetectDisableCallHome"/>
<msi platform="x86" phase="NsightMSINoTraffic" name="${{NsightMSI}}" condition="NsightMSIActionActiveAndNoTraffic" installText="Installing Nsight Visual Studio Edition">
<arg name="CUDAINSTALLER" value="true"/>
<arg name="DISABLE_NV_CH" value="1"/>
</msi>
<msi platform="x86" phase="NsightMSITraffic" name="${{NsightMSI}}" condition="NsightMSIActionActiveAndTraffic" installText="Installing Nsight Visual Studio Edition">
<arg name="CUDAINSTALLER" value="true"/>
<arg name="DISABLE_NV_CH" value="0"/>
</msi>
<confirm phase="Confirm-install" when="install" condition="NsightMSIActionActive">
<fileExists target="${{CommonAppData}}\NVIDIA Corporation\Nsight\Nsight_${{nsightVersion}}_InstallSummary.xml"/>
</confirm>
<standard phase="copytemp" condition="NsightMSIActionActive">
<copyFile source="NVIDIA_Nsight_Visual_Studio_Edition_Win64_5.6.0.18099.msi" target="${{CommonAppData}}\NVIDIA Corporation\Nsight\NVIDIA_Nsight_Visual_Studio_Edition_Win64_5.6.0.18099.msi" />

</standard>
<standard phase="createStartMenuStortcuts" condition="NsightMSIActionActive">
<createShortcutGroup location="startMenu" linkGroup="${{NsightProgramGroup}}"/>
<createShortcutLink location="startMenu" targetPath="${{CommonAppData}}\NVIDIA Corporation\Nsight\NVIDIA_Nsight_Visual_Studio_Edition_Win64_5.6.0.18099.msi" linkGroup="${{NsightProgramGroup}}" linkName="Nsight Redistributable"/>
</standard>
<custom phase="ParseWarningPage" action="ReadWarningPage" condition="NsightMSIActionActive"/>

<msi platform="x86" phase="NVTXMSI" name="${{NVTXMSI}}" installText="Installing NVTX"/>

host_config.h を書き換える

インストール完了後、C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include\crt\host_config.hを書き換えます。
これを書き換えないと、CUDAを使ってコンパイルする際にエラーが出てコンパイルが停止します。
130行目付近の


#if _MSC_VER < 1600 || _MSC_VER > 1913

#error -- unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported!

#elif _MSC_VER == 1600 /* _MSC_VERION == 1600 */

を、下記のようにします。


/*#if _MSC_VER < 1600 || _MSC_VER > 1913*/
#if _MSC_VER < 1600

#error -- unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported!

#elif _MSC_VER == 1600 /* _MSC_VERION == 1600 */

コメントを残す

メールアドレスが公開されることはありません。

%d人のブロガーが「いいね」をつけました。