首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 如果多个线程往同一个共享地址写float数值,怎么办呀?
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-11 11:07:10 楼主
    如果多个线程往同一个共享地址写float数值,此时不能用原子操作,大家有什么办法吗?
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-11 12:58:031楼 得分:0
    尽量避免线程之间这种访问……
    ps:我的计算对精度没要求,只要整数就够了……
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-11 22:56:132楼 得分:0
    这可不好说了,这个float变量在线程中还参与以后的计算么?还是只作为结果输出。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-14 08:37:233楼 得分:0
    这已经不是冲突的问题了,CUDA只保证一个写成功,其它线程的写被抛弃,
    那么最终的结果肯定是错误的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-14 08:53:144楼 得分:0
    如果所有线程计算结果都一样,只要加一个if(tid==0),让一个线程写就行了
    否则会像楼上说的一样引起冲突
    如果需要原子操作,如原子加一类,应该保存所有结果,再进行归约(或称缩减,reduction)操作
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved