首先要先加上 cuda_runtime.h 头:

#include "cuda.h"
#include "cuda_runtime.h"

1. cudaMalloc

在设备(Device)上申请一个空间

float *d_alpha = nullptr,//如果你想表示空指针,那么使用nullptr,而不是NULL。NULL被推导为long int,而不是空指针,
	 cudaMalloc(&d_alpha, num_vec_aligned * sizeof(float));

2. cudaMemcpy

cudaMemcpy用于在主机(Host)和设备(Device)之间往返的传递数据,用法如下:

主机到设备:
cudaMemcpy(d_y, y, y_size* sizeof(float), cudaMemcpyHostToDevice);
设备到主机:
cudaMemcpy(y, d_y, y_size* sizeof(float), cudaMemcpyDeviceToHost);

注意:该函数是同步执行函数,在未完成数据的转移操作之前会锁死并一直占有CPU进程的控制权,所以不用再添加cudaDeviceSynchronize()函数

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