lumol-org / lumol

Universal extensible molecular simulation engine
http://lumol.org/
BSD 3-Clause "New" or "Revised" License
190 stars 18 forks source link

Ewald: fix and improve parallelization #230

Closed Luthaf closed 6 years ago

Luthaf commented 6 years ago

This PR contains a few fixes for bugs I found while working on #225.

While looking at the Ewald code, I found why @antoinewdg could not get a very good speedup when parallelizing Ewald: the real space code (which is ~50% of the time) was not parallel at all =) So the last commit in this PR uses Rayon to make the real space energy/forces/virial parallel.

Luthaf commented 6 years ago

Comparing to master ()

using --threshold 2, latest commit first

52014fb0 Parallelize the real space part of Ewald

```bash name .txt ns/iter 52014fb0.txt ns/iter diff ns/iter diff % speedup nacl::cache_move_particle_wolf 109,771 (+/- 3563) 104,624 (+/- 1185) -5,147 -4.69% x 1.05 nacl::energy_ewald 967,525 (+/- 1407) 566,286 (+/- 146422) -401,239 -41.47% x 1.71 nacl::forces_ewald 3,248,322 (+/- 326746) 2,761,527 (+/- 45259) -486,795 -14.99% x 1.18 nacl::forces_wolf 164,435 (+/- 2614) 155,894 (+/- 1765) -8,541 -5.19% x 1.05 nacl::virial_ewald 7,947,529 (+/- 706202) 8,266,529 (+/- 56931) 319,000 4.01% x 0.96 nacl::virial_wolf 122,965 (+/- 1242) 117,112 (+/- 1326) -5,853 -4.76% x 1.05 water::cache_move_all_rigid_molecules_ewald 7,776,776 (+/- 14854) 6,750,434 (+/- 53120) -1,026,342 -13.20% x 1.15 water::energy_ewald 1,645,557 (+/- 3279) 536,795 (+/- 8978) -1,108,762 -67.38% x 3.07 water::forces_ewald 4,632,778 (+/- 345503) 3,778,625 (+/- 79103) -854,153 -18.44% x 1.23 water::forces_wolf 213,318 (+/- 12838) 222,619 (+/- 13989) 9,301 4.36% x 0.96 water::virial_wolf 170,519 (+/- 3196) 162,024 (+/- 4868) -8,495 -4.98% x 1.05 ```

dc095fd0 Test the virial directly from finite differences on the unit cell

```bash name .txt ns/iter dc095fd0.txt ns/iter diff ns/iter diff % speedup argon::energy 354,831 (+/- 24047) 319,674 (+/- 3954) -35,157 -9.91% x 1.11 nacl::cache_move_particle_wolf 109,771 (+/- 3563) 106,448 (+/- 3291) -3,323 -3.03% x 1.03 nacl::energy_wolf 100,878 (+/- 3151) 103,853 (+/- 1077) 2,975 2.95% x 0.97 nacl::forces_ewald 3,248,322 (+/- 326746) 3,577,888 (+/- 410268) 329,566 10.15% x 0.91 nacl::virial_ewald 7,947,529 (+/- 706202) 8,994,838 (+/- 365035) 1,047,309 13.18% x 0.88 nacl::virial_wolf 122,965 (+/- 1242) 117,372 (+/- 5468) -5,593 -4.55% x 1.05 propane::virial 270,383 (+/- 8508) 264,222 (+/- 11221) -6,161 -2.28% x 1.02 water::forces_ewald 4,632,778 (+/- 345503) 5,184,876 (+/- 398956) 552,098 11.92% x 0.89 water::virial_ewald 11,815,036 (+/- 787901) 13,349,581 (+/- 566398) 1,534,545 12.99% x 0.89 water::virial_wolf 170,519 (+/- 3196) 161,858 (+/- 6875) -8,661 -5.08% x 1.05 ```

cdbb3341 Fix a bug in the force expression in ewald

```bash name .txt ns/iter cdbb3341.txt ns/iter diff ns/iter diff % speedup argon::energy 354,831 (+/- 24047) 320,633 (+/- 39753) -34,198 -9.64% x 1.11 nacl::cache_move_particle_wolf 109,771 (+/- 3563) 106,417 (+/- 2081) -3,354 -3.06% x 1.03 nacl::energy_wolf 100,878 (+/- 3151) 103,707 (+/- 1379) 2,829 2.80% x 0.97 nacl::forces_ewald 3,248,322 (+/- 326746) 3,531,983 (+/- 419469) 283,661 8.73% x 0.92 nacl::forces_wolf 164,435 (+/- 2614) 156,924 (+/- 1961) -7,511 -4.57% x 1.05 nacl::virial_ewald 7,947,529 (+/- 706202) 9,007,624 (+/- 332841) 1,060,095 13.34% x 0.88 nacl::virial_wolf 122,965 (+/- 1242) 116,830 (+/- 1234) -6,135 -4.99% x 1.05 water::forces_ewald 4,632,778 (+/- 345503) 5,217,215 (+/- 516391) 584,437 12.62% x 0.89 water::virial_ewald 11,815,036 (+/- 787901) 13,278,440 (+/- 696206) 1,463,404 12.39% x 0.89 water::virial_wolf 170,519 (+/- 3196) 161,725 (+/- 1769) -8,794 -5.16% x 1.05 ```

1ec3027c Improve readability in Ewald code

```bash name .txt ns/iter 1ec3027c.txt ns/iter diff ns/iter diff % speedup nacl::energy_wolf 100,878 (+/- 3151) 103,233 (+/- 4693) 2,355 2.33% x 0.98 nacl::forces_ewald 3,248,322 (+/- 326746) 3,089,330 (+/- 317480) -158,992 -4.89% x 1.05 nacl::virial_wolf 122,965 (+/- 1242) 116,643 (+/- 1999) -6,322 -5.14% x 1.05 water::forces_ewald 4,632,778 (+/- 345503) 4,514,916 (+/- 317403) -117,862 -2.54% x 1.03 ```

04c6a3a0 Allow to access the unit cell matrix

```bash name .txt ns/iter 04c6a3a0.txt ns/iter diff ns/iter diff % speedup argon::forces 406,880 (+/- 2559) 435,140 (+/- 23205) 28,260 6.95% x 0.94 nacl::energy_wolf 100,878 (+/- 3151) 104,264 (+/- 5236) 3,386 3.36% x 0.97 nacl::forces_ewald 3,248,322 (+/- 326746) 3,105,174 (+/- 295714) -143,148 -4.41% x 1.05 water::virial_wolf 170,519 (+/- 3196) 162,124 (+/- 1503) -8,395 -4.92% x 1.05 ```

e7b39b21 Fix a sign error in Ewald virial computation

```bash name .txt ns/iter e7b39b21.txt ns/iter diff ns/iter diff % speedup nacl::energy_wolf 100,878 (+/- 3151) 104,866 (+/- 1045) 3,988 3.95% x 0.96 nacl::forces_ewald 3,248,322 (+/- 326746) 3,082,313 (+/- 270430) -166,009 -5.11% x 1.05 nacl::forces_wolf 164,435 (+/- 2614) 158,585 (+/- 2045) -5,850 -3.56% x 1.04 water::virial_wolf 170,519 (+/- 3196) 161,952 (+/- 1508) -8,567 -5.02% x 1.05 ```

dfceb741 Update dependencies

```bash name .txt ns/iter dfceb741.txt ns/iter diff ns/iter diff % speedup nacl::forces_ewald 3,248,322 (+/- 326746) 3,095,736 (+/- 302479) -152,586 -4.70% x 1.05 water::energy_wolf 142,589 (+/- 2436) 136,261 (+/- 7253) -6,328 -4.44% x 1.05 water::forces_wolf 213,318 (+/- 12838) 221,975 (+/- 15746) 8,657 4.06% x 0.96 water::virial_wolf 170,519 (+/- 3196) 162,335 (+/- 5628) -8,184 -4.80% x 1.05 ```

