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

SCIPsolverConcurrent implementation from issue #229 #535

Merged
merged 1 commit into from
Oct 29, 2021

Conversation

TNonet
Copy link
Contributor

@TNonet TNonet commented Oct 29, 2021

Most of this code was thanks to @fserra from issue #229.

Hopefully, this will help support Concurrent pySCIPOpt

Copy link
Collaborator

@mattmilten mattmilten left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.
Thank you for your contribution!

@mattmilten mattmilten merged commit e536ba4 into scipopt:master Oct 29, 2021
@TNonet
Copy link
Contributor Author

TNonet commented Oct 29, 2021

It seems that the cython extensions need to be recompiled for the the new function in scip.pyx to be accessible.

I don't think I have that ability, but happy to help however I can.

@mattmilten
Copy link
Collaborator

mattmilten commented Oct 30, 2021

Another fortunate side effect of your contribution was that we realized that our CI actions did not run on PRs. So, this is also fixed now (#536). You may have seen from the other PR #537 that concurrent optimization is only possible when compiling SCIP with a TPI (task processing interface) - this is not included in the default installer package.

@TNonet
Copy link
Contributor Author

TNonet commented Oct 30, 2021

Thanks for your help fixing that PR.

Is there any guide on how to compile SCIP with a TPI? I have attempted to compile SCIP (and then install pySCIPOpt from local source with the compile flag). However, I haven't seen any documentation on the TPI aspect.

A second, potentially, more relevant question is: Is it feasible to create an extra with pySCIPOpt that includes a TPI? For example (using PIP instead of conda to more clearly show the [extra] aspect).

pip install pySCIPOpt[TPI]

I would be happy to help develop this, but I will need some guidance.

@mattmilten
Copy link
Collaborator

@CGraczyk can you assist here, please?

@CGraczyk
Copy link
Collaborator

CGraczyk commented Nov 1, 2021

Regarding the installation of SCIP with TPI, there is a compile option (see bottom of the table here whereby tny stands for TinyCThread and omp for OpenMP.
(See also this issue, as well as this issue)

If you have more trouble with SCIP with TPI feel free to ask in the SCIP mailing list (have a look at this).

Regarding the developement of an extra i am not sure, what would be the goal here when using this? Maybe i am missing the point here since i dont know enough about parallel processing.

@TNonet
Copy link
Contributor Author

TNonet commented Nov 1, 2021

@CGraczyk Thank you for sharing those new resources. I will make sure I look into them.

The purpose of developing an extra, in my opinion, would be to take advantage of the concurrent and parallel solving capability of SCIP (https://www.scipopt.org/doc-5.0.1/html/CONCSCIP.php). However, I don't know if an extra is the appropriate method for this.

Specifically, I am looking into seeing if using the parallel/{max/min}nthreads parameter will help my MIP problem solve faster. I believe having the parallel and concurrent options available through an extra could be a way to make sure the current version of PySCIPOpt remains stable while still allowing for more "experimental" options for those interested.

Happy to discuss this further and figure out what (if any) way is appropriate.

@jirkacigler
Copy link

Hello, I am encountering problem when calling model.solveConcurrent() leading to segmentation fault. I was trying to analyse where the problem is, but no success.
I use clean ubuntu 20.04 LTS, scip sources 7.0.3, building SCIP with arguments
cmake .. -DSYM=bliss -DWORHP=off -DZIMPL=off -DTPI=tny -DPARASCIP=on -DIPOPT=off -DPAPILO=off
Do you have any advise, how to build SCIP so that I can use solveConcurrent()? thank you

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

Successfully merging this pull request may close these issues.

4 participants