在主机端和设备端惊醒”incrementArray“并对结果进行比较

实验思想:

在主机端将数据初始化后传输到设备端,设备端和主机端进行同样的操作对数据加1,然后将设备端的结果传输到主机,最后核对主机端的计算结果和设备端的计算结果是否一直。

 1 // incrementArray.cu
 2
 3 #include <stdio.h>
 4 #include <assert.h>
 5 #include "cuda.h"
 6 #include "cuda_runtime.h"
 7 #include "device_launch_parameters.h"
 8
 9 /*
10 主机端函数
11 */
12 void incrementArrayOnHost(float *a, int N)
13 {
14     int i;
15     for (i = 0; i < N; i++) a[i] = a[i] + 1.f;
16 }
17
18 /*
19 设备端函数(内核函数)
20 */
21 __global__ void incrementArrayOnDevice(float *a, int N)
22 {
23     int idx = blockIdx.x*blockDim.x + threadIdx.x;
24     if (idx<N) a[idx] = a[idx] + 1.f;
25 }
26
27 int main(void)
28 {
29     float *a_h, *b_h;           //指向主机的指针
30     float *a_d;                 //指向设备的指针
31
32     int i, N = 10;
33     size_t size = N*sizeof(float);
34
35     //主机端申请内存
36     a_h = (float *)malloc(size);
37     b_h = (float *)malloc(size);
38
39     //设备端申请存储
40     cudaMalloc((void **)&a_d, size);
41
42     //主机端数据初始化
43     for (i = 0; i < N; i++) a_h[i] = (float)i;
44
45     //将数据从主机拷贝到设备:a_h-->a_d
46     cudaMemcpy(a_d, a_h, sizeof(float)*N, cudaMemcpyHostToDevice);
47
48     //在主机端计算
49     incrementArrayOnHost(a_h, N);
50
51     //在设备端计算
52     //块大小为4,Part 1 of 2. Compute execution configuration
53     int blockSize = 4;
54     //如果N%blockSize取0则需要的块数为N / blockSize,否则再加一块已盛放余下的
55     int nBlocks = N / blockSize + (N%blockSize == 0 ? 0 : 1);
56
57     //Part 2 of 2. 调用内核函数,nBlocks为所需块数,blockSize为每一块大小
58     incrementArrayOnDevice << < nBlocks, blockSize >> > (a_d, N);
59
60     //将数据从设备端传输到主机端并存储在b_h中
61     cudaMemcpy(b_h, a_d, sizeof(float)*N, cudaMemcpyDeviceToHost);
62
63     //核对结果
64     for (i = 0; i < N; i++) assert(a_h[i]== b_h[i]);
65
66     //释放主机内存和设备端内存
67     free(a_h);
68     free(b_h);
69     cudaFree(a_d);
70 }

测试环境:

Win7+VS2013+CUDA6.5

下载链接

时间: 2024-10-07 23:05:35

在主机端和设备端惊醒”incrementArray“并对结果进行比较的相关文章

配置puppet的主机端和客户端的自动认证

配置puppet的主机端和客户端的自动认证 author:headsen  chen    2017-11-01  17:44:56 个人原创,转载请注明作者,出处,否则依法追究法律责任 1,先在主机端和客户端都做好前期环境准备和安装好puppet. 2,客户端配置: [[email protected] ~]# vim /etc/sysconfig/puppet 将主机端的域名填上:PUPPET_SERVER=server.com [[email protected] ~]# vim /etc

手机端和PC端分别加载不同的js文件

分手机端和PC端其实方法很多,我们在响应式设计.响应式网站建设中经常碰到此类需求.下面说说我们在项目中遇到的需求: 手机端和PC端分别加载不同的js客服代码(注意:是要在PC和手机端分别加载不同的js文件) 第一种方法(简单型): <script type="text/javascript"> // 根据屏幕尺寸 if (screen && screen.width > 480) { document.write('<script type=&q

CSS3及JS简单实现选项卡效果(适配手机端和pc端)

想要适配手机端和pc端,有几种简单的方法,本人使用的是百分比分配的方法. *{ padding: 0; margin: 0; } body,html{ width: 100%; height: 100%; overflow: hidden; } #bottom_box{ width: 100%; height: 50px; background-color: #eee; display: flex; //这是flex布局,父元素设置为flex,子元素设置几等份就是分成几等份 position:

手机端和网页端使用同一后台时进行会话控制的一种思路

1.背景 Web端的一次成功的登陆请求后,cookie中会保存此次回话的sessionID,再点击其他页面时,会将此sessionID传递给后台,后台读取对应的session来进行相应逻辑行为:也就是说:session本质上还是要基于cookie的.但是,免费手机网关,不支持cookie传输,于是在手机端的权限验证中,并不能简单的在后台用request.getSession()就得到该手机应用统一的session.解决这个问题,可以在手机应用每一次登陆时,产生该用户的一个token(类似于ses

在主界面的右下端设置系统时间

可以在主界面的右下端拉一个toolStripStatusLabel控件,然后拉一个timer控件,双击timer控件,在这个控件写上代码this.toolStripStatusLabel4.Text = DateTime.Now.ToString("    yyyy-MM-dd  HH:mm:ss");这样就可以在toolstripstatuslabel控件上显示电脑的系统时间了.当然,也可以用textbox等控件用来显示系统时间

树莓派3B+实践(2)- 阿里云物联网平台接入(设备端C语言SDK编译)解决undefined reference to `IOT_CMP_Init&#39;错误

本想实践亚马逊aws的接入方案,由于亚马逊aws个人账户需要VISA信用卡,所以先用阿里云实践学习,以后有机会再接入aws. 1. 申请一个阿里云账户,需要绑定支付宝账户,阿里云个人账户可以申请部分业务免费,而且基础版每个月前100w条消息传输免费,个人用来学习实践绰绰有余. 2.根据阿里云物联网平台的帮助文档进行服务器端配置,这里不再赘述,帮助文档网址. 3. 重点说一下遇到的坑,由于阿里云的设备端sdk一直在更新功能,然而官网和github上的帮助文档没有随之更新,所以直接按照文档编译sdk

js判断浏览设备是 手机端,电脑端还是平板端

console.log(navigator.userAgent); var os = function() { var ua = navigator.userAgent, isWindowsPhone = /(?:Windows Phone)/.test(ua), isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone, isAndroid = /(?:Android)/.test(ua), isFireFox = /(?:Firefox)/

php 判断是否手机端还是pc端

来自:https://www.cnblogs.com/webenh/p/5621890.html 用手机访问PC端WWW域名的时候,自动判断跳转到移动端,用电脑访问M域名手机网站的时候,自动跳转到PC端,我们团队在开发erdaicms二代旅游CMS网站管理系统的时候(http://www.erdaicms.com),分别开发了PC端和手机端,需要实现,用手机访问PC端WWW域名的时候,自动判断跳转到移动端,用电脑访问M域名手机网站的时候,自动跳转到PC端,于是有了下面这个判断函数: 1 /*移动

使用js判断手机端和pc端浏览器内核

<span style="font-size:24px;color:#ff0000;">手机端:</span> <span style="font-size:14px;color:#339999;">//判断浏览器 var browser = { versions : function() { var u = navigator.userAgent, app = navigator.appVersion; return { tri