Individual benchmarks

52014fb0 Parallelize the real space part of Ewald

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 463,661 ns/iter (+/- 5,758) test argon::energy ... bench: 351,359 ns/iter (+/- 36,257) test argon::forces ... bench: 407,323 ns/iter (+/- 2,549) test argon::virial ... bench: 400,058 ns/iter (+/- 60,869) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 364,265 ns/iter (+/- 907) test nacl::cache_move_particle_wolf ... bench: 104,624 ns/iter (+/- 1,185) test nacl::energy_ewald ... bench: 566,286 ns/iter (+/- 146,422) test nacl::energy_wolf ... bench: 99,945 ns/iter (+/- 1,030) test nacl::forces_ewald ... bench: 2,761,527 ns/iter (+/- 45,259) test nacl::forces_wolf ... bench: 155,894 ns/iter (+/- 1,765) test nacl::virial_ewald ... bench: 8,266,529 ns/iter (+/- 56,931) test nacl::virial_wolf ... bench: 117,112 ns/iter (+/- 1,326) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,971,165 ns/iter (+/- 47,698) test propane::cache_move_particles ... bench: 533,404 ns/iter (+/- 1,275) test propane::energy ... bench: 399,235 ns/iter (+/- 11,039) test propane::forces ... bench: 479,467 ns/iter (+/- 15,162) test propane::virial ... bench: 267,019 ns/iter (+/- 18,475) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 6,750,434 ns/iter (+/- 53,120) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,392,994 ns/iter (+/- 40,932) test water::cache_move_particles_ewald ... bench: 785,379 ns/iter (+/- 2,323) test water::cache_move_particles_wolf ... bench: 462,556 ns/iter (+/- 1,353) test water::energy_ewald ... bench: 536,795 ns/iter (+/- 8,978) test water::energy_wolf ... bench: 141,429 ns/iter (+/- 6,505) test water::forces_ewald ... bench: 3,778,625 ns/iter (+/- 79,103) test water::forces_wolf ... bench: 222,619 ns/iter (+/- 13,989) test water::virial_ewald ... bench: 11,911,472 ns/iter (+/- 270,709) test water::virial_wolf ... bench: 162,024 ns/iter (+/- 4,868) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

dc095fd0 Test the virial directly from finite differences on the unit cell

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 464,251 ns/iter (+/- 5,433) test argon::energy ... bench: 319,674 ns/iter (+/- 3,954) test argon::forces ... bench: 405,518 ns/iter (+/- 2,682) test argon::virial ... bench: 396,371 ns/iter (+/- 4,812) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 365,517 ns/iter (+/- 944) test nacl::cache_move_particle_wolf ... bench: 106,448 ns/iter (+/- 3,291) test nacl::energy_ewald ... bench: 957,890 ns/iter (+/- 1,707) test nacl::energy_wolf ... bench: 103,853 ns/iter (+/- 1,077) test nacl::forces_ewald ... bench: 3,577,888 ns/iter (+/- 410,268) test nacl::forces_wolf ... bench: 163,999 ns/iter (+/- 2,245) test nacl::virial_ewald ... bench: 8,994,838 ns/iter (+/- 365,035) test nacl::virial_wolf ... bench: 117,372 ns/iter (+/- 5,468) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,958,407 ns/iter (+/- 49,332) test propane::cache_move_particles ... bench: 535,208 ns/iter (+/- 1,380) test propane::energy ... bench: 397,683 ns/iter (+/- 5,929) test propane::forces ... bench: 479,633 ns/iter (+/- 13,232) test propane::virial ... bench: 264,222 ns/iter (+/- 11,221) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 7,711,860 ns/iter (+/- 13,409) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,503,570 ns/iter (+/- 58,910) test water::cache_move_particles_ewald ... bench: 787,739 ns/iter (+/- 2,191) test water::cache_move_particles_wolf ... bench: 468,125 ns/iter (+/- 1,210) test water::energy_ewald ... bench: 1,650,453 ns/iter (+/- 3,885) test water::energy_wolf ... bench: 142,439 ns/iter (+/- 5,235) test water::forces_ewald ... bench: 5,184,876 ns/iter (+/- 398,956) test water::forces_wolf ... bench: 213,320 ns/iter (+/- 12,447) test water::virial_ewald ... bench: 13,349,581 ns/iter (+/- 566,398) test water::virial_wolf ... bench: 161,858 ns/iter (+/- 6,875) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

cdbb3341 Fix a bug in the force expression in ewald

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 463,816 ns/iter (+/- 4,705) test argon::energy ... bench: 320,633 ns/iter (+/- 39,753) test argon::forces ... bench: 405,704 ns/iter (+/- 2,327) test argon::virial ... bench: 397,793 ns/iter (+/- 4,395) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 365,518 ns/iter (+/- 826) test nacl::cache_move_particle_wolf ... bench: 106,417 ns/iter (+/- 2,081) test nacl::energy_ewald ... bench: 957,881 ns/iter (+/- 1,784) test nacl::energy_wolf ... bench: 103,707 ns/iter (+/- 1,379) test nacl::forces_ewald ... bench: 3,531,983 ns/iter (+/- 419,469) test nacl::forces_wolf ... bench: 156,924 ns/iter (+/- 1,961) test nacl::virial_ewald ... bench: 9,007,624 ns/iter (+/- 332,841) test nacl::virial_wolf ... bench: 116,830 ns/iter (+/- 1,234) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,958,517 ns/iter (+/- 62,833) test propane::cache_move_particles ... bench: 535,119 ns/iter (+/- 1,110) test propane::energy ... bench: 397,220 ns/iter (+/- 8,607) test propane::forces ... bench: 479,251 ns/iter (+/- 14,959) test propane::virial ... bench: 268,240 ns/iter (+/- 9,311) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 7,712,792 ns/iter (+/- 10,576) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,512,791 ns/iter (+/- 52,748) test water::cache_move_particles_ewald ... bench: 787,973 ns/iter (+/- 1,941) test water::cache_move_particles_wolf ... bench: 468,217 ns/iter (+/- 1,126) test water::energy_ewald ... bench: 1,650,809 ns/iter (+/- 2,628) test water::energy_wolf ... bench: 141,896 ns/iter (+/- 8,647) test water::forces_ewald ... bench: 5,217,215 ns/iter (+/- 516,391) test water::forces_wolf ... bench: 212,280 ns/iter (+/- 12,864) test water::virial_ewald ... bench: 13,278,440 ns/iter (+/- 696,206) test water::virial_wolf ... bench: 161,725 ns/iter (+/- 1,769) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

1ec3027c Improve readability in Ewald code

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 466,366 ns/iter (+/- 6,082) test argon::energy ... bench: 354,020 ns/iter (+/- 41,094) test argon::forces ... bench: 406,220 ns/iter (+/- 2,420) test argon::virial ... bench: 397,683 ns/iter (+/- 3,446) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 363,669 ns/iter (+/- 1,596) test nacl::cache_move_particle_wolf ... bench: 108,881 ns/iter (+/- 3,604) test nacl::energy_ewald ... bench: 962,316 ns/iter (+/- 2,541) test nacl::energy_wolf ... bench: 103,233 ns/iter (+/- 4,693) test nacl::forces_ewald ... bench: 3,089,330 ns/iter (+/- 317,480) test nacl::forces_wolf ... bench: 161,807 ns/iter (+/- 2,588) test nacl::virial_ewald ... bench: 8,018,055 ns/iter (+/- 888,007) test nacl::virial_wolf ... bench: 116,643 ns/iter (+/- 1,999) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,968,844 ns/iter (+/- 48,392) test propane::cache_move_particles ... bench: 530,494 ns/iter (+/- 1,506) test propane::energy ... bench: 391,702 ns/iter (+/- 15,757) test propane::forces ... bench: 477,141 ns/iter (+/- 14,543) test propane::virial ... bench: 266,190 ns/iter (+/- 23,413) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 7,648,290 ns/iter (+/- 31,101) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,467,601 ns/iter (+/- 52,283) test water::cache_move_particles_ewald ... bench: 783,579 ns/iter (+/- 1,982) test water::cache_move_particles_wolf ... bench: 465,141 ns/iter (+/- 1,428) test water::energy_ewald ... bench: 1,646,093 ns/iter (+/- 3,567) test water::energy_wolf ... bench: 141,483 ns/iter (+/- 1,580) test water::forces_ewald ... bench: 4,514,916 ns/iter (+/- 317,403) test water::forces_wolf ... bench: 213,492 ns/iter (+/- 13,417) test water::virial_ewald ... bench: 11,962,520 ns/iter (+/- 781,662) test water::virial_wolf ... bench: 170,815 ns/iter (+/- 2,406) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

