要开始使用CUDA进行编程,请下载并安装CUDA Toolkit和开发人员驱动程序。该工具包包括nvcc,NVIDIA CUDA编译器以及开发CUDA应用程序所需的其他软件。该驱动程序可确保GPU程序在支持CUDA的硬件上正确运行,这也是您所需要的。
您可以通过nvcc --version从命令行运行来确认CUDA Toolkit是否已正确安装在计算机上。例如,在Linux计算机上,
$ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2016 NVIDIA Corporation Built on Tue_Jul_12_18:28:38_CDT_2016 Cuda compilation tools, release 8.0, V8.0.32
输出编译器信息。如果先前的命令不成功,则可能未安装CUDA工具包,或者nvcc(C:\CUDA\bin在Windows机器上,/usr/local/cuda/bin在POSIX OS上)的路径不是您的PATH环境变量的一部分。
此外,您还需要一个主机编译器,可nvcc用于编译和构建CUDA程序。在Windows上,这是cl.exeMicrosoft Visual Studio附带的Microsoft编译器。在POSIX操作系统上,可以使用其他编译器,包括gcc或g++。官方CUDA快速入门指南可以告诉您特定平台支持哪些编译器版本。
为了确保一切都正确设置,让我们编译并运行一个简单的CUDA程序,以确保所有工具都能正常工作。
__global__ void foo() {} int main() { foo<<<1,1>>>(); cudaDeviceSynchronize(); printf("CUDA error: %s\n", cudaGetErrorString(cudaGetLastError())); return 0; }
要编译该程序,请将其复制到一个名为的文件中test.cu,然后从命令行对其进行编译。例如,在Linux系统上,以下应该工作:
$ nvcctest.cu-o test $ ./test CUDA error: no error
如果程序成功执行且没有错误,那么让我们开始编码!
本文的读者应当至少手动安装过一次 LFS ,如果你没有做过 LFS ,这篇文章很可能不适合你,请先按照《Linux From Scratch 6.2》做一遍 LFS 。另外,如果你对编译优化也很感兴趣,那么《GCC编译优化指南》也很值得一读。
通常当你写函数时会对接收的参数做了隐含的假设。如果这些假设成立,程序没有问题;如果假设不成立,你的程序可能就会崩溃了。 为了让你的程序更为健壮,将你的假设明确,以程序文档的方式写下来或写代码来进行检查。 比如我们观察calculateCartesian方法。是否存在对当前对象进行了假设呢?没错,我们假设极坐标系的标志量已经设置了并且mag和theta的值是有效的。如果假设不成立,那么这个函数的结果
创建 LFS 系统并不是一项非常简单的任务。它需要有一定的 Linux 系统管理知识,以便能够解决问题和正确执行命令。作为最低要求,读者必须具备使用命令行(shell)来运行 cp, mv, ls, cd 等命令的能力。我们还希望读者具备使用和安装 Linux 软件的基本知识[非必须]。 因为本书假定读者至少具备了上述技能,各个 LFS 论坛也不太可能涉及上述基础知识,你可能会发现关于上述基础知识
Hana是一个没有外部依赖的头文件库(甚至不依赖Boost)。因此,在您自己的项目中使用Hana非常容易。基本上,只需下载本项目并添加include/目录到你的编译器的头文件搜索路径即可。或者,以下方式可以干净地安装Hana。 安装Boost 自Boost 1.61.0或更高版本开始,Hana包含在Boost中。因此,安装了Boost即可访问Hana了。 使用Homebrew 在MacOS上,可以
卡拉夫 4.0.3 我有以下伪功能: C是独立的,A依赖于C 在这个例子中,捆绑包“BundleB1”导入了错误的“BundleC1”的主要版本,我们得到了“缺少需求”错误(如预期的那样)。但是,如果我登录到karaf控制台并运行“功能:列表”,我会看到C已启动,A已卸载,B已卸载。 我希望A被启动,因为它只依赖于C。如果我注释掉整个C功能,或者如果我之后运行,A将正常启动 如果我把这三个功能放在
我目前尝试在覆盆子上安装jitsi-met,但没有成功。 我尝试使用Rasperian和Ubuntu服务器作为基本操作系统。 我安装了Java和nginx作为先决条件(如这里所指出的)。 但我还是会犯以下错误: 任何想法?