Commit 2e2ce937 authored by hrchilds's avatar hrchilds
Browse files

Update from July 10, 2003

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@31 18c085ea-50e0-402c-830e-de6fd14e8384
parent 2c64f6d4
......@@ -61,7 +61,7 @@
</Object>
<Object name="HostProfile" childObjects="0">
<Field name="shareOneBatchJob" type="bool">true</Field>
<Field name="profileName" type="string">Q-LANL parallel lsmallq</Field>
<Field name="profileName" type="string">Q-LANL parallel lvizq</Field>
<Field name="host" type="string">qfe1.lanl.gov qfe2.lanl.gov</Field>
<Field name="hostAliases" type="string">qfe# q# q## q### q####</Field>
<Field name="timeout" type="int">240</Field>
......@@ -82,7 +82,7 @@
</Object>
<Object name="HostProfile" childObjects="0">
<Field name="shareOneBatchJob" type="bool">true</Field>
<Field name="profileName" type="string">Q-LANL parallel lsmallq</Field>
<Field name="profileName" type="string">Q-LANL parallel llargeq</Field>
<Field name="host" type="string">qfe1.lanl.gov qfe2.lanl.gov</Field>
<Field name="hostAliases" type="string">qfe# q# q## q### q####</Field>
<Field name="timeout" type="int">240</Field>
......@@ -103,7 +103,7 @@
</Object>
<Object name="HostProfile" childObjects="0">
<Field name="shareOneBatchJob" type="bool">true</Field>
<Field name="profileName" type="string">Q-LANL parallel lsmallq</Field>
<Field name="profileName" type="string">Q-LANL parallel lhighq</Field>
<Field name="host" type="string">qfe1.lanl.gov qfe2.lanl.gov</Field>
<Field name="hostAliases" type="string">qfe# q# q## q### q####</Field>
<Field name="timeout" type="int">240</Field>
......
......@@ -33,7 +33,7 @@
# tests for links behaved strangely on AIX systems.
#
# Eric Brugger, Fri Mar 30 10:55:49 PST 2001
# Reorder the some lines cleaing up old versions and backing up the
# Reorder some lines cleaing up old versions and backing up the
# current version so that it would work properly.
#
# Eric Brugger, Wed Jul 18 15:51:32 PDT 2001
......@@ -159,11 +159,11 @@ if (! -e $dir/data) mkdir $dir/data
# from the installation directory.
#
if ($append == false) then
if (-e $dir/bin/visit-) rm $dir/bin/visit-
if (-e $dir/bin/visit-) rm -f $dir/bin/visit-
if ($beta == true) then
if (-e $dir/beta-) rm $dir/beta-
if (-e $dir/beta-) rm -f $dir/beta-
else if ($private == false) then
if (-e $dir/current-) rm $dir/current-
if (-e $dir/current-) rm -f $dir/current-
endif
if (-e $dir/$version-) rm -rf $dir/$version-
endif
......@@ -246,14 +246,14 @@ cd $dir
# If $version exists at this point it is a link and must be removed
# with the rm command.
#
if (-e $version) rm $version
if (-e $version) rm -f $version
mv $version+ $version
if (-e bin/visit) rm bin/visit
if (-e bin/visit) rm -f bin/visit
mv bin/visit+ bin/visit
if ($beta == true) then
if (-e beta) rm beta
if (-e beta) rm -f beta
ln -s $version beta
else if ($private == false) then
if (-e current) rm current
if (-e current) rm -f current
ln -s $version current
endif
......@@ -151,9 +151,9 @@ cat <<EOF > hitit
#!/bin/sh
if [ -d /usr/gapps/visit/$ver ]
then
./visit-install -private -a -g bdiv -gw $ver linux /usr/gapps/visit > installlog 2>&1
./visit-install -private -a -g visit -gw $ver linux /usr/gapps/visit > installlog 2>&1
else
./visit-install -private -g bdiv -gw $ver linux /usr/gapps/visit > installlog 2>&1
./visit-install -private -g visit -gw $ver linux /usr/gapps/visit > installlog 2>&1
fi
rm -f resultlog
echo " install of visit on hitit" > resultlog 2>&1
......@@ -184,9 +184,9 @@ cat <<EOF > warp
#!/bin/sh
if [ -d /usr/gapps/visit/$ver ]
then
./visit-install $verflag -a -g bdiv -gw $ver irix6 /usr/gapps/visit > installlog 2>&1
./visit-install $verflag -a -g visit -gw $ver irix6 /usr/gapps/visit > installlog 2>&1
else
./visit-install $verflag -g bdiv -gw $ver irix6 /usr/gapps/visit > installlog 2>&1
./visit-install $verflag -g visit -gw $ver irix6 /usr/gapps/visit > installlog 2>&1
fi
mkdir /usr/gapps/visit/$ver/.visit
chmod 775 /usr/gapps/visit/$ver/.visit
......@@ -224,9 +224,9 @@ cat <<EOF > sc
#!/bin/sh
if [ -d /usr/gapps/visit/$ver ]
then
./visit-install -private -a -g bdiv -gw $ver osf1 /usr/gapps/visit > installlog 2>&1
./visit-install -private -a -g visit -gw $ver osf1 /usr/gapps/visit > installlog 2>&1
else
./visit-install -private -g bdiv -gw $ver osf1 /usr/gapps/visit > installlog 2>&1
./visit-install -private -g visit -gw $ver osf1 /usr/gapps/visit > installlog 2>&1
fi
rm -f resultlog
echo " install of visit on sc" > resultlog 2>&1
......@@ -257,9 +257,9 @@ cat <<EOF > tidalwave
#!/bin/sh
if [ -d /usr/gapps/visit/$ver ]
then
./visit-install -private -a -g bdiv -gw $ver irix6 /usr/gapps/visit > installlog 2>&1
./visit-install -private -a -g visit -gw $ver irix6 /usr/gapps/visit > installlog 2>&1
else
./visit-install -private -g bdiv -gw $ver irix6 /usr/gapps/visit > installlog 2>&1
./visit-install -private -g visit -gw $ver irix6 /usr/gapps/visit > installlog 2>&1
fi
rm -f resultlog
echo " install of visit on tidalwave" > resultlog 2>&1
......@@ -275,10 +275,10 @@ then
if [ $test = no ]
then
scp tidalwave:/fc/san1/$user/tidalwave/visitbuild/visit$ver2.irix6.tar.gz .
scp visit$ver2.irix6.tar.gz tidalwave:
scp visit-install tidalwave:
scp tidalwave tidalwave:tidalwave_install
ssh tidalwave "chmod 750 tidalwave_install;./tidalwave_install"
scp visit$ver2.irix6.tar.gz sc1:
scp visit-install sc1:
scp tidalwave sc1:tidalwave_install
ssh sc1 "chmod 750 tidalwave_install;./tidalwave_install"
fi
fi
......@@ -290,9 +290,9 @@ cat <<EOF > white
#!/bin/sh
if [ -d /usr/gapps/visit/$ver ]
then
./visit-install -private -a -g bdiv -gw $ver aix /usr/gapps/visit > installlog 2>&1
./visit-install -private -a -g visit -gw $ver aix /usr/gapps/visit > installlog 2>&1
else
./visit-install -private -g bdiv -gw $ver aix /usr/gapps/visit > installlog 2>&1
./visit-install -private -g visit -gw $ver aix /usr/gapps/visit > installlog 2>&1
fi
rm -f resultlog
echo " install of visit on white" > resultlog 2>&1
......@@ -307,11 +307,11 @@ if [ $white = true ]
then
if [ $test = no ]
then
scp white:/p/gw1/$user/tidalwave/visitbuild/visit$ver2.aix.tar.gz .
scp visit$ver2.aix.tar.gz white:
scp visit-install white:
scp white white:white_install
ssh white "chmod 750 white_install;./white_install"
scp white:/p/gw1/$user/white/visitbuild/visit$ver2.aix.tar.gz .
scp visit$ver2.aix.tar.gz sc1:
scp visit-install sc1:
scp white sc1:white_install
ssh sc1 "chmod 750 white_install;./white_install"
fi
fi
......@@ -323,9 +323,9 @@ cat <<EOF > emperor
#!/bin/sh
if [ -d /usr/gapps/visit/$ver ]
then
./visit-install $verflag -a -g bdiv -gw $ver linux /usr/gapps/visit > installlog 2>&1
./visit-install $verflag -a -g visit -gw $ver linux /usr/gapps/visit > installlog 2>&1
else
./visit-install $verflag -g bdiv -gw $ver linux /usr/gapps/visit > installlog 2>&1
./visit-install $verflag -g visit -gw $ver linux /usr/gapps/visit > installlog 2>&1
fi
mkdir /usr/gapps/visit/$ver/.visit
chmod 775 /usr/gapps/visit/$ver/.visit
......@@ -347,11 +347,11 @@ then
if [ $test = no ]
then
scp emperor0:/usr/tmp/$user/emperor/visitbuild/visit$ver2.linux.tar.gz .
scp visit$ver2.linux.tar.gz emperor0:
scp visit-install emperor0:
scp emperor emperor0:emperor_install
scp visit-config-closed emperor0:visit-config-closed
ssh emperor0 "chmod 750 emperor_install;./emperor_install"
scp visit$ver2.linux.tar.gz sc1:
scp visit-install sc1:
scp emperor sc1:emperor_install
scp visit-config-closed sc1:visit-config-closed
ssh sc1 "chmod 750 emperor_install;./emperor_install"
fi
fi
......
......@@ -166,7 +166,7 @@ fi
#
# Check that the visit install script is present.
#
if [ ! -e visit-install]
if [ ! -e visit-install ]
then
echo "visit-install is missing."
exit
......
......@@ -39,6 +39,9 @@
# Brad Whitlock, Mon Mar 17 15:07:17 PST 2003
# I added VariableMenuPopulator and QvisVariablePopupMenu.
#
# Jeremy Meredith, Thu Jul 10 16:20:25 PDT 2003
# Remove SRCMOC on a make clean.
#
##############################################################################
##
......@@ -70,7 +73,7 @@ NOT_DISTRIB=
all: message $(LIBSHARED)
clean:
$(RM) $(OBJ) $(LIBSHARED)
$(RM) $(OBJ) $(LIBSHARED) $(SRCMOC)
##
## Other targets
......
This diff is collapsed.
#ifndef ENGINE_H
#define ENGINE_H
// RPCs
class ApplyNamedFunctionRPC;
class ApplyOperatorRPC;
class ClearCacheRPC;
class DefineVirtualDatabaseRPC;
class ExecuteRPC;
class MakePlotRPC;
class OpenDatabaseRPC;
class PickRPC;
class QueryRPC;
class QuitRPC;
class ReadRPC;
class ReleaseDataRPC;
class RenderRPC;
class SetFinalVariableNameRPC;
class SetWindowAttsRPC;
class StartPickRPC;
class UpdatePlotAttsRPC;
class UseNetworkRPC;
// Other classes
class Connection;
class LoadBalancer;
class MPIXfer;
class NetworkManager;
class NonBlockingRPC;
class Observer;
class Xfer;
#include <vector>
#include <avtDataObjectWriter.h>
#include <ParentProcess.h>
// ****************************************************************************
// Class: Engine
//
// Purpose:
// VisIt Computation Engine
//
// Programmer: Jeremy Meredith
// Creation: July 9, 2003
//
// ****************************************************************************
class Engine
{
public:
~Engine();
static Engine *Instance();
// Initialization routines
void Initialize(int *argc, char **argv[]);
bool ConnectViewer(int *argc, char **argv[]);
void SetUpViewerInterface(int *argc, char **argv[]);
// Two event loops
bool EventLoop();
void PAR_EventLoop();
// Get the network manager
NetworkManager *GetNetMgr() { return netmgr; }
// Method to write data back to the viewer
void WriteData(NonBlockingRPC *, avtDataObjectWriter_p &);
// Tell the engine whether or not fatal exceptions have occurred
void SetNoFatalExceptions(bool nf) {noFatalExceptions = nf;}
// Various callbacks
static bool EngineAbortCallback(void *);
static bool EngineAbortCallbackParallel(void*, bool);
static void EngineInitializeProgressCallback(void *, int);
static void EngineUpdateProgressCallback(void*, const char*,
const char*, int,int);
static void EngineWarningCallback(void *, const char *);
// Internal methods
protected:
Engine();
void ProcessCommandLine(int argc, char *argv[]);
void ProcessInput();
void ResetTimeout(int timeout);
static void AlarmHandler(int signal);
protected:
// The singleton object
static Engine *instance;
// The Viewer
ParentProcess theViewer;
// The destination machine's type representation.
TypeRepresentation destinationFormat;
// Here's the network manager!
NetworkManager *netmgr;
// The connection
Connection *vtkConnection;
// Flag for whether there were any fatal exceptions
bool noFatalExceptions;
// Current Timeout
int timeout;
// The load balancer
LoadBalancer *lb;
// The Xfer object
#ifdef PARALLEL
MPIXfer *xfer;
#else
Xfer *xfer;
#endif
// The list of all RPC executors (needed to clean up memory)
std::vector<Observer*> rpcExecutors;
// The RPCs
QuitRPC *quitRPC;
ReadRPC *readRPC;
ApplyOperatorRPC *applyOperatorRPC;
ApplyNamedFunctionRPC *applyNamedFunctionRPC;
SetFinalVariableNameRPC *setFinalVariableNameRPC;
MakePlotRPC *makePlotRPC;
UseNetworkRPC *useNetworkRPC;
UpdatePlotAttsRPC *updatePlotAttsRPC;
SetWindowAttsRPC *setWindowAttsRPC;
PickRPC *pickRPC;
StartPickRPC *startPickRPC;
ExecuteRPC *executeRPC;
ClearCacheRPC *clearCacheRPC;
QueryRPC *queryRPC;
ReleaseDataRPC *releaseDataRPC;
OpenDatabaseRPC *openDatabaseRPC;
DefineVirtualDatabaseRPC *defineVirtualDatabaseRPC;
RenderRPC *renderRPC;
};
#endif
This diff is collapsed.
......@@ -167,6 +167,9 @@
# Jeremy Meredith, Wed Dec 11 11:12:47 PST 2002
# Fixed typo in parallel libraries.
#
# Jeremy Meredith, Thu Jul 10 14:59:45 PDT 2003
# Added a few source and header files for cleaning up Engine.C.
#
##############################################################################
##
......@@ -211,7 +214,7 @@ PARLIBDEP=../../lib/libplugin.so ../../lib/libplotter.so \
##
## Files...
##
SRC=Netnodes.C DataNetwork.C NetworkManager.C Engine.C LoadBalancer.C
SRC=Netnodes.C DataNetwork.C NetworkManager.C Engine.C LoadBalancer.C main.C
SEROBJ=$(SRC:.C=_ser.o)
PAROBJ=$(SRC:.C=_par.o)
......
#include "Engine.h"
#include <DebugStream.h>
#include <TimingsManager.h>
#include <LoadBalancer.h>
#ifdef PARALLEL
#include <parallel.h>
#endif
// ****************************************************************************
// Function: main
//
// Purpose:
// This is the main function for a simple "engine" that runs in
// parallel and gets state information from the viewer and prints
// the information that changed to the console.
//
// Notes:
//
// Programmer: Brad Whitlock
// Creation: Wed Jul 12 15:20:19 PST 2000
//
// Modifications:
//
// Jeremy Meredith, Wed Aug 9 14:41:24 PDT 2000
// Switched out plotAtts for plotRPC.
//
// Jeremy Meredith, Wed Aug 9 14:41:24 PDT 2000
// Cleaned up the way RPCs are handled.
// Switched out quitAtts for quitRPC.
//
// Jeremy Meredith, Thu Sep 7 13:06:10 PDT 2000
// Added the new RPC types for doing network-style computation.
//
// Jeremy Meredith, Fri Sep 15 16:12:56 PDT 2000
// Added slice RPC, fixed a bug with the previous ones.
//
// Jeremy Meredith, Thu Sep 21 22:15:06 PDT 2000
// Made it work in parallel again.
//
// Kathleen Bonnell, Thu Oct 12 12:50:27 PDT 2000
// Added OnionPeelRPC.
//
// Brad Whitlock, Fri Oct 6 11:42:56 PDT 2000
// Removed the SocketConnections. I also added code to set the
// destination format from the connection back to the viewer.
//
// Hank Childs, Thu Oct 26 10:13:55 PDT 2000
// Added initialization of exceptions.
//
// Jeremy Meredith, Fri Nov 17 16:15:04 PST 2000
// Removed initialization of exceptions and added general initialization.
//
// Kathleen Bonnell, Fri Nov 17 16:33:40 PST 2000
// Added MatPlotRPC.
//
// Kathleen Bonnell, Fri Dec 1 14:51:50 PST 2000
// Added FilledBoundaryRPC.
//
// Jeremy Meredith, Tue Dec 12 13:50:03 PST 2000
// Added MaterialSelectRPC.
//
// Hank Childs, Thu Jan 11 16:45:11 PST 2001
// Added RangeVolumePlotRPC, IsoSurfaceVolumePlotRPC.
//
// Kathleen Bonnell, Thu Feb 22 15:08:32 PST 2001
// Added ContourPlotRPC.
//
// Jeremy Meredith, Sun Mar 4 16:50:49 PST 2001
// Ripped out all plot and operator RPCs.
// Created two new ones: ApplyOperator and MakePlot.
// Added manual initialization of (a new) PluginManager.
//
// Kathleen Bonnell, Thu Mar 8 09:01:10 PST 2001
// Added registration of surface plot.
//
// Brad Whitlock, Thu Mar 15 14:35:22 PST 2001
// Modified how input connections are supplied to the xfer object. Changed
// calls to the event loops.
//
// Jeremy Meredith, Tue Mar 20 12:21:07 PST 2001
// Removed registration of all plots since we are using the new
// PlotPluginManager.
//
// Hank Childs, Tue Apr 24 15:25:37 PDT 2001
// Added initialization of VTK modules.
//
// Brad Whitlock, Wed Apr 25 17:09:37 PST 2001
// Added code to catch IncompatibleVersionException. The handlers set the
// noFatalExceptions variable to false which causes the engine to terminate.
//
// Jeremy Meredith, Thu May 10 15:00:40 PDT 2001
// Added initialization of PlotPluginManager.
//
// Kathleen Bonnell, Mon May 7 15:58:13 PDT 2001
// Added registration of Erase operator.
//
// Hank Childs, Sun Jun 17 18:06:53 PDT 2001
// Removed reference to avtLoadBalancer, initialized LoadBalancer.
//
// Hank Childs, Wed Jun 20 18:15:44 PDT 2001
// Initialize avt filters.
//
// Jeremy Meredith, Tue Jul 3 15:10:52 PDT 2001
// Added xfer parameter to EngineAbortCallback.
//
// Hank Childs, Fri Jul 20 08:09:53 PDT 2001
// Remove MaterialSelect.
//
// Jeremy Meredith, Tue Jul 24 14:09:27 PDT 2001
// Removed FacelistFilter.
//
// Jeremy Meredith, Thu Jul 26 03:36:21 PDT 2001
// Added support for the new (real) operator plugin manager.
//
// Hank Childs, Mon Aug 13 15:14:50 PDT 2001
// Changed location of progress/abort callbacks from avtFilter to
// avtDataObjectSource.
//
// Jeremy Meredith, Thu Sep 20 01:00:59 PDT 2001
// Added registration of the progress callback with the LoadBalancer.
//
// Jeremy Meredith, Fri Sep 21 14:45:14 PDT 2001
// Added registration of the abort callback with the LoadBalancer.
//
// Jeremy Meredith, Fri Sep 28 13:41:27 PDT 2001
// Added load of plugins since they are not loaded anymore until
// explicity told to do so.
//
// Brad Whitlock, Mon Oct 22 18:33:37 PST 2001
// Changed the exception keywords to macros.
//
// Jeremy Meredith, Fri Nov 9 10:34:08 PST 2001
// Added UseNetworkRPC and SetWindowAttsRPC.
//
// Hank Childs, Thu Nov 29 16:22:37 PST 2001
// Added UpdatePlotAttsRPC.
//
// Kathleen Bonnell, Tue Nov 20 12:35:54 PST 2001
// Added PickRPC StartPickRPC.
//
// Jeremy Meredith, Wed Jan 16 10:09:45 PST 2002
// Do initialization of plugin managers with parallel flag.
//
// Sean Ahern, Thu Mar 21 13:18:09 PST 2002
// Added ApplyUnaryOperatorRPC.
//
// Sean Ahern, Fri Apr 19 14:02:34 PDT 2002
// Removed ApplyUnaryOperatorRPC. Added ApplyNamedFunctionRPC.
//
// Brad Whitlock, Tue Jul 30 13:13:42 PST 2002
// I added ClearCacheRPC.
//
// Jeremy Meredith, Wed Aug 21 12:51:28 PDT 2002
// I renamed some plot/operator plugin manager methods for refactoring.
//
// Jeremy Meredith, Thu Aug 22 14:31:44 PDT 2002
// Added database plugins.
//
// Hank Childs, Mon Sep 30 14:26:55 PDT 2002
// Made the network manager be allocated off the heap. That way we can
// control whether or not we decide to clean up the memory associated with
// it when we exit the program (it's faster not to).
//
// Kathleen Bonnell, Mon Sep 16 14:28:09 PDT 2002
// Added QueryRPC, ReleaseDataRPC.
//
// Brad Whitlock, Mon Sep 30 09:02:35 PDT 2002
// The code to connect to the viewer became more complex so I moved it
// to a new function. I made the new function return a bool that tells
// whether or not the connection to the viewer was a success. The return
// value is used to jump over the initializing of a lot of objects so the
// engine can terminate faster.
//
// Mark C. Miller, Mon Nov 11 14:45:16 PST 2002
// Added a call to ForceMesa during initialization.
//
// Brad Whitlock, Tue Dec 10 14:33:13 PST 2002
// I added OpenDatabaseRPC.
//
// Jeremy Meredith, Fri Feb 28 12:21:01 PST 2003
// Renamed LoadPlugins to LoadPluginsNow. There is now a corresponding
// LoadPluginsOnDemand, and I made the Plot and Operator plugin managers
// use that method instead. At the moment, all Database plugins need
// to be open for the avtDatabaseFactory to determine which one to use
// when opening a file, but I expect this to change shortly.
//
// Brad Whitlock, Tue Mar 25 13:13:53 PST 2003
// I added a new rpc that lets us define virtual database files.
//
// Jeremy Meredith, Wed May 7 15:49:53 PDT 2003
// Force static load balancing.... for now.
//
// Jeremy Meredith, Thu Jul 10 11:35:03 PDT 2003
// Moved most of the stuff in here into a new Engine.C class. This main
// routine was re-written to take advantage of it.
//
// ****************************************************************************
int
main(int argc, char *argv[])
{
LoadBalancer::ForceStatic();
Engine *engine = Engine::Instance();
// Do some pre-connect initialization
engine->Initialize(&argc, &argv);
// Try to connect to the viewer
if (engine->ConnectViewer(&argc, &argv))
{
// Do the post-connect initialization
engine->SetUpViewerInterface(&argc, &argv);
// Begin the engine's event processing loop.
#ifdef PARALLEL
engine->PAR_EventLoop();
#else
engine->EventLoop();
#endif
}
else
{
// Connect failed
debug1 << "The engine could not connect to the viewer." << endl;
}
#ifdef DEBUG_MEMORY_LEAKS
delete engine;
delete visitTimer;
#endif
debug1 << "ENGINE exited." << endl;
#ifdef PARALLEL
PAR_Exit();
#endif
return 0;
}
......@@ -17,7 +17,6 @@ extern MPI_Datatype PAR_STATEBUFFER;
// Parallel Prototypes
void PAR_CreateTypes();
void PAR_EventLoop(MPIXfer &xfer, QuitRPC &quit);
void PAR_Exit();
void PAR_Init(int &argc, char **&argv);
int PAR_Rank();
......
<
PROG=sim