mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-24 12:45:56 +01:00
Dirichlet working multinode now
This commit is contained in:
parent
e0a92dff32
commit
b810b6f6bd
@ -51,8 +51,8 @@ public:
|
|||||||
{
|
{
|
||||||
// Save what the comms mode should be under normal BCs
|
// Save what the comms mode should be under normal BCs
|
||||||
CommsMode = WilsonKernelsStatic::Comms;
|
CommsMode = WilsonKernelsStatic::Comms;
|
||||||
assert((WilsonKernelsStatic::Comms == WilsonKernelsStatic::CommsAndCompute)
|
assert((CommsMode == WilsonKernelsStatic::CommsAndCompute)
|
||||||
||(WilsonKernelsStatic::Comms == WilsonKernelsStatic::CommsThenCompute));
|
||(CommsMode == WilsonKernelsStatic::CommsThenCompute));
|
||||||
|
|
||||||
// Check the block size divides local lattice
|
// Check the block size divides local lattice
|
||||||
GridBase *grid = FermOp.GaugeGrid();
|
GridBase *grid = FermOp.GaugeGrid();
|
||||||
@ -70,14 +70,20 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Even blocks per node required // could be relaxed but inefficient use of hardware as idle nodes in boundary operator R
|
// Even blocks per node required // could be relaxed but inefficient use of hardware as idle nodes in boundary operator R
|
||||||
assert( (blocks_per_rank % 2) == 0);
|
assert( blocks_per_rank != 0);
|
||||||
|
|
||||||
// Possible checks that SIMD lanes are used with full occupancy???
|
// Possible checks that SIMD lanes are used with full occupancy???
|
||||||
};
|
};
|
||||||
virtual ~DirichletFermionOperator(void) = default;
|
virtual ~DirichletFermionOperator(void) = default;
|
||||||
|
|
||||||
void DirichletOn(void) { WilsonKernelsStatic::Comms = WilsonKernelsStatic::CommsDirichlet; }
|
void DirichletOn(void) {
|
||||||
void DirichletOff(void) { WilsonKernelsStatic::Comms = CommsMode;}
|
assert(WilsonKernelsStatic::Comms!= WilsonKernelsStatic::CommsDirichlet);
|
||||||
|
WilsonKernelsStatic::Comms = WilsonKernelsStatic::CommsDirichlet;
|
||||||
|
}
|
||||||
|
void DirichletOff(void) {
|
||||||
|
assert(WilsonKernelsStatic::Comms== WilsonKernelsStatic::CommsDirichlet);
|
||||||
|
WilsonKernelsStatic::Comms = CommsMode;
|
||||||
|
}
|
||||||
|
|
||||||
// Implement the full interface
|
// Implement the full interface
|
||||||
virtual FermionField &tmp(void) { return FermOp.tmp(); };
|
virtual FermionField &tmp(void) { return FermOp.tmp(); };
|
||||||
@ -123,6 +129,9 @@ public:
|
|||||||
///////////////////////////////////////////////
|
///////////////////////////////////////////////
|
||||||
// Updates gauge field during HMC
|
// Updates gauge field during HMC
|
||||||
///////////////////////////////////////////////
|
///////////////////////////////////////////////
|
||||||
|
DoubledGaugeField &GetDoubledGaugeField(void){ return FermOp.GetDoubledGaugeField(); };
|
||||||
|
DoubledGaugeField &GetDoubledGaugeFieldE(void){ return FermOp.GetDoubledGaugeFieldE(); };
|
||||||
|
DoubledGaugeField &GetDoubledGaugeFieldO(void){ return FermOp.GetDoubledGaugeFieldO(); };
|
||||||
virtual void ImportGauge(const GaugeField & _U)
|
virtual void ImportGauge(const GaugeField & _U)
|
||||||
{
|
{
|
||||||
GaugeField U = _U;
|
GaugeField U = _U;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user