Skip to content

An open-source MATLAB benchmark for reduced-precision solver verification

License

Notifications You must be signed in to change notification settings

aham225/RPFOSolverBench

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RPFOSolver Benchmark

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.

Contents

Description

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.

Requirement

  • CVX
  • Fixed-point Designer

Quick start

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!

How to cite

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}
}
	

Contact us

To contact us about RPFOSolver Benchmark, suggest improvements and report bugs, email either [Anis Hamadouche] (mailto:ah225@hw.ac.uk?Subject=RPFOSolverBenchmark) or [Yun Wu] (mailto:y.wu@hw.ac.uk?Subject=RPFOSolverBenchmark).

Licence

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.

About

An open-source MATLAB benchmark for reduced-precision solver verification

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages