[Users] global reductions in specified domains
Roland Haas
roland.haas at physics.gatech.edu
Wed Nov 20 18:23:00 CST 2013
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hello Vassili,
> how can i now perform the reduction on this "processor-local"
> quantity?
You can use the same as for the first example that I gave:
schedule.ccl:
schedule integrate in CCTK_ANALYSIS AFTER setup_integrand
{
OPTIONS: global
LANG: C
} "reduce 'helper' grid scalar on all processes"
interface.ccl:
CCTK_REAL rho_total_shell[nradii] TYPE=SCALAR "blah"
CCTK_REAL rho_in_shell[nradii] TYPE=SCALAR "blah"
C-code:
void integrate(CCTK_ARGUMENTS) {
...
CCTK_ReduceArray(cctkGH,-1, op_sum, nradii,
CCTK_VARIABLE_REAL, rho_total_shell, 1/*num_dims*/,
1/*num_in_arrays*/, CCTK_VARIALBE_REAL, nradii,
rho_in_shell);
}
Once intergrate ran then on all processors rho_total_shell will
contain the sums of rho_in_shell (one sum per radius).
> if i write a new function, will it have access to all the instances
> every processor creates?
I don't understand. Any scheduled function always only has access to
processor local data (since you cannot access remote memory using MPI).
> if i calculate the reduction inside the "processor-local" function,
> will it work? because the function is global loop-local and i will
> need a loop to perform the integration on every shell i specify..
Do you mean loop-local function? You cannot call the reduction inside
of the loop-local routine. It will most likely cause an MPI hang.
Instead you have to schedule a separate GLOBAL (no loop-local) routine
to call do the reduction.
> i tried to manually change modes using the carpet c++ macros, but
> that has led to segmentation faults only so far...
>
> any idea how i could do that?
The thorn LSUThorns Refluxing does that (in its correct.cc file as far
as I remember). I'd check there. Otherwise Erik has at times explained
how this is done. Most recently here:
http://lists.einsteintoolkit.org/pipermail/users/2013-May/003004.html
Yours,
Roland
- --
My email is as private as my paper mail. I therefore support encrypting
and signing email messages. Get my PGP key from http://keys.gnupg.net.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.15 (GNU/Linux)
Comment: Using GnuPG with Icedove - http://www.enigmail.net/
iEYEARECAAYFAlKNUmQACgkQTiFSTN7SboWl2gCgvtMRxvrPty5vBRNF2FhsLc3Z
yAkAoKaEw0CXyE+JggAcimffPswgRGZi
=O+Ks
-----END PGP SIGNATURE-----
More information about the Users
mailing list