多进程/线程编程属于哪个并发模型?

问题描述 投票:1回答:1

Wikipedia C/S article

一些用于建模和理解的形式主义并发系统已开发,包括:[5]

The parallel random-access machine[6]
The actor model
Computational bridging models such as the bulk synchronous parallel (BSP) model
Petri nets
Process calculi
    Calculus of communicating systems (CCS)
    Communicating sequential processes (CSP) model
    π-calculus
Tuple spaces, e.g., Linda
Simple Concurrent Object-Oriented Programming (SCOOP)
Reo Coordination Language

多进程编程(在Linux API,MPI,Java,Python中属于哪个模型?

[多线程编程(例如在PThread,Java,Python中)属于哪个模型?

multithreading concurrency parallel-processing programming-languages multiprocess
1个回答
0
投票

让我补充一点想法:

occam-pi是true- occam-pi语言,非常适合并行的InMos T-414晶片机硬件(实际上是晶片机的硬件网络)。流程基于Lambda微积分理论,保证了调度策略,而协调又得益于Hoarre CSP的开创性工作,而不是实现真正的[PARALLEL]执行,纯[PARALLEL]执行(在可行的情况下)和机会主义的“ just”-[SERIAL],在需要的情况下。

因此,语言(范式)不会唯一地映射到以上Wikipedia列出的并行性原型形式中。外部代码执行生态系统的特性也很重要(在这里,不提美国总统奖章获得者玛格丽特·汉密尔顿女士,他的执着和代码设计的亲和力不仅挽救了这对人的生命,而且挽救了整个阿波罗该程序在全人类的视野中,因为她对碰撞优先/非响应部分的管理相当出色,因为她的MIT团队的所有代码都是使用安装在计算机中的成千上万的三线铁氧体环进行硬接线的阿波罗制导计算机中的ROM块,只有1-kB-RAM,用于实时协调控制月球着陆以及所有其他与阿波罗任务导航和实时控制有关的算法-尊敬的女士- )

另一方面,

Python,是因为Guido Rossum的设计决策是一个纯粹的顺序解释程序(无论实例化了多少线程,如中央全局解释器锁GIL锁都故意将时间流逝,并允许一个线程执行,所有其他线程等待GIL,因此代码原则上避免了任何形式的与[CONCURRENT]相关的冲突(获取资源的竞争条件,读取与写入冲突) (s)等)。

Python can使用通过[CONCURRENT]或ZeroMQ传递消息,可以使用CSP范例模块,具有享受actor模型行为的模块(例如,模仿XEROX PARC-place的示例odel-[[V] isual-C ontroller协作的发明),因此该语言通常不约束范例,而是用于较高的抽象层(而较低级别的约束则限制任何这种抽象形式的执行都可以利用的硬实时性,因为任何低级别的限制都会扩展所有上层抽象层的延迟,并可能引入控制范围之外的细粒度阻塞状态上层抽象代码执行行为的特性)Python can使用

MPI

(是否修饰multiprocessing)-它有助于部分脱离主体,正如Guido Rossum自己表示的那样,GIL锁将保持不变。 python解释器的自然组成部分,除非对解释器的整个概念进行了全面的重新设计(在他看来,这不是在此领域进行进一步努力的可能方向)。试图摆脱原本已知的,永远存在的,主要的GIL锁精心策划的重新执行joblib任意数量的线程执行的尝试,但是每一个都付出了一定的代价-human-related:重构代码,与系统相关:重新生成原始python解释器状态的完全相同的副本(在Windows类O / S-es下,Linux [SERIAL]或Windows中的部分或临时副本的唯一机会,或者fork),通过忽略或错误地猜测由于过程实例化成本(时间+ RAM分配时间+ RAM到RAM复制TIME +参数)而增加或增加了对Amdahl Law附加成本的怀疑,给新手和从业者带来麻烦。 /进程间SER / DES-add-on TIME),它们的总和可以很容易地消除任何承诺或希望得到的加速,而不会变成“ just”-[forkserver或true-[ C0]代码执行域。作为其他提到的大多数示例,Python can)参与了[[[CONCURRENT]

-基础结构,其中高层范例控制了合作执行模式,因此宏系统可以具有更高级别的并发性,在python节点的“内部”不可见。

上面列出的“形式”是一种学术形式(缺少基于硬件的ILP并行性,基于AND和基于OR的形式的细粒度形式的并行性),PRAM是C的主题/ S研究在60年代后期,70年代初期进行了深入研究,当时得出的结论是,即使基于PRAM的体系结构也无法摆脱Class-2计算分类法。

[4.3节

(巨型飞跃有任何机会) 超越2类计算机边界 [PARALLEL]先前思想的主要实践意义(尽管是负面的)是事实在Class-2计算中,不会有任何有效的解决方案解决棘手的问题。

然而,这里提出了一个问题,是否可以想象使用其他种类的并行计算机,在计算上将比2类计算机更有效。

指示,来自许多已知的,概念上不同的C2类计算机模型,建议在不增加其他基本计算能力的情况下,并行性本身不足以克服C2类的界限,无论我们如何尝试在所有可能的可能性内进行修改,这种计算机的体系结构。

事实上,C2类的边界将被越界,是否将不确定性添加到MIMD类型的并行性中(请参见第3.5节)。

不确定PRAM(+)例如,可以解决NPTIME类的(棘手的)问题多对数时间和多项式时间的明显指数序复杂性问题。

因为在计算机环境中,不确定性在技术上同样可行,因此可以实施作为一次透视,从效率的角度来看,C2计算机类似乎代表着并行计算机的终极类别,其边界永远不会被超越。

+)PRAM:并行RAM,而不是仅SIMD处理器,由1979年Stimson的Savitch演示

2 SAVITCH,W. J.-STIMSON,M. J .:带并行处理的时限随机访问机器。 J.ACM 26,1979,Pg。 103-118。2WIEDERMANN,J .:并行计算系统的效率边界。 (Medze efektivnostiparalelnýchvýpočtovýchsystémov)。数学,物理和天文学的进展(第2卷,第2期) 33(1988),第2号,Pg。 81--94

基于进程的代码和基于线程的代码都可以本质上使用,或以几乎任何上面列出的并发形式参与协作的参与者。

代码实现加上所有底层资源的管理约束(在相应的使用上下文中,硬件+ O / S +资源管理策略)实际上决定了字段中仍可实现哪些形式,何时以及如何执行任何代码-即,如果O / S策略要求您的代码仅在一个CPU核和一个CPU核上执行,则您的代码设计可以是任意级别的体系结构(由于用户进程有效的权限强制执行了亲缘关系映射约束),同样,任何此类智能代码都会导致重新执行[[2执行代码(支付所有2希望拥有的[[[SERIAL]

执行,但是花了很多钱并继续花掉了这些附加费用,却得不到任何回报),就像简单的纯add-on overhead costs
代码所做的一样[该代码也没有任何浪费的附加费用,因此可以更快地生成结果,而且如果使用HPC-gra,通常还可以享受CPU核心本地L1 / L2缓存层次不耗尽的优势精心设计了de计算功能:o)]
© www.soinside.com 2019 - 2024. All rights reserved.