Ubuntu14.04 x64 qt集成cuda开发

来源:互联网 发布:java版qq还能用吗 编辑:程序博客网 时间:2024/05/29 19:11

Ubuntu14.04 x64 qt集成cuda开发

代码及文档 在"https://github.com/coues/cuda"能找到

系统环境

1ubuntu 14.04.4 LTS 64

2:显卡GTX 720

3cuda_7.5.18_linux.run

环境确认

root@coues-Lenovo-H3050:/home/coues# cat /etc/issue
Ubuntu 14.04.4 LTS \n \l

root@coues-Lenovo-H3050:/home/coues# uname -m
x86_64

root@coues-Lenovo-H3050:/home/coues# lspci |grep -i nvidia
01:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 720] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GK208 HDMI/DP Audio Controller (rev a1)

安装依赖

4:安装依赖包

root@coues-Lenovo-H3050:/home/coues#sudo apt-get install -y freeglut3-dev  build-essential libx11-dev  libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa-dev

5:卸载ubuntu原生带有的驱动  ##在我的系统环境没有安装原生驱动

sudo nvidia-uninstall

6:清除nvidia库

sudo apt-get --purge remove nvidia-*

7:屏蔽原生库

cd /etc/modprobe.d/

ls blacklist.conf

vi nvidia-install-disable-nouveau.conf

##没有安装原生驱动5-7步均不操作

关闭x服务

8:关闭x服务

root@coues-Lenovo-H3050:/home/coues#service lightdm stop

root@coues-Lenovo-H3050:/home/coues#service gdm stop  ##如果启用gdm也需要关闭

9:安装包下载位置

url:https://developer.nvidia.com/cuda-downloads

 


10: 安装

root@coues-Lenovo-H3050:/home/coues# chmod 777 cuda_7.5.18_linux.run

11:添加配置到系统环境

root@coues-Lenovo-H3050:/home/coues#vi ~/.bashrc

export CUDA=/usr/local/cuda-7.5

export PATH=$CUDA/bin:$PATH

export LD_LIBRARY_PATH=/usr/lib:$CYDA/lib64:$CUDA/lib:/lib:$LD_LIBRARY_PATH

12:使配置环境生效

root@coues-Lenovo-H3050:/home/coues#source ~/.bashrc

13:确认nvcc配置正确

root@coues-Lenovo-H3050:/home/coues# nvcc --version

nvcc: NVIDIA (R) Cuda compiler driver

Copyright (c) 2005-2015 NVIDIA Corporation

Built on Tue_Aug_11_14:27:32_CDT_2015

Cuda compilation tools, release 7.5, V7.5.17

 

验证环境

14:跑个Samples玩玩

 root@coues-Lenovo-H3050:/home/coues/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd# make
"/usr/local/cuda-7.5"/bin/nvcc -ccbin g++ -I../../common/inc  -m64    -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_52,code=compute_52 -o vectorAdd.o -c vectorAdd.cu
"/usr/local/cuda-7.5"/bin/nvcc -ccbin g++   -m64      -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_52,code=compute_52 -o vectorAdd vectorAdd.o
mkdir -p ../../bin/x86_64/linux/release
cp vectorAdd ../../bin/x86_64/linux/release
root@coues-Lenovo-H3050:/home/coues/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd# ./vectorAdd
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done

配置IDE

15:配置QT creator   开发环境

配置链接库,有两种方法

a:在/etc/ld.so.conf里面配置,加入"include /usr/loca/cuda-7.5/lib64",执行"ldconfig"

b:直接拷贝


16:新建一个工程,删除CPP文件,添加个编译器

 

17,修改pro文件

 

 

#-------------------------------------------------

#

# Project created by QtCreator 2016-04-11T11:27:57

#

#-------------------------------------------------

 

QT       += core

 

QT       -= gui

 

TARGET = testcuda

CONFIG   += console

CONFIG   -= app_bundle

 

TEMPLATE = app

 

 

# This makes the .cu files appear in your project

OTHER_FILES +=  ./vectorAdd.cu

 

# CUDA settings <-- may change depending on your system

CUDA_SOURCES += ./vectorAdd.cu

CUDA_SDK = "/usr/local/cuda-7.5"   # Path to cuda SDK install

CUDA_DIR = "/usr/local/cuda-7.5"            # Path to cuda toolkit install

 

# DO NOT EDIT BEYOND THIS UNLESS YOU KNOW WHAT YOU ARE DOING....

 

SYSTEM_NAME = unix         # Depending on your system either 'Win32', 'x64', or 'Win64'

SYSTEM_TYPE = 64            # '32' or '64', depending on your system

CUDA_ARCH = sm_21           # Type of CUDA architecture, for example 'compute_10', 'compute_11', 'sm_10'

NVCC_OPTIONS = --use_fast_math

# include paths

INCLUDEPATH += $$CUDA_DIR/include

# library directories

QMAKE_LIBDIR += $$CUDA_DIR/lib/

CUDA_OBJECTS_DIR = ./

# Add the necessary libraries

#CUDA_LIBS = -lcuda -lcudart  ##这行正确配置库以后可以不使用

# The following makes sure all path names (which often include spaces) are put between quotation marks

CUDA_INC = $$join(INCLUDEPATH,'" -I"','-I"','"')

#LIBS += $$join(CUDA_LIBS,'.so ', '', '.so')

LIBS += $$CUDA_LIBS

# Configuration of the Cuda compiler

CONFIG(debug, debug|release) {

    # Debug mode

    cuda_d.input = CUDA_SOURCES

    cuda_d.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_cuda.o

    cuda_d.commands = $$CUDA_DIR/bin/nvcc -D_DEBUG $$NVCC_OPTIONS $$CUDA_INC $$NVCC_LIBS --machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}

    cuda_d.dependency_type = TYPE_C

    QMAKE_EXTRA_COMPILERS += cuda_d

}

else {

    # Release mode

    cuda.input = CUDA_SOURCES

    cuda.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_cuda.o

    cuda.commands = $$CUDA_DIR/bin/nvcc $$NVCC_OPTIONS $$CUDA_INC $$NVCC_LIBS --machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}

    cuda.dependency_type = TYPE_C

    QMAKE_EXTRA_COMPILERS += cuda

}

 

18:运行结果

 


 

 

 

 

 

 

 

0 0