zoukankan      html  css  js  c++  java
  • CUDA库函数使用笔记与案例(一)

    项目合作中需要整合对方公司提供的CUDA代码,因此需要详细学习代码中涉及的cuda函数。

    CUDA Tool Kit 8.0较完整的官方说明文档:

    http://docs.nvidia.com/cuda/index.html#axzz4mJF4jmiT

    CUDA Runtime API函数官方详细说明网站:

    https://www.cs.cmu.edu/afs/cs/academic/class/15668-s11/www/cuda-doc/html/group__CUDART.html


    自定义CUDA错误处理函数HAND_ERROR

    1 void HANDLE_ERROR(cudaError err)
    2 {
    3     if (err != cudaSuccess)
    4     {
    5         fprintf(stderr, "Failed to cuda function (error code %s)!
    ", cudaGetErrorString(err));
    6         exit(EXIT_FAILURE);
    7     }
    8 }

     内存管理相关库函数

    • cudaMemGetInfo 获取空闲和总的内存,单位byte,实例:
    1     size_t free;
    2     size_t total;
    3 
    4     HAND_ERROR(cudaMemGetInfo(&free, &total));

    运行结果:free=840 204 288, total=1 073 741 824。空余内存约840MB,总内存约1G

    •  cudaHostAlloc在CPU主机分配页锁存内存

    案例1:分配制定大小的内存

    1 #define NUM 1000
    2 float *h_PA;
    3 HANDLE_ERROR(cudaHostAlloc((void**)&h_PA, NUM*sizeof(float), cudaHostAllocDefault));

    案例2:在CPU主机分配内存,并将该内存映射到CUDA地址空间,配合cudaHostGetDevicePointer函数来获取该地址指针。

    1 size_t dmaBufferBytes = 2048;
    2 void *dmaBufferArray;
    3 U32 *cudaMemDmaBufferArray;
    4 HANDLE_ERROR(cudaHostAlloc((void **)&dmaBufferArray, dmaBufferBytes,cudaHostAllocMapped));
    5 HANDLE_ERROR(cudaHostGetDevicePointer((void **)&cudaMemDmaBufferArray,(void *)dmaBufferArray, 0));
  • 相关阅读:
    学习笔记25—python基本运算法则
    学习笔记24—win10环境下python版libsvm的安装
    学习笔记23—window10 64位 python2.7 安装liblinear
    学习笔记22—PS小技巧
    学习笔记21—PS换图片背景
    学习笔记20—MATLAB特殊函数
    学习笔记19—dpabi错误集
    学习笔记18—circos应用集
    system
    Python string
  • 原文地址:https://www.cnblogs.com/yuesheng/p/7140952.html
Copyright © 2011-2022 走看看