在如今的计算机领域中,GPU已经成为了处理高性能计算任务的主要工具之一。而在GPU中,NVIDIA的显卡可以说是市场中的一股绝对势力,因为其强大的性能和广泛的应用支持。为了让开发者更好的利用NVIDIA显卡的性能,NVIDIA公司开发了一款名为CUDA的开发平台,提供了一系列的开发工具和API。
安阳县ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
从CUDA6.5版本开始,NVIDIA公司针对Linux平台提供了专门的编译器,叫做NVCC编译器,该编译器专门用于将CUDA C/C++代码编译为可执行的二进制文件。本文将详细介绍Linux中NVCC编译器的使用和相关知识。
一、NVCC编译器的安装
NVCC编译器需要与CUDA Toolkit配套使用,因此首先需要安装CUDA Toolkit。CUDA Toolkit支持多个Linux平台,可以前往官网下载适合自己系统的版本。
安装CUDA Toolkit比较简单,根据官方文档进行安装即可。安装完成后,默认情况下NVCC编译器已经被安装到了系统中,可以通过以下命令查看:
$ which nvcc
如果输出/usr/local/cuda/bin/nvcc,说明已经安装成功。
二、使用NVCC编译器进行编译
NVCC编译器可以将CUDA C/C++代码编译为可执行文件,编译命令的格式如下:
$ nvcc [options] -o output_file input_file
其中options表示编译选项,input_file表示源文件,output_file表示输出文件。
下面给出一个简单的例子:
#include
__global__ void square(float *d_out, float *d_in) {
int idx = threadIdx.x;
float f = d_in[idx];
d_out[idx] = f * f;
}
int mn(int argc, char **argv) {
const int ARRAY_SIZE = 64;
const int ARRAY_BYTES = ARRAY_SIZE * sizeof(float);
// 输入和输出数组
float h_in[ARRAY_SIZE];
float h_out[ARRAY_SIZE];
// 输入数组初始化
for (int i = 0; i
h_in[i] = float(i);
}
// 设备端输入和输出数组
float *d_in;
float *d_out;
cudaMalloc((void **)&d_in, ARRAY_BYTES);
cudaMalloc((void **)&d_out, ARRAY_BYTES);
// 将输入数据从主机端复制到设备端
cudaMemcpy(d_in, h_in, ARRAY_BYTES, cudaMemcpyHostToDevice);
// 调用CUDA核函数进行计算
square>>(d_out, d_in);
// 将计算结果从设备端复制到主机端
cudaMemcpy(h_out, d_out, ARRAY_BYTES, cudaMemcpyDeviceToHost);
// 打印输出
for (int i = 0; i
printf(“%f”, h_out[i]);
printf(((i % 4) != 3) ? “\t” : “\n”);
}
// 释放设备端内存
cudaFree(d_in);
cudaFree(d_out);
return 0;
}
上述代码定义了一个名为square的CUDA核函数,该函数用于计算输入数组每个元素的平方,并将结果保存到输出数组中。该程序将输入数组初始化为0到63的整数,并调用square函数进行计算,并将结果输出到终端中。
接下来使用nvcc命令将该代码编译为可执行文件:
$ nvcc -o square square.cu
完成后,运行该程序:
$ ./square
可以在终端中看到输出结果。
三、NVCC编译器的高级用法
NVCC编译器不仅可以编译CUDA C/C++代码,还支持一些高级用法,如代码分析、优化和分析工具等。
1. 代码分析
NVCC编译器提供了一些代码分析工具,用于帮助开发者分析CUDA C/C++代码的性能和行为。其中比较常用的工具是nvprof和nsight。
nvprof是一个基于命令行的性能分析工具,可以用于分析CUDA应用程序的性能和行为。其使用方法如下:
$ nvprof ./your_program
nsight是一款基于GUI的性能分析工具,提供了比nvprof更详细的性能分析信息。其界面友好,操作简便,但是需要安装显卡驱动。安装后可以在IDE中直接进行性能分析。
2. 优化
NVCC编译器为开发者提供了一些优化选项,可以用于优化CUDA C/C++代码的性能。例如,可以使用-O选项启用编译器的更优化功能,或者使用–arch选项指定要优化的GPU架构。
3. 分析工具
NVCC编译器还提供了一些分析工具,帮助开发者分析CUDA应用程序的行为和性能。其中比较常用的工具是cuda-memcheck和cuda-gdb。
cuda-memcheck是一个内存检测工具,可以帮助开发者检测CUDA应用程序中的内存错误和泄漏。其使用方法如下:
$ cuda-memcheck ./your_program
cuda-gdb是一个基于命令行的调试工具,可以用于调试CUDA应用程序。其使用方法与行使用gdb调试C/C++程序类似。
四、
相关问题拓展阅读:
背景
在Windows上使用GPU进行深度学习一直都不是主流,我们一般都首选Linux作为深度学习操作系统。但很多朋友如果只是想要了解深度学习,似乎没有必要专门装双系统或者改用Linux。现实生活中,很多使用学校或者公司电脑的朋友也没有操作权限改换系统。那么到底是否可以在Windows系统上设置深度学习框架,开发深度学习模型呢?
好消息是越来越多的深度学习框架开始支持Windows,这使得在Windows上使用GPU加速学习过程也变成了可能。很多朋友虽然没有一块很强劲的显卡,但也可以以较低的代价来了解在GPU上运行深度学习模型的过程。值得欣喜的是,大部分Nvidia GeForce系列的显卡都可以使用CUDA,大部分有独显的笔记本理论上都可以使用GPU来“深度学习”。即使加速效果不明显,但很多入门级的显卡依然可以用于TensorFlow,这至少可以帮助大家了解和熟悉这个框架。
请不要让缺少预算或者系统不兼容成为探索路上的拦路虎和借口。
本着探索的精神,我试着在两台Windows电脑上安装了CUDA(用于调用GPU)和TensorFlow(谷歌开发的深度学习工具库),把这个过程记录下来和大家分享。
在开始之前想再次提醒大家,在Windows上安装CUDA和TensorFlow有很多坑,对于各种软件版本以及系统设置的要求可谓非常刁钻,很容易就“误入陷阱”。请大家严格对照我的操作流程,以防出错。多图长文预警!!!使用教程时建议在电脑端阅读,可以放大图片。
准备步骤
请按照介绍下载以下软件备用,具体安装流程在第二部分介绍。
简单的说,我们需要 Windows 7/8/10, Server 2023/2023 + Python 3.5 + Visual Studio 2023 + CUDA 8.0 + CuDnn 6.0。前宴
1.操作系统要求和硬件要求:
Windows版本:Windows 7,Windows 8,Windows 10,Windows Server 12/16
显卡版本:请对照英伟达提供的支持CUDA的显卡列表,建议查看英文版。不知道自己显卡版本的可以通过“设备管理器”查看,或者使用第三方软件GPU-Z查看。请注意,AMD的显卡不可以使用英伟达开发的CUDA…
中文列表:CUDA – 支持CUDA的GPU – NVIDIA(英伟达)
英文列表:CUDA GPUs
2.Python版本:64位版本的Python 3.5。注意Python3.6和2.7都不可以。地址和版本如下图所示。如果使用错误的Python版本,将无法安装TensorFlow!
3.Visual Studio版本:
我们使用的CUDA8.0不支持Visual Studio 2023,使用VS2023会报错。
Visual Studio 2023的话现在最新的版本是Visual Studio 2023 with Update 3,网上有人说不能用Update 3这个版本,但根据我的亲测可以使用VS2023 with Update 3。下载免费的Community版本即可:
。这个链接是ISO版本,大家也可选择EXE版本安装。其他VS2023的版本,如企业版(Enterprise)或者专业版(Professional)也可以,事实上我测试的时候安装的是企业版。
Visual Studio 2023根据文档介绍也可以,但我并没有实际测试,不推荐使用。
如果你的电脑上已经安装了VS2023或者VS2023,可以同时下载安装VS2023,并不存在冲突。
4.CUDA版本:TensorFlow的支持的CUDA版本截止到今天(2023年10月1日)还是 CUDA 8.0。千万要慧拿银注意英伟达官网上的默认版本是CUDA 9.0,请不要下载安装这个版本。
正确的8.0版本下载地址: CUDA Toolkit 8.0 – Feb 2023。网络比较好的朋友建议下载网络安装版本,不要下载本地版。
5.CuDnn版本:CuDnn 6.0for CUDA8.0。这是唯一可以敏缺使用的版本,下载时请对应的你的操作系统选择合适的版本。
请特别注意下载CuDnn前必须注册英伟达社区的会员,虽然说是英文的但非常简单。 正确的下载版本如下图所示:
6.所有必备文件:
安装步骤(建议使用管理员权限账号)
请尽量按照本文的安装顺序进行安装,否则有可能运行失败!最重要的是,安装CUDA必须在安装Visual Studio之后,这两个顺序不可以调换。
1.安装Python
建议直接用Python的原生安装包,安装时建议勾选把Python加到系统路径当中去。
安装完成后检查Python的版本和PiP3的版本,那就是系统路径中的默认Python是3.54,且Pip3的版本大于8.01。
检测方法如上图,打开命令行分别输入 “python -V” 和 “pip3 -V”即可,正确的输出如上图。
2.安装Visual Studio 2023
安装VS2023没什么难度,只有一个选项需要自定义,别的选项都可以使用默认值。VS2023的默认安装不包括C++的编译器,必须手动勾选Visual C++,不然会面临后续的CUDA编译错误。
主要原因是VS2023在安装时并没有默认安装C++的编译器,也就是CL.exe。在后文中我会提到如果你没装Visual C++系统会如何报错。
3.安装CUDA
安装CUDA前请务必确认VS2023安装成功!这个时候你需要安装CUDA,双击我们下载的安装文件即可,一切都选择默认即可。
安装成功后会看到如下图:
4.验证CUDA安装成功:
4.1. 打开命令行,也就是cmd然后输入“nvcc -V”,如果安装正确的话你应该看到这样的输出:
输出中显示了CUDA的版本是release 8.0。
4.2. 使用VS和CUDA编译测试文件
进入“C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0”文件夹,双击打开 “Samples vs2023”这个文件。
选择编译生成1_Utilities中所有的文件。具体操作就是在1_Utilities上右键选择Build,注意红框部分的64位和Release:
这个时候,你可能遇到了编译错误,如果你发现错误提示是无法找到 CUDA.prop那么就是CUDA安装错误,建议检查CUDA版本重新安装。
如果你看到这两个错误:
TRK0005:Failed to locate: “CL.exe”. The system cannot find the file specified.系统找不到CL.exe,无法编译文件。面对这个错误那就是你没选Visual C++,需要重新安装时选上这个组件。
MSB8036:Windows SDK 8.1 was not found.如果你同时看到了这个错误说你没有安装 Windows SDK 8.1,那也可以通过安装C++ Redistribution这个来解决。
如果你没有遇到编译错误,那么应该看到下图提示5个文件编译成功:
在成功后,你会发现在“C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\bin\win64\Release”文件夹中出现了一堆文件,我们主要需要deviceQuery和bandwidthTest。
4.3. deviceQuery和bandwidthTest验证
运行我们刚才编译出来的deviceQuery.exe,也就是在cmd中运行这个文件,下图中左下的红框显示 result = pass代表安装测试成功,右下的红框是你的显卡型号请确认型号正确。Tesla K80只是我的这台机器型号,这个每个人可能都不一样。
运行我们刚才编译出来的bandwidthTest.exe,方法一样,也是关注是否result = PASS。
5.安装CuDnn
解压缩我们下载的CuDnn文件,得到3个文件夹:bin, include, lib。如下图所示,将这个三个文件夹复制到“C:\ProgramData\NVIDIA GPU Computing Toolkit\v8.0”。
6.确认系统环境变量(Environment Variables)
确认Python3.5.4.和Pip3在系统环境变量中,检查的方法上面已经介绍了。
打开系统环境变量设置,以Win10为例,请参考百度经验(
)介绍。
确认CUDA_PATH和CUDA_PATH_V8.0已经存在
手动添加 “C:\ProgramData\NVIDIA GPU Computing Toolkit\v8.0\bin”到Path里面。
7.安装TensorFlow的GPU版本
打开cmd,输入“pip3 install tensorflow-gpu”
我因为已经安装过了,所以显示已经安装。此处要注意三点:
要用pip3而不是pip
要安装tensorflow-gpu,而不是tensorflow
如果安装失败,很有可能你的Python版本不是3.5.,或者pip3版本太低,可以使用”pip3 install –upgrade pip3″来升级pip3
之一个TensorFlow程序!
恭喜你,我们离胜利已经一步之遥了:) 让我们来验证我们安装的TensorFlow可以使用GPU!
打开cmd,输入以下指令打开python的interactive shell。
首先导入tensorflow:
import tensorflow as tf
接着每次输入一行代码,并回车,你应该可以看到下图中表明你的GPU已经开始工作啦~
a = tf.constant(, shape=, name=’a’)
b = tf.constant(, shape=, name=’b’)
c = tf.matmul(a, b)
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print sess.run(c)
你可能在import TensorFlow时遇到了错误,如下图。这是因为你的CuDnn设置错误,请参考本文确认系统环境变量(Environment Variables)来修复。
写在最后
实践是检验真理的唯一标准,时间也是。在所有人都在大力鼓吹深度学习的今天,不管你喜欢还是反对,我都希望你可以亲自试试,感受一下:)
而现实生活中我们都有各种各样的制约,比如系统版本限制、比如有限的显卡预算。这也是我写这篇教程的目的,我不希望这些原因成为阻碍你探索研究的障碍。希望我的这篇文章为你的深度学习之路做出了一点微小的贡献。
应该是你的CUDA 运行库的路径不知尺让对,如果是Windows,请查看 系统困隐属性/搭局高级/
环境变量
关于linux nvcc的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
成都网站营销推广找创新互联,全国分站站群网站搭建更好做SEO营销。
创新互联(www.cdcxhl.com)四川成都IDC基础服务商,价格厚道。提供成都服务器托管租用、绵阳服务器租用托管、重庆服务器托管租用、贵阳服务器机房服务器托管租用。
分享名称:深入探究:Linux中的NVCC编译器 (linux nvcc)
文章起源:http://www.shufengxianlan.com/qtweb/news42/541942.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联