visual-studio-2010 - tag - visual studio code path intellisense
Error de compilaciĆ³n de CUDA Visual Studio 2010 Express (3)
Estoy tratando de comenzar con la programación de CUDA en Windows usando Visual Studio 2010 Express en un Windows 7 de 64 bits. Me tomó un tiempo configurar el entorno, y acabo de escribir mi primer programa, helloWorld.cu :)
Actualmente estoy trabajando con el siguiente programa:
#include <stdio.h>
__global__ void add(int a, int b, int *c){
*c = a + b;
}
int main(void){
int c;
int *dev_c;
HANDLE_ERROR( cudaMalloc( (void**)&dev_c, sizeof(int) ) );
add<<<1,1>>>(2, 7, dev_c);
HANDLE_ERROR( cudaMemcpy( &c, dev_c, sizeof(int), cudaMemcpyDeviceToHost ) );
printf("2 + 7 = %d/n", c);
cudaFree( dev_c );
return 0;
}
Y aquí está el resultado de compilar con el conjunto de herramientas de la plataforma Windows7.1SDK:
1> C:/Users/User/documents/visual studio 2010/Projects/CudaTest2/CudaTest2>"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v5.0/bin/nvcc.exe" -gencode=arch=compute_10,code=/"sm_10,compute_10/" --use-local-env --cl-version -ccbin "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/x86_amd64" -I"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include" -I"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include" -G --keep-dir "x64/Debug" -maxrregcount=0 --machine 64 --compile -g -Xcompiler "/EHsc /W1 /nologo /O2 /Zi /MD " -o "x64/Debug/hello.cu.obj" "C:/Users/User/documents/visual studio 2010/Projects/CudaTest2/CudaTest2/hello.cu"
1>nvcc : fatal error : ''-ccbin'': expected a number
1>C:/Program Files (x86)/MSBuild/Microsoft.Cpp/v4.0/BuildCustomizations/CUDA 5.0.targets(592,9): error MSB3721: The command ""C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v5.0/bin/nvcc.exe" -gencode=arch=compute_10,code=/"sm_10,compute_10/" --use-local-env --cl-version -ccbin "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/x86_amd64" -I"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include" -I"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include" -G --keep-dir "x64/Debug" -maxrregcount=0 --machine 64 --compile -g -Xcompiler "/EHsc /W1 /nologo /O2 /Zi /MD " -o "x64/Debug/hello.cu.obj" "C:/Users/User/documents/visual studio 2010/Projects/CudaTest2/CudaTest2/hello.cu"" exited with code -1.
Sin embargo, con el conjunto de herramientas de la plataforma v100 obtengo este error:
C:/Users/User/documents/visual studio 2010/Projects/CudaTest2/CudaTest2>"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v5.0/bin/nvcc.exe" -gencode=arch=compute_10,code=/"sm_10,compute_10/" --use-local-env --cl-version 2010 -ccbin "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/x86_amd64" -I"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include" -I"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include" -G --keep-dir "x64/Debug" -maxrregcount=0 --machine 64 --compile -g -Xcompiler "/EHsc /W1 /nologo /O2 /Zi /MD " -o "x64/Debug/hello.cu.obj" "C:/Users/User/documents/visual studio 2010/Projects/CudaTest2/CudaTest2/hello.cu"
1>C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/include/math.h(455): error : dllexport/dllimport requires external linkage
1>C:/Users/User/documents/visual studio 2010/Projects/CudaTest2/CudaTest2/hello.cu(12): error : identifier "HANDLE_ERROR" is undefined
1>c:/program files/nvidia gpu computing toolkit/cuda/v5.0/include/math_functions.h(2900): error : function "hypotf" was referenced but not defined
1>C:/Program Files (x86)/MSBuild/Microsoft.Cpp/v4.0/BuildCustomizations/CUDA 5.0.targets(592,9): error MSB3721: The command ""C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v5.0/bin/nvcc.exe" -gencode=arch=compute_10,code=/"sm_10,compute_10/" --use-local-env --cl-version 2010 -ccbin "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/x86_amd64" -I"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include" -I"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include" -G --keep-dir "x64/Debug" -maxrregcount=0 --machine 64 --compile -g -Xcompiler "/EHsc /W1 /nologo /O2 /Zi /MD " -o "x64/Debug/hello.cu.obj" "C:/Users/User/documents/visual studio 2010/Projects/CudaTest2/CudaTest2/hello.cu"" exited with code 2.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
¿Podría alguien señalarme en la dirección correcta? He estado leyendo casi todas las publicaciones sobre problemas relacionados, he instalado y desinstalado algunas herramientas y todavía no puedo obtener una compilación adecuada.
Esto es porque Visual Studio no tiene el privilegio de acceder a la carpeta Temp .
navegue a C: / Users / userName / AppData / Local / Temp y cambie las reglas de seguridad de acceso del usuario actual (en este caso es userName) a control total
La respuesta es doble. El error de compilación HANDLE_ERROR que obtiene con la plataforma v100 está relacionado con la función HANDLE_ERROR que se define en los encabezados adicionales del libro "Cuda By Example". Reconozco el ejemplo, por lo que supongo que ese es el código que intenta compilar . No ha incluido este archivo porque no figura en la lista de códigos del libro ... un pequeño descuido del autor (es), imho.
Puede descargar los ejemplos de código y el encabezado adicional "book.h" que necesita de la página del libro: https://developer.nvidia.com/content/cuda-example-introduction-general-purpose-gpu-programming-0
Como referencia, este es el código HANDLE_ERROR de book.h:
static void HandleError( cudaError_t err,
const char *file,
int line ) {
if (err != cudaSuccess) {
printf( "%s in %s at line %d/n", cudaGetErrorString( err ),
file, line );
exit( EXIT_FAILURE );
}
}
#define HANDLE_ERROR( err ) (HandleError( err, __FILE__, __LINE__ ))
Lo siguiente funcionó para mí. Edite el archivo * C: / Archivos de programa (x86) / MSBuild / Microsoft.Cpp / v4.0 / BuildCustomizations / CUDA 5.0.prop * s. Busque PlatformToolset y agregue una entrada para Windows7.1SDK. Establezca el valor en 2010.
<CudaClVersion Condition="''$(PlatformToolset)'' == ''Windows7.1SDK''">2010</CudaClVersion>