博主CUDA学习系列汇总传送门(持续更新):编程语言|CUDA入门
本章节学习内容:
1、Linux下如何使用makefile编译cuda文件
一、Linux下编译
系统Centos7.4, cuda10
文件目录
.
├── helloCuda.cu
└── Makefile
c++使用的是 gcc hello.cpp -o hello
cuda是采用nvcc编译 将gcc改成nvcc即可
make
./helloCuda
二、hello cuda!
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
__global__ void test(void) // __global__ 为CUDA的关键字,表示代码在设备端(GPU端)运行, 可以在CPU端被调用
{
printf("Hello CUDA!\n");
}
int main()
{
test <<<1, 1 >>> (); // 函数调用, <<< >>>中的第一个参数表示块的个数, 第二个参数表示每个线程块中线程的个数
// 这里是使用一个线程块,这个线程块中只有一个线程执行这个函数.
cudaDeviceSynchronize(); // 会阻塞当前程序的执行,直到所有任务都处理完毕(这里的任务其实就是指的是所有的线程都已经执行完了kernel function)。
// 通俗讲,就是等待设备端的线程执行完成
// 一个线程块中可以有多个线程,GPU的线程是GPU的最小操作单元
return 0;
}
三、makefile文件
#########################################################################
#
# Makefile for cuda_test
#
#########################################################################
TEST_SOURCE = helloCuda.cu
TARGETBIN := ./helloCuda
CC = nvcc
$(TARGETBIN):$(TEST_SOURCE)
$(CC) $(TEST_SOURCE) -o $(TARGETBIN)
.PHONY:clean
clean:
-rm -rf $(TARGETBIN)