CUDA与Linux系统

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

备注:

若出现安装显卡驱动后,图形界面无法启动,则按如下方法解决:

  1. 进入命令行界面:ctrl+Alt+F2.

  2. 删除配置文件:/etc/X11/xorg.conf

参考文献: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。如图 1所示。

    图 1.png

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

    图 2.png

  4. 设置断点:可以在任何函数或行设置断点,如执行命令:break
    main
    ;或break 21

  5. 开始调式:执行命令为:run;

  6. 继续执行:可以执行命令:continue,或是:C;如图 3所示。

    图 3.png

  7. 单步执行:命令为:next,或是:n

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

    图 4.png

    参考文献: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.png
  2. 新建session:其创建入口为:FileNew Session,如图
    6所示是新建Session对话框,在该对话框中的File输入框中输入需被分析的可执行文件。


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


    图 7.png

3.2 nvprof Profiler:命令行


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

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

  1. summary模型

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


图 8.png
  1. GPU-Trace和API-Trace模型

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


图 9.png
  1. Event/metric Summary模型

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

图 10.png
  1. Event/metric Trace Mode

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

图 11.png

参考文献:CUDA_Profiler_Users_Guide.pdf

4. 集成工具:nsight Eclipse

========================

4.1 CUDA编辑器


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

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

    图 12.png

  2. 创建项目:在nsight界面中:FileProjectCUDA c/c++
    projectExecutable其中一项
    ,如图 13所示的Executable选项。

    图 13.png

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

图 14.png
  1. 执行右击项目Run AsCocal c/c++ Application;如图 15所示。
图 15.png

参考文献: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.png

4.3 CUDA性能分析器


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


图 17.png

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.png
  • .h文件

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

图 19.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容