04c6a3a0 Allow to access the unit cell matrix

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 463,549 ns/iter (+/- 6,524) test argon::energy ... bench: 355,585 ns/iter (+/- 39,783) test argon::forces ... bench: 435,140 ns/iter (+/- 23,205) test argon::virial ... bench: 400,577 ns/iter (+/- 7,483) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 365,473 ns/iter (+/- 790) test nacl::cache_move_particle_wolf ... bench: 109,771 ns/iter (+/- 3,540) test nacl::energy_ewald ... bench: 967,422 ns/iter (+/- 1,458) test nacl::energy_wolf ... bench: 104,264 ns/iter (+/- 5,236) test nacl::forces_ewald ... bench: 3,105,174 ns/iter (+/- 295,714) test nacl::forces_wolf ... bench: 164,866 ns/iter (+/- 8,533) test nacl::virial_ewald ... bench: 7,922,708 ns/iter (+/- 534,916) test nacl::virial_wolf ... bench: 122,960 ns/iter (+/- 1,293) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,959,001 ns/iter (+/- 49,915) test propane::cache_move_particles ... bench: 534,017 ns/iter (+/- 2,005) test propane::energy ... bench: 397,044 ns/iter (+/- 13,692) test propane::forces ... bench: 489,806 ns/iter (+/- 21,348) test propane::virial ... bench: 266,138 ns/iter (+/- 21,982) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 7,776,536 ns/iter (+/- 15,190) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,483,176 ns/iter (+/- 51,957) test water::cache_move_particles_ewald ... bench: 789,949 ns/iter (+/- 2,201) test water::cache_move_particles_wolf ... bench: 465,961 ns/iter (+/- 618) test water::energy_ewald ... bench: 1,645,515 ns/iter (+/- 2,936) test water::energy_wolf ... bench: 141,682 ns/iter (+/- 7,349) test water::forces_ewald ... bench: 4,595,311 ns/iter (+/- 324,713) test water::forces_wolf ... bench: 213,742 ns/iter (+/- 13,710) test water::virial_ewald ... bench: 11,946,673 ns/iter (+/- 1,265,228) test water::virial_wolf ... bench: 162,124 ns/iter (+/- 1,503) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

e7b39b21 Fix a sign error in Ewald virial computation

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 463,670 ns/iter (+/- 5,779) test argon::energy ... bench: 351,283 ns/iter (+/- 54,355) test argon::forces ... bench: 406,574 ns/iter (+/- 2,819) test argon::virial ... bench: 397,342 ns/iter (+/- 4,382) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 365,419 ns/iter (+/- 891) test nacl::cache_move_particle_wolf ... bench: 109,834 ns/iter (+/- 3,433) test nacl::energy_ewald ... bench: 967,638 ns/iter (+/- 1,519) test nacl::energy_wolf ... bench: 104,866 ns/iter (+/- 1,045) test nacl::forces_ewald ... bench: 3,082,313 ns/iter (+/- 270,430) test nacl::forces_wolf ... bench: 158,585 ns/iter (+/- 2,045) test nacl::virial_ewald ... bench: 7,934,543 ns/iter (+/- 923,353) test nacl::virial_wolf ... bench: 123,074 ns/iter (+/- 2,606) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,958,483 ns/iter (+/- 48,723) test propane::cache_move_particles ... bench: 534,036 ns/iter (+/- 1,545) test propane::energy ... bench: 396,217 ns/iter (+/- 13,258) test propane::forces ... bench: 477,601 ns/iter (+/- 12,227) test propane::virial ... bench: 271,369 ns/iter (+/- 8,875) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 7,777,364 ns/iter (+/- 18,202) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,491,442 ns/iter (+/- 47,854) test water::cache_move_particles_ewald ... bench: 790,160 ns/iter (+/- 2,236) test water::cache_move_particles_wolf ... bench: 465,901 ns/iter (+/- 542) test water::energy_ewald ... bench: 1,645,362 ns/iter (+/- 3,313) test water::energy_wolf ... bench: 142,439 ns/iter (+/- 1,982) test water::forces_ewald ... bench: 4,647,747 ns/iter (+/- 360,634) test water::forces_wolf ... bench: 212,622 ns/iter (+/- 12,131) test water::virial_ewald ... bench: 11,783,881 ns/iter (+/- 939,608) test water::virial_wolf ... bench: 161,952 ns/iter (+/- 1,508) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

