fmihpc / phiprof Goto Github PK
View Code? Open in Web Editor NEWParallel Hierarchical Profiler
License: GNU Lesser General Public License v3.0
Parallel Hierarchical Profiler
License: GNU Lesser General Public License v3.0
Only the work units reported by master process are taken into account when calculating the statistics (e.g. spatial cells / second in Vlasiator), and the units reported by other processes are ignored. This is awkward to use in practice because the master doesn't know how much other processes compute. So phiprof should ideally sum up the work units to master process for each label.
With modern tries to get automated build scripts working, we should guard against compiler wrappers (such as on Lumi) shadowing e.g. the compiler environment variable in the Makefile.
We can easily overflow the count as it is only 32 bit.
Currently two sets of calls to start+end with the same argument increase the number of calls when calculating calls/s. It would be nice if one could continue the timing of a section i.e. not increase the number of calls when calling start+stop. For example when updating remote neighbor data with dccrg using:
start("update");
start_remote_neighbor_copy_updates();
stop("update");
...
start("update");
wait_remote_neighbor_copy_update_receives();
stop("update");
...
start("update");
wait_remote_neighbor_copy_update_sends();
stop("update");
phiprof would behave as if remote data is updated only once each step. A boolean could be added as an argument to start+stop with default of not appending to previous timing.
Remove asserts as they cause compiler warnings on some compilers, and are not part of the focus of this library
To better show examples for compiling and using phiprof on different platforms we should separate platform specific settings to separate files, that are then included into the makefiles.
Add fortran interface through c interface
I have observed this several times on various platforms, today on HazelHen.
export PHIPROF_PRINTS=full,detailed
in the job script.full
, detailed
is absent.Last time I had/noticed this problem, it was with groups,compact,full
I think and after the first writing I only got groups (but I'm not 100% sure anymore, it may be documented in Flowdock).
phiprof.hpp has a GPLv3 license by misstake, should be LGPL. Both phiprof.ha nd phiprof.hpp also mention vlasiator. This needs to be checked in all files.
Earlier phiprof has been very stable, but already twice I have encountered the following error on larger production simulations on Cray XC30 and XC40 in the print phase:
Rank 314 [Tue Jan 20 11:07:29 2015] [c0-0c1s10n1] Fatal error in PMPI_Reduce: Message truncated, error stack:
PMPI_Reduce(1351).................: MPI_Reduce(sbuf=0x2aaaf0e55000, rbuf=0x2aaafa597000, count=251, MPI_DOUBLE, MPI_SUM, root=0, comm=0xc4000004) failed
MPIR_Reduce_impl(1157)............:
MPIR_Reduce_intra(951)............:
MPIR_Reduce_binomial(189).........:
MPIDI_CH3U_Receive_data_found(153): Message from rank 1 and tag 11 truncated; 2016 bytes received but buffer size is 2008
_pmiu_daemon(SIGCHLD): [NID 00105] [c0-0c1s10n1] [Tue Jan 20 11:07:29 2015] PE RANK 314 exit signal Aborted
[NID 00105] 2015-01-20 11:07:29 Apid 9586734: initiated application termination
Other timer after threaded timers is not computed correctly. It shows negative min times in report showing that too. For example:
All timers. Set of identical timers has 739 processes with up to 6 threads each.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| | Threads | Time (s) | Calls | Workunit-rate |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id | Lvl | Grp | Label | Avg | Avg | % | Max time,rank | Min time,rank | Avg | Total | Per process | Unit |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 84 | 7 | | compute-mapping-x | 1 | 84.87 | 8.894 | 143.2 | 359 | 42.88 | 50 | 93 | | | |
| 85 | 8 | | setup | 1 | 1.629 | 1.919 | 7.528 | 426 | 0.5385 | 658 | 93 | | | |
| 86 | 8 | | mapping | 6 | 73.25 | 86.31 | 128.9 | 359 | 36.85 | 50 | 78381 | | | |
| 88 | 9 | | computeSpatialTargetCellsForPencils | 6 | 11.5 | 15.69 | 24.21 | 359 | 6.046 | 96 | 78381 | | | |
| | 9 | | Other | 6 | 61.76 | 84.31 | 104.6 | 359 | 29.44 | 50 | 78381 | | | |
| 87 | 8 | | store | 6 | 9.309 | 10.97 | 14.56 | 375 | 4.414 | 96 | 78381 | | | |
| | 8 | | Other | 1 | 0.6778 | 0.7986 | 2.856 | 347 | -4.579 | 357 | 93 | | | |
Now print() prints out four different reports. An env variable(s) should be added, so that the user can at run-time change which reports are written out. A sensible default should of course also be defined, most likely groups and the condensed format.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.