POLO: a POLicy-based Optimization library

10/08/2018
by   Arda Aytekin, et al.
0

We present POLO --- a C++ library for large-scale parallel optimization research that emphasizes ease-of-use, flexibility and efficiency in algorithm design. It uses multiple inheritance and template programming to decompose algorithms into essential policies and facilitate code reuse. With its clear separation between algorithm and execution policies, it provides researchers with a simple and powerful platform for prototyping ideas, evaluating them on different parallel computing architectures and hardware platforms, and generating compact and efficient production code. A C-API is included for customization and data loading in high-level languages. POLO enables users to move seamlessly from serial to multi-threaded shared-memory and multi-node distributed-memory executors. We demonstrate how POLO allows users to implement state-of-the-art asynchronous parallel optimization algorithms in just a few lines of code and report experiment results from shared and distributed-memory computing architectures. We provide both POLO and POLO.jl, a wrapper around POLO written in the Julia language, at https://github.com/pologrp under the permissive MIT license.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
08/01/2019

Popt4jlib: A Parallel/Distributed Optimization Library for Java

This paper describes the architectural design as well as key implementat...
research
07/07/2020

From API to NLI: A New Interface for Library Reuse

Developers frequently reuse APIs from existing libraries to implement ce...
research
02/24/2019

clusterNOR: A NUMA-Optimized Clustering Framework

Clustering algorithms are iterative and have complex data access pattern...
research
09/23/2019

Efficient Stochastic Programming in Julia

We present StochasticPrograms.jl, a user-friendly and powerful open-sour...
research
08/02/2020

A Unifying Framework for Parallel and Distributed Processing in R using Futures

A future is a programming construct designed for concurrent and asynchro...
research
09/11/2020

Kvik: A task based middleware with composable scheduling policies

In this paper we present Kvik: an implementation of a task-based "middle...
research
04/27/2022

Learning to Parallelize in a Shared-Memory Environment with Transformers

In past years, the world has switched to many-core and multi-core shared...

Please sign up or login with your details

Forgot password? Click here to reset