cuda内存分配函数

本文介绍了CUDA中的三种内存分配函数:cudaMalloc用于一维内存分配,cudaMallocPitch针对二维内存进行优化,而cudaMalloc3D则支持三维内存空间的分配。这些函数在GPU编程中扮演关键角色。
部署运行你感兴趣的模型镜像

cuda内存分配函数


提示:以下是本篇文章正文内容,下面内容可供参考

一、cuda函数列表

1. cudaMalloc

int main(){
	int a = 0, *a_d;
  
	cudaMalloc((void**) &a_d, sizeof(int));
	cudaMemcpy(a_d, &a, sizeof(int), cudaMemcpyHostToDevice);

	kernel<<<1, 1>>>(a_d); 
  
	cudaMemcpy(&a, a_d, sizeof(int), cudaMemcpyDeviceToHost);

	printf("a = %d\n", a);
	cudaFree(a_d);
}

2.cudaMallocPitch

#include <iostream>
#include <cuda_runtime.h>
using namespace std;   
  
int main()  
{  
    float * pDeviceData = NULL;  
    int width = 10 * sizeof(float);  
    int height = 10 * sizeof(float);  
    size_t pitch;  
  
    cudaError err = cudaSuccess;  
  
    err = cudaMallocPitch(&pDeviceData, &pitch, width, height);     
    if (err != cudaSuccess)  
    {  
        cout << "call cudaMallocPitch fail!!!" << endl;  
        exit(1);  
    }  
    cout << "width: " << width << endl;  
    cout << "height: " << height << endl;  
    cout << "pitch: " << pitch << endl;  
  
    cudaFree(pDeviceData);  
    return 0;  
}  

3.cudaMalloc3D

int main()  
{  
    cudaError err = cudaSuccess;  
  
    cudaPitchedPtr pitchPtr;  
    cudaExtent extent;  
    extent.width = 10 * sizeof(float);  
    extent.height = 22 * sizeof(float);  
    extent.depth = 33 * sizeof(float);  
  
    err = cudaMalloc3D(&pitchPtr,extent);
    if (err != cudaSuccess)  
    {  
        cout << "call cudaMalloc3D fail!!!" << endl;  
        exit(1);  
    }  
    cout << "width: " << extent.width << endl;          
    cout << "height: " << extent.height << endl;  
    cout << "depth: " << extent.depth << endl;  
  
    cout << endl;  
    cout << "pitch: " << pitchPtr.pitch << endl;      
    cout << "xsize: " << pitchPtr.xsize << endl;     
    cout << "ysize: " << pitchPtr.ysize << endl;     
  
    cudaFree(pitchPtr.ptr);   
    return 0;  
}  

总结

内存分配函数有cudaMalloc、cudaMallocPitch、cudaMalloc3D分别分配一维、二维、三位内存空间。

您可能感兴趣的与本文相关的镜像

PyTorch 2.8

PyTorch 2.8

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值