QUDA
v0.7.0
A library for QCD on GPUs
|
Fortran interface functions. More...
#include <quda_constants.h>
Go to the source code of this file.
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 5124 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 5066 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 5160 of file interface_quda.cpp.
int compute_gauge_force_quda_ | ( | void * | mom, |
void * | gauge, | ||
int * | input_path_buf, | ||
int * | path_length, | ||
double * | loop_coeff, | ||
int * | num_paths, | ||
int * | max_length, | ||
double * | dt, | ||
QudaGaugeParam * | qudaGaugeParam | ||
) |
Compute the gauge force and update the mometum field
mom | The momentum field to be updated |
gauge | The gauge field from which we compute the force |
input_path_buf[dim][num_paths][path_length] | (Fortran 3-d array) |
path_length | One less that the number of links in a loop (e.g., 3 for a staple) |
loop_coeff | Coefficients of the different loops in the Symanzik action |
num_paths | How many contributions from path_length different "staples" |
max_length | The maximum number of non-zero of links in any path in the action |
dt | The integration step size (for MILC this is dt*beta/3) |
param | The parameters of the external fields and the computation settings |
Definition at line 5091 of file interface_quda.cpp.
void compute_staggered_force_quda_ | ( | void * | cudaMom, |
void * | qudaQuark, | ||
double * | coeff | ||
) |
Definition at line 5119 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 5064 of file interface_quda.cpp.
void end_quda_ | ( | void | ) |
Finalize the library.
Definition at line 5057 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 5063 of file interface_quda.cpp.
void free_gauge_quda_ | ( | void | ) |
Free QUDA's internal copy of the gauge field.
Definition at line 5059 of file interface_quda.cpp.
void free_sloppy_gauge_quda_ | ( | void | ) |
Free QUDA's internal copy of the gauge field.
Definition at line 5060 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 5054 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 5055 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 5056 of file interface_quda.cpp.
void invert_md_quda_ | ( | void * | hp_x, |
void * | hp_b, | ||
QudaInvertParam * | param | ||
) |
Definition at line 5074 of file interface_quda.cpp.
void invert_multi_shift_quda_ | ( | void * | _hp_x[QUDA_MAX_MULTI_SHIFT], |
void * | _hp_b, | ||
QudaInvertParam * | param | ||
) |
Solve for multiple shifts (e.g., masses).
_hp_x | Array of solution spinor fields |
_hp_b | Array of source spinor fields |
param | Contains all metadata regarding host and device storage and solver parameters |
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 5072 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 5061 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 5058 of file interface_quda.cpp.
void mat_dag_mat_quda_ | ( | void * | h_out, |
void * | h_in, | ||
QudaInvertParam * | inv_param | ||
) |
Apply M^{}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 5070 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 5068 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 5078 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 5081 of file interface_quda.cpp.
void remove_staggered_phase_quda_ | ( | ) |
Remove the staggered phase factors to the resident gauge field
Definition at line 5134 of file interface_quda.cpp.
void set_kernel_pack_t_ | ( | int * | pack | ) |
Temporary function exposed for TIFR benchmarking
Exposed due to poor derived MPI datatype performance with GPUDirect RDMA
Definition at line 5170 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 5085 of file interface_quda.cpp.