CUDA与Linux系统

CUDA与Linux系统

目录

CUDA与Linux平台    1

目录    2

1 CUDA安装    3

1.1 安装toolkit    3

1.2 安装显卡驱动    3

2 调式工具:CUDA GDB    3

3 分析工具:CUDA Profile    5

3.1 Visual Profiler:图形化    5

3.2 nvprof Profiler:命令行    6

4 集成工具:nsight Eclipse    8

4.1 CUDA编辑器    8

4.2 CUDA调试器    10

4.3 CUDA性能分析器    11

1. CUDA安装

在Linux系统上安装CUDA toolkit需要下载两个包:驱动和toolkit

  • cuda_7.0.28_linux.run
  • NVIDIA-Linux-x86_64-352.41.run

1.1 安装toolkit

toolkit包中提供多项功能,有显卡驱动、toolkit和samples;安装过程为:

  1. 退出X server在控制终端执行命令:init 3
  2. 启动安装包:执行命令:sh cuda_7.0.28_linux.run;
  3. 跳出安装须知:执行命令:strl + C,并输入accept
  4. 不进行显卡驱动安装:在第一个选项中输入命令:N
  5. 其它选项:其它选项都选择Y或者直接回车。
  6. 添加环境变量:~/.bashrc文件中添加如下两行

PATH=/usr/local/cuda-7.0/bin:$PATH

LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH

参考文献:CUDA_Getting_Started_Linux.pdf

1.2 安装显卡驱动

本来CUDA toolkit中自带显卡驱动,但是由于自动安装显卡驱动后,导致Linux系统图形界面无法启动,所以需要手动下载和安装显卡驱动,其安装过程为:

  1. 退出图形界面:运行命令为:init 3
  2. 启动:启动驱动文件,命令为:sh NVIDIA-Linux-x86_64-352.41.run -a;
  3. 配置:安装完成后,会提示是否运行nvidia显卡工具来自动更新xorg.conf文件,选择"Yes";
  4. 返回图形界面:在显卡安装完成后,返回图形界面,命令为:startx

参考文献:Linux下,手动安装NVIDIA显卡官方驱动;

2. 调式工具:CUDA GDB

对于CUDA的调式工具GDB,需要使用GPU的设备。但是当在图形界面时,GPU设备已经被占用着,所以若需要使用CUDA GDB需要退出X server,进入init 3。其使用过程为:

  1. 退出X server:在终端执行命令:init 3
  2. 编译:若源程序为:pmandel.cu,编译命令可以为:nvcc -g -G pmandel.cu -o pamandel;若是有makefile文件,则也可执行命令:make。如图 5所示。

图 1

  1. 启动GDB:执行命令:cuda-gdb pmandel;如图 6所示。

图 2

  1. 设置断点:可以在任何函数或行设置断点,如执行命令:break main;或break 21
  2. 开始调式:执行命令为:run;
  3. 继续执行:可以执行命令:continue,或是:C;如图 7所示。

图 3

  1. 单步执行:命令为:next,或是:n
  2. 显示信息:可以执行命令:info cuda Commands,其中的Commands可以是threads、blocks、warps和contexts等命令,其它信息可参考《cuda-gdb.pdf》。如图 8所示。

图 4

参考文献:cuda-gdb.pdf

3. 分析工具:CUDA Profile

3.1 Visual Profiler:图形化

Visual Profiler是NVIDIA提供的图形化分析工具,其在成功安装CUDA toolkit后,就能够使用。通过Profiler能够对CUDA 应用的CPU和GPU的时间节点进行分析,并能够调优CUDA应用的性能。Visual Profiler的简单使用方法如下所示:

1. 启动:在控制终端输入命令:nvvp;如图 5所示的启动后界面。

图 5

2. 新建session:其创建入口为:FileàNew Session,如图 6所示是新建Session对话框,在该对话框中的File输入框中输入需被分析的可执行文件。

图 6

3. 分析结果:在新建Session对话框中输入相应的可执行文件后,就能产生分析结果,如图 7所示。

