首页 文章详情

云GPU租用及CUDA profile工具入门教程

寒冰雪 | 185 2022-08-05 14:44 0 0 0
UniSMS (合一短信)

有一篇很好的CUDA入门文章《An Even Easier Introduction to CUDA》,这篇文章中用到的nvprof在CUDA高版本已经不支持,需要换成nsys。所以本文中仍然沿用它的代码,附加nsys的安装方式以及简单应用。

Part1云服务器租用

使用云服务器可以避免一部分复杂的环境安装工作,这里我以gpushare.com为例,其他云服务厂商的操作流程应该都差不多。

首先从云市场选一张卡ed7512d9972dbe8386fa614e792dc5e2.webp

选择框架版本,创建实例d7b1360853760746d87b7b7eab3cfb95.webp

等待片刻,实例启动后即可登录7a70338ed91e7bf55b72a9a581fd314d.webp

复制ssh命令到terminal中dcb74716c2ba4a68858a45c54e973ea2.webp

nvidia-smi查看显卡环境a13432176a99e889fd2e008c319ee60f.webp

Part2安装Nvidia NsightSystems

NsightSystems是CUDA高版本的profile工具,低版本CUDA用的nvprof工具已经不支持了。

首先将安装包上传到服务器上(安装包下载比较麻烦,要到nvidia官网注册) 我用这家云GPU厂商提供的工具是个ftp客户端:FileZilla。

填写主机地址,端口和用户密码199ae90cf279b9902b636a9acc9721a1.webp

密码在登录命令的下面1a8637db0aa8906cdecc4ffb5e1c332f.webp

连接成功后只要两边互相拖动就可以传文件了d3f6efb027b3828fee8c12d0e2b06f3e.webp

把下载到的NsightSystems-linux-cli-public-2022.2.1.31-5fe97ab.deb文件传到服务器上,用命令安装

dpkg -i NsightSystems-linux-cli-public-2022.2.1.31-5fe97ab.deb

nvprof -V验证安装成功8d26935fd6b6ff0bdbe12c9c87c46d27.webp

Part3helloworld并profile

将以下代码命名为add.cu

#include <iostream>
#include <math.h>
// Kernel function to add the elements of two arrays
__global__
void add(int n, float *x, float *y)
{
  for (int i = 0; i < n; i++)
    y[i] = x[i] + y[i];
}

int main(void)
{
  int N = 1<<20;
  float *x, *y;

  // Allocate Unified Memory – accessible from CPU or GPU
  cudaMallocManaged(&x, N*sizeof(float));
  cudaMallocManaged(&y, N*sizeof(float));

  // initialize x and y arrays on the host
  for (int i = 0; i < N; i++) {
    x[i] = 1.0f;
    y[i] = 2.0f;
  }

  // Run kernel on 1M elements on the GPU
  add<<<1, 1>>>(N, x, y);

  // Wait for GPU to finish before accessing on host
  cudaDeviceSynchronize();

  // Check for errors (all values should be 3.0f)
  float maxError = 0.0f;
  for (int i = 0; i < N; i++)
    maxError = fmax(maxError, fabs(y[i]-3.0f));
  std::cout << "Max error: " << maxError << std::endl;

  // Free memory
  cudaFree(x);
  cudaFree(y);

  return 0;
}

用nvcc命令编译并执行

nvcc add.cu -o add_cuda -run

用nvprof进行性能分析,

nsys profile --stats=true ./add_cuda

可以得到一系列指标数据,以及两个结果文件report1.nsys-rep和report1.sqlite658e320fc027aa223d9aec650f38ada9.webp

a78cdc8c1a8211a1e5a227e61962801d.webp

大家还可以从Even Easier教程中找到add_block和add_grid的代码,同样用nvcc和nvprof来比较几种不同的并行方式的性能差异。

如果大家想自己动手,配置实验环境的话,可以点击阅读原文租用gpushare的GPU。新人任务只要充值30元即可获得100元礼券,其中60元都可以按小时租用。白嫖15个小时(3.9一小时的3090)够做很多入门级的实验了~

039a6ca1c374b8baf9c0114b07c0395c.webpc1ab8fb39fc224456276cf74653eb065.webp4842755e3af8e43dafac53ae8ad742ac.webpPart4Ref

Even Easier教程:https://developer.nvidia.com/blog/even-easier-introduction-cuda/

filezilla使用教程:https://gpushare.com/docs/data/upload/#filezilla


good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter