Compare commits
4 Commits
dec1bae92e
...
0adb3c7d9c
Author | SHA1 | Date | |
---|---|---|---|
0adb3c7d9c | |||
3ea7fbba52 | |||
2e18256b80 | |||
0ecca24d2e |
@ -1,6 +1,8 @@
|
|||||||
# TZ
|
# Benzene, cc-pVTZ
|
||||||
|
# ----------------
|
||||||
|
#
|
||||||
|
# ======================= ============== ==========
|
||||||
# E(CCSD(T)) Error %
|
# E(CCSD(T)) Error %
|
||||||
# ---------------+------------+-------
|
|
||||||
# ======================= ============== ==========
|
# ======================= ============== ==========
|
||||||
-231.80600113 1.1096E-03 0.96
|
-231.80600113 1.1096E-03 0.96
|
||||||
-231.80526641 7.5354E-04 1.96
|
-231.80526641 7.5354E-04 1.96
|
||||||
@ -2115,3 +2117,4 @@
|
|||||||
-231.87174571 1.7592E-07 99.94
|
-231.87174571 1.7592E-07 99.94
|
||||||
-231.87174571 1.7496E-07 100.00
|
-231.87174571 1.7496E-07 100.00
|
||||||
-231.87174565 0. 100.00
|
-231.87174565 0. 100.00
|
||||||
|
# ======================= ============== ==========
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
# R CCSD(T) Stochastic CCSD(T)
|
# CuCl dissociation curve
|
||||||
#---------------------------------------------------------
|
# -----------------------
|
||||||
|
#
|
||||||
|
# ====== ==================== ================ ============
|
||||||
|
# R CCSD(T) Stochastic(1%) Error
|
||||||
|
# ====== ==================== ================ ============
|
||||||
1.55 -2099.590506349950 -2099.58900041 1.2867E-03
|
1.55 -2099.590506349950 -2099.58900041 1.2867E-03
|
||||||
1.65 -2099.671184187604 -2099.67111214 1.4130E-03
|
1.65 -2099.671184187604 -2099.67111214 1.4130E-03
|
||||||
1.75 -2099.720045862965 -2099.72247666 1.8605E-03
|
1.75 -2099.720045862965 -2099.72247666 1.8605E-03
|
||||||
@ -12,4 +16,5 @@
|
|||||||
2.45 -2099.747028328725 -2099.74878665 1.8202E-03
|
2.45 -2099.747028328725 -2099.74878665 1.8202E-03
|
||||||
2.55 -2099.738451107727 -2099.73743548 1.6473E-03
|
2.55 -2099.738451107727 -2099.73743548 1.6473E-03
|
||||||
2.65 -2099.729597826175 -2099.73119406 1.7203E-03
|
2.65 -2099.729597826175 -2099.73119406 1.7203E-03
|
||||||
|
# ====== ==================== ================ ============
|
||||||
|
|
||||||
|
102
Data/data_buckets.txt
Normal file
102
Data/data_buckets.txt
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
# Indices of the first and last triplet in each bucket
|
||||||
|
1 3115
|
||||||
|
3116 7569
|
||||||
|
7570 12858
|
||||||
|
12859 18844
|
||||||
|
18845 25457
|
||||||
|
25458 32641
|
||||||
|
32642 40359
|
||||||
|
40360 48602
|
||||||
|
48603 57368
|
||||||
|
57369 66666
|
||||||
|
66667 76503
|
||||||
|
76504 86871
|
||||||
|
86872 97755
|
||||||
|
97756 109142
|
||||||
|
109143 121012
|
||||||
|
121013 133351
|
||||||
|
133352 146139
|
||||||
|
146140 159350
|
||||||
|
159351 172962
|
||||||
|
172963 186962
|
||||||
|
186963 201323
|
||||||
|
201324 216044
|
||||||
|
216045 231111
|
||||||
|
231112 246517
|
||||||
|
246518 262251
|
||||||
|
262252 278306
|
||||||
|
278307 294677
|
||||||
|
294678 311356
|
||||||
|
311357 328334
|
||||||
|
328335 345611
|
||||||
|
345612 363187
|
||||||
|
363188 381057
|
||||||
|
381058 399222
|
||||||
|
399223 417686
|
||||||
|
417687 436440
|
||||||
|
436441 455486
|
||||||
|
455487 474825
|
||||||
|
474826 494452
|
||||||
|
494453 514365
|
||||||
|
514366 534562
|
||||||
|
534563 555043
|
||||||
|
555044 575811
|
||||||
|
575812 596863
|
||||||
|
596864 618204
|
||||||
|
618205 639836
|
||||||
|
639837 661752
|
||||||
|
661753 683957
|
||||||
|
683958 706450
|
||||||
|
706451 729231
|
||||||
|
729232 752298
|
||||||
|
752299 775647
|
||||||
|
775648 799283
|
||||||
|
799284 823209
|
||||||
|
823210 847424
|
||||||
|
847425 871929
|
||||||
|
871930 896723
|
||||||
|
896724 921818
|
||||||
|
921819 947209
|
||||||
|
947210 972890
|
||||||
|
972891 998869
|
||||||
|
998870 1025144
|
||||||
|
1025145 1051719
|
||||||
|
1051720 1078598
|
||||||
|
1078599 1105778
|
||||||
|
1105779 1133271
|
||||||
|
1133272 1161078
|
||||||
|
1161079 1189201
|
||||||
|
1189202 1217647
|
||||||
|
1217648 1246417
|
||||||
|
1246418 1275517
|
||||||
|
1275518 1304950
|
||||||
|
1304951 1334724
|
||||||
|
1334725 1364840
|
||||||
|
1364841 1395318
|
||||||
|
1395319 1426160
|
||||||
|
1426161 1457375
|
||||||
|
1457376 1488973
|
||||||
|
1488974 1520966
|
||||||
|
1520967 1553357
|
||||||
|
1553358 1586169
|
||||||
|
1586170 1619407
|
||||||
|
1619408 1653094
|
||||||
|
1653095 1687252
|
||||||
|
1687253 1721895
|
||||||
|
1721896 1757050
|
||||||
|
1757051 1792738
|
||||||
|
1792739 1828990
|
||||||
|
1828991 1865850
|
||||||
|
1865851 1903360
|
||||||
|
1903361 1941580
|
||||||
|
1941581 1980567
|
||||||
|
1980568 2020412
|
||||||
|
2020413 2061234
|
||||||
|
2061235 2103178
|
||||||
|
2103179 2146484
|
||||||
|
2146485 2191517
|
||||||
|
2191518 2238934
|
||||||
|
2238935 2290534
|
||||||
|
2290535 2349496
|
||||||
|
2349497 2420847
|
||||||
|
|
42219
Data/max_data.dat
Normal file
42219
Data/max_data.dat
Normal file
File diff suppressed because it is too large
Load Diff
303
Data/plot_buckets.plt
Normal file
303
Data/plot_buckets.plt
Normal file
@ -0,0 +1,303 @@
|
|||||||
|
#!/usr/bin/gnuplot -persist
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# G N U P L O T
|
||||||
|
# Version 5.4 patchlevel 2 last modified 2021-06-01
|
||||||
|
#
|
||||||
|
# Copyright (C) 1986-1993, 1998, 2004, 2007-2021
|
||||||
|
# Thomas Williams, Colin Kelley and many others
|
||||||
|
#
|
||||||
|
# gnuplot home: http://www.gnuplot.info
|
||||||
|
# faq, bugs, etc: type "help FAQ"
|
||||||
|
# immediate help: type "help" (plot window: hit 'h')
|
||||||
|
# set terminal qt 0 font "Sans,9"
|
||||||
|
# set output
|
||||||
|
set term pdfcairo enhanced font "Times,14" linewidth 2 rounded size 5.0in, 3.0in
|
||||||
|
set out 'buckets.pdf'
|
||||||
|
set multiplot
|
||||||
|
unset clip points
|
||||||
|
set clip one
|
||||||
|
unset clip two
|
||||||
|
unset clip radial
|
||||||
|
set errorbars front 1.000000
|
||||||
|
set border 31 front lt black linewidth 1.000 dashtype solid
|
||||||
|
set zdata
|
||||||
|
set ydata
|
||||||
|
set xdata
|
||||||
|
set y2data
|
||||||
|
set x2data
|
||||||
|
set boxwidth
|
||||||
|
set boxdepth 0
|
||||||
|
set style fill empty border
|
||||||
|
set style rectangle back fc bgnd fillstyle solid 1.00 border lt -1
|
||||||
|
set style circle radius graph 0.02
|
||||||
|
set style ellipse size graph 0.05, 0.03 angle 0 units xy
|
||||||
|
set dummy x, y
|
||||||
|
set format x "% h"
|
||||||
|
set format y "% h"
|
||||||
|
set format x2 "% h"
|
||||||
|
set format y2 "% h"
|
||||||
|
set format z "% h"
|
||||||
|
set format cb "% h"
|
||||||
|
set format r "% h"
|
||||||
|
set ttics format "% h"
|
||||||
|
set timefmt "%d/%m/%y,%H:%M"
|
||||||
|
set angles radians
|
||||||
|
set tics back
|
||||||
|
set grid nopolar
|
||||||
|
set grid xtics nomxtics ytics nomytics noztics nomztics nortics nomrtics \
|
||||||
|
nox2tics nomx2tics noy2tics nomy2tics nocbtics nomcbtics
|
||||||
|
set grid layerdefault lt 0 linecolor 0 linewidth 0.500 dashtype solid, lt 0 linecolor 0 linewidth 0.500 dashtype solid
|
||||||
|
unset raxis
|
||||||
|
set theta counterclockwise right
|
||||||
|
set style parallel front lt black linewidth 2.000 dashtype solid
|
||||||
|
set key notitle
|
||||||
|
set key fixed right top vertical Right noreverse enhanced autotitle nobox
|
||||||
|
set key noinvert samplen 4 spacing 1 width 0 height 0
|
||||||
|
set key maxcolumns 0 maxrows 0
|
||||||
|
set key opaque
|
||||||
|
unset label
|
||||||
|
unset arrow
|
||||||
|
set arrow 1 from 1.00000, graph 0, 0 to 1.00000, graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 2 from 3116.00, graph 0, 0 to 3116.00, graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 3 from 7570.00, graph 0, 0 to 7570.00, graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 4 from 12859.0, graph 0, 0 to 12859.0, graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 5 from 18845.0, graph 0, 0 to 18845.0, graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 6 from 25458.0, graph 0, 0 to 25458.0, graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 7 from 32642.0, graph 0, 0 to 32642.0, graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 8 from 40360.0, graph 0, 0 to 40360.0, graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 9 from 48603.0, graph 0, 0 to 48603.0, graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 10 from 57369.0, graph 0, 0 to 57369.0, graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 11 from 66667.0, graph 0, 0 to 66667.0, graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 12 from 76504.0, graph 0, 0 to 76504.0, graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 13 from 86872.0, graph 0, 0 to 86872.0, graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 14 from 97756.0, graph 0, 0 to 97756.0, graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 15 from 109143., graph 0, 0 to 109143., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 16 from 121013., graph 0, 0 to 121013., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 17 from 133352., graph 0, 0 to 133352., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 18 from 146140., graph 0, 0 to 146140., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 19 from 159351., graph 0, 0 to 159351., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 20 from 172963., graph 0, 0 to 172963., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 21 from 186963., graph 0, 0 to 186963., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 22 from 201324., graph 0, 0 to 201324., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 23 from 216045., graph 0, 0 to 216045., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 24 from 231112., graph 0, 0 to 231112., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 25 from 246518., graph 0, 0 to 246518., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 26 from 262252., graph 0, 0 to 262252., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 27 from 278307., graph 0, 0 to 278307., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 28 from 294678., graph 0, 0 to 294678., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 29 from 311357., graph 0, 0 to 311357., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 30 from 328335., graph 0, 0 to 328335., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 31 from 345612., graph 0, 0 to 345612., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 32 from 363188., graph 0, 0 to 363188., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 33 from 381058., graph 0, 0 to 381058., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 34 from 399223., graph 0, 0 to 399223., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 35 from 417687., graph 0, 0 to 417687., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 36 from 436441., graph 0, 0 to 436441., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 37 from 455487., graph 0, 0 to 455487., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 38 from 474826., graph 0, 0 to 474826., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 39 from 494453., graph 0, 0 to 494453., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 40 from 514366, graph 0, 0 to 514366., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 41 from 534563, graph 0, 0 to 534563., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 42 from 555044, graph 0, 0 to 555044., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 43 from 575812, graph 0, 0 to 575812., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 44 from 596864, graph 0, 0 to 596864., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 45 from 618205, graph 0, 0 to 618205., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 46 from 639837, graph 0, 0 to 639837., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 47 from 661753, graph 0, 0 to 661753., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 48 from 683958, graph 0, 0 to 683958., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 49 from 706451, graph 0, 0 to 706451., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 50 from 729232, graph 0, 0 to 729232., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 51 from 752299, graph 0, 0 to 752299., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 52 from 775648, graph 0, 0 to 775648., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 53 from 799284, graph 0, 0 to 799284., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 54 from 823210, graph 0, 0 to 823210., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 55 from 847425, graph 0, 0 to 847425., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 56 from 871930, graph 0, 0 to 871930., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 57 from 896724, graph 0, 0 to 896724., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 58 from 921819, graph 0, 0 to 921819., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 59 from 947210, graph 0, 0 to 947210., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 60 from 972891, graph 0, 0 to 972891., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 61 from 998870, graph 0, 0 to 998870., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 62 from 1025145, graph 0, 0 to 1025145., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 63 from 1051720, graph 0, 0 to 1051720., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 64 from 1078599, graph 0, 0 to 1078599., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 65 from 1105779, graph 0, 0 to 1105779., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 66 from 1133272, graph 0, 0 to 1133272., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 67 from 1161079, graph 0, 0 to 1161079., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 68 from 1189202, graph 0, 0 to 1189202., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 69 from 1217648, graph 0, 0 to 1217648., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 70 from 1246418, graph 0, 0 to 1246418., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 71 from 1275518, graph 0, 0 to 1275518., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 72 from 1304951, graph 0, 0 to 1304951., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 73 from 1334725, graph 0, 0 to 1334725., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 74 from 1364841, graph 0, 0 to 1364841., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 75 from 1395319, graph 0, 0 to 1395319., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 76 from 1426161, graph 0, 0 to 1426161., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 77 from 1457376, graph 0, 0 to 1457376., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 78 from 1488974, graph 0, 0 to 1488974., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 79 from 1520967, graph 0, 0 to 1520967., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 80 from 1553358, graph 0, 0 to 1553358., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 81 from 1586170, graph 0, 0 to 1586170., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 82 from 1619408, graph 0, 0 to 1619408., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 83 from 1653095, graph 0, 0 to 1653095., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 84 from 1687253, graph 0, 0 to 1687253., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 85 from 1721896, graph 0, 0 to 1721896., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 86 from 1757051, graph 0, 0 to 1757051., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 87 from 1792739, graph 0, 0 to 1792739., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 88 from 1828991, graph 0, 0 to 1828991., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 89 from 1865851, graph 0, 0 to 1865851., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 90 from 1903361, graph 0, 0 to 1903361., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 91 from 1941581, graph 0, 0 to 1941581., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 92 from 1980568, graph 0, 0 to 1980568., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 93 from 2020413, graph 0, 0 to 2020413., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 94 from 2061235, graph 0, 0 to 2061235., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
set arrow 95 from 2103179, graph 0, 0 to 2103179., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
#set arrow 96 from 2146485, graph 0, 0 to 2146485., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
#set arrow 97 from 2191518, graph 0, 0 to 2191518., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
#set arrow 98 from 2238935, graph 0, 0 to 2238935., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
#set arrow 99 from 2290535, graph 0, 0 to 2290535., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
#set arrow 100 from 2349497, graph 0, 0 to 2349497., graph 1, 0 nohead back nofilled linecolor rgb "#999999" linewidth 1.000 dashtype solid
|
||||||
|
unset style line
|
||||||
|
unset style arrow
|
||||||
|
set style histogram clustered gap 2 title textcolor lt -1
|
||||||
|
unset object
|
||||||
|
unset walls
|
||||||
|
set style textbox transparent margins 1.0, 1.0 border lt -1 linewidth 1.0
|
||||||
|
set offsets 0, 0, 0, 0
|
||||||
|
set pointsize 1
|
||||||
|
set pointintervalbox 1
|
||||||
|
set encoding default
|
||||||
|
unset polar
|
||||||
|
unset parametric
|
||||||
|
unset spiderplot
|
||||||
|
unset decimalsign
|
||||||
|
unset micro
|
||||||
|
unset minussign
|
||||||
|
set view 60, 30, 1, 1
|
||||||
|
set view azimuth 0
|
||||||
|
set rgbmax 255
|
||||||
|
set samples 100, 100
|
||||||
|
set isosamples 10, 10
|
||||||
|
set surface
|
||||||
|
unset contour
|
||||||
|
set cntrlabel format '%8.3g' font '' start 5 interval 20
|
||||||
|
set mapping cartesian
|
||||||
|
set datafile separator whitespace
|
||||||
|
set datafile nocolumnheaders
|
||||||
|
unset hidden3d
|
||||||
|
set cntrparam order 4
|
||||||
|
set cntrparam linear
|
||||||
|
set cntrparam levels 5
|
||||||
|
set cntrparam levels auto
|
||||||
|
set cntrparam firstlinetype 0 unsorted
|
||||||
|
set cntrparam points 5
|
||||||
|
set size ratio 0 1,1
|
||||||
|
set origin 0,0
|
||||||
|
set style data points
|
||||||
|
set style function lines
|
||||||
|
unset xzeroaxis
|
||||||
|
unset yzeroaxis
|
||||||
|
unset zzeroaxis
|
||||||
|
unset x2zeroaxis
|
||||||
|
unset y2zeroaxis
|
||||||
|
set xyplane relative 0.5
|
||||||
|
set tics scale 1, 0.5, 1, 1, 1
|
||||||
|
set mxtics default
|
||||||
|
set mytics default
|
||||||
|
set mztics default
|
||||||
|
set mx2tics default
|
||||||
|
set my2tics default
|
||||||
|
set mcbtics default
|
||||||
|
set mrtics default
|
||||||
|
set nomttics
|
||||||
|
set xtics border in scale 1,0.5 mirror norotate autojustify
|
||||||
|
set xtics norangelimit autofreq
|
||||||
|
set ytics border in scale 1,0.5 mirror norotate autojustify
|
||||||
|
set ytics norangelimit autofreq
|
||||||
|
set ztics border in scale 1,0.5 nomirror norotate autojustify
|
||||||
|
set ztics norangelimit autofreq
|
||||||
|
unset x2tics
|
||||||
|
unset y2tics
|
||||||
|
set cbtics border in scale 1,0.5 mirror norotate autojustify
|
||||||
|
set cbtics norangelimit autofreq
|
||||||
|
set rtics axis in scale 1,0.5 nomirror norotate autojustify
|
||||||
|
set rtics norangelimit autofreq
|
||||||
|
unset ttics
|
||||||
|
set title ""
|
||||||
|
set title font "" textcolor lt -1 norotate
|
||||||
|
set timestamp bottom
|
||||||
|
set timestamp ""
|
||||||
|
set timestamp font "" textcolor lt -1 norotate
|
||||||
|
set trange [ * : * ] noreverse nowriteback
|
||||||
|
set urange [ * : * ] noreverse nowriteback
|
||||||
|
set vrange [ * : * ] noreverse nowriteback
|
||||||
|
set xlabel "Index(a,b,c)"
|
||||||
|
set xlabel font "" textcolor lt -1 norotate
|
||||||
|
set x2label ""
|
||||||
|
set x2label font "" textcolor lt -1 norotate
|
||||||
|
set xrange [ 0:2100000 ] noreverse writeback
|
||||||
|
set x2range [ * : * ] noreverse writeback
|
||||||
|
set ylabel "E^{abc} / P^{abc}"
|
||||||
|
set ylabel font "" textcolor lt -1 rotate
|
||||||
|
set y2label ""
|
||||||
|
set y2label font "" textcolor lt -1 rotate
|
||||||
|
set yrange [ 0.00000 : 10.0000 ] noreverse writeback
|
||||||
|
set y2range [ * : * ] noreverse writeback
|
||||||
|
set zlabel ""
|
||||||
|
set zlabel font "" textcolor lt -1 norotate
|
||||||
|
set zrange [ * : * ] noreverse writeback
|
||||||
|
set cblabel ""
|
||||||
|
set cblabel font "" textcolor lt -1 rotate
|
||||||
|
set cbrange [ * : * ] noreverse writeback
|
||||||
|
set rlabel ""
|
||||||
|
set rlabel font "" textcolor lt -1 norotate
|
||||||
|
set rrange [ * : * ] noreverse writeback
|
||||||
|
unset logscale
|
||||||
|
unset jitter
|
||||||
|
set zero 1e-08
|
||||||
|
set lmargin -1
|
||||||
|
set bmargin -1
|
||||||
|
set rmargin -1
|
||||||
|
set tmargin -1
|
||||||
|
set locale "en_AU.UTF-8"
|
||||||
|
set pm3d explicit at s
|
||||||
|
set pm3d scansautomatic
|
||||||
|
set pm3d interpolate 1,1 flush begin noftriangles noborder corners2color mean
|
||||||
|
set pm3d clip z
|
||||||
|
set pm3d nolighting
|
||||||
|
set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB
|
||||||
|
set palette rgbformulae 7, 5, 15
|
||||||
|
set colorbox default
|
||||||
|
set colorbox vertical origin screen 0.9, 0.2 size screen 0.05, 0.6 front noinvert bdefault
|
||||||
|
set style boxplot candles range 1.50 outliers pt 7 separation 1 labels auto unsorted
|
||||||
|
set loadpath
|
||||||
|
set fontpath
|
||||||
|
set psdir
|
||||||
|
set fit brief errorvariables nocovariancevariables errorscaling prescale nowrap v5
|
||||||
|
GNUTERM = "qt"
|
||||||
|
I = {0.0, 1.0}
|
||||||
|
VoxelDistance = 0.0
|
||||||
|
#set xtics 100000
|
||||||
|
unset grid
|
||||||
|
## Last datafile plotted: "max_data.dat"
|
||||||
|
plot 'max_data.dat' every 1 index 0 u 1:(-$3 * 2420853) w impulses lw 3 title 'Uniform sampling', \
|
||||||
|
'max_data.dat' every 1 index 0 u 1:(-$3 * $2) w impulses lw 3 title 'Importance sampling' , 0.051806920848 w l title ''
|
||||||
|
|
||||||
|
# Zoomed plot
|
||||||
|
set grid
|
||||||
|
set object 1 rect from screen 0.45, screen 0.3 to screen 0.94, screen 0.8 behind
|
||||||
|
set object 1 rect fc rgb "white" fillstyle solid 1.0 # fully opaque white background
|
||||||
|
set size 0.5, 0.5 # smaller plot size
|
||||||
|
set origin 0.45, 0.3 # position the zoomed plot
|
||||||
|
set xrange [0:3115] # set the x-range for the zoom
|
||||||
|
set yrange [*:*] # auto-scale y-axis based on the zoomed data
|
||||||
|
unset xlabel
|
||||||
|
unset ylabel
|
||||||
|
unset key
|
||||||
|
replot
|
||||||
|
|
||||||
|
# Finish multiplot
|
||||||
|
unset multiplot
|
||||||
|
# EOF
|
||||||
|
|
@ -1,31 +1,41 @@
|
|||||||
# DZ: AMD EPYC
|
# Wall-clock time for benzene, cc-pVDZ
|
||||||
1 266. 0.1015625
|
|
||||||
|
# AMD EPYC
|
||||||
|
# ===== ================= ====================
|
||||||
|
# Cores Seconds Arithmetic intensity
|
||||||
|
# ===== ================= ====================
|
||||||
|
1 266.065728473472 0.1015625
|
||||||
2 133.202792882919 0.203125
|
2 133.202792882919 0.203125
|
||||||
4 68.3963158130646 0.40625
|
4 68.3963158130646 0.40625
|
||||||
8 35.3168480396271 0.8125
|
8 35.3168480396271 0.8125
|
||||||
16 17.4276471138000 1.625
|
16 17.4276471138000 1.625
|
||||||
24 11.5433599948883
|
24 11.5433599948883
|
||||||
28 10.3698871135712
|
28 10.3698871135712
|
||||||
32 9.43897294998169 3.25 12.1150507926941
|
32 9.43897294998169 3.25
|
||||||
40 8.34011387825012
|
40 8.34011387825012
|
||||||
48 7.40271902084351
|
48 7.40271902084351
|
||||||
56 6.72331714630127
|
56 6.72331714630127
|
||||||
64 6.40971302986145 6.5
|
64 6.40971302986145 6.5
|
||||||
|
# ===== ================= ====================
|
||||||
|
|
||||||
|
|
||||||
# DZ: ARM Q80
|
# ARM Q80
|
||||||
1 740.99828964984044 0.109375
|
# ===== ================= ====================
|
||||||
2 368.10031103389338 0.21875
|
# Cores Seconds Arithmetic intensity
|
||||||
4 183.47006468195468 0.4375
|
# ===== ================= ====================
|
||||||
8 92.296218489762396 0.875
|
1 740.9982896498404 0.109375
|
||||||
16 47.492009534966201 1.75
|
2 368.1003110338933 0.21875
|
||||||
24 32.694960118737072 2.625
|
4 183.4700646819546 0.4375
|
||||||
32 25.408835886977613 3.5
|
8 92.29621848976239 0.875
|
||||||
40 21.404467605985701 4.375
|
16 47.49200953496620 1.75
|
||||||
48 19.549200831912458 5.25
|
24 32.69496011873707 2.625
|
||||||
56 18.556575596332550 6.125 # Max
|
32 25.40883588697761 3.5
|
||||||
64 18.981703117024153 7.0
|
40 21.40446760598570 4.375
|
||||||
68 21.941064534708858 7.4375
|
48 19.54920083191245 5.25
|
||||||
72 27.031634503975511 7.87
|
56 18.55657559633255 6.125 # Max
|
||||||
76 32.015603828709573 8.3125
|
64 18.98170311702415 7.0
|
||||||
80 39.939096361864358 8.75
|
68 21.94106453470885 7.4375
|
||||||
|
72 27.03163450397551 7.87
|
||||||
|
76 32.01560382870957 8.3125
|
||||||
|
80 39.93909636186435 8.75
|
||||||
|
# ===== ================= ====================
|
||||||
|
2
Manuscript/.gitignore
vendored
Normal file
2
Manuscript/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/build/
|
||||||
|
/svg-inkscape/
|
@ -5,4 +5,4 @@ BUILD=build
|
|||||||
inkscape --export-type=pdf $<
|
inkscape --export-type=pdf $<
|
||||||
|
|
||||||
$(BUILD)/$(TEX).pdf: $(TEX).tex $(wildcard *.pdf) $(wildcard *.bib) buckets.pdf
|
$(BUILD)/$(TEX).pdf: $(TEX).tex $(wildcard *.pdf) $(wildcard *.bib) buckets.pdf
|
||||||
latexmk -shell-escape -pdf -outdir=$(BUILD) $(TEX)
|
latexmk -shell-escape -pdf $(TEX)
|
||||||
|
BIN
Manuscript/buckets.pdf
Normal file
BIN
Manuscript/buckets.pdf
Normal file
Binary file not shown.
70
Manuscript/orcidlink.sty
Normal file
70
Manuscript/orcidlink.sty
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
%%
|
||||||
|
%% This is file `orcidlink.sty',
|
||||||
|
%% generated with the docstrip utility.
|
||||||
|
%%
|
||||||
|
%% The original source files were:
|
||||||
|
%%
|
||||||
|
%% orcidlink.dtx (with options: `package')
|
||||||
|
%%
|
||||||
|
%% This is a generated file.
|
||||||
|
%%
|
||||||
|
%% Copyright (C) 2019-2023 by Leo C. Stein <leo.stein@gmail.com>
|
||||||
|
%% --------------------------------------------------------------------------
|
||||||
|
%% This work may be distributed and/or modified under the
|
||||||
|
%% conditions of the LaTeX Project Public License, either version 1.3
|
||||||
|
%% of this license or (at your option) any later version.
|
||||||
|
%% The latest version of this license is in
|
||||||
|
%% http://www.latex-project.org/lppl.txt
|
||||||
|
%% and version 1.3 or later is part of all distributions of LaTeX
|
||||||
|
%% version 2005/12/01 or later.
|
||||||
|
%%
|
||||||
|
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
|
||||||
|
\ProvidesPackage{orcidlink}
|
||||||
|
[2023/12/30 v1.0.5 Linked ORCiD logo macro package]
|
||||||
|
|
||||||
|
%% All I did was package up Milo's code on TeX.SE,
|
||||||
|
%% see https://tex.stackexchange.com/a/445583/34063
|
||||||
|
\RequirePackage{hyperref}
|
||||||
|
\RequirePackage{tikz}
|
||||||
|
|
||||||
|
\ProcessOptions\relax
|
||||||
|
|
||||||
|
\usetikzlibrary{svg.path}
|
||||||
|
|
||||||
|
\definecolor{orcidlogocol}{HTML}{A6CE39}
|
||||||
|
\tikzset{
|
||||||
|
orcidlogo/.pic={
|
||||||
|
\fill[orcidlogocol] svg{M256,128c0,70.7-57.3,128-128,128C57.3,256,0,198.7,0,128C0,57.3,57.3,0,128,0C198.7,0,256,57.3,256,128z};
|
||||||
|
\fill[white] svg{M86.3,186.2H70.9V79.1h15.4v48.4V186.2z}
|
||||||
|
svg{M108.9,79.1h41.6c39.6,0,57,28.3,57,53.6c0,27.5-21.5,53.6-56.8,53.6h-41.8V79.1z M124.3,172.4h24.5c34.9,0,42.9-26.5,42.9-39.7c0-21.5-13.7-39.7-43.7-39.7h-23.7V172.4z}
|
||||||
|
svg{M88.7,56.8c0,5.5-4.5,10.1-10.1,10.1c-5.6,0-10.1-4.6-10.1-10.1c0-5.6,4.5-10.1,10.1-10.1C84.2,46.7,88.7,51.3,88.7,56.8z};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
%% Reciprocal of the height of the svg whose source is above. The
|
||||||
|
%% original generates a 256pt high graphic; this macro holds 1/256.
|
||||||
|
\newcommand{\@OrigHeightRecip}{0.00390625}
|
||||||
|
|
||||||
|
%% We will compute the current X height to make the logo the right height
|
||||||
|
\newlength{\@curXheight}
|
||||||
|
|
||||||
|
%% Prevent externalization of the ORCiD logo.
|
||||||
|
\newcommand{\@preventExternalization}{%
|
||||||
|
\ifcsname tikz@library@external@loaded\endcsname%
|
||||||
|
\tikzset{external/export next=false}\else\fi%
|
||||||
|
}
|
||||||
|
|
||||||
|
\DeclareRobustCommand\orcidlink[1]{%
|
||||||
|
\texorpdfstring{%
|
||||||
|
\setlength{\@curXheight}{\fontcharht\font`X}%
|
||||||
|
\href{https://orcid.org/#1}{\XeTeXLinkBox{\mbox{%
|
||||||
|
\@preventExternalization%
|
||||||
|
\begin{tikzpicture}[yscale=-\@OrigHeightRecip*\@curXheight,
|
||||||
|
xscale=\@OrigHeightRecip*\@curXheight,transform shape]
|
||||||
|
\pic{orcidlogo};
|
||||||
|
\end{tikzpicture}%
|
||||||
|
}}}}{}}
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
%%
|
||||||
|
%% End of file `orcidlink.sty'.
|
@ -549,7 +549,7 @@ swh:1:dir:6d82ae7ac757c78d7720dd89dfa52d7a453d2f68;origin=https://github.com/Qua
|
|||||||
year = {2021}
|
year = {2021}
|
||||||
}
|
}
|
||||||
|
|
||||||
@article{Gaussian.based.James.2017,
|
@article{GaussianBasedJames2017,
|
||||||
author = {James McClain and Qiming Sun and Garnet Kin-Lic Chan and Timothy C. Berkelbach},
|
author = {James McClain and Qiming Sun and Garnet Kin-Lic Chan and Timothy C. Berkelbach},
|
||||||
doi = {10.1021/acs.jctc.7b00049},
|
doi = {10.1021/acs.jctc.7b00049},
|
||||||
eprint = {1701.04832v1},
|
eprint = {1701.04832v1},
|
||||||
@ -564,3 +564,17 @@ swh:1:dir:6d82ae7ac757c78d7720dd89dfa52d7a453d2f68;origin=https://github.com/Qua
|
|||||||
volume = {13},
|
volume = {13},
|
||||||
year = {2017}
|
year = {2017}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@article{pople_1999,
|
||||||
|
author = {Pople, John A.},
|
||||||
|
title = {{Nobel Lecture: Quantum chemical models}},
|
||||||
|
journal = {Rev. Mod. Phys.},
|
||||||
|
volume = {71},
|
||||||
|
number = {5},
|
||||||
|
pages = {1267--1274},
|
||||||
|
year = {1999},
|
||||||
|
month = oct,
|
||||||
|
issn = {1539-0756},
|
||||||
|
publisher = {American Physical Society},
|
||||||
|
doi = {10.1103/RevModPhys.71.1267}
|
||||||
|
}
|
||||||
|
@ -87,7 +87,7 @@
|
|||||||
|
|
||||||
\begin{abstract}
|
\begin{abstract}
|
||||||
We introduce a novel algorithm that leverages stochastic sampling
|
We introduce a novel algorithm that leverages stochastic sampling
|
||||||
techniques to approximate the perturbative triples correction in the
|
techniques to compute the perturbative triples correction in the
|
||||||
coupled-cluster (CC) framework.
|
coupled-cluster (CC) framework.
|
||||||
By combining elements of randomness and determinism, our algorithm
|
By combining elements of randomness and determinism, our algorithm
|
||||||
achieves a favorable balance between accuracy and computational cost.
|
achieves a favorable balance between accuracy and computational cost.
|
||||||
@ -118,14 +118,11 @@ that were previously computationally prohibitive.
|
|||||||
\label{sec:introduction}
|
\label{sec:introduction}
|
||||||
|
|
||||||
Coupled cluster (CC) theory is an accurate quantum mechanical approach widely used in computational chemistry to describe the electronic structure of atoms and molecules.\cite{Cizek_1966,Cizek_1969,Paldus_1992}
|
Coupled cluster (CC) theory is an accurate quantum mechanical approach widely used in computational chemistry to describe the electronic structure of atoms and molecules.\cite{Cizek_1966,Cizek_1969,Paldus_1992}
|
||||||
In recent years, CC theories for both ground state and excited states have received considerable attention in the context of material
|
In recent years, CC theories for both ground state and excited states
|
||||||
science due to its good balance between accuracy and computational cost.\cite{APeriodicEquaGallo2021,Gaussian.based.James.2017}
|
have received considerable attention in the context of material
|
||||||
CC offers a systematic and rigorous framework for accurate predictions of
|
science due to its good balance between accuracy and computational cost.\cite{APeriodicEquaGallo2021,GaussianBasedJames2017}
|
||||||
molecular properties and reactions by accounting for electron correlation
|
CC offers a systematic and rigorous framework for accurate predictions of molecular properties and reactions by accounting for electron correlation effects beyond the mean-field approximation.
|
||||||
effects beyond the mean-field approximation. The CC framework starts with a
|
The CC framework starts with a parameterized wave function, typically referred to as the CC wave function, which is expressed as an exponential series of particle-hole excitation operators acting on a reference state:
|
||||||
parameterized wave function, typically referred to as the CC wave function,
|
|
||||||
which is expressed as an exponential series of particle-hole excitation
|
|
||||||
operators acting on a reference state:
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\ket{\Psi_{\text{CC}}} = e^{\hat{T}} \ket{\Phi}
|
\ket{\Psi_{\text{CC}}} = e^{\hat{T}} \ket{\Phi}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
@ -168,11 +165,11 @@ For a closed-shell reference with canonical orbitals, each individual term is ex
|
|||||||
\end{equation}
|
\end{equation}
|
||||||
and depends on the canonical orbital energies $\epsilon$, and on the tensors $W$ and $V$:
|
and depends on the canonical orbital energies $\epsilon$, and on the tensors $W$ and $V$:
|
||||||
\begin{align}
|
\begin{align}
|
||||||
W_{ijk}^{abc} & = P_{ijk}^{abc} \qty( \sum_d^{\text{virt}} \qty(bd|ai) t_{kj}^{cd} -
|
W_{ijk}^{abc} & = \Pi_{ijk}^{abc} \qty( \sum_d^{\text{virt}} \qty(bd|ai) t_{kj}^{cd} -
|
||||||
\sum_l^{\text{occ}} \qty(ck|jl) t_{ab}^{il}) \\
|
\sum_l^{\text{occ}} \qty(ck|jl) t_{ab}^{il}) \\
|
||||||
V_{ijk}^{abc} & = W_{ijk}^{abc} + \qty(bj|ck) t_i^a + \qty(ai|ck) t_j^b + \qty(ai|bj) t_k^c
|
V_{ijk}^{abc} & = W_{ijk}^{abc} + \qty(bj|ck) t_i^a + \qty(ai|ck) t_j^b + \qty(ai|bj) t_k^c
|
||||||
\end{align}
|
\end{align}
|
||||||
where $P_{ijk}^{abc}$ is a sign-less permutation operator, $(t^a_i, t^{ab}_{ij})$ are the CCSD amplitudes,
|
where $\Pi_{ijk}^{abc}$ is a sign-less permutation operator, $(t^a_i, t^{ab}_{ij})$ are the CCSD amplitudes,
|
||||||
\((pq|rs)\) are the two-electron coulomb integrals,
|
\((pq|rs)\) are the two-electron coulomb integrals,
|
||||||
and the indices $i,j,k,l$ and $a,b,c,d$ refer to occupied and virtual orbitals, respectively.
|
and the indices $i,j,k,l$ and $a,b,c,d$ refer to occupied and virtual orbitals, respectively.
|
||||||
|
|
||||||
@ -192,7 +189,7 @@ In the algorithm proposed by Rendell\cite{rendell_1991}, for each given triplet
|
|||||||
|
|
||||||
\subsection{Stochastic formulation}
|
\subsection{Stochastic formulation}
|
||||||
|
|
||||||
We propose an algorithm influenced by the semi-stochastic approach originally developed for computing the Epstein-Nesbet second-order perturbation correction to the energy. \cite{garniron_2017}
|
We propose an algorithm influenced by the semi-stochastic approach introduced in Ref.~\citenum{garniron_2017}, originally developed for computing the Epstein-Nesbet second-order perturbation correction to the energy.
|
||||||
|
|
||||||
The perturbative triples correction is expressed as a sum of corrections, each indexed solely by virtual orbitals:
|
The perturbative triples correction is expressed as a sum of corrections, each indexed solely by virtual orbitals:
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
@ -203,11 +200,11 @@ Monte Carlo sampling is employed by selecting samples $E^{abc}$.
|
|||||||
The principal advantage of this formulation is that the number of triplet combinations $(a,b,c)$, given by $N_v^3$, is sufficiently small to allow for all contributions $E^{abc}$ to be stored in memory.
|
The principal advantage of this formulation is that the number of triplet combinations $(a,b,c)$, given by $N_v^3$, is sufficiently small to allow for all contributions $E^{abc}$ to be stored in memory.
|
||||||
The first time a triplet $(a,b,c)$ is drawn, its corresponding value $E^{abc}$ is computed and then stored.
|
The first time a triplet $(a,b,c)$ is drawn, its corresponding value $E^{abc}$ is computed and then stored.
|
||||||
Subsequent drawings of the same triplet retrieve the value from memory. We refer to this technique as \emph{memoization}.
|
Subsequent drawings of the same triplet retrieve the value from memory. We refer to this technique as \emph{memoization}.
|
||||||
Thus, the computational expense of calculating the sample, which scales as $N_\text{o}^3 \times N_\text{v}$, is incurred only once, with all subsequent accesses being computationally trivial.
|
Thus, the computational expense of calculating the sample, which scales as $N_\text{o}^3 \times N_\text{v}$, is incurred only once, with all subsequent accesses being made at no cost.
|
||||||
Consequently, employing a sufficient number of Monte Carlo samples to ensure that each contribution is selected at least once results in a total computational cost that is only negligibly higher than that of an exact computation.
|
Consequently, employing a sufficient number of Monte Carlo samples to ensure that each contribution is selected at least once results in a total computational cost that is only negligibly higher than that of an exact computation.
|
||||||
|
|
||||||
|
|
||||||
To reduce the variance, the samples are drawn using the probability
|
To reduce the fluctuations of the statistical estimator, we apply importance sampling: the samples are drawn using the probability
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
P^{abc} = \frac{1}{\mathcal{N}} \frac{1}{\max \left(\epsilon_{\min}, \epsilon_a + \epsilon_b + \epsilon_c \right)}
|
P^{abc} = \frac{1}{\mathcal{N}} \frac{1}{\max \left(\epsilon_{\min}, \epsilon_a + \epsilon_b + \epsilon_c \right)}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
@ -219,39 +216,41 @@ E_{(T)} = \left\langle \frac{E^{abc}}{P^{abc}} \right \rangle_{P^{abc}} =
|
|||||||
\end{equation}
|
\end{equation}
|
||||||
where $n^{abc}$ is the number of times the triplet $(a,b,c)$ was drawn with probability $P^{abc}$.
|
where $n^{abc}$ is the number of times the triplet $(a,b,c)$ was drawn with probability $P^{abc}$.
|
||||||
|
|
||||||
This approach effectively reduces the statistical error bars by approximately a factor of two for the same computational expense due to two primary reasons: i) the estimator exhibits reduced fluctuations, ii) triplet combinations with low-energy orbitals are significantly more likely to be selected than others, enhancing the efficiency of memoization.
|
\begin{figure}[t]
|
||||||
|
|
||||||
We employ the inverse transform sampling technique to select samples, where an array of pairs $\qty(P^{abc}, (a,b,c))$ is stored.
|
|
||||||
To further reduce the variance of the samples, this array is sorted in descending order based on $P^{abc}$ and subsequently partitioned into buckets, $B$, as can be seen diagrammatically in Figure~\ref{fig:buckets}.
|
|
||||||
Each bucket is designed such that the sum $\sum_{(a,b,c) \in B} P^{abc}$ within it is as uniform
|
|
||||||
as possible across all buckets.
|
|
||||||
As each bucket is equally probable, samples are defined as combinations of triplets, with one triplet drawn from each bucket.
|
|
||||||
Should the values of $E^{abc}$ be skewed, this advanced refinement significantly diminishes the variance.
|
|
||||||
|
|
||||||
\begin{figure}[h]
|
|
||||||
\centering
|
\centering
|
||||||
\includegraphics{buckets.pdf}
|
\includegraphics[width=\columnwidth]{buckets.pdf}
|
||||||
\caption{%
|
\caption{%
|
||||||
Diagrammatic representation of the bucket partition of the triplets \(a,b,c\).
|
Ratios $\frac{E^{abc}}{P^{abc}}$ obtained with the data of benzene/cc-pVTZ, using uniform or importance sampling.
|
||||||
Every bucket \(B_i\) contains a number of triplets such that the sum
|
Every bucket, delimited by vertical bars, contains a number of triplets such that the sum
|
||||||
\(\sum_{(a,b,c)}P^{abc}\) remains as uniform as possible.
|
\(\sum_{(a,b,c)}P^{abc}\) remains as uniform as possible. The zoomed window corresponds to the first bucket.
|
||||||
|
The fluctuations originating from the discrepancy of the values in the first buckets are considerably reduced by importance sampling.
|
||||||
\label{fig:buckets}
|
\label{fig:buckets}
|
||||||
}
|
}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
|
This approach effectively reduces the statistical error bars by approximately a factor of two for the same computational expense due to two primary reasons: i) the estimator exhibits reduced fluctuations, ii) triplet combinations with low-energy orbitals are significantly more likely to be selected than others, enhancing the efficiency of memoization (see Fig.~\ref{fig:buckets}).
|
||||||
|
|
||||||
|
We employ the inverse transform sampling technique to select samples, where an array of pairs $\qty(P^{abc}, (a,b,c))$ is stored.
|
||||||
|
To further reduce the variance of the samples, this array is sorted in descending order based on $P^{abc}$ and subsequently partitioned into buckets as can be seen diagrammatically in Figure~\ref{fig:buckets}.
|
||||||
|
The partitioning into buckets is designed such that the sum $\sum_{(a,b,c) \in B} P^{abc}$ within each bucket $B$ is as uniform
|
||||||
|
as possible across all buckets.
|
||||||
|
As each bucket is equally probable, samples are defined as combinations of triplets, with one triplet drawn from each bucket.
|
||||||
|
Should the values of $E^{abc}$ be skewed, this advanced refinement significantly diminishes the variance.
|
||||||
|
|
||||||
The total perturbative contribution is computed as the aggregate of contributions from various buckets:
|
The total perturbative contribution is computed as the aggregate of contributions from various buckets:
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
E_{(T)} = \sum_B E_B = \sum_B\sum_{(a,b,c) \in B} E^{abc}.
|
E_{(T)} = \sum_B E_B = \sum_B\sum_{(a,b,c) \in B} E^{abc}.
|
||||||
\end{equation}
|
\end{equation}
|
||||||
Once every triplet within a bucket $B$ has been drawn at least once, the contribution $E_B$ can be determined.
|
Once every triplet within a bucket $B$ has been drawn at least once, the contribution $E_B$ can be determined.
|
||||||
At this juncture, there is no longer a necessity to evaluate \(E_B\) stochastically, and the buckets can be categorized into stochastic ($\mathcal{S}$) and deterministic ($\mathcal{D}$) groups:
|
At this juncture, there is no longer a necessity to evaluate \(E_B\) stochastically, and the buckets can be categorized into
|
||||||
|
deterministic ($\mathcal{D}$) and stochastic ($\mathcal{S}$) groups:
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
|
\label{eq:separation}
|
||||||
E_{(T)} = \sum_{B \in \mathcal{D}} E_B + \frac{1}{|\mathcal{S}|} \sum_{B \in \mathcal{S}}
|
E_{(T)} = \sum_{B \in \mathcal{D}} E_B + \frac{1}{|\mathcal{S}|} \sum_{B \in \mathcal{S}}
|
||||||
\left \langle \frac{E^B_{abc}}{P^{abc}} \right \rangle_{P^{abc}}.
|
\left \langle \frac{E^B_{abc}}{P^{abc}} \right \rangle_{P^{abc}}.
|
||||||
\end{equation}
|
\end{equation}
|
||||||
Not all buckets are of equal size; the number of triplets per bucket increases with the bucket's index. Consequently, the initial buckets transition into the deterministic set first, gradually reducing the stochastic contribution. When every triplet has been drawn, the exact value of $E_{(T)}$ is obtained, devoid of statistical error.
|
Not all buckets are of equal size (see Figure~\ref{fig:buckets}); the number of triplets per bucket increases with the bucket's index. Consequently, the initial buckets transition into the deterministic set first, gradually reducing the stochastic contribution. When every triplet has been drawn, the exact value of $E_{(T)}$ is obtained, devoid of statistical error.
|
||||||
To accelerate the completion of the buckets, each Monte Carlo iteration triggers the computation of the first non-computed triplet. This ensures that after $N$ drawings, the
|
To accelerate the completion of the buckets, each Monte Carlo iteration triggers concurrently the computation of the first non-computed triplet. This ensures that after $N$ drawings, the
|
||||||
exact contribution from each bucket can be obtained.
|
exact contribution from each bucket can be obtained.
|
||||||
|
|
||||||
The computational time required to generate a random number is negligible compared to the time needed to compute a contribution, $E^{abc}$.
|
The computational time required to generate a random number is negligible compared to the time needed to compute a contribution, $E^{abc}$.
|
||||||
@ -262,25 +261,6 @@ Therefore, it is possible to obtain the exact contribution, characterized by zer
|
|||||||
\subsection{Implementation Details}
|
\subsection{Implementation Details}
|
||||||
\label{sec:implementation}
|
\label{sec:implementation}
|
||||||
|
|
||||||
The algorithm presented in Algorithm~\ref{alg:stoch} was implemented in the \textsc{Quantum Package} software.
|
|
||||||
\cite{garniron_2019}
|
|
||||||
The stochastic algorithm is implemented using OpenMP tasks, where each task
|
|
||||||
consists in the computation of a single component $E^{abc}$.
|
|
||||||
The computation of the running average and statistical error is executed every second,
|
|
||||||
for printing or for exiting when the statistical error gets below a given threshold.
|
|
||||||
|
|
||||||
The number of samples $N^{abc}$ of each triplet $(a,b,c)$ is initialized to $-1$, to identify
|
|
||||||
the contributions that have not been already computed.
|
|
||||||
An outer \emph{for loop} runs over the maximum number of iteration, equal to
|
|
||||||
the number of different triplets $N_{\text{triplets}}$.
|
|
||||||
|
|
||||||
Within a loop iteration, the index of the first non-computed triplet $(a,b,c)$ is identified, and the task associated with its computation is sent to the task queue.
|
|
||||||
As this triplet has never been drawn, $N^{abc}$ is set to zero.
|
|
||||||
Then, a triplet $(a,b,c)$ is drawn randomly.
|
|
||||||
If the $E^{abc}$ has not been computed (identified by $N^{abc}=-1$), the number of samples is set to zero and the task for the computation of this contribution is enqueued.
|
|
||||||
In any case, $N^{abc}$ is then incremented.
|
|
||||||
|
|
||||||
|
|
||||||
\begin{algorithm}[H]
|
\begin{algorithm}[H]
|
||||||
\caption{\label{alg:stoch} Pseudo-code for the computation of the perturbative triples correction implemented in Quantum Package. $i_\text{min}$ denotes the first non-computed triplet, $w_{\text{accu}}$ contains the cumulative probability density, $\text{Search}(A, x)$ searches for $x$ in array $A$, $\text{First}(i)$ and $\text{Last}(i)$ return the first last indices belonging to bucket $i$.}
|
\caption{\label{alg:stoch} Pseudo-code for the computation of the perturbative triples correction implemented in Quantum Package. $i_\text{min}$ denotes the first non-computed triplet, $w_{\text{accu}}$ contains the cumulative probability density, $\text{Search}(A, x)$ searches for $x$ in array $A$, $\text{First}(i)$ and $\text{Last}(i)$ return the first last indices belonging to bucket $i$.}
|
||||||
$i_{\text{min}} \leftarrow 1$ ;
|
$i_{\text{min}} \leftarrow 1$ ;
|
||||||
@ -345,6 +325,25 @@ $t_0 \leftarrow \text{WallClockTime}()$ \;
|
|||||||
}
|
}
|
||||||
\end{algorithm}
|
\end{algorithm}
|
||||||
|
|
||||||
|
The algorithm presented in Algorithm~\ref{alg:stoch} was implemented in the \textsc{Quantum Package} software.
|
||||||
|
\cite{garniron_2019}
|
||||||
|
The stochastic algorithm is implemented using OpenMP tasks, where each task
|
||||||
|
consists in the computation of a single component $E^{abc}$.
|
||||||
|
The computation of the running average and statistical error is executed every second,
|
||||||
|
for printing or for exiting when the statistical error gets below a given threshold.
|
||||||
|
|
||||||
|
The number of samples $N^{abc}$ of each triplet $(a,b,c)$ is initialized to $-1$, to identify
|
||||||
|
the contributions that have not been already computed.
|
||||||
|
An outer \emph{for loop} runs over the maximum number of iterations, equal by construction to
|
||||||
|
the number of different triplets $N_{\text{triplets}}$.
|
||||||
|
|
||||||
|
Within a loop iteration, the index of the first non-computed triplet $(a,b,c)$ is identified, and the task associated with its computation is sent to the task queue.
|
||||||
|
As this triplet has never been drawn, $N^{abc}$ is set to zero.
|
||||||
|
Then, a triplet $(a,b,c)$ is drawn randomly.
|
||||||
|
If the $E^{abc}$ has not been computed (identified by $N^{abc}=-1$), the number of samples is set to zero and the task for the computation of this contribution is enqueued.
|
||||||
|
In any case, $N^{abc}$ is then incremented.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\subsection{Convergence of the statistical error in benzene}
|
\subsection{Convergence of the statistical error in benzene}
|
||||||
|
|
||||||
@ -353,13 +352,13 @@ The benzene molecule serves as our reference system for conducting frozen-core C
|
|||||||
Essentially, this involves the correlation of 30 (\(N_\text{o} = 15\)) electrons using either 258 (\(N_\text{v} = 243\)) or 503 (\(N_\text{v} = 488\)) molecular orbitals.
|
Essentially, this involves the correlation of 30 (\(N_\text{o} = 15\)) electrons using either 258 (\(N_\text{v} = 243\)) or 503 (\(N_\text{v} = 488\)) molecular orbitals.
|
||||||
The calculations were performed on an AMD \textsc{Epyc} 7513 dual socket server (64 cores in total).
|
The calculations were performed on an AMD \textsc{Epyc} 7513 dual socket server (64 cores in total).
|
||||||
|
|
||||||
\begin{figure}
|
\begin{figure}[tb]
|
||||||
\includegraphics[width=\columnwidth]{benzene_tz.pdf}
|
\includegraphics[width=\columnwidth]{benzene_tz.pdf}
|
||||||
\includegraphics[width=\columnwidth]{benzene_qz.pdf}
|
\includegraphics[width=\columnwidth]{benzene_qz.pdf}
|
||||||
\caption{\label{fig:benzene} Energy convergence of benzene plotted against the program execution time, showing comparisons between the cc-pVTZ (upper curve) and cc-pVQZ (lower curve) basis sets. The blue lines indicate the exact CCSD(T) energies.}
|
\caption{\label{fig:benzene} Energy convergence of benzene plotted against the program execution time, showing comparisons between the cc-pVTZ (upper curve) and cc-pVQZ (lower curve) basis sets. The blue lines indicate the exact CCSD(T) energies.}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\begin{figure}
|
\begin{figure}[tb]
|
||||||
\includegraphics[width=\columnwidth]{benzene_err.pdf}
|
\includegraphics[width=\columnwidth]{benzene_err.pdf}
|
||||||
\caption{\label{fig:benzene_err} Convergence of the statistical error of the perturbative triples contribution in benzene as a function of the percentage of computed contributions, for both cc-pVTZ and cc-pVQZ basis sets.}
|
\caption{\label{fig:benzene_err} Convergence of the statistical error of the perturbative triples contribution in benzene as a function of the percentage of computed contributions, for both cc-pVTZ and cc-pVQZ basis sets.}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
@ -367,10 +366,10 @@ The calculations were performed on an AMD \textsc{Epyc} 7513 dual socket server
|
|||||||
Figure~\ref{fig:benzene} shows the convergence of the CCSD(T) energy as a function of the program execution time using the two basis sets.
|
Figure~\ref{fig:benzene} shows the convergence of the CCSD(T) energy as a function of the program execution time using the two basis sets.
|
||||||
Notably, the exact CCSD(T) energy always falls within $2\sigma$, affirming the reliability of the statistical error.
|
Notably, the exact CCSD(T) energy always falls within $2\sigma$, affirming the reliability of the statistical error.
|
||||||
Figure~\ref{fig:benzene_err} displays the statistical error as a function of the percentage of computed contributions.
|
Figure~\ref{fig:benzene_err} displays the statistical error as a function of the percentage of computed contributions.
|
||||||
Noteworthy in the figure are the curve discontinuities, attributable to readjustments in the separation between the deterministic and stochastic components of the calculation.
|
Noteworthy in the figure are the curve discontinuities, attributable to readjustments in the separation between the deterministic and stochastic components of the calculation (Eq.~\eqref{eq:separation}).
|
||||||
These updates lead to revised estimates and a diminution in statistical error.
|
These updates lead to revised estimates and a diminution in statistical error.
|
||||||
|
|
||||||
Achieving chemical accuracy, defined as \SI{1.6}{\milli\hartree}, necessitates less than 1\% of the total contributions in both basis sets.
|
Achieving chemical accuracy, defined as \SI{1.6}{\milli\hartree},\cite{pople_1999} necessitates less than 1\% of the total contributions in both basis sets.
|
||||||
Attaining a \SI{0.1}{\milli\hartree} precision level requires computation of 32\% and 15\% of the contributions for cc-pVTZ and cc-pVQZ, respectively.
|
Attaining a \SI{0.1}{\milli\hartree} precision level requires computation of 32\% and 15\% of the contributions for cc-pVTZ and cc-pVQZ, respectively.
|
||||||
The more rapid convergence observed with the larger basis set aligns with expectations, as expanding the basis set tends to increase the proportion of minor contributions while maintaining a relatively steady count of significant contributions.
|
The more rapid convergence observed with the larger basis set aligns with expectations, as expanding the basis set tends to increase the proportion of minor contributions while maintaining a relatively steady count of significant contributions.
|
||||||
This trend underscores the algorithm's enhanced suitability for systems with fewer electrons and extensive basis sets, as opposed to larger electron counts in smaller basis sets.
|
This trend underscores the algorithm's enhanced suitability for systems with fewer electrons and extensive basis sets, as opposed to larger electron counts in smaller basis sets.
|
||||||
@ -382,8 +381,8 @@ This trend underscores the algorithm's enhanced suitability for systems with few
|
|||||||
Our methodology proves especially advantageous for scenarios requiring the
|
Our methodology proves especially advantageous for scenarios requiring the
|
||||||
aggregation of numerous CCSD(T) energies, such as neural network training or
|
aggregation of numerous CCSD(T) energies, such as neural network training or
|
||||||
the exploration of potential energy surfaces.
|
the exploration of potential energy surfaces.
|
||||||
In a recent article, the authors highlight the pivotal role of Quantum Monte
|
In a recent article, Ceperley \textit{et al} highlight the pivotal role of Quantum Monte
|
||||||
Carlo (QMC) in generating data for constructing potential energy surfaces.
|
Carlo (QMC) in generating data for constructing potential energy surfaces.\cite{ceperley_2024}
|
||||||
The study suggests that stochastic noise inherent in QMC can facilitate machine
|
The study suggests that stochastic noise inherent in QMC can facilitate machine
|
||||||
learning model training, demonstrating that models can benefit from numerous,
|
learning model training, demonstrating that models can benefit from numerous,
|
||||||
less precise data points. These findings are supported by an analysis of
|
less precise data points. These findings are supported by an analysis of
|
||||||
@ -405,7 +404,7 @@ where $E(r)$ represents the energy at a bond length $r$, $D_e$ the depth of the
|
|||||||
\end{equation}
|
\end{equation}
|
||||||
with $\mu$ denoting the reduced mass of the \ce{CuCl} molecule, and $c$ the speed of light.
|
with $\mu$ denoting the reduced mass of the \ce{CuCl} molecule, and $c$ the speed of light.
|
||||||
|
|
||||||
\begin{figure}
|
\begin{figure}[tb]
|
||||||
\includegraphics[width=\columnwidth]{cucl.pdf}
|
\includegraphics[width=\columnwidth]{cucl.pdf}
|
||||||
\caption{\label{fig:cucl} CCSD(T) energies of CuCl obtained with the exact CCSD(T) algorithm (stars), the stochastic algorithm using only 1\% of the contributions (error bars), and the Morse potential fitting the points obtained with the stochastic algorithm.}
|
\caption{\label{fig:cucl} CCSD(T) energies of CuCl obtained with the exact CCSD(T) algorithm (stars), the stochastic algorithm using only 1\% of the contributions (error bars), and the Morse potential fitting the points obtained with the stochastic algorithm.}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
@ -415,7 +414,7 @@ We froze the six lowest molecular orbitals, specifically the $1s$ orbital of \ce
|
|||||||
The fitted Morse potential revealed a vibrational frequency of $\nu = \SI{414.7}{\per\centi\meter}$ and an equilibrium bond length of $r_e = \SI{3.92}{\bohr}$, aligning remarkably well with experimental values from the NIST database\cite{nist_2022} $\nu = \SI{417.6}{\per\centi\meter}$ and $r_e = \SI{3.88}{\bohr}$.
|
The fitted Morse potential revealed a vibrational frequency of $\nu = \SI{414.7}{\per\centi\meter}$ and an equilibrium bond length of $r_e = \SI{3.92}{\bohr}$, aligning remarkably well with experimental values from the NIST database\cite{nist_2022} $\nu = \SI{417.6}{\per\centi\meter}$ and $r_e = \SI{3.88}{\bohr}$.
|
||||||
|
|
||||||
Subsequently, we applied our semi-stochastic algorithm to estimate the perturbative triples correction, utilizing merely 1\% of the total contributions.
|
Subsequently, we applied our semi-stochastic algorithm to estimate the perturbative triples correction, utilizing merely 1\% of the total contributions.
|
||||||
This approach yielded a hundredfold acceleration in computational efficiency, achieving statistical uncertainty within the range of \SI{1.2} to \SI{2.0}{\milli\hartree}.
|
This approach yielded a hundredfold acceleration in computational efficiency, achieving statistical uncertainty within the range of \SI{1.2} to \SI{2.0}{\milli\hartree} for each data point.
|
||||||
The vibrational frequency and equilibrium distance estimated using this data, $\nu = \SI{415.1}{\per\centi\meter}$ and $r_e = \SI{3.91}{\bohr}$, demonstrated comparable precision to the full computational results.
|
The vibrational frequency and equilibrium distance estimated using this data, $\nu = \SI{415.1}{\per\centi\meter}$ and $r_e = \SI{3.91}{\bohr}$, demonstrated comparable precision to the full computational results.
|
||||||
Figure \ref{fig:cucl} illustrates the potential energy surface of \ce{CuCl}, displaying both the exact CCSD(T) energies and those estimated via the semi-stochastic method.
|
Figure \ref{fig:cucl} illustrates the potential energy surface of \ce{CuCl}, displaying both the exact CCSD(T) energies and those estimated via the semi-stochastic method.
|
||||||
|
|
||||||
@ -428,9 +427,9 @@ However, we have outlined a strategy to reframe this operation into BLAS matrix
|
|||||||
We evaluated the efficiency of our implementation using the Likwid\cite{treibig_2010} performance analysis tool on two distinct x86 platforms: an AMD \textsc{Epyc} 7513 dual-socket server equipped with 64 cores at \SI{2.6}{\giga\hertz}, and an Intel Xeon Gold 6130 dual-socket server with 32 cores at \SI{2.1}{\giga\hertz}.
|
We evaluated the efficiency of our implementation using the Likwid\cite{treibig_2010} performance analysis tool on two distinct x86 platforms: an AMD \textsc{Epyc} 7513 dual-socket server equipped with 64 cores at \SI{2.6}{\giga\hertz}, and an Intel Xeon Gold 6130 dual-socket server with 32 cores at \SI{2.1}{\giga\hertz}.
|
||||||
We linked our code with the Intel MKL library for BLAS operations.
|
We linked our code with the Intel MKL library for BLAS operations.
|
||||||
Additionally, we executed the code on an ARM Q80 server featuring 80 cores at \SI{2.8}{\giga\hertz}, and although performance counters were unavailable, we approximated the Flop/s rate by comparing the total execution time with that measured on the AMD CPU.
|
Additionally, we executed the code on an ARM Q80 server featuring 80 cores at \SI{2.8}{\giga\hertz}, and although performance counters were unavailable, we approximated the Flop/s rate by comparing the total execution time with that measured on the AMD CPU.
|
||||||
For this, we utilized the \textsc{ArmPL} library for BLAS operations.
|
On the ARM architecture, we utilized the \textsc{ArmPL} library for BLAS operations.
|
||||||
|
|
||||||
\begin{table*}
|
\begin{table*}[htb]
|
||||||
\begin{ruledtabular}
|
\begin{ruledtabular}
|
||||||
\begin{tabular}{lcccccc}
|
\begin{tabular}{lcccccc}
|
||||||
CPU & $N_{\text{cores}}$ & $V$ & $F$ & Memory Bandwidth & Peak DP & Measured performance \\
|
CPU & $N_{\text{cores}}$ & $V$ & $F$ & Memory Bandwidth & Peak DP & Measured performance \\
|
||||||
@ -449,7 +448,7 @@ Peak performance is determined by calculating the maximum achievable Flops/s on
|
|||||||
\begin{equation}
|
\begin{equation}
|
||||||
P = N_{\text{cores}} \times N_{\text{FMA}} \times 2 \times V \times F
|
P = N_{\text{cores}} \times N_{\text{FMA}} \times 2 \times V \times F
|
||||||
\end{equation}
|
\end{equation}
|
||||||
where $F$ represents the frequency, $V$ the number of double precision elements in a vector register, $N_{\text{FMA}}$ denotes the number of vector FMA units per core (all considered CPUs possess two), and $N_{\text{cores}}$ reflects the number of cores. Notably, the Xeon and ARM CPUs both operate at approximately 30\% of peak performance, while the AMD \textsc{Epyc} CPU demonstrates twice the efficiency, achieving 60\% of the peak.
|
where $F$ represents the processor frequency, $V$ the number of double precision elements in a vector register, $N_{\text{FMA}}$ denotes the number of vector fused multiply-accumulate (FMA) units per core (all considered CPUs possess two), and $N_{\text{cores}}$ reflects the number of cores. Notably, the Xeon and ARM CPUs both operate at approximately 30\% of peak performance, while the AMD \textsc{Epyc} CPU demonstrates twice the efficiency, achieving 60\% of the peak.
|
||||||
|
|
||||||
|
|
||||||
The relatively modest performance, at around 30\% efficiency, is attributed to the small dimensions of the matrices involved.
|
The relatively modest performance, at around 30\% efficiency, is attributed to the small dimensions of the matrices involved.
|
||||||
@ -464,7 +463,7 @@ By leveraging memory bandwidth and double precision throughput peak, we determin
|
|||||||
|
|
||||||
\subsection{Parallel efficiency}
|
\subsection{Parallel efficiency}
|
||||||
|
|
||||||
\begin{figure}
|
\begin{figure}[tb]
|
||||||
\includegraphics[width=\columnwidth]{scaling.pdf}
|
\includegraphics[width=\columnwidth]{scaling.pdf}
|
||||||
\caption{\label{fig:speedup} Parallel speedup obtained with the ARM Q80 and AMD \textsc{Epyc} servers.}
|
\caption{\label{fig:speedup} Parallel speedup obtained with the ARM Q80 and AMD \textsc{Epyc} servers.}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
@ -495,7 +494,7 @@ This novel approach combines deterministic and stochastic methods to optimize bo
|
|||||||
The core of our algorithm is based on selectively calculating contributions labeled by triplets of virtual orbitals leveraging Monte Carlo sampling, and employing memoization to suppress redundant calculations.
|
The core of our algorithm is based on selectively calculating contributions labeled by triplets of virtual orbitals leveraging Monte Carlo sampling, and employing memoization to suppress redundant calculations.
|
||||||
|
|
||||||
Our results demonstrate that the semi-stochastic algorithm substantially reduces the computational effort compared to traditional deterministic methods, achieving near-exact accuracy with significantly reduced computational resources. Specifically, we have shown that the algorithm can achieve chemical accuracy with a small fraction of the computational effort required by fully deterministic approaches. This efficiency opens up new possibilities for studying larger systems or employing more extensive basis sets that were previously beyond reach due to computational constraints.
|
Our results demonstrate that the semi-stochastic algorithm substantially reduces the computational effort compared to traditional deterministic methods, achieving near-exact accuracy with significantly reduced computational resources. Specifically, we have shown that the algorithm can achieve chemical accuracy with a small fraction of the computational effort required by fully deterministic approaches. This efficiency opens up new possibilities for studying larger systems or employing more extensive basis sets that were previously beyond reach due to computational constraints.
|
||||||
Additionally, the implementation of this algorithm has proven to be highly parallelizable, demonstrating excellent scalability across different high-performance computing platforms.
|
Additionally, the implementation of this algorithm has proven to be highly parallelizable, demonstrating excellent scalability across different platforms.
|
||||||
|
|
||||||
An important aspect of our investigation focused on the application of our algorithm to potential energy surface scanning.
|
An important aspect of our investigation focused on the application of our algorithm to potential energy surface scanning.
|
||||||
Our method aligns well with recent findings suggesting the utility of numerous, less precise data points in constructing machine learning models.\cite{ceperley_2024}
|
Our method aligns well with recent findings suggesting the utility of numerous, less precise data points in constructing machine learning models.\cite{ceperley_2024}
|
||||||
@ -519,7 +518,8 @@ Exascale.
|
|||||||
This project has received funding from the European Union's Horizon
|
This project has received funding from the European Union's Horizon
|
||||||
2020 — Research and Innovation program --- under grant agreement
|
2020 — Research and Innovation program --- under grant agreement
|
||||||
No.~952165.
|
No.~952165.
|
||||||
A. Gallo acknowledges support and funding from the European Research Council (ERC) (Grant Agreement No. 101087184).
|
Y. Damour acknowledges support and funding from the European Research Council (ERC) (Grant Agreement No.~863481).
|
||||||
|
A. Gallo acknowledges support and funding from the European Research Council (ERC) (Grant Agreement No.~101087184).
|
||||||
This work was performed using HPC resourced from CALMIP (Toulouse)
|
This work was performed using HPC resourced from CALMIP (Toulouse)
|
||||||
under allocations p18005 and p22001.%
|
under allocations p18005 and p22001.%
|
||||||
}
|
}
|
||||||
@ -528,8 +528,7 @@ under allocations p18005 and p22001.%
|
|||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\section*{Data availability statement}
|
\section*{Data availability statement}
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
The data that supports the findings of this study are available within
|
The data used to produce all the plots is available at \url{https://zenodo.org/doi/10.5281/zenodo.11302501}.
|
||||||
the article and its supplementary material.
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\bibliography{stochastic_triples}
|
\bibliography{stochastic_triples}
|
||||||
|
Loading…
Reference in New Issue
Block a user