charmplusplus / charm

The Charm++ parallel programming system. Visit https://charmplusplus.org/ for more information.
Apache License 2.0
203 stars 49 forks source link

Let user-defined main() work for all execution environments #1343

Closed PhilMiller closed 5 years ago

PhilMiller commented 7 years ago

Original issue: https://charm.cs.illinois.edu/redmine/issues/1343


No body.

PhilMiller commented 5 years ago

Original date: 2016-12-28 20:27:45


This is necessary to eliminating .ci files because of the current arrangement with mainchares

PhilMiller commented 5 years ago

Original date: 2017-05-16 14:08:05


Revisiting this, are there situation where the desired outcome of this issue isn't satisfied?

Maybe readonly variables need some new treatment? What else would get in the way.

I'm going to have some of the Charmworks interns and new hires explore conversion from mainchare to user main() to flesh this out further.

stwhite91 commented 5 years ago

Original date: 2017-11-29 18:47:14


I think Eric M is already working on this and is a user of its functionality to some extent already.

https://charm.cs.illinois.edu/gerrit/#/c/2732/ https://github.com/UIUC-PPL/charm/commit/3511cfb6acc346ddc840008f7569b22154d5f8c4

epmikida commented 5 years ago

Original date: 2019-04-19 03:17:53


I've updated Justin Szaday's patch (https://charm.cs.illinois.edu/gerrit/c/charm/+/2732 https://github.com/UIUC-PPL/charm/commit/3511cfb6acc346ddc840008f7569b22154d5f8c4) to allow user driven interop to work without mainchares. This allows any charm program to use user-defined main, and removes the need for mainchares as well. It also addresses Phil's above point of still allowing readonlies by splitting the CharmInit into two steps. The old CharmInit is preserved for backwards compatibility.

It does fundamentally change semantics of user driven startup, in that CharmInit returns automatically after charm initialization is done. Previously, it only returned after the charm code called CkExit. However, that meant a mainchare was required. I'm pretty sure Charades is currently the only user of this API, so the breaking changes are not an issue.