学习一门新语言的最好方式就是用它来编写程序。
目录
1. 使用cpu输出hello world
2. 使用gpu输出hello world
3. CUDA编程结构
1. 使用cpu输出hello world
hello.cu
#include <stdio.h>
void helloFromCPU()
{
printf("hello world from cpu!\n");
}
int main(void)
{
helloFromCPU();
}
2. 使用gpu输出hello world
hello.cu
#include <stdio.h>
#include <cuda_runtime.h>
__global__ void helloFromGPU()
{
printf("hello world from gpu!\n");
}
int main(void)
{
helloFromGPU<<<1,10>>>();
}
改用gpu要点:
(1)头文件#include <cuda_runtime.h>;
(2)函数前面加修饰符__global__,使其成为内核函数;
(3)调用时要<<<>>>对内核函数的执行进行配置,这里配置的结果是10个线程运行相同函数。
如果调用时不进行如上加上<<<>>>配置,直接调用:helloFromGPU(); 则会报如下错误。
error a __global__ function call must be configured CudaRuntime1 D:\zxq\code\cuda\CudaRuntime1\CudaRuntime1\hello.cu 11
3. CUDA编程结构
一个典型的CUDA编程结构包括5个主要步骤。
- 分配GPU内存。
- 从CPU内存中拷贝数据到GPU内存。
- 调用CUDA内核函数来完成程序指定的运算。
- 将数据从GPU拷回CPU内存。
- 释放GPU内存空间。
上面的例子只有第3步,后面会给出完整的典型cuda程序 .