Timing, memory and profiling

qcd.barrier

qcd.barrier()                                     --> nothing

A QMP barrier. Every rank must reach it.

qcd.node

qcd.node()                                        --> number

The calling rank's number. The same value as os.node().

qcd.network

qcd.network()                                     --> nodes, kind [, dims]

The number of ranks in the job and the message-passing topology, as a string: "switch", "grid", "fattree" or "typeN". When a logical topology has been declared, a third result gives the shape of the rank grid as a list. L:network() gives the same shape for a particular lattice.

qcd.memory_usage

qcd.memory_usage()                                --> table

How many QDP objects of each kind are alive, keyed by type name. Only non-zero counts appear. The way to find a field leaked in a loop.

qcd.log_rusage

qcd.log_rusage([filename [, message]])            --> nothing

Appends a line with the timestamp, ru_maxrss and message to filename, or prints it when no file is named.

qcd.qprof_print

qcd.qprof_print()                                 --> nothing

Prints the internal profiler's accumulated counters, from the master node. Useful only in a build that has profiling compiled in.

qcd.version

A read-only table of component version strings: qlua, lua, qdp, aff, hdf5, clover, twisted, mdwf, extras, gsl, cblas, qopqdp, sfc, qa0, qmp, qla, qio, arpack, lapack and colors. Which keys are present depends on what the binary was built with, so a script that asks for one should expect nil.

qcd.Ns

The number of Dirac components the binary was built for — 4 in every shipped build. A number, not a function.