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>