CUDA三维数组
http://hpcbbs.it168.com/forum.php?mod=viewthread&tid=1643
根据上面链接的帖子研究了下三维数组,就像他自己说的一样是有问题的,我自己修改了下,结果终于正确了。大家有兴趣的可以对照着看看。
整个过程关键参考了这篇文章http://www.xuebuyuan.com/685353.html
#include <stdio.h>
//#include <cutil.h>
#include <helper_cuda.h>//替代cutil.h
#include <cuda_runtime.h> #define Width 2
#define Height 2
#define Depth 2
int bmp1[Width][Height][Depth]={,,,,,,,};
int bmp2[Width][Height][Depth];
int main(){ cudaPitchedPtr devPitchedPtr;
cudaExtent extent = make_cudaExtent(Width * sizeof(int), Height, Depth);
cudaMalloc3D(&devPitchedPtr, extent);
cudaMemset3D(devPitchedPtr, , extent); cudaError status;
cudaMemcpy3DParms HostToDev = { };
HostToDev.srcPtr = make_cudaPitchedPtr((void*)bmp1,Width * sizeof(int), Width, Height);
HostToDev.dstPtr = devPitchedPtr;
HostToDev.extent = extent;
HostToDev.kind = cudaMemcpyHostToDevice;
status = cudaMemcpy3D(&HostToDev);
if (status != cudaSuccess){
fprintf(stderr, "MemcpyHtD: %s\n", cudaGetErrorString(status));
} cudaMemcpy3DParms DevToHost = { };
DevToHost.srcPtr = devPitchedPtr;
DevToHost.dstPtr = make_cudaPitchedPtr((void*)bmp2, Width * sizeof(int), Width, Height);
DevToHost.extent = extent;
DevToHost.kind = cudaMemcpyDeviceToHost;
status = cudaMemcpy3D(&DevToHost);
if (status != cudaSuccess){
fprintf(stderr, "MemcpyHtD: %s\n", cudaGetErrorString(status));
}
cudaFree(&devPitchedPtr); int i, j, k;
for (i = ; i<; i++)
for (j = ; j<; j++)
for (k = ; k<; k++)
printf("bmp2[%d][%d][%d]=%d\n", i, j, k, bmp2[i][j][k]); return ;
}
CUDA三维数组的更多相关文章
- 二维数组 cudaMallocPitch() 和三维数组 cudaMalloc3D() 的使用
▶ 使用函数 cudaMallocPitch() 和配套的函数 cudaMemcpy2D() 来使用二维数组.C 中二维数组内存分配是转化为一维数组,连贯紧凑,每次访问数组中的元素都必须从数组首元素开 ...
- Jni :三维数组处理方法 ,以整形三维数组为例 C++实现
本文原创,转载请注明地址:http://www.cnblogs.com/baokang/p/4982846.html 关于Jni的基本使用方法,请参阅:Java 调用 C++ (Java 调用 dll ...
- C语言三维数组分解
很多人在学习C的时候,感觉三维数组很难想象,而且不理解深度是什么?做了一个图,帮大家分解一下 ...
- Java 一维数组 二维数组 三维数组
二维数组包含一位数组 三维数组就是在二维数组的基础上,再加一层.把二维数组看做是一维数组就可以了,按照上述理解类推. 下面是 一维 二维 三维数组例子 一维数组: int[] array1 ...
- 三维数组——与 宝玉QQ群讨论交流之二
宝玉 12:27:35 这几天看了大部分大家交的作业,发现一个主要问题还是卡在对三维数组的理解上,之前把三维数组类比成三维空间可能会造成误导 宝玉 12:27:45 其实鞠老师解释的很好: 三维数组 ...
- c# 基础之数组(包含三维数组)
public enum ChessType { White = , None=, Black=, } class Program { static void Main(string[] args) { ...
- php三维数组变二维数组
<?php $result = Array(0 => Array(0 => Array(bid => 41,brealname => 'we教官',cid => 4 ...
- C++类实现三维数组算法
在学习北京大学教授的<程序设计实习 / Practice on Programming>中,遇到了一个习题,花了很长时间研究,现在分享出来: 课题地址:https://class.cour ...
- java读取目录下所有csv文件数据,存入三维数组并返回
package dwzx.com.get; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; ...
随机推荐
- 在ubuntu中安装mysql及简单操作方式
老规矩,ctrl+alt+t呼出终端, 输入 sudo apt-get update 更新源,否则在运行下面代码时会报出有几个包无法下载,你还是得回来执行这句代码, 输入 sudo apt-get i ...
- 人工智能和机器学习 AI&ML howto
我关心的AI.ML的分支领域: 我的博客:Deep Learning 和 Knowledge Graph howto (有关DL&KG的资料都在这里) https://www.cnblogs. ...
- POJ 3164——Command Network——————【最小树形图、固定根】
Command Network Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 15080 Accepted: 4331 ...
- c# 使用泛型序列化
static void Serialize<T>(T instance , string fileName) { using(XmlWriter writer = new XmlWrite ...
- [转]一次使用Eclipse Memory Analyzer分析Tomcat内存溢出
一次使用Eclipse Memory Analyzer分析Tomcat内存溢出 前言 在平时开发.测试过程中.甚至是生产环境中,有时会遇到OutOfMemoryError,Java堆溢出了,这表明程序 ...
- 微信公众号自动回复_Java
先声明一下,这是一个maven工程pom文件需要的依赖: <dependency> <groupId>dom4j</groupId> <artifactId& ...
- Java基础入门 - 关键字及其分类和说明
类别 关键字 说明 访问控制 private 私有的 protected 受保护的 public 公共的 类.方法和变量修饰符 abstract 声明抽象 class 类 extends 扩充,继承 ...
- pdf word excel ppt 在线预览方案收集
https://www.idocv.com/docs.html http://www.cnblogs.com/wolf-sun/p/3569960.html http://coolwanglu.git ...
- jwt-simple过期时间不对问题
今天用node写后台,登录认证使用了token,然后就使用了简单的jwt-simple,但是发现设置的过期时间不对,一直没有提示过期,但是明明是已经过期了的时间,于是检查了下jwt-simple的源代 ...
- ansible使用2-命令
并发与shell # bruce用户身份,-m指定模块名称,默认模块名command,all所有目标主机,也可以指定组名或者主机名 ansible all -m ping -u bruce # bru ...