FAQ
***


Can the GUI in AMS2020 read older inputs (.adf) and results (.t21, .*kf)?
=========================================================================

The GUI will try to convert old .adf files to new .ams files as best
as it can.

We attempt to keep the 2020 GUI version as much backwards compatible
as possible for visualizing results such as spectra, orbitals, band
structures, trajectories etc. from older .t21 and .*kf files.

Please let us know at support@scm.com with your old input / result
files if it doesn’t work for you.


Which hardware should I get?
============================

In general, the best hardware will be: the latest generation of
processors, 4GB RAM per core and an SSD. See also the summary of a
hardware FAQ session from October 2020. For the latest information,
see this installation manual.

Based on your budget, an older processor, 2GB of RAM per core and a
standard hard drive may also be sufficient for running ADF jobs. Since
floating-point performance is crucial for ADF, we do not recommend to
use hyperthreading or use all Opteron logical cores (i.e. run one
process per floating point unit). Note that since chips are
continuously improved, specific recommendations may change. As of
mid-2017, these configurations should give the best performance for
ADF:

**Desktop or laptop**: an Intel i7 processor from the latest
generation, 16GB of RAM or more, and an SSD (a fusion drive may also
work).

**High-end workstation or a cluster**: a dual-CPU Xeon SP setup with
at least 2GB, but better 4GB, of RAM per core and an SSD. Using an SSD
becomes more essential as the number of cores per node increases. For
calculations on multiple nodes, get a fast interconnect (Infiniband).

**Update mid-2019:** Rome, the latest Zen 2 AMD architecture (Epyc,
3rd generation Ryzen), give very good performance for ADF. 4GB RAM per
core and SSD are still recommended. Make sure you download the Linux
binaries optimized for AMD Zen.

Similar requirements should hold for BAND (maybe you can benefit from
even more disk space) and ReaxFF (less memory intensive than ADF).


I receive this error on my Apple Silicon mac: Illegal Instruction 4
===================================================================

"Illegal Instruction: 4" indicates an illegal CPU instruction. You
have probably installed the wrong architecture version of AMS.

The x86_64 intel version of AMS should not be used on Apple Silicon
machines (M1, M2, M3), which have arm64 architecture. For macOS users
we provide a native version for arm64 architectures that is much
faster and should not produce such errors.

Please take the following steps to ensure proper functioning of AMS:

* Delete the old x86 Application (drag it to the bin).

* Delete the folder "/Users/username/Library/Application Support/SCM"
  which may contain x86 packages from the old installation.

* Install the version labeled Apple Silicon from our downloads page.


I can not open the ADF / AMS app on MacOS Catalina
==================================================

If you open AMS for the first time from your applications, you’ll see
a notice “AMS20xx.xxx” can’t be opened because Apple cannot check it
for malicious software. To fix this:

* In the Finder on your Mac, locate the app you want to open.

* Control-click the app icon, then choose Open from the shortcut menu.

* Click Open.

The app is saved as an exception, and you can open it in the future by
double-clicking it or from your Applications on the Dock.


I only have OpenGL 1.x on my computer. Can I still use AMS?
===========================================================

Yes! From on AMS2019.304 you can use software rendering instead. To
activate the software rendering, type the following command in your
command line before starting the GUI:

   export SCM_OPENGL_SOFTWARE=1

To make this permanent, just add it to your $HOME/.bashrc file.

Note: This option replaces the former

   export SCM_OPENGL1_FALLBACK=1

Users with older versions can still make use of the old – less
efficient – OpenGL 1.4 fallback option, as described for AMS2019/18 or
ADF2017.

Please contact support@scm.com if none of the above solves the issue.


I have memory issues with my batch system: how do ADF and BAND handle shared memory?
====================================================================================

Most programs in AMS are MPI-enabled and will use both private and
shared memory.

For clusters with a job scheduler, it may be useful to look into how
the batch system handles shared memory. The scheduler could think that
the shared memory allocated by ADF or BAND is used per core, resulting
in severely overestimated memory usage.

For the SLURM scheduler the system administrator should set
JobAcctGatherParams=UsePss so that the shared memory is treated
properly. For PBS or Torque schedulers, you should have your system
administrator look into this and discuss with support@scm.com the best
solution.


My ADF inputs and scripts no longer work with AMS2018? And AMS2020?
===================================================================

In AMS2020 a major overhaul of the input for ADF has been made,
unifying inputs more strongly across modules in the suite.

With the restructuring of our code base and introduction of the AMS
driver we have rewritten the input handling to improve cross-engine
compatibility.

