llvm / llvm/circt

Investigate using the simplex solver in MLIR's Presburger library for scheduling

Open
#2,791 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement Scheduling
Dominant language
C++
Stars
2.2k
Forks
524
Avg merge
3d 2h
Merged PRs (30d)
46

Description

@makslevental pointed out that the [Fast Presburger Library](https://grosser.science/FPL) upstream contains a [simplex solver](https://github.com/llvm/llvm-project/blob/main/mlir/include/mlir/Analysis/Presburger/Simplex.h). This could be a valuable middle ground between the scheduling-specific implementation in [`SimplexSchedulers.cpp`](https://github.com/llvm/circt/blob/main/lib/Scheduling/SimplexSchedulers.cpp) and kicking off LP solving to a generic, external solver.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading lib/Scheduling/SimplexSchedulers.cpp and the upstream MLIR Analysis/Presburger/Simplex.h implementation linked in the issue. Compare the scheduling-specific solver with the upstream simplex solver and determine whether the latter provides a viable middle ground before using an external LP solver. Done means documenting or implementing a clear decision based on that investigation.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.