dfceb741 Update dependencies

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 463,755 ns/iter (+/- 5,422) test argon::energy ... bench: 355,484 ns/iter (+/- 56,476) test argon::forces ... bench: 406,616 ns/iter (+/- 2,289) test argon::virial ... bench: 397,451 ns/iter (+/- 3,458) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 365,600 ns/iter (+/- 1,064) test nacl::cache_move_particle_wolf ... bench: 109,760 ns/iter (+/- 3,373) test nacl::energy_ewald ... bench: 967,608 ns/iter (+/- 1,477) test nacl::energy_wolf ... bench: 100,754 ns/iter (+/- 1,089) test nacl::forces_ewald ... bench: 3,095,736 ns/iter (+/- 302,479) test nacl::forces_wolf ... bench: 163,873 ns/iter (+/- 2,629) test nacl::virial_ewald ... bench: 7,914,854 ns/iter (+/- 661,365) test nacl::virial_wolf ... bench: 123,078 ns/iter (+/- 6,672) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,958,984 ns/iter (+/- 49,482) test propane::cache_move_particles ... bench: 534,176 ns/iter (+/- 1,539) test propane::energy ... bench: 396,649 ns/iter (+/- 10,129) test propane::forces ... bench: 487,773 ns/iter (+/- 18,016) test propane::virial ... bench: 266,333 ns/iter (+/- 12,542) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 7,777,008 ns/iter (+/- 17,738) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,489,782 ns/iter (+/- 45,102) test water::cache_move_particles_ewald ... bench: 790,187 ns/iter (+/- 1,946) test water::cache_move_particles_wolf ... bench: 465,942 ns/iter (+/- 516) test water::energy_ewald ... bench: 1,645,876 ns/iter (+/- 3,479) test water::energy_wolf ... bench: 136,261 ns/iter (+/- 7,253) test water::forces_ewald ... bench: 4,666,977 ns/iter (+/- 390,942) test water::forces_wolf ... bench: 221,975 ns/iter (+/- 15,746) test water::virial_ewald ... bench: 11,835,753 ns/iter (+/- 961,220) test water::virial_wolf ... bench: 162,335 ns/iter (+/- 5,628) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 463,430 ns/iter (+/- 5,733) test argon::energy ... bench: 354,831 ns/iter (+/- 24,047) test argon::forces ... bench: 406,880 ns/iter (+/- 2,559) test argon::virial ... bench: 396,449 ns/iter (+/- 13,505) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 365,536 ns/iter (+/- 1,021) test nacl::cache_move_particle_wolf ... bench: 109,771 ns/iter (+/- 3,563) test nacl::energy_ewald ... bench: 967,525 ns/iter (+/- 1,407) test nacl::energy_wolf ... bench: 100,878 ns/iter (+/- 3,151) test nacl::forces_ewald ... bench: 3,248,322 ns/iter (+/- 326,746) test nacl::forces_wolf ... bench: 164,435 ns/iter (+/- 2,614) test nacl::virial_ewald ... bench: 7,947,529 ns/iter (+/- 706,202) test nacl::virial_wolf ... bench: 122,965 ns/iter (+/- 1,242) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,958,736 ns/iter (+/- 49,119) test propane::cache_move_particles ... bench: 534,047 ns/iter (+/- 1,370) test propane::energy ... bench: 397,471 ns/iter (+/- 15,137) test propane::forces ... bench: 484,617 ns/iter (+/- 17,073) test propane::virial ... bench: 270,383 ns/iter (+/- 8,508) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 7,776,776 ns/iter (+/- 14,854) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,475,852 ns/iter (+/- 61,230) test water::cache_move_particles_ewald ... bench: 790,141 ns/iter (+/- 2,611) test water::cache_move_particles_wolf ... bench: 465,930 ns/iter (+/- 1,369) test water::energy_ewald ... bench: 1,645,557 ns/iter (+/- 3,279) test water::energy_wolf ... bench: 142,589 ns/iter (+/- 2,436) test water::forces_ewald ... bench: 4,632,778 ns/iter (+/- 345,503) test water::forces_wolf ... bench: 213,318 ns/iter (+/- 12,838) test water::virial_ewald ... bench: 11,815,036 ns/iter (+/- 787,901) test water::virial_wolf ... bench: 170,519 ns/iter (+/- 3,196) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```


CPU: Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz

g-bauer commented 6 years ago

That looks really good, thanks for working on this. It's a shame that there are no NIST benchmarks for the virial/forces for Ewald. I remember having trouble getting the NPT stuff to work for charged systems since the internal pressure never matched the target pressure so I am eager to test the SPC NPT simulations with these changes.

That being said I have little experience with implementation of Ewald summation myself so I fear I am not a big help when it comes to reviewing the changes. Do you have an idea why there are so big differences in the benchmarks between the water and nacl systems (in the parallelization commit)?

Luthaf commented 6 years ago

Do you have an idea why there are so big differences in the benchmarks between the water and nacl systems (in the parallelization commit)?

I don't know. Both systems are roughly the same size, so there should not be that much of a difference. The speedup is 18% and 15%, which is roughly the same.

g-bauer commented 6 years ago

I was thinking of the energy terms which have a 25 % difference. Also the variance is comparably huge for the NaCL system.

Luthaf commented 6 years ago

Yes, you're right. Let me re-run them to double check

Luthaf commented 6 years ago

Comparing to master ()

using --threshold 2, latest commit first

38a1f67a Accept a --test-threads argument for input tests

```bash name .txt ns/iter 38a1f67a.txt ns/iter diff ns/iter diff % speedup argon::energy 320,362 (+/- 3680) 350,663 (+/- 27797) 30,301 9.46% x 0.91 argon::forces 431,234 (+/- 20932) 409,702 (+/- 2374) -21,532 -4.99% x 1.05 nacl::energy_ewald 976,017 (+/- 2514) 382,605 (+/- 1992) -593,412 -60.80% x 2.55 nacl::forces_ewald 3,167,770 (+/- 360420) 2,935,635 (+/- 45757) -232,135 -7.33% x 1.08 nacl::virial_ewald 8,260,520 (+/- 1004029) 8,607,546 (+/- 121022) 347,026 4.20% x 0.96 nacl::virial_wolf 117,503 (+/- 1363) 121,667 (+/- 8763) 4,164 3.54% x 0.97 water::cache_move_all_rigid_molecules_ewald 7,590,205 (+/- 17335) 6,765,851 (+/- 79647) -824,354 -10.86% x 1.12 water::energy_ewald 1,669,720 (+/- 3421) 549,234 (+/- 3858) -1,120,486 -67.11% x 3.04 water::forces_ewald 4,757,993 (+/- 406614) 4,004,281 (+/- 78139) -753,712 -15.84% x 1.19 water::forces_wolf 212,400 (+/- 14516) 223,257 (+/- 18063) 10,857 5.11% x 0.95 water::virial_wolf 162,747 (+/- 2371) 170,768 (+/- 6138) 8,021 4.93% x 0.95 ```

adc030ae Pip is called pip2 on osx

```bash name .txt ns/iter adc030ae.txt ns/iter diff ns/iter diff % speedup argon::energy 320,362 (+/- 3680) 351,593 (+/- 31989) 31,231 9.75% x 0.91 argon::forces 431,234 (+/- 20932) 408,990 (+/- 1853) -22,244 -5.16% x 1.05 nacl::energy_ewald 976,017 (+/- 2514) 382,451 (+/- 1705) -593,566 -60.82% x 2.55 nacl::forces_ewald 3,167,770 (+/- 360420) 2,941,674 (+/- 137276) -226,096 -7.14% x 1.08 nacl::virial_ewald 8,260,520 (+/- 1004029) 8,607,760 (+/- 169982) 347,240 4.20% x 0.96 water::cache_move_all_rigid_molecules_ewald 7,590,205 (+/- 17335) 6,760,590 (+/- 57735) -829,615 -10.93% x 1.12 water::energy_ewald 1,669,720 (+/- 3421) 549,774 (+/- 5488) -1,119,946 -67.07% x 3.04 water::forces_ewald 4,757,993 (+/- 406614) 4,006,954 (+/- 65898) -751,039 -15.78% x 1.19 water::virial_wolf 162,747 (+/- 2371) 171,493 (+/- 4260) 8,746 5.37% x 0.95 ```

6889cb43 Only use 2 threads in tests on Travis

```bash name .txt ns/iter 6889cb43.txt ns/iter diff ns/iter diff % speedup argon::forces 431,234 (+/- 20932) 410,691 (+/- 2717) -20,543 -4.76% x 1.05 nacl::energy_ewald 976,017 (+/- 2514) 382,407 (+/- 2049) -593,610 -60.82% x 2.55 nacl::forces_ewald 3,167,770 (+/- 360420) 2,939,342 (+/- 60754) -228,428 -7.21% x 1.08 nacl::virial_ewald 8,260,520 (+/- 1004029) 8,603,248 (+/- 112167) 342,728 4.15% x 0.96 water::cache_move_all_rigid_molecules_ewald 7,590,205 (+/- 17335) 6,755,866 (+/- 58869) -834,339 -10.99% x 1.12 water::energy_ewald 1,669,720 (+/- 3421) 549,912 (+/- 8809) -1,119,808 -67.07% x 3.04 water::forces_ewald 4,757,993 (+/- 406614) 4,003,462 (+/- 72576) -754,531 -15.86% x 1.19 water::virial_wolf 162,747 (+/- 2371) 171,486 (+/- 7159) 8,739 5.37% x 0.95 ```

52014fb0 Parallelize the real space part of Ewald

```bash name .txt ns/iter 52014fb0.txt ns/iter diff ns/iter diff % speedup argon::forces 431,234 (+/- 20932) 409,797 (+/- 2282) -21,437 -4.97% x 1.05 nacl::energy_ewald 976,017 (+/- 2514) 381,556 (+/- 1911) -594,461 -60.91% x 2.56 nacl::energy_wolf 104,874 (+/- 1366) 100,503 (+/- 1229) -4,371 -4.17% x 1.04 nacl::forces_ewald 3,167,770 (+/- 360420) 2,939,345 (+/- 37385) -228,425 -7.21% x 1.08 nacl::virial_ewald 8,260,520 (+/- 1004029) 8,606,272 (+/- 143461) 345,752 4.19% x 0.96 nacl::virial_wolf 117,503 (+/- 1363) 121,502 (+/- 6241) 3,999 3.40% x 0.97 propane::forces 480,055 (+/- 15483) 494,859 (+/- 15527) 14,804 3.08% x 0.97 water::cache_move_all_rigid_molecules_ewald 7,590,205 (+/- 17335) 6,782,770 (+/- 70880) -807,435 -10.64% x 1.12 water::energy_ewald 1,669,720 (+/- 3421) 548,997 (+/- 7270) -1,120,723 -67.12% x 3.04 water::forces_ewald 4,757,993 (+/- 406614) 4,007,358 (+/- 78021) -750,635 -15.78% x 1.19 ```

dc095fd0 Test the virial directly from finite differences on the unit cell

```bash name .txt ns/iter dc095fd0.txt ns/iter diff ns/iter diff % speedup argon::energy 320,362 (+/- 3680) 352,749 (+/- 44564) 32,387 10.11% x 0.91 nacl::energy_wolf 104,874 (+/- 1366) 101,064 (+/- 960) -3,810 -3.63% x 1.04 nacl::forces_ewald 3,167,770 (+/- 360420) 3,729,349 (+/- 481091) 561,579 17.73% x 0.85 nacl::forces_wolf 158,105 (+/- 7887) 164,877 (+/- 2954) 6,772 4.28% x 0.96 nacl::virial_ewald 8,260,520 (+/- 1004029) 9,347,553 (+/- 743593) 1,087,033 13.16% x 0.88 propane::forces 480,055 (+/- 15483) 491,542 (+/- 16538) 11,487 2.39% x 0.98 water::forces_ewald 4,757,993 (+/- 406614) 5,466,053 (+/- 442487) 708,060 14.88% x 0.87 water::forces_wolf 212,400 (+/- 14516) 218,268 (+/- 14451) 5,868 2.76% x 0.97 water::virial_ewald 12,285,758 (+/- 1534640) 13,879,356 (+/- 1018874) 1,593,598 12.97% x 0.89 water::virial_wolf 162,747 (+/- 2371) 171,065 (+/- 5716) 8,318 5.11% x 0.95 ```

cdbb3341 Fix a bug in the force expression in ewald

```bash name .txt ns/iter cdbb3341.txt ns/iter diff ns/iter diff % speedup argon::energy 320,362 (+/- 3680) 351,455 (+/- 28823) 31,093 9.71% x 0.91 argon::forces 431,234 (+/- 20932) 407,507 (+/- 2487) -23,727 -5.50% x 1.06 argon::virial 392,124 (+/- 3789) 435,870 (+/- 38579) 43,746 11.16% x 0.90 nacl::forces_ewald 3,167,770 (+/- 360420) 3,789,651 (+/- 352211) 621,881 19.63% x 0.84 nacl::virial_ewald 8,260,520 (+/- 1004029) 9,516,865 (+/- 714092) 1,256,345 15.21% x 0.87 nacl::virial_wolf 117,503 (+/- 1363) 121,883 (+/- 1748) 4,380 3.73% x 0.96 water::forces_ewald 4,757,993 (+/- 406614) 5,462,763 (+/- 438643) 704,770 14.81% x 0.87 water::virial_ewald 12,285,758 (+/- 1534640) 13,807,964 (+/- 776214) 1,522,206 12.39% x 0.89 ```

1ec3027c Improve readability in Ewald code

```bash name .txt ns/iter 1ec3027c.txt ns/iter diff ns/iter diff % speedup argon::forces 431,234 (+/- 20932) 409,961 (+/- 2821) -21,273 -4.93% x 1.05 nacl::energy_wolf 104,874 (+/- 1366) 100,897 (+/- 1358) -3,977 -3.79% x 1.04 nacl::forces_ewald 3,167,770 (+/- 360420) 3,384,638 (+/- 431168) 216,868 6.85% x 0.94 water::virial_wolf 162,747 (+/- 2371) 170,473 (+/- 3642) 7,726 4.75% x 0.95 ```

04c6a3a0 Allow to access the unit cell matrix

```bash name .txt ns/iter 04c6a3a0.txt ns/iter diff ns/iter diff % speedup argon::forces 431,234 (+/- 20932) 407,854 (+/- 1884) -23,380 -5.42% x 1.06 nacl::forces_ewald 3,167,770 (+/- 360420) 3,242,095 (+/- 371900) 74,325 2.35% x 0.98 nacl::forces_wolf 158,105 (+/- 7887) 164,355 (+/- 3717) 6,250 3.95% x 0.96 propane::forces 480,055 (+/- 15483) 492,042 (+/- 24386) 11,987 2.50% x 0.98 water::virial_wolf 162,747 (+/- 2371) 171,061 (+/- 2764) 8,314 5.11% x 0.95 ```

e7b39b21 Fix a sign error in Ewald virial computation

```bash name .txt ns/iter e7b39b21.txt ns/iter diff ns/iter diff % speedup argon::forces 431,234 (+/- 20932) 408,958 (+/- 2848) -22,276 -5.17% x 1.05 nacl::energy_wolf 104,874 (+/- 1366) 101,064 (+/- 1466) -3,810 -3.63% x 1.04 nacl::forces_ewald 3,167,770 (+/- 360420) 3,269,322 (+/- 356847) 101,552 3.21% x 0.97 nacl::forces_wolf 158,105 (+/- 7887) 164,237 (+/- 4302) 6,132 3.88% x 0.96 propane::forces 480,055 (+/- 15483) 495,373 (+/- 19517) 15,318 3.19% x 0.97 water::energy_wolf 143,765 (+/- 2127) 138,448 (+/- 8349) -5,317 -3.70% x 1.04 ```

dfceb741 Update dependencies

```bash name .txt ns/iter dfceb741.txt ns/iter diff ns/iter diff % speedup argon::energy 320,362 (+/- 3680) 352,924 (+/- 35159) 32,562 10.16% x 0.91 argon::forces 431,234 (+/- 20932) 407,919 (+/- 6932) -23,315 -5.41% x 1.06 nacl::forces_ewald 3,167,770 (+/- 360420) 3,270,221 (+/- 352013) 102,451 3.23% x 0.97 nacl::virial_wolf 117,503 (+/- 1363) 121,834 (+/- 5453) 4,331 3.69% x 0.96 water::forces_wolf 212,400 (+/- 14516) 216,856 (+/- 13142) 4,456 2.10% x 0.98 water::virial_wolf 162,747 (+/- 2371) 171,252 (+/- 3326) 8,505 5.23% x 0.95 ```

Individual benchmarks

38a1f67a Accept a --test-threads argument for input tests

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 89,890 ns/iter (+/- 183) test argon::energy ... bench: 350,663 ns/iter (+/- 27,797) test argon::forces ... bench: 409,702 ns/iter (+/- 2,374) test argon::virial ... bench: 391,332 ns/iter (+/- 22,235) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 361,170 ns/iter (+/- 1,177) test nacl::cache_move_particle_wolf ... bench: 103,769 ns/iter (+/- 199) test nacl::energy_ewald ... bench: 382,605 ns/iter (+/- 1,992) test nacl::energy_wolf ... bench: 104,397 ns/iter (+/- 1,782) test nacl::forces_ewald ... bench: 2,935,635 ns/iter (+/- 45,757) test nacl::forces_wolf ... bench: 158,700 ns/iter (+/- 3,615) test nacl::virial_ewald ... bench: 8,607,546 ns/iter (+/- 121,022) test nacl::virial_wolf ... bench: 121,667 ns/iter (+/- 8,763) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,967,056 ns/iter (+/- 9,665) test propane::cache_move_particles ... bench: 529,188 ns/iter (+/- 1,271) test propane::energy ... bench: 395,703 ns/iter (+/- 10,891) test propane::forces ... bench: 487,363 ns/iter (+/- 21,288) test propane::virial ... bench: 265,693 ns/iter (+/- 11,096) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 6,765,851 ns/iter (+/- 79,647) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,374,079 ns/iter (+/- 39,313) test water::cache_move_particles_ewald ... bench: 781,684 ns/iter (+/- 4,051) test water::cache_move_particles_wolf ... bench: 462,087 ns/iter (+/- 467) test water::energy_ewald ... bench: 549,234 ns/iter (+/- 3,858) test water::energy_wolf ... bench: 144,055 ns/iter (+/- 4,186) test water::forces_ewald ... bench: 4,004,281 ns/iter (+/- 78,139) test water::forces_wolf ... bench: 223,257 ns/iter (+/- 18,063) test water::virial_ewald ... bench: 12,351,346 ns/iter (+/- 139,283) test water::virial_wolf ... bench: 170,768 ns/iter (+/- 6,138) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

adc030ae Pip is called pip2 on osx

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 89,911 ns/iter (+/- 151) test argon::energy ... bench: 351,593 ns/iter (+/- 31,989) test argon::forces ... bench: 408,990 ns/iter (+/- 1,853) test argon::virial ... bench: 392,234 ns/iter (+/- 58,018) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 361,264 ns/iter (+/- 1,337) test nacl::cache_move_particle_wolf ... bench: 103,723 ns/iter (+/- 242) test nacl::energy_ewald ... bench: 382,451 ns/iter (+/- 1,705) test nacl::energy_wolf ... bench: 104,557 ns/iter (+/- 1,459) test nacl::forces_ewald ... bench: 2,941,674 ns/iter (+/- 137,276) test nacl::forces_wolf ... bench: 157,221 ns/iter (+/- 3,054) test nacl::virial_ewald ... bench: 8,607,760 ns/iter (+/- 169,982) test nacl::virial_wolf ... bench: 116,663 ns/iter (+/- 862) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,966,837 ns/iter (+/- 10,423) test propane::cache_move_particles ... bench: 529,245 ns/iter (+/- 1,418) test propane::energy ... bench: 395,146 ns/iter (+/- 4,412) test propane::forces ... bench: 480,948 ns/iter (+/- 19,337) test propane::virial ... bench: 265,969 ns/iter (+/- 12,014) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 6,760,590 ns/iter (+/- 57,735) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,375,262 ns/iter (+/- 35,589) test water::cache_move_particles_ewald ... bench: 781,609 ns/iter (+/- 2,071) test water::cache_move_particles_wolf ... bench: 462,097 ns/iter (+/- 594) test water::energy_ewald ... bench: 549,774 ns/iter (+/- 5,488) test water::energy_wolf ... bench: 143,695 ns/iter (+/- 2,808) test water::forces_ewald ... bench: 4,006,954 ns/iter (+/- 65,898) test water::forces_wolf ... bench: 212,667 ns/iter (+/- 13,886) test water::virial_ewald ... bench: 12,357,476 ns/iter (+/- 134,694) test water::virial_wolf ... bench: 171,493 ns/iter (+/- 4,260) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

6889cb43 Only use 2 threads in tests on Travis

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 89,870 ns/iter (+/- 191) test argon::energy ... bench: 317,874 ns/iter (+/- 3,733) test argon::forces ... bench: 410,691 ns/iter (+/- 2,717) test argon::virial ... bench: 390,616 ns/iter (+/- 3,019) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 361,200 ns/iter (+/- 1,265) test nacl::cache_move_particle_wolf ... bench: 103,746 ns/iter (+/- 221) test nacl::energy_ewald ... bench: 382,407 ns/iter (+/- 2,049) test nacl::energy_wolf ... bench: 104,359 ns/iter (+/- 1,033) test nacl::forces_ewald ... bench: 2,939,342 ns/iter (+/- 60,754) test nacl::forces_wolf ... bench: 157,387 ns/iter (+/- 2,160) test nacl::virial_ewald ... bench: 8,603,248 ns/iter (+/- 112,167) test nacl::virial_wolf ... bench: 116,683 ns/iter (+/- 1,023) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,967,016 ns/iter (+/- 10,260) test propane::cache_move_particles ... bench: 529,106 ns/iter (+/- 1,512) test propane::energy ... bench: 396,037 ns/iter (+/- 4,881) test propane::forces ... bench: 482,353 ns/iter (+/- 22,239) test propane::virial ... bench: 267,002 ns/iter (+/- 11,805) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 6,755,866 ns/iter (+/- 58,869) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,392,777 ns/iter (+/- 70,910) test water::cache_move_particles_ewald ... bench: 781,268 ns/iter (+/- 2,496) test water::cache_move_particles_wolf ... bench: 462,118 ns/iter (+/- 601) test water::energy_ewald ... bench: 549,912 ns/iter (+/- 8,809) test water::energy_wolf ... bench: 143,548 ns/iter (+/- 1,370) test water::forces_ewald ... bench: 4,003,462 ns/iter (+/- 72,576) test water::forces_wolf ... bench: 213,209 ns/iter (+/- 14,771) test water::virial_ewald ... bench: 12,356,622 ns/iter (+/- 416,187) test water::virial_wolf ... bench: 171,486 ns/iter (+/- 7,159) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

52014fb0 Parallelize the real space part of Ewald

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 89,893 ns/iter (+/- 201) test argon::energy ... bench: 317,559 ns/iter (+/- 4,849) test argon::forces ... bench: 409,797 ns/iter (+/- 2,282) test argon::virial ... bench: 392,303 ns/iter (+/- 3,357) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 361,325 ns/iter (+/- 1,201) test nacl::cache_move_particle_wolf ... bench: 103,798 ns/iter (+/- 271) test nacl::energy_ewald ... bench: 381,556 ns/iter (+/- 1,911) test nacl::energy_wolf ... bench: 100,503 ns/iter (+/- 1,229) test nacl::forces_ewald ... bench: 2,939,345 ns/iter (+/- 37,385) test nacl::forces_wolf ... bench: 158,260 ns/iter (+/- 3,429) test nacl::virial_ewald ... bench: 8,606,272 ns/iter (+/- 143,461) test nacl::virial_wolf ... bench: 121,502 ns/iter (+/- 6,241) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,965,270 ns/iter (+/- 9,672) test propane::cache_move_particles ... bench: 529,266 ns/iter (+/- 1,444) test propane::energy ... bench: 396,286 ns/iter (+/- 8,559) test propane::forces ... bench: 494,859 ns/iter (+/- 15,527) test propane::virial ... bench: 261,491 ns/iter (+/- 14,081) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 6,782,770 ns/iter (+/- 70,880) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,373,420 ns/iter (+/- 40,946) test water::cache_move_particles_ewald ... bench: 781,547 ns/iter (+/- 2,703) test water::cache_move_particles_wolf ... bench: 462,050 ns/iter (+/- 508) test water::energy_ewald ... bench: 548,997 ns/iter (+/- 7,270) test water::energy_wolf ... bench: 143,126 ns/iter (+/- 2,312) test water::forces_ewald ... bench: 4,007,358 ns/iter (+/- 78,021) test water::forces_wolf ... bench: 211,738 ns/iter (+/- 13,846) test water::virial_ewald ... bench: 12,355,146 ns/iter (+/- 275,685) test water::virial_wolf ... bench: 163,336 ns/iter (+/- 10,819) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

dc095fd0 Test the virial directly from finite differences on the unit cell

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 89,517 ns/iter (+/- 138) test argon::energy ... bench: 352,749 ns/iter (+/- 44,564) test argon::forces ... bench: 428,365 ns/iter (+/- 31,001) test argon::virial ... bench: 392,058 ns/iter (+/- 58,320) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 359,084 ns/iter (+/- 793) test nacl::cache_move_particle_wolf ... bench: 103,547 ns/iter (+/- 290) test nacl::energy_ewald ... bench: 972,940 ns/iter (+/- 3,374) test nacl::energy_wolf ... bench: 101,064 ns/iter (+/- 960) test nacl::forces_ewald ... bench: 3,729,349 ns/iter (+/- 481,091) test nacl::forces_wolf ... bench: 164,877 ns/iter (+/- 2,954) test nacl::virial_ewald ... bench: 9,347,553 ns/iter (+/- 743,593) test nacl::virial_wolf ... bench: 117,076 ns/iter (+/- 1,248) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,968,244 ns/iter (+/- 9,964) test propane::cache_move_particles ... bench: 532,801 ns/iter (+/- 1,459) test propane::energy ... bench: 398,243 ns/iter (+/- 12,525) test propane::forces ... bench: 491,542 ns/iter (+/- 16,538) test propane::virial ... bench: 259,782 ns/iter (+/- 23,877) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 7,600,926 ns/iter (+/- 19,148) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,326,213 ns/iter (+/- 42,679) test water::cache_move_particles_ewald ... bench: 778,102 ns/iter (+/- 2,042) test water::cache_move_particles_wolf ... bench: 459,027 ns/iter (+/- 1,016) test water::energy_ewald ... bench: 1,666,626 ns/iter (+/- 3,173) test water::energy_wolf ... bench: 143,409 ns/iter (+/- 3,130) test water::forces_ewald ... bench: 5,466,053 ns/iter (+/- 442,487) test water::forces_wolf ... bench: 218,268 ns/iter (+/- 14,451) test water::virial_ewald ... bench: 13,879,356 ns/iter (+/- 1,018,874) test water::virial_wolf ... bench: 171,065 ns/iter (+/- 5,716) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

cdbb3341 Fix a bug in the force expression in ewald

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 89,781 ns/iter (+/- 163) test argon::energy ... bench: 351,455 ns/iter (+/- 28,823) test argon::forces ... bench: 407,507 ns/iter (+/- 2,487) test argon::virial ... bench: 435,870 ns/iter (+/- 38,579) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 359,100 ns/iter (+/- 838) test nacl::cache_move_particle_wolf ... bench: 103,506 ns/iter (+/- 331) test nacl::energy_ewald ... bench: 972,712 ns/iter (+/- 3,465) test nacl::energy_wolf ... bench: 104,500 ns/iter (+/- 1,201) test nacl::forces_ewald ... bench: 3,789,651 ns/iter (+/- 352,211) test nacl::forces_wolf ... bench: 159,585 ns/iter (+/- 16,150) test nacl::virial_ewald ... bench: 9,516,865 ns/iter (+/- 714,092) test nacl::virial_wolf ... bench: 121,883 ns/iter (+/- 1,748) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,969,707 ns/iter (+/- 9,865) test propane::cache_move_particles ... bench: 533,000 ns/iter (+/- 1,335) test propane::energy ... bench: 397,817 ns/iter (+/- 7,204) test propane::forces ... bench: 484,093 ns/iter (+/- 28,119) test propane::virial ... bench: 261,523 ns/iter (+/- 16,105) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 7,597,537 ns/iter (+/- 20,786) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,340,419 ns/iter (+/- 91,484) test water::cache_move_particles_ewald ... bench: 777,790 ns/iter (+/- 2,338) test water::cache_move_particles_wolf ... bench: 459,488 ns/iter (+/- 1,563) test water::energy_ewald ... bench: 1,674,777 ns/iter (+/- 9,831) test water::energy_wolf ... bench: 143,350 ns/iter (+/- 2,416) test water::forces_ewald ... bench: 5,462,763 ns/iter (+/- 438,643) test water::forces_wolf ... bench: 211,714 ns/iter (+/- 13,075) test water::virial_ewald ... bench: 13,807,964 ns/iter (+/- 776,214) test water::virial_wolf ... bench: 162,184 ns/iter (+/- 9,929) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

1ec3027c Improve readability in Ewald code

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 89,466 ns/iter (+/- 166) test argon::energy ... bench: 319,523 ns/iter (+/- 7,368) test argon::forces ... bench: 409,961 ns/iter (+/- 2,821) test argon::virial ... bench: 392,263 ns/iter (+/- 3,796) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 360,891 ns/iter (+/- 1,288) test nacl::cache_move_particle_wolf ... bench: 104,686 ns/iter (+/- 355) test nacl::energy_ewald ... bench: 977,400 ns/iter (+/- 3,341) test nacl::energy_wolf ... bench: 100,897 ns/iter (+/- 1,358) test nacl::forces_ewald ... bench: 3,384,638 ns/iter (+/- 431,168) test nacl::forces_wolf ... bench: 159,832 ns/iter (+/- 3,739) test nacl::virial_ewald ... bench: 8,254,444 ns/iter (+/- 1,003,745) test nacl::virial_wolf ... bench: 117,458 ns/iter (+/- 1,500) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,965,882 ns/iter (+/- 10,191) test propane::cache_move_particles ... bench: 530,546 ns/iter (+/- 1,344) test propane::energy ... bench: 396,014 ns/iter (+/- 9,075) test propane::forces ... bench: 480,882 ns/iter (+/- 20,697) test propane::virial ... bench: 262,359 ns/iter (+/- 12,586) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 7,639,816 ns/iter (+/- 14,582) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,365,324 ns/iter (+/- 44,064) test water::cache_move_particles_ewald ... bench: 781,230 ns/iter (+/- 2,039) test water::cache_move_particles_wolf ... bench: 462,137 ns/iter (+/- 1,112) test water::energy_ewald ... bench: 1,674,393 ns/iter (+/- 3,837) test water::energy_wolf ... bench: 143,412 ns/iter (+/- 1,644) test water::forces_ewald ... bench: 4,726,024 ns/iter (+/- 416,366) test water::forces_wolf ... bench: 215,477 ns/iter (+/- 15,577) test water::virial_ewald ... bench: 12,242,563 ns/iter (+/- 1,247,727) test water::virial_wolf ... bench: 170,473 ns/iter (+/- 3,642) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

04c6a3a0 Allow to access the unit cell matrix

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 89,445 ns/iter (+/- 122) test argon::energy ... bench: 318,276 ns/iter (+/- 3,306) test argon::forces ... bench: 407,854 ns/iter (+/- 1,884) test argon::virial ... bench: 392,543 ns/iter (+/- 4,222) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 360,381 ns/iter (+/- 744) test nacl::cache_move_particle_wolf ... bench: 103,595 ns/iter (+/- 539) test nacl::energy_ewald ... bench: 976,041 ns/iter (+/- 2,814) test nacl::energy_wolf ... bench: 103,819 ns/iter (+/- 4,714) test nacl::forces_ewald ... bench: 3,242,095 ns/iter (+/- 371,900) test nacl::forces_wolf ... bench: 164,355 ns/iter (+/- 3,717) test nacl::virial_ewald ... bench: 8,178,785 ns/iter (+/- 531,575) test nacl::virial_wolf ... bench: 117,333 ns/iter (+/- 1,104) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,977,414 ns/iter (+/- 10,048) test propane::cache_move_particles ... bench: 533,259 ns/iter (+/- 1,234) test propane::energy ... bench: 397,627 ns/iter (+/- 8,804) test propane::forces ... bench: 492,042 ns/iter (+/- 24,386) test propane::virial ... bench: 264,124 ns/iter (+/- 12,940) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 7,595,452 ns/iter (+/- 31,926) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,316,887 ns/iter (+/- 47,184) test water::cache_move_particles_ewald ... bench: 778,098 ns/iter (+/- 2,491) test water::cache_move_particles_wolf ... bench: 458,711 ns/iter (+/- 630) test water::energy_ewald ... bench: 1,669,638 ns/iter (+/- 3,512) test water::energy_wolf ... bench: 143,438 ns/iter (+/- 2,216) test water::forces_ewald ... bench: 4,734,412 ns/iter (+/- 398,217) test water::forces_wolf ... bench: 214,363 ns/iter (+/- 14,729) test water::virial_ewald ... bench: 12,365,092 ns/iter (+/- 1,440,994) test water::virial_wolf ... bench: 171,061 ns/iter (+/- 2,764) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

e7b39b21 Fix a sign error in Ewald virial computation

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 89,448 ns/iter (+/- 110) test argon::energy ... bench: 318,941 ns/iter (+/- 3,061) test argon::forces ... bench: 408,958 ns/iter (+/- 2,848) test argon::virial ... bench: 392,250 ns/iter (+/- 3,121) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 360,420 ns/iter (+/- 896) test nacl::cache_move_particle_wolf ... bench: 103,573 ns/iter (+/- 264) test nacl::energy_ewald ... bench: 975,894 ns/iter (+/- 2,824) test nacl::energy_wolf ... bench: 101,064 ns/iter (+/- 1,466) test nacl::forces_ewald ... bench: 3,269,322 ns/iter (+/- 356,847) test nacl::forces_wolf ... bench: 164,237 ns/iter (+/- 4,302) test nacl::virial_ewald ... bench: 8,360,882 ns/iter (+/- 900,217) test nacl::virial_wolf ... bench: 117,559 ns/iter (+/- 1,133) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,975,634 ns/iter (+/- 9,871) test propane::cache_move_particles ... bench: 533,213 ns/iter (+/- 1,560) test propane::energy ... bench: 398,016 ns/iter (+/- 16,447) test propane::forces ... bench: 495,373 ns/iter (+/- 19,517) test propane::virial ... bench: 260,553 ns/iter (+/- 20,993) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 7,592,240 ns/iter (+/- 17,684) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,330,720 ns/iter (+/- 62,566) test water::cache_move_particles_ewald ... bench: 777,888 ns/iter (+/- 2,082) test water::cache_move_particles_wolf ... bench: 458,685 ns/iter (+/- 589) test water::energy_ewald ... bench: 1,669,475 ns/iter (+/- 4,036) test water::energy_wolf ... bench: 138,448 ns/iter (+/- 8,349) test water::forces_ewald ... bench: 4,764,340 ns/iter (+/- 425,379) test water::forces_wolf ... bench: 215,768 ns/iter (+/- 13,499) test water::virial_ewald ... bench: 12,337,945 ns/iter (+/- 995,752) test water::virial_wolf ... bench: 163,055 ns/iter (+/- 8,389) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

dfceb741 Update dependencies

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 89,435 ns/iter (+/- 115) test argon::energy ... bench: 352,924 ns/iter (+/- 35,159) test argon::forces ... bench: 407,919 ns/iter (+/- 6,932) test argon::virial ... bench: 392,462 ns/iter (+/- 3,802) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 360,425 ns/iter (+/- 637) test nacl::cache_move_particle_wolf ... bench: 103,569 ns/iter (+/- 369) test nacl::energy_ewald ... bench: 975,717 ns/iter (+/- 2,528) test nacl::energy_wolf ... bench: 104,789 ns/iter (+/- 1,420) test nacl::forces_ewald ... bench: 3,270,221 ns/iter (+/- 352,013) test nacl::forces_wolf ... bench: 159,178 ns/iter (+/- 4,625) test nacl::virial_ewald ... bench: 8,183,744 ns/iter (+/- 564,680) test nacl::virial_wolf ... bench: 121,834 ns/iter (+/- 5,453) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,977,421 ns/iter (+/- 9,859) test propane::cache_move_particles ... bench: 533,253 ns/iter (+/- 1,214) test propane::energy ... bench: 397,093 ns/iter (+/- 4,613) test propane::forces ... bench: 480,038 ns/iter (+/- 20,645) test propane::virial ... bench: 264,549 ns/iter (+/- 13,522) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 7,591,715 ns/iter (+/- 16,977) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,335,317 ns/iter (+/- 104,403) test water::cache_move_particles_ewald ... bench: 777,933 ns/iter (+/- 2,386) test water::cache_move_particles_wolf ... bench: 458,768 ns/iter (+/- 650) test water::energy_ewald ... bench: 1,669,672 ns/iter (+/- 3,485) test water::energy_wolf ... bench: 144,267 ns/iter (+/- 2,179) test water::forces_ewald ... bench: 4,738,161 ns/iter (+/- 392,446) test water::forces_wolf ... bench: 216,856 ns/iter (+/- 13,142) test water::virial_ewald ... bench: 12,347,015 ns/iter (+/- 1,079,834) test water::virial_wolf ... bench: 171,252 ns/iter (+/- 3,326) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```

