前端之家收集整理的这篇文章主要介绍了
ubuntu 17.04 cuda,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_
301_0@Install NVIDIA CUDA on Ubuntu 17.04
@H_
301_0@The official download page only have package for 16.04 and 14.04,but actually Ubuntu 17.04 can install CUDA via apt directly.
https://launchpad.net/ubuntu/zesty/+source/nvidia-cuda-toolkit Install
@H_
301_0@Assume you already have NVIDIA graphic driver installed and just need CUDA. Only the following command is needed.
@H_
301_0@sudo apt-get install nvidia-cuda-dev nvidia-cuda-toolkit nvidia-nsight
@H_
301_0@NOTE: Ubuntu 17.04 use GCC6,which is not supported by nvcc,the package will install clang-3.8 (the default clang version for 17.04 is clang 4.0,they can co-exist). Compile
@H_
301_0@Compile cuda code using nvcc -ccbin clang-3.8 hello-world.cu,remember to use cu as suffix instead of c other wise you will have error like the following
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).
square.c:6:1: error: unknown type name ‘__global__’
__global__ void cube(float * d_out,float * d_in){
@H_
301_0@You can use the following code to test if you have correct installation
/*
* Example from Udacity Intro to Parallel Programming https://www.udacity.com/course/intro-to-parallel-programming--cs344
* nvcc -ccbin clang-3.8 cube.cu
*/
#include <stdio.h>
__global__ void cube(float * d_out,float * d_in){
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 = 64;
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,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;
}
@H_
301_0@Reference
https://www.udacity.com/course/intro-to-parallel-programming--cs344
@H_
301_0@
https://medium.com/@at15/install-nvidia-cuda-on-ubuntu-17-04-823300ab7bcc