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.