Brains

1 Overview | 2 Using | 2.1 Multicore | 2.1.1 Observation | 2.2 Examples

Overview

  • Brains:

    • Brains: BLR Reverberation-mapping Analysis In AGNs with Nested Sampling: A package for dynamically modeling broad-line regions, analyzing reverberation-mapping and spectro-astrometric data, and measuring the central black hole mass in active galactic nuclei.

    • GitHub: Documentation

Using

Use the module name brains to discover versions available and to load the application.

Multicore

Since brains has been built with cdnest, which itself is built with openmpi, it can run across multiple tasks/nodes, but calls must be prefixed with srun, for example:

[@blog1 test02]$ salloc -A <project-name> -t 30:00 -N 2 --tasks-per-node=3 -c 1 # Note that the application is picking up the 6 requested tasks: (2 nodes x 3 tasks per node) [@m001 test02]$ export OMP_NUM_THREADS=1 [@m001 test02]$ srun brains param_con ========================BRAINS========================== Starts to run... 6 cores used. continuum data points: 125 con scale: 7.465401e-01 1.339513e+00 RM rcloud_min_max_set: 0.000000 1000000.000000 Tcon_min_max: -10.000000 10.000000 # Print parameter name in .//data/para_names_con.txt #======================================================= # Starting CDNest. # Use 6 cores. ...

Observation

We do not see the Use ? cores changing when the cpus-per-task is updated. This value appears to only be related to nodes multiplied by the tasks-per-node. This does make us question whether setting OMP_NUM_THREADS to be equal to cpus-per-task has any effect on the underlying computation. We would ask if any users know whether OpenMP is utilized within the code (it might be within the underlying library dependencies gsl and lapack) to let us know, and we will update this page accordingly.

Examples

As of 20221212, during testing, ARCC has noticed that the required structure for examples/data is slightly different than in the documentation and within the GitHub repository. We followed the following structure:

[@blog1 example]$ ls data param param_con param_line1d param_line2d param_sa param_sa1d param_sa2d param_sim1 param_sim2 [@blog1 example]$ ls data/ lcplot.py sim_broadening.txt sim_con.txt sim_line2d.txt sim_line.txt sim_sa.txt [@blog1 example]$ ls param OPTIONS1D OPTIONS2D OPTIONSCON OPTIONSSA OPTIONSSA1D OPTIONSSA2D OPTIONSSARM param # Update the path in your params file: [@blog1 example]$ vim param_con # From: FileDir /home/liyropt/Projects/GIT/BRAINS % directory for where all the output files are stored # To: FileDir ./ % directory for where all the output files are stored

Notice that the data and param folders are within example.