CUDA编程之vector的存储分配与使用 |
您所在的位置:网站首页 › 编程中的数组怎么用函数表示 › CUDA编程之vector的存储分配与使用 |
最近的工程需要搞一下并行,打算用一下cuda。开这个系列希望能够把这个过程中学到的有关并行的知识以及一些问题。 这一次主要介绍下如何在cuda并行中使用vector,包括空间分配与使用。 vector其实是可以被看做一个动态数组的,其存储的分配也是可以参照动态数组分配的方法,具体方法如下: 内容参考:https://blog.csdn.net/xhz1234/article/details/7462290 一维vector: vector vec int *gpu_data; // Device端data int *cpu_data; // Host端data int dataWd = 20; cpu_data = (int*)calloc(dataWd, sizeof(int)); // 申请内存空间 cutilSafeCall( cudaMalloc((void**) &gpu_data, sizeof(int) * dataWd)); // 申请显存空间 cutilSafeCall( cudaMemset(gpu_data, 0, sizeof(float) * dataWd)); for(row = 0; row < dataWd; ++row) { // 给Host端的vector初始化 vec.push_back(row); } cutilSafeCall( cudaMemcpy(gpu_data, &vec[0] , sizeof(int) * dataWd, cudaMemcpyHostToDevice)); // 将Host端vector拷贝入Device端data cutilSafeCall( cudaMemcpy(cpu_data, gpu_data, sizeof(int) * dataWd, cudaMemcpyDeviceToHost)); // 将Device端data拷贝入Host端data for(row = 0; row < dataWd; ++row) // 打印Host端data cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |