有没有啥问题是天生适合并行计算的

没学过并行计算,说的不一定对的;但是我思考过从大O的角度,并行计算的总计算量是不会比串行计算要小的不考虑内存限制,用单机模拟并行计算很简单:把各个并行的机器当作单机中的一个进程就行了;并行机间的通信是进程间通信。对大多数问题来说,不同机器之间的通信,数据交换,阻塞等都比串行计算要困难,并行计算往往比串行计算需要更多的总计算量。把串行计算转化为并行计算:对于一个问题Q,要想并行计算,首先得把Q分解成一组子问题和合并子问题的方法: + combine(Q1,Q2,..,Qn)子问题可以并行计算,但子问题间往往有相互依赖关系,这时候需要进行机器间进行同步或数据交换;子问题间没有依赖关系,最终问题化为树形结构如下图所示:
能化为树形结构的问题最适合于并行计算,子问题间相互依赖关系比较大的问题不适合平行计算(依赖关系主要指同步和数据交换开销)有没有啥问题是天生适合并行计算的

以上计算步骤是DAG(有向无环图)的:1子问题间不会有相互依赖路径(无环),2没有依赖路径的子问题可以并行运算如果子问题是相互依赖的呢(有向有环图)?这里有个问题: A依赖于B;B又依赖于A;那么到底该先计算谁呢?但是有可能存在这样的模型;有没有啥问题是天生适合并行计算的

比如A,B两台机器;依赖关系:A需要的参数alpha来自于B的计算结果;B需要的参数beta来自于A的计算结果初始条件:给alpha和beta赋一个随机初始值更新参数:A生成新的beta立刻发往B;B生成新的参数alpha立刻发往A;A,B之间没有同步;收到新参数就更改由于A,B之间没有同步,其计算结果不一定是确定的;但有没有可能收敛呢?在特别的模型下会不会总是收敛到想要的结果呢?(带随机数生成器的图灵机)
这个并行模型也是可以用串行机模拟的,但在某种意义下串行计算需要的总计算量比并行计算大;因为串行计算本身是确定的;为了模拟这种随机的依赖关系需要额外模拟随机性的开销和调度开销

■网友
Monte Carlo
■网友
适合用遗传算法解的问题
■网友
【有没有啥问题是天生适合并行计算的】 关于光线的任何计算,使用一个天生可以并行的普通透镜,所达到的效果要远好于一打超级计算机。

■网友
肯定是有的 比如说在网络中的广播 broadcasting每一个网络中的节点都是一个处理器,一条信息从一个处理器出发,依次传输给相邻的处理器。所以最快的速度是以log N时间完成广播。因为每次被广播到处理器的数量翻倍。但如果是在串行计算中,广播速度就是N时间了。


    推荐阅读