| Commit message (Collapse) | Author | Age |
... | |
|
|
|
| |
darcs-hash:20060225172723-dae7b-27a2d88ad612cd88b33b83095760a55dd03d2dc4.gz
|
|
|
|
|
|
|
| |
Rename some local variables in dh.cc and gdata.cc so that their names
don't clash with global variables.
darcs-hash:20051119203248-dae7b-c371dfbf1e43fbd95577a17201d7cee45e5c8400.gz
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
For each refinement level that is to be recomposed, check whether it
has the same structure as before, and if so, do nothing. This is
controlled by a new flag CarpetLib::fast_recomposing.
darcs-hash:20050811120347-891bb-f937c21ddeac7d909cae41d487e9fd74a5ce8cc8.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rename the previous buffer zones to "inner buffer zones". Introduce
additional "outer buffer zones". Their meaning is the same, except
that inner buffer zones are taken from the computational domain,
making it smaller, while outer buffer zones are added to the outside,
similar to ghost zones. This makes them easier to handle, both
internally in Carpet and for the end user.
This changes the API of the dh class.
There is a new field "is_interproc" in the "dboxes" structure; it
specifies whether the whole boundary is an interprocessor boundary.
(Note that boundaries can be partly interprocessor and partly
refinement boundaries.)
Both kinds of buffer zones can exist at the same time, although I
would not do that.
darcs-hash:20050808200647-891bb-9d9a8eefaf7bcb665d09869a8b564f3769d2ecc2.gz
|
|
|
|
| |
darcs-hash:20050808132501-891bb-e03ca26e0adfe32f01065ecae0b987785855190a.gz
|
|
|
|
| |
darcs-hash:20050411203309-891bb-5b74d6135f6cd6995f1eed6cc74dd2f29c42f8a8.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
Resolve the conflict that exists between the patches that introduce
the mem<T> class conflicts and the option
CarpetLib::use_collective_communication_buffers.
darcs-hash:20050410175106-891bb-a66f3783fd8c897d65ed07f55b812e346b406baa.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Reverse the order that variables are destroyed when refinement levels
are removed. This ensures that vector GFs are treated correctly.
darcs-hash:20050209173129-58c7f-c2507b49252fe45782dd06803201ef1cff74f889.gz
|
|
|
|
| |
darcs-hash:20050201231759-891bb-db87543a706110d2cd819a7f38c1e67cf27e16a3.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change the way in which the grid hierarchy is stored. The new hierarchy is
map
mglevel
reflevel
component
timelevel
i.e., mglevel moved from the bottom to almost the top. This is
because mglevel used to be a true multigrid level, but is now meant to
be a convergence level.
Do not allocate all storage all the time. Allow storage to be
switched on an off per refinement level (and for a single mglevel,
which prompted the change above). Handle storage management with
CCTK_{In,De}creaseGroupStorage instead of
CCTK_{En,Dis}ableGroupStorage.
darcs-hash:20050201225827-891bb-eae3b6bd092ae8d6b5e49be84c6f09f0e882933e.gz
|
|
|
|
| |
darcs-hash:20050102173453-891bb-833515dd47ce1469ebe319718ab169e5eb82c6c4.gz
|
|
|
|
| |
darcs-hash:20050101191615-891bb-20b262ff1a4468d5e1c5ac8626a3ead0727c2da9.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
darcs-hash:20050201214347-891bb-286c20316478d9f1c8384f94764174cab5adb9e0.gz
|
|
|
|
| |
darcs-hash:20050101162121-891bb-ac9d070faecc19f91b4b57389d3507bfc6c6e5ee.gz
|
|
|
|
|
|
| |
That is, say e.g. <cmath> instead of <math.h>.
darcs-hash:20041225182902-891bb-2a4502d6a76ed830ab978030fc4e4765b183509f.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Made all variables in CarpetLib:gh to be const or non-public, to avoid
confusion and insanity.
Toward this end, created four member accessors for gh:
const rexts & extents() const
const rbnds & outer_boundaries() const
const rprocs & processors() const
const vector<vector<ibbox> > & bases() const
This involved a few changes in several files throughout the repository:
M ./Carpet/Carpet/src/Initialise.cc -2 +2
M ./Carpet/Carpet/src/Recompose.cc -8 +8
M ./Carpet/Carpet/src/SetupGH.cc -2 +2
M ./Carpet/Carpet/src/modes.cc -3 +3
M ./Carpet/CarpetIOHDF5/src/Recover.cc -4 +4
M ./Carpet/CarpetInterp/src/interp.cc -5 +5
M ./Carpet/CarpetLib/src/dh.cc -3 +3
M ./Carpet/CarpetLib/src/gh.cc -33 +33
M ./Carpet/CarpetLib/src/gh.hh -10 +28
M ./Carpet/CarpetReduce/src/mask_carpet.cc -4 +4
M ./Carpet/CarpetRegrid/src/automatic.cc -2 +2
darcs-hash:20041210131459-32473-ff0835ff0e57f6693fbe1ec23b350d1b1d18e3bc.gz
|
|
|
|
|
|
|
|
| |
Fixed indentation
Made order of function declarations more like the order they are
called in.
darcs-hash:20041123182640-32473-a83a83ad132b847bf8b219686e9c88ad277f411c.gz
|
|
|
|
|
|
| |
Fixed a crashing bug. Je suis d[_\e9_]sol[_\e9_].
darcs-hash:20041123164102-32473-7746f9871f6e2f58f84825b8eb38416c622f5cb9.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Broke up dh<D>::recompose( bool ) into bite-sized chunks.
Made use of member function pointers to cut down as many as three
levels of blocks. See 'foreach_reflevel_component_mglevel'.
Advantages:
1) the code of the main function 'recompose' now presents an outline of
its functionality, rather than a post-ice-age deluge.
2) component functions are named according to some comment found in the
code. For those who want to minimise comments.
3) most of the functions conform to my "rule of thumb" (comprehensible
chunks of code are no longer than my thumb)
4) nesting substantially reduced (The functions that still have more
than 5 levels of nested blocks are mostly those that are also
unthumbworthy. More room on the screen, but still room for
improvement.)
darcs-hash:20041122173415-32473-616506e73f5c93be610bc773adaa7867663cb726.gz
|
|
|
|
|
|
| |
Replace all CVS header tags with the standard "$Header:$".
darcs-hash:20040918132147-891bb-dea889bdd94a479ec412d14d08e9efca63e5c24d.gz
|
|
|
|
| |
darcs-hash:20040917143726-07bb3-cdfed6bde9278cc33ad4ad0a04ed13d6a700b65d.gz
|
|
|
|
|
|
|
|
|
|
|
| |
Re-introduce the parameter Carpet::prolongate_initial_data with the
default "yes". If set to "no", newly created refinement levels are
not initialised through prolongation, which saves quite some time.
Remove the unused optional argument checkpoing_recovery from
Carpet::Regrid.
darcs-hash:20040807174712-07bb3-78054ad80959a2e26238531d9ea54eaac161ffce.gz
|
|
|
|
|
|
|
| |
Free vector groups leaders only after the other vector elements have
been freed.
darcs-hash:20040608205801-07bb3-96319f89460b351b1d058548e2a2cba6455ea1d0.gz
|
|
|
|
|
|
|
|
|
| |
Add option to use less memory during regridding.
Some more internal consistency checks.
Some reformatting.
darcs-hash:20040521161341-07bb3-de11e460fb175d3dbbd94708730c18a6e94e370a.gz
|
|
|
|
| |
darcs-hash:20040422121713-07bb3-1ef5a3ac1752f5f05d3e010bf9390bc6cff7ea79.gz
|
|
|
|
|
|
|
|
|
|
| |
Regrid all grid functions at once. This is necessary to treate vector
grid functions correctly, where otherwise storage would be released
too early. This requires the regridding interface between the dh and
ggf classes to change. Another advantage is that this should now be
faster on multiple processors.
darcs-hash:20040419193833-07bb3-f7474744feaa57f8a1621aeca34de11b65eaeed8.gz
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the parameters Carpet::prolongate_initial_data; this is now
always done.
Remove arguments initialise_from and do_prolongate from Regrid().
Regridding is now done in level mode instead of meta mode.
Furthermore, CarpetRegrid is called in singlemape mode.
darcs-hash:20040418112943-07bb3-2e392df1737ab75f3f0d553bb53bde2ed41f8773.gz
|
|
|
|
| |
darcs-hash:20040407145642-07bb3-3913deeb11dfa6fea78c757539425b36e87886bf.gz
|
|
|
|
|
|
|
| |
Fix bug in calculating the boundary prolongation zones on multiple
processors.
darcs-hash:20040323165600-07bb3-7dff25fdd6fe4a0a3ad350df8c0aa085799ca5d4.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Import the recently announced changes:
1. Carpet has now an infrastructure for multiple maps (aka "grid
patches"). Instead of a single grid hierarchy there can now be
several. This is largely untested, because the remainder of Cactus
cannot handle multiple coordinate systems.
2. The order in which the schedule bins are called has changed. As Ian
Hawke pointed out, the previous order during time evolution was
inconsistent. The initial data ordering did not allow for recovering
and was not usable for progressively solving elliptic equations for
initial data.
3. Carpet now supports convergence levels. The convergence level
specifies by how many factors of two the resolution in the parameter
file should be coarsened (or refined, if negative). This should make
convergence tests and test runs much easier. It is, in principle, also
possible to run several convergence levels at once. This has not been
tested because the remainder of Cactus cannot handle multiple
resolutions. This will be necessary for a multigrid solver, and also
for having a shadow hierarchy to determine where to refine adaptively.
4. Carpet works together with the new CoordBase domain specification
parameters. Without these, using convergence levels will lead to very
strange results.
5. The "modes" have changed. There are now:
meta mode: the whole simulation
global mode: one convergence level
level mode: one refinement level
singlemap mode: one map on one refinement level
local mode: as previously
The whole mode handling has been cleaned up.
6. The regridding thorn has been cleaned up.
7. The kind of prolongation stencil is now determined in Carpet, i.e. at
a fairly hight level, instead of in CarpetLib.
8. The low-order prolongation operators have been made much more
efficient (as have previously the higher-order ones).
9. Assorted smaller changes.
For Carpet users, there should be no major incompatibilities. The major
improvements are 3 and 4 combined. Here is an example:
CoordBase::domainsize = extent
CoordBase::spacing = gridspacing
CoordBase::zero_origin_x = yes
CoordBase::zero_origin_y = yes
CoordBase::zero_origin_z = yes
CoordBase::xextent = 20.0
CoordBase::yextent = 20.0
CoordBase::zextent = 20.0
CoordBase::dx = 1.0
CoordBase::dy = 1.0
CoordBase::dz = 1.0
CoordBase::boundary_shiftout_x_lower = 1
CoordBase::boundary_shiftout_y_lower = 1
CoordBase::boundary_shiftout_z_lower = 1
Carpet::domain_from_coordbase = yes
Carpet::convergence_level = 0
grid::type = coordbase
grid::domain = octant
grid::avoid_origin = no
This gives you a grid that extends from the origin ("zero_origin") up to
20.0 with a grid spacing of 1.0. Symmetry zones and boundary zones are
added automatically. The "shiftout" says that there is no boundary
point on the origin. The staggering parameters (not shown) default to
"no". In order to change the resolution, only the convergence level
has to be adjusted. Note that the old way of specifying the domain
extent still works.
For Carpet developers, one major change is the new mode handling. As
described in 5, the looping macros (that loop over all refinement
levels, or all components) have changed.
darcs-hash:20040125135727-07bb3-51c9647c1b5080e7e180b52a1b81fa155cfd19e9.gz
|
|
|
|
| |
darcs-hash:20040121132535-07bb3-8221de1d3146f586eb13b0fe3acb12836b06efd5.gz
|
|
|
|
|
|
|
|
| |
Use .at() instead of [] to access vectors.
Fix a bug in the calculation of the restriction regions.
Remove unused code.
darcs-hash:20040120122505-07bb3-4e4c8c59f712ebe671d261ef1bea3640ab077ada.gz
|
|
|
|
|
|
|
| |
While restricting, don't assume that there are buffer zones at
interprocessor boundaries.
darcs-hash:20040116163644-07bb3-7eef930c1b8bb461228d194dcb9ecddd5534d9ad.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Many changes that accumulated while Cactus and Carpet diverged.
Add processor splitting mechanism "along-dir" that splits along a
specified direction.
Rename group PostRestrict to bin POSTRESTRICT.
Prolongate initial data only when desired. This saves much time.
Sorry, Ian.
Fix bug in time level cycling of grid arrays. (Note: grid arrays
should not have time levels.)
Fix time_t bug on IRIX.
Make sure that there is no integer overflow when there are many
refinement levels. Always put parentheses around
(maxreflevelfact/reflevelfact).
Fix typo in Carpet verbose output.
Add debug output in processor splitting.
Communicate in three stages: Irecv, (work), Isend, Wait. This might
be more efficient. Much more, potentially.
Fix bug in processor layout of grid arrays. Sorry, Ian.
Make the interpolator interpolate between time levels. Untested.
Fix bug in processor communication in interpolator. Sorry, Ian.
Rewrite prolongation operators to make them twice as fast. There you
are, Ian.
Move prolongation operator kind handling from data to gdata.
Add official hyperslabbing interfaces to CarpetSlab.
Adapt to new cGH * handling.
darcs-hash:20031105151837-07bb3-758a87ff0355dba053269df4b7d7d79bea018669.gz
|
|
|
|
| |
darcs-hash:20031016150004-07bb3-9c843c9710adcce8d2b3243b0c02b798d83bab59.gz
|
|
|
|
|
|
|
|
|
| |
bbox::size() and bboxset::size() return the number of grid points, not
the product of the shape. This makes larger grids possible.
Mark necessary future changes for vector grid functions with VGF.
darcs-hash:20030919140641-07bb3-94c1897464dcc159725618d611ac28f3f75a3011.gz
|
|
|
|
| |
darcs-hash:20030723123144-07bb3-a0618075e3de075e10c86a0b244fec87b052a919.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix the casing of the postrestrict group to PostRestrict. Update all
schedule.ccl files accordingly.
Introduce a Carpet parameter buffer_width. This parameter specifies a
region within refined grids that is also boundary-prolongated.
Introduce a function CarpetEnableProlongation to dis- and re-enable
boundary prolongation.
darcs-hash:20030720190343-07bb3-0c5db5cebe769c0d4b3237f11a089aab9da94b1a.gz
|
|
|
|
| |
darcs-hash:20030717134028-07bb3-e4bead1009c4fa048004145ccb0c302f395d3d1d.gz
|
|
|
|
| |
darcs-hash:20030717102405-07bb3-14d73938a57d6ba625cbd2a90bad5ca3905472f5.gz
|
|
|
|
|
|
|
|
| |
Introduce a buffer zone between the prolongation destination and
restriction source grid points. Set its width to 2 by default. This
seems to be necessary for second order convergence.
darcs-hash:20030716194558-07bb3-d34ffc034cb54e4dcce2e2be2bd378184a79304e.gz
|
|
|
|
|
|
|
| |
Declare some more routines as taking a const cGH *, to match the
recent changes in the flesh.
darcs-hash:20030714134134-07bb3-6c0078627d40a9d05320632feba2277afdd33bdf.gz
|
|
|
|
| |
darcs-hash:20030523215231-07bb3-7eb2acb8636c41c453126b55d3833abd8457184a.gz
|
|
|
|
|
|
|
|
|
|
| |
Handle empty grids.
Fix global and level mode handling of the interpolator.
Allow local mode calls for the interpolator, reduction operator, and
hyperslabber, assuming that people know what they are doing.
darcs-hash:20030513101400-07bb3-42af7544c2ea98dbef5a7ad6d5112bea2dcc404f.gz
|