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

replace flux-srun with flux mini run #2379

Closed
grondo opened this issue Sep 16, 2019 · 21 comments
Closed

replace flux-srun with flux mini run #2379

grondo opened this issue Sep 16, 2019 · 21 comments
Assignees

Comments

@grondo
Copy link
Contributor

grondo commented Sep 16, 2019

During coffee conversation it was discovered that our flux "simple run" command flux srun shares a name with a moderately popular alternate resource manager.

To avoid confusing users and avoid any need, real or perceived, to keep the same options as this other srun, we agreed to rename our simple run interface to a unique name. Either something like flux sfrun (straight-forward run, simple flux run), or flux dsrun (duck soup run).

We could keep flux jobspec srun and add flux jobspec sfrun, thus breaking only users of flux srun for now.

@grondo
Copy link
Contributor Author

grondo commented Sep 16, 2019

Also mentioned by @SteVwonder, we should carefully review options we add to flux sfrun since our plan is to never change this interface, and we are freed from compatibility with srun. E.g. maybe instead of -n we use -t?

My inclination would be to keep -n since it has the same meaning in srun, mpiexec, orterun, etc. (Well, for mpiexec -np is typical usage and we definitely don't want to copy that.)

@garlick
Copy link
Member

garlick commented Sep 19, 2019

flux dsrun seems to be most favored at the moment.

How about "ratrun" (reusable archetypal tool for running?)

@SteVwonder
Copy link
Member

@dongahn and I came up with urun for "micro-run", in the same vein as utorrent. It is simple, easy/quick to pronounce, and wouldn't require much explanation to confused users/tutorial attendees 😆 .

@SteVwonder
Copy link
Member

Two more half-serious ideas from speaking with @garlick and @grondo

  • rename flux srun to flux run and rename @trws's flux run to something else like flux warp
  • rename flux srun to flux walk and keep flux run as flux run

@trws
Copy link
Member

trws commented Sep 19, 2019 via email

@chu11
Copy link
Member

chu11 commented Sep 19, 2019

I get flux walk, but don't quite get flux warp? Just the best word you could come up with for "running really fast"?

@grondo
Copy link
Contributor Author

grondo commented Sep 20, 2019

Doesn't necessarily need to mean "running really fast" (jobs are guaranteed to run at the same speed) but run is a simple interface while warp is an advanced or power interface. (just the first word we threw out there.) Think "rebranding the run experience"

The idea is if we choose something like or equivalent to run then there are already 10,000 other variants out there that could potential "confuse" users.

@dongahn
Copy link
Member

dongahn commented Sep 20, 2019

If we are looking for one letter run, I like
arun (a as in archetypal as @garlick used) or urun (as in micro-run).

I was surprised how many times users have asked about wreckrun during our turorial and user interactions. Personally I appreciate the humor there, but I am worried if end-users will take a command seriously.

Just $0.02.

@tpatki
Copy link
Member

tpatki commented Sep 20, 2019

I think urun could read wrong if you don't know that the u stands for micro and haven't attended an in-person or video tutorial.

  • rename flux srun to flux run and rename @trws's flux run to something else like flux warp

I like flux run (1) because it's simple, (2) you don't have to remember another preceding letter, and (3) you don't confuse with other resource managers such as aprun for cobalt or utorrent or srun or jsrun.

But flux warp is confusing from a user point of view (as in, it's unclear what it does at first glance to a new user). If it's just a faster version or advanced version, per @grondo's point, maybe we can use something simple such as flux htc or flux htcrun, for high-throughput-computing. Not sure if that reflects @trws's optimizations correctly, though.

@dongahn
Copy link
Member

dongahn commented Sep 20, 2019

I think urun could read wrong if you don't know that the u stands for micro and haven't attended an in-person or video tutorial.

I see. You can also spell this out: microrun.

@garlick
Copy link
Member

garlick commented Sep 20, 2019

What's the motivation here?

I think @grondo captured it in the issue description:

During coffee conversation it was discovered that our flux "simple run" command flux srun shares a name with a moderately popular alternate resource manager.

To avoid confusing users and avoid any need, real or perceived, to keep the same options as this other srun, we agreed to rename our simple run interface to a unique name.
[snip]

Feel free to talk us down @trws.

@trws
Copy link
Member

trws commented Sep 20, 2019 via email

@grondo
Copy link
Contributor Author

grondo commented Sep 21, 2019

As a user looking at the CLI, I would expect run to be whatever command the developers intended me to use when running things in the common case.

I agree @trws. The rename was just an idea thrown out during a coffee convo without any real thought -- more along the lines of redefining what people think of as "running" a job. I think it was kind of a failed idea and got us off track.

I may be off base here, but I'm coming around to the idea of "micro" interfaces for these commands (I personally find the substitution of u for mu in common practice to be slightly off-putting, though I realize that is just me and I'm actively working on it in therapy) We'll at least need a micro submit as well, so why not go with an idea that I think @SteVwonder already proposed and put all these pared-down-so-they-can-be-stable commands under one command like flux micro or flux mini, so you'd have flux micro run and flux micro submit or flux mini run and flux mini submit. (What I like about mini is that it implies "minimal" interfaces, which is really what this is all about.)

If we find we need another command down the road, it can be placed under flux mini as well, instead of populating the top-level command listing.

I also agree that the mini or micro prefix of these commands will rightly direct users that want maximum power to go with the non-minimal versions of commands. 😉

@garlick
Copy link
Member

garlick commented Sep 23, 2019

We probably need to implement this this week. Any objections to flux mini run / flux mini submit for the simple/stable interface and flux run / flux batch for the maxi versions?

@trws
Copy link
Member

trws commented Sep 23, 2019 via email

@garlick
Copy link
Member

garlick commented Sep 23, 2019

Sorry I think I meant to type flux run / flux submit.

@dongahn
Copy link
Member

dongahn commented Sep 23, 2019

mini is okay by me.

@grondo
Copy link
Contributor Author

grondo commented Sep 23, 2019

Can #2150 and #2370 be folded under this one issue?

@garlick
Copy link
Member

garlick commented Sep 23, 2019

Right let's close those now that they've been referenced here.

@garlick garlick changed the title rename flux-srun command replace flux-srun with flux mini run Sep 23, 2019
@garlick
Copy link
Member

garlick commented Sep 23, 2019

As a simple first step, I propose we replace flux-srun (the shell script) with flux mini run (python), basically duplicating code in flux jobpspec for jobspec generation and option parsing. The replacement command can call the python binding for flux_job_submit(), and then just exec flux job attach. Follow-on steps could be

  • revise flux mini run options
  • factor out a python module for jobspec v1 generation from flux-mini and flux-jobspec
  • perform attach functionality native in python

We could leave flux srun in place for the moment until we're happy with flux mini run options, then convert tests and drop flux srun.

I can have a crack at this first step if no objections to this approach. @SteVwonder maybe you could look at the jobspec v1 generation module?

@garlick
Copy link
Member

garlick commented Sep 30, 2019

I think this is done, minus

factor out a python module for jobspec v1 generation from flux-mini and flux-jobspec

but that seems like cleanup that could come later.

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

No branches or pull requests

7 participants