RPFOSolverBench (Reduced-precision First Order Solver Benchmark) is an open-source MATLAB benchmark for fist-order convex optimization solvers. RPFOSolverBench implements the alternating direction method of multipliers (ADMM) and the Proximal-gradient Descent (PGD) under different floating-point and fixed-point machine representations.
Current version: 1.0.0
Release notes:
-
The current version only implements PGD and ADMM for the LASSO problem.
-
Other first-order solvers and other problems will be added in future releases.
RPFOSolver Benchmark implements PG and ADMM to solve the LASSO problem
RPFOSolver Benchmark offers a choice to solve problem (1) using different custom data types and compares the output of each to the default double precision floating-point representation.
- CVX
- Fixed-point Designer
Type >> pg_benchmarking OR >> admm_benchmarking with custom problem data (modify the data) or use the default randomly generated problem data to compare the LASSO function values under different machine representations. The default benchmark implements PG and ADMM under 'double precision', 'single precision', '12 bits fixed-point' and '16 bits fixed-point' representations.
To add custom data types add a case statement with custom data type name. To invoke a specific type within another function use
>> T = mytypes('data type');
then use casting as follows:
>> x = cast(x0, 'like', T.x)
To optimize the data type for a specific application run 'pg_solv_mex'. Note that an html static version and a Matlab data export file version of the instrumentation report are generated by default which can be found in the 'instrumentation' folder. The report is updated with new data after each benchmarking run.
for a complete list of solver options.
NOTE: this is a research code, and is under active development. You may find some undocumented inputs and options that are being used for development purposes, in the hope that they will become part of the "official" release. If you have any suggestions for improvement, or find any bugs, feel free to contact us!
If you find RPFOSolver Benchmark useful, please cite the following paper as appropriate:
@inproceedings{hamadouche2021approximate,
title={Approximate Proximal-Gradient Methods},
author={Hamadouche, Anis and Wu, Yun and Wallace, Andrew M and Mota, Jo{\~a}o FC},
booktitle={2021 Sensor Signal Processing for Defence Conference (SSPD)},
pages={1--6},
year={2021},
organization={IEEE}
}
To contact us about RPFOSolver Benchmark, suggest improvements and report bugs, email either [Anis Hamadouche] (mailto:[email protected]?Subject=RPFOSolverBenchmark) or [Yun Wu] (mailto:[email protected]?Subject=RPFOSolverBenchmark).
RPFOSolver Benchmark is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public Licence (LGPL) as published by the Free Software Foundation; either version 3 of the Licence, or (at your option) any later version.
RPFOSolver Benchmark is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with RPFOSolver Benchmark; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.