Developing software to effectively take advantage of growth in parallel and distributed processing capacity poses significant challenges. Traditional programming techniques allow a user to assume that execution, message passing, and memory are always kept synchronized. However, maintaining this consistency becomes increasingly costly at scale. One proposed strategy is "best-effort computing", which relaxes synchronization and hardware reliability requirements, accepting nondeterminism in exchange for efficiency. Although many programming languages and frameworks aim to facilitate software development for high performance applications, existing tools do not directly provide a prepackaged best-effort interface. The Conduit C++ Library aims to provide such an interface for convenient implementation of software that uses best-effort inter-thread and inter-process communication. Here, we describe the motivation, objectives, design, and implementation of the library. Benchmarks on a communication-intensive graph coloring problem and a compute-intensive digital evolution simulation show that Conduit's best-effort model can improve scaling efficiency and solution quality, particularly in a distributed, multi-node context.
翻译:传统的编程技术使用户能够认为执行、传递信息、记忆总是同步的。然而,保持这种一致性在规模上成本越来越高。一个拟议战略是“最佳努力计算”,它放宽同步和硬件可靠性要求,接受非确定性以换取效率。虽然许多编程语言和框架旨在促进软件开发,用于高性能应用,但现有工具并不能直接提供预先包装的最佳工作接口。C+++图书馆旨在为方便地实施使用最佳工作间和进程间通信的软件提供一个接口。在这里,我们描述图书馆的动机、目标、设计和实施。关于通信密集型图形颜色问题的基准和计算密集型数字进化模拟显示,Conduit公司的最佳功能模型可以提高效率和解决方案的质量,特别是在分布式、多节点的背景下。