[gmx-users] is NOASSEMBLYLOOPS broken?

Mark Abraham Mark.Abraham at anu.edu.au
Sat Jul 21 05:47:55 CEST 2012


On 20/07/2012 11:32 PM, francesco oteri wrote:
> Dear gromacs users (and eventually developers too),
> I am trying to debug gromacs and on the gromacs website
> http://www.gromacs.org/Developer_Zone/Programming_Guide/Programmer's_Guide#local_index
>
> It is stated:
>
> "gromacs can be forced to use non assembly routines to do force
> calculations (easier to debug) by defining "NOASSEMBLYLOOPS=1" as
> environment variable (e.g. put "export NOASSEMBLYLOOPS=1" without the
> quotes in your /etc/profile)"
>
> I tried to use this approach, but it doesn't work since gdb goes
> inside the assembly loop.
>
> Moreover, in order to check spelling errors I got each getenv call:
>
> grep -R getenv  `find -name *.c`

You can also search git history with commands like

git log -p -SNOASSEMBLYLOOPS

>
>
> ./src/kernel/fflibutil.c:        lib = getenv("GMXLIB");
> ./src/kernel/runner.c:        if ((env = getenv("GMX_MAX_THREADS")) != NULL)
> ./src/kernel/runner.c:
> getenv("GMXGHAT"),inputrec, (Flags & MD_REPRODUCIBLE));
> ./src/kernel/readir.c:  if (getenv("GALACTIC_DYNAMICS") == NULL) {
> ./src/kernel/pdb2gmx.c:    bFFRTPTERRNM =
> (getenv("GMX_NO_FFRTP_TER_RENAME") == NULL);
> ./src/kernel/do_gct.c:    if ((buf = getenv("DISTGCT")) == NULL)
> ./src/kernel/md.c:        if (getenv("GMX_FORCE_UPDATE"))
> ./src/ngmx/logo.c:  if ((newcol=getenv("LOGO"))!=NULL)
> ./src/ngmx/x11.c:  fontname=getenv("GMXFONT");
> ./src/ngmx/x11.c:  display=getenv("DISPLAY");
> ./src/contrib/do_multiprot.c:    if ((mptr=getenv("MULTIPROT")) == NULL) {
> ./src/contrib/do_shift.c:  if ((dptr=getenv("TOTAL")) == NULL)
> ./src/gmxlib/tpxio.c:            env = getenv("GMX_NOCHARGEGROUPS");
> ./src/gmxlib/checkpoint.c:        if
> (getenv(GMX_IGNORE_FSYNC_FAILURE_ENV)==NULL)
> ./src/gmxlib/checkpoint.c:            if
> (getenv("GMX_ALLOW_CPT_MISMATCH") == NULL)
> ./src/gmxlib/statutil.c:        select = getenv("GMXTIMEUNIT");
> ./src/gmxlib/statutil.c:    select = getenv("GMX_VIEW_XVG");
> ./src/gmxlib/statutil.c:    envstr = getenv("GMXNPRIALL");
> ./src/gmxlib/statutil.c:        envstr = getenv("GMXNPRI");
> ./src/gmxlib/mtop_util.c:    env = getenv("GMX_MAXRESRENUM");
> ./src/gmxlib/disre.c:    ptr = getenv("GMX_DISRE_ENSEMBLE_SIZE");
> ./src/gmxlib/viewit.c:    if (getenv("DISPLAY") == NULL) {
> ./src/gmxlib/viewit.c:	if ( ! (cmd=getenv(env)) ) {
> ./src/gmxlib/viewit.c:	  if ( getenv("XMGR") )
> ./src/gmxlib/viewit.c:	if ( ! (cmd=getenv(env)) )
> ./src/gmxlib/enxio.c:    if (getenv("GMX_ENX_NO_FATAL") != NULL)
> ./src/gmxlib/main.c:    if (getenv(GMX_CHECK_MPI_ENV) == NULL)
> ./src/gmxlib/network.c:  if (getenv("GMX_NO_NODECOMM") == NULL) {
> ./src/gmxlib/gmx_fatal.c:        if ((temp=getenv("WHERE")) != NULL)
> ./src/gmxlib/futil.c:        env = getenv("GMX_MAXBACKUP");
> ./src/gmxlib/futil.c:        if (bUnbuffered ||
> ((bufsize=getenv("LOG_BUFS")) != NULL)) {
> ./src/gmxlib/futil.c:            if (!found && (s=getenv("PATH")) != NULL)
> ./src/gmxlib/futil.c:    lib=getenv("GMXLIB");
> ./src/gmxlib/copyrite.c:  return (getenv("GMX_NO_QUOTES") == NULL);
> ./src/gmxlib/vmdio.c:    pathenv = getenv("VMD_PLUGIN_PATH");
> ./src/gmxlib/txtdump.c:  if (getenv("LONGFORMAT") != NULL)
> ./src/gmxlib/sighandler.c:    if (getenv("GMX_NO_TERM") == NULL)
> ./src/gmxlib/sighandler.c:    if (getenv("GMX_NO_INT") == NULL)
> ./src/gmxlib/sighandler.c:    if (getenv("GMX_NO_USR1") == NULL)
> ./src/gmxlib/nonbonded/nonbonded.c:
> if(getenv("GMX_NOOPTIMIZEDKERNELS") != NULL)
> ./src/mdlib/shellfc.c:  shfc->bPredict   = (getenv("GMX_NOPREDICT") == NULL);
> ./src/mdlib/shellfc.c:    shfc->bForceInit = (getenv("GMX_FORCEINIT") != NULL);
> ./src/mdlib/qm_orca.c: buf = getenv("BASENAME");
> ./src/mdlib/qm_orca.c: buf = getenv("ORCA_PATH");
> ./src/mdlib/ns.c:   fr->ns.bCGlist = (getenv("GMX_NBLISTCG") != 0);
> ./src/mdlib/ns.c:        char *ptr=getenv("GMX_DUMP_NL");
> ./src/mdlib/tpi.c:    ptr = getenv("GMX_TPIC_MASSES");
> ./src/mdlib/tpi.c:  dump_pdb = getenv("GMX_TPI_DUMP");
> ./src/mdlib/forcerec.c:    if (getenv("GMX_NO_SOLV_OPT"))
> ./src/mdlib/forcerec.c:         getenv("GMX_NO_ALLVSALL") == NULL
> ./src/mdlib/forcerec.c:    env = getenv("GMX_SCSIGMA_MIN");
> ./src/mdlib/forcerec.c:    if (getenv("GMX_NB_GENERIC") != NULL)
> ./src/mdlib/forcerec.c:    fr->UseOptimizedKernels =
> (getenv("GMX_NOOPTIMIZEDKERNELS") == NULL);
> ./src/mdlib/forcerec.c:    if (getenv("GMX_FORCE_TABLES"))
> ./src/mdlib/qm_gaussian.c:    buf = getenv("NCPUS");
> ./src/mdlib/qm_gaussian.c:    buf = getenv("MEM");
> ./src/mdlib/qm_gaussian.c:    buf = getenv("ACC");
> ./src/mdlib/qm_gaussian.c:    buf = getenv("CPMCSCF");
> ./src/mdlib/qm_gaussian.c:    buf = getenv("SASTEP");
> ./src/mdlib/qm_gaussian.c:    buf = getenv("GAUSS_DIR");
> ./src/mdlib/qm_gaussian.c:    buf = getenv("GAUSS_EXE");
> ./src/mdlib/qm_gaussian.c:    buf = getenv("DEVEL_DIR");
> ./src/mdlib/qm_gaussian.c:   * environment using getenv().
> ./src/mdlib/qm_gaussian.c:    buf = getenv("STATE");
> ./src/mdlib/constr.c:  char *env=getenv("GMX_SUPPRESS_DUMP");
> ./src/mdlib/constr.c:    env = getenv("GMX_MAXCONSTRWARN");
> ./src/mdlib/gmx_wallcycle.c:    if (PAR(cr) &&
> getenv("GMX_CYCLE_BARRIER") != NULL)
> ./src/mdlib/gmx_wallcycle.c:    if (getenv("GMX_CYCLE_ALL") != NULL)
> ./src/mdlib/nsgrid.c:    ptr = getenv("GMX_NSCELL_NCG");
> ./src/mdlib/mdebin.c:        md->bConstrVir =
> (getenv("GMX_CONSTRAINTVIR") != NULL);
> ./src/mdlib/mdebin.c:            md->bEner[i] =  (EI_DYNAMICS(ir->eI)
> && getenv("GMX_VIRIAL_TEMPERATURE"));
> ./src/mdlib/mdebin.c:    bNoseHoover =
> (getenv("GMX_NOSEHOOVER_CHAINS") != NULL); /* whether to print
> Nose-Hoover chains */
> ./src/mdlib/mdebin.c:        bNoseHoover =
> (getenv("GMX_NOSEHOOVER_CHAINS") != NULL);
> ./src/mdlib/pull.c:    if (getenv("GMX_NO_PULLVIR") != NULL)
> ./src/mdlib/partdec.c:  cap_env = getenv("GMX_CAPACITY");
> ./src/mdlib/domdec.c:    CartReorder = (getenv("GMX_NO_CART_REORDER") == NULL);
> ./src/mdlib/domdec.c:    val = getenv(env_var);
> ./src/mdlib/domdec.c:    if (getenv("GMX_DD_ORDER_ZYX") != NULL)
> ./src/mdlib/domdec.c:            getenv("GMX_PMEONEDD") == NULL)
> ./src/tools/gmx_tune_pme.c:        if ( (cp = getenv("MPIRUN")) != NULL)
> ./src/tools/gmx_tune_pme.c:    if ( (cp = getenv("MDRUN" )) != NULL )
> ./src/tools/gmx_eneconv.c:  if ((getenv("VERBOSE")) != NULL)
> ./src/tools/do_dssp.c:  if ((dptr=getenv("DSSP")) == NULL)
> ./src/tools/gmx_cluster.c:  if (getenv("TESTMC")) {
> ./src/tools/gmx_dipoles.c:    if ((ptr = getenv("GKRWIDTH")) != NULL) {
> ./src/tools/gmx_membed.c:        if (getenv("GMX_FORCE_UPDATE"))
> ./src/tools/gmx_membed.c:
> getenv("GMXGHAT"),inputrec, (Flags & MD_REPRODUCIBLE));
> ./src/tools/gmx_energy.c:  if ((getenv("VERBOSE")) != NULL)
> ./src/tools/gmx_energy.c:  if ((getenv("VERBOSE")) != NULL)
> ./src/tools/gmx_wham.c:        if(!(Path=getenv("GMX_PATH_GZIP")))
>
> Interestingly, NOASSEMBLYLOOPS it is never checkd but the variable
> GMX_NOOPTIMIZEDKERNELS seems to have the same meaning.
> Is this an undocumented changement?

Yes. It was changed 3.5 years ago in commit 6670f492. I expect nobody 
maintains that guide, but it was a welcome community contribution at the 
time.

>
> What about the documentation of the internal environment variable in
> gromacs discussed in
> http://lists.gromacs.org/pipermail/gmx-developers/2012-March/005714.html
> ?

It hasn't happened yet. People are too busy writing the code :-( I 
opened http://redmine.gromacs.org/issues/974 so we don't forget about it.

Mark



More information about the gromacs.org_gmx-users mailing list