Tinker ====== .. toctree:: :maxdepth: 1 :caption: Contents: Versions avaiable ----------------- Supported versions .................. .. note:: The versions of `Tinker`_ installed in the software repository are built and supported by the Discoverer HPC team. To check which `Tinker`_ versions and build types are currently supported on Discoverer, execute on the login node: .. code-block:: bash module avail tinker .. important:: Tinker supports SMP (Shared-Memory and Network-Based Parallelism). MPI is not supported there by design. User-supported versions ....................... Users are welcome to bring or compile, and use their own builds of Tinker, but **those builds will not be supported by the Discoverer HPC team.** In case their intentions are to compile Tinker by themselves, they might download and modify the build recipes developed by the Discoverer HPC support team: https://gitlab.discoverer.bg/vkolev/recipes/-/tree/main/tinker/ Running simulations ------------------- Running simulations means invoking any of the installed Tinker tools for input files processing. .. warning:: **You MUST NOT execute simulation directly upon the login node (login.discoverer.bg/login.bg.discoverer.bg).** You have to run your simulations as Slurm jobs only. .. warning:: Write your trajectories and result of analysis only inside your :doc:`scratchfolder` and DO NOT use for that purpose (under any circumstances) your :doc:`homefolder`! The following Tinker tools are available as executable files in the software repository of Discoverer HPC: .. code-block:: bash alchemy analyze anneal archive bar correlate critical crystal diffuse distgeom document dynamic freefix gda intedit intxyz minimize minirot minrigid mol2xyz molxyz monte newton newtrot nucleic optimize optirot optrigid path pdbxyz polarize poledit potential prmedit protein pss pssrigid pssrot radial saddle scan sniffer spacefill spectrum superpose testgrad testhess testpair testpol testrot testvir timer timerot torsfit valence vibbig vibrate vibrot xtalfit xtalmin xyzedit xyzint xyzmol2 xyzpdb To run any of the Tinker tools as a Slurm job, use the following batch script template: .. code:: bash #!/bin/bash #SBATCH --partition=cn # Partition name ## Ask Discoverer HPC support team nodes on which ## partition to employ for your productive runs #SBATCH --job-name=tinker # Job Name #SBATCH --time=06:00:00 # WallTime #SBATCH --nodes 1 # Number of nodes to use #SBATCH --cpus-per-task 32 # Number of OpenMP threads #SBATCH --ntasks-per-node 1 # Number of Tinker processes per compute node (must be 1) #SBATCH -o slurm.%j.out # STDOUT #SBATCH -e slurm.%j.err # STDERR module purge module load tinker/8/latest-nvidia export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK} export OMP_PLACES=cores export OMP_PROC_BIND=spread cd $SLURM_SUBMIT_DIR tinker_tool_name input_file Specify the parameters and resources required for successfully running and completing the job: - Slurm partition of compute nodes, based on your project resource reservation (``--partition``) - job name, under which the job will be seen in the queue (``--job-name``) - wall time for running the job (``--time``) - number of occupied compute nodes have to be 1 per job (``--nodes 1``) - number of Tinker tool processes per node have to be 1 per job(``--ntasks-per-node 1``) - number of threads (threads) per process (``--cpus-per-task``) - version of Tinker to run, after ``module load`` (see `Supported versions`_) Save the complete Slurm job description as a file, for example ``/discofs/$USER/run_namd/run_tinker.batch``, and submit it to the queue afterwards: .. code:: bash cd /discofs/$USER/run_tinker sbatch run_tinker.batch Upon successful submission, the standard output will be directed by Slurm into the file ``/discofs/$USER/run_tinker/slurm.%j.out`` (where ``%j`` stands for the Slurm job ID), while the standard error output will be stored in ``/discofs/$USER/run_tinker/slurm.%j.err``. .. important:: Always try to estimate the effective rank of the SMP parallelization based on a short running test, before running the productive simulation. Be aware that employing more than 32 OpenMP threads per job might not contribute to the speed of execution. Running benchmarks .................. Discoverer HPC offers the possibility to execute any of the benchmarks originally shipped with the source code distribution of Tinker. Below is an example of how to run the benchmarks. Create a directory under your :doc:`scratchfolder`: .. code:: bash mkdir /discofs/$USER/tinker and copy there both force field and benchmark input data folders: .. code:: bash cp -pr /opt/software/tinker/8/8.10.2-nvidia/params /discofs/$USER/tinker cp -pr /opt/software/tinker/8/8.10.2-nvidia/bench /discofs/$USER/tinker Format the content of the benchmark scripts (those files with extension .run) inder ``bench`` folder: .. code:: bash cd /discofs/$USER/tinker/bench sed -i 's/..\/bin\///g' *.run Compose a Slurm batch script file and place it under ``/discofs/$USER/tinker/bench/`` folder. For instance, this is the content of the batch that runs the benchmark script ``bench9.run``: .. code:: bash #!/bin/bash #SBATCH --partition=cn # Partition name ## Ask Discoverer HPC support team nodes on which ## partition to employ for your productive runs #SBATCH --job-name=tinker # Job Name #SBATCH --time=06:00:00 # WallTime #SBATCH --nodes 1 # Number of nodes to use #SBATCH --cpus-per-task 32 # Number of OpenMP threads #SBATCH --ntasks-per-node 1 # Number of Tinker processes per compute node (must be 1) #SBATCH -o slurm.bench9.out # STDOUT #SBATCH -e slurm.bench9.err # STDERR module purge module load tinker/8/latest-nvidia export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK} export OMP_PLACES=cores export OMP_PROC_BIND=spread cd $SLURM_SUBMIT_DIR bash bench9.run (you can replace ``bench9.run`` inside the batch with any of the other benchmark run scripts). Once stored in the file ``/discofs/$USER/tinker/bench/bench9.sbatch`` in could be submmitted as a job to the Slurm queue: .. code:: bash cd /discofs/$USER/tinker/bench/ sbatch bench9.sbatch Note that the benchmark job timing will be reported in ``/discofs/$USER/run_tinker/slurm.bench9.err`` upon completion. The standard output generated during the execution will be collected and stored as a stream in ``/discofs/$USER/run_tinker/slurm.bench9.out``. During the execution of the job you can follow the progress by tailing the standard output: .. code:: bash tail -f /discofs/$USER/tinker/bench/slurm.bench9.out Getting help ------------ See :doc:`help` .. _`Tinker`: https://dasher.wustl.edu/tinker/