Cuda no longer work when installing new ubuntu update - DeepTalk - Deep Learning Community

Cuda no longer work when installing new ubuntu update

post by binhvanpham on Sep 21, 2018

Hi I just recently make update to latest ubuntu version. However, cuda no longer work.

When I compile using nvcc I got this msg

nvcc warning : The ‘compute_20’, ‘sm_20’, and ‘sm_21’ architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).

In file included from /usr/local/cuda/bin/…//include/cuda_runtime.h:78:0, from :0: /usr/local/cuda/bin/…//include/host_config.h:119:2: error: #error – unsupported GNU version! gcc versions later than 5 are not supported! #error – unsupported GNU version! gcc versions later than 5 are not supported! ^~~~~

Would you please help reinstall CUDA?

Thank you,

–Binh Pham

post by sabalaba on Sep 24, 2018

Hey Binh,

You can try to use Lambda Stack. Lambda Stack: an AI software stack that's always up-to-date

That will install TensorFlow with GPU support / CUDA / Drivers / etc. Let us know if that one-liner works:


LAMBDA_REPO=$(mktemp) && 
wget -O${LAMBDA_REPO} https://lambdalabs.com/static/misc/lambda-stack-repo.deb && 
sudo dpkg -i ${LAMBDA_REPO} && rm -f ${LAMBDA_REPO} && 
sudo apt-get update && sudo apt-get install -y lambda-stack-cuda

post by binhvanpham on Sep 24, 2018

Hi,

The command works after I added --allow-downgrades. However, when I run a test cuda code, it doesn’t work. It gives me wrong result. This code works before. Below is my test code and output.

CODE:

#include <stdio.h>

**global** void cube(float * d\_out, float * d\_in){

// Todo: Fill in this function

int idx = threadIdx.x;

float f = d\_in[idx];

d\_out[idx] = f _f_ f;
}

int main(int argc, char ** argv) {

const int ARRAY\_SIZE = 96;

const int ARRAY\_BYTES = ARRAY\_SIZE * sizeof(float);

// generate the input array on the host

float h\_in[ARRAY\_SIZE];

for (int i = 0; i < ARRAY\_SIZE; i++) {

h\_in[i] = float(i);
}

float h\_out[ARRAY\_SIZE];

// declare GPU memory pointers

float * d\_in;

float * d\_out;

// allocate GPU memory

cudaMalloc((void**) &d\_in, ARRAY\_BYTES);

cudaMalloc((void**) &d\_out, ARRAY\_BYTES);

// transfer the array to the GPU

cudaMemcpy(d\_in, h\_in, ARRAY\_BYTES, cudaMemcpyHostToDevice);

// launch the kernel

cube<<<1, ARRAY\_SIZE>>>(d\_out, d\_in);

// copy back the result array to the CPU

cudaMemcpy(h\_out, d\_out, ARRAY\_BYTES, cudaMemcpyDeviceToHost);

// print out the resulting array

for (int i =0; i < ARRAY\_SIZE; i++) {

printf(“%f”, h\_out[i]);

printf(((i % 4) != 3) ? “\t” : “\n”);
}

cudaFree(d\_in);

cudaFree(d\_out);

return 0;
}

OUTPUT:

64956.226562 -3442308913561600.000000 -0.040856 -8858266431913984.000000

0.000000 0.000000 0.000000 0.000000

0.000000 0.000000 -0.000000 0.000000

0.000000 0.000000 -nan -nan

0.000000 0.000000 0.000000 0.000000

0.000000 0.000000 0.000000 0.000000

0.000000 0.000000 0.000000 0.000000

0.000000 0.000000 -49057123615670591891177472.000000 0.000005

-0.000000 0.000000 -344859.468750 0.000000

0.000000 0.000000 0.000000 0.000000

0.000000 0.000000 -49057123615670591891177472.000000 0.000005

-0.000000 0.000000 -702221.000000 0.000000

-6630776053649813224172895258552565760.000000 0.000000 -702323.312500 0.000000

-1446412.000000 0.000000 0.000000 0.000000

-0.000000 0.000000 -702231.437500 0.000000

-0.000000 0.000000 -0.000000 0.000000

-1446958.000000 0.000000 -0.000000 0.000000

-0.000000 0.000000 -427953.250000 0.000000

-0.000000 0.000000 -307492.281250 0.000000

0.000000 0.000000 0.000000 0.000000

-0.000000 0.000000 -0.000000 0.000000

0.000000 0.000000 -0.000000 0.000000

-1172276.000000 0.000000 0.000000 0.000000

-0.000000 0.000000 -0.000000 0.000000

Please help,

Thanks Sabalaba,

–Binh Pham

post by sabalaba on Oct 3, 2018

What is the expected output? What did you used to get on the old version? Seems odd that it would be different.