nvcc编译cu
⑴ 请教有没有在linux使用cuda的朋友
在安装cuda前,你必须检测自己的显卡是否支持cuda,如何检查自己的显卡型号:
lspci | grep "NVIDIA"查看是否英伟达显卡,或者lspci | grep "VGA"直接查看显卡信息;
在英伟达官方可以查看支持cuda显卡的型号,顺便记得在官方下载你所需的cuda版本。我选择的是最新版的CUDA-7
我的系统版本centos6.5(finall),我下载的是.run文件。
文件下载成功,转到下载目录,首先需要修改.run文件的rwx权限:
chmod 755 cuda_7.0.28_linux.run
还有一些前提工作需要完善
1:确保文本界面:vi /etc/inittab 把最下面一行的:5:改成:3: 然后用esc,:wq保存并且退出。(如果你没有找到,可以INIT3直接进入文本界面)
(2.3.4这种操作是因为台式机双显卡的缘故貌似) 2:拉黑nouveau. 执行以下步骤:vi /etc/modprobe.d/blacklist.conf 在此文件后面添加:blacklist nouveau
3:使用 dracut重新建立 initramfs image file: mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname-r).img.bak
4:重新建立 the initramfs file: dracut -v /boot/initramfs-$(uname -r).img $(uname -r)
(如果不拉黑nouveau会出现两种问题,我在笔记本上出现的问题是安装完成后无法进入图形界面,我在服务器上出现的问题是无法安装,当然,可能还有其他问题,但是我没有遇到#24)
reboot重新启动电脑,然后就可以执行之前的.run 文件了
安装成功以后,你还需要配置nvcc:find -name "nvcc" (找到nvcc所在位置);vi /root/.bashrc(编辑.bashrc文件) ;加入alias nvcc="你查询到的nvcc所在位置";export nvcc;
至此,你就可以使用nvcc编译你的.cu文件了!::nvcc –cuda xxxxx.cu
⑵ 怎样判断cuda和cudnn是否安装成功win10
首先确认你的电脑是否安装了nvidia显卡,目前CUDA只支持Nvida的显卡,不支持AMD/ATI的显卡(AMD对OpenCL支持的很好)。在设备管理器中,可以查看显卡信息。如下图所示,含有NVIDIA的显卡,就可安装。
在官网上下载cuda工具包,注意是windows系统的,而且需要看清楚是笔记本还是台式机的安装包,下载笔记本的安装套件,名字为cuda_5.0.35_winvista_win7_win8_notebook_32-3,(cuda5.5类似)双击打开安装即可,,按照提示安装,在这过程中,它也会更新nvidia的显卡驱动。
CUDA工具包安装完成后,我们还需要确认,CUDA是否已经正确安装,我们可以先检查nvcc编译器是否正确安装,在命令提示符窗口中输入:nvcc -V,回车查看是否有版本信息。若出现版本信息,则证明nvcc安装成功,更一般的,我们会在命令行中运行在C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0\bin\win32\Release中deviceQuery程序,若能检测到cuda device则证明程序已经正确安装!
⑶ 在linux下怎么运行cuda的.cu文件
举个例子:add.cu
编译:nvcc -o add add.cu
运行:./add
⑷ 编译时 不是内部或外部命令,也不是可运行的程序
在什么操作系统下啊。。。你问的是不是编译cu代码啊,因为cuda不是开源的。
如果编译自己的代码,是nvcc
运行和执行其它可执行程序一样啊
⑸ cuda7.5安装好后为什么用不了nvcc命令
在什么操作系统下埃。。你问的是不是编译cu代码啊,因为CUDA不是开源的。 如果编译自己的代码,是nvcc 运行和执行其它可执行程序一样啊
⑹ linux下,.cu文件生成.a后,其他.cpp文件调用该静态链接库的问题
可以的
是不是提示缺少cuda运行时环境?
编译选项里面加上 -L $CUDA_HOME/lib64 -lcuda -lcudart试试 其中$CUDA_HOME是你的cuda安装目录
⑺ cuda程序编译方面,各位都有哪些方法和经验
语法基本上与gcc一样,例如你要编译Hello.cu文件,最简单的输入:
nvcc Hello.cu -o Hello,则会生成可执行文件Hello.
还有很多其它的编译选项,建议查看NVIDIA CUDA官方文档。
⑻ 编译cuda并运行cuda程序的命令是
在什么操作系统下啊。。。你问的是不是编译cu代码啊,因为CUDA不是开源的。
如果编译自己的代码,是nvcc
运行和执行其它可执行程序一样啊
⑼ linux中哪些工具可以测试cuda程序,监控gpu内存性能
nvcc 编译代码
nvcc -o squareSum squareSum.cu运行结果:
CUDA initialized.
(GPU) sum:29909398 time:787124792
(CPU) sum:29909398 time:10000
从执行的结果可以看出, GPU 中运行的程序居然要比 CPU 中的消耗的时钟周期还要多得多。这是有原因的。
因为程序之中并没有使用 CUDA 并行执行的优势。
这里分析一下 GPU 运行的性能。
此 GPU 消耗的时钟周期: 787124792 cycles
GeForce G 103M 的 clockRate: 1.6 GHz
所以可以计算出 GPU 上运行时间是: 时钟周期 / clockRate = 0.49195 s
1 M 个 int 型数据有 4M Byte 的数据量,实际使用的 GPU 内存带宽是:数据量 / 运行时间 = 8.13 MB/s
可见这个程序没有很好的发挥 GPU 的性能,使用的内存带宽很小。
没有有效利用 GPU 性能的原因???
在 CUDA 中,一般的数据复制到的显卡内存的部份,称为 global memory。这些内存是没有 cache 的,而且,存取 global memory 所需要的时间(即 latency)是非常长的,通常是数百个 cycles。
由于我们的程序只有一个 thread,所以每次它读取 global memory 的内容,就要等到实际读取到数据、累加到 sum 之后,才能进行下一步。这就是为什么它的表现会这么的差。实际上 GPU 一直在等待上一个数据运行的结束,然后再拷贝一个内存数据,所以使用的时钟周期自然就长了。
由于 global memory 没有 cache,所以要避开巨大的 latency 的方法,就是要利用大量的 threads。假设现在有大量的 threads 在同时执行,那么当一个 thread 读取内存,开始等待结果的时候,GPU 就可以立刻切换到下一个 thread,并读取下一个内存位置。因此,理想上当 thread 的数目够多的时候,就可以完全把 global memory 的巨大 latency 隐藏起来了。