请
登录
后使用快捷导航
没有帐号?
注册
登录
注册
快捷导航
首页
论坛
BBS
博客
技术栈
ITPUB学院
名人堂
版主团
搜索
高级搜索
热搜:
oracle
SAP
sap
二维码
dba
Oracle
c++
C++
CRM
银联信息中心
比特币
小额贷款
贷款
crm
ORACLE
项目管理系统
thread
android
python
java
本版
文章
帖子
用户
ITPUB论坛-专业的IT技术社区
»
论坛
›
GPU计算与编程技术
›
技术交流
›
CUDA程序设计讨论区
›
多个block在kernel里面循环时数据出错
1
2
/ 2 页
返回列表
楼主:
hnuzhoulin
收藏
|
[求助]
多个block在kernel里面循环时数据出错
[复制链接]
yyfn风辰
yyfn风辰
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
21
11
#
发表于 2010-5-11 22:33
|
只看该作者
回复 #10 NvidiaCTC 的帖子
他在模拟的时候应当就是同步的。
使用道具
举报
回复
显身卡
cyrosly
cyrosly
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
20
12
#
发表于 2010-5-12 01:23
|
只看该作者
程序本身就有问题,那个同步也是不需要的,还有你那个循环里的每一步都是写相同的全局内存,但编译器也许不会假定它们不会再任何时候改变从而进行相应的优化(尤其当使用了volatile限定词后),所以这样最好用寄存器代替存储中间结果,只在循环体外读取和写入一次。算法上还是有问题。另外CPU(IA32)的浮点运算时80位扩展双精度,只在最终写入结果时将其有规则的截断为单精度或双精度,所以即使有点小差别也不足为怪,以为两个硬件在对的IEEE标准的支持实现上就不同。
使用道具
举报
回复
显身卡
NvidiaCTC
NvidiaCTC
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
0
13
#
发表于 2010-5-12 09:47
|
只看该作者
同意楼上意见
另外我认为在多核CPU上模拟运行仍然需要原子操作或者拆kernel保证全局同步
[
本帖最后由 NvidiaCTC 于 2010-5-12 09:49 编辑
]
使用道具
举报
回复
显身卡
yyfn风辰
yyfn风辰
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
21
14
#
发表于 2010-5-12 11:00
|
只看该作者
回复 #13 NvidiaCTC 的帖子
这个也对,毕竟多核模拟的时候是可以多少线程并行执行的。
使用道具
举报
回复
显身卡
hnuzhoulin
hnuzhoulin
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
1
15
#
楼主
|
发表于 2010-5-12 14:08
|
只看该作者
回复 #10 NvidiaCTC 的帖子
"各个线程的times不是同步的
acc[index]=calculate(atom,pos,acc[index]); //计算其他N个粒子对和线程对应的粒子的力
这一句是不成立的 "
这里该如何保证各个线程的times是同步的啊??
还有为什么cc[index]=calculate(atom,pos,acc[index]);不成立啊???有什么错误??我在这一句后面加上同步语句是不是会好些??
使用道具
举报
回复
显身卡
hnuzhoulin
hnuzhoulin
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
1
16
#
楼主
|
发表于 2010-5-12 14:17
|
只看该作者
回复 #12 cyrosly 的帖子
“程序本身就有问题,那个同步也是不需要的,还有你那个循环里的每一步都是写相同的全局内存,但编译器也许不会假定它们不会再任何时候改变从而进行相应的优化(尤其当使用了volatile限定词后),所以这样最好用寄存器代替存储中间结果,只在循环体外读取和写入一次。算法上还是有问题。另外CPU(IA32)的浮点运算时80位扩展双精度,只在最终写入结果时将其有规则的截断为单精度或双精度,所以即使有点小差别也不足为怪,以为两个硬件在对的IEEE标准的支持实现上就不同。”
这个同步确实似乎没什么作用啊,我应该加在acc[index]=calculate(atom,pos,acc[index])后面,这样保证在全部计算完之后再将计算结果写入全局内存。。
我原本是想利用共享存储器来存pos,vel,acc的,也考虑过后期可能由于数据量加大,因此尝试过用分批从现存导入数据到共享存储器的方式计算,但是结果不令人满意,又由于毕业在即,所以就想简单一点,先不追求速度。。
还问一下,你说的那个中间结果用寄存器。。中间结果是指各个进程计算的acc吧,要想把它存在寄存器里面是不是这个变量在kernel里面定义就好,不从host传进来就是存在寄存器啊,我原来就是这样的,后来不知道怎么觉得想排除各个进程都定义各自的acc可能存在的问题。。
非常谢谢
使用道具
举报
回复
显身卡
1
2
/ 2 页
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
国内数据库产品
Oracle专题深入讨论
Oracle电子文档
SAP Business One开发与快速实施
SAP相关文档
Oracle新技术
Java企业开发
Oracle EBS R12
医卫行业
项目管理
系统设计与建模
网络系统集成 【已迁移到IXPUB】
HR产品与实践
IT服务管理
Java入门与认证版
ERP产品与实践
数据仓库与数据挖掘
Oracle开发
TOP
技术积分榜
社区积分榜
徽章
团队
统计
知识索引树
积分竞拍
文本模式
帮助
ITPUB首页
|
ITPUB论坛
|
数据库技术
|
企业信息化
|
开发技术
|
微软技术
|
软件工程与项目管理
|
IBM技术园地
|
行业纵向讨论
|
IT招聘
|
IT文档
ChinaUnix
|
ChinaUnix博客
|
ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有
联系我们
未成年人举报专区
京ICP备16024965号-8
北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
快速回复
返回顶部
返回列表