| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
darcs-hash:20050410120954-891bb-c8ce14e43bfe5591204679e18e27da5721ff0468.gz
|
|
|
|
| |
darcs-hash:20050409201450-891bb-24e5e0f2c92eeba86560d85754b40b8525434a3e.gz
|
|
|
|
| |
darcs-hash:20050409195510-891bb-78231ea04482513e00b2a0a278b514ae95e1a8c8.gz
|
|
|
|
| |
darcs-hash:20050409190317-891bb-e3601ddafcb9617a6780e43042cd008957a50d78.gz
|
|
|
|
| |
darcs-hash:20050409185109-891bb-f9d76b8e9811534cbdc1b8b1b8f06525dfdfa9b9.gz
|
|
|
|
|
|
| |
Synchronise all variables of the same vartype at once by calling Carpet::SyncProlongateGroups().
darcs-hash:20050407153843-776a0-e567718c6ba858f4c074c5ec65dd0fc5cb373526.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
dist::datatype() to get rid of g++ compiler warnings
darcs-hash:20050406145726-776a0-16ef8cd6d00ca41fcd3662b93bffe649476ff31f.gz
|
|
|
|
| |
darcs-hash:20050316130144-3fd61-1f95c63b76c29de63f212546b5e4fa226afe7299.gz
|
|
|
|
|
|
|
| |
Intel compilers seem to ignore the qualifier but g++ didn't compile
automatic.cc anymore.
darcs-hash:20050405095600-776a0-14eb3587897219c3d8fb95a23befc5c8fa2a8227.gz
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
collective communication buffers
darcs-hash:20050331080034-776a0-629822f876800af1b76d5d43ca131f5373e991a4.gz
|
|
|
|
|
|
| |
collective communication buffers
darcs-hash:20050331074851-776a0-fe39223cec4a68197e224c9b92f4fbef7b6258d8.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
groups
darcs-hash:20050325093919-776a0-2cf1c8734de6187a8622ad69f4d6ac3b1f86e14f.gz
|
|
|
|
| |
darcs-hash:20050323191002-776a0-4a40d844dee2a66e8802669d960709e3488216c4.gz
|
|
|
|
|
|
|
| |
Correct some errors in the automatic regridding routine.
Add a parameter for verbose screen output.
darcs-hash:20050323211540-891bb-8591fe329d8878afb826f7336d00daf6bb1345cb.gz
|
|
|
|
| |
darcs-hash:20050101182657-891bb-ae26379b5a248728005855c6db4dcdee6264ed62.gz
|
|
|
|
|
|
| |
case when CarpetRegrid::refinement_levels was also set in the recovery parfile
darcs-hash:20050321110931-776a0-6fd09edfbd764f2b4d3f296a3f8c429f1000e407.gz
|
|
|
|
| |
darcs-hash:20041225201943-891bb-0c5fe9240c54991c38b7710ab54a0de71d69e221.gz
|
|
|
|
| |
darcs-hash:20041208222153-891bb-d9ac7d30cfb9ed9eda22377bcb72317b349cbc73.gz
|
|
|
|
| |
darcs-hash:20041124061259-891bb-566d93667d53c7746838a83c4171f6874dd496f2.gz
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
darcs-hash:20050321020511-891bb-2775aab7e620a3c8da997c10cefcf5ac53124509.gz
|
|
|
|
|
|
| |
statements left that broke compiling Comm.cc
darcs-hash:20050317150756-776a0-d9e6719f3c75b27fe4aaa01a773e9db489a84a5c.gz
|
|
|
|
|
|
| |
into SyncGVGroup()
darcs-hash:20050316140925-3fd61-fd64d2290d26975fa5521f57f0d83442d5af7feb.gz
|
|
|
|
| |
darcs-hash:20050316123248-3fd61-b9695858d99c5d6dc769c0b4e1db3c50c9e5032a.gz
|
|
|
|
|
|
| |
{copy,interpolate}_from_{recv,send,wait}() further up into {copy,interpolate}_from() so that the code is shared
darcs-hash:20050316132044-776a0-525aa7485c2718a9717b6f253553982524872727.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
darcs-hash:20050304163739-58c7f-6e0236559166e77d7562b96370e4ffa95068eee1.gz
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
darcs-hash:20050307170026-891bb-03754477692ad245563fda22ecdd4510da4549ab.gz
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Forbid local mode in CCTK_{En,Dis}ableGroupStorage only when the
number of allocated time level actually changes.
darcs-hash:20050304224351-891bb-bf7b5d9e402b3f994e9739070863f61a407dfd66.gz
|
|
|
|
| |
darcs-hash:20050303170559-891bb-836694ccb8375a1f09cfaeda646e4430e3e5bd07.gz
|
|
|
|
| |
darcs-hash:20050303102622-891bb-8d89ed158189c376fa1235ece02a5d8fef87fcae.gz
|
|
|
|
| |
darcs-hash:20050303102506-891bb-118df8e38d1ca7e981bb4f97b14d5a747c1b3928.gz
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
darcs-hash:20050303102105-891bb-990bc0d6e67280328487d08e332794505954890c.gz
|
|
|
|
| |
darcs-hash:20050303102007-891bb-dda44e75d217fbbd7e62cb43b509ec5096699b26.gz
|
|
|
|
| |
darcs-hash:20050303101924-891bb-32d852a6fc338b52465ba0c29fed953eb4850e40.gz
|
|
|
|
| |
darcs-hash:20050303101914-891bb-4bd9006f6da972bb3a1d8d9a4a9127359bcf1a4d.gz
|
|
|
|
| |
darcs-hash:20050303101750-891bb-030a589a06caf7a6a2e0228d48f822a0a075cc90.gz
|
|
|
|
| |
darcs-hash:20050303101732-891bb-de03e09a71432408124670a120932664c62ed6a6.gz
|
|
|
|
| |
darcs-hash:20050303101645-891bb-6072fc57dcd54465327228db1de56e581db8205c.gz
|
|
|
|
| |
darcs-hash:20050303101606-891bb-24d4f3ebe735050cae9b46d68f4eaf0be05f0dfa.gz
|
|
|
|
| |
darcs-hash:20050303101420-891bb-6c23d70652146f074a392970443190966c909d10.gz
|
|
|
|
| |
darcs-hash:20050303101349-891bb-251f1432b873c898f73e0315ed63a7764f8714e8.gz
|