|
QUDA
v1.1.0
A library for QCD on GPUs
|
Fortran interface functions. More...
#include <quda_constants.h>Go to the source code of this file.
Functions | |
| void | init_quda_device_ (int *device) |
| void | init_quda_memory_ () |
| void | init_quda_ (int *device) |
| void | end_quda_ (void) |
| void | comm_set_gridsize_ (int *grid) |
| void | new_quda_gauge_param_ (QudaGaugeParam *param) |
| void | new_quda_invert_param_ (QudaInvertParam *param) |
| void | load_gauge_quda_ (void *h_gauge, QudaGaugeParam *param) |
| void | free_gauge_quda_ (void) |
| void | free_sloppy_gauge_quda_ (void) |
| void | load_clover_quda_ (void *h_clover, void *h_clovinv, QudaInvertParam *inv_param) |
| void | free_clover_quda_ (void) |
| void | dslash_quda_ (void *h_out, void *h_in, QudaInvertParam *inv_param, QudaParity *parity) |
| void | clover_quda_ (void *h_out, void *h_in, QudaInvertParam *inv_param, QudaParity *parity, int *inverse) |
| void | mat_quda_ (void *h_out, void *h_in, QudaInvertParam *inv_param) |
| void | mat_dag_mat_quda_ (void *h_out, void *h_in, QudaInvertParam *inv_param) |
| void | invert_quda_ (void *h_x, void *h_b, QudaInvertParam *param) |
| void | invert_multishift_quda_ (void *_hp_x, void *_hp_b, QudaInvertParam *param) |
| void | update_gauge_field_quda_ (void *gauge, void *momentum, double *dt, bool *conj_mom, bool *exact, QudaGaugeParam *param) |
| void | compute_staggered_force_quda_ (void *mom, double *dt, double *delta, void *gauge, void *x, QudaGaugeParam *gauge_param, QudaInvertParam *invert_param) |
| void | compute_gauge_force_quda_ (void *mom, void *gauge, int *num_loop_types, double *coeff, double *dt, QudaGaugeParam *param) |
| Compute the gauge force and update the mometum field. More... | |
| void | apply_staggered_phase_quda_ () |
| Apply the staggered phase factors to the resident gauge field. More... | |
| void | remove_staggered_phase_quda_ () |
| Remove the staggered phase factors to the resident gauge field. More... | |
| void | kinetic_quda_ (double *kin, void *momentum, QudaGaugeParam *param) |
| Evaluate the kinetic (momentum) contribution to classical Hamiltonian for Hybrid Monte Carlo. More... | |
| void | plaq_quda_ (double plaq[3]) |
| void | set_kernel_pack_t_ (int *pack) |
| fTemporary function exposed for TIFR benchmarking More... | |
| void | flush_chrono_quda_ (int *index) |
| Flush the chronological history for the given index. More... | |
| void | register_pinned_quda_ (void *ptr, size_t *bytes) |
| Pinned a pre-existing memory allocation. More... | |
| void | unregister_pinned_quda_ (void *ptr) |
| Pinned a pre-existing memory allocation. More... | |
Fortran interface functions.
The following are Fortran interface functions to QUDA that mirror the C-equivalents. This essentially just means making all calls by reference, using all the lower-case characters and adding a trailing underscore.
Definition in file quda_fortran.h.
| void apply_staggered_phase_quda_ | ( | ) |
Apply the staggered phase factors to the resident gauge field.
Definition at line 5487 of file interface_quda.cpp.
| void clover_quda_ | ( | void * | h_out, |
| void * | h_in, | ||
| QudaInvertParam * | inv_param, | ||
| QudaParity * | parity, | ||
| int * | inverse | ||
| ) |
Apply the clover operator or its inverse.
| h_out | Result spinor field |
| h_in | Input spinor field |
| param | Contains all metadata regarding host and device storage |
| parity | The source and destination parity of the field |
| inverse | Whether to apply the inverse of the clover term |
Definition at line 5315 of file interface_quda.cpp.
| void comm_set_gridsize_ | ( | int * | grid | ) |
Setter method for the comm grid size to all us to reuse BQCD's MPI topology. This is considered a temporary hack that will be fixed when an interface for setting the logical topology is created (issue 31 on github).
BQCD wants a node mapping with x varying fastest.
Definition at line 5529 of file interface_quda.cpp.
| void compute_gauge_force_quda_ | ( | void * | mom, |
| void * | gauge, | ||
| int * | num_loop_types, | ||
| double * | coeff, | ||
| double * | dt, | ||
| QudaGaugeParam * | param | ||
| ) |
Compute the gauge force and update the mometum field.
| [in,out] | mom | The momentum field to be updated |
| [in] | gauge | The gauge field from which we compute the force |
| [in] | num_loop_types | Number of loop types in the gauge action |
| [in] | loop_coeff | Coefficients of the different loops in the Symanzik action |
| [in] | dt | The integration step size |
| [in] | param | The parameters of the external fields and the computation settings |
Definition at line 5426 of file interface_quda.cpp.
| void compute_staggered_force_quda_ | ( | void * | mom, |
| double * | dt, | ||
| double * | delta, | ||
| void * | gauge, | ||
| void * | x, | ||
| QudaGaugeParam * | gauge_param, | ||
| QudaInvertParam * | invert_param | ||
| ) |
Compute the naive staggered force. All fields must be in the same precision.
| mom | Momentum field |
| dt | Integrating step size |
| delta | Additional scale factor when updating momentum (mom += delta * [force]_TA |
| gauge | Gauge field (at present only supports resident gauge field) |
| x | Array of single-parity solution vectors (at present only supports resident solutions) |
| gauge_param | Gauge field meta data |
| invert_param | Dirac and solver meta data |
Definition at line 5482 of file interface_quda.cpp.
| void dslash_quda_ | ( | void * | h_out, |
| void * | h_in, | ||
| QudaInvertParam * | inv_param, | ||
| QudaParity * | parity | ||
| ) |
Apply the Dslash operator (D_{eo} or D_{oe}).
| h_out | Result spinor field |
| h_in | Input spinor field |
| param | Contains all metadata regarding host and device storage |
| parity | The destination parity of the field |
Definition at line 5313 of file interface_quda.cpp.
| void end_quda_ | ( | void | ) |
Finalize the library.
Definition at line 5306 of file interface_quda.cpp.
| void flush_chrono_quda_ | ( | int * | index | ) |
Flush the chronological history for the given index.
| [in] | index | Index for which we are flushing |
Definition at line 5351 of file interface_quda.cpp.
| void free_clover_quda_ | ( | void | ) |
Free QUDA's internal copy of the clover term and/or clover inverse.
Definition at line 5312 of file interface_quda.cpp.
| void free_gauge_quda_ | ( | void | ) |
Free QUDA's internal copy of the gauge field.
Definition at line 5308 of file interface_quda.cpp.
| void free_sloppy_gauge_quda_ | ( | void | ) |
Free QUDA's internal copy of the gauge field.
Definition at line 5309 of file interface_quda.cpp.
| void init_quda_ | ( | int * | device | ) |
Initialize the library. Under the interface this just calls initQudaMemory and initQudaDevice.
| device | CUDA device number to use. In a multi-GPU build, this parameter may be either set explicitly on a per-process basis or set to -1 to enable a default allocation of devices to processes. |
Definition at line 5303 of file interface_quda.cpp.
| void init_quda_device_ | ( | int * | device | ) |
Initialize the library. This is a low-level interface that is called by initQuda. Calling initQudaDevice requires that the user also call initQudaMemory before using QUDA.
| device | CUDA device number to use. In a multi-GPU build, this parameter may either be set explicitly on a per-process basis or set to -1 to enable a default allocation of devices to processes. |
Definition at line 5304 of file interface_quda.cpp.
| void init_quda_memory_ | ( | ) |
Initialize the library persistant memory allocations (both host and device). This is a low-level interface that is called by initQuda. Calling initQudaMemory requires that the user has previously called initQudaDevice.
Definition at line 5305 of file interface_quda.cpp.
| void invert_multishift_quda_ | ( | void * | _hp_x, |
| void * | _hp_b, | ||
| QudaInvertParam * | param | ||
| ) |
Solve for multiple shifts (e.g., masses).
| _hp_x | Array of solution spinor fields (large contiguous allocation) |
| _hp_b | Array of source spinor fields |
| param | Contains all metadata regarding host and device storage and solver parameters |
Definition at line 5329 of file interface_quda.cpp.
| void invert_quda_ | ( | void * | h_x, |
| void * | h_b, | ||
| QudaInvertParam * | param | ||
| ) |
Perform the solve, according to the parameters set in param. It is assumed that the gauge field has already been loaded via loadGaugeQuda().
| h_x | Solution spinor field |
| h_b | Source spinor field |
| param | Contains all metadata regarding host and device storage and solver parameters |
Definition at line 5321 of file interface_quda.cpp.
| void kinetic_quda_ | ( | double * | kin, |
| void * | momentum, | ||
| QudaGaugeParam * | param | ||
| ) |
Evaluate the kinetic (momentum) contribution to classical Hamiltonian for Hybrid Monte Carlo.
| kin | Kinetic energy |
| momentum | The momentum field |
| param | The parameters of the external fields and the computation settings |
Definition at line 5508 of file interface_quda.cpp.
| void load_clover_quda_ | ( | void * | h_clover, |
| void * | h_clovinv, | ||
| QudaInvertParam * | inv_param | ||
| ) |
Load the clover term and/or the clover inverse from the host. Either h_clover or h_clovinv may be set to NULL.
| h_clover | Base pointer to host clover field |
| h_cloverinv | Base pointer to host clover inverse field |
| inv_param | Contains all metadata regarding host and device storage |
Definition at line 5310 of file interface_quda.cpp.
| void load_gauge_quda_ | ( | void * | h_gauge, |
| QudaGaugeParam * | param | ||
| ) |
Load the gauge field from the host.
| h_gauge | Base pointer to host gauge field (regardless of dimensionality) |
| param | Contains all metadata regarding host and device storage |
Definition at line 5307 of file interface_quda.cpp.
| void mat_dag_mat_quda_ | ( | void * | h_out, |
| void * | h_in, | ||
| QudaInvertParam * | inv_param | ||
| ) |
Apply M^{\dag}M, possibly even/odd preconditioned.
| h_out | Result spinor field |
| h_in | Input spinor field |
| param | Contains all metadata regarding host and device storage |
Definition at line 5319 of file interface_quda.cpp.
| void mat_quda_ | ( | void * | h_out, |
| void * | h_in, | ||
| QudaInvertParam * | inv_param | ||
| ) |
Apply the full Dslash matrix, possibly even/odd preconditioned.
| h_out | Result spinor field |
| h_in | Input spinor field |
| param | Contains all metadata regarding host and device storage |
Definition at line 5317 of file interface_quda.cpp.
| void new_quda_gauge_param_ | ( | QudaGaugeParam * | param | ) |
Initializes the QudaGaugeParam with default entries.
| The | QudaGaugeParam to be initialized |
Definition at line 5363 of file interface_quda.cpp.
| void new_quda_invert_param_ | ( | QudaInvertParam * | param | ) |
Initializes the QudaInvertParam with default entries.
| The | QudaInvertParam to be initialized |
Definition at line 5366 of file interface_quda.cpp.
| void plaq_quda_ | ( | double | plaq[3] | ) |
| Computes | the total, spatial and temporal plaquette averages of the loaded gauge configuration. |
| Array | for storing the averages (total, spatial, temporal) |
Definition at line 5574 of file interface_quda.cpp.
| void register_pinned_quda_ | ( | void * | ptr, |
| size_t * | bytes | ||
| ) |
Pinned a pre-existing memory allocation.
| [in] | ptr | Pointer to buffer to be pinned |
| [in] | size | Size of allocation |
Definition at line 5353 of file interface_quda.cpp.
| void remove_staggered_phase_quda_ | ( | ) |
Remove the staggered phase factors to the resident gauge field.
Definition at line 5497 of file interface_quda.cpp.
| void set_kernel_pack_t_ | ( | int * | pack | ) |
fTemporary function exposed for TIFR benchmarking
Exposed due to poor derived MPI datatype performance with GPUDirect RDMA
Definition at line 5539 of file interface_quda.cpp.
| void unregister_pinned_quda_ | ( | void * | ptr | ) |
Pinned a pre-existing memory allocation.
| [in] | ptr | Pointer to buffer to be unpinned |
Definition at line 5358 of file interface_quda.cpp.
| void update_gauge_field_quda_ | ( | void * | gauge, |
| void * | momentum, | ||
| double * | dt, | ||
| bool * | conj_mom, | ||
| bool * | exact, | ||
| QudaGaugeParam * | param | ||
| ) |
Evolve the gauge field by step size dt, using the momentum field I.e., Evalulate U(t+dt) = e(dt pi) U(t)
| gauge | The gauge field to be updated |
| momentum | The momentum field |
| dt | The integration step size step |
| conj_mom | Whether to conjugate the momentum matrix |
| exact | Whether to use an exact exponential or Taylor expand |
| param | The parameters of the external fields and the computation settings |
Definition at line 5370 of file interface_quda.cpp.