Giter Club home page Giter Club logo

phiprof's People

Contributors

galfthan avatar iljah avatar kstppd avatar lkotipal avatar markusbattarbee avatar ursg avatar ykempf avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

phiprof's Issues

Work units

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.

Makefile support for compiler wrappers

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.

Add possibility to append to previous timing

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

Remove asserts as they cause compiler warnings on some compilers, and are not part of the focus of this library

Add support for multiple platforms & compilers

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.

Fortran interface

Add fortran interface through c interface

  • Implement interface
  • Add example using interface
  • Document interface

Add user documentation

  • A small manual written in Markdown in a separate folder
  • Document c interface
  • Document fortran interface

Output formats suppressed after first write

I have observed this several times on various platforms, today on HazelHen.

  1. I set export PHIPROF_PRINTS=full,detailed in the job script.
  2. At the first phiprof output I get both sets of data.
  3. Subsequent writeouts only include 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).

Wrong license in some files

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.

Crash in print in MPI_Reduce, Cray XC30/40

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

Negative min time for other timer after timers in threaded region

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    |           |             |                 | 

Add env variable to modify print output

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.