Mar*_*ark 10 c parallel-processing hpc upc
我目前正在探索统一并行C的某些方面,作为HPC中标准并行化方法的替代方法(如MPI,OpenMP或氢化方法).
我的问题是:有没有人在大规模应用程序(〜> 10.000核心)上有UPC性能经验?我主要对共享内存的访问速度感兴趣.显然这取决于底层硬件,网络连接,操作系统,编译器等.但我通常对使用UPC解决任何类型的"真实世界"问题感兴趣.
此外,您对UPC的总体印象是什么?你认为它有可能比现在更广泛地使用未来吗?是否值得转用它?
欢迎任何评论!
非常感谢,马克
Jon*_*rsi 12
无论哪种方式都有利弊.
UPC的优势在于,与MPI或MPI + OpenMP相比,它可能更容易获得有效的工作,并且具有良好的性能.而且因为(比方说)伯克利UPC编译器是开源的,你应该能够在5年后编译你的程序,无论如何.最重要的是,像UPC这样的支持语言是IBM赢得Blue Waters合同的必要条件,因此至少在该系统的生命周期内应该有一个专业维护的UPC编译器,这应该有助于UPC生态系统保持活跃.
我个人在UPC中没有写任何非常大的东西(在代码大小方面,或者在缩放到> 1k procs方面),但在最坏的情况下你可以使用MPI运行时运行它,它应该像对应的那样扩展MPI代码.对于较小的问题,有许多证据表明用UPC(和其他PGAS语言)编写的代码的性能肯定与以类似方式编写的MPI程序竞争,有时甚至更好,其原因相当好了解.
缺点是,因为它是新的,工具支持不那么强大.有许多非常复杂的工具,免费和商业,用于大规模MPI应用程序的性能调整,而PGAS/GASnet/UPC工具更糟糕的是研究级别.IBM很可能会为Blue Waters开发一些东西,但除非你在P7系统上运行,否则对你来说可能无济于事.类似地,并行I/O库/工具似乎并不以任何固体形式存在于UPC中.
此外,随着一个新的语言,人们总是担心它将在N年后保持活跃程度.编译器应该可以工作,但新的运行时是否会继续为新架构开发和改进?请注意,这一直是新科学编程语言的第22个问题.科学开发人员往往非常保守,想要知道他们正在研究的东西将在未来10年内继续发挥作用(并且运作良好),因此他们往往对新语言的长寿持怀疑态度 - 而且变成了一种自我满足的预言,因为人们远离新语言,所以他们萎靡不振并成为遗弃软件.
我不认为这对UPC来说是一个巨大的担忧,因为我认为这些PGAS语言背后有足够的机构支持,他们将会存在一段时间.Coarray Fortran是2008标准的一部分,因此无论如何编译器供应商都必须支持类似PGAS的运行时.DARPA等强烈支持PGAS-y语言或X10/Chapel之类的东西.所以我认为这些语言更有可能获得成功的公平机会,我认为5到10年后你的代码仍然可以编译和运行至少可以很好.
我很好奇UPC周围的软件架构问题; 我不知道新的共享阵列最终是开发真正大型软件的好坏.像coarray fortran这样的东西,不那么野心勃勃,更容易看出它在一个大包装中如何发挥作用.
所以在所有这些段落之后,我担心答案是"它取决于",而且可能会归结为你的个人风格和风险承受能力.如果你喜欢成为第一个采用者,领先者,拥有所有优势(第一个利用新的,高效率的工具,跨越他人,成为新东西的专家)和缺点(缺乏强大的工具支持,更高的风险程度,更少的书籍等等,这意味着,我认为UPC可能是一个非常可靠的选择.基本的编程模型将会存在很长一段时间,特别是这种语言有很多支持.另一方面,如果你更喜欢"安全地玩"并采用MPI + OpenMP方法,那么这也是一个非常可靠的选择.但最终,我们需要一些开发人员为真实项目尝试这些新语言,或者我们作为一个社区将永远陷入C/Fortran + MPI + OpenMP.
很难超越乔纳森·杜尔西的答案,但我确实想补充一点,你的选择不一定是非此即彼。你可以两者兼得。阿贡国家实验室的吉姆·迪南 (Jim Dinan) 使用 MPI 作为“节点外”消息传递方法,使用 UPC 作为节点上(共享内存)片段,展示了良好的结果。
请参阅“使用 MPI 和统一并行 C 进行混合并行编程”James Dinan、Pavan Balaji、Ewing Lusk、P. Sadayappan、Rajeev Thakur。过程。第七届 ACM 会议 计算前沿(CF)。贝尔蒂诺罗,意大利。2010 年 5 月 17 日至 19 日。
| 归档时间: |
|
| 查看次数: |
446 次 |
| 最近记录: |