Programming models for quantum chemistry applications
Jeff Hammond, James Dinan, Edgar Solomonik and Devin Matthews
Argonne LCF and MCS, UC Berkeley and UTexas
8 May 2012
Jeff Hammond Charm++ workshop
Programming models for quantum chemistry applications Jeff Hammond , - - PowerPoint PPT Presentation
Programming models for quantum chemistry applications Jeff Hammond , James Dinan, Edgar Solomonik and Devin Matthews Argonne LCF and MCS, UC Berkeley and UTexas 8 May 2012 Jeff Hammond Charm++ workshop Abstract (for posterity) Quantum
Argonne LCF and MCS, UC Berkeley and UTexas
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
1 classical molecular dynamics (MD) with
2 quantum molecular dynamics based upon
3 quantum chemistry with wavefunctions
Jeff Hammond Charm++ workshop
Image courtesy of Benoˆ ıt Roux via ALCF.
Data from K. Schulten, et al. “Biomolecular modeling in the era of petascale computing.” In D. Bader, ed., Petascale Computing: Algorithms and Applications. Jeff Hammond Charm++ workshop
Image courtesy of Giulia Galli via ALCF.
el (x=1-3)
Phys.: Conf. Ser. 180, 012028 (2009). Jeff Hammond Charm++ workshop
bf (x=4-7)
Image courtesy of Karol Kowalski and Niri Govind. Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
klDkl:
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
i ˆ
aˆ
ij ˆ
aˆ
bˆ
2 )|ΨHF
1 + T2 + T 2 2 + T1T2 + T 2 1 T2)|ΨHF
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
pq and is divided into six
ij , V ka ij , V jb ia , V ab ij , V bc ia , V cd ab .
Jeff Hammond Charm++ workshop
ij
ij
ij I b e − T ab im I m j
ef T ef ij +
mnI mn ij
mjI mb ie
ie T eb mj + (2T ea mi − T ea im)I mb ej
b
eb + V mn be )T ea mn
j
ef − V im ef )T ef mj
kl
kl + V ij ef T ef kl
jb
jb − 1
eb T ea jm
bj
bj + V im be (T ea mj − 1
mj) − 1
be T ae mj
Jeff Hammond Charm++ workshop
kl
ef T ef kl
(kl)
(ef )T (ef ) (kl)
a
c T c a
bj
be T ea mj
bi
bi Uja me
(bi)
(bi) U(ja) (me)
x
x Uz y
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
1 GUI input quantum many-body theory e.g. CCSD. 2 Operator specification of theory (as in a theory paper). 3 Apply Wick’s theory to transform operator expressions into
4 Transform input array expression to operation tree using many
5 Generate F77/GA/NXTVAL implementation for NWChem or
Jeff Hammond Charm++ workshop
1g2}{p† 3h4}
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
i,j = T c,d i,j
a,b :
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
1 Blocking get means no overlap.
2 Dynamic load balancing is global shared counter.
3 Get+Permute of t(i,j,c,d)/v(a,b,c,d) for all (a,b)/(i,j).
4 Permute is a nasty operation.
Jeff Hammond Charm++ workshop
j = Ai k ∗ Bk j :
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
16 64 256 1024 4096 16384 32 64 128 256 512 1024 Gigaflops #cores Cyclops TF weak scaling on XE6 theoretical peak 4D sym (CCSD) 6D sym (CCSDT) 8D sym (CCSDTQ) 512 1024 2048 4096 8192 16384 32768 65536 1024 2048 4096 8192 Gigaflops #cores Cyclops TF weak scaling on BG/P theoretical peak 4D sym (CCSD) 6D sym (CCSDT) 8D sym (CCSDTQ)
Jeff Hammond Charm++ workshop
void calcE(DistTensor & T2AA, DistTensor & T2AB, DistTensor & T2BB, DistTensor & TTAA, DistTensor & TTAB, DistTensor & TTBB, DistTensor & VABIJAA, DistTensor & VABIJAB, DistTensor & VABIJBB, DistTensor & D2AA, DistTensor & D2AB, DistTensor & D2BB, DistTensor & Z2AA, DistTensor & Z2AB, DistTensor & Z2BB, DistTensor & E CCD) { TTAA["ABIJ"] = Z2AA["ABIJ"]*D2AA["ABIJ"]; TTAB["AbIj"] = Z2AB["AbIj"]*D2AB["AbIj"]; TTBB["abij"] = Z2BB["abij"]*D2BB["abij"]; E CCD = VABIJAA["ABIJ"]*TTAA["ABIJ"]; E CCD += VABIJAB["AbIj"]*TTAB["AbIj"]; E CCD += VABIJBB["abij"]*TTBB["abij"]; TTAA["ABIJ"] -= T2AA["ABIJ"]; TTAB["AbIj"] -= T2AB["AbIj"]; TTBB["abij"] -= T2BB["abij"]; T2AA["ABIJ"] += TTAA["ABIJ"]; T2AB["AbIj"] += TTAB["AbIj"]; T2BB["abij"] += TTBB["abij"]; }
ij
ij ?
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop
Jeff Hammond Charm++ workshop