Abstract: Highlights • Policy-based design helps generating tight code while tackling combinatorial design choices. • Julia incurs little overhead when calling C libraries. • Julia’s type system and language features enable high performance with relatively few lines of code. Abstract We present POLO.jl — a Julia package that helps algorithm developers and machine-learning practitioners design and use state-of-the-art parallel optimization algorithms in a flexible and efficient way. POLO.jl extends our C++ library POLO, which has been designed and implemented with the same intentions. POLO.jl not only wraps selected algorithms in POLO and provides an easy mechanism to use data manipulation facilities and loss function definitions in Julia together with the underlying compiled C++ library, but it also uses the policy-based design technique in a Julian way to help users prototype optimization algorithms from their own building blocks. In our experiments, we observe that there is little overhead when using the compiled C++ code directly within Julia. We also notice that the performance of algorithms implemented in pure Julia is comparable with that of their C++ counterparts. Both libraries are hosted on GitHub1under the free MIT license, and can be used easily by pulling the pre-built 64-bit architecture Docker images.2
0 Replies
Loading