mirror of https://github.com/QMCPACK/qmcpack.git
Merge branch 'enable_hybridrep_gpu_testing' of https://github.com/prckent/qmcpack into enable_hybridrep_gpu_testing
This commit is contained in:
commit
e01c73e737
|
@ -144,6 +144,15 @@ class HDFgroup(DevBase):
|
|||
#end def read_arrays
|
||||
|
||||
|
||||
def get_keys(self):
|
||||
if '_groups' in self:
|
||||
keys = list(self._groups.keys())
|
||||
else:
|
||||
keys = list(self.keys())
|
||||
#end if
|
||||
return keys
|
||||
#end def get_keys
|
||||
|
||||
#project interface methods
|
||||
|
||||
def zero(self,*names):
|
||||
|
@ -152,11 +161,11 @@ class HDFgroup(DevBase):
|
|||
self[name][:] = 0
|
||||
#end if
|
||||
#end for
|
||||
for name,value in self._groups.iteritems():
|
||||
if isinstance(value,str):
|
||||
ci(ls(),gs())
|
||||
for name in self.get_keys():
|
||||
value = self[name]
|
||||
if isinstance(value,HDFgroup):
|
||||
value.zero(*names)
|
||||
#end if
|
||||
value.zero(*names)
|
||||
#end for
|
||||
#self.sum(*names)
|
||||
#end def zero
|
||||
|
@ -166,13 +175,8 @@ class HDFgroup(DevBase):
|
|||
name_set = set(names)
|
||||
snames = set(self.keys()) & name_set
|
||||
onames = set(other.keys()) & name_set
|
||||
if len(snames)>0 and len(snames)<len(names):
|
||||
self.error('only some names found in self\n names_requested:'+str(names)+'\n names found: '+str(snames))
|
||||
elif len(onames)>0 and len(onames)<len(names):
|
||||
self.error('only some names found in other\n names_requested:'+str(names)+'\n names found: '+str(onames))
|
||||
#end if
|
||||
if len(snames)>0:
|
||||
for name in names:
|
||||
if snames==onames:
|
||||
for name in snames:
|
||||
svalue = self[name]
|
||||
ovalue = other[name]
|
||||
if not isinstance(svalue,ndarray) or not isinstance(ovalue,ndarray):
|
||||
|
@ -182,11 +186,14 @@ class HDFgroup(DevBase):
|
|||
self[name] = resize(svalue,shape)
|
||||
#end for
|
||||
#end if
|
||||
for name,value in self._groups.iteritems():
|
||||
if name in other and isinstance(other[name],HDFgroup):
|
||||
value.minsize(other[name])
|
||||
else:
|
||||
self.error(name+' not found in minsize partner')
|
||||
for name in self.get_keys():
|
||||
value = self[name]
|
||||
if isinstance(value,HDFgroup):
|
||||
if name in other and isinstance(other[name],HDFgroup):
|
||||
value.minsize(other[name])
|
||||
else:
|
||||
self.error(name+' not found in minsize partner')
|
||||
#end if
|
||||
#end if
|
||||
#end for
|
||||
#self.sum(*names)
|
||||
|
@ -197,13 +204,8 @@ class HDFgroup(DevBase):
|
|||
name_set = set(names)
|
||||
snames = set(self.keys()) & name_set
|
||||
onames = set(other.keys()) & name_set
|
||||
if len(snames)>0 and len(snames)<len(names):
|
||||
self.error('only some names found in self\n names_requested:'+str(names)+'\n names found: '+str(snames))
|
||||
elif len(onames)>0 and len(onames)<len(names):
|
||||
self.error('only some names found in other\n names_requested:'+str(names)+'\n names found: '+str(onames))
|
||||
#end if
|
||||
if len(snames)>0:
|
||||
for name in names:
|
||||
if snames==onames:
|
||||
for name in snames:
|
||||
svalue = self[name]
|
||||
ovalue = other[name]
|
||||
if not isinstance(svalue,ndarray) or not isinstance(ovalue,ndarray):
|
||||
|
@ -221,11 +223,14 @@ class HDFgroup(DevBase):
|
|||
svalue += ovalue[ix_(*ranges)]
|
||||
#end for
|
||||
#end if
|
||||
for name,value in self._groups.iteritems():
|
||||
if name in other and isinstance(other[name],HDFgroup):
|
||||
value.accumulate(other[name])
|
||||
else:
|
||||
self.error(name+' not found in accumulate partner')
|
||||
for name in self.get_keys():
|
||||
value = self[name]
|
||||
if isinstance(value,HDFgroup):
|
||||
if name in other and isinstance(other[name],HDFgroup):
|
||||
value.accumulate(other[name])
|
||||
else:
|
||||
self.error(name+' not found in accumulate partner')
|
||||
#end if
|
||||
#end if
|
||||
#end for
|
||||
#self.sum(*names)
|
||||
|
@ -238,8 +243,11 @@ class HDFgroup(DevBase):
|
|||
self[name] /= normalization
|
||||
#end if
|
||||
#end for
|
||||
for name,value in self._groups.iteritems():
|
||||
value.normalize(normalization,*names)
|
||||
for name in self.get_keys():
|
||||
value = self[name]
|
||||
if isinstance(value,HDFgroup):
|
||||
value.normalize(normalization,*names)
|
||||
#end if
|
||||
#end for
|
||||
#self.sum(*names)
|
||||
#end def normalize
|
||||
|
|
|
@ -308,14 +308,20 @@ class ScalarsHDFAnalyzer(HDFAnalyzer):
|
|||
corrvars = ['LocalEnergy','ElecElec','MPC','KEcorr']
|
||||
if set(corrvars)<set(self.data.keys()):
|
||||
Ed,Ved,Vmd,Kcd = self.data.tuple(*corrvars)
|
||||
E,E2 = Ed.value,Ed.value_squared
|
||||
Ve,Ve2 = Ved.value,Ved.value_squared
|
||||
Vm,Vm2 = Vmd.value,Vmd.value_squared
|
||||
Kc,Kc2 = Kcd.value,Kcd.value_squared
|
||||
self.data.LocalEnergy_mpc_kc = obj(
|
||||
value = E-Ve+Vm+Kc,
|
||||
value_squared = E2+Ve2+Vm2+Kc2 + 2*(E*(-Ve+Vm+Kc)-Ve*(Vm+Kc)+Vm*Kc)
|
||||
)
|
||||
E_mpc_kc = obj()
|
||||
E = Ed.value
|
||||
Ve = Ved.value
|
||||
Vm = Vmd.value
|
||||
Kc = Kcd.value
|
||||
E_mpc_kc.value = E-Ve+Vm+Kc
|
||||
if 'value_squared' in Ed:
|
||||
E2 = Ed.value_squared
|
||||
Ve2 = Ved.value_squared
|
||||
Vm2 = Vmd.value_squared
|
||||
Kc2 = Kcd.value_squared
|
||||
E_mpc_kc.value_squared = E2+Ve2+Vm2+Kc2 + 2*(E*(-Ve+Vm+Kc)-Ve*(Vm+Kc)+Vm*Kc)
|
||||
#end if
|
||||
self.data.LocalEnergy_mpc_kc = E_mpc_kc
|
||||
#end if
|
||||
#end def load_data_local
|
||||
|
||||
|
@ -325,9 +331,14 @@ class ScalarsHDFAnalyzer(HDFAnalyzer):
|
|||
self.info.nblocks_exclude = nbe
|
||||
for varname,val in self.data.iteritems():
|
||||
(mean,var,error,kappa)=simstats(val.value[nbe:,...].ravel())
|
||||
if 'value_squared' in val:
|
||||
variance = val.value_squared[nbe:,...].mean()-mean**2
|
||||
else:
|
||||
variance = var
|
||||
#end if
|
||||
self[varname] = obj(
|
||||
mean = mean,
|
||||
variance = val.value_squared[nbe:,...].mean()-mean**2,
|
||||
variance = variance,
|
||||
sample_variance = var,
|
||||
error = error,
|
||||
kappa = kappa
|
||||
|
@ -441,7 +452,7 @@ class EnergyDensityAnalyzer(HDFAnalyzer):
|
|||
# add simple data first
|
||||
for k,v in data._iteritems():
|
||||
if not sg_pattern.match(k):
|
||||
self._add_attribute(k,v)
|
||||
self[k] = v
|
||||
else:
|
||||
nspacegrids+=1
|
||||
#end if
|
||||
|
@ -1896,7 +1907,9 @@ class SpinDensityAnalyzer(DensityAnalyzerBase):
|
|||
for d in self.data:
|
||||
b = len(d.value)
|
||||
d.value.shape = (b,g[0],g[1],g[2])
|
||||
d.value_squared.shape = (b,g[0],g[1],g[2])
|
||||
if 'value_squared' in d:
|
||||
d.value_squared.shape = (b,g[0],g[1],g[2])
|
||||
#end if
|
||||
#end for
|
||||
#end def load_data_local
|
||||
|
||||
|
@ -2308,7 +2321,7 @@ class SpaceGridBase(QAobject):
|
|||
def check_complete(self,exit_on_fail=True):
|
||||
succeeded = True
|
||||
for k,v in self._iteritems():
|
||||
if k[0]!='_' and v==None:
|
||||
if k[0]!='_' and v is None:
|
||||
succeeded=False
|
||||
if exit_on_fail:
|
||||
self.error('SpaceGridBase.'+k+' must be provided',exit=False)
|
||||
|
|
|
@ -33,7 +33,6 @@ const hsize_t h5_observable_type=H5T_NATIVE_DOUBLE;
|
|||
* This is a helper class to manage a hdf5 dagroup for each collectable.
|
||||
* The data handled by an Estimator should be presented by dense N-dim array in C.
|
||||
* /observables/title/value
|
||||
* /observables/title/value_sq
|
||||
*/
|
||||
struct observable_helper
|
||||
{
|
||||
|
@ -48,10 +47,6 @@ struct observable_helper
|
|||
hid_t space1_id;
|
||||
///id of the value dataset
|
||||
hid_t value1_id;
|
||||
///dataspace for squared value
|
||||
hid_t space2_id;
|
||||
///id of the squred value dataset
|
||||
hid_t value2_id;
|
||||
///my dimensions
|
||||
std::vector<hsize_t> mydims;
|
||||
///maximum dimensions
|
||||
|
@ -65,7 +60,7 @@ struct observable_helper
|
|||
|
||||
///default constructor
|
||||
observable_helper(const std::string& title="dummy")
|
||||
:data_id(-1),space1_id(-1),space2_id(-1), group_name(title)
|
||||
:data_id(-1),space1_id(-1), group_name(title)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -74,8 +69,6 @@ struct observable_helper
|
|||
{
|
||||
if(space1_id>-1)
|
||||
H5Sclose(space1_id);
|
||||
if(space2_id>-1)
|
||||
H5Sclose(space2_id);
|
||||
if(data_id>-1)
|
||||
H5Gclose(data_id);
|
||||
}
|
||||
|
@ -119,11 +112,6 @@ struct observable_helper
|
|||
hid_t memspace = H5Screate_simple(rank, &mydims[0], NULL);
|
||||
herr_t ret = H5Dwrite(value1_id, h5_observable_type, memspace, space1_id, H5P_DEFAULT, &zeros[0]);
|
||||
H5Sclose(memspace);
|
||||
space2_id=H5Screate_simple(rank, &mydims[0], &maxdims[0]);
|
||||
value2_id= H5Dcreate(data_id,"value_squared",h5_observable_type,space2_id,p);
|
||||
memspace = H5Screate_simple(rank, &mydims[0], NULL);
|
||||
ret = H5Dwrite(value2_id, h5_observable_type, memspace, space2_id, H5P_DEFAULT, &zeros[0]);
|
||||
H5Sclose(memspace);
|
||||
H5Pclose(p);
|
||||
}
|
||||
}
|
||||
|
@ -196,12 +184,6 @@ struct observable_helper
|
|||
hid_t memspace = H5Screate_simple(rank, &mydims[0], NULL);
|
||||
herr_t ret = H5Dwrite(value1_id, h5_observable_type, memspace, space1_id, H5P_DEFAULT, first_v+lower_bound);
|
||||
H5Sclose(memspace);
|
||||
H5Sset_extent_simple(space2_id,rank,&curdims[0],&maxdims[0]);
|
||||
H5Sselect_hyperslab(space2_id, H5S_SELECT_SET, &offsets[0], NULL, &mydims[0], NULL);
|
||||
H5Dextend(value2_id,&curdims[0]);
|
||||
memspace = H5Screate_simple(rank, &mydims[0], NULL);
|
||||
ret = H5Dwrite(value2_id, h5_observable_type, memspace, space2_id, H5P_DEFAULT, first_vv+lower_bound);
|
||||
H5Sclose(memspace);
|
||||
curdims[0]++;
|
||||
offsets[0]++;
|
||||
}
|
||||
|
|
|
@ -90,7 +90,7 @@ ENDIF()
|
|||
qmc_cpu_limit_vmc.xml)
|
||||
|
||||
IF (TEST_ADDED)
|
||||
SET_PROPERTY(TEST ${FULL_NAME} APPEND PROPERTY TIMEOUT 120)
|
||||
SET_PROPERTY(TEST ${FULL_NAME} APPEND PROPERTY TIMEOUT 180)
|
||||
SET_PROPERTY(TEST ${FULL_NAME} APPEND PROPERTY PASS_REGULAR_EXPRESSION "Time limit reached for")
|
||||
ENDIF()
|
||||
|
||||
|
@ -116,7 +116,7 @@ ENDIF()
|
|||
qmc_cpu_limit_dmc.xml)
|
||||
|
||||
IF (TEST_ADDED)
|
||||
SET_PROPERTY(TEST ${FULL_NAME} APPEND PROPERTY TIMEOUT 120)
|
||||
SET_PROPERTY(TEST ${FULL_NAME} APPEND PROPERTY TIMEOUT 240)
|
||||
SET_PROPERTY(TEST ${FULL_NAME} APPEND PROPERTY PASS_REGULAR_EXPRESSION "Time limit reached for")
|
||||
ENDIF()
|
||||
|
||||
|
|
Loading…
Reference in New Issue