modernize. turn static inline into just inline

This commit is contained in:
Axel Kohlmeyer
2025-06-27 23:58:11 -04:00
parent d168de00db
commit 1b36451f6a

View File

@ -50,142 +50,138 @@ class ThrOMP {
double memory_usage_thr(); double memory_usage_thr();
inline void sync_threads() inline void sync_threads(){
{
#if defined(_OPENMP) #if defined(_OPENMP)
#pragma omp barrier #pragma omp barrier
#endif #endif
{ {;
; }
} }; // namespace LAMMPS_NS
};
enum { enum {
THR_NONE = 0, THR_NONE = 0,
THR_PAIR = 1, THR_PAIR = 1,
THR_BOND = 1 << 1, THR_BOND = 1 << 1,
THR_ANGLE = 1 << 2, THR_ANGLE = 1 << 2,
THR_DIHEDRAL = 1 << 3, THR_DIHEDRAL = 1 << 3,
THR_IMPROPER = 1 << 4, THR_IMPROPER = 1 << 4,
THR_KSPACE = 1 << 5, THR_KSPACE = 1 << 5,
THR_CHARMM = 1 << 6, /*THR_PROXY=1<<7,THR_HYBRID=1<<8, */ THR_CHARMM = 1 << 6, /*THR_PROXY=1<<7,THR_HYBRID=1<<8, */
THR_FIX = 1 << 9, THR_FIX = 1 << 9,
THR_INTGR = 1 << 10 THR_INTGR = 1 << 10
};
protected:
// extra ev_tally setup work for threaded styles
void ev_setup_thr(int, int, int, double *, double **, double **, ThrData *);
// compute global per thread virial contribution from per-thread force
void virial_fdotr_compute_thr(double *const, const double *const *const,
const double *const *const, const int, const int, const int);
// reduce per thread data as needed
void reduce_thr(void *const style, const int eflag, const int vflag, ThrData *const thr);
// thread safe variant error abort support.
// signals an error condition in any thread by making
// thr_error > 0, if condition "cond" is true.
// will abort from thread 0 if thr_error is > 0
// otherwise return true.
// returns false if no error found on any thread.
// use return value to jump/return to end of threaded region.
bool check_error_thr(const bool cond, const int tid, const char *fname, const int line,
const char *errmsg)
{
if (cond) {
#if defined(_OPENMP)
#pragma omp atomic
++thr_error;
#endif
if (tid > 0)
return true;
else
lmp->error->one(fname, line, errmsg);
} else {
if (thr_error > 0) {
if (tid == 0)
lmp->error->one(fname, line, errmsg);
else
return true;
} else
return false;
}
return false;
};
protected:
// threading adapted versions of the ev_tally infrastructure
// style specific versions (need access to style class flags)
// Pair
void e_tally_thr(Pair *const, const int, const int, const int, const int, const double,
const double, ThrData *const);
void v_tally_thr(Pair *const, const int, const int, const int, const int, const double *const,
ThrData *const);
void ev_tally_thr(Pair *const, const int, const int, const int, const int, const double,
const double, const double, const double, const double, const double,
ThrData *const);
void ev_tally_full_thr(Pair *const, const int, const double, const double, const double,
const double, const double, const double, ThrData *const);
void ev_tally_xyz_thr(Pair *const, const int, const int, const int, const int, const double,
const double, const double, const double, const double, const double,
const double, const double, ThrData *const);
void ev_tally_xyz_full_thr(Pair *const, const int, const double, const double, const double,
const double, const double, const double, const double, const double,
ThrData *const);
void v_tally2_thr(Pair *const, const int, const int, const double, const double *const,
ThrData *const);
void v_tally2_newton_thr(Pair *const, const int, const double *const, const double *const,
ThrData *const);
void ev_tally3_thr(Pair *const, const int, const int, const int, const double, const double,
const double *const, const double *const, const double *const,
const double *const, ThrData *const);
void v_tally3_thr(Pair *const, const int, const int, const int, const double *const,
const double *const, const double *const, const double *const, ThrData *const);
void ev_tally4_thr(Pair *const, const int, const int, const int, const int, const double,
const double *const, const double *const, const double *const,
const double *const, const double *const, const double *const, ThrData *const);
void v_tally4_thr(Pair *const, const int, const int, const int, const int, const double *const,
const double *const, const double *const, const double *const,
const double *const, const double *const, ThrData *const);
// Bond
void ev_tally_thr(Bond *const, const int, const int, const int, const int, const double,
const double, const double, const double, const double, ThrData *const);
// Angle
void ev_tally_thr(Angle *const, const int, const int, const int, const int, const int,
const double, const double *const, const double *const, const double,
const double, const double, const double, const double, const double,
ThrData *const thr);
void ev_tally13_thr(Angle *const, const int, const int, const int, const int, const double,
const double, const double, const double, const double, ThrData *const thr);
// Dihedral
void ev_tally_thr(Dihedral *const, const int, const int, const int, const int, const int,
const int, const double, const double *const, const double *const,
const double *const, const double, const double, const double, const double,
const double, const double, const double, const double, const double,
ThrData *const);
// Improper
void ev_tally_thr(Improper *const, const int, const int, const int, const int, const int,
const int, const double, const double *const, const double *const,
const double *const, const double, const double, const double, const double,
const double, const double, const double, const double, const double,
ThrData *const);
// style independent versions
void ev_tally_list_thr(Pair *const, const int, const int *const, const double *const,
const double, const double, ThrData *const);
}; };
protected:
// extra ev_tally setup work for threaded styles
void ev_setup_thr(int, int, int, double *, double **, double **, ThrData *);
// compute global per thread virial contribution from per-thread force
void virial_fdotr_compute_thr(double *const, const double *const *const, const double *const *const,
const int, const int, const int);
// reduce per thread data as needed
void reduce_thr(void *const style, const int eflag, const int vflag, ThrData *const thr);
// thread safe variant error abort support.
// signals an error condition in any thread by making
// thr_error > 0, if condition "cond" is true.
// will abort from thread 0 if thr_error is > 0
// otherwise return true.
// returns false if no error found on any thread.
// use return value to jump/return to end of threaded region.
bool check_error_thr(const bool cond, const int tid, const char *fname, const int line,
const char *errmsg)
{
if (cond) {
#if defined(_OPENMP)
#pragma omp atomic
++thr_error;
#endif
if (tid > 0)
return true;
else
lmp->error->one(fname, line, errmsg);
} else {
if (thr_error > 0) {
if (tid == 0)
lmp->error->one(fname, line, errmsg);
else
return true;
} else
return false;
}
return false;
};
protected:
// threading adapted versions of the ev_tally infrastructure
// style specific versions (need access to style class flags)
// Pair
void e_tally_thr(Pair *const, const int, const int, const int, const int, const double,
const double, ThrData *const);
void v_tally_thr(Pair *const, const int, const int, const int, const int, const double *const,
ThrData *const);
void ev_tally_thr(Pair *const, const int, const int, const int, const int, const double,
const double, const double, const double, const double, const double,
ThrData *const);
void ev_tally_full_thr(Pair *const, const int, const double, const double, const double,
const double, const double, const double, ThrData *const);
void ev_tally_xyz_thr(Pair *const, const int, const int, const int, const int, const double,
const double, const double, const double, const double, const double,
const double, const double, ThrData *const);
void ev_tally_xyz_full_thr(Pair *const, const int, const double, const double, const double,
const double, const double, const double, const double, const double,
ThrData *const);
void v_tally2_thr(Pair *const, const int, const int, const double, const double *const,
ThrData *const);
void v_tally2_newton_thr(Pair *const, const int, const double *const, const double *const,
ThrData *const);
void ev_tally3_thr(Pair *const, const int, const int, const int, const double, const double,
const double *const, const double *const, const double *const,
const double *const, ThrData *const);
void v_tally3_thr(Pair *const, const int, const int, const int, const double *const,
const double *const, const double *const, const double *const, ThrData *const);
void ev_tally4_thr(Pair *const, const int, const int, const int, const int, const double,
const double *const, const double *const, const double *const,
const double *const, const double *const, const double *const, ThrData *const);
void v_tally4_thr(Pair *const, const int, const int, const int, const int, const double *const,
const double *const, const double *const, const double *const,
const double *const, const double *const, ThrData *const);
// Bond
void ev_tally_thr(Bond *const, const int, const int, const int, const int, const double,
const double, const double, const double, const double, ThrData *const);
// Angle
void ev_tally_thr(Angle *const, const int, const int, const int, const int, const int, const double,
const double *const, const double *const, const double, const double,
const double, const double, const double, const double, ThrData *const thr);
void ev_tally13_thr(Angle *const, const int, const int, const int, const int, const double,
const double, const double, const double, const double, ThrData *const thr);
// Dihedral
void ev_tally_thr(Dihedral *const, const int, const int, const int, const int, const int, const int,
const double, const double *const, const double *const, const double *const,
const double, const double, const double, const double, const double,
const double, const double, const double, const double, ThrData *const);
// Improper
void ev_tally_thr(Improper *const, const int, const int, const int, const int, const int, const int,
const double, const double *const, const double *const, const double *const,
const double, const double, const double, const double, const double,
const double, const double, const double, const double, ThrData *const);
// style independent versions
void ev_tally_list_thr(Pair *const, const int, const int *const, const double *const, const double,
const double, ThrData *const);
}
;
// set loop range thread id, and force array offset for threaded runs. // set loop range thread id, and force array offset for threaded runs.
static inline void loop_setup_thr(int &ifrom, int &ito, int &tid, int inum, int nthreads) inline void loop_setup_thr(int &ifrom, int &ito, int &tid, int inum, int nthreads)
{ {
#if defined(_OPENMP) #if defined(_OPENMP)
tid = omp_get_thread_num(); tid = omp_get_thread_num();
@ -204,22 +200,21 @@ static inline void loop_setup_thr(int &ifrom, int &ito, int &tid, int inum, int
// helpful definitions to help compilers optimizing code better // helpful definitions to help compilers optimizing code better
typedef struct { using dbl3_t = struct _dbl3_t {
double x, y, z; double x, y, z;
} dbl3_t; };
typedef struct { using dbl4_t = struct _dbl4_t {
double x, y, z, w; double x, y, z, w;
} dbl4_t; };
typedef struct { using int3_t = struct _int3_t {
int a, b, t; int a, b, t;
} int3_t; };
typedef struct { using int4_t = struct _int4_t {
int a, b, c, t; int a, b, c, t;
} int4_t; };
typedef struct { using int5_t = struct _int5_t {
int a, b, c, d, t; int a, b, c, d, t;
} int5_t; };
} // namespace LAMMPS_NS } // namespace LAMMPS_NS
#endif #endif