X-PSI was applied in the following contexts. These may be useful for rough performance benchmarking and planning of resource consumption.

If you used X-PSI for a project and have time to summarise it here, please contact the X-PSI team and/or submit pull-request on GitHub.

Riley et al. 2019 (ApJL, 887, L21)

Riley et al. (2019; hereafter R19) used v0.1 of X-PSI to model NICER observations of the rotation-powered millisecond X-ray pulsar J0030+0451.

See also the associated Zenodo repository.

Resource consumption

The calculations reported were performed on the Dutch national supercomputer Cartesius, mostly on the Broadwell nodes (i.e., using CPUs only, usually Broadwell architecture). A number of models were applied, with increasing complexity. Typically, ~1000+ cores were used for posterior sampling, when the parallelisation is weighted by time consumed. In total, the sampling problems in R19 required ~450,000 core hours.

Likelihood function settings

On compute nodes, the likelihood function evaluation times ranged from ~1 to ~3 seconds (single-threaded), depending on the model and point in parameter space.[1] The parallelisation was purely via MPI, with all but one process receiving likelihood function evaluation requests.

Resolution settings

  • number of surface cells/elements per hot (closed) region:[2] 24x24
  • number of phases (linearly spaced): 100
  • number of energies (logarithmically spaced): 175
  • number of rays (per parallel; linear in cosine of ray angle alpha):[3] 200

Interpolation settings

  • Steffen splines (GSL) were used everywhere apart from for the atmosphere
  • for the atmosphere cubic polynomial interpolants were used in four dimensions


Intel compiler collection,[4] with the CORE-AVX2 instruction set, for X-PSI and dependencies (apart from numpy, which was centrally installed).


[1]Variation between models on the same processor results from a combination of model complexity and resolution settings. Variation as a function of parameters also occurs due to issues like mesh construction on the surface subject to the resolution settings.
[2]This is the approximate number of cells that have centres lying within a hot region. For models where a hot region has two temperature components these cells are split between the subregions according to area only such that the surface density of cells is commensurate—at least for subregions that are commensurate in shape. The fast precomputation mode was deactivated but if it were activated the distribution of cells would further be weighted by the approximate total number of counts generated by each subregion.
[3]The rays were integrated for each likelihood function call instead of loading lookup tables from disk, or using an analytic treatment such as a high-order expansion (see, e.g., rayXpanda). Only primary images were included.
[4]On Cartesius (and Lisa), one can simply execute module load intel/2017b to access these compilers from the toolchain.