我想当然的认为GPU处理数据时可以共同访问内存,所以对数据的操作是累加的。

事实证明:虽然GPU多个核可以访问同一块内存,但彼此之间没有依赖关系,它们对这块内存的作用无法累加。

先看代码:

#include <iostream>
#include <thrust/device_vector.h>
#include <thrust/iterator/counting_iterator.h>
#include <thrust/for_each.h> using namespace std; struct testfunc
{
float* list;
int size; __host__ __device__
void operator()(const int& idx) const{
for(int i=0;i<size;++i){
list[i]-=(float)0.1;
}
}
}; int main(int argc, char* argv[]){ thrust::device_vector<float> vlist(100,(float)10);
testfunc fn;
fn.size=vlist.size();
fn.list=vlist.data().get(); thrust::for_each(
thrust::counting_iterator<int>(0),
thrust::counting_iterator<int>(0)+11,
fn
); for (int i=0;i<10;++i){
cout<<vlist[i]<<" ";
}
cout<<endl; return 0;
}

这里我在GPU的内存中创建了一个数组vlist,其每个单元值为10。

之后我用了11个核,每个核都对数组vlist的每个元素减0.1,如果结果能够累加,那么运行结束后vlist每个元素的值应该为10-0.1*11=8.9。

但实际结果是:9.9

相当于只保留了一个核的结果……果然是并行啊~

GPU对数据的操作不可累加的更多相关文章

  1. JAVASE02-Unit08: 文本数据IO操作 、 异常处理

    Unit08: 文本数据IO操作 . 异常处理 * java.io.ObjectOutputStream * 对象输出流,作用是进行对象序列化 package day08; import java.i ...

  2. JAVASE02-Unit07: 基本IO操作 、 文本数据IO操作

    基本IO操作 . 文本数据IO操作 java标准IO(input/output)操作 package day07; import java.io.FileOutputStream; import ja ...

  3. MySQL的数据库,数据表,数据的操作

    数据库简介 概念 什么是数据库?简单来说,数据库就是存储数据的"仓库", 但是,光有数据还不行,还要管理数据的工具,我们称之为数据库管理系统! 数据库系统 = 数据库管理系统 + ...

  4. mysql数据表操作&库操作

    首先登陆mysql:mysql -uroot -proot -P3306 -h127.0.0.1 查看所有的库:show databases; 进入一个库:use database; 显示所在的库:s ...

  5. 谈谈Delphi中的类和对象4---类是一种对数据和操作高度的封装机制 && 类是一种代码重用机制

    五.类是一种对数据和操作高度的封装机制 1)数据封装 unit Unit2; interface type TEmployee = class; private FName: String; publ ...

  6. 背景:表A数据误操作,被delete了,恢复。

    SELECT MAX(Scn) FROM Sys.Smon_Scn_Time WHERE Time_Dp < TO_DATE('2015-09-18', 'YYYY/MM/DD') select ...

  7. HealthKit开发快速入门教程之HealthKit数据的操作

    HealthKit开发快速入门教程之HealthKit数据的操作 数据的表示 在HealthKit中,数据是最核心的元素.通过分析数据,人们可以看到相关的健康信息.例如,通过统计步数数据,人们可以知道 ...

  8. MongoDB源码分析——mongod数据查询操作

    源码版本为MongoDB 2.6分支 Edit mongod数据查询操作 在mongod的初始化过程中说过,服务端接收到客户端消息后调用MyMessageHandler::process函数处理消息. ...

  9. 实现AT24C02的数据读写操作

    /*************************************************************** 功能:11:32 2008-6-27 作者:SG 时间:2004-03 ...

随机推荐

  1. VMware Workstation “The Msi Failed”解决方法

    今天准备装虚拟机时,遇到一个问题一直没办法解决.折腾了一下午,总算解决了.在这里记录以下,以便大家遇到相同的问题时,能尽快解决. 由于以前安装过WMware Workstation,然后又卸载了.今天 ...

  2. jsp新建项目

    1.在原有项目的基础上新建一个文件夹 在文件夹内新建一个jsp文件 取名 JSP容器处理JSP文件需要以下三个阶段:翻译——编译——执行 JSP的页面元素包括 静态内容-HTML静态文本 指令-以“& ...

  3. [scala] scala 集合(⑧)

    1.List 基础操作 2.Set 基础操作 3. TreeSet 排序Set 4. 拉链操作 5. 流 import scala.collection.immutable.TreeSet impor ...

  4. SpringBoot------thymeleaf的使用

    1.pom.xml添加相应依赖 <dependency> <groupId>org.springframework.boot</groupId> <artif ...

  5. Android和IOS开发学习路线

    图片看上去太小,直接另存为吧 图片来自:http://www.finalshares.com/

  6. 7 -- Spring的基本用法 -- 6... Spring 3.0 提供的Java配置管理

    7.6 Spring 3.0 提供的Java配置管理 Spring 允许使用Java类进行配置管理,可以不使用XML来管理Bean,以及Bean之间的依赖关系. Interface :Person p ...

  7. 让树莓派自动上报IP地址到邮箱,二代B

    由于我使用树莓派的场景大多数是在没有显示器.只用terminal连接它的情况下,所以,它的IP地址有时会在重启之后变掉(DHCP的),导致我无法通过terminal连接上它.然后我又要很麻烦地登录路由 ...

  8. BurpStuite使用技巧

    技巧1:抓包,设置断点修改Response 1.抓包,右键点击--Do intercept--Response to this request 2.点击Forward--修改返回包,然后放行. 技巧二 ...

  9. Outlook 2007 实现自动添加密送的方法

    1)在Outlook里面键入Alt+F11打开VBA编辑器:     2)激活左边的工程面板,展开并双击上面的“Project (VbaProject.OTM)/Microsoft Office Ou ...

  10. PyCharm 基础设置

    设置主题:File -- Settings -- Editor -- Color & Fonts -- Font -- Scheme 设置为 Darcula 设置字体:File -- Sett ...