lrsscripts(5)
โจ lrsscripts ๐ โ bestie edition โจ
okay so this is lrsscripts(5), part of the lrslib 7.2 era, and babes it's a whole collection of shell functions that do the common lrslib operations for you. fragile shell functions, to be exact. caveat emptor, bestie!! ๐ซถ buyer beware, no cap.
๐ธ SYNOPSIS ๐ธ
mfel input-file [output-file [procs ] ]
mlrs input-file [output-file [procs [cptime [cpindex] ] ]
tlrs input-file [output-file [procs ]
plotV|plotR lrs-output-file [maxdepth [maxcobases] ]
plotL [histogram-file]
projred [-solver SMT-solver] ine-file [output file]
๐ DESCRIPTION ๐
๐ mfel
okay so mfel is literally the multiprocessor version of fel(1) ๐ฆ and it performs multiple rounds of Fourier-Motzkin elimination, exactly as specified in either a project or eliminate option in the input file. meanwhile mplrs performs only one iteration and then justโฆ terminates. iconic behaviour gap honestly.
procs, if you specify it, is the number of processors to use (assigned according to the default-hostfile). if you don't? it just uses all available processors on the current machine. go off, queen ๐
๐ mlrs
mlrs is a simple interface to mplrs(1) that's giving very much lrs(1) energy, and on top of that it does automatic checkpoint/restart for long runs. obsessed with the foresight actually.
procs(if specified) โ the number of processors to use, assigned according to the default-hostfile. otherwise all available processors on the current machine get used. all of them. slay.cptime(if specified) โ the time in seconds until a checkpoint/restart is made. default is86400secs (1 day). yes bestie, a whole day โฐ- Checkpoint data gets written into a file named
input-file.cpN, whereN=0,1,2,...is assigned consecutively. cpindex(if specified) โ a valid value ofN, and it causes a restart from checkpoint fileinput-file.cpN.
other mplrs(1) command line parameters are default values. that's it that's the tea โ
๐ tlrs
tlrs runs naive hybrid arithmetic for multithreaded lrs, using the binaries tlrs1, tlrs2, tlrsgmp.
procs (if specified) is the number of threads to use. if it's omitted or zero, the default openMP maximum thread count is used. it's giving "let the machine decide" โจ
๐ฆ plotV and plotR
both of these require gnuplot to be installed, so like, manifest it first bestie ๐ฎ
plotVโ produces a PDF file named<lrs-output-file>V.pdfthat gives a plot of each vertex or facet along with its height in the reverse search tree. ๐ณlrs-output-fileshould be anlrs/mplrsoutput file produced when theprintcobasisis included in the input file for the run. iykyk.plotRโ performs a similar task toplotVfor cones, producing the file<lrs-output-file>H.pdfwhere the height of each ray is plotted. rays getting their moment ๐ซ
๐ plotL
also requires gnuplot, bestie ๐
plotL produces a realtime view of an mplrs run that uses the command line option "-hist <histogram-file>". if histogram-file is not specified, hist is the assumed file name. a PDF file named <histogram-file>.pdf is produced.
here's the vibe check on the plots:
- The first plot has 3 graphs showing the number of processors working, the size of the job queue
L, and message requests pending, all versus elapsed time on the x-axis. ๐ - The second histogram shows the size of the subtrees explored by producers. The root of the subtree is not counted in this size.
- Note that a producer stops after (possibly scaled)
maxcnodes are explored, but in backtracking some additional leaves may be discovered. So the size of the largest subtree may be slightly larger thanmaxc. not a bug just quirky ๐คทโโ๏ธ
๐
projred
requires inedel, polyv(1) and an external SMT solver to be installed. so like, prerequisites, bestie, we don't skip those ๐ซถ
projred is a simple wrapper for polyv(1) that tests and greedily removes inequalities that are redundant after a projection, without doing the projection. the audacity, the efficiency, we love her.
It repeatedly calls polyv(1) and the specified SMT solver (z3 by default), removing inequalities determined to be redundant for the given projection. The output is produced in [output file] or on standard output if no output file is specified. The output file will produce the same projection as the original input. Inequalities and projection to test are given as options in the input file โ see polyv(1) for details. ๐
๐ NOTES ๐
User's guide for lrslib:
http://cgm.cs.mcgill.ca/~avis/C/lrslib/USERGUIDE.html
๐ AUTHOR ๐
David Avis <avis at cs dot mcgill dot ca >
๐ฅ SEE ALSO ๐ฅ
lrs(1), mplrs(1), fel(1), polyv(1), lrslib(5)
and that's the whole page bestie ๐ this was lrsscripts(5) from lrslib 7.2, dated February 2022 / 2022.02.15 โ periodt, go run some Fourier-Motzkin elimination, ily ๐โจ
๐ฆ where this page comes from
- fedora 43: lrslib-devel 7.3-6.fc43 ยท GPL-2.0-or-later
- fedora 43: lrslib-devel 7.3a-1.fc43 ยท GPL-2.0-or-later
- fedora 44: lrslib-devel 7.3a-3.fc44 ยท GPL-2.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms