lrsscripts(5)

๐Ÿ“ฆ version 7.3a, in fedora 43, fedora 44

โœจ 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 is 86400 secs (1 day). yes bestie, a whole day โฐ
  • Checkpoint data gets written into a file named input-file.cpN, where N=0,1,2,... is assigned consecutively.
  • cpindex (if specified) โ€” a valid value of N, and it causes a restart from checkpoint file input-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.pdf that gives a plot of each vertex or facet along with its height in the reverse search tree. ๐ŸŒณ lrs-output-file should be an lrs/mplrs output file produced when the printcobasis is included in the input file for the run. iykyk.
  • plotR โ€” performs a similar task to plotV for cones, producing the file <lrs-output-file>H.pdf where 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) maxc nodes are explored, but in backtracking some additional leaves may be discovered. So the size of the largest subtree may be slightly larger than maxc. 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