标签:linux cuda OpenCL
环境:
系统:ubuntu14.04(linux)
显卡:NVIDIA
cuda版本:cuda8.0
转载标注:http://www.jb51.cc/article/p-uvstkrdj-bps.html
安装cuda8.0(使用deb安装)并测试
官方下载安装包:https://developer.nvidia.com/cuda-downloads
这里我使用的是基于ubuntu14.04的deb的local版本
下载完成之后参考 CUDA Quick Start Guide.pdf
进行安装测试(注意要找到对应系统的安装命令,不然会失败),具体如下:
【注意】
一定要将系统BIOS的快速启动和安全启动关闭,不然重启的时候会停留在登录界面无法进入linux系统(尝试网上的方式,没有成功),切记!
测试OpenCL
对NVIDIA的显卡来说,cuda安装完毕后OpenCL的环境自然就安装好了。
测试NVIDIA官方OpenCL示例程序
官方下载:https://developer.nvidia.com/cuda-toolkit-40
下载之后运行即可:sudo sh gpucomputingsdk_4.0.17_linux.run
上述步骤完成之后在~/
下会生成NVIDIA_GPU_Computing_SDK
文件夹,后续步骤:- 进入目录:
/home/popsheng/NVIDIA_GPU_Computing_SDK/OpenCL
,执行make
命令 - 进入目录:
/home/popsheng/NVIDIA_GPU_Computing_SDK/OpenCL/bin/linux/release
,运行对应可执行程序即可:./oclVectorAdd
,等待结果。
- 进入目录:
测试OpenCL下的“helloword”程序
测试程序如下:#include <stdio.h> #include <stdlib.h> #ifdef __APPLE__ #include <OpenCL/cl.h> #elif defined(__linux__) #include <CL/cl.h> #include <CL/opencl.h> #endif int main() { cl_int status=0; size_t deviceListSize; cl_uint numPlatforms; cl_platform_id platfomr=NULL; status=clGetPlatformIDs(0,NULL,&numPlatforms); printf("status=%d\n",status); return 0; }
编译之前需要添加动态库环境变量,具体如下:
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64\ ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
使用nvcc
将opencl下的nvcc编辑器设置为环境变量
安装cuda的时候只是临时设置环境变量:export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
,我们可以进一步将其设置为永久的环境变量,加入/etc.profile
注销再登录即可。- 编译运行
注意后面加上-lOpenCL:nvcc opencl-t0.c -lOpenCL
./a.out
之后可以看到status=0的正确结果。
- 编译运行
使用gcc或g++(毕竟nvcc是cuda程序的编辑器)
将下面两个环境变量加入/etc.profile
,注销再登录即可。
export C_INCLUDE_PATH=/usr/local/cuda/include${C_INCLUDE_PATH:+:${C_INCLUDE_PATH}}
export CPLUS_INCLUDE_PATH=/usr/local/cuda/include${CPLUS_INCLUDE_PATH:+:${CPLUS_INCLUDE_PATH}}
- 编译运行
命令后面同意需要加上-lOpenCL:gcc opencl-t0.c -lOpenCL
- 编译运行
-lOpenCL
的解释 gcc或g++下的编译选项,-llibrary:-l后面跟着动态库的名字,表示链接的时候需要将名为library的库链接进去。