Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reopening the issue on the limitation on the number of variables/equations in v1.6 #191

Open
SeffyVon opened this issue Oct 20, 2023 · 2 comments

Comments

@SeffyVon
Copy link

Hello,

Apologize if this issue of Bertini v1.6 should not be reopened in this way, but I was experiencing the same problem of solving 34 equations and 34 variables. These equations worked fine on 6 equations and 6 variables and they worked perfectly. Here is the same error message.

ERROR: The number of startpoints must be positive!
Bertini will now exit due to this error.

In Issue #157 it is said that it is due to the variable that stores the number of startpoints being a 32-bit integer, thus allowing only $2^{32}$ startpoints. The suggestion of trying regeneration was way too long, as it iterates $2^1+2^2+...+2^{34}$ paths, and I cannot simplify the equations.

Sorry for my naive assumption about how the code works, but could this limitation be alleviated by using a 64-bit integer? Something like the suggestions in https://stackoverflow.com/questions/9606455/how-to-specify-64-bit-integers-in-c.

I understand that this is an additional development request, but this might potentially scale the calculation capacity up tremendously.

Thank you for your help!

@ofloveandhate
Copy link
Contributor

This issue could certainly be solved by using a longer numeric type. That's a fix that would need to be done in Bertini 1, which is not this repository. How about you write an email to Jon Hauenstein and me, and let's talk about making that modification in B1.

But first, note that this is over 4 billion paths ... I'm wary of running such a process.

  • Are you prepared to dedicate the computer time?
  • Have you estimated the amount of time it will take to complete such a solve? You will certainly need a many-processor computer. I estimate that if each path takes 0.01 seconds to track (🤷‍♀️), and you use 64 processors, this solve will take 8 days. If it's 0.1 seconds per path (🤷‍♀️), this is 80 days on 64 processors -- not realistic at all. You only want to do this once, so getting the tracking settings right on the first pass will be important.
  • There are likely to be failed paths, too, with that many paths; re-running the failed paths may be tricky. That's out of the scope of this issue.

I also am curious about whether there's a multi-homogeneous start system that might offer lower number of start points. Sadly, there's no automated way to find this out built-in to Bertini 1. (Bertini 1 tells you the number after writing all the start points to an enormous file. Bertini 2 offers some tools for querying the number of start points before / without starting tracking, so this might be an option. Plus, B2 uses better numeric types for numbers of things, so it shouldn't experience this same overflow issue. But, Bertini 2 isn't parallel-enabled at this time, so B2 is not an option for actually doing the solve).

@SeffyVon
Copy link
Author

Thank you for your detailed answer!

I am aware of the problem has a very large search space, but this was already done before using Bertini, see Mehta et al.. I was curious about the software and tried to replicate the result of Eq (4) with N = 18 on a complete graph, which has already been tested in the paper.

I have sent Jon an email with the problem description and an example input file.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants