Each of the folowing routines are already implemented. Other routines will be added and the whole library will improve from time to time. Whatever the case, the actual files should be always considered and used as as an update whenever needed. The nomenclature follows that of the tmLQCD package.
List routines currently implemented
1. | void CELL_QCD_INIT();
Performs various initializations and activate the SPEs (the number of available SPEs is automatically calculated and remains constant till the end). This routine should be the first to be called before any other call to the library.
| Hide |
| ? |
2. | void CELL_QCD_FINALIZE();
Ends the session with the library. The routine unload the SPE contexts and releases all ressources. Note that the requested SPEs are always active during a session with the library, thus should not be expected to participate in an external calculation.
| Hide |
| ? |
3. | double CELL_scalar_prod(spinor *S, spinor *R, int N);
Computes the real scalar product of S and R.
| Hide |
| ? |
4. | double CELL_scalar_prod_r(spinor *S, spinor *R, int N);
Computes the complex scalar product of S and R.
| Hide |
| ? |
5. | double CELL_square_norm(spinor *S, int N);
Computes the square norm of S.
| Hide |
| ? |
6. | double CELL_square_norm_assign(spinor *S, spinor *R, int N);
Computes the square norm of R and assigns R to S. The two operations are performed concurrently.
| Hide |
| ? |
7. | void CELL_assign_diff_mul(spinor *S, spinor *R, complex c, int N);
Computes S = S - cR.
| Hide |
| ? |
8. | void CELL_mul_r(spinor *S, spinor *R, double c, int N);
Computes S = S - cR.
| Hide |
| ? |
9. | void CELL_assign(spinor *S, spinor *R, int N);
| ? |
10. | void CELL_assign_mul_add_r(spinor *S, spinor *R, double c, int N);
Computes S = cS + R.
| Hide |
| ? |
11. | void CELL_assign_diff_mul_serie(spinor *S, spinor **R, complex *c, unsigned int length, int N);
Computes S = S - c[0]R[0] - c[1]R[1] - c[1]R[1] ... - c[length-1]R[length-1] .
| Hide |
| ? |
12. | void build_dependence_indices(unsigned int *dep_indices, int N, int *g_eo2lexic, int *g_lexic2eosub, int *iup, int *idn); or
void build_spinor_indices(unsigned int i_start,unsigned int i_end, unsigned int *dep_indices);
Compute the rhs dependence indices for the Wilson-Dirac operator. For a given i, [dep_indices[8i], dep_indices[8i+1], ..., dep_indices[8i+7]] are the indices of the eight spinor needed to calculated the action of the Wilson-Dirac operator for spinor i. The second (compact) form could be used if the other arguments are global variables with the same names. The resulting array, dep_indices is important for Hopping_matrix routine. Note that, the routine should be called once as the dependence indices are calculated using the lattice geometry parameters only.
| Hide |
| ? |
13. | void CELL_Hopping_Matrix( | spinor *l, spinor *k, int i_length, int i_base, complex ka0, complex ka1, complex ka2, complex ka3, unsigned int *dep_indices, su3 *U0); |
Implements the Hopping_matrix function.
- i_length is the number of spinors to be calculated (generally VOLUME/2)
- i_base is the starting position in the output array (0 or VOLUME/2)
- full spinor storage is assumed
- duplicated su3 matrices (GAUGE_COPY) is assumed, and U0 is the starting address
| Hide |
| ? |
14. | void CELL_H_eo_tm_inv_psi( | spinor *l, spinor *k, int i_length, int i_base,
complex ka0, complex ka1, complex ka2, complex ka3,
unsigned int *dep_indices, su3 *U0, double sign, double g_mu); |
Compute the Hopping_matrix and the mul_one_pm_imu_sub_mul_gamma5 functions in one time.
| Hide |
| ? |
15. | void CELL_diff(spinor *Q, spinor *S, spinor *R, int N);
| ? |
16. | void CELL_mul_one_pm_imu_sub_mul_gamma5(spinor *l, spinor *k, spinor *j, double _sign, double g_mu, int N);
Implements the mul_one_pm_imu_sub_mul_gamma5 function (i.e. l = (1 + iμγ5)k - j).
| Hide |
| ? |
17. | void CELL_mul_one_pm_imu_inv(spinor *l, double _sign, double g_mu, int N);
Implements the mul_one_pm_imu_inv function (i.e. l = (1 + iμγ5)-1l).
| Hide |
| ? |
18. | double now();
Returns the number of seconds corresponding to the actual time. This could be used for timings.
| Hide |
| ? |
|