CUDA编译(一)—使用nvcc编译cuda

  • nvcc介绍
  • 示例

nvcc介绍

nvcc是编译cuda程序的编译器,CDUA C是在C语言上的扩展,所以它依赖C编译器(C编译器在window下是cl.exe,在Linux下是gcc)。因此我们编译CUDA程序必须依靠编译器nvcc。

其实,nvcc编译cuda程序和g++编译c++程序是差不多的。在我的其它博客中也写了有关g++编译c++程序的内容:g++ 命令的使用 ,可以作为参考。

示例

示例中创建了一个main.cu作为主程序入口,foo.cuh和foo.cu定义了一个函数实现。注意到文件数的后缀都是cuda程序可识别的后缀。
main.cu:

#include <stdio.h>
#include <iostream>
//#include <cuda_runtime.h>
#include "foo.cuh"int main()
{std::cout<<"Hello NVCC"<<std::endl;useCUDA();return 0;}

foo.cuh:
其中使用enxtern "C"是为了让支持C语言的nvcc调用。

#ifndef FOO_CUH
#define FOO_CUH#include <stdio.h>__global__ void foo();extern "C"
void useCUDA();#endif

foo.cu:

#include "foo.cuh"#define CHECK(res) { if(res != cudaSuccess){printf("Error :%s:%d , ", __FILE__,__LINE__);   \
printf("code : %d , reason : %s \n", res,cudaGetErrorString(res));exit(-1);}}__global__ void foo()
{printf("CUDA!\n");
}void useCUDA()
{foo<<<1,5>>>();CHECK(cudaDeviceSynchronize());}

这时,定位到三个文件所在目录。
命令行输入:
nvcc -o main.out main.cu foo.cu 即可完成cuda程序的编译。
运行:./main.out 可得:

Hello NVCC
CUDA!
CUDA!
CUDA!
CUDA!
CUDA!

关于混合编译C++与cuda的问题可见:CUDA编译(二)—用CMake混合编译C++与cuda

CUDA编译(一)---使用nvcc编译cuda相关推荐

  1. 理清 NVIDIA,CUDA,cuDNN,nvcc 关系 CUDA 环境安装

    文章目录 概念介绍 CUDA 环境安装 服务器基础环境安装 基础软件 SSH 和 SFTP Anaconda 替换 apt 源 Git freeglut NVIDIA 驱动安装 CUDA-toolki ...

  2. 编译DCNv2网络:error: command ‘C:\\Program Files\\NVIDIAGPUComputingToolkit\\CUDA\\v10.0\\bin\\nvcc.exe‘

    在复现FairMOT时编译DCNv2出现了一个错误 error: command 'C:\\Program Files\\NVIDIAGPUComputingToolkit\\CUDA\\v10.0\ ...

  3. c++ nvcc编译CUDA程序入门示例

    nvcc nvcc是NVIDIA CUDA Compiler,用来编译host和device程序. 这里的术语: host:指CPU及其内存 device:指GPU及其内存 使用nvcc,就可以编译C ...

  4. CUDA以及NVCC编译流程

    文章转载自: http://chenrudan.github.io/ 在安装CUDA的时候,会安装三个大的组件[1],分别是NVIDIA驱动.toolkit和samples.驱动用来控制gpu硬件,t ...

  5. CUDA C++编程接口:编译

    CUDA C++编程接口:编译 一.概述 CUDA C++为熟悉C++编程语言的用户提供了一个简单的路径,以方便地编写程序以执行该设备. 它由一组最小的扩展到C++语言和运行库. 在编程模型中引入了核 ...

  6. windows11编译OpenCV4.5.0 with CUDA(附注意事项)

    windows11编译OpenCV4.5.0 with CUDA 从OpenCV4.2.0 版本开始允许使用 Nvidia GPU 来加速推理.本文介绍最近使用windows11系统编译带CUDA的O ...

  7. Pytorch 使用不同版本的 cuda,跟使用不同版本的cuda进行编译扩展库,其实TensorFlow也是一样

    在使用 Pytorch 时,由于 Pytorch 和 cuda 版本的更新,可能出现程序运行时需要特定版本的 cuda 进行运行环境支持的情况,如使用特定版本的 cuda 编译 CUDAExtensi ...

  8. 【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?

    一.如何查看CUDA版本? 1.1 查看runtime版本的CUDA (1)nvcc -V或nvcc --version (2)在CUDA的include文件夹中找到cuda.h文件 打开后搜索ver ...

  9. nvcc编译器之GPU代码编译(chapter 5)

    目录 5. GPU编译 5.1 GPU多代架构 5.2 GPU特性列表 5.3 应用兼容性 5.4 虚拟架构 5.5 虚拟架构特性列表 5.6 兼容性补全机制 5.7 nvcc示例 5. GPU编译 ...

最新文章

  1. pythonslice_shift_3. 数据模型
  2. Apache 配置 Basic 认证
  3. java8 遍历目录_使用java8API遍历过滤文件目录及子目录及隐藏文件
  4. time模块 random模块
  5. python定时下载链接_python定时下载FTP指定文件
  6. java判断优先级代码_java运算符的优先级
  7. 新手必看,老鸟绕道–LAMP简易安装
  8. 基于SSM实现的演唱会网上订票系统-JAVA【数据库设计、源码、开题报告】
  9. MySQL5.7导出数据表
  10. 【多任务CTR】阿里ESMM:Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conve
  11. 多台服务器集群部署方案
  12. JAVA整合Milvus矢量数据库及数据
  13. apachecn归档下载
  14. isAssignableFrom方法的功能简介说明
  15. 相机选型与远心镜头选型
  16. 海盗王GM工具箱 - 物品编辑器
  17. 这就是我的研究生生活
  18. 各大协作机器人厂商人机安全协作方式(HRC)简介
  19. Winodows XP做服务器,突破10人限制
  20. FFMPEG SDK 开发介绍 -- Filter 篇

热门文章

  1. Anchor Boxes
  2. 【E2E】E2E通信保护协议学习1
  3. 文本聚类算法Java实现
  4. 如何通过命令提示符进入MySQL服务器
  5. 20、CSS中单位:【px和%】【em和rem】【vw|vh|vmin|vmax】的区别
  6. 计算机凭据分配在哪里,电脑策略没有凭据分配怎么办
  7. 服务器操作系统查询命令,服务器操作系统查询命令
  8. YouTube Video Download
  9. easyExcel实现单sheet多子表,并结合动态表头,复杂表头
  10. 数据结构-二叉树-详解