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.