It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center




9年前关闭。




我目前正在探索统一并行C的某些方面作为替代方法
到HPC中的标准并行化方法(例如MPI,OpenMP或混合方法)。

我的问题是:
是否有人在大型应用程序(〜> 10,000内核)的UPC性能方面有经验?我主要对共享内存的访问速度感兴趣。显然这取决于
在底层硬件,网络连接,操作系统,编译器等上。但是我
我对使用UPC解决任何类型的“现实世界”问题通常很感兴趣。

此外,您对UPC的总体印象是什么?你认为它有潜力吗
future 会比现在更广泛地使用?值得切换吗?

欢迎任何意见!

非常感谢,
标记

最佳答案

两种方式都有优点和缺点。

UPC的优点是,与MPI或MPI + OpenMP相比,使某些东西正常工作并具有不错的性能可能更容易。并且由于(例如)伯克利UPC编译器是开源的,因此无论现在如何,您都应该能够在5年后编译程序。最重要的是,IBM必须获得支持UPC之类的语言才能赢得Blue Waters契约(Contract),因此,至少在该系统的整个生命周期内,都应该有一个专业维护的UPC编译器,这应该有助于UPC生态系统保持活跃。

我个人还没有在UPC中编写任何非常大的代码(就代码大小或扩展到> 1k procs而言),但是在最坏的情况下,您可以使用MPI运行时来运行它,并且它应该像相应的那样进行扩展MPI代码。在较小的问题上,有许多轶事证据表明,以UPC(和其他PGAS语言)编写的代码的性能肯定与以类似方式编写的MPI程序相比,有时甚至比它们更好,并且其原因相当好了解。

缺点是,由于它是新工具,因此对工具的支持不那么强大。有许多相当复杂的工具,免费的和商业的,可用于大规模MPI应用程序的性能调整,而PGAS/GASnet/UPC工具的研究级却很糟糕。 IBM可能正在为Blue Waters开发产品,但是除非您在P7系统上运行,否则可能对您没有太大帮助。同样,并行I/O库/工具在UPC中似乎并不真正以任何形式存在。

此外,使用新的lanaguage,始终担心它从现在起N年后仍将保持活跃状态​​。编译器应该可以工作,但是会为新的体系结构继续开发和改进新的运行时吗?请注意,对于新的科学编程语言而言,这一直是我们的第二十二条。科学开发人员往往非常保守,他们想知道他们正在从事的工作将在 future 10多年内继续有效(并且可以很好地工作),因此他们倾向于对新语言的生命周期持怀疑态度,并且当人们远离新语言时,他们变成了自我实现的预言,因此他们变得语言lang废,并成为了弃用软件。

我不认为UPC会为此带来很大的麻烦,因为我认为这些PGAS语言背后有足够的机构支持,因此它们会存在一段时间。 Coarray Fortran是2008年标准的一部分,因此无论如何编译器供应商都必须支持类似PGAS的运行时。 DARPA等远远落后于PGAS-y语言或X10/Chapel之类的东西。因此,我认为这些语言将更有可能获得成功,并且我认为5-10年后您的代码仍将编译并至少可以正常运行。

我对围绕UPC的软件体系结构问题感到好奇;我不知道新的共享阵列对开发大型软件最终是好是坏。像coarray fortran这样的工具,它的野心较小,但在大型程序包中如何发挥作用则要容易一些。

因此,在所有这些段落之后,恐怕答案都是“取决于情况”,这很可能取决于您的个人风格和风险承受能力。如果您喜欢采用先行者,事物的前沿技术,那么它具有所有优点(率先使用新的,高生产率的工具,超越他人,成为新手的专家)和缺点(缺乏强大的工具支持,较高的风险程度,可转用的书籍较少等),这意味着,我认为UPC可能是一个不错的选择。基本的编程模型将会存在很长一段时间,尤其是这种语言有大量的支持。另一方面,如果您更喜欢“安全地玩”并采用MPI + OpenMP方法,那也将是一个很合理的选择。但是最后,我们需要一些开发人员为实际项目尝试这些新语言,否则,作为一个社区,我们将永远被C/Fortran + MPI + OpenMP所束缚。

10-08 08:44