HPC/Applications/q-chem: Difference between revisions
< HPC | Applications
Jump to navigation
Jump to search
m (→Parallel jobs) |
mNo edit summary |
||
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Parallel jobs == | == Parallel jobs == | ||
To run Q-Chem in parallel, [[load the module in your shell startup]], then use the <code>-pbs -np $PBS_NP</code> command line options in the PBS job script, as shown in: | To run Q-Chem in parallel, [[HPC/Module Setup | load the module in your shell startup]], then use the <code>-pbs -np $PBS_NP</code> command line options in the PBS job script, as shown in: | ||
$Q_CHEM_HOME/sample.job | $Q_CHEM_HOME/sample.job | ||
All setup is done by the modulefile - you do not need to source a qcenv script. | All setup is done by the modulefile - you do not need to source a qcenv script. | ||
Line 6: | Line 6: | ||
These will normally be cleaned up when the program exits correctly, but some files may need to be removed manually. | These will normally be cleaned up when the program exits correctly, but some files may need to be removed manually. | ||
<!-- | |||
== Capabilities Matrix == | == Capabilities Matrix == | ||
=== v4.1 === | |||
From Sec. 2.7.1 of the [http://www.q-chem.com/download/qc4101/doc/qchem_manual_4.1.pdf Q-Chem-4.1 manual]; entries in bold are new for v4.1: | |||
{| class="sortable" style="margin-left: 3em;" | |||
|- style="background: #eee;" | |||
! Method !! OpenMP !! MPI | |||
|- | |||
| HF energy & gradient || '''yes'''<sup>a</sup> || yes | |||
|- | |||
| DFT energy & gradient || '''yes'''<sup>a</sup> || yes | |||
|- | |||
| MP2 energy and gradient || yes<sup>b</sup> || yes | |||
|- | |||
| Integral transformation || '''yes''' || no | |||
|- | |||
| CCMAN & CCMAN2 methods || yes || no | |||
|- | |||
| ADC methods || yes || no | |||
|- | |||
| CIS || no || no | |||
|- | |||
| TDDFT || no || no | |||
|} | |||
<sup>a</sup> OpenMP parallelization in 4.1 is implemented for energy and gradient of HF and DFT (but GGA functional only) calculations.<br> | |||
<sup>b</sup> To invoke an experimental OpenMP RI-MP2 code (RHF energies only), use CORR=primp2. | |||
=== v4.0 === | |||
As of v4.0.1 there is limited support for OpenMP (multithreading), though not yet for hybrid OpenMP/MPI. | As of v4.0.1 there is limited support for OpenMP (multithreading), though not yet for hybrid OpenMP/MPI. | ||
{| class="sortable" style="margin-left: 3em;" | {| class="sortable" style="margin-left: 3em;" | ||
Line 30: | Line 57: | ||
<sup>a</sup> Experimental code in version 4.0.1.<br> | <sup>a</sup> Experimental code in version 4.0.1.<br> | ||
<sup>b</sup> To invoke an experimental OpenMP RI-MP2 code (RHF energies only), use CORR=primp2. | <sup>b</sup> To invoke an experimental OpenMP RI-MP2 code (RHF energies only), use CORR=primp2. | ||
== Using GPUs == | |||
RI-MP2 ("resolution of the identity") energies and gradients are implemented with GPU support; see Q-Chem manual, sec. 5.5.4. | |||
=== Options === | |||
; CUDA RI-MP2: Enables GPU implementation of RI-MP2 | |||
* TYPE: logical; DEFAULT: FALSE. | |||
* Q-Chem recommendation: Set to 1 to use GPU-enabled MGEMM. | |||
; USECUBLAS THRESH: Sets threshold of matrix size sent to GPU (smaller size not worth sending to GPU). | |||
* TYPE: INTEGER; DEFAULT: 250 | |||
* Q-Chem recommendation: Use the default value. Anything less can seriously hinder the GPU acceleration. | |||
; USE MGEMM: Use the mixed-precision matrix scheme (MGEMM) if you want to make calculations in your card in single-precision (or if you have a single-precision-only GPU), but leave some parts of the RI-MP2 calculation in double precision). | |||
* TYPE: INTEGER; DEFAULT: 0 (MGEMM disabled) | |||
* Carbon recommendation: leave at 0. | |||
; MGEMM THRESH: Sets MGEMM threshold to determine the separation between “large” and “small” matrix elements. A larger threshold value will result in a value closer to the single-precision result. Note that the desired factor should be multiplied by 10000 to ensure an integer value. | |||
* TYPE: INTEGER; DEFAULT: 10000 (corresponds to 1) | |||
* Q-Chem recommendation: For small molecules and basis sets up to triple-ζ, the default value suffices to not deviate too much from the double-precision values. Care should be taken to reduce this number for larger molecules and also larger basis-sets. | |||
==== Example ==== | |||
Q-Chem manual example 5.5: RI-MP2 double-precision calculation | |||
$comment | |||
RI-MP2 double-precision example | |||
$end | |||
$molecule | |||
0 1 | |||
c | |||
h1 c 1.089665 | |||
h2 c 1.089665 h1 109.47122063 | |||
h3 c 1.089665 h1 109.47122063 h2 120. | |||
h4 c 1.089665 h1 109.47122063 h2 -120. | |||
$end | |||
$rem | |||
jobtype sp | |||
exchange hf | |||
correlation '''rimp2''' | |||
basis cc-pvdz | |||
'''aux_basis rimp2-cc-pvdz''' | |||
'''cuda_rimp2 1''' | |||
$end | |||
--> |
Latest revision as of 21:38, April 9, 2024
Parallel jobs
To run Q-Chem in parallel, load the module in your shell startup, then use the -pbs -np $PBS_NP
command line options in the PBS job script, as shown in:
$Q_CHEM_HOME/sample.job
All setup is done by the modulefile - you do not need to source a qcenv script. During the run various temporary files appear in the workding directory. These will normally be cleaned up when the program exits correctly, but some files may need to be removed manually.