```bash running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 4 tests test argon::cache_move_particle ... bench: 89,422 ns/iter (+/- 150) test argon::energy ... bench: 320,362 ns/iter (+/- 3,680) test argon::forces ... bench: 431,234 ns/iter (+/- 20,932) test argon::virial ... bench: 392,124 ns/iter (+/- 3,789) test result: ok. 0 passed; 0 failed; 0 ignored; 4 measured running 8 tests test nacl::cache_move_particle_ewald ... bench: 360,475 ns/iter (+/- 763) test nacl::cache_move_particle_wolf ... bench: 103,567 ns/iter (+/- 615) test nacl::energy_ewald ... bench: 976,017 ns/iter (+/- 2,514) test nacl::energy_wolf ... bench: 104,874 ns/iter (+/- 1,366) test nacl::forces_ewald ... bench: 3,167,770 ns/iter (+/- 360,420) test nacl::forces_wolf ... bench: 158,105 ns/iter (+/- 7,887) test nacl::virial_ewald ... bench: 8,260,520 ns/iter (+/- 1,004,029) test nacl::virial_wolf ... bench: 117,503 ns/iter (+/- 1,363) test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured running 5 tests test propane::cache_move_all_rigid_molecules ... bench: 1,977,019 ns/iter (+/- 9,611) test propane::cache_move_particles ... bench: 533,356 ns/iter (+/- 1,497) test propane::energy ... bench: 398,137 ns/iter (+/- 12,377) test propane::forces ... bench: 480,055 ns/iter (+/- 15,483) test propane::virial ... bench: 264,188 ns/iter (+/- 12,076) test result: ok. 0 passed; 0 failed; 0 ignored; 5 measured running 10 tests test water::cache_move_all_rigid_molecules_ewald ... bench: 7,590,205 ns/iter (+/- 17,335) test water::cache_move_all_rigid_molecules_wolf ... bench: 6,324,448 ns/iter (+/- 50,637) test water::cache_move_particles_ewald ... bench: 778,035 ns/iter (+/- 2,220) test water::cache_move_particles_wolf ... bench: 458,884 ns/iter (+/- 2,393) test water::energy_ewald ... bench: 1,669,720 ns/iter (+/- 3,421) test water::energy_wolf ... bench: 143,765 ns/iter (+/- 2,127) test water::forces_ewald ... bench: 4,757,993 ns/iter (+/- 406,614) test water::forces_wolf ... bench: 212,400 ns/iter (+/- 14,516) test water::virial_ewald ... bench: 12,285,758 ns/iter (+/- 1,534,640) test water::virial_wolf ... bench: 162,747 ns/iter (+/- 2,371) test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured ```


CPU: Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz

Luthaf commented 6 years ago

So in the new benchmark, the variance is back to a reasonable value, and the speedup is around 60% for both systems. But now its the forces which are a bit different (not that much though).

Luthaf commented 6 years ago

@g-bauer Is this PR OK for you ?

g-bauer commented 6 years ago

Yes!