昨晚发神经,内只碎外屏要不要换总成全碎,换一个要多少钱

从并行计算的角度,MPI 与 OpenMP 的对比
就是想更好的对比两者之间的不同,当然入门一点最好。我要帮导师做这样的服务器,正在入手过程中。OpenMP和MPI是并行编程的两个手段,对比如下:OpenMP:线程级(并行粒度);共享存储;隐式(数据分配方式);可扩展性差;MPI:进程级;分布式存储;显式;可扩展性好。OpenMP采用共享存储,意味着它只适应于SMP,DSM机器,不适合于集群。MPI虽适合于各种机器,但它的编程模型复杂:需要分析及划分应用程序问题,并将问题映射到分布式进程集合;需要解决通信延迟大和负载不平衡两个主要问题;调试MPI程序麻烦;MPI程序可靠性差,一个进程出问题,整个程序将错误;一看日期,这个问题比较早了,可能现在回答有点迟,我就从实际情况来回答吧.首先,应用并行计算的目的,主要针对计算密集型任务,利用并行计算,减少计算时间.那么,采用哪种合适的并行运算库,就应该取决于目标任务的所需要的计算量,毕竟,并行化后的计算时间,可以简单地看做是成比例缩小的.比如串行任务需要360小时,那么,4核并行化后大约90小时,36核可能大约就10小时了.然后,再观察OpenMP和MPI的两种并行运算库的特性, @李超铮已经总结的很好了.那么,若是简单地需要缩小到个位数以内的时间,那么,OpenMP可能是更好的选择,学习成本低,硬件投入也简单,买个好一点的工作站,相对于常用的笔记本,就可以很明显的缩短计算时间.但若是想要几十倍,甚至成百倍的提高计算能力,OpenMP这种需要所有CPU共享相同内存的模型,就不适用了,这时,MPI这种分布式计算模型就更为适用,特别是利用超级计算机集群进行计算时.最后,其实这类计算密集型任务,可能利用OpenCL可能更为合适,虽然有一定的学习成本,但模型比MPI简单,扩展性比OpenMP更好,更关键的,是目前各个并行计算厂商都在支持的实际标准(de facto standard),适用于CPU和GPU平台,虽然转移平台仍需要人工去做一定修改,但OpenMP和MPI只支持CPU平台.特别的,如今一块顶级GPU的浮点数计算能力已经达到了我所在学校2004年建设的半个超级计算机集群的运算能力(50台).Openmp简单。不用大改源程序,直接加#pragma就行了。只适用于共享式内存。比如一台电脑,4核cpu共享16G内存,可以用Openmp启动4核同时计算。MPI稍复杂。需要重新设计程序,学习成本稍高。扩展性好,适用于共享式或者分布式内存(楼上所说有误)。比如二台电脑,各有4核cpu和16G内存,可以用MPI同时在二台电脑上计算,并且每台电脑都同时使用各自的4核,和16G内存(相当于8核同时计算)。因此你在一台电脑上写出的程序,也可以方便的使用在计算机集群中。首先OpenMP和MPI的区别在于针对的是不同的内存模型,二者并非水火不容。恰恰相反,很多时候要两者同时使用来达到最好的性能。OpenMP的内存模型是统一/共享的内存模型(unified/shared memory),比如你的笔记本的电脑CPU有4个核心但只有一个共同的内存,各个核心通过内存来分享交换数据。MPI不仅可以用于上述unified/shared memory,更多用于distributed memory,比如你有一个集群8台服务器,每台服务器有各自的CPU和内存,需要通过以太网/Infiniband交换数据。上面很多朋友都说MPI复杂,OpenMP更简单,其实未必。所谓MPI复杂是指需要程序员手动管理数据是怎么partition的,并且要手动实现进程之间的相互通信(例如MPI_Send, MPI_Recv),以及维持同步(scynchronization, 例如MPI_Barrier),但这一切都是尽在程序员掌握之中的。OpenMP你只要在程序适当位置#pragma就好了,编译器以及动态库帮你把数据partition,确实方便省事儿。然而风险在于如果你的#pragma没有写好,很容易产生data race,而且编译器根本不会提示你,程序还是照样能跑,只不过跑出来的结果可能会差了十万八千里。(别问我怎么知道的,都是泪)至于二者性能,前几天看了一篇论文[1]里有一个图很直观:(只是针对一个benchmark,实际性能还要看具体应用)一般来说当你有两台以上的机器的时候,二者结合使用疗效更佳。[1]Bova, Steve W., et al. "Parallel programming with message passing and directives." Computing in Science & Engineering 3.5 (2001): 22-37.你问的不是非常清楚,建服务器和这两个编程模型哪个好,不是一个问题。多台机器,每台都是多核,那自然就是 OpenMP + MPI。如果你们打算买编译器,那么运行时库都会在里面。如果用开源编译器,比如 gcc,你需要自己编译安装开源的 runtime library ,比如 OpenMPI.至于把普通单线程程序 port 成这两个模型,那就是另一番学习的过程了。openmp适合对原有的串行代码进行并行化改造,新项目还是用mpi好一些,一个是适应的硬件条件广泛,速度也比较快,openmp当线程数超过一定数量,比同样进程数的mpi慢。
更多相关文章
程序中a.out编写中使用了openmp,且工作站上装有openmpi.如果使用mpirun运行,则会在每个核上同时运行一次程序.如果不适用mpirun,则无论分配多少个进程,都在一个核上运行.请问可否使用多个核运行同一程序,即将多线程分配到多核去运行?你搞错工具了--openmp和openmpi是 ...
你们公司的产品有用到OpenMP吗?如果需要并行计算,你会选择OpenMP吗?我大学毕业设计用到了 具体看应用的需求,OpenMP适合那种并行模式简单常见,希望通过并行加速但又不想在并行控制上花太多精力的场景,当然一般还要限制在单机同一个线程内才能比较好的发挥他的优势,总的来说这 ...
之前在 Linux 下写的一些小程序,使用来 OpenMP 和 GSL,迁移到 OS X 下面来发现根本编译不过:ld: library not found for -lgomp clang: error: linker command failed with exit code 1 (use -v ...
我们组主要从事互联网广告中ML,DM相关算法的研发工作,由于mahout,weka之类很难适用于目前的工作场景或者说得到比较好的结果,所以主要的工作内容是基于业务数据研发新的模型(从样本数据的清洗和采样开始,工业界嘛,你懂的),并且最终提供可以实现的版本,支持公司业务.现在主要是用SAS.R.Mat ...
Google trend:Google Trendsblog post:HPC is dying, and MPI is killing it分别体现在就业机会,关注度,和技术本身的瓶颈上.spark亮了 MPI更像个协议栈.Spark和Hadoop比较贴近应用.用的人多呗- 2 ...
以上两个并行框架如何选择,各适合那些场景(或者算法)如果数据量不大,能够fit到内存中,并且对fault tolerant要求不高 =& MPI如果数据量大,内存装不下,机器比较挫且多 =& MapReduce其实我觉得MPI程序和MapReduce程序的编程复杂度差不多... 2015 ...
CUDA 并行计算和大数据分析,尤其是涉及到高并发实时性数据上涉及到大量计算的方面并没有太多的公司支持.如果搞CUDA计算,会应用到哪些地方?希望得到更详细的行业涉及.Cuda-aware mpi已经对cuda支持的不错了,infiniband,gpudirect都已经加入了支持.现在用的比较多的是 ...
看到网上很多人都有同样的问题,但是回答很简略,我没有真正理解清楚.请哪位大神具体解释一下阿?OpenMP的parallel region结束时,线程之间需要同步:即主线程需要等待所有其他线程完成工作之后才能继续,这个过程可以称做barrier.一个简单的barrier的实现如下_Atomic int ...
总决赛战绩,该世界杯历史上只有三支球队战胜过中国队.你体会一下.匿名 6 ...
不一定要经典,而要在于『难忘』,看一次就永远记住的那种.浙江温州 浙江温州 最大皮革厂江南皮革厂倒闭啦! 王八蛋老板黄鹤吃喝嫖赌,欠下了3.5个亿,带着他的小姨子跑了!我们没有办法,拿着钱包抵工资!原价都是一百多.两 ...
本人高三文科,满身消极因子.比如:别人认为努力后就一定会成功,我却总否定自己努力后不一定能得到回报.事实上也确实是这样.我们摸底考试我选择错好多,我也认真分析了原因.可我害怕尽管我做这么多下次一样是失败的.在17岁的 ...
5x的ram让人担心不够用.外媒说6p有易掰弯和玻璃碎裂问题.该如何选择?现在使用nexus5
数码直接买最新款,胶片买老头. 835/2第一代是1958年开始生产的八枚玉,8片6组,10叶光圈,其中11108为了搭配M3使用配有眼镜,11307为无眼镜黑色,11308为无眼镜银色,11008 ...
震动模块 6.震动模块 2
一题多问吧,CE3开发的游戏很多,题主也玩过很多CE3开发的游戏,除了孤岛3,其他与使用虚幻3 的相比视觉差距不大.游戏的最终视觉效果与除了引擎之外哪些因素相关?希望回答可以有各种游戏截图的对比.
简单易做,可爱,可以用任何想要的颜色制作.工具/原料超轻粘土,灰色,黑色.点钻笔小号,粘土 ...
在恋爱中打打闹闹的事情多了,分分合合的自然也多了,不管什么原因分了手,分手后会发现经过一段 ...本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-!
虚拟现实还只是电影中遥不可及的愿景
百度机器人商业首秀 人工智能在肯德基点鸡块薯条
3D打印将会融入我们的身体 服务领域从生到死
健康还是时尚? 残酷竞争促 智能手环分化
4月28日消息,一年一度的GMIC大会于今日开幕,在下午的全球智能机器人大会上,地平线机器人技术创始人兼CEO余凯发表了开场演讲,认为人工智...
恰逢人工智能诞生60周年,由人工智能学会发起的2016全球人工智能技术大会暨人工智能60周年纪念活动启动仪式,在北京国家会议中心召开。老中...
据美国科技媒体网站The Verge4月30日报道,法国喷气滑雪冠军和世界摩托赛艇冠军佛朗基 萨帕塔(Franky Zapata)操控喷气动力 悬浮滑板 Flyboa...
斯坦福大学人工智能与伦理学教授杰瑞卡普兰认为,不久的将来,人类再也不用劳动。因为人工智能在自动化作业、自动驾驶,合成智能、执行能力...C++与OpenMP配合的最简线程池_Linux编程_Linux公社-Linux系统门户网站
你好,游客
C++与OpenMP配合的最简线程池
来源:Linux社区&
作者:goldenhawking
最近在写算法时,发现OpenMP + C++ functional 可以瞬间构造一个线程池,并执行风马牛不相及的事情。看来,有必要好好思考一下今后算法优化的事情了! 在 g++下通过编译
#include &iostream&#include &functional&#include &vector&
void fun (int a, int b){& & cout&& "fun exec :"&& a && '+' && b && '=' && a + b &&}
class C{private:& & float m_c = 2.0f;public:& & void mp( float d)& & {& & & & cout&&"c::mp exec :"&& m_c && 'x' && d && '=' && m_c * d &&& & }};
int main(int argc, char * argv[]){& & const int task_groups = 5;& & C c [task_groups]; & & vector&function&void (void) & && & for (int i=0;i&task_++i)& & {& & & & tasks.push_back(bind( fun , 10, i * 10 ) );& & & & tasks.push_back(bind( &C::mp , &c[i], i*2.0f ) );& & & & tasks.push_back(bind(& & & & & & [=] (void) {cout && "lambada :" &&i &&& & }& & & & & & ) );& & }& & size_t sz = tasks.size();#pragma& omp parallel for& & for (size_t i=0;i&++i)& & {& & & & tasks[i]();& & }& & return 0;}
fun exec :10+0=10c::mp exec :2x0=0lambada :0fun exec :10+10=20c::mp exec :2x2=4lambada :1fun exec :10+20=30c::mp exec :2x4=8lambada :2fun exec :10+30=40c::mp exec :2x6=12lambada :3fun exec :10+40=50c::mp exec :2x8=16lambada :4
编译器选项: -fopenmp 链接选项: -lgomp
本文永久更新链接地址:
相关资讯 & & &
& (12/11/:42)
& (07/25/:49)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款

我要回帖

更多关于 外屏碎了不换有影响吗 的文章

 

随机推荐