[gmx-developers] GPU kernel code

Berk Hess hess at kth.se
Thu Apr 25 14:51:37 CEST 2019


Also, you are grepping for LJ_Comb, not LJComb as Szilard suggested.

Cheers,

Berk

On 25/04/2019 14.48, Szilárd Páll wrote:
>
>
>
>
> On Thu, Apr 25, 2019 at 2:43 PM Mahmood Naderan <nt_mahmood at yahoo.com 
> <mailto:nt_mahmood at yahoo.com>> wrote:
>
>     > Selection happens at runtime, see
>     in nbnxn_cuda.cu:select_nbnxn_kernel().
>
>     Yes I see that.
>
>
>
>
>     > Try "git grep LJComb".
>
>     I am trying to find that in 2018.2 release that I have currently.
>
>     mahmood at mpc:/opt/gromacs-2018.2/src/gromacs/mdlib/nbnxn_cuda$ grep
>     -i LJ_Comb nbnxn_cuda_kernel.cuh
>     #if defined LJ_COMB_GEOM || defined LJ_COMB_LB
>     #define LJ_COMB
>     #ifndef LJ_COMB
>         const float2       *lj_comb     = atdat.lj_comb;
>     #ifndef LJ_COMB
>     #if !defined LJ_COMB_LB || defined CALC_ENERGIES
>     #ifdef LJ_COMB_LB
>     #ifndef LJ_COMB
>     #ifndef LJ_COMB
>             ljcpib[tidxj * c_clSize + tidxi] = lj_comb[ai];
>     #ifndef LJ_COMB
>                         ljcp_j  = lj_comb[aj];
>     #ifndef LJ_COMB
>     #ifdef LJ_COMB_GEOM
>     #endif                          /* LJ_COMB_GEOM */
>     #endif                          /* LJ_COMB */
>     #if !defined LJ_COMB_LB || defined CALC_ENERGIES
>     #else                           /* !LJ_COMB_LB || CALC_ENERGIES */
>     #endif                          /* !LJ_COMB_LB || CALC_ENERGIES */
>     #undef LJ_COMB
>     mahmood at mpc:/opt/gromacs-2018.2/src/gromacs/mdlib/nbnxn_cuda$ grep
>     -i LJComb nbnxn_cuda_kernel.cuh
>     mahmood at mpc:/opt/gromacs-2018.2/src/gromacs/mdlib/nbnxn_cuda$
>
>
> As suggested before, grep the source repo, not that one file; or grep 
> the right file -- the one I recommended looking at in my previous 
> email (src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_kernels.cuh).
>
>
>
>
>
>     I expect that VdwLJCombLB_F means that the statements that must be
>     executed in nbnxn_cuda_kernel.cuh, are those that are used in
>     defined macros.
>
>
> Correct. In fact the "VdwLJCombLB" kenrnels will not even have e.g. 
> VdwLJFsw  (i.e. LJ force switch) code included in them.
>
>
>     For example, since I see Vdw, the following code must be executed
>
>     #ifdef VDW_CUTOFF_CHECK
>                                     /* Separate VDW cut-off check to
>     enable twin-range cut-offs
>                                      * (rvdw < rcoulomb <= rlist)
>                                      */
>     vdw_in_range  = (r2 < rvdw_sq) ? 1.0f : 0.0f;
>     F_invr       *= vdw_in_range;
>
>
>
>     Also, since LJCombLB is seen, the following code must be executed
>
>
>     #else /* !LJ_COMB_LB || CALC_ENERGIES */
>                                     float sig_r  = sigma*inv_r;
>                                     float sig_r2 = sig_r*sig_r;
>                                     float sig_r6 = sig_r2*sig_r2*sig_r2;
>
>
>
>
>     And so on...
>
>     Please let me know if I still haven't understand that.
>
>
>
>     Regards,
>     Mahmood
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20190425/6b4b4a35/attachment-0001.html>


More information about the gromacs.org_gmx-developers mailing list