cuda nvcc vcvars64.bat couldn't find hatası çözümü

Merhaba bu ara cuda ile uğraşıyorum. Visual studio 2017 yeni güncellemesi cudada sorun oluşturdu. Eğer cudanın aracı nvcc sürekli "vcvars64.bat" bulunamıyor hatası veriyorsa sıkıntı windows değişkenleri PATH değişkenindedir.
Bu sorun sonraki python,matlab ve julia buildlerinde de karşınıza çıkabilir. Çözüm burada.
Açıklama:
Cuda hep 64bit program derlemeye çalışır,32bit desteği çok sınırlı. O yüzden vcvars64.bat dosyasını arar.

Çözüm:
Bir dosya yolunu değiştirin ama eskisini bir yere kaydedin.
Aslında buydu:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\SDK\ScopeCppSDK\VC\bin

Ama ben böyle değiştirdim:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

Hello.cu:
#include <stdio.h>

const int N = 7;
const int blocksize = 7;

__global__
void hello(char *a, int *b)
{
 a[threadIdx.x] += b[threadIdx.x];
}

int main()
{
 char a[N] = "Hello ";
 int b[N] = {15, 10, 6, 0, -11, 1, 0};

 char *ad;
 int *bd;
 const int csize = N*sizeof(char);
 const int isize = N*sizeof(int);

 printf("%s", a);

 cudaMalloc( (void**)&ad, csize );
 cudaMalloc( (void**)&bd, isize );
 cudaMemcpy( ad, a, csize, cudaMemcpyHostToDevice );
 cudaMemcpy( bd, b, isize, cudaMemcpyHostToDevice );

 dim3 dimBlock( blocksize, 1 );
 dim3 dimGrid( 1, 1 );
 hello<<<dimGrid, dimBlock>>>(ad, bd);
 cudaMemcpy( a, ad, csize, cudaMemcpyDeviceToHost );
 cudaFree( ad );

 printf("%s\n", a);
 return EXIT_SUCCESS;
}

Kontrol: < ve > olmadan
nvcc Hello.cu -o Hello.exe . yada linux ise Hello.out olabilir.
not: Cuda 9 visual studio ile sorunları var. cmake dosyaları oluşturmak iş görüyor. Program ismi karışık olunca nvcc derleme hatası veriyor.

Yorumlar

Popüler Yayınlar