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

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

  • 22
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值