In most cases, the GUI will have backwards compatibility. And so will
amsprep and amsreport scripting tools. However, if you use command
line input files and home-grown scripts, you will find that
unfortunately these will no longer work with our 2018 version.


How can I script with python or use command line tools on Windows or MacOS?
===========================================================================

Starting with AMS2018, just click help -> Command-line (Windows) or
Terminal (MacOS) in any GUI window to start a terminal with all the
environment variables set properly.

**2017 and earlier versions** On Windows, use the adf_command_line.bat
tool to open up a command line with the ADF environment set up. You
can use ‘sh’ to run a shell command or by itself to open a rudimentary
shell.

On a Mac open a terminal and type a dot. Then open a GUI and go to
Help: Show AMSHOME in Finder in the menu, drag that to the terminal
and press enter (see also video).


Will the integrated GUI work as an interface to all my SCM products?
====================================================================

Yes, the integrated GUI works with all our software as well as with
MOPAC and Quantum ESPRESSO for which also provide binaries.


I can’t see special characters in the GUI?
==========================================

The GUI used unicode characters in many places. For example, the
proper characters for Angstrom, degrees Celsius, and many more. You
can see examples by starting AMSinput, selecting a Geometry
Optimization, and then going to the details page (by clicking the …
button). There you should see a couple of Angstrom symbols if
everything is working as intended.

On most machines this will just work out of the box. If not, the issue
might be that the default font on the machine does not support such
characters. Try installing a font line DejaVU Sans and Monospace
DejaVu. On CentOS you can do this (as root) with the command:

   yum install dejavu-sans-fonts dejavu-sans-mono-fonts dejavu-serif-fonts


Do I need the source code for the Amsterdam Modeling Suite?
===========================================================

No, usually you don’t need the source code. We collaborate with all
major hardware vendors to port and optimize our code on the most
popular platforms. The binaries work out-of-the-box in parallel with
fast interconnects through included MPI libraries or with the native
parallel libraries (MPT, POE). The binaries are also shipped with
linked-in mkl libraries, and are thoroughly tested against a test set
before they are released. Should the latest binary for your system not
be available, we are happy to help you port it to your platform. If
you are an experienced system administrator you can also compile AMS
yourself e.g. on an unusual supercomputing platform. In this case we
do not charge you for using the source code.

Only when you want to modify the source code to use non-standard
options and features do you need to purchase the source code. Changes
in the compiler flags, which have been carefully optimized for
performance and robustness, are not recommended and the use of
different compiler flags is at your own risk.

Scientists interested in further developing the Amsterdam Modeling
Suite should e-mail (info@scm.com)  us to discuss a possible
collaboration with SCM, including a discounted (source code) license.


What level of support can I expect?
===================================

Customers recommend us for the level of support and expertise of our
staff. At SCM, the people developing the code are the people giving
technical support.

This includes all technical aspects related to installation and bugs,
and we sometimes also give some more scientifically oriented help. The
latter is done only at SCM’s discretion and is not included in the
official standard support.

While we sometimes like to help inexperienced users to get started, we
do expect researchers to get a grasp of the theoretical methods and
relevant literature. You could also reach out to the scientific
community through our ADF mailing list and other channels.

We cannot guarantee to fix a particular problem or answer any
question, but we will do our best to help you!


Should I use SMT/hyperthreading or only physical cores? What about E and P cores?
=================================================================================

Hyperthreading does not speed up your ADF (or BAND, DFTB, ReaxFF)
calculations, so it is not recommended to enforce this (by using a
license for more cores and setting **NSCM** to double the number of
physical cores). For licensing purposes, we only count physical cores.
So, for instance, a hexa core machine with hyperthreading counts as
six cores.

Similarly, starting from AMS2023 we do not count the E-cores for
processors that use the big.LITTLE architecture where fast P cores are
combined with slow but energy-efficient E cores. For such processors
only the physical P cores are counted.

The Bulldozer-family of AMD architectures (Bulldozer, Piledriver,
Steamroller) have only one floating point unit per two cores (module).
It is thus recommended to run ADF only on half of the cores on these
machines, and we try to license these machines accordingly.

For the AMD Zen generation CPUs (Ryzen/Threadripper/Epyc) ADF should
run on all physical cores (without SMT). Starting with AMS2019 special
Zen-optimized binaries are available that have been optimized for this
CPU architecture.


How can I limit the number of processors or CPU cores used by AMS or one of the modules?
========================================================================================

