#928: openmp parallelization within Exact broken
--------------------+-------------------------------------------------------
Reporter: knarf | Owner:
Type: defect | Status: new
Priority: major | Milestone: ET_2012_05
Component: Other | Version:
Keywords: |
--------------------+-------------------------------------------------------
Exact uses openmp for the loop over grid points. However, quite a few
metrics (which get called pointwise) use static (saved) data. In all cases
I have looked at this is only used to initialize some local variables with
values from Cactus parameters - and only as long as a 'global' variable
'firstcall' is true. This variable is set to 'false' after the other
variables had been initialized, which should be ok even when using
multiple threads. However, the compiler can switch the two (and does
according to the assembly output), leading to another thread 'seeing'
first_call being false, but the global variables not being initialized
yet.
The right solution would be to remove these variables. They are not really
necessary, because the Cactus parameters could directly be used. However,
that patch would be quite large.
A simple and quick workaround would be to remove the openmp
parallelization for that loop, at least for the upcoming release.
We have to do one of the two - or something else in case someone comes up
with another idea. This is currently breaking several testsuites
(sometimes).
In case you want to see an example: look at de_Sitter.F77 and
firstcall and arad.
Thoughts?
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/928>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
#902: carpetioascii with compact_format writes wrong set of columns
---------------------------+------------------------------------------------
Reporter: rhaas | Owner: eschnett
Type: defect | Status: new
Priority: minor | Milestone:
Component: Carpet | Version:
Keywords: carpetioascii |
---------------------------+------------------------------------------------
For 0d output (in my case systemstatistics data) I get:
{{{
# SYSTEMSTATISTICS::PROCESS_MEMORY_MB
(systemstatistics::process_memory_mb)
#
# column format: 1:it 2:ix 3:time 4:x 5:data
# data columns: 5:maxrss_mb 6:majflt_mb 7:arena_mb 8:ordblks_mb 9:hblks_mb
10:hblkhd_mb 11:uordblks_mb 12:fordblks_mb 13:keepcost_mb 14:swap_used_mb
3840 0 5.76 4956 23 628 0 0 651 -1189 1818 17 0
4096 0 6.144 5100 23 726 0 0 651 -1188 1915 21 0
}}}
Note that the headers claim 14 columns but counting them, there are only
13 columns. From the look of it the "x" column is absent (since 4956 makes
sense for being MB of memory used and 5.76 is clearly the time)
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/902>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
#946: Undefined symbol ___emutls_get_address
------------------------+---------------------------------------------------
Reporter: hinder | Owner: eschnett
Type: defect | Status: new
Priority: major | Milestone:
Component: SimFactory | Version:
Keywords: |
------------------------+---------------------------------------------------
When I try to compile on Mac OS using the SimFactory optionlist macos-
fink-gcc.cfg
(https://svn.cct.lsu.edu/repos/numrel/simfactory2/trunk/mdb/optionlists
/macos-fink-gcc.cfg), I get the following error at link time:
{{{
ld: warning: alignment lost in merging tentative definition
_tmunubaserest_
ld: warning: alignment lost in merging tentative definition
_admmacrosrest_
ld: warning: alignment lost in merging tentative definition
_staticconformalrest_
Undefined symbols:
"___emutls_get_address", referenced from:
__ZN4dist25collect_total_num_threadsEv.omp_fn.0 in
libthorn_CarpetLib.a(dist.cc.o)
dist::collect_total_num_threads() in
libthorn_CarpetLib.a(dist.cc.o)
Carpet::SetupGH(tFleshConfig*, int, _cGH*) in
libthorn_Carpet.a(SetupGH.cc.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[1]: *** [/Users/ian/Cactus/Kerrness/exe/cactus_sim] Error 1
make: *** [sim] Error 2
}}}
I don't know if the "alignment lost" warnings are related to the fatal
error. This seems to be some issue related to OpenMP. The problem
appeared fairly recently, as I have been able to compile older versions of
the ET with no problem, and this option list has not been changed.
I am reporting this against SimFactory because the problem does not happen
with other option lists in the machine database, but I suspect that the
issue arose due to a change in Carpet (maybe related to affinity?).
From some Google searching, this symbol is part of GCC's thread-local
storage emulation for Mac OS. Some people have had this problem when
mixing object files compiled by different versions of GCC. I am using GCC
4.4.4 from Fink:
{{{
> g++-4 --version
g++-4 (GCC) 4.4.4
}}}
This page, http://stackoverflow.com/questions/7885246/what-is-the-emutls-
get-address-symbol, says
{{{
Using thread local storage (e.g. OpenMP ThreadPrivate variables) on Darwin
requires manually linking to TLS emutls, via either -lgcc_s.so.1 or
-lgcc_eh
}}}
There is also a suggestion to upgrade the version of GCC, which I am
trying now.
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/946>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
#1054: Formaline can enter into an infinite loop if git-lock.pl cannot create its
lock directory
-------------------+--------------------------------------------------------
Reporter: rhaas | Type: defect
Status: new | Priority: minor
Milestone: | Component: EinsteinToolkit thorn
Version: | Keywords: Formaline
-------------------+--------------------------------------------------------
if for some reason the source base directory returned by git-get-
localdir.pl is not accessible (eg. since one has uses an invalid or empty
(simfactory) defs.local.ini) then the loop in line 35 of git-lock.pl:
{{{
32 my $waittime = 0.01;
33 my $maxwaittime = 10;
34 print "Attempting to obtain $lockdir cwd = ".getcwd()."
GIT_DIR=$git_dir\n";
35 while (! (mkdir $lockdir)) {
36 # Wait some time
37 my $unit = $waittime==1 ? "second" : "seconds";
38 print "Git repository is busy; waiting $waittime $unit...\n";
39 system "sleep '$waittime'";
40 # Back off exponentially
41 $waittime *= 2;
42 $waittime = 1 if $waittime>1 && $waittime<2;
43 $waittime = $maxwaittime if $waittime > $maxwaittime;
44 }
}}}
never quits and without SILENT=no the make system also does not output the
"Git repository busy" messages it seems.
Possible remedies would seem to either introduce a timeout after which
Formaline gives up and does not push into the source code repository (with
a loud warning at the end) or to ensure that the print statement's output
appears on screen.
It might also be useful to add an option to Formaline to not rely on
simfactory. Right now without simfactory it will fail at some later point
in the build process (since it cannot call simfactory/bin/sim whoami) or
might use the wrong local source path (if simfactory is downloaded but not
properly set up).
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/1054>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
#720: check at runtime that all REQUIREd and OPTIONAL thorns and capabilities are
active
-------------------------+--------------------------------------------------
Reporter: rhaas | Owner:
Type: enhancement | Status: new
Priority: minor | Milestone:
Component: Cactus | Version:
Keywords: |
-------------------------+--------------------------------------------------
This is an offshot of a discussion on the Cactus developers mailing list:
http://cactuscode.org/pipermail/developers/2011-November/006258.html
On 6 Jan 2012 12:54:13 -0500 eschnett said:
> What is currently missing is the mechanism that checks that all thorns
> providing required capabilities are activated. If they are not, code
> in inactive thorns is called -- this is fine as long as no Cactus
> infrastructure is used (parameters, scheduled routines, grid
> functions, etc.).
>
> Yes, we should implement the respective checks; yes, we should
> automatically activate thorns required for capabilities (and maybe
> some others as well?); yes, we should then output this thorn list to
> the screen (done anyway) and into a file.
>
> By the way, Cactus already determines which thorns need to be
> activated automatically as a service to the user in the error message
> that complains about missing thorns.
The idea seems to be to document all thorns whose code is executed in the
parameter file.
Ian's original need might be served by an "OPTIONAL" statement in
configuration.ccl
(http://einsteintoolkit.org/documentation/UsersGuide/UsersGuidech12.html#x17…)
and some #ifdefs, maybe.
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/720>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
#929: GRHydro_test_tov_ppm_ML fails intermittently
-----------------------------------+----------------------------------------
Reporter: hinder | Owner:
Type: defect | Status: new
Priority: major | Milestone:
Component: EinsteinToolkit thorn | Version:
Keywords: GRHydro |
-----------------------------------+----------------------------------------
The test GRHydro_test_tov_ppm_ML sometimes fails on Datura. This seems to
be nondeterministic. The most recent occurrence of this
(http://git.barrywardell.net/EinsteinToolkitTestResults.git/blob/0fed62edfcc…)
is due to differences in the constraints and vel[0]_norm1.xg very close to
the tolerance. This does not happen every time.
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/929>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
#988: testsuite can't find MPI when CACTUS_CONFIGS_DIR is set
---------------------+------------------------------------------------------
Reporter: sbrandt | Owner:
Type: defect | Status: new
Priority: minor | Milestone: Cactus_4.1.0
Component: Cactus | Version: development version
Keywords: |
---------------------+------------------------------------------------------
testsuite can't find MPI when CACTUS_CONFIGS_DIR is set, a patch
correcting this problem is attached
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/988>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
#1037: Update Fortran API for CCTK_LOOP macros
----------------------+-----------------------------------------------------
Reporter: eschnett | Owner:
Type: defect | Status: new
Priority: minor | Milestone:
Component: Cactus | Version:
Keywords: |
----------------------+-----------------------------------------------------
The enclosed patch updates the Fortran API to be equivalent to the C API.
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/1037>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
#1052: use grid::x,x,y in CarpetIOASCII for x,y,z columns
-------------------------+--------------------------------------------------
Reporter: rhaas | Owner: eschnett
Type: enhancement | Status: new
Priority: minor | Milestone:
Component: Carpet | Version:
Keywords: |
-------------------------+--------------------------------------------------
right now CarpetIOASCII computes the "local" coordinates from the lower
boundary coordinate of each patch and CCTK_DELTA_SPACE. This does not work
(as expected) for multipatch.
It would be good to add an option to use grid::x etc instead. Ideally as
both a parameter and an option in the '{}' to choose at runtime and per
variable what to do (eg. to keep the r coordinate around for spherical
patches).
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/1052>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
#762: support git-svn repositories
---------------------------+------------------------------------------------
Reporter: rhaas | Owner: eric9
Type: enhancement | Status: new
Priority: optional | Milestone:
Component: GetComponents | Version:
Keywords: |
---------------------------+------------------------------------------------
I have a number of svn repositories that are each wrapped within a git-svn
checkout (to more easily handle local modifications). It would be nice to
have GetComponents handle these for me in the same way it already handles
svn and git repositories.
With git-svn checkouts are {{{git svn clone URL DIR}}}, updates are {{{git
svn rebase}}}, diff is {{{git diff remotes/git-svn}}} and local changes
have to be stashed the way they are with git.
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/762>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit