aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* CarpetLib: Introduce new class mem<T> for memory managementErik Schnetter2005-03-05
| | | | | | | | | | | | | | | | | | | Introduce a new class mem<T> for memory management. Memory management has become sufficiently complicated to move into its own class. The class mem<T> features: 1. Allocating nelem items of type T 2. Managing contiguous regions of memory for several data<T> objects for vector groups 3. Allowing a pointer to a memory region to be passed in, which is used instead of allocating memory through new 4. Reference counting, so that the mem<T> object only goes away once the last using data<T> object does not need it any more. This makes it unnecessary to delete the first data<T> objects for a grid function group last. darcs-hash:20050305174647-891bb-e1f53adca34e5a668af96c662845cca0f259f8e6.gz
* Carpet: Update doxygen instructionsErik Schnetter2005-04-10
| | | | darcs-hash:20050410120954-891bb-c8ce14e43bfe5591204679e18e27da5721ff0468.gz
* Carpet: Output level times with higher precisionErik Schnetter2005-04-09
| | | | darcs-hash:20050409201450-891bb-24e5e0f2c92eeba86560d85754b40b8525434a3e.gz
* Carpet: Add debugging parameter to output the level timesErik Schnetter2005-04-09
| | | | darcs-hash:20050409195510-891bb-78231ea04482513e00b2a0a278b514ae95e1a8c8.gz
* Carpet: Forbid staggering about the origin only for multiple convergence levelsErik Schnetter2005-04-09
| | | | darcs-hash:20050409190317-891bb-e3601ddafcb9617a6780e43042cd008957a50d78.gz
* FOWaveToyF77: do not inherit from IDFOScalarWaveErik Schnetter2005-04-09
| | | | darcs-hash:20050409185109-891bb-f9d76b8e9811534cbdc1b8b1b8f06525dfdfa9b9.gz
* CarpetIOHDF5: optimisation of syncing all variables after recoveryThomas Radke2005-04-07
| | | | | | Synchronise all variables of the same vartype at once by calling Carpet::SyncProlongateGroups(). darcs-hash:20050407153843-776a0-e567718c6ba858f4c074c5ec65dd0fc5cb373526.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: omit the name for the unused dummy function argument in ↵Thomas Radke2005-04-06
| | | | | | dist::datatype() to get rid of g++ compiler warnings darcs-hash:20050406145726-776a0-16ef8cd6d00ca41fcd3662b93bffe649476ff31f.gz
* CarpetLib: make fill_bbox_arrays() a static non-template function in data.cctradke2005-03-16
| | | | darcs-hash:20050316130144-3fd61-1f95c63b76c29de63f212546b5e4fa226afe7299.gz
* CarpetRegrid: remove invalid restrict qualifier in Automatic_Recursive()Thomas Radke2005-04-05
| | | | | | | Intel compilers seem to ignore the qualifier but g++ didn't compile automatic.cc anymore. darcs-hash:20050405095600-776a0-14eb3587897219c3d8fb95a23befc5c8fa2a8227.gz
* CarpetSlab: pass vartype in comm_state constructor tto make use of ↵Thomas Radke2005-03-31
| | | | | | | | | | collective communication buffers So far collective buffers can be used only for the collector object. For the case where all processors should receive the resulting hyperslab, the comm_state loop was left untouched because I didn't understand the code. darcs-hash:20050331082252-776a0-bae45b204fdf31f38969bee81c0ae97edae68f5c.gz
* CarpetIOHDF5: pass vartype in comm_state constructor tto make use of ↵Thomas Radke2005-03-31
| | | | | | collective communication buffers darcs-hash:20050331080034-776a0-629822f876800af1b76d5d43ca131f5373e991a4.gz
* CarpetIOASCII: pass vartype in comm_state constructor tto make use of ↵Thomas Radke2005-03-31
| | | | | | collective communication buffers darcs-hash:20050331074851-776a0-fe39223cec4a68197e224c9b92f4fbef7b6258d8.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: short cut in Restrict(): don't call SyncGVGroup() on empty (vector) ↵Thomas Radke2005-03-25
| | | | | | groups darcs-hash:20050325093919-776a0-2cf1c8734de6187a8622ad69f4d6ac3b1f86e14f.gz
* CarpetLib: remove unused send_listvect argument in copycat() and intercat()Thomas Radke2005-03-23
| | | | darcs-hash:20050323191002-776a0-4a40d844dee2a66e8802669d960709e3488216c4.gz
* CarpetRegrid: Correct some errors in the automatic regridding routineErik Schnetter2005-03-23
| | | | | | | Correct some errors in the automatic regridding routine. Add a parameter for verbose screen output. darcs-hash:20050323211540-891bb-8591fe329d8878afb826f7336d00daf6bb1345cb.gz
* CarpetMG: Turn CarpetLib templates into classesErik Schnetter2005-01-01
| | | | darcs-hash:20050101182657-891bb-ae26379b5a248728005855c6db4dcdee6264ed62.gz
* CarpetIOHDF5: fix for IOHDF5::use_reflevels_from_checkpoint = "yes" for the ↵Thomas Radke2005-03-21
| | | | | | case when CarpetRegrid::refinement_levels was also set in the recovery parfile darcs-hash:20050321110931-776a0-6fd09edfbd764f2b4d3f296a3f8c429f1000e407.gz
* Use ipow instead of pow in various placesErik Schnetter2004-12-25
| | | | darcs-hash:20041225201943-891bb-0c5fe9240c54991c38b7710ab54a0de71d69e221.gz
* CarpetMG: Snapshot of current stateErik Schnetter2004-12-08
| | | | darcs-hash:20041208222153-891bb-d9ac7d30cfb9ed9eda22377bcb72317b349cbc73.gz
* CarpetMG: A multigrid solver for CarpetErik Schnetter2004-11-24
| | | | darcs-hash:20041124061259-891bb-566d93667d53c7746838a83c4171f6874dd496f2.gz
* CarpetLib: Do not check invariant of bboxset classErik Schnetter2005-03-21
| | | | | | | | | Checking the invariant of the bboxset class is probably O(N^3) in the number of bboxes, possibly worse. It is a very slow operation when there are many components in a simulation, especially with AMR, and possibly also when running on many processors. darcs-hash:20050321020814-891bb-c5eb1cde6f3ac064e39a362b19bd20e15d03bc24.gz
* CarpetLib: Correct misleading commentErik Schnetter2005-03-21
| | | | darcs-hash:20050321020511-891bb-2775aab7e620a3c8da997c10cefcf5ac53124509.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
* move block of duplicated assert() statements in ↵Thomas Radke2005-03-16
| | | | | | {copy,interpolate}_from_{recv,send,wait}() further up into {copy,interpolate}_from() so that the code is shared darcs-hash:20050316132044-776a0-525aa7485c2718a9717b6f253553982524872727.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
* CarpetAdaptiveRegrid:Really fix the inheriting child errors this time, I hope.Ian Hawke2005-03-04
| | | | darcs-hash:20050304163739-58c7f-6e0236559166e77d7562b96370e4ffa95068eee1.gz
* CarpetAdaptiveRegrid: Fix checking the child level for errorsIan Hawke2005-03-04
| | | | | | | | | Firstly only check the errors of a child level if a grandchild level exists. Secondly take the refinement factor into account when calculating where this error should be placed! darcs-hash:20050304134516-58c7f-484d0c7d61a089b4eb7f294c427c76bb529d8dde.gz
* CarpetAdaptiveRegrid: ASCII pictures of the maskIan Hawke2005-03-04
| | | | | | | Print to screen (using cout; not good on multiprocs) an ASCII art picture of the mask for debugging purposes. darcs-hash:20050304120741-58c7f-9cc7fbbb8462dafc558b974dcc1a04a28b5e7987.gz
* CarpetInterp: Correct check whether a processor owns a componentErik Schnetter2005-03-07
| | | | darcs-hash:20050307170026-891bb-03754477692ad245563fda22ecdd4510da4549ab.gz
* Carpet: Add new flag Carpet::constant_load_per_processorErik Schnetter2005-03-07
| | | | | | | | Add a new flag Carpet::constant_load_per_processor which takes the specified grid size and multiplies it by the number of processors. When running benchmarks, this keeps the local load constant. darcs-hash:20050307165844-891bb-7b4c36a5e3bb152086d2eb240a898cb2ac5a3122.gz
* Carpet: Forbid local mode only for true storage changesErik Schnetter2005-03-04
| | | | | | | Forbid local mode in CCTK_{En,Dis}ableGroupStorage only when the number of allocated time level actually changes. darcs-hash:20050304224351-891bb-bf7b5d9e402b3f994e9739070863f61a407dfd66.gz
* CarpetLib: Use MPI_STATUS_IGNOREErik Schnetter2005-03-03
| | | | darcs-hash:20050303170559-891bb-836694ccb8375a1f09cfaeda646e4430e3e5bd07.gz
* CarpetReduce: Handle groups that have not all time levels allocatedErik Schnetter2005-03-03
| | | | darcs-hash:20050303102622-891bb-8d89ed158189c376fa1235ece02a5d8fef87fcae.gz
* CarpetInterp: Handle groups that have not all time levels allocatedErik Schnetter2005-03-03
| | | | darcs-hash:20050303102506-891bb-118df8e38d1ca7e981bb4f97b14d5a747c1b3928.gz
* CarpetAdaptiveRegrid: Change implementation name to CarpetAdaptiveRegridErik Schnetter2005-03-03
| | | | | | | | | Change implementation name from CarpetRegrid to CarpetAdaptiveRegrid. This is necessary because the thorns CarpetRegrid and CarpetAdaptiveRegrid export different parameters -- CarpetRegrid supports moving boxes, and CarpetAdaptiveRegrid does not. darcs-hash:20050303102220-891bb-fb35e947b47f660ceb384a8ecf175974a1a60c5c.gz
* CarpetRegrid: Change moving boxes parameters back from private to restrictedErik Schnetter2005-03-03
| | | | darcs-hash:20050303102105-891bb-990bc0d6e67280328487d08e332794505954890c.gz
* CarpetRegrid: Change "&&" and "||" to "and" and "or"Erik Schnetter2005-03-03
| | | | darcs-hash:20050303102007-891bb-dda44e75d217fbbd7e62cb43b509ec5096699b26.gz
* Carpet: Change some 0 to NULLErik Schnetter2005-03-03
| | | | darcs-hash:20050303101924-891bb-32d852a6fc338b52465ba0c29fed953eb4850e40.gz
* Carpet: Handle groups with all time levels active correctlyErik Schnetter2005-03-03
| | | | darcs-hash:20050303101914-891bb-4bd9006f6da972bb3a1d8d9a4a9127359bcf1a4d.gz
* Carpet: Correct errors in en-/disabling of storageErik Schnetter2005-03-03
| | | | darcs-hash:20050303101750-891bb-030a589a06caf7a6a2e0228d48f822a0a075cc90.gz
* Carpet: Print grid function statistics all the timeErik Schnetter2005-03-03
| | | | darcs-hash:20050303101732-891bb-de03e09a71432408124670a120932664c62ed6a6.gz
* Carpet: Remove some unnecessary assertsErik Schnetter2005-03-03
| | | | darcs-hash:20050303101645-891bb-6072fc57dcd54465327228db1de56e581db8205c.gz
* Carpet: Comment changeErik Schnetter2005-03-03
| | | | darcs-hash:20050303101606-891bb-24d4f3ebe735050cae9b46d68f4eaf0be05f0dfa.gz
* CarpetLib: Small cleanups to vector group storage handlingErik Schnetter2005-03-03
| | | | darcs-hash:20050303101420-891bb-6c23d70652146f074a392970443190966c909d10.gz
* CarpetLib: Whitespace changesErik Schnetter2005-03-03
| | | | darcs-hash:20050303101349-891bb-251f1432b873c898f73e0315ed63a7764f8714e8.gz