By default the Amsterdam Modeling Suite and its engines try to use all
physical cores. So no hyperthreading and half of the cores of the some
AMD architectures. To change this behavior, you need to set the
**NSCM** variable, either in the environment, in your submit script,
or in the queue definition in AMSjobs.

E.g. running from the command line on Linux:

   export NSCM=4

will make ADF and other modules use 4 cores even if there are 2 or 8
physical cores.

Likewise in AMSJobs you can change your sequential queue **Queue =>
Edit => Sequential**. Enter the desired number of cores in the
**‘Default Options:’** field. Since this is the default queue so if
you run a job without specifying a queue or modifying the default
field in AMSJobs, it will use your indicated number of cores.

[image]


What does MPI Application rank … exited before MPI_Finalize() with status … mean?
=================================================================================

MPI Application rank … exited before MPI_Finalize() with status … is
an error that could have occurred for several reasons. Please contact
support@scm.com with:

* input (.run), output (.out), logfile (.log, error (.err) for your
  job

* your operating system (Windows 32/64 bit, Linux (distribution),
  MacOS (version))

* which version of AMS you downloaded


How do I run and monitor remote jobs remotely?
==============================================

It is easy to have your local GUI to set up and monitor jobs as well
as visualize results, while submitting jobs to remote queues.

A video shows how to set up remote queues on Windows.

There are some conditions that must be fulfilled however. The main
condition is that you must be able to log on to the remote computer
using ssh (or, on Windows, plink.exe) **without being asked for any
passwords or confirmations**. The common way for this is using public
key authentication and the ssh-agent. Detailed instructions for
Windows users are available in the Readme.rtf document and in its PDF
version DocInstallation_windows.pdf (both in the AMS installation
folder). Unix/Linux users probably already know how to do this. The
other condition is: AMS must be installed on the remote machine and
the commands that set up relevant environment variables must be
present in the shell profile file, for example ~/.profile.

Suppose you are able to log on to the remote machine and suppose the
machine is called cluster.example.com, and your login there is myname
(of course you will use real values instead of these). The machine is
a login node of a cluster and PBS is the batch system used on the
cluster. Our experience shows that this is a very common configuration
among AMS users. Now we need to configure a new queue in AMSjobs.
Let’s call the queue cluster_PBS. Use the menu command
**Queue->New…->PBS**. The template already supplies some default
values but you may want to change them depending on the cluster
policies.

First the easy parts: type cluster_PBS in the Queue Name field,
cluster.example.com for Remote host, myname for Remote user. The
Remote job directory specifies a directory on the cluster where
AMSjobs will place job files.

The Run command is probably what you will want to think about more
thoroughly. In the template it contains

   qsub -lnodes=2:ppn=2:infiniband -lwalltime=$options “$job”

You may have to change everything between qsub and “$job” on the line
depending on how PBS is configured on the cluster. This will also
determine the value for the Default Options entry.

In the template, the wall clock time is configurable per job but you
may decide that it is better to have the number of nodes as an option.
In this case the Run command will look as:

   qsub -lnodes=$options:ppn=2:infiniband -lwalltime=100:00:00 “$job”

Of course you can add there other qsub command line switches that you
would normally put in the script after #QSUB. So if you choose to
“hard-code” the number of nodes and leave walltime configurable then
you may want to name the queue something like cluster_PBS_2nodes. If
you choose to hard-code the walltime and leave the number of nodes
configurable then you may want to name the queue cluster_PBS_100hr or
something like that so that you can distinguish it from other similar
queues that differ from this one by the hard-coded value.

After you’ve finished configuring the queue, press Save and test that
you can see the status of the queue by selecting menu Queue->Status.
This will query the status for each queue defined in AMSjobs by
running the command specified in the System status command field
(remotely if necessary). If you do not get the queue status but
something like “Connection refused” or “No more authentication methods
left” then check the ssh connection to the remote computer.

Finally test your queue by running a Test job.

If everything works as you like, you may consider setting your new
queue as the Default Queue in AMSjobs. Then using the Run command in
AMSinput or in AMSjobs will automatically assign this new queue to
your job, and run the job on the remote machine.


I get a ‘libGL error’ mentioning ‘libstdc++’ in AMS2021 or older
================================================================

This is error is caused by the GUI trying to use the packaged
libstdc++, which is older and incompatible with your system libstdc++
needed for your graphics drivers.

The solution is to move the packaged libstdc++. This is done with:

   mkdir $AMSBIN/libold
   mv $AMSBIN/lib/libstdc++* $AMSBIN/libold/

From AMS2022 onwards this issue is solved with a dependency checker.
