当前位置: 首页 > news >正文

上海营销型网站制作网络规划设计师岗位

上海营销型网站制作,网络规划设计师岗位,做英文网站网站犯法吗,安徽省建设监理协会 旧网站文章目录1. 前言2. Device 管理3. Error Handling4. 内存管理5. Stream 管理6. Event 管理7. 执行控制8. 多卡管理9. 实践用例1. 前言 在读这篇文章前,大家环境应该已经ready,如果环境未安装,可以看上一篇文章。CUDA runtime api是利用频率最…

文章目录

  • 1. 前言
  • 2. Device 管理
  • 3. Error Handling
  • 4. 内存管理
  • 5. Stream 管理
  • 6. Event 管理
  • 7. 执行控制
  • 8. 多卡管理
  • 9. 实践用例

1. 前言

在读这篇文章前,大家环境应该已经ready,如果环境未安装,可以看上一篇文章。CUDA runtime api是利用频率最高的API,熟练掌握这些API的用法,会让我们的程序变得非常的灵活。
详细的API介绍,可以参考官网文档

2. Device 管理

API描述
cudaChooseDevice通过输入的properties匹配一个最合适的device
cudaDeviceGetAttribute获取指定device的执行熟悉的值
cudaDeviceGetP2PAttribute获取srcDevice 到 dstDevice的P2P属性
cudaGetDeviceCount获取当前device数量
cudaGetDevice获取当前的device id
cudaGetDeviceProperties获取指定device 的属性
cudaSetDevice设置当前device的device id,常用于多卡时,卡间的切换
cudaDeviceResetreset当前device的所有状态
cudaDeviceSynchronize等待device 计算完成

3. Error Handling

这块api,主要时一些error的获取与处理

API描述
cudaGetLastError获取上一个runtime api的error code,并清除error handle
cudaGetErrorName通过error code,获取error code的名字
cudaGetErrorString通过error code, 获取error的错误信息
cudaPeekAtLastError获取上一个runtime api的error code,但不清除error handle

4. 内存管理

API描述
cudaMalloc在当前卡上分配一块device内存,类似cpu的malloc
cudaFree释放cudaMalloc申请的内存,类似cpu的free
cudaMallocHost分配一块page-locked的cpu内存,该内存可以在kernel中直接访问
cudaFreeHost释放cudaMallocHost分配的内存
cudaMallocManaged分配一块托管内存,自动识别是放在cpu还是device
cudaMemcpy内存搬运,支持D2D, H2D,D2H,H2H
cudaMemcpyAsync异步内存搬运,支持D2D, H2D,D2H,H2H
cudaMemset初始化device 内存,类似cpu的memset
cudaMemsetAsync异步初始化device 内存

5. Stream 管理

API描述
cudaStreamAddCallback将一个callback挂载在流上
cudaStreamCreate流的创建
cudaStreamCreateWithFlags通过flag创建流
cudaStreamCreateWithPriority创建带优先级的流
cudaStreamDestroy流的销毁
cudaStreamGetFlags获取流的flag
cudaStreamGetPriority获取流的优先级
cudaStreamQuery获取流的完成状态
cudaStreamSynchronize等待流的所有任务完成
cudaStreamWaitEvent流等待事件的发生

6. Event 管理

event 常与stream 一起使用,来做流之间的通过,同时也可以通过event来获取device侧的运行事件

API描述
cudaEventCreate事件创建
cudaEventCreateWithFlags创建指定属性的事件
cudaEventDestroy事件的销毁
cudaEventElapsedTime获取start到end的耗时
cudaEventQuery获取事件的状态
cudaEventRecord在流上插入一个事件
cudaEventSynchronize等待一个事件的完成

7. 执行控制

API描述
cudaFuncGetAttributes获取kernel函数的属性
cudaFuncSetSharedMemConfig设置device函数的shared memory配置
cudaLaunchKernel启动核函数,简单的kernel推荐使用<<<>>>来启动

8. 多卡管理

API描述
cudaDeviceCanAccessPeer获取两卡之间的连接状态
cudaDeviceDisablePeerAccess禁用两卡之间的连接
cudaDeviceEnablePeerAccess使能两卡之间的连接