图 7

3.2 nvprof Profiler:命令行

通过nvprof可以以命令行的形式分析和调优CUDA应用程序。nvprof的使用形式是:

nvprof    [options] [CUDA-application]    [application-arguments]

1) summary模型

这是nvprof的默认模型,在这个模型中只简单输出核函数和CUDA内存复制性能。如对于需要被测试的可执行文件boxFilterNPP,可直接执行命令:nvprof boxFilterNPP。如图 8所示的结果。

图 8

2) GPU-Trace和API-Trace模型

这个模型能够以时间轴顺序提供所有在GPU发生的活动点,每个核函数的执行或是复制/赋值都能够详细的显示。如图 9所示。

图 9

3) Event/metric Summary模型

通过这个模型能够在指定的NVIDIA GPU上显示所有可用的Event/metric,

图 10

4) Event/metric Trace Mode

通过这个模型能够显示每个核函数的event和metric值。如图 11所示。

图 11

参考文献:CUDA_Profiler_Users_Guide.pdf

4. 集成工具:nsight Eclipse

4.1 CUDA编辑器

Linux中也有CUDA的集成开发工具nsight。其中在CUDA toolkit中自带nsight,所以当成功安装toolkit后,就可以启动nsight。其使用过程为:

    1) 启动:在终端中输入:nsight;如图 1所示是启动后的nsight界面。

图 12

    2) 创建项目:在nsight界面中:FileàProjectàCUDA c/c++ projectàExecutableà其中一项,如图 2所示的Executable选项。

图 13

    3) 编译:创建可执行文件:右击项目àBuild Project; 如图 3所示。

图 14

    4) 执行右击项目àRun AsàCocal c/c++ Application;如图 4所示。

图 15

参考文献:nsight_Eclipse_Edition_getting_started.pdf;

4.2 CUDA调试器

nsight也集成了gdb,通过nsight可用非常方便了对cuda程序进行调式。其中若需要进入Debug模型需要退出X server,进入init 3。当单击Debug按钮时,就会自动进入Debug Perpspective, 如图 16所示。其中当进入Debug模式时,就会在main函数中暂停。其中在nsight的工具栏中有四个相关的调式按钮:

  • Step Info:进入函数;
  • Step Over单步执行;
  • Step Return退出函数;
  • Resume跳到下一断点。

图 16

4.3 CUDA性能分析器

nsight同时集成了Profiler的分析工具,当打开一个项目后就能够非常方便了进行性能分析。其分析Perpspective与visual Profiler一样,如图 17所示。

图 17

5. nvml库

5.1 安装方式

运行安装完nvml库后,

  • lib文件安装路径是:/usr/src/gdk/nvml
  • .h文件的安装路径是:/usr/include/nvidia/gdk/nvml.h

5.2 使用方式

  • lib文件

    将/usr/src/gdk/nvml/lib/目录下的两个文件复制到/usr/lib64,并覆盖以前文件。若在项目中需要使用该库,则需添加所以的lib路径,如在nsight项目中按如图 18所示进行添加。

图 18

  • .h文件

    若在项目中需要使用nvml库,则只需在源程序中包含nvml.h文件,同时在环境中需要添加nvml.h文件所在的路径,如图 19所示。

图 19

时间: 2024-10-17 08:06:19

CUDA与Linux系统的相关文章

查看Linux系统版本信息

一.查看Linux内核版本命令(两种方法): 1.cat /proc/version [[email protected]CentOS home]# cat /proc/versionLinux version 2.6.32-431.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Nov 22 03:15:09 UTC 2013 2.uname -a [

制作SD(8G)卡Linux镜像,使得ZC706开发板可以从SD卡启动进入Linux系统

转自网络,供学习记录使用,红色部分是我实验时,这篇文章和网站稍有出入的地方. 目的:制作SD(8G)卡Linux镜像,使得ZC706开发板可以从SD卡启动进入Linux系统 在http://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz/quickstart/zynq(姑且把这个链接成为链接1吧)链接中找到 图1 点击绿色字体的链接,下载镜像原始文件.这里有不同时期的版本,本说明中选择 图2 下载的原始文件为:2014_R2-

