在当今高性能计算领域,CUDA编程已成为利用GPU进行并行计算的重要技术。本文将手把手教你如何使用C语言调用NVIDIA CUDA库,实现程序的GPU加速。即使你是编程小白,也能轻松上手!

CUDA(Compute Unified Device Architecture)是NVIDIA推出的并行计算平台和编程模型,允许开发者使用C/C++等语言直接操作GPU进行通用计算。通过C语言GPU加速,我们可以将计算密集型任务从CPU卸载到GPU,从而大幅提升程序性能。
在开始之前,请确保你已安装以下内容:
我们将编写一个简单的程序,实现两个向量相加。传统C语言在CPU上逐个元素相加,而CUDA版本则利用GPU并行处理所有元素。
核函数是在GPU上执行的函数,使用__global__修饰符声明:
// vector_add.cu__global__ void vectorAdd(float *A, float *B, float *C, int N) { int idx = blockIdx.x * blockDim.x + threadIdx.x; if (idx < N) { C[idx] = A[idx] + B[idx]; }}解释:
blockIdx.x、threadIdx.x 是CUDA内置变量,用于确定当前线程的全局索引主机端代码负责分配内存、拷贝数据、启动核函数:
#include <stdio.h>#include <cuda_runtime.h>#define N 1024int main() { // 分配主机内存 float *h_A = (float*)malloc(N * sizeof(float)); float *h_B = (float*)malloc(N * sizeof(float)); float *h_C = (float*)malloc(N * sizeof(float)); // 初始化数据 for (int i = 0; i < N; i++) { h_A[i] = i; h_B[i] = i * 2; } // 分配设备(GPU)内存 float *d_A, *d_B, *d_C; cudaMalloc(&d_A, N * sizeof(float)); cudaMalloc(&d_B, N * sizeof(float)); cudaMalloc(&d_C, N * sizeof(float)); // 将数据从主机拷贝到设备 cudaMemcpy(d_A, h_A, N * sizeof(float), cudaMemcpyHostToDevice); cudaMemcpy(d_B, h_B, N * sizeof(float), cudaMemcpyHostToDevice); // 配置执行配置:1个block,每个block 1024个线程 int threadsPerBlock = 1024; int blocksPerGrid = (N + threadsPerBlock - 1) / threadsPerBlock; // 启动核函数 vectorAdd<<>>(d_A, d_B, d_C, N); // 等待GPU完成计算 cudaDeviceSynchronize(); // 将结果从设备拷贝回主机 cudaMemcpy(h_C, d_C, N * sizeof(float), cudaMemcpyDeviceToHost); // 验证结果(打印前5个) for (int i = 0; i < 5; i++) { printf("%f + %f = %f\n", h_A[i], h_B[i], h_C[i]); } // 释放内存 free(h_A); free(h_B); free(h_C); cudaFree(d_A); cudaFree(d_B); cudaFree(d_C); return 0;} 将上述代码保存为 vector_add.cu,然后使用nvcc编译器编译:
nvcc vector_add.cu -o vector_add./vector_add
如果一切正常,你将看到类似以下输出:
0.000000 + 0.000000 = 0.0000001.000000 + 2.000000 = 3.0000002.000000 + 4.000000 = 6.0000003.000000 + 6.000000 = 9.0000004.000000 + 8.000000 = 12.000000
cudaError_t err = cudaGetLastError(); if (err != cudaSuccess) printf("CUDA error: %s\n", cudaGetErrorString(err));通过本篇CUDA入门教程,你已经掌握了使用C语言调用NVIDIA CUDA库的基本方法。从向量加法这个简单例子出发,你可以进一步探索更复杂的并行算法,如矩阵乘法、图像处理、深度学习等。记住,CUDA编程的核心思想是“将适合并行的任务交给GPU”,合理利用这一特性,你的程序性能将获得质的飞跃!
继续深入学习,推荐查阅NVIDIA官方文档和《CUDA C Programming Guide》。祝你在GPU加速的道路上越走越远!
本文由主机测评网于2025-12-22发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251211508.html