Sequential Consistency浅谈

sequential consistency是Java内存模型和C++0x内存模型的一个关键概念,它是一个最直观最易理解的多线程程序执行顺序的模型。另外与sequential consistency经常一起出现的还有cache conherence ,cache coherence是多核CPU在硬件中已经实现的一种机制,简单的说,它确保了对在多核CPU的Cache中一个地址的读操作一定会返回那个地址最新的(被写入)的值。关于它们更具体的描述本文将不做解释


所以应该想到,为什么我们要关心sequential consistency,就是因为现在的编译器和cpu会对当前我们的代码进行优化,为了追求这种效率,他们会把程序员写的代码打乱执行,而编译器这么做的理由就是因为读一个在内存中而不是在cache中的共享变量需要很多周期,所以编译器就”自作聪明“的让读操作先执行,从而隐藏掉一些指令执行的latency,提高程序的性能。实际上这种类似的技术是在单核时代非常普遍的优化方法,但是在进入多核时代后编译器没跟上发展,导致了对多线程程序进行了违反SC的错误优化。为什么编译器很难保证SC?因为对编译器来讲它很难知道多个线程在执行时会按照什么样的交错顺序执行,因为这需要一个整个程序运行时的视角,而只对一份静态的代码做优化的编译器是很难得到这种运行时的上下文的。那么为什么硬件也保证不了呢?因为CPU硬件中的写缓冲区(store buffer)会把要写入memory的值缓存起来,然后当前线程继续往下执行,而这个被缓存的值可能要很晚才会被其他线程“看见”,从而导致多线程程序逻辑出错。其实硬件也提供了一些例如Memory Barrier等解决方案,但是开销是一个比较大的问题,而且很多需要程序员手动添加memory barrier,现在还不能指望CPU或者编译器自动帮你搞定这个问题。为了帮助理解,我引入《Computer organization and architecture designing for performance》chapter4中的out of order executuin logic(乱序执行逻辑)“依据数据相关性和资源可用性调度微操作的执行,于是,微操作可按不同于所取指令流的顺序被调度执行,只要时间许可,此单元调度将来可能需要的微操作的推测执行”。而这种优化会影响多线程程序的正确性,也就是说你用C++编写的多线程程序可能会得到的不是你想要的错误的运行结果。

所以为了既保证正确性又保证性能,在经过十几年的研究后一个新的新的模型出炉了:sequential consistency for data race free programs。简单地说这个模型的原理就是对没有data race的程序可以保证它是遵循sequential consistency的,这个模型在多线程程序的正确性和性能间找到了一个平衡点。对广大程序员来说,我们依赖高级语言内建的内存模型来帮我们保证多线程程序的正确性.


Sequential是Keras中的一种神经网络框架,它是一个容器,用于封装神经网络的结构。Sequential模型只有一组输入和一组输出,各层按照先后顺序进行堆叠,前一层的输出作为后一层的输入。通过堆叠不同的层,可以构建出神经网络。\[1\]在搭建神经网络时,使用Sequential是非常重要的。通过实践和编写代码,可以更好地理解神经网络的原理和使用方法。\[2\]在使用fit方法时,需要注意validation_split参数用于划分数据集,shuffle参数用于确定是否打乱数据。如果原始数据集本身是有序的,应该在第一轮训练之前先打乱顺序。\[3\] #### 引用[.reference_title] - *1* *3* [多层神经网络 —— Sequential模型](https://blog.csdn.net/xuechanba/article/details/124952150)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [搭建小实战和sequential的使用](https://blog.csdn.net/weixin_69398563/article/details/126360789)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值