I am new to cuda and tried to run a simple vector add sample that I found online to get started. I am using win10 64bit and visual studio 2017.
#include "cuda_runtime.h"
#include "cuda.h"
#include "device_launch_parameters.h"
#include <iostream>
#include <math.h>
// Kernel function to add the elements of two arrays
__global__
void add(int n, float *x, float *y)
{
int index = threadIdx.x;
int stride = blockDim.x;
for (int i = index; i < n; i += stride)
y[i] = x[i] + y[i];
}
int main(void)
{
int N = 1 << 20;
float *x, *y;
// Allocate Unified Memory – accessible from CPU or GPU
cudaMallocManaged(&x, N * sizeof(float));
cudaMallocManaged(&y, N * sizeof(float));
// initialize x and y arrays on the host
for (int i = 0; i < N; i++) {
x[i] = 1.0f;
y[i] = 2.0f;
}
// Run kernel on 1M elements on the GPU
add <<<1, 1 >>>(N, x, y);
// Wait for GPU to finish before accessing on host
cudaDeviceSynchronize();
// Check for errors (all values should be 3.0f)
float maxError = 0.0f;
for (int i = 0; i < N; i++)
maxError = fmax(maxError, fabs(y[i] - 3.0f));
std::cout << "Max error: " << maxError << std::endl;
// Free memory
cudaFree(x);
cudaFree(y);
return 0;
}
I used the "Developer Command Prompt for VS2017" since the window's command prompt is giving me
nvcc fatal : Cannot find compiler 'cl.exe' in PATH
and the online solutions didn't work for me. Then I ran this command(the --compiler -options solved some of the errors already)
nvcc add.cu --compiler-options "-D _WIN64"
but the compiler is still giving me errors
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(1824): error: class template "std::result_of" has already been defined
C:\Programming\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\type_traits(1824): error: class template "std::result_of" has already been defined
I have been looking for solutions. Seems like the other people with the similar problem were having issues with their included headers but my sample code is downloaded from the internet and the person who uploaded it didn't have any problem with it, which makes me confused on what part of the program have the problem.
P.S.: I don't know if my cuda is installed properly. Details: I wasn't able to install cuda on my windows, the installation keeps telling me installation failed. Then I found a solution in this link at post #19: https://devtalk.nvidia.com/default/topic/1035535/cuda-setup-and-installation/cuda-9-2-does-not-work-with-visual-studio-2017-15-7-1/2 It seems to work fine but I don't know if it was the problem.