aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Carpet/src/Comm.cc
Commit message (Collapse)AuthorAge
* Carpet: Remove accidentally-committed extra arguments to Timer constructorIan Hinder2013-10-26
|
* Carpet: Add a barrier between prolongation and sync controlled by ↵Ian Hinder2013-10-25
| | | | sync_barriers parameter
* Timers: Move all timer-related code into a new thorn TimersErik Schnetter2013-08-07
|
* Carpet: Small performance improvement in SyncGroupsByDirErik Schnetter2013-04-04
|
* Requirements: Modify iteration arguments in Requirements.hhErik Schnetter2013-04-04
| | | | | | | | | Use int instead of CCTK_INT; all other arguments are also int. Change argument order in Sync; move iteration next to reflevel. Add iteration argument to BeforeRoutine; AfterRoutine also takes it. Change name from cctk_iteration to iteration; no other variables have a cctk_ prefix. Update callers in Carpet.
* Requirements: pass iteration down and print in debug output; also print when ↵Frank Löffler2013-04-03
| | | | something changes (readable string)
* Carpet: Call Requirements before, not after the respective actionsErik Schnetter2013-04-03
| | | | Ensure requirements are met before restricting and syncing, not afterwards.
* Requirements: New thornErik Schnetter2013-04-02
| | | | Move requirement handling code out of Carpet and into a new thorn.
* Carpet: Check schedule reads/writes statements at run timeErik Schnetter2012-09-11
|
* Carpet: Introduce more timers to measure communication timeErik Schnetter2012-09-11
|
* Support accelerator data transferErik Schnetter2012-09-11
| | | | | | | | | | | | | | | | | | | This patch provides a function interface for accelerator (GPU) devices to be called at certain points when Carpet traverses the schedule tree. This can be used to copy data between the host (CPU) and the device (GPU) as it is needed. --- Carpet/Carpet/interface.ccl | 28 ++++++++++++++++++++++++++++ Carpet/Carpet/param.ccl | 6 ++++++ Carpet/Carpet/src/CallFunction.cc | 12 ++++++++++++ Carpet/Carpet/src/Comm.cc | 8 ++++++++ Carpet/Carpet/src/Cycle.cc | 4 ++++ Carpet/Carpet/src/Evolve.cc | 2 ++ Carpet/Carpet/src/Initialise.cc | 2 ++ Carpet/Carpet/src/Requirements.cc | 34 ++++++++++++++++++++++------------ Carpet/Carpet/src/variables.cc | 3 +++ Carpet/Carpet/src/variables.hh | 3 +++ 10 files changed, 90 insertions(+), 12 deletions(-)
* Improve named barriersErik Schnetter2011-12-14
| | | | | | | | | Introduce dist::barrier as low-level implementation of a named barrier. Use it in Carpet::NamedBarrier. Use the above in almost all barrier calls.
* Carpet: Use CCTK_Barrier instead of MPI_BarrierErik Schnetter2011-12-14
|
* Adapt Carpet to hierarchical timersIan Hinder2011-12-14
| | | | | | | | Specifically, remove any hierarchy information that has been added to the name of timers, as well as any code for creating timers dynamically, as these are now unnecessary. Additionally, time some previously-untimed parts of the code and make timer names in some places more consistent.
* This was found to be necessary on hopper, otherwise memory seemed to beknarf2011-12-14
| | | | | | | | overwritten while prolongating/syncronizing. It looks liks this might be an MPI implementation issue, but this is not clear. A barrier at this point seems to be a sufficient workaround, and is now used on hopper. For more information about this, ask Frank Loeffler <knarf@cct.lsu.edu> Use the cpp flag CARPET_MPI_BARRIER_PROLONGATE_SYNC to enable this.
* Carpet: Increase warning level for synchronising groups without storageErik Schnetter2011-12-14
|
* Carpet: Output iteration number in veryverbose synchronisation messageErik Schnetter2011-12-14
|
* Carpet: Correct synchronisation for grid arrays and grid scalarsErik Schnetter2011-12-14
|
* Re-organise time level handlingErik Schnetter2011-12-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Store the current Cactus time (and not a fake Carpet time) in the th "time hiearchy". This removes the now redundant "leveltimes" data structure in Carpet. Add past time levels to th, so that it can store the time for past time levels instead of assuming the time step size is constant. This allows changing the time step size during evolution. Share the time hierarchy between all maps, instead of having one time hierarchy per map. Simplify the time level cycling and time stepping code used during evolution. Improve structure of the code that loops over time levels for certain schedule bins. Introduce a new Carpet variable "timelevel", similar to "reflevel". This also makes it possible to avoid time interpolation for the past time levels during regridding. The past time levels of the fine grid then remain aligned (in time) with the past time levels of the coarse grid. This is controlled by a new parameter "time_interpolation_during_regridding", which defaults to "yes" for backwards compatibility. Simplify the three time level initialisation. Instead of initialising all three time levels by taking altogether three time steps (forwards and backwards), initialise only one past time level by taking one time step backwards. The remaining time level is initialised during the first time step of the evolution, which begins by cycling time levels, which drops the non-initialised last time level anyway. Update Carpet and the mode handling correspondingly. Update the CarpetIOHDF5 checkpoint format correspondingly. Update CarpetInterp, CarpetReduce, and CarpetRegrid2 correspondingly. Update CarpetJacobi and CarpetMG correspondingly.
* Import CarpetErik Schnetter2011-12-14
| | | | Ignore-this: 309b4dd613f4af2b84aa5d6743fdb6b3
* Carpet: Try to handle tapered grids more elegantlyErik Schnetter2008-08-28
| | | | Code not tested, still disabled.
* Carpet: Small cleanup to Comm.ccErik Schnetter2008-07-15
|
* Carpet: Small clean-up to handling time fuzzErik Schnetter2008-07-15
| | | | | Small clean-up to the code that handles accumulated floating point errors in the physical time of the refinement levels.
* Carpet: Use thorn InitBase to manage initial data setupErik Schnetter2007-07-06
| | | | | | | | | | | | | | | | | | | | | | | | | | Thorn InitBase specifies how initial data should be calculated. There can be three possibilities: init_some_levels: Set up at least one time level; other time levels are scratch space init_single_level: Set up exactly one time level; other time levels are not acessed init_all_levels: Set up all active time levels Carpet checks this parameter and ensures that this setting is consistent with Carpet's parameters init_each_timelevel init_fill_timelevels init_3_timelevels The new parameter init_fill_timelevels copies the current time level into all past time levels, very similar to what MoL::initial_data_is_crap does. darcs-hash:20070706122545-dae7b-57ccca2954b1bd7ad98771e689c6c5b569c238cc.gz
* Carpet: Remove commented-out calls to old-style communication routinesErik Schnetter2008-01-30
| | | | darcs-hash:20080130221742-dae7b-1f4a9ac00bbdee761e3f3782b5f61f875b72d964.gz
* Carpet: Use the new communication schedule of CarpetLibErik Schnetter2008-01-14
| | | | darcs-hash:20080114152750-dae7b-8890d3f632101e83098124aa18ed48309a1880fe.gz
* Carpet: Correct handling of tapered gridsErik Schnetter2007-08-09
| | | | darcs-hash:20070809202205-dae7b-baa50974f8519fcde0b1351b6bb3ea72606a6388.gz
* Carpet: Small cleanup in Comm.ccErik Schnetter2007-05-23
| | | | darcs-hash:20070523204632-dae7b-4fbd60dd4df3df4a167a11e18f183a35aaf3eedd.gz
* Carpet: Add facility to switch off synchronsing during time evolutionErik Schnetter2006-12-06
| | | | | | | | | Add parameter sync_during_time_integration. This parameters disables synchronisation during time integration, similar to the way in which prolongation is disabled. This can potentially reduce communication overhead. darcs-hash:20061206163017-dae7b-953a43e45537fcac6acb2436cbcba3a1b75ee938.gz
* Carpet: remove unnecessary overload function for CCTK_SyncGroup() ...Thomas Radke2006-07-06
| | | | | | | | | | | Don't panic, I replaced it by an overload function for CCTK_SyncGroupsByDirI() which can synchronise multiple groups at a time. This patch requires the most recent changes in the flesh API to provide the new overloadable function CCTK_SyncGroupsByDirI(), as discussed in thread http://www.cactuscode.org/old/pipermail/developers/2006-June/004933.html. darcs-hash:20060706172438-776a0-a16f88e46597dde9d7899e5c4e69ed8cb420a13a.gz
* Carpet: Convert size_t to int before comparingErik Schnetter2006-06-13
| | | | darcs-hash:20060613165631-dae7b-ee946f6a3fd2381cc6cef7c63c55f93d9dd0a038.gz
* Carpet: Remove an unused local variableErik Schnetter2006-06-13
| | | | darcs-hash:20060613165458-dae7b-c335eaea205f443dde2184366886a591e388028b.gz
* Carpet: Implement fully tapered time evolutionErik Schnetter2006-06-03
| | | | | | | Algorithm from Lehner et al. Original patch concept by Ian Hawke. darcs-hash:20060603031952-dae7b-897df898e92d7e5807d1df6ab41e3a5d8869deeb.gz
* Carpet: Remove unused local variable in Comm.ccErik Schnetter2005-11-19
| | | | darcs-hash:20051119204024-dae7b-1dd3ef170658147d105f7bc8225bb963ce6d17d3.gz
* Carpet: Resolve conflict in Comm.ccErik Schnetter2005-11-19
| | | | darcs-hash:20051119220634-dae7b-81914bcef43e866cdecf67cc151f41b6a9600ad9.gz
* Carpet: Correct error in storage handling for grid arraysErik Schnetter2005-10-10
| | | | | | | This error aborted the run when enabling or disabling storage for grid arrays when a refined grid is active. darcs-hash:20051010204627-891bb-a3f201fe80dfeb286d5f2d8443b0729dd98955ed.gz
* Carpet: bugfix in synchronisation of grid arraysThomas Radke2005-10-21
| | | | darcs-hash:20051021170144-776a0-9ddbd39fc898bd30408dcf1f4c9dd00376785789.gz
* Carpet*: generalise the comm_state class for collective buffer communicationsThomas Radke2005-08-15
| | | | | | | | | CarpetLib's comm_state class (actually, it's still just a struct) has been extended to handle collective buffer communications for all possible C datatypes at the same time. This makes it unnecessary for the higher-level communication routines to loop over each individual datatype separately. darcs-hash:20050815150023-776a0-dddc1aca7ccaebae872f9f451b2c3595cd951fed.gz
* Carpet: Correct problems with negative time stepsErik Schnetter2005-08-09
| | | | | | | | | | | | When converting from physicsl time steps (delta_time) to Carpet's time steps (th::delta_time), do not divide by abs(delta_time), but by delta_time instead. When evolving backwards in time while initialising three time levels, change the sign of the physical time steps only, not the sign of Carpet's time steps. darcs-hash:20050809084940-891bb-2517b1568696c71278a98db6261515817a90247a.gz
* Carpet: Handle negative time steps correctly during prolongationErik Schnetter2005-08-08
| | | | darcs-hash:20050808194745-891bb-74c3f74d1b5a5886ea63e11671aa7f425d5a8daa.gz
* Carpet: List all synchronised groups when veryverbose is setErik Schnetter2005-05-26
| | | | darcs-hash:20050526125028-891bb-081be82930f38bb09853d20364ed75840f1fd61d.gz
* Carpet/CarpetLib: deactivate CarpetLib::minimise_outstanding_communicationsThomas Radke2005-04-11
| | | | | | | | | | | | | | The code to minimise the number of outstanding communication requests is superseded by the collective buffers communication code. Therefore the corresponding parameter has been deactivated (but not removed in order to keep backwards compatibility with older checkpoints). It is marked as deprecated in the param.ccl file and should not be used anymore (use CarpetLib::use_collective_communication_buffers instead). A level-2 warning of that meaning is printed at startup if the parameter is still set in a user's parfile. darcs-hash:20050411155524-776a0-ed9919869cc1f2821ab8b2fa23b4abea203b72ed.gz
* Carpet: bugfix for high-level synchronisation routinesThomas Radke2005-04-07
| | | | | | | | | | | | | In one of my previous patches I accidentally added two bugs when optimising the high-level synchronisation routines in Carpet: * a SYNC statement did only synchronise the ghostzones but forgot to prolongate the boundaries for grid functions * SyncGroups() also tried to synchronise non-CCTK_GF variables at multigrid and refinement levels other than 0 darcs-hash:20050407150044-776a0-46b495efd5b68ab401ad00c5ac705f786069022c.gz
* CarpetLib, Carpet: implement and use collective communication buffersThomas Radke2005-03-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Collective buffers are used to gather all components' data on a processor before it gets send off to other processors in one go. This minimizes the number of outstanding MPI communications down to O(N-1) and thus improves overall efficiency as benchmarks show. Each processor allocates a pair of single send/recv buffers to communicate with all other processors. For this the class (actually, the struct) comm_state was extended by 3 more states: state_get_buffer_sizes: accumulates the sizes for the send/recv buffers state_fill_send_buffers: gathers all the data into the send buffers state_empty_recv_buffers: copies the data from the recv buffer back into the processor's components Send/recv buffers are exchanged during state_fill_send_buffers and state_empty_recv_buffers. The constructor for a comm_state struct now takes an argument <datatype> which denotes the CCTK datatype to use for the attached collective buffers. If a negative value is passed here then it falls back to using the old send/recv/wait communication scheme. The datatype argument has a default value of -1 to maintain backwards compatibility to existing code (which therefore will keep using the old scheme). The new communication scheme is chosen by setting the parameter CarpetLib::use_collective_communication_buffers to "yes". It defaults to "no" meaning that the old send/recv/wait scheme is still used. So far all the comm_state objects in the higher-level routines in thorn Carpet (restriction/prolongation, regridding, synchronization) have been enabled to use collective communication buffers. Other thorns (CarpetInterp, CarpetIO*, CarpetSlab) will follow in separate commits. darcs-hash:20050330152811-776a0-51f426887fea099d1a67b42bd79e4f786979ba91.gz
* Carpet: fix for my latest patch which still had some (incomplete) debug ↵Thomas Radke2005-03-17
| | | | | | statements left that broke compiling Comm.cc darcs-hash:20050317150756-776a0-d9e6719f3c75b27fe4aaa01a773e9db489a84a5c.gz
* Carpet: simplify SyncGroup(); merge SyncGFArrayGroup() and SyncGFGroup() ↵tradke2005-03-16
| | | | | | into SyncGVGroup() darcs-hash:20050316140925-3fd61-fd64d2290d26975fa5521f57f0d83442d5af7feb.gz
* Carpet: call SyncGFGroup() from within Restrict() to remove code duplicationtradke2005-03-16
| | | | darcs-hash:20050316123248-3fd61-b9695858d99c5d6dc769c0b4e1db3c50c9e5032a.gz
* Carpet/CarpetLib: minimise the number of outstanding communication requeststradke2005-03-11
| | | | | | | | | | | | | | | | | | | | | | | This patch greatly reduces the number of outstanding MPI_Isend/MPI_Irecv communication requests by moving the loop over comm_states (recv,send,wait) from the outermost to the innermost. This resolves problems with certain MPI implementations (specifically LAM, MPICH-NCSA, and Mvapich over Infiniband) which potentially resulted in some communication buffer overflow and caused the Cactus application to abort or hang forever. Preliminary benchmarks with BSSN_MoL show that the patch does not have a negative impact on myrinet clusters (measured to 64 processors). It even improves the Carpet performance on GigE clusters (measured up to 16 processors). The order of the communication loops is controlled by the boolean parameter CarpetRegrid::minimise_outstanding_communications which defaults to "no" (preserving the old behaviour). darcs-hash:20050311160040-3fd61-04d40ac79ef218252f9364a8d18796e9b270d295.gz
* Carpet: Whitespace changeErik Schnetter2005-02-02
| | | | darcs-hash:20050202125625-891bb-8f5cfc4988f10550002d253c22fb3bb41f978a5f.gz
* global: Turn CarpetLib templates into classesErik Schnetter2005-01-01
| | | | | | | | | | | | | | | | | | | Turn most of the templates in CarpetLib, which used to have the form template<int D> class XXX into classes, i.e., into something like class XXX by setting D to the new global integer constant dim, which in turn is set to 3. The templates gf and data, which used to be of the form template<typename T, int D> class XXX are now of the form template<typename T> class XXX The templates vect, bbox, and bboxset remain templates. This change simplifies the code somewhat. darcs-hash:20050101182234-891bb-c3063528841f0d078b12cc506309ea27d8ce730d.gz