首页 > 代码库 > GPU && CUDA:主机和设备间数据传输测试
GPU && CUDA:主机和设备间数据传输测试
数据传输测试,先从主机传输到设备,再在设备内传输,再从设备传输到主机。
H-->D
D-->D
D-->H
1 // moveArrays.cu 2 // 3 // demonstrates CUDA interface to data allocation on device (GPU) 4 // and data movement between host (CPU) and device. 5 6 7 #include <stdio.h> 8 #include <assert.h> 9 #include <cuda.h>10 #include "cuda_runtime.h"11 #include "device_launch_parameters.h"12 int main(void)13 {14 float *a_h, *b_h; //指向主机的指针15 float *a_d, *b_d; //指向设备的指针16 17 int N = 14;18 int i;19 //在主机端申请内存20 a_h = (float *)malloc(sizeof(float)*N);21 b_h = (float *)malloc(sizeof(float)*N);22 //在设备端申请存储23 cudaMalloc((void **)&a_d, sizeof(float)*N);24 cudaMalloc((void **)&b_d, sizeof(float)*N);25 //主机端数据初始化26 for (i = 0; i < N; i++) {27 a_h[i] = 10.f + i;28 b_h[i] = 0.f;29 }30 //将数据从主机端传送到设备端:a_h-->a_d31 cudaMemcpy(a_d, a_h, sizeof(float)*N, cudaMemcpyHostToDevice);32 33 //在设备内传输数据34 cudaMemcpy(b_d, a_d, sizeof(float)*N, cudaMemcpyDeviceToDevice);35 36 //将数据从设备端传输到主机:b_d-->b_h37 cudaMemcpy(b_h, b_d, sizeof(float)*N, cudaMemcpyDeviceToHost);38 39 //核对结果40 for (i = 0; i < N; i++)41 assert(a_h[i] == b_h[i]);42 43 //释放主机端存储44 free(a_h);45 free(b_h);46 //释放设备端存储47 cudaFree(a_d);48 cudaFree(b_d);49 }
测试环境:
Win7+VS2013+CUDA6.5
下载链接
GPU && CUDA:主机和设备间数据传输测试
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。