范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

CUDA编程01搭建CUDA编程环境

  CUDA简介
  CUDA 是英伟达开发的一种并行计算平台和编程模型,使用它可以让编程人员非常方便地利用GPU 强大的算力。支持CUDA 的GPU 有数百个内核,可以同时运行数千个计算线程,这些内核拥有共享的资源,包括寄存器文件和共享内存,片上共享内存允许在这些内核上运行的并行任务共享数据而无需通过系统内存总线发送数据。CUDA 基于以下设计目的进行开发:为标准编程语言( C/C++ )提供一小组扩展支持并行算法的直接实现,使用CUDA C/C++ ,程序员可以专注于算法的并行化任务,而不是花时间在他们的实施上。支持应用程序同时使用 CPU 和GPU 进行异构计算,应用程序的串行部分在CPU 上运行,并行部分则被加载到GPU 上运行,CPU 和GPU 都是拥有独立内存空间的独立设备,允许在CPU 和GPU 上同时进行计算而不会争用内存资源。因此,CUDA 可以增量应用于现有应用程序。
  本文将介绍如何在 Ubuntu 20.04 中安装CUDA 开发工具,搭建CUDA 编程环境。安装前的准备工作
  每个 CUDA 版本对操作系统和其他依赖工具软件版本的要求可以从该版本的release notes 中找到,下图是CUDA 11.0 支持的Linux 发行版本和相关工具的支持版本,在安装CUDA 之前,我们需要做一些准备工作。
  1. 验证是否有可用的GPU
  要使用 CUDA 进行并行计算,首要前提是至少有一个英伟达GPU 设备。想要知道自己的机器上是否安装有英伟达GPU ,可以在命令行终端中执行以下命令:lspci | grep -i nvidia
  在我机器上得到的结果如下: 01:00.0 VGA compatible controller: NVIDIA Corporation TU104 [GeForce RTX 2080] (rev a1) 01:00.1 Audio device: NVIDIA Corporation TU104 HD Audio Controller (rev a1) 01:00.2 USB controller: NVIDIA Corporation TU104 USB 3.1 Host Controller (rev a1) 01:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU104 USB Type-C UCSI Controller (rev a1) 06:00.0 VGA compatible controller: NVIDIA Corporation TU104 [GeForce RTX 2080] (rev a1) 06:00.1 Audio device: NVIDIA Corporation TU104 HD Audio Controller (rev a1) 06:00.2 USB controller: NVIDIA Corporation TU104 USB 3.1 Host Controller (rev a1) 06:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU104 USB Type-C UCSI Controller (rev a1)
  从上面的结果中可以知道,我的机器上装了2个型号为 GeForce RTX 2080 的GPU 。
  我们也可以在英伟达网站上查询自己的 GPU 型号是否是支持CUDA 的:https://developer.nvidia.com/cuda-gpus 。
  2. 验证操作系统是否支持
  CUDA 开发工具仅在某些特定发行版本的Linux 操作系统,如果想知道自己使用的是哪个Linux 发行版本,可以在命令行终端中执行以下命令:uname -m && cat /etc/*release
  在 Ubuntu 20.04 系统中得到如下结果:x86_64 DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS" NAME="Ubuntu" VERSION="20.04.3 LTS (Focal Fossa)"
  3. 验证gcc版本
  使用 CUDA 进行开发需要gcc 编译器(运行CUDA 应用程序不需要),gcc 通常会作为Linux 的一部分进行安装,可以运行如下命令查看gcc 的版本:gcc --version
  在 Ubuntu 20.04 系统中得到如下结果,gcc 版本为9.3.0 :gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  4. 验证操作系统是否有正确的内核头文件和开发包
  CUDA 驱动程序要求在安装驱动程序时安装用于运行内核版本的内核头文件和开发包,在安装CUDA 之前最好先确认一下内核头文件和开发包,内核头文件的版本可以通过命令uname -r 进行查看,如果要安装当前系统运行内核对应的内核头文件和开发包,可以执行下面的命令:sudo apt-get install linux-headers-$(uname -r)
  6. 下载CUDA安装包
  CUDA 安装包可以从英伟达网站http://developer.nvidia.com/cuda-downloads 进行下载。下载的时候需要选择操作系统和计算架构等信息,可以选择deb 文件或runfile文件 进行安装,下载下来的安装文件中包含了GPU 驱动和CUDA 的库文件、头文件、例程、工具等。
  用runfile进行安装
  在上一节中介绍了 CUDA 可以通过deb 或runfile 文件进行安装,本文介绍使用runfile 文件进行安装的方法。
  1. 删除旧的GPU驱动
  在安装之前,如果我们的系统已经安装了英伟达 GPU 驱动,建议先运行如下命令进行删除:sudo apt-get --purge remove nvidia-*
  2. 禁用Nouveau驱动
  要安装英伟达 GPU 驱动,必须 先禁用Nouveau 驱动。首先通过下面的命令查看Nouveau 驱动是否已经被加载,如果执行命令有输出内容,说明Nouveau 驱动还没有被禁用。lsmod | grep nouveau
  要禁用 Nouveau 驱动,首先执行命令创建并编辑文件sudo vim /etc/modprobe.d/blacklist-nouveau.conf
  然后在文件中添加如下内容 blacklist nouveau options nouveau modeset=0
  再执行命令重新生成内核 initramfs 镜像文件sudo update-initramfs -u
  3. 安装CUDA
  上一步禁用 Nouveau 驱动后,我们需要重启系统并进入命令行模式,然后执行下面的命令进行安装(这里假设下载的runfile 文件为cuda_11.0.2_450.51.05_linux.run ,也就是CUDA 版本为11.0 ,GPU 驱动版本为450.51.05 ):sudo sh cuda_11.0.2_450.51.05_linux.run
  在安装过程中我们需要根据提示进行一些设置: 终止用户许可协议( End User License Agreement ),输入accept 然后按回车进行下一步。安装 GPU 驱动。安装 CUDA 开发工具,需要设置安装路径和是否创建/usr/local/cuda 软链接,可以直接按回车用默认的即可。安装 CUDA 例程,默认会安装在$(HOME)/NVIDIA_CUDA-11.0_Samples 路径下。
  安装好以后,需要设置一些环境变量: export PATH=/usr/local/cuda-11.0/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH export C_INCLUDE_PATH=/usr/local/cuda-11.0/include:$C_INCLUDE_PATH export CPLUS_INCLUDE_PATH=/usr/local/cuda-11.0/include:$CPLUS_INCLUDE_PATH
  如果要卸载安装好的 CUDA ,可以执行如下命令:sudo /usr/local/cuda-11.0/bin/cuda-uninstaller使用CUDA例程
  CUDA 开发工具的版本可以通过nvcc -V 命令进行查看,下面是我的执行结果:nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2020 NVIDIA Corporation Built on Thu_Jun_11_22:26:38_PDT_2020 Cuda compilation tools, release 11.0, V11.0.194 Build cuda_11.0_bu.TC445_37.28540450_0
  nvcc 命令用于编译CUDA 应用程序,它可以调用gcc 编译C语言程序,调用英伟达PTX 编译器编译CUDA 程序。
  上一节说了在 CUDA 安装过程中默认会在$(HOME)/NVIDIA_CUDA-11.0_Samples 目录下安装CUDA 例程,我们可以到该目录下执行命令make 对例程进行编译,编译之前可以先执行下面的命令安装必要的依赖库:sudo apt-get install g++ freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev libglfw3 libglfw3-dev
  编译成功的可执行文件会被拷贝到该目录下的 bin/x86_64/linux/release 文件夹下面,我们可以运行一些例程用于验证CUDA 环境是否已经构建好。
  运行 deviceQuery 可以查询每个GPU 的详细信息:
  运行 bandwidthTest 可以测试数据传输带宽:
  参考资料《 CUDA Installation Guide for Linux.pdf 》

揭秘美国为何数次发起战争,一贫如洗的阿富汗,又凭什么叫板美国在过去,中东一直都被称为富得流油的地区,中东一些主要产油国每年通过对外出口石油赚得钵满盆满。这些石油很快便引起了美国觊觎,随后美国采取武力来到中东地区发起石油战争。其实美国也是一个驻日美军连夜逃离!日本全境告急47万人陷入恐慌面临重大灾难前段时间,日本因为公开宣称要向大海排放核废水一事,引起了外界的广泛关注,世界多数国家纷纷强烈谴责日本这一不负责任的行为,而美国却对此表示沉默。如今,在疫情危机肆虐之际,日本福岛核电铁矿石战争打响?澳大利亚为何左右横跳?中国出3招或拿下定价权澳大利亚越来越依赖中国的铁矿石需求!中国已经明确表示正在寻找铁矿石的替代来源!澳大利亚媒体突然慌了,开始意识到,中国才是澳大利亚最大的金主。铁矿石战争已打响?自去年下半年铁矿石价格网络课程拍摄在线课程拍摄录制注意事项及讲师要求一视频教学实录中对主讲教师的要求1。主讲教师应有良好精神风貌。特别是拍摄开始和结束时。2。由于机位限制,正对讲师的有一个特写机位,由于机位固定且焦距在拍摄过程中不动,因此请讲师最好课堂教学视频拍摄公开课录制注意事项课堂教学视频是各级精品课申报材料的重要组成部分。为了配合我校精品视频公开课精品资源共享课的申报工作,更好地反映授课情况,请参加课堂教学视频录制的师生在上课时注意以下几点一教师授课1芯片将成中国新金矿?中企断供美巨头后,外媒这是在警告我们是中美芯片战中被大象踩死的蚂蚁。芯片之争,中国绝非美国想象的无能为力。前者是日本学者描述日本在芯片战中的处境,后者是德国媒体对这场战争的客观看法。毫无疑问的是,关于这场围绕芯片揭秘美国如何整垮日本芯片,谁坐收渔翁之利?对手是中国能奏效吗芯片战争,美国真的能从中国的痛中获益吗?美国媒体提出了这样一个疑问。众所周知,这次中美芯片战并非是美国第一次发起芯片战,为了美国的利益,哪怕是盟友,日本,也难逃美国的毒手。当年美国中国将垄断未来通信?美国忙着围堵华为5G,6G专利却在向中国招手在5G技术和应用方面,美国只能追赶中国的尾巴!美国经济学家大卫戈德曼如此说道。显而易见,行家更能看出问题所在,如今美国还在疯狂围堵制裁中国华为5G,以为这样能遏制中国的进一步发展。20亿人吃撑,7亿多挨饿,粮食离奇失踪哪去了?中美究竟有多浪费饮水要思源,吃饭当节俭。一粥一饭当思来之不易。粮食是人类生存的必需品,然而在进入到2021年的当下,依然有7亿多人在挨饿。而令人讽刺的是,还有20亿人吃撑,以及数不尽数的人在浪费。更大的危机已到来,中国大量进口印度却疯狂出口,美国还坐得住吗一粥一饭当思来之不易。存粮如存金,有粮不担心。近期,国家粮价持续高位运行,关于国内粮食的话题再一次被掀起,而众所周知,近年来,中国一直在大量进口粮食,与此同时,隔壁印度却在疯狂出口5GAI将促使哪些领域成为蓝海?未来10年,人工智能有望改变每一个行业,而这种变革的催化剂就是5G。这两种技术将共同实现物联网设备和智能网络的快速安全和经济高效的部署。人工智能驱动的5G网络将加速第四次工业革命,
大师逆光人像OPPOReno7来袭,Reno6价格骤降新冰点,开启疯抢新年旅拍完全没难度旗舰级OPPOReno7红丝绒新年版大师逆光人像,新年旅拍完全没难度旗舰级OPPOReno7红丝绒新年版逆光下通过AI识别环境光线匹配LiveHDR算法,新年旅拍网络舆情事件的界定与分类由于网络的开放性和虚拟性,决定了网络舆情事件具有直接性突发性和随意性的特点。那么网络舆情事件如何进行界定和分类呢?一网络舆情事件的界定网络舆情是以网络媒介为传播载体,通过某个事件,中信证券点评蚂蚁集团业务调整变换引擎估值切换回顾过去一年多来蚂蚁集团的转型主要配合监管,转向可持续增长和发挥基础设施功能。具体在数字支付征信科技微贷科技理财科技和保险科技各领域,逐项对照清单进行调整,其中影响最大的是微贷科技为何2020年老旗舰都下架了,而华为Mate40Pro不降价依然有人买?2022年已经到来,2021年的老旗舰正在努力清仓中,部分机型已经停产甚至下架了,而更老的机型,像2020年的老旗舰机,还在热销的恐怕只有苹果iPhone12系列和华为Mate40尼康D500拍野生动物值得入手嘛。配什么镜头好?我用过这款相机,搭配的是尼康200500f5。6镜头!拍鸟很好的!优点很多,但是今天说说这款相机的缺陷。首先是弱光下噪点太多!我曾经和一位朋友同时拍鸟!当时是阴天,而后同时放大后发iPhone14ProMax渲染图2TBi字打孔屏,谁买谁才是真果粉iPhone14系列虽然还没有发布,但是相关的信息也开始不断地被曝光,尤其是iPhone14系列的外观设计和上一代iPhone13系列有了很大的变化。多个渠道的消息都表示,iPhoLinux之grep命令grep(globalsearchregularexpression(RE)andprintouttheline,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使APP运营需要注意的4大指标在如今互联网高速发展的时代,企业开发的APP已经成为一种新的推广营销方式,APP运营也必不可少。而如何运营好一个APP?怎样在推广产品后还能留住客户?这是一个运营者需要仔细思考和研你了解你的项目吗对于一个程序开发人员来说,对项目的熟悉程度意味着你对工作内容的掌握程度。那么你是否可以问一下自己,你对你的项目了解吗?为什么了解当然,了解是一个模糊的概念。同样,对于不同职责的人员鸿海旗下重要厂区春节只休息二天,年会抽出20位百万新台币大奖台湾经济日报1月24日消息,鸿海23日举办线上嘉年华,鸿海董事长刘扬伟透露,旗下重要厂区春节只休息二天,这是过去未曾见过的荣景。鸿海创办人郭台铭则在致词时表示,2022是动荡但充满Vim下以16进制查看修改文本!xxd对应的文件左侧显示了16进制,右侧是对应的原文件!xxdr注意,只有左侧16进制被修改的部分会生效,对于右侧字符的修改不会产生效果。!lsl执行单独的Shell命令时,需要