Linux系统基础.作业

要求以root用户登录系统,右击桌面打开终端,查看当前登陆Linux系统所使用的用户名 查看哪些用户在系统上工作 修改当前时间为2018年8月26号11:28 查看2015年10月份日历 使用两种方法查看ls命令的使用说明 清除屏幕 ctrl+L 使用"useradd tom"命令新建tom用户,为tom用户设置密码"123" 切换当前用户为tom 查看当前登陆Linux系统所使用的用户名

小白文科生眼中的Linux系统

我是一个正统的文科生,基本上在win的基础上长大,最开始接触的是Windows98(95虽然知道,但那时候太小了)然后是me,2000,再到XP,然后是vista,再然后就是使用量最大的7,然后是8,8.1,10,...基本上每个版本都用(玩)过,对win也可以说是有了基础的了解,13年暑假的时候,Android迅速崛起,从那个时候,刚刚知道Linux.在然后就开始疯狂的搜索Linux 的资料,那时候刚刚高中毕业,网上的资料基本都看不懂,虽然看不懂但还是找的津津有味. 记得2013年最先开始了解

老男孩教育每日一题-2017年5月11-基础知识点: linux系统中监听端口概念是什么?

1.题目 老男孩教育每日一题-2017年5月11-基础知识点:linux系统中监听端口概念是什么? 2.参考答案 监听端口的概念涉及到网络概念与TCP状态集转化概念,可能比较复杂不便理解,可以按照下图简单进行理解? 将整个服务器操作系统比喻作为一个别墅 服务器上的每一个网卡比作是别墅中每间房间 服务器网卡上配置的IP地址比喻作为房间中每个人 而房间里面人的耳朵就好比是监听的端口 当默认采用监听0.0.0.0地址时,表示房间中的每个人都竖起耳朵等待别墅外面的人呼唤当别墅外面的用户向房间1的人呼喊时

​查看Linux系统的所有配置命令

查看Linux系统的所有配置命令     1.查看主板的序列号: dmidecode | grep -i 'serial number'     2.查看CPU信息: cat /proc/cpuinfo dmesg | grep -i 'cpu' dmidecode -t processor     3.查看内存信息: cat /proc/meminfo free -m vmstat     5.查看网卡信息: dmesg | grep -i 'eth' cat /etc/sysconfig/h

Linux系统下的shutdown命令用于安全的关闭/重启计算机

Linux系统下的shutdown命令用于安全的关闭/重启计算机,它不仅可以方便的实现定时关机,还可以由用户决定关机时的相关参数.在执行shutdown命令时,系统会给每个终端(用户)发送一条屏显,提示关机操作.定时关机只需要一个简单的参数,既可以是倒计时,也可以是确切的时间. 命令格式 1 shutdown [选项] [时间] [消息] 并有如下选项: - k 不执行任何关机操作,只发出警告信息给所有用户 - r 重新启动计算机 - h 关机并彻底断电 - f 快速关机且重启动时跳过fsck

自动调整linux系统时间和时区与Internet时间同步

调整linux系统时间和时区与Internet时间同步 一.修改时区:# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改为中国的东八区# vi /etc/sysconfig/clockZONE="Asia/Shanghai"UTC=falseARC=false 二.配置新的时间日期设定:# date -s 2008/05/06 时间设定:# date -s 18:40:00 查看硬件时间(BIOS的):    hwclock

Linux系统时间管理

一.时区配置 显示时区 [[email protected] ~]# date -R Mon, 19 Dec 2016 14:02:47 +0800 [[email protected] ~]# [[email protected] ~]# date +%z +0800 [[email protected] ~]# 主要就是后面的+0800,东八区 修改时区 [[email protected] ~]# vim /etc/sysconfig/clock [[email protected] ~]