Clion配置远程CUDA调试环境

简介: 在阿里云GPU ECS实例上搭建Remote CUDA开发环境,使用Jetbrains Clion作为Develop IDE。

准备条件

ECS规格:ecs.gn5i-c16g1.8xlarge

GPU:NVIDIA P4*2

CUDA:11.0.2

Driver:460.91.03

CUDNN:8.0.4

步骤

  • 远程登录ECS后自动执行CUDA、Driver和Cudnn安装脚本安装相应版本组件;
  • 安装cmake(version > 3.0)、gcc、gdb

sudo yum install epel-release cmake3

sudo yum remove cmake

sudoln-s /usr/bin/cmake3 /usr/bin/cmake

sudo yum install gcc

sudo yum group install "Development Tools"

  • 配置Clion Toolschain中的Remote Host SSH

image-20220227155855933.png

image-20220227160032033.png

  • 添加toolchain到cmake到启动配置

image-20220227160209726.png

  • 配置本地机器目录和Remote主机目录的SFTP映射关系

image-20220227160347216.png

  • 同步代码后建立build目录并配置nvcc路径,执行cmake指令生成makefile
  • 生成makefile后执行make即可编译为可执行文件

image-20220227160915063.png

#include <iostream>#include <fstream>#define CUDA_SAFECALL(fnName, ...)                   \do {                                                 \cudaError_t fnName##Error = fnName(__VA_ARGS__); \if (fnName##Error != cudaSuccess) {              \std::cerr << "failed to call " << #fnName << ": return code " << fnName##Error  << ", which means " << cudaGetErrorString(fnName##Error) << std::endl; \exit(fnName##Error);                         \}                                                \} while (0)#define CUDA_CHECKRESULT(func) \do {                           \cudaError_t res = (func);  \if (res != cudaSuccess) {  \std::cerr << "failed function call " << #func << ": return code " << res << ", which means " << cudaGetErrorString(res) << std::endl; \exit(res);             \}                          \} while (0)staticvoidrun(std::ostream&);
voidrun(std::ostream&printer) {
intcount;
printer<<"C++ Version: "<<__cplusplus<<std::endl;
CUDA_CHECKRESULT(cudaGetDeviceCount(&count));
printer<<std::endl<<"Number of CUDA devices: "<<count<<std::endl;
printer<<std::endl<<"-------------------------Device Properties-------------------------"<<std::endl;
for (intdev=0; dev<count; ++dev) {
printer<<std::endl<<"**************************** GPU "<<dev<<" ****************************"<<std::endl<<std::endl;
cudaDevicePropprop{};
CUDA_SAFECALL(cudaGetDeviceProperties, &prop, dev);
printer<<"Name:                  "<<prop.name<<std::endl;
printer<<"Global Memory:         "<< ((double) prop.totalGlobalMem/1024/1048576) <<" Gb"<<std::endl;
printer<<"Shared Memory/block:   "<< ((double) prop.sharedMemPerBlock/1024) <<" Kb"<<std::endl;
printer<<"Registers/block:       "<<prop.regsPerBlock<<std::endl;
printer<<"Warp Size:             "<<prop.warpSize<<std::endl;
printer<<"Max Threads/block:     "<<prop.maxThreadsPerBlock<<std::endl;
printer<<"Max Block Dimensions:  [ "<<prop.maxThreadsDim[0] <<" x "<<prop.maxThreadsDim[1] <<" x "<<prop.maxThreadsDim[2] <<" ]"<<std::endl;
printer<<"Max Grid Dimensions:   [ "<<prop.maxGridSize[0] <<" x "<<prop.maxGridSize[1] <<" x "<<prop.maxGridSize[2] <<" ]"<<std::endl;
printer<<"Constant Memory:       "<< ((double) prop.totalConstMem/1024) <<" Kb"<<std::endl;
printer<<"Compute Capability:    "<<prop.major<<"."<<prop.minor<<std::endl;
printer<<"Clock Rate:            "<< ((double) prop.clockRate/1000000) <<" GHz"<<std::endl;
    }
}
intmain(intargc, char**argv) {
if (argc>=2) {
std::ofstreamfilestream(argv[1]);
if (!filestream) {
std::cerr<<"Unable to open file '"<<argv[1] <<"' for writing, exiting!"<<std::endl;
return-1;
        }
run(filestream);
    } else {
run(std::cout);
    }
}

调试成功后显示类似如下信息:

image-20220227161147057.png

相关文章
|
3月前
clion中cmake配置含义
clion中cmake配置含义
103 0
|
3月前
|
开发工具 git 计算机视觉
在Ubuntu16.04上配置CLion的OpenCV4.3.0开发环境
在Ubuntu16.04上配置CLion的OpenCV4.3.0开发环境
37 0
|
5月前
Clion-2023.1.4配置CMake-3.25.3
Clion-2023.1.4配置CMake-3.25.3
|
5月前
|
IDE 开发工具 C++
快速开始c,配置Clion
快速开始c,配置Clion
|
6月前
|
计算机视觉 Windows
OpenCV + CLion在windows环境下使用CMake编译, 出现Mutex相关的错误的解决办法
OpenCV + CLion在windows环境下使用CMake编译, 出现Mutex相关的错误的解决办法
283 0
|
Linux 开发工具 git
[笔记]ubuntun18.0+clion+qt5 搭建跨平台应用环境
[笔记]ubuntun18.0+clion+qt5 搭建跨平台应用环境
175 0
|
6月前
|
Ubuntu 编译器 Linux
百度搜索:蓝易云【Ubuntu18.04系统下配置Clion教程】
现在您已经成功配置了CLion在Ubuntu 18.04系统上进行C/C++开发。开始编写和调试您的代码吧!
73 0
|
Ubuntu Linux 网络安全
clion配置Linux远程开发环境–开发QT桌面软件
接下来可以开始配置clion的远程开发环境 1.配置Clion工具链
783 0
|
NoSQL IDE Java
使用CLion调试Redis源码的超详细步骤
因为我本人主要是写Java的,有强烈的IDE依赖症,不喜欢使用文本编辑器或者命令行这样的工具,所以选择使用CLion搭建一个IDE环境来辅助 Redis 源码阅读。
658 1
使用CLion调试Redis源码的超详细步骤
|
C++
Clion配置单个project下可以运行多个CPP文件的main函数
Clion配置单个project下可以运行多个CPP文件的main函数
1334 0
下一篇
无影云桌面