Macaulay2 / Macaulay2/M2

Slowdown computing resolutions in Complexes

Open
#4,278 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

package issue
Dominant language
Macaulay2
Stars
435
Forks
297
Avg merge
4d 20h
Merged PRs (30d)
11

Description

Compare the following:

```m2
i1 : needsPackage "OldChainComplexes";

i2 : S = ZZ/101[x_1..x_9];

i3 : J = ideal vars S;

o3 : Ideal of S

i4 : T = S/J^5;

i5 : elapsedTime res coker presentation T
-- 2.99913s elapsed

1 1287 8580 25740 45045 50050 36036 16380 4290 495
o5 = S <-- S <-- S <-- S <-- S <-- S <-- S <-- S <-- S <-- S <-- 0

0 1 2 3 4 5 6 7 8 9 10

o5 : ChainComplex
```

versus:

```m2
i1 : needsPackage "Complexes"
-- warning: symbol "GradedModuleMap" in OldChainComplexes.Dictionary is shadowed by a symbol in Complexes.Dictionary
-- use the synonym OldChainComplexes$GradedModuleMap
-- warning: symbol "GradedModule" in OldChainComplexes.Dictionary is shadowed by a symbol in Complexes.Dictionary
-- use the synonym OldChainComplexes$GradedModule
-- warning: symbol "res" in OldChainComplexes.Dictionary is shadowed by a symbol in Complexes.Dictionary
-- use one of the synonyms OldChainComplexes$res, OldChainComplexes$resolution
-- warning: symbol "resolution" in OldChainComplexes.Dictionary is shadowed by a symbol in Complexes.Dictionary
-- use one of the synonyms OldChainComplexes$res, OldChainComplexes$resolution

o1 = Complexes

o1 : Package

i2 : S = ZZ/101[x_1..x_9];

i3 : J = ideal vars S;

o3 : Ideal of S

i4 : T = S/J^5;

i5 : elapsedTime res coker presentation T
-- 10.8809s elapsed

1 1287 8580 25740 45045 50050 36036 16380 4290 495
o5 = S <-- S <-- S <-- S <-- S <-- S <-- S <-- S <-- S <-- S

0 1 2 3 4 5 6 7 8 9

o5 : Complex
```

This example is based on `check(1, "Depth")`, which was running out of memory in the cmake-macos builds for #4171.

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

Reproduce the comparison using the shown Macaulay2 commands for OldChainComplexes and Complexes, then run the check(1, "Depth") case referenced in #4171. Trace why resolution computation is slower or exhausts memory in the cmake-macos builds; done means the regression is explained and the affected workload no longer has the reported slowdown or memory failure.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake
Domain
build-system, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.