Esen!
nVidia grafik işlemcisini programlama için çoğu kişi gibi bende CUDA kullanıyorum. Microsoft Visual Studio 2017 kurulu makinemde nVidia’nın sitesinden indirilen en son CUDA kurulu. Herşey çok güzel giderken Visual Studio bir “güncelleme” yayınladı ve bende sistemimi güncelledim. Bir de baktım ki çalışan CUDA kodlarım artık çalışmıyor. Sonuçta şu hatayı alıyorum:
1 2 3 4 5 6 7 8 9 10 11 12 |
1>------ Rebuild All started: Project: 00_FirstProgram, Configuration: Debug x64 ------ 1> 1>C:\Users\BlueDeviL\Documents\Visual Studio 2017\Projects\Cuda\CudaSolution\00_FirstProgram>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\bin\nvcc.exe" -ccbin "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\bin\HostX86\x64" -x cu -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -g -D"WIN32" -D"WIN64" -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd " -o x64\Debug\kernel.cu.obj "C:\Users\BlueDeviL\Documents\Visual Studio 2017\Projects\Cuda\CudaSolution\00_FirstProgram\kernel.cu" -clean 1>kernel.cu 1>Compiling CUDA source file kernel.cu... 1> 1>C:\Users\BlueDeviL\Documents\Visual Studio 2017\Projects\Cuda\CudaSolution\00_FirstProgram>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\bin\nvcc.exe" -gencode=arch=compute_30,code=\"sm_30,compute_30\" --use-local-env -ccbin "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\bin\HostX86\x64" -x cu -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static -g -D"WIN32" -D"WIN64" -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Fdx64\Debug\vc141.pdb /FS /Zi /RTC1 /MDd " -o x64\Debug\kernel.cu.obj "C:\Users\BlueDeviL\Documents\Visual Studio 2017\Projects\Cuda\CudaSolution\00_FirstProgram\kernel.cu" 1>c:\program files\nvidia gpu computing toolkit\cuda\v9.2\include\crt/host_config.h(133): fatal error C1189: #error: -- unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported! 1>kernel.cu 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 9.2.targets(712,9): error MSB3721: The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\bin\nvcc.exe" -gencode=arch=compute_30,code=\"sm_30,compute_30\" --use-local-env -ccbin "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\bin\HostX86\x64" -x cu -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static -g -D"WIN32" -D"WIN64" -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Fdx64\Debug\vc141.pdb /FS /Zi /RTC1 /MDd " -o x64\Debug\kernel.cu.obj "C:\Users\BlueDeviL\Documents\Visual Studio 2017\Projects\Cuda\CudaSolution\00_FirstProgram\kernel.cu"" exited with code 2. 1>Done building project "00_FirstProgram.vcxproj" -- FAILED. ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ========== |
Özellikle uygun olmayan Microsoft Visual Studio ( ) hatası beni yanlış yönlendirdi.
1 |
1>c:\program files\nvidia gpu computing toolkit\cuda\v9.2\include\crt/host_config.h(133): fatal error C1189: #error: -- unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported! |
Maalesef Microsoft’un yaptığı bu güncelleme sonrası eski CUDA dosyalarınız çalışmayacak. Çünkü bir uyumsuzluk var ve NVIDIA ekibi henüz ne bir güncelleme ne de bir yama yayımlamadı. Ama bir çözüm var:
ÇÖZÜM
Microsoft’un güncesinde “yan yana önceki VisualC araç takımlarıyla nasıl çalışılabilir adlı bir yazı yayımlandı: Side-by-side minor version MSVC toolsets in Visual Studio 2017
Ben de bu yazıda yazılanları takip edip kendi projelerime uyguladım ve sonuç aldım. Artık CUDA projelerimi derleyebiliyorum.
1. Öncelikle anlamamız gereken bir konu var. Son güncelleme ile birlikte Visual C derleme araç takımımız değişti. Biz önceki versiyonu tekrar yükleyeceğiz ve ikisinden birisini derlemek için seçebileceğiz. Şimdi “Visual Studio Installer” açalım ve işaretlediğim araç takımını yükleyelim:
2. Güncellemeden sonra veya ilk kurulumda varsayılan ne ise derlemeler o araç setiyle yapılır. O yüzden biz proje dosyamızı (.vcxproj) düzenlemeliyiz. Ama önce ilgilendiğimiz önceki sürüm araç takımımızın .props dosyasını “solution – çözüm” dizinine kopyalayalım:
Burası benim bilgisayarımda aşağıdaki dizin altında:
1 |
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\14.11 |
Buradaki “Microsoft.VCToolsVersion.14.11.props” dosyasını yukarıda bahsettiğim gibi “solution – çözüm” dizinine kopyalayalım.
3.Şimdi “solution – çözüm” dosyamızı visual studio ile açalım var projemize sağ tıklayarak “Unload Project” seçeneğini seçelim.
4.Unload işlemini başarıyla yapınca projemizin yanında unavailable yazıyor bu haldeyken sağ tıklayarak “Edit projeadi.vcproj” seçeneğini seçiyoruz.
5. Açılan pencerede aşağıdaki satırı bulalım:
1 |
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
Sonra bu satırın üzerine aşağıdaki satırı da ekleyelim:
1 2 |
<Import Project="$(SolutionDir)\Microsoft.VCToolsVersion.14.11.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
6. Bu değişikliği yaptıktan sonra projeadi.vcproj dosyasını kaydedelim ve kapatalım. Projemize sağ tıklayıp “Load Project” seçeneğini seçelim.
Sonuç projemizi tekrar yükledikten sonra proje dakına sağ tıklayıp rebuild diyerek kodumuzu tekrar derleyebiliriz.
Umarım yararlı olmuştur.
İyi okumalar
Comments of this post