From: Randall F. <fr...@ll...> - 2002-09-14 00:04:38
|
> > > >I think I understand some of the high-level goals for this but >I'm not 100% sure how to boil it down to concrete items for >implementation. > >I guess I'm picturing at least the following: > >1. A node/host allocator which keeps track of the free and in-use >nodes in a cluster. A client (like Chromium) would ask the allocator >for N nodes and get back a list of N hostnames (or an error code). >When Chromium's finished with the nodes they'd be returned to the >free pool. I had a slightly different model in mind. There would be a "node allocator" and it would be invoked for a given job (in our case, it would be DPCS or RMS). The user would request a number of nodes. In many cases, the allocator would actually run the user's application (often an MPI application). As part of the "job setup" the node allocator would do, it would configure and launch Chromium as a service for that job. FYI: DPCS does the following: 1) user asks for N nodes/CPUs and gives the name of an MPI app. 2) DPCS "finds" the N nodes and configures them for an MPI job. 3) DPCS runs a "prologue" script on each node. 4) DPCS runs the application from (1) 5) at the end of the app, DPCS runs an "epilogue" script on each node. One more odd (but extremely common in production environments) case is where the user uses a "squatter" MPI job to hold down nodes. Since most "node allocation" systems (like DPCS) are really MPI job schedulers, they want to run the app for the user. If the user's app is not MPI based (and a number of viz apps are not), it is common for users to run a dummy MPI job that often spits out the setup info for their non-MPI app. Again, this should map well to the scheme I suggest. The user can run all the apps they want on the nodes they have allocated using the same Cr services. Key here is that the invoked mothership must be able to handle more that one app in the "job" space. >2. Dynamic Cr config scripts which know how to work with the allocator >in (1). Either the config scripts would ask the allocator for N nodes >or a list of nodes would be passed in as an argument. Yes! >3. A set of "standardized" configuration scripts for sort-first, >sort-last which can work with a range of applications and satisify >item (2). Yes! >4. Some system to automatically choose a standarized config script >based on the name of the program being run, or the the user's requested >rendering style (sort first/last). Perhaps libcrfaker could look at >argc/argv and look up the name of a config script in a resource file, >then automatically start the mothership with that config script. Or, >look for a special environment variable. You got it. I would suggest the choice be made based on app name overridden by environmental variable, overridden by a Cr "Parameter" call made by the application before it opens a context. Thanks. >-Brian > >_______________________________________________ >Chromium-environment mailing list >Chr...@li... >https://lists.sourceforge.net/lists/listinfo/chromium-environment rjf. Randall Frank | Email: rj...@ll... Lawrence Livermore National Laboratory | Office: B451 R2039 P.O. Box 808, Mailstop:L-561 | Voice: (925) 423-9399 Livermore, CA 94550 | Fax: (925) 423-8704 |
From: Brian P. <br...@tu...> - 2002-09-14 15:38:26
|
Randall Frank wrote: > >> >> >> >> I think I understand some of the high-level goals for this but >> I'm not 100% sure how to boil it down to concrete items for >> implementation. >> >> I guess I'm picturing at least the following: >> >> 1. A node/host allocator which keeps track of the free and in-use >> nodes in a cluster. A client (like Chromium) would ask the allocator >> for N nodes and get back a list of N hostnames (or an error code). >> When Chromium's finished with the nodes they'd be returned to the >> free pool. > > > I had a slightly different model in mind. There would be a "node > allocator" and it would be invoked for a given job (in our case, > it would be DPCS or RMS). The user would request a number of nodes. > In many cases, the allocator would actually run the user's application > (often an MPI application). As part of the "job setup" the node > allocator would do, it would configure and launch Chromium as > a service for that job. > > FYI: DPCS does the following: > > 1) user asks for N nodes/CPUs and gives the name of an MPI app. > 2) DPCS "finds" the N nodes and configures them for an MPI job. > 3) DPCS runs a "prologue" script on each node. > 4) DPCS runs the application from (1) > 5) at the end of the app, DPCS runs an "epilogue" script on each node. > > One more odd (but extremely common in production environments) case > is where the user uses a "squatter" MPI job to hold down nodes. Since > most "node allocation" systems (like DPCS) are really MPI job schedulers, > they want to run the app for the user. If the user's app is not MPI > based (and a number of viz apps are not), it is common for users to > run a dummy MPI job that often spits out the setup info for their > non-MPI app. Again, this should map well to the scheme I suggest. > The user can run all the apps they want on the nodes they have > allocated using the same Cr services. Key here is that the invoked > mothership must be able to handle more that one app in the "job" space. > > >> 2. Dynamic Cr config scripts which know how to work with the allocator >> in (1). Either the config scripts would ask the allocator for N nodes >> or a list of nodes would be passed in as an argument. > > > Yes! > > >> 3. A set of "standardized" configuration scripts for sort-first, >> sort-last which can work with a range of applications and satisify >> item (2). > > > Yes! > > >> 4. Some system to automatically choose a standarized config script >> based on the name of the program being run, or the the user's requested >> rendering style (sort first/last). Perhaps libcrfaker could look at >> argc/argv and look up the name of a config script in a resource file, >> then automatically start the mothership with that config script. Or, >> look for a special environment variable. > > > You got it. I would suggest the choice be made based on app name > overridden by environmental variable, overridden by a Cr "Parameter" > call made by the application before it opens a context. > > > Thanks. OK, I think we can implement something for items 2, 3 and 4. I think I'll defer on item 1 since I'm not familiar with DPCS or RMS. -Brian |
From: Sean A. <sea...@ll...> - 2002-09-16 17:04:24
|
Randy Frank wrote: > FYI: DPCS does the following: > > 1) user asks for N nodes/CPUs and gives the name of an MPI app. > 2) DPCS "finds" the N nodes and configures them for an MPI job. > 3) DPCS runs a "prologue" script on each node. > 4) DPCS runs the application from (1) > 5) at the end of the app, DPCS runs an "epilogue" script on each node. We're also going to have to handle the case where: 1) user sets environment variable, saying that they want a particular Chromium configuration that requires M nodes. 2) user asks for N nodes/CPUs and gives the name of an MPI app. 3) DPCS notices the environment variable and adds M nodes to the allocation. 4) DPCS "finds" the M+N nodes. It configures N of them for an MPI job. It configures M of them for the Chromium run. 5) continue as with Randy's #3, above. I think this may be able to be done with the "squatter" concept you mention, but it's something that we're going to have to investigate. -Sean __ sea...@ll... |
From: Brian P. <br...@tu...> - 2002-09-18 22:47:19
|
I've spent the afternoon prototyping something new. The faker library now does the following: 1. If the faker lib is able to contact the mothership, proceed normally. Otherwise... 2. Look if the CR_CONFIG env var is set. If so, it names a desired config file (ex: crdemo.conf) 3. Otherwise, find the name of the running process (ex: city) Look in ~/.crconfigs for a config for city (ex: crdemo.conf) 4. Spawn a mothership process (ex: exec("python crdemo.conf city")) 5. The crdemo.conf file can auto-start a crserver. 6. An atexit() handler kills the mothership when the app exits. So, I can run city with Chromium just by typing "city <return>". I have symlinks from libGL.so to libcrfaker.so. How does that sound for a first cut? -Brian |
From: Brian P. <br...@tu...> - 2002-09-19 22:42:51
|
Brian Paul wrote: > > I've spent the afternoon prototyping something new. The faker > library now does the following: > > 1. If the faker lib is able to contact the mothership, proceed normally. > Otherwise... > > 2. Look if the CR_CONFIG env var is set. If so, it names a desired > config file (ex: crdemo.conf) > > 3. Otherwise, find the name of the running process (ex: city) > Look in ~/.crconfigs for a config for city (ex: crdemo.conf) > > 4. Spawn a mothership process (ex: exec("python crdemo.conf city")) > > 5. The crdemo.conf file can auto-start a crserver. > > 6. An atexit() handler kills the mothership when the app exits. > > > So, I can run city with Chromium just by typing "city <return>". > I have symlinks from libGL.so to libcrfaker.so. > > How does that sound for a first cut? The next thing I've done now is to enhance the config files written by the graphical configuration tool so that they'll accept command line parameters at run time. For example: 1. Use the graphical config tool to design a sort-first config. Let's call it "tile.conf". 2. Running "python tile.conf --help" prints the options: Usage: tile.conf [--help] [-c columns] [-r rows] [-w tileWidth] [-h tileHeight] [-s servers] [program] 3. Run the config, specifying the mural size and servers: python tile.conf -c3 -r2 -s cr1,cr2,cr3,cr4,cr5,cr6 atlantis This will setup a 3x2 mural running on the named servers. So hopefully, someone can whip up a basic sort-first, sort-last or image reassembly configuration with the configuration tool, then be able to fine-tune the parameters at runtime. The next step will be to demonstrate/test this using the auto-start system I got going yesterday... -Brian |
From: Sean A. <sea...@ll...> - 2002-09-19 23:09:21
|
This sounds wonderful! I wonder if we could expand CR_CONFIG to pass arguments to the scripts (as you seem to be building support for). That way, you could do this: % setenv CR_CONFIG "mywall.conf -layout 3x2" % city And have the tilesorter Do The Right Thing (TM). -Sean Brian Paul wrote: > I've spent the afternoon prototyping something new. The faker > library now does the following: > > 1. If the faker lib is able to contact the mothership, proceed normally. > Otherwise... > > 2. Look if the CR_CONFIG env var is set. If so, it names a desired > config file (ex: crdemo.conf) > > 3. Otherwise, find the name of the running process (ex: city) > Look in ~/.crconfigs for a config for city (ex: crdemo.conf) > > 4. Spawn a mothership process (ex: exec("python crdemo.conf city")) > > 5. The crdemo.conf file can auto-start a crserver. > > 6. An atexit() handler kills the mothership when the app exits. > > > So, I can run city with Chromium just by typing "city <return>". > I have symlinks from libGL.so to libcrfaker.so. > > How does that sound for a first cut? > > -Brian __ sea...@ll... |
From: Brian P. <br...@tu...> - 2002-09-19 23:12:37
|
Yup, I was planning on that. I could get a bit fancier: % setenv CR_CONFIG "mywall.conf -layout 3x2 %p" % city Where %p would get replaced by "city + arguments", but I think just appending the program to the end of the CR_CONFIG string might be sufficient. -Brian Sean Ahern wrote: > This sounds wonderful! > > I wonder if we could expand CR_CONFIG to pass arguments to the scripts (as > you seem to be building support for). That way, you could do this: > > % setenv CR_CONFIG "mywall.conf -layout 3x2" > % city > > And have the tilesorter Do The Right Thing (TM). > > -Sean > > Brian Paul wrote: > >>I've spent the afternoon prototyping something new. The faker >>library now does the following: >> >>1. If the faker lib is able to contact the mothership, proceed normally. >> Otherwise... >> >>2. Look if the CR_CONFIG env var is set. If so, it names a desired >> config file (ex: crdemo.conf) >> >>3. Otherwise, find the name of the running process (ex: city) >> Look in ~/.crconfigs for a config for city (ex: crdemo.conf) >> >>4. Spawn a mothership process (ex: exec("python crdemo.conf city")) >> >>5. The crdemo.conf file can auto-start a crserver. >> >>6. An atexit() handler kills the mothership when the app exits. >> >> >>So, I can run city with Chromium just by typing "city <return>". >>I have symlinks from libGL.so to libcrfaker.so. >> >>How does that sound for a first cut? >> >>-Brian > > __ > sea...@ll... > > |
From: Sean A. <sea...@ll...> - 2002-09-19 23:41:38
|
Brian Paul wrote: > % setenv CR_CONFIG "mywall.conf -layout 3x2 %p" > % city > > Where %p would get replaced by "city + arguments", but I think just > appending the program to the end of the CR_CONFIG string might be > sufficient. I think you're right. Plus, do you even have access to city's argument list? -Sean __ sea...@ll... |
From: Brian P. <br...@tu...> - 2002-09-20 01:16:18
|
Sean Ahern wrote: > Brian Paul wrote: > >>% setenv CR_CONFIG "mywall.conf -layout 3x2 %p" >>% city >> >>Where %p would get replaced by "city + arguments", but I think just >>appending the program to the end of the CR_CONFIG string might be >>sufficient. > > > I think you're right. Plus, do you even have access to city's argument > list? I don't. But I have nagging suspicion that using a %p-style subtitution might give us some future-proofing, just in case. I'll see... -Brian |
From: Sean A. <sea...@ll...> - 2002-09-20 04:16:10
|
Brian Paul wrote: > But I have nagging suspicion that using a %p-style subtitution might give > us some future-proofing, just in case. I'll see... Yeah, I do like the idea in general. I just don't know quite what should go there yet... -Sean __ sea...@ll... |
From: Brian P. <br...@tu...> - 2002-09-20 22:20:02
|
I've checked in all my work related to auto-starting chromium. At this point, I can run programs like city, atlantis by just typing their name and have chromium fire up everything automatically. Only tested on Linux for now. I've documented the process in cr/doc/autostart.html (which is hooked into the docs index). More to do, but read the docs and let me know what you think. -Brian |
From: Alan H. <al...@tu...> - 2002-09-20 22:42:34
|
On Fri, Sep 20, 2002 at 04:20:54PM -0600, Brian Paul wrote: > > I've checked in all my work related to auto-starting chromium. > > At this point, I can run programs like city, atlantis by just > typing their name and have chromium fire up everything automatically. > Only tested on Linux for now. I'm following up on the Windows bits & pieces now. Alan. |