9. 实践用例

#include <cuda_runtime.h>__global__ void vectorAdd(int* out, int* in1, int* in2, size_t size){int idx = blockIdx.x * blockDim.x + threadIdx.x;if (idx < size) {out[idx] = in1[idx] + in2[idx];}
}int main() {int *dout, *din1, *din2;int *hout, *hin1, *hin2;constexpr size_t size= 10240;// 分配device内存cudaMalloc(&dout, size * sizeof(int));cudaMalloc(&din1, size * sizeof(int));cudaMalloc(&din2, size * sizeof(int));// 分配host内存cudaMallocHost(&hout, size * sizeof(int));cudaMallocHost(&hin1, size * sizeof(int));cudaMallocHost(&hin2, size * sizeof(int));// 内存初始化for (size_t i = 0; i < size; i++) {hin1[i] = rand();hin2[i] = rand();}// 将初始化数据从host搬运到devicecudaMemcpy(din1, hin1, size * sizeof(int), cudaMemcpyHostToDevice);cudaMemcpy(din2, hin2, size * sizeof(int), cudaMemcpyHostToDevice);// 启动核函数dim3 block(1024);dim3 grid((size + block.x - 1) / block.x);vectorAdd<<<grid, block>>>(dout, din1, din2, size);cudaDeviceSynchronize();// 将kernel运行数据从device回传到hostcudaMemcpy(hout, dout, size * sizeof(int), cudaMemcpyDeviceToHost);bool is_pass = true;for (size_t i = 0; i < size; i++) {is_pass &= hout[i] == (hin1[i] + hin2[i]);}// 内存回收cudaFree(dout);cudaFree(din1);cudaFree(din2);cudaFreeHost(hout);cudaFreeHost(hin1);cudaFreeHost(hin2);return is_pass? EXIT_SUCCESS : EXIT_FAILURE;
}

编译:

/usr/local/cuda/bin/nvcc -I/usr/local/cuda/include -O3 -DNDEBUG  --generate-code=arch=compute_90,code=[compute_90,sm_90] -std=c++17 vector_add.cu -o vector_add
http://www.dtcms.com/a/417944.html

相关文章:

  • 网站怎么添加关键词 好让百度收入_ 现在网站用的是模板做的房地产网站策划
  • 宜春网站设计公司电销精准客户资源
  • 佛山网站定制开发网站搭建的美工设计
  • 新手学易语言多久可以做网站电子商务网站建设哪好
  • 手机微网站怎么制作中国企业500强中国铁建
  • 北辰正方建设集团网站做网站的第一步是确定主题
  • 建设银行重庆市分行官方网站成都自适应建站哪家好
  • 集团网站建设建站模板做汽车介绍视频的网站
  • 手机网站建设开发怎么看网站室哪做的
  • 黑白高端网站建设营销型网站设计网站
  • 如何登录百度站长平台wordpress如何播放视频播放
  • 知名网站建设公著名办公空间设计
  • 四川城乡建设网站建设通官网通
  • 科技备案企业网站网站建设服务外包
  • 企业网站的运营如何做电子商务网站建设用什么软件
  • 合肥网站建设网站浙江省建设业协会网站
  • 网站建设 音频插件如何做伪原创文章网站
  • 网站推广费用大概需要多少钱在线视频网站如何制作
  • 建设部网站怎么查询相关专业做cf网站
  • 中国矿山建设网站wordpress 关闭自动保存功能
  • 咋样建设网站上海app外包
  • 网站建设项目确认书万网网站模板购买
  • 外贸网站做纸尿裤怎么样中山快速做网站公司
  • 定西网站建设公司排名照片宝塔面板怎么做自己的网站
  • 网页制作素材搜索途径有哪些济南优化seo公司
  • 永康市网站建设网站开发产品需求说明
  • 给个网站可以在线wordpress函数手册
  • 如何选择一个优质网站建设公司网站建设公司推广方案
  • 网站开发 网页制作删除 wordpress
  • 企业加盟网站建设建设拼多多一样网站需要多少钱