SSH远程登陆Linux Server运行cuda程序

本文介绍了如何通过SSH远程登录Linux Server并运行CUDA程序。内容包括查看硬件信息如CPU和内存,以及获取GPU属性,特别是Tesla K10 GPU。文章详细展示了简单的CUDA程序,如ReverseArray和ParallelAdd,探讨了不同维度的Grid和Block对性能的影响,并指出在数据量小的情况下,CUDA可能不比CPU有明显优势。最后提供了CUDA学习和调试的相关参考资料。
摘要由CSDN通过智能技术生成

一 远程登录Linux Server运行CUDA程序(摘自国科大刘莹老师给的指南)

1 Window系统下
* 下载SSHSecureShellClient-3.2.9.exe
* 安装SSH:默认在每一步均选next
* 安装生成桌面文件:
SSH Secure Shell Client:客户端登录程序
SSH Secure File Transfer Client:文件上传下载程序
* 登录Linux Server
1) 单击Connect(或Quick Connect)
2) 输入Host Name、User Name
3) 输入Password

* 退出
输入"exit"(或点击Disconnect)


2 使用SSH Secure File Transfer Client传输源程序

3 使用CUDA编译运行程序
* 认识CUDA编译器nvcc:man nvcc
* 四种模式的编译:
Release Mode: CUDA kernel 在真正的GPU上运行
命令示例:nvcc -o executable <file1.cu> <file2.cu> …
Debug Mode: CUDA kernel 在GPU上运行但不可调试,CPU部分代码可以调试
命令示例:nvcc -g <file1.cu> <file2.cu> …

* 使用-keep命令选项保存中间生成文件:nvcc -keep <filename>.cu
* 使用-clean命令选项清除相应命令生成的所有文件: nvcc -keep <filename>.cu -clean
* nvcc其他常用命令选项有:-o(指定输出可执行文件名)、-D(定义宏)、-I(指定头文件搜索路径)、-include(指定包含的头文件)、-L(指定库文件搜索路径)、-l(指定链接使用的库文件)、-host-compilation(指定以C或C++语言编译CPU部分代码)-Xptxas –v(查看kernel的register、shared memory、 local memory使用情况)
详细说明请参阅nvidia提供的nvcc手册或man命令。
* 程序执行:在包含编译生成的可执行文件目录下输入:./<executable_file_name>


4 Linux系统下远程登录Linux Server
* 检查系统是否安装有SSH:(或man ssh)
rpm -qa | grep ssh
cd ~
more install.log
查找ssh
* 终端登录Linux Server
1)输入用户名和IP地址:ssh username@*.*.*.*
2)输入password
* 正常终端命令行操作
* 退出
输入"exit"


5 Linux系统下使用scp命令传输文件
* 退出ssh或切换到另一个新的终端
* 复制文件到远程主机:
输入scp命令:
scp <local_dir>/localfile remote_username@remote_host_ip:/<remote_dir>/
按提示输入远程server上的用户密码:
remote_username@remote_host_ip's password: *******
* 从远程主机下载文件:
输入scp命令:
scp remote_username@remote_host_ip:/<remote_dir>/remote_file <local_dir>/
按提示输入远程server上的用户密码:

remote_username@remote_host_ip's password: *******


二 运行cuda程序

1 获取硬件平台设备属性

CPU properties:cat /proc/cpuinfo

Memory properties: cat /proc/meminfo

GPUproperties:

nvcc devicepro.cu  

./a.out

其中获取GPUproperties需要编写代码获取结构体cudaDeviceProp的信息。代码如下,保存为*.cu运行即可。

#include <cuda_runtime.h>
#include <iostream>
using namespace std;

int main()
{
	cudaDeviceProp prop;

	int count;
	cudaGetDeviceCount(&count);

	for(int i = 0 ; i < count ; i++)
	{
		cudaGetDeviceProperties(&prop,i);
		cout<<"the information for the device : "<<i<<endl;
		cout<<"name:"<<prop.name<<endl;
		cout<<"the memory information for the device : "<<i<<endl;
		cout<<"total global memory:"<<prop.totalGlobalMem<<endl;
		cout<<"total constant memory:"<<prop.totalConstMem<<endl;
		cout<<"shared Memory Per Block:"<<prop.sharedMemPerBlock<<endl;
		cout<<"register Per Block:"<<prop.regsPerBlock<<endl;
		cout<<"threads in warps:"<<prop.warpSize<<endl;
		cout<<"max threads per block:"<<prop.maxThreadsPerBlock<<endl;
		cout<<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值