2018年6月27日 星期三

CUDA 9.2 安裝全部失敗,如何安裝在 Visual Studio 2017

CUDA 9.2 安裝全部失敗,如何安裝在 Visual Studio 2017

會失敗主要原因在於安裝的時候會驗證電腦上所有 Visual Studio 的版本,如果不支援就不會讓你安裝,通常這種情況是出現在 VS2017 更新之後,現有的CUDA版本就不能裝了。
VS如果只是小更新而不是重大更新那麼其實還是可以用的,跳過驗證強制安裝即可,如果是大改版只能等CUDA推進下一版本了。
下面說明如何強只安裝,應該適用於任何時候~往後版本更新也可以這樣做

移除安裝驗證

如果有安裝RAR,直接對著你下載的程式按右鍵解壓縮,解壓縮不會有料夾記得不要按直接解壓縮至此。
然後就看到原本會解壓縮到暫存區的檔案了,找到裡面的資料夾
CUDAVisualStudioIntegration
這個裡面的
CUDAVisualStudioIntegration.nvi
這份文件使用文字編輯器打開,CUDA9.2 是88行到111行
不過還是建議你對照一下下面這段文字
<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"/>
把他們通通註解掉或是刪除,然後就打開上一頁的 setup.exe 正常安裝即可。這樣就可以避開驗證正常安裝了。
不過有兩個檔案不會安裝,也就是剛剛 CUDAVisualStudioIntegration 這個資料夾裡的兩個 .msi 檔案,分別是
  • NVIDIA NVTX Installer.x86_64.Release.v1.21018621.Win64.msi
  • NVIDIA_Nsight_Visual_Studio_Edition_Win64_5.6.0.18099.msi
手動打開並安裝即可,這不會有什麼影響因為上面兩個檔案是跟著VS的版本跑的,所以更新之後不認得就不給裝;大更新就只能等下一版,小更新如果沒影響到我們就跳過驗證安裝即可。

編譯範例檔案

除了安裝之外範例檔案的編輯也會限制,這個也要解除限制。具體細節是藏在
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include\crt\host_config.h
這一份文件裡面,找到裡面的
#if _MSC_VER < 1600 || _MSC_VER > 1913
把後面的版本限制移除改成
#if _MSC_VER < 1600
這樣就不會被阻擋了,好一點做法是查一下當前VS版本幾版跟進。
這裡要注意的是如果你這麼做了,而一段時間之後VS改版改太多CUDA版本已經不適用的時候不會跳警告出來。

參考

沒有留言:

張貼留言