Cuda cannot find my graphic card?

I installed CUDA toolkit and NSight plugin for VS 2017. Did all those fixes to enable creating CUDA project in VS2017. However when I am running this pre-generated code:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

#include <stdio.h>

cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size);

__global__ void addKernel(int *c, const int *a, const int *b)
{
    int i = threadIdx.x;
    c[i] = a[i] + b[i];
}

int main()
{
    const int arraySize = 5;
    const int a[arraySize] = { 1, 2, 3, 4, 5 };
    const int b[arraySize] = { 10, 20, 30, 40, 50 };
    int c[arraySize] = { 0 };

    // Add vectors in parallel.
    cudaError_t cudaStatus = addWithCuda(c, a, b, arraySize);
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "addWithCuda failed!");
        return 1;
    }

    printf("{1,2,3,4,5} + {10,20,30,40,50} = {%d,%d,%d,%d,%d}\n",
        c[0], c[1], c[2], c[3], c[4]);

    // cudaDeviceReset must be called before exiting in order for profiling and
    // tracing tools such as Nsight and Visual Profiler to show complete traces.
    cudaStatus = cudaDeviceReset();
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "cudaDeviceReset failed!");
        return 1;
    }

    return 0;
}

// Helper function for using CUDA to add vectors in parallel.
cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size)
{
    int *dev_a = 0;
    int *dev_b = 0;
    int *dev_c = 0;
    cudaError_t cudaStatus;

    // Choose which GPU to run on, change this on a multi-GPU system.
    cudaStatus = cudaSetDevice(0);
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "cudaSetDevice failed!  Do you have a CUDA-capable GPU installed?");
        goto Error;
    }

    // Allocate GPU buffers for three vectors (two input, one output)    .
    cudaStatus = cudaMalloc((void**)&dev_c, size * sizeof(int));
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "cudaMalloc failed!");
        goto Error;
    }

    cudaStatus = cudaMalloc((void**)&dev_a, size * sizeof(int));
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "cudaMalloc failed!");
        goto Error;
    }

    cudaStatus = cudaMalloc((void**)&dev_b, size * sizeof(int));
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "cudaMalloc failed!");
        goto Error;
    }

    // Copy input vectors from host memory to GPU buffers.
    cudaStatus = cudaMemcpy(dev_a, a, size * sizeof(int), cudaMemcpyHostToDevice);
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "cudaMemcpy failed!");
        goto Error;
    }

    cudaStatus = cudaMemcpy(dev_b, b, size * sizeof(int), cudaMemcpyHostToDevice);
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "cudaMemcpy failed!");
        goto Error;
    }

    // Launch a kernel on the GPU with one thread for each element.
    addKernel<<<1, size>>>(dev_c, dev_a, dev_b);

    // Check for any errors launching the kernel
    cudaStatus = cudaGetLastError();
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "addKernel launch failed: %s\n", cudaGetErrorString(cudaStatus));
        goto Error;
    }
    
    // cudaDeviceSynchronize waits for the kernel to finish, and returns
    // any errors encountered during the launch.
    cudaStatus = cudaDeviceSynchronize();
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "cudaDeviceSynchronize returned error code %d after launching addKernel!\n", cudaStatus);
        goto Error;
    }

    // Copy output vector from GPU buffer to host memory.
    cudaStatus = cudaMemcpy(c, dev_c, size * sizeof(int), cudaMemcpyDeviceToHost);
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "cudaMemcpy failed!");
        goto Error;
    }

Error:
    cudaFree(dev_c);
    cudaFree(dev_a);
    cudaFree(dev_b);
    
    return cudaStatus;
}

It fails at the line cudaStatus = cudaSetDevice(0); in the function addWithCuda() and prints the error: “cudaSetDevice failed! Do you have a CUDA-capable GPU installed?”

I have NVidia GTX 1050 2GB GPU and just recently updated its driver and restarted my computer.

I also run nvidia-smi and got this output:

Mon Apr 08 21:43:57 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 399.24                 Driver Version: 399.24                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 1050   WDDM  | 00000000:01:00.0  On |                  N/A |
| 29%   28C    P8    N/A /  65W |    653MiB /  2048MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1108    C+G   ...dows.Cortana_cw5n1h2txyewy\SearchUI.exe N/A      |
|    0      1176    C+G   Insufficient Permissions                   N/A      |
|    0      1904    C+G   C:\Windows\explorer.exe                    N/A      |
|    0      3128    C+G   ...ost.CLR.x86\ServiceHub.Host.CLR.x86.exe N/A      |
|    0      4368    C+G   ...42.60.0_x64__kzf8qxf38zg5c\SkypeApp.exe N/A      |
|    0      6944    C+G   ...t_cw5n1h2txyewy\ShellExperienceHost.exe N/A      |
|    0      8368    C+G   ...11411.0_x64__8wekyb3d8bbwe\Video.UI.exe N/A      |
|    0      9044    C+G   ...al\Binaries\Win64\EpicGamesLauncher.exe N/A      |
|    0      9472    C+G   ...\bin\cef\cef.win7x64\steamwebhelper.exe N/A      |
|    0      9724    C+G   ...ogram Files\Mozilla Firefox\firefox.exe N/A      |
|    0      9788    C+G   ...\Binaries\Win64\UnrealCEFSubProcess.exe N/A      |
|    0      9984    C+G   ...o017\Community\Common7\IDE\devenv.exe N/A      |
|    0     11572    C+G   ...ogram Files\Mozilla Firefox\firefox.exe N/A      |
|    0     11580    C+G   ...ogram Files\Mozilla Firefox\firefox.exe N/A      |
|    0     11840    C+G   ...ogram Files\Mozilla Firefox\firefox.exe N/A      |
|    0     12416    C+G   ...ogram Files\Mozilla Firefox\firefox.exe N/A      |
|    0     13136    C+G   ...ogram Files\Mozilla Firefox\firefox.exe N/A      |
+-----------------------------------------------------------------------------+

which seems ok, though i don’t understand what it says.
What should I do additionaly to make VS 2017 or NSight plugin or, CUDA find my card?

nvidia-smi output confirms you have a CUDA-capable GPU and it is actually being used by quite a few applications :-)

You don’t have a multi-GPU system from what I understand and see in the output of nvidia-smi. What happens if you try the application without the call to cudaSetDevice(0) and the associated status check?

Check whether you have an environment variable CUDA_VISIBLE_DEVICES defined.

Look at the actual error status returned by CUDA, rather than just checking whether it is something other than cudaStatusSuccess. The error code is an important indicator why the API call failed. You may have a mismatch between the installed driver and the installed CUDA version, for example.

which CUDA toolkit version did you install?

Not sure how to print the error code in console.

However I also don’t have this CUDA_VISIBLE_DEVICES variable. I have these, CUDA_PATH and CUDA_PATH_V10_1, NVCUDASAMPLES_ROOT, NVCUDASAMPLES10_1_ROOT and NVTOOLSEXT_PATH.

What value do i set to CUDA_VISIBLE_DEVICES variable?

nvcc version output:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Fri_Feb__8_19:08:26_Pacific_Standard_Time_2019
Cuda compilation tools, release 10.1, V10.1.105

Your driver 399.24 is too old for CUDA 10.1. Please refer to the handy table of minimum required driver versions for each CUDA version here:

[url]Release Notes :: CUDA Toolkit Documentation

Recommendation: Download the latest driver for your particular GPU from the NVIDIA website and install it.

Yep, it calculates something! It works now after installing newer driver.
Thanks.