POLO: a POLicy-based Optimization library

  • 2018-10-08 12:58:26
  • Arda Aytekin, Martin Biel, Mikael Johansson
  • 3

Abstract

We present POLO --- a C++ library for large-scale parallel optimizationresearch that emphasizes ease-of-use, flexibility and efficiency in algorithmdesign. It uses multiple inheritance and template programming to decomposealgorithms into essential policies and facilitate code reuse. With its clearseparation between algorithm and execution policies, it provides researcherswith a simple and powerful platform for prototyping ideas, evaluating them ondifferent parallel computing architectures and hardware platforms, andgenerating compact and efficient production code. A C-API is included forcustomization and data loading in high-level languages. POLO enables users tomove seamlessly from serial to multi-threaded shared-memory and multi-nodedistributed-memory executors. We demonstrate how POLO allows users to implementstate-of-the-art asynchronous parallel optimization algorithms in just a fewlines of code and report experiment results from shared and distributed-memorycomputing architectures. We provide both POLO and POLO.jl, a wrapper aroundPOLO written in the Julia language, at https://github.com/pologrp under thepermissive MIT license.

 

Quick Read (beta)

loading the full paper ...