From 674781fe0e77828cbb2a946670e55103451f7c55 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 24 Feb 2020 13:27:40 -0700 Subject: [PATCH 01/85] Add Kokkos version of compute orientorder/atom --- cmake/Modules/Packages/USER-PLUMED.cmake | 4 +- doc/Makefile | 3 + doc/lammps.1 | 11 +- doc/src/Build_extras.rst | 14 +- doc/src/Build_windows.rst | 28 +- doc/src/Eqs/centro_symmetry.jpg | Bin 4111 -> 0 bytes doc/src/Eqs/centro_symmetry.tex | 9 - doc/src/Eqs/cna_cutoff1.jpg | Bin 13431 -> 0 bytes doc/src/Eqs/cna_cutoff1.tex | 14 - doc/src/Eqs/cna_cutoff2.jpg | Bin 2518 -> 0 bytes doc/src/Eqs/cna_cutoff2.tex | 12 - doc/src/Eqs/cnp_cutoff.jpg | Bin 13431 -> 0 bytes doc/src/Eqs/cnp_cutoff.tex | 14 - doc/src/Eqs/cnp_cutoff2.jpg | Bin 2518 -> 0 bytes doc/src/Eqs/cnp_cutoff2.tex | 12 - doc/src/Eqs/cnp_eq.jpg | Bin 23959 -> 0 bytes doc/src/Eqs/cnp_eq.tex | 9 - doc/src/Eqs/compute_dpd.jpg | Bin 21381 -> 0 bytes doc/src/Eqs/compute_dpd.tex | 13 - doc/src/Eqs/compute_fep_bar.jpg | Bin 18106 -> 0 bytes doc/src/Eqs/compute_fep_bar.tex | 7 - doc/src/Eqs/compute_fep_fdti.jpg | Bin 15544 -> 0 bytes doc/src/Eqs/compute_fep_fdti.tex | 10 - doc/src/Eqs/compute_fep_fep.jpg | Bin 18055 -> 0 bytes doc/src/Eqs/compute_fep_fep.tex | 9 - doc/src/Eqs/compute_fep_lambda.jpg | Bin 10511 -> 0 bytes doc/src/Eqs/compute_fep_lambda.tex | 10 - doc/src/Eqs/compute_fep_ti.jpg | Bin 18149 -> 0 bytes doc/src/Eqs/compute_fep_ti.tex | 10 - doc/src/Eqs/compute_fep_u.jpg | Bin 9337 -> 0 bytes doc/src/Eqs/compute_fep_u.tex | 7 - doc/src/Eqs/compute_fep_vol.jpg | Bin 15209 -> 0 bytes doc/src/Eqs/compute_fep_vol.tex | 9 - doc/src/Eqs/compute_gyration.jpg | Bin 3658 -> 0 bytes doc/src/Eqs/compute_gyration.tex | 9 - doc/src/Eqs/compute_msd_nongauss.jpg | Bin 7277 -> 0 bytes doc/src/Eqs/compute_msd_nongauss.tex | 9 - doc/src/Eqs/compute_saed1.jpg | Bin 1471 -> 0 bytes doc/src/Eqs/compute_saed1.tex | 10 - doc/src/Eqs/compute_saed2.jpg | Bin 4911 -> 0 bytes doc/src/Eqs/compute_saed2.tex | 9 - doc/src/Eqs/compute_saed3.jpg | Bin 7048 -> 0 bytes doc/src/Eqs/compute_saed3.tex | 10 - doc/src/Eqs/compute_shape_parameters.jpg | Bin 7007 -> 0 bytes doc/src/Eqs/compute_shape_parameters.tex | 13 - doc/src/Eqs/compute_sna_atom1.jpg | Bin 19001 -> 0 bytes doc/src/Eqs/compute_sna_atom1.tex | 11 - doc/src/Eqs/compute_sna_atom2.jpg | Bin 17114 -> 0 bytes doc/src/Eqs/compute_sna_atom2.tex | 11 - doc/src/Eqs/compute_sna_atom3.jpg | Bin 19644 -> 0 bytes doc/src/Eqs/compute_sna_atom3.tex | 16 - doc/src/Eqs/compute_sna_atom4.jpg | Bin 35933 -> 0 bytes doc/src/Eqs/compute_sna_atom4.tex | 14 - doc/src/Eqs/compute_sna_atom5.jpg | Bin 14734 -> 0 bytes doc/src/Eqs/compute_sna_atom5.tex | 12 - doc/src/Eqs/compute_sna_atom6.jpg | Bin 17274 -> 0 bytes doc/src/Eqs/compute_sna_atom6.tex | 12 - doc/src/Eqs/compute_xrd1.jpg | Bin 2363 -> 0 bytes doc/src/Eqs/compute_xrd1.tex | 10 - doc/src/Eqs/compute_xrd2.jpg | Bin 4778 -> 0 bytes doc/src/Eqs/compute_xrd2.tex | 9 - doc/src/Eqs/compute_xrd3.jpg | Bin 4745 -> 0 bytes doc/src/Eqs/compute_xrd3.tex | 9 - doc/src/Eqs/compute_xrd4.jpg | Bin 2278 -> 0 bytes doc/src/Eqs/compute_xrd4.tex | 9 - doc/src/Eqs/compute_xrd5.jpg | Bin 7603 -> 0 bytes doc/src/Eqs/compute_xrd5.tex | 10 - doc/src/Eqs/fix_bond_react.jpg | Bin 2427 -> 0 bytes doc/src/Eqs/fix_bond_react.tex | 9 - doc/src/Eqs/fix_box_relax1.jpg | Bin 3375 -> 0 bytes doc/src/Eqs/fix_box_relax1.tex | 9 - doc/src/Eqs/fix_box_relax2.jpg | Bin 3029 -> 0 bytes doc/src/Eqs/fix_box_relax2.tex | 9 - doc/src/Eqs/fix_controller1.jpg | Bin 4832 -> 0 bytes doc/src/Eqs/fix_controller1.tex | 12 - doc/src/Eqs/fix_controller2.jpg | Bin 5571 -> 0 bytes doc/src/Eqs/fix_controller2.tex | 12 - doc/src/Eqs/fix_ehex_eom.jpg | Bin 3272 -> 0 bytes doc/src/Eqs/fix_ehex_eom.tex | 8 - doc/src/Eqs/fix_ehex_f.jpg | Bin 10352 -> 0 bytes doc/src/Eqs/fix_ehex_f.tex | 12 - doc/src/Eqs/fix_eos-cv.jpg | Bin 3016 -> 0 bytes doc/src/Eqs/fix_eos-cv.tex | 9 - doc/src/Eqs/fix_eos_table_rx.jpg | Bin 17367 -> 0 bytes doc/src/Eqs/fix_eos_table_rx.tex | 9 - doc/src/Eqs/fix_gcmc1.jpg | Bin 5617 -> 0 bytes doc/src/Eqs/fix_gcmc1.tex | 9 - doc/src/Eqs/fix_gcmc2.jpg | Bin 10626 -> 0 bytes doc/src/Eqs/fix_gcmc2.tex | 10 - doc/src/Eqs/fix_gcmc3.jpg | Bin 7437 -> 0 bytes doc/src/Eqs/fix_gcmc3.tex | 9 - doc/src/Eqs/fix_gld1.jpg | Bin 14274 -> 0 bytes doc/src/Eqs/fix_gld1.tex | 13 - doc/src/Eqs/fix_grem.jpg | Bin 6224 -> 0 bytes doc/src/Eqs/fix_grem.tex | 9 - .../fix_integration_spin_stdecomposition.tex | 40 - doc/src/Eqs/fix_lb_fluid_boltzmann.jpg | Bin 4643 -> 0 bytes doc/src/Eqs/fix_lb_fluid_boltzmann.tex | 14 - doc/src/Eqs/fix_lb_fluid_fluidforce.jpg | Bin 2358 -> 0 bytes doc/src/Eqs/fix_lb_fluid_fluidforce.tex | 14 - doc/src/Eqs/fix_lb_fluid_gammadefault.jpg | Bin 4793 -> 0 bytes doc/src/Eqs/fix_lb_fluid_gammadefault.tex | 14 - doc/src/Eqs/fix_lb_fluid_navierstokes.jpg | Bin 9311 -> 0 bytes doc/src/Eqs/fix_lb_fluid_navierstokes.tex | 16 - doc/src/Eqs/fix_lb_fluid_properties.jpg | Bin 3471 -> 0 bytes doc/src/Eqs/fix_lb_fluid_properties.tex | 17 - doc/src/Eqs/fix_lb_fluid_stress.jpg | Bin 2530 -> 0 bytes doc/src/Eqs/fix_lb_fluid_stress.tex | 14 - doc/src/Eqs/fix_lb_fluid_viscosity.jpg | Bin 6522 -> 0 bytes doc/src/Eqs/fix_lb_fluid_viscosity.tex | 14 - doc/src/Eqs/fix_mvv_dpd.jpg | Bin 26880 -> 0 bytes doc/src/Eqs/fix_mvv_dpd.tex | 21 - doc/src/Eqs/fix_nh1.jpg | Bin 68243 -> 0 bytes doc/src/Eqs/fix_nh1.tex | 36 - doc/src/Eqs/fix_nphug.jpg | Bin 7506 -> 0 bytes doc/src/Eqs/fix_nphug.tex | 9 - doc/src/Eqs/fix_orient_fcc.jpg | Bin 26005 -> 0 bytes doc/src/Eqs/fix_orient_fcc.tex | 30 - doc/src/Eqs/fix_pimd.jpg | Bin 14569 -> 0 bytes doc/src/Eqs/fix_pimd.tex | 17 - doc/src/Eqs/fix_rattle_constraints.jpg | Bin 4556 -> 0 bytes doc/src/Eqs/fix_rattle_constraints.tex | 9 - doc/src/Eqs/fix_rattle_rij.jpg | Bin 1812 -> 0 bytes doc/src/Eqs/fix_rattle_rij.tex | 8 - doc/src/Eqs/fix_rhok.jpg | Bin 18330 -> 0 bytes doc/src/Eqs/fix_rhok.tex | 11 - doc/src/Eqs/fix_rx.jpg | Bin 2427 -> 0 bytes doc/src/Eqs/fix_rx.tex | 9 - doc/src/Eqs/fix_rx_localTemp.jpg | Bin 16562 -> 0 bytes doc/src/Eqs/fix_rx_localTemp.tex | 9 - doc/src/Eqs/fix_rx_localTemp2.jpg | Bin 16284 -> 0 bytes doc/src/Eqs/fix_rx_localTemp2.tex | 9 - doc/src/Eqs/fix_rx_reaction.jpg | Bin 2896 -> 0 bytes doc/src/Eqs/fix_rx_reaction.tex | 9 - doc/src/Eqs/fix_rx_reactionRate.jpg | Bin 2939 -> 0 bytes doc/src/Eqs/fix_rx_reactionRate.tex | 9 - doc/src/Eqs/fix_spring_rg.jpg | Bin 16204 -> 0 bytes doc/src/Eqs/fix_spring_rg.tex | 19 - doc/src/Eqs/fix_ttm.jpg | Bin 5869 -> 0 bytes doc/src/Eqs/fix_ttm.tex | 15 - doc/src/Eqs/fix_ttm_blast.jpg | Bin 4449 -> 0 bytes doc/src/Eqs/fix_ttm_blast.tex | 13 - doc/src/Eqs/fix_ttm_blast1.jpg | Bin 8657 -> 0 bytes doc/src/Eqs/fix_ttm_blast1.tex | 13 - doc/src/Eqs/fix_ttm_ce.jpg | Bin 7446 -> 0 bytes doc/src/Eqs/fix_ttm_ce.tex | 13 - doc/src/Eqs/fix_ttm_mod.jpg | Bin 10179 -> 0 bytes doc/src/Eqs/fix_ttm_mod.tex | 15 - doc/src/Eqs/fix_wall_colloid.jpg | Bin 17879 -> 0 bytes doc/src/Eqs/fix_wall_colloid.tex | 14 - doc/src/Eqs/fix_wall_ees.jpg | Bin 106786 -> 0 bytes doc/src/Eqs/fix_wall_ees.tex | 10 - doc/src/Eqs/fix_wall_harmonic.jpg | Bin 2413 -> 0 bytes doc/src/Eqs/fix_wall_harmonic.tex | 9 - doc/src/Eqs/fix_wall_lj1043.jpg | Bin 10996 -> 0 bytes doc/src/Eqs/fix_wall_lj1043.tex | 12 - doc/src/Eqs/fix_wall_lj93.jpg | Bin 4883 -> 0 bytes doc/src/Eqs/fix_wall_lj93.tex | 11 - doc/src/Eqs/hexorder.jpg | Bin 16870 -> 0 bytes doc/src/Eqs/hexorder.tex | 8 - doc/src/Eqs/orientorder.jpg | Bin 34695 -> 0 bytes doc/src/Eqs/orientorder.tex | 12 - doc/src/Eqs/pair_adp.jpg | Bin 20391 -> 0 bytes doc/src/Eqs/pair_adp.tex | 16 - doc/src/Eqs/pair_agni.jpg | Bin 15178 -> 0 bytes doc/src/Eqs/pair_agni.tex | 18 - doc/src/Eqs/pair_airebo.jpg | Bin 9380 -> 0 bytes doc/src/Eqs/pair_airebo.tex | 11 - doc/src/Eqs/pair_atm.jpg | Bin 5474 -> 0 bytes doc/src/Eqs/pair_atm.tex | 9 - doc/src/Eqs/pair_beck.jpg | Bin 9451 -> 0 bytes doc/src/Eqs/pair_beck.tex | 11 - doc/src/Eqs/pair_body_rounded.jpg | Bin 146978 -> 0 bytes doc/src/Eqs/pair_body_rounded.tex | 13 - doc/src/Eqs/pair_coul_soft.jpg | Bin 11309 -> 0 bytes doc/src/Eqs/pair_coul_soft.tex | 10 - doc/src/Eqs/pair_lj_soft.jpg | Bin 17984 -> 0 bytes doc/src/Eqs/pair_lj_soft.tex | 15 - doc/src/Eqs/pair_morse_soft.jpg | Bin 20988 -> 0 bytes doc/src/Eqs/pair_morse_soft.tex | 13 - doc/src/Eqs/pair_nm.jpg | Bin 6304 -> 0 bytes doc/src/Eqs/pair_nm.tex | 10 - doc/src/Eqs/pair_srp1.jpg | Bin 3537 -> 0 bytes doc/src/Eqs/pair_srp1.tex | 9 - doc/src/Eqs/pair_srp2.jpg | Bin 5648 -> 0 bytes doc/src/Eqs/pair_srp2.tex | 10 - doc/src/Eqs/pair_sw.jpg | Bin 28707 -> 0 bytes doc/src/Eqs/pair_sw.tex | 18 - doc/src/Eqs/pair_tersoff.jpg | Bin 36139 -> 0 bytes doc/src/Eqs/pair_tersoff_1.jpg | Bin 36584 -> 0 bytes doc/src/Eqs/pair_tersoff_1.tex | 24 - doc/src/Eqs/pair_tersoff_2.jpg | Bin 13756 -> 0 bytes doc/src/Eqs/pair_tersoff_2.tex | 14 - doc/src/Eqs/pair_tersoff_mod.jpg | Bin 91727 -> 0 bytes doc/src/Eqs/pair_tersoff_mod.tex | 24 - doc/src/Eqs/pair_tersoff_mod_c.jpg | Bin 4211 -> 0 bytes doc/src/Eqs/pair_tersoff_mod_c.tex | 10 - doc/src/Eqs/pair_tersoff_zbl.jpg | Bin 392677 -> 0 bytes doc/src/Eqs/pair_tersoff_zbl.tex | 33 - doc/src/Eqs/pair_ufm.jpg | Bin 17830 -> 0 bytes doc/src/Eqs/pair_ufm.tex | 14 - doc/src/Eqs/pair_vashishta.jpg | Bin 73306 -> 0 bytes doc/src/Eqs/pair_vashishta.tex | 22 - doc/src/Eqs/pair_yukawa.jpg | Bin 2189 -> 0 bytes doc/src/Eqs/pair_yukawa.tex | 9 - doc/src/Eqs/pair_yukawa_colloid.jpg | Bin 3067 -> 0 bytes doc/src/Eqs/pair_yukawa_colloid.tex | 9 - doc/src/Eqs/pair_zbl.jpg | Bin 32209 -> 0 bytes doc/src/Eqs/pair_zbl.tex | 11 - doc/src/Eqs/pressure.jpg | Bin 4333 -> 0 bytes doc/src/Eqs/pressure.tex | 9 - doc/src/Eqs/pressure_tensor.jpg | Bin 5457 -> 0 bytes doc/src/Eqs/pressure_tensor.tex | 10 - doc/src/Eqs/ptm_rmsd.jpg | Bin 6833 -> 0 bytes doc/src/Eqs/ptm_rmsd.tex | 21 - doc/src/Install_linux.rst | 25 +- .../fix_integration_spin_stdecomposition.jpg | Bin doc/src/compute_centro_atom.rst | 35 +- doc/src/compute_cna_atom.rst | 17 +- doc/src/compute_cnp_atom.rst | 32 +- doc/src/compute_dpd.rst | 24 +- doc/src/compute_dpd_atom.rst | 18 +- doc/src/compute_entropy_atom.rst | 26 +- doc/src/compute_fep.rst | 56 +- doc/src/compute_gyration.rst | 31 +- doc/src/compute_gyration_chunk.rst | 20 +- doc/src/compute_gyration_shape.rst | 10 +- doc/src/compute_gyration_shape_chunk.rst | 10 +- doc/src/compute_hexorder_atom.rst | 33 +- doc/src/compute_msd_nongauss.rst | 6 +- doc/src/compute_orientorder_atom.rst | 72 +- doc/src/compute_pressure.rst | 13 +- doc/src/compute_ptm_atom.rst | 7 +- doc/src/compute_saed.rst | 140 +++- doc/src/compute_sna_atom.rst | 44 +- doc/src/compute_xrd.rst | 27 +- doc/src/fix_ave_correlate_long.rst | 23 +- doc/src/fix_bond_react.rst | 10 +- doc/src/fix_box_relax.rst | 25 +- doc/src/fix_controller.rst | 48 +- doc/src/fix_ehex.rst | 15 +- doc/src/fix_eos_cv.rst | 18 +- doc/src/fix_eos_table_rx.rst | 55 +- doc/src/fix_gcmc.rst | 46 +- doc/src/fix_gld.rst | 10 +- doc/src/fix_grem.rst | 38 +- doc/src/fix_hyper_global.rst | 84 ++- doc/src/fix_hyper_local.rst | 239 +++--- doc/src/fix_langevin_spin.rst | 15 +- doc/src/fix_lb_fluid.rst | 89 ++- doc/src/fix_mvv_dpd.rst | 10 +- doc/src/fix_nh.rst | 23 +- doc/src/fix_nphug.rst | 49 +- doc/src/fix_npt_cauchy.rst | 22 +- doc/src/fix_nve_spin.rst | 2 +- doc/src/fix_orient.rst | 18 +- doc/src/fix_pimd.rst | 7 +- doc/src/fix_rhok.rst | 8 +- doc/src/fix_rx.rst | 32 +- doc/src/fix_shake.rst | 13 +- doc/src/fix_spring_rg.rst | 18 +- doc/src/fix_ti_spring.rst | 18 +- doc/src/fix_ttm.rst | 34 +- doc/src/fix_wall.rst | 47 +- doc/src/fix_wall_ees.rst | 41 +- doc/src/fix_wall_region.rst | 52 +- doc/src/min_style.rst | 16 +- doc/src/pair_adp.rst | 84 ++- doc/src/pair_agni.rst | 40 +- doc/src/pair_airebo.rst | 115 +-- doc/src/pair_atm.rst | 114 +-- doc/src/pair_beck.rst | 40 +- doc/src/pair_body_nparticle.rst | 30 +- doc/src/pair_body_rounded_polygon.rst | 61 +- doc/src/pair_body_rounded_polyhedron.rst | 55 +- doc/src/pair_fep_soft.rst | 222 +++--- doc/src/pair_nm.rst | 43 +- doc/src/pair_srp.rst | 34 +- doc/src/pair_sw.rst | 52 +- doc/src/pair_tersoff.rst | 63 +- doc/src/pair_tersoff_mod.rst | 79 +- doc/src/pair_tersoff_zbl.rst | 84 ++- doc/src/pair_ufm.rst | 24 +- doc/src/pair_vashishta.rst | 62 +- doc/src/pair_yukawa.rst | 8 +- doc/src/pair_yukawa_colloid.rst | 26 +- doc/src/pair_zbl.rst | 35 +- doc/src/set.rst | 2 +- ....g++.1 => log.4Feb20.peptide-plumed.g++.1} | 34 +- ....g++.4 => log.4Feb20.peptide-plumed.g++.4} | 34 +- examples/USER/plumed/reference/p.log | 33 +- lib/gpu/lal_lj_tip4p_long.cpp | 25 +- lib/gpu/lal_lj_tip4p_long.cu | 326 +++++++- lib/plumed/Install.py | 4 +- lib/qmmm/Makefile.gfortran | 14 +- lib/qmmm/Makefile.ifort | 24 +- lib/qmmm/README | 13 +- src/GPU/pair_born_coul_long_gpu.cpp | 4 + src/GPU/pair_buck_coul_long_gpu.cpp | 4 + src/GPU/pair_lj_class2_coul_long_gpu.cpp | 4 + src/KOKKOS/Install.sh | 2 + .../compute_orientorder_atom_kokkos.cpp | 698 ++++++++++++++++++ src/KOKKOS/compute_orientorder_atom_kokkos.h | 150 ++++ src/KSPACE/pair_born_coul_long.cpp | 1 + src/KSPACE/pair_buck_long_coul_long.cpp | 1 + src/KSPACE/pair_coul_long.cpp | 1 + src/KSPACE/pair_lj_charmm_coul_long.cpp | 1 + src/KSPACE/pair_lj_charmmfsw_coul_long.cpp | 1 + src/KSPACE/pair_lj_cut_coul_long.cpp | 1 + src/KSPACE/pair_lj_long_coul_long.cpp | 1 + src/USER-PLUMED/fix_plumed.cpp | 5 +- src/compute_orientorder_atom.cpp | 2 + src/compute_orientorder_atom.h | 8 +- src/lmptype.h | 7 - src/modify.cpp | 14 + src/pair_coul_streitz.h | 1 - src/pair_lj96_cut.cpp | 1 + src/pair_mie_cut.cpp | 1 + src/reader_native.cpp | 10 +- src/set.cpp | 9 +- src/suffix.h | 19 +- src/version.h | 2 +- 322 files changed, 3229 insertions(+), 2663 deletions(-) delete mode 100644 doc/src/Eqs/centro_symmetry.jpg delete mode 100644 doc/src/Eqs/centro_symmetry.tex delete mode 100644 doc/src/Eqs/cna_cutoff1.jpg delete mode 100644 doc/src/Eqs/cna_cutoff1.tex delete mode 100644 doc/src/Eqs/cna_cutoff2.jpg delete mode 100644 doc/src/Eqs/cna_cutoff2.tex delete mode 100644 doc/src/Eqs/cnp_cutoff.jpg delete mode 100644 doc/src/Eqs/cnp_cutoff.tex delete mode 100644 doc/src/Eqs/cnp_cutoff2.jpg delete mode 100644 doc/src/Eqs/cnp_cutoff2.tex delete mode 100644 doc/src/Eqs/cnp_eq.jpg delete mode 100644 doc/src/Eqs/cnp_eq.tex delete mode 100644 doc/src/Eqs/compute_dpd.jpg delete mode 100644 doc/src/Eqs/compute_dpd.tex delete mode 100644 doc/src/Eqs/compute_fep_bar.jpg delete mode 100644 doc/src/Eqs/compute_fep_bar.tex delete mode 100644 doc/src/Eqs/compute_fep_fdti.jpg delete mode 100644 doc/src/Eqs/compute_fep_fdti.tex delete mode 100644 doc/src/Eqs/compute_fep_fep.jpg delete mode 100644 doc/src/Eqs/compute_fep_fep.tex delete mode 100644 doc/src/Eqs/compute_fep_lambda.jpg delete mode 100644 doc/src/Eqs/compute_fep_lambda.tex delete mode 100644 doc/src/Eqs/compute_fep_ti.jpg delete mode 100644 doc/src/Eqs/compute_fep_ti.tex delete mode 100644 doc/src/Eqs/compute_fep_u.jpg delete mode 100644 doc/src/Eqs/compute_fep_u.tex delete mode 100644 doc/src/Eqs/compute_fep_vol.jpg delete mode 100644 doc/src/Eqs/compute_fep_vol.tex delete mode 100644 doc/src/Eqs/compute_gyration.jpg delete mode 100644 doc/src/Eqs/compute_gyration.tex delete mode 100644 doc/src/Eqs/compute_msd_nongauss.jpg delete mode 100644 doc/src/Eqs/compute_msd_nongauss.tex delete mode 100644 doc/src/Eqs/compute_saed1.jpg delete mode 100644 doc/src/Eqs/compute_saed1.tex delete mode 100644 doc/src/Eqs/compute_saed2.jpg delete mode 100644 doc/src/Eqs/compute_saed2.tex delete mode 100644 doc/src/Eqs/compute_saed3.jpg delete mode 100644 doc/src/Eqs/compute_saed3.tex delete mode 100644 doc/src/Eqs/compute_shape_parameters.jpg delete mode 100644 doc/src/Eqs/compute_shape_parameters.tex delete mode 100644 doc/src/Eqs/compute_sna_atom1.jpg delete mode 100644 doc/src/Eqs/compute_sna_atom1.tex delete mode 100644 doc/src/Eqs/compute_sna_atom2.jpg delete mode 100644 doc/src/Eqs/compute_sna_atom2.tex delete mode 100644 doc/src/Eqs/compute_sna_atom3.jpg delete mode 100644 doc/src/Eqs/compute_sna_atom3.tex delete mode 100644 doc/src/Eqs/compute_sna_atom4.jpg delete mode 100644 doc/src/Eqs/compute_sna_atom4.tex delete mode 100644 doc/src/Eqs/compute_sna_atom5.jpg delete mode 100644 doc/src/Eqs/compute_sna_atom5.tex delete mode 100644 doc/src/Eqs/compute_sna_atom6.jpg delete mode 100644 doc/src/Eqs/compute_sna_atom6.tex delete mode 100644 doc/src/Eqs/compute_xrd1.jpg delete mode 100644 doc/src/Eqs/compute_xrd1.tex delete mode 100644 doc/src/Eqs/compute_xrd2.jpg delete mode 100644 doc/src/Eqs/compute_xrd2.tex delete mode 100644 doc/src/Eqs/compute_xrd3.jpg delete mode 100644 doc/src/Eqs/compute_xrd3.tex delete mode 100644 doc/src/Eqs/compute_xrd4.jpg delete mode 100644 doc/src/Eqs/compute_xrd4.tex delete mode 100644 doc/src/Eqs/compute_xrd5.jpg delete mode 100644 doc/src/Eqs/compute_xrd5.tex delete mode 100644 doc/src/Eqs/fix_bond_react.jpg delete mode 100644 doc/src/Eqs/fix_bond_react.tex delete mode 100644 doc/src/Eqs/fix_box_relax1.jpg delete mode 100644 doc/src/Eqs/fix_box_relax1.tex delete mode 100644 doc/src/Eqs/fix_box_relax2.jpg delete mode 100644 doc/src/Eqs/fix_box_relax2.tex delete mode 100644 doc/src/Eqs/fix_controller1.jpg delete mode 100644 doc/src/Eqs/fix_controller1.tex delete mode 100644 doc/src/Eqs/fix_controller2.jpg delete mode 100644 doc/src/Eqs/fix_controller2.tex delete mode 100644 doc/src/Eqs/fix_ehex_eom.jpg delete mode 100644 doc/src/Eqs/fix_ehex_eom.tex delete mode 100644 doc/src/Eqs/fix_ehex_f.jpg delete mode 100644 doc/src/Eqs/fix_ehex_f.tex delete mode 100644 doc/src/Eqs/fix_eos-cv.jpg delete mode 100644 doc/src/Eqs/fix_eos-cv.tex delete mode 100644 doc/src/Eqs/fix_eos_table_rx.jpg delete mode 100644 doc/src/Eqs/fix_eos_table_rx.tex delete mode 100644 doc/src/Eqs/fix_gcmc1.jpg delete mode 100644 doc/src/Eqs/fix_gcmc1.tex delete mode 100644 doc/src/Eqs/fix_gcmc2.jpg delete mode 100644 doc/src/Eqs/fix_gcmc2.tex delete mode 100644 doc/src/Eqs/fix_gcmc3.jpg delete mode 100644 doc/src/Eqs/fix_gcmc3.tex delete mode 100644 doc/src/Eqs/fix_gld1.jpg delete mode 100644 doc/src/Eqs/fix_gld1.tex delete mode 100644 doc/src/Eqs/fix_grem.jpg delete mode 100644 doc/src/Eqs/fix_grem.tex delete mode 100644 doc/src/Eqs/fix_integration_spin_stdecomposition.tex delete mode 100644 doc/src/Eqs/fix_lb_fluid_boltzmann.jpg delete mode 100755 doc/src/Eqs/fix_lb_fluid_boltzmann.tex delete mode 100644 doc/src/Eqs/fix_lb_fluid_fluidforce.jpg delete mode 100755 doc/src/Eqs/fix_lb_fluid_fluidforce.tex delete mode 100644 doc/src/Eqs/fix_lb_fluid_gammadefault.jpg delete mode 100755 doc/src/Eqs/fix_lb_fluid_gammadefault.tex delete mode 100644 doc/src/Eqs/fix_lb_fluid_navierstokes.jpg delete mode 100755 doc/src/Eqs/fix_lb_fluid_navierstokes.tex delete mode 100644 doc/src/Eqs/fix_lb_fluid_properties.jpg delete mode 100755 doc/src/Eqs/fix_lb_fluid_properties.tex delete mode 100644 doc/src/Eqs/fix_lb_fluid_stress.jpg delete mode 100755 doc/src/Eqs/fix_lb_fluid_stress.tex delete mode 100644 doc/src/Eqs/fix_lb_fluid_viscosity.jpg delete mode 100755 doc/src/Eqs/fix_lb_fluid_viscosity.tex delete mode 100644 doc/src/Eqs/fix_mvv_dpd.jpg delete mode 100644 doc/src/Eqs/fix_mvv_dpd.tex delete mode 100644 doc/src/Eqs/fix_nh1.jpg delete mode 100644 doc/src/Eqs/fix_nh1.tex delete mode 100644 doc/src/Eqs/fix_nphug.jpg delete mode 100644 doc/src/Eqs/fix_nphug.tex delete mode 100644 doc/src/Eqs/fix_orient_fcc.jpg delete mode 100644 doc/src/Eqs/fix_orient_fcc.tex delete mode 100644 doc/src/Eqs/fix_pimd.jpg delete mode 100644 doc/src/Eqs/fix_pimd.tex delete mode 100644 doc/src/Eqs/fix_rattle_constraints.jpg delete mode 100644 doc/src/Eqs/fix_rattle_constraints.tex delete mode 100644 doc/src/Eqs/fix_rattle_rij.jpg delete mode 100644 doc/src/Eqs/fix_rattle_rij.tex delete mode 100644 doc/src/Eqs/fix_rhok.jpg delete mode 100644 doc/src/Eqs/fix_rhok.tex delete mode 100644 doc/src/Eqs/fix_rx.jpg delete mode 100644 doc/src/Eqs/fix_rx.tex delete mode 100644 doc/src/Eqs/fix_rx_localTemp.jpg delete mode 100644 doc/src/Eqs/fix_rx_localTemp.tex delete mode 100644 doc/src/Eqs/fix_rx_localTemp2.jpg delete mode 100644 doc/src/Eqs/fix_rx_localTemp2.tex delete mode 100644 doc/src/Eqs/fix_rx_reaction.jpg delete mode 100644 doc/src/Eqs/fix_rx_reaction.tex delete mode 100644 doc/src/Eqs/fix_rx_reactionRate.jpg delete mode 100644 doc/src/Eqs/fix_rx_reactionRate.tex delete mode 100644 doc/src/Eqs/fix_spring_rg.jpg delete mode 100644 doc/src/Eqs/fix_spring_rg.tex delete mode 100644 doc/src/Eqs/fix_ttm.jpg delete mode 100644 doc/src/Eqs/fix_ttm.tex delete mode 100644 doc/src/Eqs/fix_ttm_blast.jpg delete mode 100644 doc/src/Eqs/fix_ttm_blast.tex delete mode 100644 doc/src/Eqs/fix_ttm_blast1.jpg delete mode 100644 doc/src/Eqs/fix_ttm_blast1.tex delete mode 100644 doc/src/Eqs/fix_ttm_ce.jpg delete mode 100644 doc/src/Eqs/fix_ttm_ce.tex delete mode 100644 doc/src/Eqs/fix_ttm_mod.jpg delete mode 100644 doc/src/Eqs/fix_ttm_mod.tex delete mode 100644 doc/src/Eqs/fix_wall_colloid.jpg delete mode 100644 doc/src/Eqs/fix_wall_colloid.tex delete mode 100644 doc/src/Eqs/fix_wall_ees.jpg delete mode 100644 doc/src/Eqs/fix_wall_ees.tex delete mode 100644 doc/src/Eqs/fix_wall_harmonic.jpg delete mode 100644 doc/src/Eqs/fix_wall_harmonic.tex delete mode 100644 doc/src/Eqs/fix_wall_lj1043.jpg delete mode 100644 doc/src/Eqs/fix_wall_lj1043.tex delete mode 100644 doc/src/Eqs/fix_wall_lj93.jpg delete mode 100644 doc/src/Eqs/fix_wall_lj93.tex delete mode 100644 doc/src/Eqs/hexorder.jpg delete mode 100644 doc/src/Eqs/hexorder.tex delete mode 100644 doc/src/Eqs/orientorder.jpg delete mode 100644 doc/src/Eqs/orientorder.tex delete mode 100644 doc/src/Eqs/pair_adp.jpg delete mode 100644 doc/src/Eqs/pair_adp.tex delete mode 100644 doc/src/Eqs/pair_agni.jpg delete mode 100644 doc/src/Eqs/pair_agni.tex delete mode 100644 doc/src/Eqs/pair_airebo.jpg delete mode 100644 doc/src/Eqs/pair_airebo.tex delete mode 100644 doc/src/Eqs/pair_atm.jpg delete mode 100644 doc/src/Eqs/pair_atm.tex delete mode 100644 doc/src/Eqs/pair_beck.jpg delete mode 100644 doc/src/Eqs/pair_beck.tex delete mode 100644 doc/src/Eqs/pair_body_rounded.jpg delete mode 100644 doc/src/Eqs/pair_body_rounded.tex delete mode 100644 doc/src/Eqs/pair_coul_soft.jpg delete mode 100644 doc/src/Eqs/pair_coul_soft.tex delete mode 100644 doc/src/Eqs/pair_lj_soft.jpg delete mode 100644 doc/src/Eqs/pair_lj_soft.tex delete mode 100644 doc/src/Eqs/pair_morse_soft.jpg delete mode 100644 doc/src/Eqs/pair_morse_soft.tex delete mode 100644 doc/src/Eqs/pair_nm.jpg delete mode 100644 doc/src/Eqs/pair_nm.tex delete mode 100644 doc/src/Eqs/pair_srp1.jpg delete mode 100644 doc/src/Eqs/pair_srp1.tex delete mode 100644 doc/src/Eqs/pair_srp2.jpg delete mode 100644 doc/src/Eqs/pair_srp2.tex delete mode 100644 doc/src/Eqs/pair_sw.jpg delete mode 100644 doc/src/Eqs/pair_sw.tex delete mode 100644 doc/src/Eqs/pair_tersoff.jpg delete mode 100644 doc/src/Eqs/pair_tersoff_1.jpg delete mode 100644 doc/src/Eqs/pair_tersoff_1.tex delete mode 100644 doc/src/Eqs/pair_tersoff_2.jpg delete mode 100644 doc/src/Eqs/pair_tersoff_2.tex delete mode 100644 doc/src/Eqs/pair_tersoff_mod.jpg delete mode 100644 doc/src/Eqs/pair_tersoff_mod.tex delete mode 100644 doc/src/Eqs/pair_tersoff_mod_c.jpg delete mode 100644 doc/src/Eqs/pair_tersoff_mod_c.tex delete mode 100644 doc/src/Eqs/pair_tersoff_zbl.jpg delete mode 100644 doc/src/Eqs/pair_tersoff_zbl.tex delete mode 100644 doc/src/Eqs/pair_ufm.jpg delete mode 100644 doc/src/Eqs/pair_ufm.tex delete mode 100644 doc/src/Eqs/pair_vashishta.jpg delete mode 100644 doc/src/Eqs/pair_vashishta.tex delete mode 100644 doc/src/Eqs/pair_yukawa.jpg delete mode 100644 doc/src/Eqs/pair_yukawa.tex delete mode 100644 doc/src/Eqs/pair_yukawa_colloid.jpg delete mode 100644 doc/src/Eqs/pair_yukawa_colloid.tex delete mode 100644 doc/src/Eqs/pair_zbl.jpg delete mode 100644 doc/src/Eqs/pair_zbl.tex delete mode 100644 doc/src/Eqs/pressure.jpg delete mode 100644 doc/src/Eqs/pressure.tex delete mode 100644 doc/src/Eqs/pressure_tensor.jpg delete mode 100644 doc/src/Eqs/pressure_tensor.tex delete mode 100644 doc/src/Eqs/ptm_rmsd.jpg delete mode 100644 doc/src/Eqs/ptm_rmsd.tex rename doc/src/{Eqs => JPG}/fix_integration_spin_stdecomposition.jpg (100%) rename examples/USER/plumed/{log.27Nov18.peptide-plumed.g++.1 => log.4Feb20.peptide-plumed.g++.1} (82%) rename examples/USER/plumed/{log.27Nov18.peptide-plumed.g++.4 => log.4Feb20.peptide-plumed.g++.4} (82%) create mode 100644 src/KOKKOS/compute_orientorder_atom_kokkos.cpp create mode 100644 src/KOKKOS/compute_orientorder_atom_kokkos.h diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index bf5c502d84..e10176f9fd 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -49,8 +49,8 @@ if(PKG_USER-PLUMED) message(STATUS "PLUMED download requested - we will build our own") include(ExternalProject) ExternalProject_Add(plumed_build - URL https://github.com/plumed/plumed2/releases/download/v2.5.3/plumed-src-2.5.3.tgz - URL_MD5 de30d6e7c2dcc0973298e24a6da24286 + URL https://github.com/plumed/plumed2/releases/download/v2.6.0/plumed-src-2.6.0.tgz + URL_MD5 204d2edae58d9b10ba3ad460cad64191 BUILD_IN_SOURCE 1 CONFIGURE_COMMAND /configure --prefix= ${CONFIGURE_REQUEST_PIC} diff --git a/doc/Makefile b/doc/Makefile index 82c099ff70..7fba611361 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -75,8 +75,11 @@ html: $(ANCHORCHECK) @rm -rf html/_sources @rm -rf html/PDF @rm -rf html/USER + @rm -rf html/JPG @cp -r src/PDF html/PDF @cp -r src/USER html/USER + @mkdir -p html/JPG + @cp `grep -A2 '\.\. image::' src/*.rst | grep ':target:' | sed -e 's,.*:target: JPG/,src/JPG/,' | sort | uniq` html/JPG/ @rm -rf html/PDF/.[sg]* @rm -rf html/USER/.[sg]* @rm -rf html/USER/*/.[sg]* diff --git a/doc/lammps.1 b/doc/lammps.1 index 492a600e9d..ee2299f4b5 100644 --- a/doc/lammps.1 +++ b/doc/lammps.1 @@ -1,4 +1,4 @@ -.TH LAMMPS "4 February 2020" "2020-02-04" +.TH LAMMPS "18 February 2020" "2020-02-18" .SH NAME .B LAMMPS \- Molecular Dynamics Simulator. @@ -11,13 +11,18 @@ or mpirun \-np 2 .B lmp - [OPTIONS] ... +\-in [OPTIONS] ... or .B lmp \-r2data file.restart file.data +or + +.B lmp +\-h + .SH DESCRIPTION .B LAMMPS is a classical molecular dynamics code, and an acronym for \fBL\fRarge-scale @@ -249,7 +254,7 @@ the chapter on errors in the manual gives some additional information about error messages, if possible. .SH COPYRIGHT -© 2003--2019 Sandia Corporation +© 2003--2020 Sandia Corporation This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index d2d47f694c..e1d3b52165 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -880,6 +880,9 @@ USER-PLUMED package Before building LAMMPS with this package, you must first build PLUMED. PLUMED can be built as part of the LAMMPS build or installed separately from LAMMPS using the generic `plumed installation instructions `_. +The USER-PLUMED package has been tested to work with Plumed versions +2.4.x, 2.5.x, and 2.6.x and will error out, when trying to run calculations +with a different version of the Plumed kernel. PLUMED can be linked into MD codes in three different modes: static, @@ -1212,13 +1215,10 @@ USER-QMMM package for a QM/MM simulation. You must also build Quantum ESPRESSO and create a new executable (pwqmmm.x) which links LAMMPS and Quantum ESPRESSO together. These are steps 3 and 4 described in the - lib/qmmm/README file. Unfortunately, the Quantum ESPRESSO developers - have been breaking the interface that the QM/MM code in LAMMPS is using, - so that currently (Summer 2018) using this feature requires either - correcting the library interface feature in recent Quantum ESPRESSO - releases, or using an outdated version of QE. The last version of - Quantum ESPRESSO known to work with this QM/MM interface was version - 5.4.1 from 2016. + lib/qmmm/README file. This requires a compatible Quantum espresso + and LAMMPS version. The current interface and makefiles have + last been verified to work in February 2020 with Quantum Espresso + versions 6.3 to 6.5. **CMake build**\ : diff --git a/doc/src/Build_windows.rst b/doc/src/Build_windows.rst index fd76f3ac80..264e4bf44f 100644 --- a/doc/src/Build_windows.rst +++ b/doc/src/Build_windows.rst @@ -17,9 +17,9 @@ General remarks LAMMPS is developed and tested primarily on Linux machines. The vast majority of HPC clusters and supercomputers today runs on Linux as well. -Thus portability to other platforms is desired, but not always achieved. +While portability to other platforms is desired, it is not always achieved. The LAMMPS developers strongly rely on LAMMPS users giving feedback and -providing assistance in resolving portability issues. This particularly +providing assistance in resolving portability issues. This is particularly true for compiling LAMMPS on Windows, since this platform has significant differences with some low-level functionality. @@ -31,18 +31,20 @@ Running Linux on Windows So before trying to build LAMMPS on Windows, please consider if using the pre-compiled Windows binary packages are sufficient for your needs (as an aside, those packages themselves are build on a Linux machine -using cross-compilers). If it is necessary for your to compile LAMMPS +using cross-compilers). If it is necessary for you to compile LAMMPS on a Windows machine (e.g. because it is your main desktop), please also -consider using a virtual machine software and run a Linux virtual machine, -or - if have a recently updated Windows 10 installation - consider using -the Windows subsystem for Linux, which allows to run a bash shell from -Ubuntu and from there on, you can pretty much use that shell like you -are running on an Ubuntu Linux machine (e.g. installing software via -apt-get). For more details on that, please see :doc:`this tutorial ` +consider using a virtual machine software and compile and run LAMMPS in +a Linux virtual machine, or - if you have a recently updated Windows 10 +installation - consider using the Windows subsystem for Linux. This +optional Windows feature allows you to run the bash shell from Ubuntu +from within Windows and from there on, you can pretty much use that +shell like you are running on an Ubuntu Linux machine (e.g. installing +software via apt-get and more). For more details on that, please +see :doc:`this tutorial ` .. _gnu: -Using GNU GCC ported to Windows +Using a GNU GCC ported to Windows ----------------------------------------- One option for compiling LAMMPS on Windows natively, that has been known @@ -83,13 +85,13 @@ traditional build system, but CMake has also been successfully tested using the mingw32-cmake and mingw64-cmake wrappers that are bundled with the cross-compiler environment on Fedora machines. A CMake preset selecting all packages compatible with this cross-compilation build -is provided. You likely need to disable the GPU package unless you +is provided. You will likely need to disable the GPU package unless you download and install the contents of the pre-compiled `OpenCL ICD loader library `_ into your MinGW64 cross-compiler environment. The cross-compilation currently will only produce non-MPI serial binaries. -Please keep in mind, though, that this only applies to compiling LAMMPS. -Whether the resulting binaries do work correctly is no tested by the +Please keep in mind, though, that this only applies to **compiling** LAMMPS. +Whether the resulting binaries do work correctly is not tested by the LAMMPS developers. We instead rely on the feedback of the users of these pre-compiled LAMMPS packages for Windows. We will try to resolve issues to the best of our abilities if we become aware of them. However diff --git a/doc/src/Eqs/centro_symmetry.jpg b/doc/src/Eqs/centro_symmetry.jpg deleted file mode 100644 index 1e89d11a11bea81ba00ddb2a65d62a3f2e0e2398..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4111 zcmb_fXHXN|(oQJS1rk6F5Cnn{>Z>9k(u+Wl7JBbU3lORp;H4wg5Fv<&2nMAHNDJM9 zlps}_385K^R1uISBA5H){pS9-f9}k;JF|0U_RM+q%9gTZEza^1Ofs2 zX9_r_0<-~)^b8CP^o(bQk&*En6FW20nQ*ePv9NP`ZJ9G69&d}bo5Njz%#EN z7XV1l0HmX5q+?=d`}dx+H3NY095;wb7<^TeN93BBD>E;js1_0(mwf@IU||)WQ_}c( zbnLpkqPC@*`=i`qLc{44fcf75>VRX}oKiRf`M;Uh=9I0vFe?Rawed@CA?Ghz!wi;F zV8X)Pw~?%ROe&(Z^NT#cwp<+Ts=pYt$V|>I)k#?$vTD28dBF|QzFO8@OrGqY&s)`K(2)ta_XMxwquvnf8q}W^f4NKWep4GIF z=ZGdJZe|nID+FK4!tT6P5&?U!j36P%-KYBC@?_S3xye`IW%s`pQ_mCoWeDW~O3!mj zMF(&gppyyKt|xkozi{_L9z=J$@?#!GK2ZWLVqy8iC7O=n!)&US1+LyJ=?><+yNaQV zA4erSH8-@CKX^MVAsr)JqRMB_{=!*p0?tNsDZIWvP`r;Hzj9JdJ4hkjf(P77w= zeP#=XCZ-L9e!SdM_qJq!bg`x6Thx8BEkd+dH{C-=8Fy(Jc~gn@Wl-!{@@Y7nI4k$aa1dOL##R|vSS==EQ_x!A6{y)w@Hp}lC z=O!0wed6tQm1Igi63VU)EtO1B>X$wYD^!$f%PMQ%ao0%~gu+q-Yw9lf2<0?JwWkE@ z1G1e1Fl9~5t51LX-|t~wEC~5P3CLc_ZBG)Gsr=S`9{9G~ZfjypU?{+2U+dLIdPDu) z<^o&oYR0NQj$*ML<_&vR8-)I0yus#M;XsmHi$!X+TUujR!$;hPX3&#Qix~SsiQ*Be zx1D_AYq-j%q48WFWuRUgurJV>TCE${MtRaC*(=j5iEc_y#jg6u!M({4P3_lM&LBkG zP8AA{INU0~m|OIGCcy7TZl*@t&joSJhvs?_5GtxTVL zIxW;uh*jB()kQYYZjn3p9dS}?!Q-zc`X(Vkx$q>RPb|(NyhoMvJK1?Uo z^HfDcYPQ&`ST#|txvTSq+0^X}Vz@lUkMyLywc0)W;AyN#KHT{8rj$hBIw@8kGFKY; z&hUE1y4w5Vr61^x`_hpW5fpNEP^6?C7Y)l}0a4Lv#@&K;h2QWTX~%zv>0W+cOEJo% za`YWL_DoyT?tu!d7v#Skj~L87z*KrXJFYsBl&M}|UA+|SqJJmZ^!W2QVN0{e(cD=4 zU4>N=>_ivw`T!|ce>LOEW_Fhs|6I6kxIGEChRs!&;wc3nSr$V9o9njIcg5CZ)|rT& z>$Y@yY znPwAyUtizn(3xrmtHe-dP~`|@ZpO2dp}qVia=dKK`^>`|jA-YqoD{bXvHk?VFv-bJ zv7RNs4OX>Rp$2utE$gd!SMddzU}(Bn`t)Rhwm#l!#L$dc1L(*48x8PzdpZ1D#U3j% zmsZQx;ykrBKfM)m4(#UL>G2z$C)fJy%kW1=A)}Z%Ul_11l+lv%*(<@%VMX@Z_|5A4 zil`a`wDB{C{TK}7M63Pb55w1jH;(%cl#3oNHh(JBf7+e3mU0Q-o7SjAw25R&BQ{Dr z1n)kq30duse@6}8kfi2Og^xuenl}f~jlcovVz{v0PMQ{7#2QGF_Pz3ntHcz4@?upc zi!q#I{Y$IntrJTF+TBw?S8dU1;3*&vxyjbgdqZRsLYj7j-j@1aHMmZU$1?p{`(9oj z6(Yf*pO{fRa>_S@{jq7bDTKoQ}cD z29valv+AQ!5OXv*7(bWQ(!?U1)R(8AohC4YgcwMgDMJvU0BAh1QBz&EQS0%BUWo@Q zx)g2Z_2K3s_!J;H(uYVH2TAdc-s$-)#QTJb-4O$0XQvt4?_&}Wtq9Zac>UQ228t}xHZm2zpc0Vxn9 z(}@ujPw-_}e`9%PEsQGKXtyzW!7QM6)MxKC}GdfxDAxZcg)leL(a+ZbWZKv!ChFf$w3h3)eaa*nUMwMlBH`ru6+ z(7wtn`uwmHK(&#~d14;FDe^3?=NPW2Os`-8+Jx(X|GmK>`Q^fnDkE(?SAtL%izG*t zrUSOrJ8@IljLfjI*4_Wr*y3q4UwT5?)vlxglcaeCoIcRrSrx}TVlexVw7z4k2~z!I zR68rv$U3vR>!~z<_L(7&X8nIZ<-fN@I`^k>f>WkmzoVzFs?SWk-zQMV%fb5MHPg%x zncP?&a}ucN0eu~y;)-a6v-R%9RNQY%)wC&o&Nmw9lJX0heXw}C zmA3k&`Q#6j>KeUP&M70Vv0Mh_GK%R4hKo?hEl`cVq(uAJAv#k|z0khAVy_b_Gxv~c{~ z5jA9&D5aVmNNCvWOOIcK6QJGxL_6azHL@NIkKRRbNNHzMst&)a2fmrIVb^Ht(ed6q z+SUSr6rzn&Le~6RH&IQF&#M_H8Em%&E?1>WmrhQ+sBI|Y3e~uwcl^vnh!l0!nxNi8 zU&mLRT~*+0<*{^|&7Bcu!|mttW2p?@s|Na_?v0LS?;Hb!BDi*`3e9eX{+A2R?nqxW+g_16g&n-(_1X#$J3D znL1&uZ7$Mw^H8Qemz0$#v&czeTk8GWyla1V=P0djkMq!R?BO@jIf^2LuV zLba_G8TReyZYA9*A1dwpP+0jMiTo4~vWVKR5hh1k47Ir`1{DA7m=1?Mc(dI6+g4V- z$#VYISEbzYlDD^LVH5|I_b|&qWOWPd=KkfqFW*z{&g2_%FEk@;(t5X2168WdV?6V? zd%r>@qe!eZ=34Ps9>o#`1!na(N7kF3_igDs+b-opL+^^Vw(WiWS?sPu-27yiS@{#r zhDaGno3O@zv&lkX_e?;2X8cfv4A&!*8{E|N4}E@N?>Np&Br|Jjd)p+Ax@fOoyw_UvtlGC1vJ2MF?ni8DV8ER(xP)#jdRA=GdyGqn2GJ=~>md}F6 z!6(li)mqn7HrbCU%%Hp!>qP^us|Lu;Lkc_aKt}VrMs?04maoM-Kf%}^AgnKA4`yIx_QUo*&9rmngu=iT^3%4&`vc$=%{W#&L zF+35-S03#|9-eK4N%N?!VXBrs!wzhHhDq1^6o5L?+YJ~z1+2DO4gE83JMp2jI&O>` zR=ZGDc&q+6alN!SCcU4KjjWIUx&haiXjBa?%`GyAg`p~b*vqi5 z!Oq1Vw{z4g(yOi69W~L#QB+=*Z<*hZms98ukp2ix_1P1j9y4w^{%Qahd@5m{C^UTe z(X#L03R)<(nN!!593XFN&*slJPJu|kRnx+#PIeXjYNBbjFH?ybZv6o{AS5&$_!1A? z6~JLbeRVL>x38sAKz!SI$~@l2gt8!xH%*iA=bAc5A<-w`r5A0I|L_Vg=}2jK-Ig^t zdupb>%bvYh4fNQ-5NY1WBeD#w0{j%;9VC?tX(sH~#EBe*T zh=H0*kNmNy$rkeh^oWzsFk`7S@Pjr6K6yYLe%om0=idJal`cFO5|$%lw?omtLih*v zKPaYykWUjCor2ASpvBJm)00kK^EKxkXIN{=Z}bdSsn#0x(6I3 z*U=+4ee7Aukgc-g)|1~aP60H%g9$~;sxJja20POC=eXA!hgN;^fF%^4Vw&=&kzA=K yqjcfL9sVb04{(J+ZI@27+=oaaZt6*-QMpF!x&0&wzrBgf{|M@TW5Cv@lz#zxnXD23 diff --git a/doc/src/Eqs/centro_symmetry.tex b/doc/src/Eqs/centro_symmetry.tex deleted file mode 100644 index 8d9a9a33e6..0000000000 --- a/doc/src/Eqs/centro_symmetry.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - CS = \sum_{i = 1}^{N/2} | \vec{R}_i + \vec{R}_{i+N/2} |^2 -$$ - -\end{document} diff --git a/doc/src/Eqs/cna_cutoff1.jpg b/doc/src/Eqs/cna_cutoff1.jpg deleted file mode 100644 index fae5c6b636c0f818f8677fd7fce4f402cb03a95d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13431 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 diff --git a/doc/src/Eqs/cna_cutoff1.tex b/doc/src/Eqs/cna_cutoff1.tex deleted file mode 100644 index f74166e608..0000000000 --- a/doc/src/Eqs/cna_cutoff1.tex +++ /dev/null @@ -1,14 +0,0 @@ -\documentclass[12pt,article]{article} - -\usepackage{indentfirst} -\usepackage{amsmath} - -\begin{document} - -\begin{eqnarray*} - r_{c}^{fcc} & = & \frac{1}{2} \left(\frac{\sqrt{2}}{2} + 1\right) \mathrm{a} \simeq 0.8536 \:\mathrm{a} \\ - r_{c}^{bcc} & = & \frac{1}{2}(\sqrt{2} + 1) \mathrm{a} \simeq 1.207 \:\mathrm{a} \\ - r_{c}^{hcp} & = & \frac{1}{2}\left(1+\sqrt{\frac{4+2x^{2}}{3}}\right) \mathrm{a} -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/cna_cutoff2.jpg b/doc/src/Eqs/cna_cutoff2.jpg deleted file mode 100644 index 744b61e9b45fd5401a745ab968d9faa607a88b19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2518 zcmbW3XE@sn8^-@+=^HDwc7i5Oj#{;fQcg=#qpGyE6^)hJt43;cSv7(~QR7hKXzd!u zsx4xc5VNSLy{Vwe(J$}E_rv?Uuj~2nJok0qU!T*l(^-I17pH>*n3$LV?K1(VlYk}w z0fE6_5aet?AP^{wl?8SN2ONHm6~V#9h2TISxOs$lxz7t+Kp^-;`2>(iVPRoz-iw%v zD2xzF7zbPwMc(6)&bz!u)yeO$^b@mGjlO9F%M%l?y399#EaoO{#ZD7)5W>*cd^e_Go$ zDzVy>A}pek8}n*iOUrPIp*+VYlAtKp=SG=$?ahIIl>S=+qJGW}VG*ows+L>wom)wO>zeFyiS05-&kr@IZ?=j} zrn_x#JQyzd+bhVk2r&jj}rjegsDF=2d0_hgy!Dzko@3%{G~& zdr;i)($rwI#5B_#XzeR%f5o2gIpa;oUSkmL`oF*yG zc+LnSPbSV6UcmNN_&3DOl|~Oz?8HY3J1$@Gy1Cm+Q(AFVzR^jHd&4rZ$WbOfoRYgz zD*g4cMmnjIpVxu1@bOn1QxM(~gM%WKe&g$8^b*Vrt`(dw-ij{<#`Ccq* zw6)X`Vd^QjW2>s=v8JhhHKjC#yuZg0I;WUZqJtWv`^0%T zo1gR4`0MVzuV4)2NkjR(QxilTU>oz^f}E3{jD$1Zn4xh~+v%V)dcs+9nB9X(0M>k<$AT#N(t+obf#V%ZKgg4tjt ztP6zNX=D4F5{{vKnS?9|%R=LcBczD;?j0sFh2%g*itLtkiG08%XrAsP!_~%*^+Vnh zGZ~5{0UHO%CRK~W&_ePl0I$_;uuAf-DnGXUe(9%rL6l8b(8W!+w&p?XW=@XEbT3&u z(Eg<>+0OG|e9KrxaxLTo-}^4|i3#%))*L0(dFb;+C#ScWO&8m(8zC;1+u!V^uWjZp zba$_hE)ZL&ep}EVvB%6z=*g7M(QfLIo{?p&`t15ht(4&HEZnNnrxFx61)Y_=dV@n+ z%`AsPGW@O7l8%(S<)$f?rMkI)@MFs*@G+qo0p1ZH3e!E|aJ77;1Yhp=LRD{8b-cyW zTy@I=Ukoce#*NLT79AoQ8c4o5AxSj_0W*24;l@SZ`1dkKW$!N=32==`J)700t@-gX zIQ+=Yxc(IFAHCb@#5Bhp70G>T@n-okRWABAqdc{zTR6U(`^uSH1L{s&8x&_Z+$s#Hp>L^s#_3GpXoa{c;Bf;mq!0u^4c0MLqsxQ25pO zteOF`^Ya3zUU^NTdu zB7EjD#*=Cex{lrOVGqUbJ#d7qytz}d6Q&>CH$JaMRdx7JDRG-;*6wcLi@M)4F#0Z@ zxFN<;Mq`_!U1+I_>QALW`|P7@d2RTR?wp0?STDEi(I$uWTMoHogJ6s8ulzrylG{Ir z;cPWh_8BOK2JKos2OBbHD_1hg177lq)_CQplT#D^ePbP*0A&;>-Sx5B@(^lLp+Bvd zQl7kWsMydUVLXo@2UmrX71xNBsQsm?SuXQGW}frb7rXKv-7;EG5;_pS*GDf-8RvDk zH+9EZ$vC0-$Ea9x*x}Vd%TI+~Ckp)~d-=qi2Xj9H1CKYOKphXo|}}Vy6Ll46LTCl{AJ=Mu1#+em>eCDBqF(ubaZm5=9f+=f}CQJdh(qbPbJtv*pMY$SnT z&%XCEd}5>XV{JQ9A^F9kjYpkX*THcRYyoOXQ&*n~v+pP^qy2Mk&D2Nz+zbPje6mS> z9CQ#!!Ef%Fgx}O%C(0SM41OTQcL^>1X7Atj&L3qy8+?7I;O~gnEVfZR$(r0~0*2HX zdL`K4Rho>{ny*B)(|DCtMPFR{*n4_ohiK$BFUMkqnczvfNg=|3fYnzJo^Ox4?<4I{{>T2w#fhh diff --git a/doc/src/Eqs/cna_cutoff2.tex b/doc/src/Eqs/cna_cutoff2.tex deleted file mode 100644 index fcec31fd24..0000000000 --- a/doc/src/Eqs/cna_cutoff2.tex +++ /dev/null @@ -1,12 +0,0 @@ -\documentclass[12pt,article]{article} - -\usepackage{indentfirst} -\usepackage{amsmath} - -\begin{document} - -$$ - Rc + Rs > 2*{\rm cutoff} -$$ - -\end{document} diff --git a/doc/src/Eqs/cnp_cutoff.jpg b/doc/src/Eqs/cnp_cutoff.jpg deleted file mode 100644 index fae5c6b636c0f818f8677fd7fce4f402cb03a95d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13431 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 diff --git a/doc/src/Eqs/cnp_cutoff.tex b/doc/src/Eqs/cnp_cutoff.tex deleted file mode 100644 index f74166e608..0000000000 --- a/doc/src/Eqs/cnp_cutoff.tex +++ /dev/null @@ -1,14 +0,0 @@ -\documentclass[12pt,article]{article} - -\usepackage{indentfirst} -\usepackage{amsmath} - -\begin{document} - -\begin{eqnarray*} - r_{c}^{fcc} & = & \frac{1}{2} \left(\frac{\sqrt{2}}{2} + 1\right) \mathrm{a} \simeq 0.8536 \:\mathrm{a} \\ - r_{c}^{bcc} & = & \frac{1}{2}(\sqrt{2} + 1) \mathrm{a} \simeq 1.207 \:\mathrm{a} \\ - r_{c}^{hcp} & = & \frac{1}{2}\left(1+\sqrt{\frac{4+2x^{2}}{3}}\right) \mathrm{a} -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/cnp_cutoff2.jpg b/doc/src/Eqs/cnp_cutoff2.jpg deleted file mode 100644 index 744b61e9b45fd5401a745ab968d9faa607a88b19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2518 zcmbW3XE@sn8^-@+=^HDwc7i5Oj#{;fQcg=#qpGyE6^)hJt43;cSv7(~QR7hKXzd!u zsx4xc5VNSLy{Vwe(J$}E_rv?Uuj~2nJok0qU!T*l(^-I17pH>*n3$LV?K1(VlYk}w z0fE6_5aet?AP^{wl?8SN2ONHm6~V#9h2TISxOs$lxz7t+Kp^-;`2>(iVPRoz-iw%v zD2xzF7zbPwMc(6)&bz!u)yeO$^b@mGjlO9F%M%l?y399#EaoO{#ZD7)5W>*cd^e_Go$ zDzVy>A}pek8}n*iOUrPIp*+VYlAtKp=SG=$?ahIIl>S=+qJGW}VG*ows+L>wom)wO>zeFyiS05-&kr@IZ?=j} zrn_x#JQyzd+bhVk2r&jj}rjegsDF=2d0_hgy!Dzko@3%{G~& zdr;i)($rwI#5B_#XzeR%f5o2gIpa;oUSkmL`oF*yG zc+LnSPbSV6UcmNN_&3DOl|~Oz?8HY3J1$@Gy1Cm+Q(AFVzR^jHd&4rZ$WbOfoRYgz zD*g4cMmnjIpVxu1@bOn1QxM(~gM%WKe&g$8^b*Vrt`(dw-ij{<#`Ccq* zw6)X`Vd^QjW2>s=v8JhhHKjC#yuZg0I;WUZqJtWv`^0%T zo1gR4`0MVzuV4)2NkjR(QxilTU>oz^f}E3{jD$1Zn4xh~+v%V)dcs+9nB9X(0M>k<$AT#N(t+obf#V%ZKgg4tjt ztP6zNX=D4F5{{vKnS?9|%R=LcBczD;?j0sFh2%g*itLtkiG08%XrAsP!_~%*^+Vnh zGZ~5{0UHO%CRK~W&_ePl0I$_;uuAf-DnGXUe(9%rL6l8b(8W!+w&p?XW=@XEbT3&u z(Eg<>+0OG|e9KrxaxLTo-}^4|i3#%))*L0(dFb;+C#ScWO&8m(8zC;1+u!V^uWjZp zba$_hE)ZL&ep}EVvB%6z=*g7M(QfLIo{?p&`t15ht(4&HEZnNnrxFx61)Y_=dV@n+ z%`AsPGW@O7l8%(S<)$f?rMkI)@MFs*@G+qo0p1ZH3e!E|aJ77;1Yhp=LRD{8b-cyW zTy@I=Ukoce#*NLT79AoQ8c4o5AxSj_0W*24;l@SZ`1dkKW$!N=32==`J)700t@-gX zIQ+=Yxc(IFAHCb@#5Bhp70G>T@n-okRWABAqdc{zTR6U(`^uSH1L{s&8x&_Z+$s#Hp>L^s#_3GpXoa{c;Bf;mq!0u^4c0MLqsxQ25pO zteOF`^Ya3zUU^NTdu zB7EjD#*=Cex{lrOVGqUbJ#d7qytz}d6Q&>CH$JaMRdx7JDRG-;*6wcLi@M)4F#0Z@ zxFN<;Mq`_!U1+I_>QALW`|P7@d2RTR?wp0?STDEi(I$uWTMoHogJ6s8ulzrylG{Ir z;cPWh_8BOK2JKos2OBbHD_1hg177lq)_CQplT#D^ePbP*0A&;>-Sx5B@(^lLp+Bvd zQl7kWsMydUVLXo@2UmrX71xNBsQsm?SuXQGW}frb7rXKv-7;EG5;_pS*GDf-8RvDk zH+9EZ$vC0-$Ea9x*x}Vd%TI+~Ckp)~d-=qi2Xj9H1CKYOKphXo|}}Vy6Ll46LTCl{AJ=Mu1#+em>eCDBqF(ubaZm5=9f+=f}CQJdh(qbPbJtv*pMY$SnT z&%XCEd}5>XV{JQ9A^F9kjYpkX*THcRYyoOXQ&*n~v+pP^qy2Mk&D2Nz+zbPje6mS> z9CQ#!!Ef%Fgx}O%C(0SM41OTQcL^>1X7Atj&L3qy8+?7I;O~gnEVfZR$(r0~0*2HX zdL`K4Rho>{ny*B)(|DCtMPFR{*n4_ohiK$BFUMkqnczvfNg=|3fYnzJo^Ox4?<4I{{>T2w#fhh diff --git a/doc/src/Eqs/cnp_cutoff2.tex b/doc/src/Eqs/cnp_cutoff2.tex deleted file mode 100644 index fcec31fd24..0000000000 --- a/doc/src/Eqs/cnp_cutoff2.tex +++ /dev/null @@ -1,12 +0,0 @@ -\documentclass[12pt,article]{article} - -\usepackage{indentfirst} -\usepackage{amsmath} - -\begin{document} - -$$ - Rc + Rs > 2*{\rm cutoff} -$$ - -\end{document} diff --git a/doc/src/Eqs/cnp_eq.jpg b/doc/src/Eqs/cnp_eq.jpg deleted file mode 100644 index d4213144424331690936b0fd96014ba8ea8eaca0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23959 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 X*&M@?uTM@)HQ#144*tVd#T)ovcj-gp diff --git a/doc/src/Eqs/cnp_eq.tex b/doc/src/Eqs/cnp_eq.tex deleted file mode 100644 index e5f157e6ba..0000000000 --- a/doc/src/Eqs/cnp_eq.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - Q_{i} = \frac{1}{n_i}\sum_{j = 1}^{n_i} | \sum_{k = 1}^{n_{ij}} \vec{R}_{ik} + \vec{R}_{jk} |^2 -$$ - -\end{document} diff --git a/doc/src/Eqs/compute_dpd.jpg b/doc/src/Eqs/compute_dpd.jpg deleted file mode 100644 index 549f259c6cbbb89c8c6a8218b5b43af2a688ce3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21381 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 diff --git a/doc/src/Eqs/compute_dpd.tex b/doc/src/Eqs/compute_dpd.tex deleted file mode 100644 index e46b0b4dd6..0000000000 --- a/doc/src/Eqs/compute_dpd.tex +++ /dev/null @@ -1,13 +0,0 @@ -\documentstyle[12pt]{article} -\pagestyle{empty} -\begin{document} - -\begin{eqnarray*} - U^{cond} = \displaystyle\sum_{i=1}^{N} u_{i}^{cond} \\ - U^{mech} = \displaystyle\sum_{i=1}^{N} u_{i}^{mech} \\ - U^{chem} = \displaystyle\sum_{i=1}^{N} u_{i}^{chem} \\ - U = \displaystyle\sum_{i=1}^{N} (u_{i}^{cond} + u_{i}^{mech} + u_{i}^{chem}) \\ - \theta_{avg} = (\frac{1}{N}\displaystyle\sum_{i=1}^{N} \frac{1}{\theta_{i}})^{-1} \\ -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/compute_fep_bar.jpg b/doc/src/Eqs/compute_fep_bar.jpg deleted file mode 100644 index 772ec9c0450a35c52b5b927cbf20e7d77e373c93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18106 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 = \left< \frac{1}{1 + \exp\left[\left(U_0 - U_1 + \Delta_0^1A \right) /kT \right]} \right>_1 \] - -\end{document} diff --git a/doc/src/Eqs/compute_fep_fdti.jpg b/doc/src/Eqs/compute_fep_fdti.jpg deleted file mode 100644 index ae8de241cc132dfbe0d932baf99a9e066ab178e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15544 zcmeIYcU)6Vw=cd!=tZh@3{nIQ5PCqGbV5LS3m}HjLI|M*2oOOL=|xaMK}AJH1Vp;h zJ2pg60YSQ`C}^UBkrIBJ=lPxYeeXHv-h1x(+&}M-+4(YiX7*ZZX02Ik?d(qO&I1Cr zRwyd~0)YTF;2*HN$m@wRH}`XNcCbR(S%NnJfY-(jA5LNs003e*Im+4EOxDv2Bg^p; zU;(%Qc0dCFu(;?5dlxHL04yj=bJ=LH(;oh3*%$}FnE>Fms*R(p>_6N8OGpqG5k&?7 zh$GlrDAO`H=eh_EG#sq>GY6s%9SbSg{h~I!%AuNW72QdT0BE&#!Gyt&j?zNKxaUmd9 z2QhDytFt+X4FQ0YH~3$$|G!{zAO)lo0L)1d@lp8T5VEW??y#(ezP_HUO<-JDAepS{ zh{X}GQ30~%Bw_?MJRSi4=6P=vAhai2Sy0Hj8v44rs+ww``2SJ>wgXQ*7oln zKb`(sGl=Mmf42Q|>_6K`w*WwI9hA-af42Ew0f3fs03bf~&o+e{0KlIL0L>%+!jI_Q zehDFyBaR{vadB~K_&}W6o|`whgRn7SWZ6BT;z(hn zm?+uk2rMp8R`uU+;{W!*e91crdu!;Q@Fuo)j*N5C5O7 z@PBjIztFG;|K8Ui5WdX>MEukMfe{e^y7mHK73Kk;KG(rJkbkV39hW<>r+FT*Pk--w z5QF#sy8aIrmVEGEmS}vi>|V3Ev#TsFCMtFhgF3NyVFS1Uen13}01g21fHI&8XaY#U z05}F%0=9qy;0kyFCjcA}0uX^HAP%4cXMi*y8#oVK0!n}~;5JYRJOJu}7N8yI0S1BR zz$@S_Fb&KD%fMHF25bOZpdsUc@Iizj5)c?f5dw#3Li8ZU5KD+1#2MlRISC1dghOH= zRLEIKHlz?z0=WsPgw#PELwX=jA)}CYkOjyJPH1{ws7 zf+j(;pheJI&*7>YQyTriersrO=8VqEn&UK+RWO| z`kHltmBz|s<71O%gR>oFL$P_X1+&GmrLh&U-DPWH8(@3Ow#>G{&dx5%uEdUHw_*2U z4`oke&tbpDUd!IiKFYqtzRtnHA;AIXFye6Fz;ci|(m1YgRC9E3jBzY;FgSTQVVs(r zR-72laLyFYBF_7qot$HwpE$R;1h^Erj&eD01#rc4<#XNUYULW?TISl~7UWjqHsW^W z4&^?>eVO|K_W<{M?w>q7JaRnxJWf1#p3^*+c^>jS;aTAM!z;vlgx8$chc|{dkGF!i zoA({>Pd+}rLwv{hFnnabJibc4KE7E##y;VFYWq<80`?{EE8W+;Z*1Q;elC7RepCJv z{0aO;{0;mg{Hp?70*3_51+W510;K|v1ttX61%(AQ1RVs4f;ocs1)mCj7UB>(BxETR zAe1UpF4QNqBn%an7d98h37-|dEj%E+EW$3LB!UtN70DK<5qT*>+b^_Vd%ydB%Kp;* z9sB1+p`wRGQKDg@`J(lrI#Ie@`i1nm%mEo| znFyIHGJP_u2Sg7XI}m!{;(^WsD==Z0F$@p82SfA0&TKzE_^608_A6pej@;Oeu0H>M4dO7Ap=Z{ywC1 z$m3A@p_W6RmBf`$N(o9;O7E5VlueW)m2WA(Im~`o?=a!;wZpHDupH4j5^|*U$OxPT zt_#P*ufa!E*i`gY!c}gmOsMjznySXCR;eziiK^MDrKq*2eM2Z9Fo*)g5Q3?$qaLPy zTYXwXNW)emMWa>YhvpGYoMx%!8!bL9E3IU$M_P1kxOSlSb?r$VVI6y&be&$E9bKeu zlyLgnP&FVJ+&B1asAL#u zc-wHvNX`grbkk_wSl0NY@eSj7lY=H$lUpW>$K;O%9J_n$lj&j8P}6GDZ)WOdQD#kM zzs--DpEB>ZfLd5vWLdnl6tZ-)EU}!mlCui7ssTjRciXVpplu3lCQvdc9I6sU zvqjpTvh7FnqFvA>=ta9Dc2Rb%_AK_c_808mA6Gmce!Rs2a6ma+aF}saa*T9rb7FUL zbSicF=&a#PbslmNcJXt$@3P@)=9=$1?WXJ&Hgcp!lTe*-V@<@%JaFG zq!-@n5rzZfj=76j_qO!DM*ZoocSN&-?b6hd*YrwI9ivcTvMuCNapMs2n3WGie8wFnoUI{S?DGFJ|o8wFH z^iZ47ve4fI2SNp5H_RifmdHswNqihG6ix{5CmkSBNTU((h_s0L$fJ>$B56_RsJqdS zXy52ZWD(GrdJ&@>b1r5f);P8_mJ#P3*FX`Zgi~I`ABoS5|CC^ra3_&95trCYJxD!6 zT{vZW>Shuo$v>$#Sw1;6dHJ;U>3e6m&k)WGr>LhCru;hVake#8CiQgc(mCsMRcZUu zqS7YP4bsapSTpb$FEh0=uVgZ_0LF4$jaz9@S!>*B9VewUsWX&03ha~H=H&tJB?{OF3pmGf7&OF~NC zmYS8;UX{L@dG+_TfNNvdk6nLICR3JOws`}8WAdi;&E{K&ZWWcYm&cZWyzPE_=#Ji< z%Da+xv+wRygjdYpbH3MKiL9)=FMU71ilr*1YNgtz`c;iZ&7%jZ4{p|q)@DBh9>zTU zQg^a$ydGWO+o0F*pi!~$YLjqNRx_kIzM0k%(lY(S_A+sD1F2CYqPYHbzm2ir?K z_IKoWa(AY7?sg?~t#?Osul5A@EcN>JPWO5Cz3F%Ae>s32crs`;*f(T4)b+&ZN&C~I zPai+id)D$?_j&URofl2RI>Svbbze4*AV(g((tp)DYB<_CW-`|E+T!)#8`PWUZ;!tn z9d{d_obZ{LpA4A%{4VSreJXZpYx?wiw)a^x0y9Ok(zCbb4$sxj>&|y9SS-9)bXlBU z!YzIM5dC3$IrSso$D&WLPnDlFKew+~t-Si;{bl)U#MiCWv^BxCtKXErHGV(#{RPdF zwoH$r@BYa7De<%7m-esTb;tGD4dTYu?<|G{=KSP@yo1eDgwmG&h?;PG~Wulqy zcZs{Zy9?|mEh+dQ0I;_Qj)2|(C%_J22cRH=fRO|M5&Hiz=vhD{L0{o-AHy9Y^$&ak zqWsVP>G;2#iakFBob#^&#xH;QC4Yaj7N!9lpwrO?wqCsf`RD96SpID!r11vy-!P!F zH;1WoK6HjLS2(= z>tv~ocOkf9Vzg2IUaq#ta7*qed;KW5j$MM5r?pl@sE0?SmPUjP#o8QAK%qzh{$asR zBwI^MG|4GAR0AJ`BkDMLQYaw~s4#6?CnqPgEw{dxzPXdFmaDD@7D2>lVZuESL_!2M z#=+IeDbPGP*v%t?6d0}P0FMlbpm=H!aS@s%4OBSN6CbEa(h0ZbCIln=v0?t9k#PY? z>qrMptUHPrH(9>uDeBYDozUx6ug0c@oG3Ttp1F zt_2}fC)6=MCQ4U70jY(EL)%!y!);LUo>4e63_Q|HF94%sA8d_w4bdVdsFR~Sw8%CX zbsJ4rBoPy$70r#Zh_#O)2Rmy-J2*s>b&;L{8a9C>q-K0{po6`hv!!j6r8Sv^(}>1n zHN%i$cz3kDu7{_;eJonj1#K6G=C;&95^b%#wCtm>nBy8K*9amKi^D||9c+W#T-@Tx zc4+$uS4)CAMi+x}L=gf=#As^|oK{FE+B)pGv%4#I5ZOZqiE(s{33fC?xwzrX-K`?A zdIUXNH*Gx|R9KuA4j*T#8Hd2C>ubk`;fQ!Q9SSPS)FaH&F+LJaA#s}#)ZMHw8sRQ6 zHqK7gVPxkxxCh44EgTyd=^5tla$Eyzi}%8iBRy<_Y&|XQ;9x9)z~Ta&oDspA9(rT~ zH`Wu5w}=iwTaX>1!C8nd;hvTe9u{`d(V9`wF?Ix;HWBY0tr2D6h_-j9*kT<6G#t!` z+OhFY4)KJ@NE~;JhF)NRgBCiRY#Is2#&{6I;zO{APA9JCIASzy zJdWF$Mfyjn>jebqn8(_CY2h%KD15ZFR#?2gy+)j40=KzsU{ny!O5aXT(+!lgj;;$% zgY1T~CI?63EbQU#cItZJj%ZD!wPm=wu1zpL#zHGLl;9j{or#XrI^%=35{-tIUu(%vp6ECLm;;Ti8>ZRf13W$PXs zhek(nQ=CZpkpvyI9o{q6(o9F)R5J)=9)^n|Ygu{V^*uGw(P8>Fmf^P807qh!x=k25 zDgx$tk< zdRgK1f+G?Fy)-mT$+$RdBw5ej5seM;PvEwRG}8+S)AHBTh3n#6Q6A>%LBs@YePjrl zXqsTA9~|yZjv++rxS2&*MLOWny0KU*WSm#DU92lkE6~eBom)T1RyPED+}1JFGBDnW ztfA+neO$xYHO4C}LMzHF%)!+?TH8J%CY)%Az{KjgXat8_gjz))Y;X=vE@+II8+W9m zwneZDh7|0EB$>JD*~ht>Zy;lbj6zCkCRLZ>cM)pBn!M|h!w`!(%Qo%1Qiu& z9TjP>rS3{5S?X(;+2~q3s(Wgw+XRu!5MEA!+@t`66A~WmsBecuc||yS+1X)H{vK!> zxSgZ6i%ncK0#7sxK|5PVx`#y){38jTF+^<*bG_p(=)f>Hk1!lJF#_dg9)ODs0e5?X zbAooLdZ>e=Ce|M8XT%NcP6Oru3k0(FVF5p2fwDpO3Og$+l#PQO42ZypiG!1ei-VJ! zlbxN5kBgg!hnJU^gNtt;AMZX8^6X8rHx~NWST-I`c1|$H`9CbX-GCq`paW@yLgWAz zK?qb3vfB^9z|)Bh3{b(cchu|^2n&>z4WtO91MJWw0Fn=dvVg?0v4RmZ

-xU=?H& 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 t>d2=4IOK0wi_Y0vH<1(V%>fB{{jEgEII%H diff --git a/doc/src/Eqs/compute_fep_fdti.tex b/doc/src/Eqs/compute_fep_fdti.tex deleted file mode 100644 index fdea6faa3d..0000000000 --- a/doc/src/Eqs/compute_fep_fdti.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -\[ \Delta_0^1 A = \int_{\lambda=0}^{\lambda=1} \left( \frac{\partial - A(\lambda)}{\partial\lambda} \right)_\lambda \mathrm{d}\lambda -\approx \sum_{i=0}^{n-1} w_i \frac{A(\lambda_{i} + \delta) - - A(\lambda_i)}{\delta} \] - -\end{document} diff --git a/doc/src/Eqs/compute_fep_fep.jpg b/doc/src/Eqs/compute_fep_fep.jpg deleted file mode 100644 index d84a76b0ddfcca48421c272f9f7fe64a6ece5cd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18055 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 MY<+(^D4-Aj+4S=w(EtDd diff --git a/doc/src/Eqs/compute_fep_fep.tex b/doc/src/Eqs/compute_fep_fep.tex deleted file mode 100644 index 718aad3c40..0000000000 --- a/doc/src/Eqs/compute_fep_fep.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -\[ \Delta_0^1 A = \sum_{i=0}^{n-1} \Delta_{\lambda_i}^{\lambda_{i+1}} A = -- kT \sum_{i=0}^{n-1} \ln \left< \exp \left( - \frac{U(\lambda_{i+1}) - - U(\lambda_i)}{kT} \right) \right>_{\lambda_i} \] - -\end{document} diff --git a/doc/src/Eqs/compute_fep_lambda.jpg b/doc/src/Eqs/compute_fep_lambda.jpg deleted file mode 100644 index 5ef9e8b9f2fbce24c23d751f23986e87f2a16445..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10511 zcmbVx30#s}*Y5+)s5z#orB-U0DNcZzX^MzAp*W(I;e?3b00^0BrDkg8Y0|QjW|L)^ zl~bu{PFY!*LuQ&Oc*-UV8i)enKA!X5bKd*??)TmAeoK7#v-aBiS!?a}?ET*$n~=={ zn!esRZvX;;06yR!Amgb;;?U@rAOhYS=Z^s!06@*hpF&TCY61X_&deZSJxwEtQKm{y z04SgWC<1l>K#F6e1%!Bq0-)e9Xj2Agw1oc=;Wz+}1OTJfK0&6Y|LFf)NGmQag9!kT zAkf+&K7kPj;(QRNu$gH~dOnDCW2s9RD!+s?KnFp*VhNM~!W;jz`3rAZ!tpeEJZQ7z zb6PwtehK%1_&_Er0mO3tAl{!zNnnF`48&$BEE)yGA`t7+5=aaHkXKvMGZW&HKx_+Q zwTw^#8pN&upsYszHyrzKn3=!<{R9AXYTC{W3OR{sx<1a*)Xv%2$Xnd4Vx=%mmy#Nnnv%-OFlD5X z;u1`)|6>vVk30UGTmR=yZxIF zOYpC{27%6bDWDr;185HE0&)wF0C^o%KyGUl*aG=`-uzXKpx@;HIaN75xz%#ka!zt+IlNqyT%uftT#j6^T)Es? zxodK5aszUsa0RIpNTQNSrgDv%Y}3i}nx6)q|?EA%ToQ+TZ)R8&;dQ(UKrQuI+IDkdxLQaq@5 zTCqX#uHvxboZ@#SB_#tTE2Yg!cqNh&Q)$1_Nu{ewT}mTLua!i~s>&wH_R8MMQOb1X zeahv^b;_N}Bg*s2Viipla}^gAyh^;vPL(p1^D1pBLn^OT#4s(`I@o4dC@dMa7j^=6 z4b~5P3Hz$5s=7wiSv6RdqPj=*gz9zG`>I^kpK97_8`RKhTh&-L+4 zZlS(KJxZOaen|bYdawE`biE<3fXW!cEGPZ}y3<{BOv+cmN@$~77_ zhBQ8Es%TnhqBTjHIhv<5Z)-l+{H~>=Wv7MLqG=t}s?&O)^;TO++d>`8FXt>jwfxTVSv@&D z3q71(ie8!CO}%lwU;3-`J@gawi}bJQkLdqcVYFh)ii8!#D;icjTk*@l)Bs~ZH8^b0 zYA|gmZ@9rQ*pO{lW!P`{(MZ>5lTn;evC&PV$(7KR8&(ol?pk?n<)f9~R~fIuu1Z^V za#ioDkH&h&Ta1&9j~RCwzcbM>aWkQq95d-Md2hPh)WbBz^n_`jDS!3K)jq3Pt7}$2 zSuI|(ZcW&leQO%lOs|Elby}Oa_So8 zSQJ{cTD)DiVjXT>*19X}UanVP@4h~L{n_5rmQOc8Hy}17Z8)`I$O>wO zw4zv@wi@23u+e!VedF1U&#l$0J*+dWuUK|cq0CS_P`{&|JLx(FIURJm@2ueL>747_;r!DD>B4lm>GFA#^(N}3x=n9g*SRLR zo_C$wyk;|LbIs;iH&eGAZfD$P-B-Jl+|Ro6wyfO}zvbeVc@ImEWRI&JpFC|nGd!C; zf1q8^yU};OS^+L$m*CFYg)8gH`q6>mNkf!&3@>!aY~=X2QSIc^m$4tE*H z_eJ^c_U-di^9%8-^yB$&@XzpX3xEdr1{@7|8E76z4{XH)cpUyHemZDfPTHBS{6DLwmys%))TG~zBT-E_>Ty$h$9iRk?_dfk%L4- zB87M>N+~Kl>SEOQXiW6+=+|2jTla4r-?nZWXWN7AhTBuN--*$PA;mQAP}mW%qi%V8esYk5!tO6D{(=GEb!Ik~X z_Gj#WUbv~S`hffa%7G_E4n-%6q{Z>Y4@+!I%1a~%;|@M7wJSYQDm#>T=t&u}tm-$# z-{`-MA9g={>4?^mtRr(r1CF*FGd)&(?A!5};}6Om%d0D36|9Qc6aFV|oisc7+et}f zQsuK#o~IgqU-^5{?>|n*pB|~&Qgy9*Rdq@AuQQZ06E)bHma`UT%g-sE%RKkyeE9i+ z3r-ghk5fm33uTpjTK|-d){#^=Z9V{jF=(*J>K{8cMDM z*IC!!-`H_u{HEW{o<^s}Yfa`&zc=eN7q>uKcDC?alUiqQ5pNCO_PyQHwyCYT-KM>^ zV|B-=JIn8sb;3IHJ7ry2UElAf-Tl~2?w;$3>6z+{>>cY1?t9Yj*MI+>_r2Z$kAbfH zo9}l#aCvb1q0__GLF8b|BgCWT$B4(xPmoVqhEPMdo;p8m8+IM;9C07%9`zc%H-;M< zd=~g@csy);;`!F+vlHIxO>;JJYr2I)LmUsv_=AQzdU;gAJf4$2e*$*gzq$3&B{(c7X&**2MfA<_eBlkD9 zUK+zA1dYQjy?c0g`_Pj~DdB;!v7StCZ-3h?WL8!>i{U`Ck0qqh*bykIe^f9E7aDBq z0n+s_N@yV6+bb3wk9VYbVPQxV)_G@SMx+D5E;JI&V8aur^l*wRAK_kC)v){DlplD5|5?(A`=o}l(?u+ zCx;9Y+J_d9;fKtOb%!ECEAWE>^XHxTZ}grjNcK|3j_RDx|VfkEGy;^PfVw5eI3jvQhN zokmMRGm;pD1V02NFpZt!8-Y)9_V=f-Q?1xx6eJ}GpBx-w1-GS>!yMB|u=pf6gOx}m zrZ~`(nQ`$52VyWh081vJ@QwsKXAGUr%3>lp2?#neBrU-s!j@qd5*L((O{F431Cb6i zFBl6I=M_R_MfloA1(K1;H2W017soLX9TkpG4GOo#dj)xe!B8B7DQseBT4VqQ6-Fnp zQ1Xpwety};QZ24D6s+Qq|`Jb0UJ)S_07s~bh1K*pxI$glZ}gHW0+PRcvwb&uY;3kkQ15?_n;%met{$$%??LIQazmQ zQX>$y7$19&*mUn8TdbX}r-MBsva--w;mMw{ z8SJ2VD@;P7CppM59OINkp;}R#;7KWP4@zb#Inyydp6wA1_ldO%NXf);B4JJ#hqS1O z6atIFiKmhf{;{@cnIU1BA&krrPP}&}GCU{^ZI$AW49QH3uu4H8ZHbsTyNC$y0Kc@< zCe7d$LBM{0_5wSqC@Ls|+W$|H-37Fi!Ncgd9Apgu)q==r zL1cY^3AmRi{N>!z#;_z1DCigHkP1u{G-%cYpb$AZ&|L)udGLG-*$uV>@>&YotL;1# zb%IGsYtnV?_a3fMUh8?IdpTj4Z{`r2u}=l2r@z9$(A;9(ddm%t2qenM*#+%|@y7b# zd_zLR!Xvh1xApY)_1_z~|KQ=s=-9LI=Myg`xxBeQUcZ@t`|iEq%hzw;g+D|;e=WrY z?u7q4>Hj*!|A)A=z__6D@^bP@OL0M9yw#FZcC;=&RH?M(ivDhFwH5Kn5JB7T{&TG1j-3ZjDK$yE353_;~$? z9Qmh`)Y=#Ceyka13c7mXS|WRPhQo=P@r?^+C+#HZSI)TVR9Vg6mjOFY5S->@!2bIp z(Zq_EGukohWPs`OVRwZbSVK2$?bhMvyxP)^aQL?uUQf4* z`%8hGFj4wZ;d>dduR;cN`^y0G=i*LVL0ENf*}f`0KD(g9>LLe!udTJPzxmT`665mr z_gBXmp7&$`HL_Rjao2snxYx@mpCG?BNtIuV{j-A>8)U$2Wz5aoftgaa){r1I^y&PF z1e?3!;O@?^0e5bVzG>f3e5rmD(colon8&dK0J8OSNp51-Bz4w(p->zw9e2O!o+r`a zUG8)c;k`yXaOXKwp!Z6`z~&k(BQYVX{REO9?}WIDjLL{B(zO`kz~ z0Ek_R*Pqci;$|a#F{A9J!nv0V6^-_oEdSg*F?;BBEx+t;?n+Suesa##T6p}z%P9xJ zSJR^zGC*^=0M!o{Sz!xY6$E*+{olKKG>ZMimea)K78#%|32Tr(nbBfex?0*}<$vW| z-aP%OLj5dd!{KDj>BiQRMvuvG&HjwRANu`WFB04~ik_qzv@U1~LV7(G;+mxo`4tDF z14b(nbJCSdJ2R)huKZfiQ0iut+wGLIku%S8?;cu~RNc~bFFNMMQ@@?N1vV-<7O!kB z*Y^||PEzzftEJz$s?%|EFny=mgS4Wg)g{zz&HcBO-n;K}WzBXKb!zeF%cMr40bhaA zp5_v-t`XK9ji6#_&o3nd+>WX>4>s8T;i7%9eZv=gUbVbbUHU`{9hNT7RuV;UWq_i@ zesr+8Jdayytd8u_%iQ?sdQV;ZbWvh9J<C9Yr(mKZK) z@YNbo!o?4o_}x5sQH*Bu3Ss@XEXAUDg^Q=zWtH3PzlM%kk4Li~5msa#cSq!UAbw&6 zL&A{78drC43;=xyn_76th8g6QjV>1-< zxQpnmW2^L=km11rj5HbW5pC4foc&yECs7k!;F_$+j$f>CPr9=U-L+UF*)23O8gy5^ zI`93|k%n4OznC+E}3- zZDwr44{YWJc-gPCL%LjOZhlyM?u4+Fe>BE6w^s=x1F&U+&oW@yCK({8{B@MOuGfQq zs=K^X9dzeZU)9zxTUUkjx3wo{mHaF{U1}G6YN3$>y+mm-Uk1=VmvpIju*v7M zBl)>KF#?3pR)3|52pX)NZScnXef4Eqln-uecA><0y<>!*h3SO;Uyq+D*AMDfOF!~rA zC9hPiZPX(a#z5`;%7agf2!G)J$Uk{r0ao*}J;UvR$X%?O)7RBFbMTy~kgp+h5{1p? znk<%nlK~4u%GsMo9BJ75yW4qUOp~(MDE75O(}M9a$j>k^s?#DCxDp6U7B9Nb9-6rs ze(v04ZcneE;$F#}ocGdb{I^2>#lqUo8r~|Wtrq6RMm?4B_G_+dlThTOhBNLd8ZUH& zF`^G*&)jZAZi0I5?2kfxUiO+w8E|N{_rZmYhRmuJBh0ssx0x)T%=OJQzwP|*y-_QB z*HFaURz=XVh8Dua&Jxa87q#IFryGmr!XF!nhGQx#XBKFJIBtYQ_v_u58#DbMVpL4_$N)W8xm+GT-*EaE8<{mb-h`&JN{v6E zDkB?EQPb8Elve$<`@C|!;@B!y&he)ZjBXGFlS7xjjA=z3k^%7=2V!pO=R0=2xc8wi zM^$uA5Z61S`q`Dl;FWB4>Gi3IsN#GnpL^VPyUMY3=Jn5Duk5i!Y1p$|pG&~m;`QMF zmw?ncRIi4*WE;4|>+~6KEFR?zlrU-dKI4@m=EY$y1=mgpi?RiNtq*5(l97cEXWrPi zyIk2wxCvxU>jrO8(2e-xxkOh(cw_NWj=UsyF+WEx=h5@rWewRRLG3+#H=QycL3zpL zt<%J)7f}JbFMqImK-&p>tX|*bqh8}hF^*sS1p^in&UQI>Zpy|l-t2G|%nJ$NWK-|C zt6Ge^M%N^}RFwQ7&@VtlR6d#U^-JGfM?^0>Q_MHIvWR>dwdu2W2lne9p{$1CN?`rj zVqks4eRrLlXELD0q6Vz}v7q=l?8y28nM;W-;Nl!ZaNWH{%hAZw{gFdN2bk~-Y3p))ZBEo{2mdD z_&EDV;vT(XNiE1fs&d9>nrc6ubN@&pi=E!(EPIyiA;9zARPzg(a&_NU7K~z%=a2YQ z77x)_`p0Qxg$pkmSMLuoji2Oy-1KW^vYJ=6Fvx!%v{=|_n634^Q~$k*uA3?6NUEY} zAVi>%k0|>%h${5%7$ZNcr=1ydov1(D^nj#yC|8SfX== zQV0fVx8dGCwmNe7&M}(&q5}rV-5>*6s|PeDjfCAIhXin@iHns@Cmm;AV1+RPf0N}o zhEsQb&ushAC#JdOTJ^O`vnO_`tGyknL#JvQv))-d92mCF?;5qJ;B~>k>c?N?eC3Yc zHg2EI)e*4}G}YkY=J3`4@9|F%^NyAu>9+C2wTBHXJe6M>1Z4Tv)$OT+?!9|~Yg-3A z26E)FV$19uoZ<6}WjUL#=4ZHbxmBB;WWd8aIi=FR8TF1Z{!~vV>bfANXULEf{(e3L zM`{t&4p>up%pb}(%3fg@m!`LFuA@Kvxjs}I727#;c8~k%84+A#!BXs+Z7)!g=qPo& zYq@RWpwWWPN9bpnzSH0p4n%!`*Z*$SUdi6q}Ix7@h zVswL)UTZ9*^Vjk;$~x`0aSD5@8|VAowcnLp>^69oZ7z-m_vcT)Z)3}?7`Y0cE!diV zGBe@pgH6;gL&6e~I`2ewuGl@>VnhbSrIwb7LpX&YcgEb7Q}wG`O-jBu@sCe8pTn|v zn+iJGJNHjMd1Cc!Ke1~3bv$)~=30`Mb-n9*SZL)dIc7yE%;-YtVKb|*1?GNgzgAuO z2?O}mFOGIsn@CNvb@}V^x+pTBw36HxQ<{l<71%guy{?DCz16J$aUuSwZ;^$Y7<*$? zXF{=QrpB4KXZOG)s*9IgchBMrXZYLTFWh-b3o$&9#&OUfSuXoH&kI0vyNWwv>Z0F8 zF+_DgLL2kK_F1*>_v!dHvZhECi8e0_#qr?2UqrLc$irN%PyghP0BSs5i@+ z-l44Z3m3R;F-O=Vbn}vIb+ysmy96J4e^nHBF3ZO7g@?KIF_F(~z6~5whoc3hGX?NZ z)lF&dTW(?yr>cK07+ukb61uFHZ)(L?`xI;K=z7} zj!ir~R8-MhSr_xt=T}ULn`LsYCQCt023WP!=emAvyZ$pDBfOXfG+erLMq|ElHg}-w z#W`UlxE!3y?T&ZbAf2dgDg^nbKtE=zV=a~YSm$1)#E?AcYE_$*RuaA7uwZWZ-m+PB z!P`LZrBn2YD4Q6A4>{)9Xpxv7BgBYi#F=lAo%a0dKKBE;P51&yw8_2-?;E$qZL(3w zh8j`gbAPIzh`8`(%#rHTP+BA2{OrzavFDJ^fT?@i(Rbr0Hu58% zpB*zREZw`UcjZ&1CzGEgx_(@I9!Q~z40Fre3^{Y2qAqSdqxY4`Dek8l(hl%@jP3n~se=H_+6`BjDIIH!X7 z<>2NH?$G-??u^38*T>2s3Aijrv=t(;l9RqKa4Z*nTOa9 z)PynspWAIy-Pft#xY*c5j{dxIJGBZb0(T&(riS9+rMFqjD$-MTxNbh1tZq<(y)pVx zxOj!omN1oaZ8`tRVv-zqqL^){*65-Sc1^IQFh8FAGU-^C`qfS#x95}qGbjq2pM6rp zy0&VwBQ-BQx$XM%BdZ65HKPI-#kpZH$OC)oiKX8yc1`^%Lquj0%sqta~ z&n05No7#*hQSvgo-CVr2?faLM71_0ipK!k(WPBSc?a=3%6y>N3$h{2*jEx${T~&DM z$T_d^rczIZ%JE+#Jc~mdi_%-1S14wJtLDA7Uw~xkjJ)SVwMK_NxbB18dY`W(bn%>< z#k*H3i`59%4sa`2+nd)`Ed28%V%Pa98Nr|Bb+jFW! zYXv&J?k%W={OYEG9_!E#?v3ufL%@v4sHf9$lpelYqd%*qaW}>7st{h*@Aaw4H*?s<@yHCT_jo&v>u6|ebsclLxEKce@x7*`GcyJi>?0RMWJ)44*dccRU zzxvR27tv{Ph6Evc&MVV+KUvt@RaBm1FbvN|ao;hcGjH7HzbUIz;3VE|k6SZ%`Qg_`9c-HJK0>dQLi_x#J6mpz=OIO@z b{WYDzo1^u#9@i%YVW*$Hjpvl8A(83U_gIJqJdFx=t*fKEtF_HwjQ4G0WU6?hA91A+iQ zpbr4yktvC8-VQzhn4IlxRa3x1fAGH&eG&kl1OQ_?P9CbN|H}WrLK2aQ$*BOqQ3Yu$=&4i%HB#M#dsiRS!fSRMj^(H&bPjdrs{Zv zN20=$qf~7%=)~}Z3;_7M%ztVDl7ISE73^daeRC5N9Rppk`~R8#k2n8W>i-P>jP2h` zY+ynf^Zu{Ilf$4F2tXx_{pH&%RT&i;f9Ti%(Vk)2We| zcuZQdYD!{wWVEWzf1bqu>x%!@tbc3AVXx?z=;Y`G@Kt``EJG&5g2SB$~1 z|I-NnFRT4q8~(t*&ub7!-Q@t%VY-0$ur$E4_8Q=o5(apVmxFh>{yA>0f_}gs>3J z`uBMcV(|XoKL1}I+{NHe?i6IK>Yr>|FCW#&wB+;V@54)_3pKqwFiAOJLw3}68~a0SKiE_p5$E=?|NE(0zzE-Nm3E>|uuu0XC6 zT(MjUTxnc*t}|Q(T$i}YxbAR0;A-G{%GJa5f@_3pnrne;nd=AFZ*CrL5pHR2CGP#) z5NZKf=Gnza=0bATOXTU?~6>2p32d$Pu_M@JN6x zFe>m_fU!$>m&z`KT@Jf~b|vgOy{lx`!(H9GMt6PP#S|15)D%1-2p5bJ%n&RVyerr) zI4t;CkSQb~q$Ol2%k1 z6gebfD{@>UO{7TVp2#ziX^~A)QPKUP$3%lfQ$>qJABgse&WSR1OYPR(?Yui`H*xok z-7ULEcdv^HifM{ji-n41ij{~piVcgciVKSG7q=A;7bl3{5PvE@CB7vgC7~|?mq1Hg zka#HZLgJgGfaHEjd&wxtvyxSkeUeL3JW}dXwo;K&XQb{*4M=^K=9kuzc9xElE|9L1 zek)Ctk(4o#@sq*H+>q&#nV02}-7o7b8!uZd`$Tq9_P3mpoV8rE+9~cR{4(#yb6aDJQc7Cc&g|vh zduXrM-mJYZigLH|vWk?7l?qbjiV9g}MO8-C zS~Xtvnrgo)b>H57PW#gK-P!kcA5%?B%~$QT8cFS=x{$h=dW`xN^hX)%tKi^Z@ig(t*kY;|KW4G$U=J zXrpqY_r_AjZpOLBy~b=4Q0L!!Jm&CAI~{H8KM<}3waT$ z5E>ua6($xI9@cn*?}Yz}hbLI!@bJp;tqA9cn-SDV+sM+$?@`C1u0$dm#=aY^n@1GJng*x@-wBG4U zr+=RDKhu6z>Fmj~OXnQV)#mKZNzR$dJ(^pQ$D4=DdwbsS{Ppvk{HXkw1$qS~1*{8^ z7hV?X7hWseDT*n2TWnHX{ulpW34cvqgkHRVN#auGrKQVmms_r=Udg}m^J>`D7bQj| z6{SL@X{GbmT(7lV*SP-IbygXoY~qH^4bsiMH_zYPz7=(AwES3keT7m*LB;Re$lLGl zINoWg++SHz#b1?P_2sVL-Jxo;>IXFnH3c>7dkOdE?|a?ve_;CH!Na`|i)*=S(`uI= z9e?z$&aSSlUZ?&JNtRUb7zO`A!dVa}fX!1p2lqxi>? zxxI6hl!Fw~yvcmmg5ARFMeoJgrO2i4pHe=tKA-&}`laNn%GU?q48Ct9d5&HW!Wxt4D8{09b%|2)Im+t%6n&$qR;LwrD7c!Zx;i*SddeUOoXf$o8NIGX^2L^}iL@IYK*oW6B*Tqf2xIws29DFEVS6BA=+12;=^ z6mm#)Get*c7#n6L7$!J*ctn|*+Pj%1qxI}%k$w&lI7FOba-x19+9Wv!nWX0( z@002SaY?q1%Jgv#5Q4ZP{Pl3jF&^G1h#NXJ!T}v%n~E~iHbE!+d1Rt-OgP*xGcm^0 zCmCXp=C7S(;t`N&0P%1&F}1f(L+J|{`dG)s#KDtIOw*mxT>_kZG6T~PDJ}`#hNcM+ zSQ6aHKRVjkAO&TdnUP`^9}uAL9^vP1jElt?BLnm!+p5`9z zKK?NgXtZB|A=1m)J1_$oDK16(j@_xOmQ05?>uUbv8%et<(t zM3R3>l0gbO0+D1A6d08m6>INk=osbY;AIFmPPdMC!-o4|TyhD{h!)a|M?~udpiwq9M$QfnfpB9-8ymj_Z|_78gA7!%Hx3;i znPC764A+m-%Lp)bGC;-0I~n=fczLGB;{5f};)P87ZBuOAkg!<)gmCwCn2Tp@0uE+} z^hpWVbN3H$%pQ@f-{FFkXd zJu*2d!7RqjDFfr;8srN}$3^P7X1YZsxo2qOl9J;+qusC>CVnQ6C<8leMyegw)?M34 zD8=5%$i*bX+$$h12!(bt@rgsHpi}+z>>~W^B4gssBF*9cNI$=1WAo%dZF?`hbX>G^ zifL>*+9T6QKgA0rl;PuK80qQ}=w_a2fJ^o9*SGaf2=ept2?&Q_6QbQ?P23~=Gb7P~ z$=ZQIsR&n7KRdkuLl;9F0v#C_X^wLhO7TgsbqvRP8)70d!vpoa6U<`6y)drU3BG{= zsfa+dv0jP+F2L9`EiNI`Mc)t|W$bOA=ntw&stYm=m2M;C=^U75tZ$g)=c4E9VV~^p z9F>{qh%)hV@is9@HFWehGYjyCnIRJ3E-+7&afEw-u?Ng6#wW<$Fg^utZwePeI=Q>X z8>A;dGBE)$F2-pv-!vZw##Jh)Cyf z|8P$~gpUElF3!j!AT>P-5-DVhMko85q@;P7xSOF9aNdr_Uj7F9c82LGHtxx883}0b zc({+h9>&APARcWGiS^ZXN%C}!GmLdJPl7pR*a;ciBamqxUYW6;Nf<DYvHtVaUY+R4npT-zpAJJvHAYZC;q5psZ7$9p)#(v2Kb zjqKbZ)~OKdD2TN+1ncEt*l<1X|7?70c z@1NvlkmLnV@=Y^w_V9CwHFwqz_scL5a`D!8hUvRR8YEi7v~hm6o=Nd&I|MFVFD@No z9qE>YO^>w{0(NEr+dmPle;0`3SW%Flj~~qa|Cx540TR0aW3DA0E;WE#f{RCjYo{Mj z0lgI8-y8SG<@`xp++e%F1_=rYg9Vz!0d6iH9A6(K$Mn%WOB9L(@scGq0Tt?=Zv*&Vh^UmjAx_sqoN$IugWtCNTt84DvfAH{0 zV^ecWYunTI-oE~U!J+3bUXG59PfSj|pPpG*T>A9+%hzwqE3_Y*Key=Hj9JTd#+BIo+zdD5#{Q6d0J9!>cfLn>+u&->*)Ah2k}R=23hy zt#lwPX9p1IHf6;2cUw{|e~np$+(iU^kSi^-9Q>s=og}G$!0z#|iaNJbG@LB;kU?Zg zkI`#X8XQ--n8yj@iE;Fj(0$a>QyUly%cLy1>j`NY-mAZT5}qnv-T2yEth7CqPk2qF zx(?^6?Aie$c7U@x0N-j%I~BUdO%VSE743|s9bH(NMG_7^%^$HJ_+gEwxlpq!S5RM& zm$$zq1O-$VAr{K?go%%H*Dh)m;UUaeygH+U<^b7?N3hGSRO8AeXfdRPT7+>n%zw;B zk-dNIQR;nu%*;#QrZ#ZS_;E%acjq5)m~hz^V3WHAD~)m&$b+M|V|nNp#%VaGEN=TO zG#oO$vGBF1X?PFb@Exhs@OCikApDFW19q&7DVv*C*?07KK<;_D%wfco!s$MvWOcrA z-PVm5hvFLI`wn{gMJ1Kq_U=hVILj|+Y6sBt5U9XaElv$?h!T5jy7^g>PidyP>sDNh zR}1&@E!_A^#d2fM_&0TrtT*lQc!S?|zwEH&-?mS3PV$CBP-yLT2tI`-M|a)<&YfZU z;FZ}Ar|9Qt>xGMAe2CU=rLj)^yN;CvjQ@*pB zV;QRUex%|@@r1*#AKop7F)C<=&xrip$~em6&;Ud(5CPqdH?MJf^u6ru9j#JyELupe z#1V7sVfL`~8v+uaPz0GFbA*UYGs3Wy54J+68$gh$T`Y`z{v1xFKj`Gs(awW$ztG=k zcJ1`4!cNPsGhb_>c7W3l@IE73b*6MQhzS8K9V+nx;Q(QzT)VXINX%uLuBa8^b({Rd*zThpyJOmW4BsyvEVe~d5$u&R9SnJqlP5N zD;r@%8Ki|T_f(mKQa7AP6>cEo9j95QMtK*$cyfO08mQl9BlIznfjhyKv=hXYU^Ki|* zXR|peHkU}#DpZ(G1m=A!XBT!}Y$j`|d1<9vr;{q%$h60;aCRkO9}L$v59i(eKpsl@ zbljf*NQr$Az_wuDgrbU15}Su|JM9-YPAcn?Cp#h4A-AkHy`NGiYpa6_&SppkL|*!_ z%P%nE(n0m>>WAO8ul}WuZ+>piOk;7Mq5IKt*Ba~JELuY8Q6r0Ol_CgjtZG({y>}yg%Exvy=G!LB(?g(d+hl^N1xw!3>NJvQ*h`VKPiu3g0tzHPot~}&UXaw z0E(=mR?2Xh<+^z%{$_A#ydmD^{F70M`T2(0T6SI#dnG&~P-#T5g$gOMP@$RjD2p?$ zQn&j{GKWrf+E&kg&)iSC_gb^LtFf&x<}~hR;`47SDr@cp|Ub1xhd zm?kz3t?i?3)2~xE`Yo}~B7O*ygmB-38Q4W7LvN?5t|#M71=BkF10_upC8M0`7k)jV zPnrA>@1Pgo`Tir=;Sy##j3e}7QB34|IphqbS?ug=zaMw-`5A4ZA|qx_JF9KUt=!9! za~iEV+XY&dvxEiurMDBm$Bywyd;arMk>^mzN*s00Yn2AlnjF&>ulwZPS6c3AygG65 zek5(L!JA0cC#{!0SL)jzhG<;Q2#YQBvtxgH{^8sqd@Y^8zHepDD5jrbS8;e*QKJ^> z_i;CR=7io^xb40^uW#@QT^lDzG~NMn&wX6|F2kai&=8y1r06{T6?(BwSNrShzp?ac z#zkt%{Ko1pTFT}mT9hvH0Q500v%Jk#Bfi{{BU}RAWFK_X9F$(5M(^dVMw+4RC=53;MtI-j|hiaZX z3?|D(B>lJmWV6NA+-U7#>Tf^`gkd3zvko<6V-_}El&=*_q|=96P%pbxk?MUEs-McV zx5t=;8|hc*eum-F)8>%gyQ_QeH`@12 z7)^b?v)!>E6@?1Uv$60$a_-@An|E(g;#N*g43!mCJpfc%nmp|RY0rT6$%bkM)@h>C zx_-rD`df*~a8_1E+Mxjv302)6M_XUse|WdV61XiU(#*bVq4bb2QLf6q*i<3*9UFRd zgvE!Z2^^o?*Id92k>o+2VX z9;L%*S{Itzb^t`y;HgKQ#+Z3G!g_F9?2q1$)`v}sr6&<%YH!kuCaHR9Wll3%!kf7) zNsJAdQAn*_99r7}mP8d`VJe)_(8I*@eg$brUVp!CIj2iQy(L8>B_HG*TAMne52t?! z`D4Fvza*lE9$P&?>C6EW74>Cw81=!Q&)t*MqcKP2aR_xv6^6lmdgDAf3U3sbN0sPew# z=pTf4H5B4ai-&8el>NqAL^rfJhl*&RfL)4byoP}NG^7?ulcznM=k)O}>R zVspk9?K7tiE2~afxJ5#;=~-eQ>J2%9*%8L@vnowm19dKev9zH=B0?qaNKRL_#VAbU zt1C?t)SA?vzlsIJuwIpJLA+0G~a zeP-5d?qEi{cCpe*Id_P#UvPoteu`hVyPJvqm`32Ia?Kp=inh&r)6?bqHr1SkO)SQr z3n1f^viv5twCk)aU9?F&csW{Z!OtznOHQXP=dMR4iKOtK zJAeMeky>?wbE#UJr5wQwCV^!*NsOtO{<<*mwO6IcgK^JmyuN9?y_+Gp1X*oUUh-?p zH#Dhf5sluf-DUc6llMH2e4vTdJF(e1f1j~b9f;SY@eM{@YA_7@w4 z3qA)lE{9dL`?F+(=^-@JK4KwRx>G%pCb@l#k#cvrTZ>j$y#w@;BydEJ#u3t|%L%nI zEww1bc1c6<%-l!vwB6Vqbo7s^62JU|ndI3adOqV675Z!k5MuFAgBQAr^Fhsl7g!nQ zE>xV3H*PH4{q{>1?8a=Dqi~R><%Yt}sBm>3 zA@o+LSZM{|zI>&pGfrDcFv139j~qq5x&O_%a`{MkS*iGS4d1d|#`+1q&O(3n-|aY9 za!l+!TJHD=3s!}+(xlQ!sQWkqXYS~%@OQXT3&obcNJFGwST?!7ioX{ z4xm8nvFC{3R0g`Ws4;cal%=)F+Pf<$%UC%D)76P3wpVZLX~*;BbL+FPOY#ec&s{>? z8hKY+W$@UD>o-@}9?m;r>(FWkQx|VT#r9Sdb{kGM4d;cbw=n&4nr2maP`^9A+q>Sl z(||haT(bU|*L4Fem~l~F=`Zan(=;j%{WcY{wr>Xz^rXU1an!$2-Y@c`>;S?%3;yRV z_C#;8K32qXCK_9q?iQt#Pa8kB9m$w$H^@c=wdF?e)zq-!>8WGwBMKN^&RZg|g;5@O zI6K_0umj|8@E40VegDqBQ8V}aI)~{Y@D1C)F$eLYN9HlWek+Kpd zYXQF(idu`T?%R9*F4C`{c}vN9dfYaC8;(JWD}E_K6<^w)FZ>kEAyPX_Dx`OS`6`OE zg?mdu(p{DsBRqEg)={tKrynlHb!&7e)HH`Do@6!JM^`djK3mI6tO#W~ACFx{$CPWZ z9~0+miBiqi_dlhDkOq{*7MgF4zFpU8LYwwxTGgUZl3(LgyJ`FlNzYzn4ZVQsz7uSVC7J-;ZVaCs$*$_uza4~Y^rE)hsR<1@4yz6^EtO$k9#*g?#%Z!&U!Jje zAwqe2^%DG2cMj>RI!7pj>4`UDmxJxT8%Bli0L9886UN#UIlRdPbU~Q$YyU-FSQU=g zQ?6e|ac{WMFZX7kV?Rl@0*gl7`k`T(yyg?~hRqd*>()6s*ey?WEt9R&dHWzb<$%6yq%+D;v4sSYPGBKu22 zC1@sR>VmRMy+_l8vx~yp3Q|Ozd0VzUUS1e+L#JRY+-Wb1-YfHf{!(U%JR`OQ`k*(v z&(tkbB(0PK5x)mE<64|$${*ZYp}9_$w&NeJed+r;O$oA^FS;D`(j*@7kz+OzUAnNr zlFb@y=RYOdlqokLHvN{;U&cBpIiMbAwRe&;fJsbxU93aOvnWlM_j%lM{Nl+ra;r}m z^$oE(cNHXQd|YF9obZRs-Z2De5eup(W36eLubuCH9M*0}!=U0d*Y0$q|61{XQ+&M; zAhdegO9SA=#V7@964?)+XwVz*wKFny0N(daBO9Q_RuROdhZT046$Csk;b>61OZ9eu z^HH95MLWQZLemQ)ljpwpZ>j76M~xJFMX?c;=~;RnLz9W(yr>W*BEeVA-+WYzL$*h<;wmu6|Q^rXX{4xy&`Fy@k8yl6V=Eg^EJFI!*3bIoGI_ zGNago5FaE*KIgC!F6<1*czeMV;oh$USB zNuWd(yNDQ#;awfmJq${0C4o2N4A6EN#It8UWE^af6~fkM^iHjO1c*=-YNA-4+#p$u zJYP;}NWR_in6bo!GaP%%4~$AeOoDH5k8Ut+Judn)FIsk8?no8BIrUR4>@8`{r8G>1 zIKQ;P*bndBg}X!yqc!xB!5gD`oSmIRdgMEvkPt!^vB%en2k*(g z2c5qOPIc(B;xh`(AIbfokPO)$6sOjvXt4)QXWkw`$)?UKtqe};&Q8T+b*=Z@7BdAk z!j%E*&)j~dvWGKGku>Tkz!VUhF!^5@FYX7;8NrikmQ6hdFbi*tZ>hr>^ml8i{i*Sb zDM_13)1*o$a`^pHZ$(pSAvh%qS}5Wy`+0H^SvW20jdu@0kNWaGEG@2dk`#SE2!_eV zB%zI)UyD3k8QJj5*D73!{uo-zG+`xD1;9WelqJo+VMmYeqg%hlh56J-CBt&q)Leg1PguHLGRKfZaW~ z`q|`W{K4%T>Fau2o7+7b?-l2V`!E8W5e2y-$QCBA+>Ft)w`2#9wLmV}#?1`ptD>-t z`J<7sqMdqyJt*zjJ``FSG-#^=Hx7@IOY!<(H^nego^cczO4Qb&u%_*PiV|m-C^8Ex z?NJfKJ114nESrojizzNcvUDpVQE3mdFZA))%6u5@>)sPnVtz0G;N@>Bj2LnO^e2HR zy8}=|=E)q-sT+8AYA{QNx<$(8=n;F|@!1PRkzwNQs~F;zuPlev$|Au_ga z)L9Sqyz0Q;R=&cuLTsU|eiT?EGWWBH>>I(sA=>`5*qn7EwpJIXV``OJQfGC{55aYQ`isT&p0MG-t}4?H0v#EQ+0DSuPQ|L5A0@ zi3;5{v06F)voO*L&J!9KI_q+3u}pAjBv7+(emZ+rG;!Y9T!U25xcSBdvlssWb3k1Y7b)#1N$W-ilr(u?5`>zi9JU+ zJdCAz;_6!3eSA3eW6ecSvlg`qnkx#R;!Up<&$hWieWxH%-6*jpb%W#CIUm`VM5M7~(38p%zp*%=?U?WAA+oAS)(j-IVsMUoa>E!d!5Jl((QaL78T@EOk(yx; zv~f4vTW=PI-wS%x$)~+}biY#f@%j4#FDX921Q#S^! zlp1J$=Wx^}H_Ka}1d|dziyas=_dk@OB#LBtFbd}>XUL+2efSVYVO`A)>SphZCM9oc z&E>>^&f&FvsDkssdl%FSXNz4J>KrhtPW?Ur-3^_;RngdWub@*=<=lobBMqV)z%byu zsz$BLdHNs(C41!1qr9Tiy^|baw+pq8pZW0l`T{C76Tgt4cQa!*St;Q8*`?$-wqh^2 z#WB}vFJZiVFC#l;@r~%L*T}u`_yh?BH_HSa$SA^3aW=2yjm5W~(zj9P&d$mcy}tj7 zrs-a!LFr-a3b3QQR2oTx#iw=v84DCGcggVr9TQdga{6 zOsi{Zp^r}IDGaREN9De9lK9KWYw$JK?^`Mtb^sJe5-C)t4KT7IPvB=cTy|kMH8US-Rt$`^t65=+jl4&Qtfeizd<+4u2U%s9deXd`(o zaDK2gL~$rox^b$yspYAhU}T!ciI5pNm5jA@KNNNcNZ3z$1wRFq+X3RfZ@h2h2v#%Y z2(QEV@M#NS7cwcmO6u;kul*!NJajxY1hP;Ch1D~WcxTdi$5PVt9Lj#&Bq z_MjuIMwV5m&X`jKOLk5tiWvt+EG*Yq2bau=v0?&@w@@XP94$9*U&#`@bHw;t_e5Ha zZB|a8R>Opp$0jf7t66)IR~!DFz_d!!6ieEhZo@8SMc%_h8EZ5H&eTw;vQovM0it{_ zxWZU0U@9rkSxdKHT~!FF8=Ica==kgShh3HF&c1;c;H}eg^gHYd-EK*o)Y4=z4Qn?+ z5XDvajW$8V7?UYU>~mNA^jx!bh@b=^xA8^1m^v~f-64BU<`1C+z4N*rFqkD z(qaqAF~c+dPK<-|H0rj~(p6;{%YiK*=GG;IC?y20gm6K1IAa$O_-K zf!Cq#ldSJltyL&(y^l_&LW;NG42|ucVo}07lR4AJQ=QICM~34-I)$1S8mRffKd5f& zUQUcCmcJ`2q17*IP7V?J=?%MD_f0()d;f=7>ok$cDe*^tIpvr-9I-y7k!)d-03O z0-gaN5#$XSCsX2ia7`AHTWZ?v&{`g{AE zt}8Pa1_RK&$1WL^vbQE49VaUFAKb1!_P+cuxO9jia;+$vjIg4a)(k_~q=oT=INPjD>HaG;~~f%W2~_f*^@s)GVBj$b+$ zwfyzr-oN^%INBZdso8x@wYkL?!5BG(!q(Rvr$}h_wQe)e5`i%Qq{?g%C4l;+t7?{^ z=sUvVE-_@}XtO15>4f=94PZXm(Pyrdv`<`YKejpWnHa0~a(~g61D(Q4UG>$}8yq1f zQyia0t8c)jQ11;@h~k~8hPJJxuY#4t`im_|dEplWZz}yR%qh+iRw~?FZh5|IGeA#Z z<;%sp$oAc()!#BrZt>L=MkkcCl$4Ad_UMs3;A3aM;Olz~NagP4rxmXXCS`!e7CW$U zdIxBp8i1VJWVxV%hm{cByRDR;J|=fJH|Gyp+EAEqcQC}ewz^ig_Hpf_#He(3fx)kd z-|At9P~^sq{u%W5WtG*RX4M7F zX)lSC&}W)+TJMLx5lJQuqf#Phj|PRwS}XsRmw_BfWQrEcDIQ*=aD+QSgZ}aeK-<_0 zT48-?3`vSG6ea?VpzI>XGYp>*c1;;o$S_R%LlrK)=(Mf+ekA&LoPONJpvD*Rqj9K7zK-DIr6=bIyd^^C8 zqT>I;Fy9GG$!xZ+wo)B7=&20(dD0nd_x|F5w$Y%q3eTd~GmprKj>p-Tk~aE7@7HOV9+E7}ib^_fk+wu)9BA#YlX^Czb77{w;nB(n zL-y@p?8$%oI-L64GV)Q<<5K@;!M9Vk7YwGF{@c+!Y1KwL z*R9X#UmBvQi+R-Yjz!415xm40 zUL}j>*spxBf$3M9{pHAt3c9&?o0JNDf`{rfcgnW3<6}Li)_JN2`fQW7?){g!_dm54 zzB)CJkzxh1n~8BMv)DlbU)P9*L77r+4<<+Ay8^x?vygtZCgk|sN?GgG{mOeF#@gh@ z-lBpp)^~$H9>moz8gJcOGX;H`BE1eguVTu1LzJ9^GpzC01r$X%&a3xg6MZ>N*#2u@ zr@{HE7|AN}#BYT&k2^J~>Wk2vPRFY6?X7FMH0{u_x|+@XBU@Pzq3T=jIG^g!cWq55 z+Zqnrr0Q=x^I?qrt!siyVKeG<7piV8?KBR)rZUfbMb4>^K`)dYv>-`-yWD;20d&3F z7k2&xGs;$&S#Up?CoOv`>=Kmfc3zjDiH`-%(KW&ZN3p$pcAnTTcA>D60d@5+T-^xk z^E2V>9p7rZuEasTVp}az3iIDBw~!j~^&7uG{(b)#7q)hg3h4`L`ntMB8>1)EifXgN z7ceR~TTd#XD!b-L_2(wj$%56qUtvqRUn4!ZoV0`bTG^rGW z92`9-xx*Fz}B?e@gju~n+ z4%2T*dvMwRxnyV+Ye`IZye<10alzv|M}d9KBAll9OkuDwtp-;^6f_S1@PpBM6_5}&*}q;~n3$}Q;QigW7(U1CopdA@<%Tyy(foRu841Lr@l zb-LN^#4w7kV`2#pZCrjPH`Vfpvc|I<1{zt>?gK0n#;f@*#YO*~jl6c10xP8z9o4Zd z@Yc$^xXiTStLl9R@)uADHF@LC@B^E&!VgY+Ixhxa?i#T% z3AE-x{v^E;xVvox@bm100g{c8j0LMq`h4s1A)`8ew6{#;wZ+j`6cK;LW@cS@>JW6K3 zip00FTB+736FC(}ciNvaBRlUixN^`>Gr=s?V+X`Qu?U!|lD^+8sz68sn)bOrY9PAR4@ zXCkcGah1rlW59X|nvAgpwty=QuWZV|rYz<(bdH3VjgB(mIAcXsxz$#_pvmZ~7UO}o z51THU2@Hbd!@lA?S-#tZFbSmwhvjihsp+K)!?}t0)JCdB(Ei-asUsZ%rIUuv;7-JZ@Z(W7;lT zJ~?BH^AGKK+Lbf+($B0T*wRlYVPIYTb=0#P&U;9Yjfsr?&|Gksr&W5O4Pm{-MWF|% zQ@yjp(pDX`tdPy1?*l~f6CD}rY1itvd~ww+Psi)O__uYO#fbkZp*}kB;&Y}HrzcdN zTD(@rH04Y|dA7Q=dfFjp2r{AI@>t-^;ZEcBF+b||4Zg`@6k=ppI*9mQ_fER2wH~fs zGw*Pi_DQjKWd|xxLN%cC_h{rbo_fMd(29LL4AW4N#~(K)<=s$yiddvN=4zbrn!FSk zp88{wKEE7fwRbIbBKp^Hbs=`bf@3oQ#_4bO9bOY=Mshw>w6^9oRT>q9M3ZC5=PrGi zcDOWDiAz}YnOs*(OV>r<(Y!EE(i#E)T(7eeZt`4_l0#{EB$SQ20?i&A8~ zG2Iu+zRod3DyxrKnc>B!#QN53;k3KIvlvBa={}{691@8$WIJG_@!zd+-D;00S^|vQwFHpJ$qQ0b7It*+PW2QMrQH|a&i-fzHk3f z^C@hyEyMwG;qO0K6;%7;Std4~^EQnA@p#4RIc7Go=NNRp ziriY7W1&;W=?RkocL*@=i3^|4O>*S@)1X3tOlZXeLKfOI;qLKg4M6uk#Ni5GE%cn*r7oZSWkUo0`%0?QAjWs*Td z)gNna;n#&iI!l6jpC@>tFPWpG3SM1txpY!&@(?(KErb_}SEs=fPg6yN!+0kKX2E&Y zB6umpt+`nIg>GXumbX-Q;4^rhrv`_%7&`h%c3JZILg2Q+17&rP&MUERvO<{dgy$4V z3wdfwzzN0ngiIH<%vJZX%ZTCkHm-nis4l^}0n9WD7Q?!FHGSgWZfPxte! z4*OpYvgDxqKxO`ce_o^)6vm;i{ZMg6#r!<`Bu5Arv=qdyx3co7UDNF}D`l z*3cvCEXVsRdVSh~v&fC4sO1I)_4bj~5KXDIX?os_$)@Kbu(`p| zyf+9{B)o$@QOUJBj6VUcWx-Z{4) znDwxGw^FjwQW6)qE1Rl4J!O2d<^FjB?{BB^2-%=kx{?v_J%nNC6KEmEN}Mt~#B{;U zafTPLy@-45`6`C}Gppb4E&nK7I8)vDdTO+OlKtl9kctlBwEw4)rxq2>jx3qWeO6Mf zPcsM-gjd}%%KIn0j-D?OE>^^q%mfGTxn&ZMZFonR)mMBGwl*6xqgQuKC6n`-4APiW z#AwL$_jwXHFGsb)xN&lQvIM!YP#^m;#9DYj=W;rqx6z{-|9Je{^{lB*zwFOz<+ozf zi1$Mr`7TIYuP*Z!+#6S=d957a=^}u~F?uYm%y7az#AeKz8x^`RcQLz$GenW#1$Q93 z`B1It6;bcDV5v-Wm46+L{4+2jKEBU= zfmjQn#m+G5*Jmo?TGX_SV!T)tc#uwcGJ+=|CT-{l%Xnp*7-KP(SQ(hMw z3h#YBzgM5P^5o%JoMF%Ju!2r|8h2lBW|Wo1_)jL<)Ms+xasE-}E0kY3EMWgl(I56w z$3GgVOWq%Q=_9&U4xV5C54GXG+AkhzZ&^LAtsy2KC^6`JCXF}K|5-(2#j58L{4|-r z)0tWu#;$HIsI4U{$8pRQzMlPwGZKFBX?#PsS(x1Xiu2hxzk?wYm7{sl4q#-Y4#gzX?)YGSKM_n3P z*yAR&rs6DZ^*`(Zw_d^3>?+)zw})K*@iz+p@wW>9-FKCpudeSg%_mMu zh{}`ZBss?a6RH4J|5w7^JMg!Od<)~R4C(sUf_0rfZ7W&P^=mlqEN|^6Mv7=BfXqJTVa;IHiS;h%s%3j7oBcSrHpi}kHPL9_cJYZ}(RMx}d} eF4J8-x_\lambda \mathrm{d}\lambda -\approx \sum_{i=0}^{n-1} w_i \left< \frac{U(\lambda_{i} + \delta) - - U(\lambda_i)}{\delta} \right>_{\lambda_i} \] - -\end{document} diff --git a/doc/src/Eqs/compute_fep_u.jpg b/doc/src/Eqs/compute_fep_u.jpg deleted file mode 100644 index 62df5dd0c03a6d20cca157cbc46053adb77ae90a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9337 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

rQ{>imOdJ_9LZ)IEl0U1iB5W=>wLeIkm~?Ha ze_Z&i2_5KC4Y z3QK8A+k@rC)%r8n-QxW8$TYY%EQHT^w2^+1rp6>P z81Jfkzbz5V5pqetcS#Z8DpYGpt)60nb%Nrx{%ZX;gYz6ctUVpk%#VNUlB` z;CG`_qB+*W`L`8g;WOAMgYEc{+qG9~khrq*bL*%t;7;##wKm6cCbc)UrZxOF&Nu#n zV|)sH0#ETe&0)l=Qk!CK0B5n^KOcg3?RAkZ;KQqbGT0uI?}?^Irj3o@Tm{ZioyuZ$ zL)YgUw^(iWp6x>2CRRO)`+98TNr3Q19i3H~Y};XKyOPfBm{~fvO55{x6Ns#$|Au_u zBHH!AVzgm#FEzphmO}f1y8GyUD=t*OLpeKR#xHQ9B(HvYY*~A{cEJzXBh9Ru3SSH- zth@0X*dy6g=(PZDxE=f3nPRyJddQ$gW08x!+Y+jD>UDQYE9zo~U9X5ZrkZnylJx^KNYGJlEb|(4 z6KZLTKT&P+QYfZVBUa*mmZ9SVW=6B?TNlx13^vFhb|Jq!p&g;K=0PR%7!`bFhIbO||H!#b;1@m6-}MA^-zLyy z%L@g0C4~EE6F653F5}<%b=78ORJXcELr0=O@2qrEA*iMG&y)VoRqwDqCXMg2QF%7f zp7=iF3bHfnIA%2d{~uYB`g&_KRP{OJ#jERTV90X2iC;>kc|>th&r)VAuF1^LzTCSr zDt-gbI^!e!sp_`hxY~=%kaxA0KKW0#du?R3>+^>K4uQMUO?rnjBdiSMHmVJ#WY$tA zURr#DD}j2%p15*~MBrKCjK&AXPx_5%)EV6y&iA#xUmkS?D~D=$EBI{_;DRjsLfOw# zNF^jY0o>5}fuPp@Wqi3ytWP=Xj{LD?^kNZ5e{!XhgGk>5Lh~{dkJX-Q7hy&yOXZf_ z9rbCu^?t0I9r?iKh=x7P>(i1W<*KD`iC<+Q$y9c7f$=_jW`ePf;=g2wnQ3z;t@BXa zD$RRLrQDwp6$e#|rk(Vs{gEdhI$nCDHdqY{vX$(3r!aKI#~wKMFP8I@{%fd;vJ~Cf2W2Xfy`D4QwJ?w=oh#4V3xUIKv*^F z6LbDuIuG4!w!EVGZ)eH;M}pFnR#%xc&xozn=>$eud^jO|8K@NZ6Ew5fu}M{rJ^S>w ziKW8U(RbwQJE&=|)<>=RS2ih4vtZzL{&cwZvh08J zLI?Pw$1kmw@r``y@%1?VYp5*fd@EDEIZfwUrKacO2bLGnQ!95wu2zlvEQ#RJW)b@Z z#D=JME`=|thiB&YMo;E#0@4iD8M?F~T9`}jf{G(q4=0-x%DP^QL%BBb)yKQa>J4@0 zTH+Ihm?>F1uRoCK)M1L8d+B0QC*vs4Tsy(YE>5ex!Gm#AtG*l?Ukkf~s~G=ad&d_C zyF2c?kduv)Di=W*>^u8har>(0$vq<)b|3||Y} zNvY@wIQ)PkJisPtv^Nc#)9``!+ok1uy&+ z;yO*x|El1EGGU(6>(rr<`Tbx>qihk$LGvYSXO_|frFiOhw>Ei1PuXabbw5p)dg81^ zc7&n|B5=@TLw|Tq{dz%nURe8Q!OYKX!8? zJ)5S??c>X#w+GDe17-~7R*Mt5Wq)O?SAVJ-tf`2GH#!`9`0!vY^_ryVZrlD=#0^}s zX!_5`r**_TM-MODySLa4XIm<#+Rfxd-_E+LaDoL1{FA|UKCleiO+C1Ala7N)m{yid zxg;&UgPZ)(?`v{6bMYg1NS}ZIRFTZDl6M(V$L{pRlpf;h+?k`- z4VQrw8PE9xDH-*1aer5rnd;!rtFpU)T*noDI#7IEJ1H-}PUjDjr1YVed-QkSq!48! zk3c>l@Aoe5o#G-Xeirmv;Yayn-j{saianH8Ipe$i#vV5x(YV^*KkbukF->aO1i~3&U)v#EX?Dny;^8YQ zg;nJguP)odVHNm*v)${q7Tdgs?>B*Rzm&dZcy||cJoAb`K4kH4r)*m%ZU5y<-yHpa E0H^3=VE_OC diff --git a/doc/src/Eqs/compute_fep_vol.tex b/doc/src/Eqs/compute_fep_vol.tex deleted file mode 100644 index 0301e39788..0000000000 --- a/doc/src/Eqs/compute_fep_vol.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -\[ \Delta_0^1 A = - kT \sum_{i=0}^{n-1} \ln \frac{\left< V \exp \left( - - \frac{U(\lambda_{i+1}) - U(\lambda_i)}{kT} \right) -\right>_{\lambda_i}}{\left< V \right>_{\lambda_i}} \] - -\end{document} diff --git a/doc/src/Eqs/compute_gyration.jpg b/doc/src/Eqs/compute_gyration.jpg deleted file mode 100644 index 228544443459e2c13b9ba1e860d8abd5e02f9ffb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3658 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/(5<(r(t)-r(0))^2>^2) - 1 -$$ - -\end{document} diff --git a/doc/src/Eqs/compute_saed1.jpg b/doc/src/Eqs/compute_saed1.jpg deleted file mode 100644 index 6bad3a6104904ff97ac5982d63f88cf68bb8b50f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1471 zcmV;w1wi`$*#F=F5K2Z#MgRc;0RTtG1Oo*G1Ox>I1qKHU2nPoT z2M-Gi2@DYr5)u&)5fKv>92XN58Wj-{7$F!M9UUJZ9}^cMBqAOp93CGY|G)qX2mnR^ zYyklg0RO}Q8vp?S0|5a60RR9100000000051_uNK0to-a05}i;0Rsd90|5jH01E&B z000010s{m91qKlk2NNMd79ufM2oxhSQDK3U)DY@iDN0h5r722Mm5=ov;eL_V%rg$L* zLs}A7q27>!RF!xR6!;&FYMnZ;KaJx;-!5dC(w8bkhos4KxbvmQmZX)a00{^vPk;uJ z000eC+?a7CJr(&enR(cbm!mCc1hU~mn<`24JQlRavkp{{T&TQ8L@n+%Ci~x28U>AxobFyo5(2xR>NKq=a%(N{Yc7^S?ee zD{Q4JD(WUpn8WKHBZcFaYjbR082O_+#Q6{$SOGF4rLyCGejqrNC-U->@v4_j zx_1u-dU~yS1@cQb8P8lMF)>lrm!!L{Zj}at_IQs0Kz>zqrBk}2)A&6^vaZK^y@@5jciQ0x&^{gSr{koLbctBOhg0E*b^nVDZ%wq3+`x`~eC#I%*B zB;+;RBV=>;-AU0P`g&9^wXptlVV~`f{{Vel@Y{n|D?yOfM{dXfbxAVdgm%FId%oh7 zHaGbC*S<+}n`(lI5OM3B`PDiQW59Ac97xeT$$i$-#Apu+Cu$xwvMc`CWPd61Kiyh? zolk7CKa}~O?yW!0r?y!i%6!lFR-fln+boaeK4<%@PxGnmmPhiRGyT=4`PJKG$*)%n zqcG+4_a?M5=PpwwNVh4b^pZy)%%!i%01YJhBYGPm&0N=1TpWPnEplSTn04EBOm#lm ze2wi1S_$#7_lAiF&a`PgB*1Q%E7#>q$fI6Ud%3@Ll)vcW!{1qVj`XhTliLA02;<{_ zA4_Mz$}oGt$5iUm74VLsdo$KQLflVL1v3>mmVRTZGJqJI^6i^ zeQY?f$s<}?28W%615@{V#$Jr}HICJ4vOjEcDx|+D`HmshQk5YgB>}PtQBwH(+S6*@ zyaR5fDN0h5r7AlnxSK{fak?e2>f%Ll?l}ee^3#cNr8vwO?jY?BG}1Zp2iNT%bwBB= z6)8$ml%*+E4x_=$Zf!z`jWJ^}kuo%?OP?*)*0i+pTrDLiX+Q;V1Cb|NKJTqgWHxxY z9xpz{d0{Gza)`Lnn?kt`D@jU%Ndw`tqoL@0R9{MQWnn!zv0~24`s3EDLa_ ZwGH{vQBfPKJt<03l%*+3Qk12C|Jj_WoCp8_ diff --git a/doc/src/Eqs/compute_saed1.tex b/doc/src/Eqs/compute_saed1.tex deleted file mode 100644 index 0db2f55ecd..0000000000 --- a/doc/src/Eqs/compute_saed1.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - I=\frac{F^{*}F}{N} -$$ - -\end{document} - diff --git a/doc/src/Eqs/compute_saed2.jpg b/doc/src/Eqs/compute_saed2.jpg deleted file mode 100644 index 2b3b0bc090cf91bfe079f17eee64c5644d24424e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4911 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 diff --git a/doc/src/Eqs/compute_saed2.tex b/doc/src/Eqs/compute_saed2.tex deleted file mode 100644 index d005602339..0000000000 --- a/doc/src/Eqs/compute_saed2.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - F(\mathbf{k})=\sum_{j=1}^{N}f_j(\theta)exp(2\pi i \mathbf{k}\cdot \mathbf{r}_j) -$$ -\end{document} - diff --git a/doc/src/Eqs/compute_saed3.jpg b/doc/src/Eqs/compute_saed3.jpg deleted file mode 100644 index 1bbc920908bd401adeaa2f1cce04dc2c40f3fd23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7048 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 R>HoIF|Cs$xNy7Q`{{k5lX`uiB diff --git a/doc/src/Eqs/compute_saed3.tex b/doc/src/Eqs/compute_saed3.tex deleted file mode 100644 index 5988a620c7..0000000000 --- a/doc/src/Eqs/compute_saed3.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - f_j\left ( \frac{sin(\theta)}{\lambda} \right )=\sum_{i}^{5} -a_i exp\left ( -b_i \frac{sin^{2}(\theta)}{\lambda^{2}} \right ) -$$ -\end{document} - diff --git a/doc/src/Eqs/compute_shape_parameters.jpg b/doc/src/Eqs/compute_shape_parameters.jpg deleted file mode 100644 index 9e2374561b40690173497a2e1c9a28c869b0c819..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7007 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

  • tH;{i`K8}Y#)gvLyE}BzVw$_8 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 ATmS$7 diff --git a/doc/src/Eqs/compute_sna_atom2.tex b/doc/src/Eqs/compute_sna_atom2.tex deleted file mode 100644 index 98d8f2efa6..0000000000 --- a/doc/src/Eqs/compute_sna_atom2.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass[24pt]{article} - -\pagestyle{empty} - -\begin{document} - -\begin{eqnarray*} -u^j_{m,m'} = U^j_{m,m'}(0,0,0) + \sum_{r_{ii'} < R_{ii'}}{f_c(r_{ii'}) w_{i'} U^j_{m,m'}(\theta_0,\theta,\phi)} -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/compute_sna_atom3.jpg b/doc/src/Eqs/compute_sna_atom3.jpg deleted file mode 100644 index 41d6774e9c8ec8309c3be5ce151a8095a633098c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19644 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

    # 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 diff --git a/doc/src/Eqs/compute_sna_atom3.tex b/doc/src/Eqs/compute_sna_atom3.tex deleted file mode 100644 index 5e3212f7bd..0000000000 --- a/doc/src/Eqs/compute_sna_atom3.tex +++ /dev/null @@ -1,16 +0,0 @@ -\documentclass[24pt]{article} - -\pagestyle{empty} - -\begin{document} - -\newcommand{\hcoeff}[9]{H\!\!{\tiny\begin{array}{l}#1 #2 #3 \\ #4 #5 #6 \\ #7 #8 #9 \end{array}}} - -\begin{equation} -B_{j_1,j_2,j} = \\ -\sum_{m_1,m'_1=-j_1}^{j_1}\sum_{m_2,m'_2=-j_2}^{j_2}\sum_{m,m'=-j}^{j} (u^j_{m,m'})^* -\hcoeff{j}{m}{m'}{j_1}{\!m_1}{\!m'_1}{j_2}{m_2}{m'_2} -u^{j_1}_{m_1,m'_1} u^{j_2}_{m_2,m'_2} -\end{equation} - -\end{document} diff --git a/doc/src/Eqs/compute_sna_atom4.jpg b/doc/src/Eqs/compute_sna_atom4.jpg deleted file mode 100644 index 5d53943bf40b052fe5dc5193db04270c7069a1ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35933 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 diff --git a/doc/src/Eqs/compute_sna_atom4.tex b/doc/src/Eqs/compute_sna_atom4.tex deleted file mode 100644 index 3477d163e3..0000000000 --- a/doc/src/Eqs/compute_sna_atom4.tex +++ /dev/null @@ -1,14 +0,0 @@ -\documentclass[24pt]{article} - -\pagestyle{empty} - -\begin{document} - -\begin{eqnarray*} -\label{eqn:f_c} -f_c(r) & = & \frac{1}{2}(\cos(\pi \frac{r-r_{min0}}{R_{ii'}-r_{min0}}) + 1), r \leq R_{ii'} \\ -& = & 0, r > R_{ii'} -\end{eqnarray*} - - -\end{document} diff --git a/doc/src/Eqs/compute_sna_atom5.jpg b/doc/src/Eqs/compute_sna_atom5.jpg deleted file mode 100644 index 732731fe13becfbb3e5c6c003b87a90f3dceb287..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14734 zcmb`u2Ut_f);AtRL~5jjCK45Cp*JbUE+eh>g_+D+nJSA0(gm2ia#H_}c|bON^tlgVlwL=Xp0EkOO+>ez7=z;0OeAJt8i~ z+1lc`rW_({j`gy8Xf{mCEl5Bk92pLD=KX~my(ToCr>dm)yQQHe33Ay?y$8|dlj z9Y1#^G9c)u_xv&Yo+&CE zXqx=8_LJWl*{0|;`Uj8%j#^XPp`DcFM_XGdpDEpoNU-X5ato!dEmOn@F|5f@~ z$^TUaKOf%jfk+&NT!57E^GQGsNbvDX@a@wfaGoRr|E&9GbAKkj1N;XC4hbF>5*Fbx zv>t&R;N#~%aFAa>;2^If_-^y=Lk>y^NS@F?cSy>~U+`qKw87oq9v@b=XzYbKzX47e z2E^PG5|)vblUGntRa4hM7#W{7F*P%{{N=or^{*FfTwLAUJ$Nb#yb=@~ay2w8HZJ}~ z0ygnxa!M+Jn3kS#|G~q&{DQ)w;y)^$kSfVftE!utTUwvBwRd#((dhjHgMYq!^>%z> za%y^Jc8|i)n)&Wa`8HW@4&%>{09Yp%Efme z;iupd2L(>(ACf%hB8F{dLJ>Q^Z7wIS!~2kHB8gadXzGJej@eBjoLgbCXvSp1Jl*pnRukhM^5fp({^g z;zNzx%ke7vKkTJaNGm_cn-6wRTuqqEDXQa6Vw!K{R)s3mlOBi7;j7p~jGXe@r1fIs z4|Dj&im=lKcy$7E$n7m~vU6!zT#Zwea7(xg**n`i zHrpot>g2sDn>xgA5yl#mWcAU~U)$vSY@Dteja0i-Sv^^GC!4#4z8oN#|Mn1JVT&D= zv~jwBtLoIW%Xmvt=7JE%a?#F`nSYm!W-NCALpBW)+m~FJr*l~tu{Hd`@wgG0zqX7^ ztsU97^T}x9#)i?OUq5tCZ0W=w-rUfBv(kBAeX`K~M6HVHRDWwK$<*RW7!%$|R(CCL zCYz2@w1R{tzMVKV_i%6GeGBaH5X{YyX62bNN^Ww!s^(o&b7ilX>`)v*D#qn6H`@== zQD)%6?nRvITlAGW{>A0r82b>y51x`2=Ir+&bd)*!+dZT$BXW+v=O%Q+1+eV@v65v> zm464m<4O$a9vZ9WPM}2Jbj#rM-nNvU78yxmZ0N`Hc7h*D2x z742-kWqv@l|JrgxmE~7L!x2ZmzX?F3A^#(Tr!2HuXLjkb+qlAycgw>UX`5b!CJE1ozhkC@gJagU%C?jfr z>w^=~VqJo@^ZSsXNBa;N?E6&(vC5*SV6~*bWL;9cSLU}wZ*9bGgwuE`og5C1 z^&{sb^=hHcu9wU2Ll*1H0gp!_xyi*_8++AQwH{1k8*v|U6`ndo`N-7RfP)Q3`fU5|_gcKdz|JT$s)l1xxh zv=)j!jTS`SwpZ*29~C+fs4bt@zTZ$2%qJIXMv4YA z+(OZ$9D%hlOEt%KH9wNiGmpv>~9&HIqn@*FNd=Q>#R7W$5#<+W@o%5(bsTlcd2R=3igu$|!&Mtxx%# zEZE>GO|+_`o44(hJ}l8%H5PFw?AFHnLBU)mSDUG%S+$*RFXuZ%h%t3y_#GPfQ0`fZ zd`1xN=I484p2?fgtk z0Ar&>%w21k(b8W;|9IisCU^>H2~s%S_jIy`P^Xr?4>>pwTC<>Y7+MnG1qIc~8!RA` zK~2VK>|P4{Ax&)x+0Zaa!{0ZSFgmR-mU0L$vGyTU!wR8 zcZ9(qB6_j01K{v^QM_Bf{3rPCxv{h;q-`=OWiZ&tV3?vw5B!YFlvOZY4MFObc~qso z47yvp&NkUv;7ElmE@bROLds{F7d?8mV4%V`#(SzT2kyUEr$#I0k{K_22ELi!ARcs2 zC^G=l;}a8`q)Ryvjq|%Gc#{0Qn{1NZnb`gG;qN*N0OimcMwY*FL#Aa;XmHWC1&O+T})ZBi>iSGH*^%I;v51 z%|6Js7=~_E(v`PxYm`HHiYBz)zZ^A7y7@hBMZuF3B;cT0H`0R<$X?;J8YdZ%@ znYm(#Vo$L?PB(UuH$1j+;`~N^6O@dhXbzZE=hkN{vSEl*5!Ln`M-=bmRk`Lv*9*fy z+MExe z%1yZq#m5RWqP~ilXT1Ri8+i0~y~FHtu862a76x#o&c=V}oohPhxK6%RI%W*(4D!x zT$B>_0nJZsk7N{?yuin?1)lF@zU7Lnn)l6fJf^y|fn859nOSP$R$v93eX+e$fKKhY z&dik*b4(8c&W`4h|MDG^^PN^3(g$z8za+nC8WvMS9By7SC2ymYD$@I=X>XaLOV)xu z@`^R5`X_12i79$mq)pwuzG;FcEZ;u}qt~~Y))T1T5uqKmo{vsHVJYFE{b#jvs&L1Y zK~|`1?~+%9YWxbZCVRLVG2><}i#+%!&i_tL)?h%Wf5n~(HiX_On8h*S*%~>lheyLS zN0<3R%7(2=*xp1epBXXqc^&`mu(2K7eY~C#LRh0YkAJG$($)zG&bgIXktbJk;8tTh z(*06a{}Q-ntT*#sT(ui2ORVk)d)@C}J(_*fSov*SbzfBRs(SPAP_wAg^@7FNi`_4f z?)(P5j7Ct)PD8_m?yvvQKaDm`=D9zJH&sIYmE+F#D~p4@l!N&3a=<}%&V?(S%-n?OJg}!Au}>U>|azWeXZUCCe3fja06{iGz(bI1ESucIj|o5*WfP zG=4{8n!N7vV5kDB&s8fJ9hCSNXE`TK(tmRq(es7brdCZ?Xe|f~_#F?yhRych{2HUs z(mr_F>)EB;d|d%c{lT{t_j(vWQE)sFE8LOQSO~vf;56Xh*dhaeJK`>Kbbz|9;%%Sr zle_qdpRo~y>rPd)3QsK;yv&x5(8&UfRqlDF2avLAih`O+nPoDyVbeKhB<}WGg;ARD zui(u|n_@is0PYoY&2U#HQP8k`$g_~m@4J_AVQloK$gVXub`g`_Ee*=jZj?(RulvWt z2^{ER`4R5xa>;I))zkYB{_ex8GUmE>zdo z&c65qpMHECsgV#fHAPtqU?h|Cqo$$2+nh^zz?kp{oJsx=iXPZlBepFnTvNmhccl%= zXAe|=pHepLXQ-RKDZPo!kk&Wt5?fTn8?4#-5xzUzTQH&&8Cz38#t9oHX(L6iB zL9BogMV*65(M$?1HyG8ts%7i&8b%~S!loxJ$q{>4ZO=v_1VeU zt54#obIxag+KL`<5a1kqt9zXzi8sc@Pw~FG5j10g<}tO{{J7FJzx?Zvy*8`ifrpm7xs8>nVv%Zb9Us;V}P29OaS&FtkaZTv-KPMki+pw;@E@h zN{V~M@A{L(E4zV9o6~pjaIDX{@$IwLbU&4G#{NS;t#_wgHYYRTM0UdzNPk( zyTKFrP@@4?wqSareAxwScC8zc9y)zv&{R58lM%ydmQNqkSZs)|3B(cz z32C$;rJ6T%k3E~(Y=;r}oaIhdK6;M0gV`%JrVtm7c9}5XirlyJiU662*TkwZBRYWk zF9T@lE-}EGDZ6Qix>F`T{uLX+)y0pPdn6;p_A=ScJ{{~E*$mqSx$t5%ZO9Hf*mQLt za%2;y<`rZX5E}-2Qfgj=cN;L9l1X{r=y_qO1Mgy+8q15cqV##eNN-Tg0Gp%;KkPb8 zN*nAp?pZQ>Z&2HOxZO70&}*3FBa+X&^3=TjqAlYZN)vAHm~A6hvXD_e(KKB7Ldc_^ zW=3`(>dSpnCY&UA-N`+)Y)D)Df*aHuWPL6Xd<_?(UZ>1HXC-8JnJvNzT+_+;(vU%v zFx#4*MCc@ayMsE3P3T3-AjKBTB|Slh0VNgCfh|SH!`^lYu@Qqb@AM63xxbw9b zpR3&Cz(NN8PcDqDlU%o^a@aw_%I&eNl5d;ZD9NJjlYaTkcdk;truvAxcryXvsd$O! zmp+nEus1bt9~M8V_oGtnSaJoXLf+!pf%s5n)o4ir$FejkU-z$vQ-T?$H|uo>k$+zn z7sfaa1Cvef=kgR!8_wA3m0c*WZDpYwV#}ZY41VD}bIcgK8;Lu=xJBS9gU!s35fT zJ7VD?Fhv=2k9P&WUhR8W9T0A>G!4V76^g1T$X&BKBcCV8`DLeE zlB>*{SET1&{TN~u(4nGXPBjaKrIk})??}x zj6A^mo-{d~R6F->y#L5}%nJm)_yi@g54ktQrE_H`TA{NdJ9pUk zL5H1b5dORONzmh$30z=}*8-MecPl*cIuqdDWqU8ncliV3bi={D+@JGU<^4{(y*I!@ zCdYX3l22wz^h|{8-~xiVO>@49y&1 z05hG@L$NmP$mg2OKc~qGd4^tB61hq_;ic30${O6sq!5QWS%%u?B>>GR*n|O^{m=YN zdEaJa-;|OL5SdonM7VWygncP=uJloPODO8Z>v(nDIJneRlOY+>?^vSU#Mevqhjlk1 z{2h`^UNw5@pt>@CtTyIu(qVpHzj@+Zy+*_qR#Htxrcw zy>>1C_%&BCqsjVYlesy;+DgFdlIM|EJ%4|7?x5u1K&2#`0CC0{NMigSbR47S<#bF1^Y+WkCl~HhTgpX(9vu4M||oN zy}4O0Z%bHfU5iui!B9y=_S$5PAIWC2+O^KRcFDQUyE)G$4`FZbQsw;Q-NO|#6Ac@? zSI*a;z3Y(33aFENT6gJ>`ySVyZL~~2Te$J=X0uJR91p63t8gc&lGLzr;t!7$9+(ld zHCr~llRDXTr404DbD6CE3v^$F`G0gA4GW&d+>ogh6x+TQp;L;Bp{>YAPJJ#h zAUjB8zYMa~t0{8p3#geOr{);sD?{@c8vc!L>Mk|b`gG=$iUXvfo%&FR>QBkshd`4S z^UKB1m&a1tFrvtCw%|F?X%WqbT^Xbv!38nLh<*xFI3My~q1~F`1NO<;uCu^2Grzei zOvxC$E8bf7?7?mFYSseqcVEn7 z#<@gstPdTjna$wb4;LePntIT$AoVS^YBDP1`~lP45O;!z#JOAQSP_x5fh))m!fKO9T0-+A~pcYL9R z(pR2UE*BR$dz%AiLE#)Vb^(p&wS_O1_fyi6fTwt^Y>{5?+xL`RWdORh%;|5%d zIjrrALY2HAoJ?#J4K8wb^I4PDw6itpS@G;@)9(pD1h5FN@?~K~COLFQLx)w!$IhHY z)%ave3T>i)S-R<_XQ=Z)px#Wa*flupN@B&}Wy6a|^@$3EDYCnzSrK;a>_w9!L9xT8 z9#R{6vm+PBguZz6QHa!5%%<#a2u^j6Obw;p@ebJ-U)-9-FdQ~zffb$;+QHSr8Zxi9@K?kanXu#Fb@=$({u zc?x%F@WFuTHJy;sfW+06SsoiehVsUKy|u$B5~2{V#@aZfc~s7gaGIc*`T3J<&j)M? z%AJKaWAM2A6%Nlh}ji{*k~ zAhYcbp8q`u1}?BO2a2gQC;?@_hNc*cp?kPWpfwXcJGi)V_bXfie2YH(@g~oc$jvOy z&BZ0wuba1}esvJWLi^^00k@^?(ylA0cVcG2d;yd0U zKTzLR#D|~OVFg{6UUwwr)AX3NOfP(7NdVB11dSRKztUDRwl4Qd+Tc~|KBS?cXmBT6 z>$E}4V-MN1GN&Sjei1h`mFCKWGT5rR@IrU5ps>l66b2qXxFT+hiVfFh z9PSN@U+SG5^~q%ZIpSJA-K=9U5Q0u0E-R|@^$bQ}42 zVPEUQn-ls)5mIRw$;lpT7=gBeJf?*aThzzaA`MHZ>WlABA2k{bavB_`6nucOXO|uF zgS;yFCVxEBl_(6s-Lf#&Z~yWBG@i(Pg@$~MoW<+}?v*D6j~w9IVQfGNAd)fGmw7wl z>V1)HyaPYh#TM9JNQ+=*J4t?{%RZA;82L2e7_n7(y~21KXIbRmjQe6V9A&B=)PYx% z_gX3nGSP5;^|?A`$IQ>`!YIkB)9VJtLG0d>75685rH8+`KI$re6=ZtNT~?PiK8$!v z4|cmQX+Mp@ zVeAlBD3a&PO@NuqEh%sxGRRZA;6^AbQW2cSOm?}kpmHE(Cmcjm!18{S>NJHsu}wXK zCHhVxPsCS+D@;+IzJHHdyIHz7{HPf`=*Da10?%2(aYWePh+G5*wwH#!vXxRUg;W2LRVD|f0t-8M&})&R zfKA-Kt-236Hwm}mA(l98a=1cxn7L|IRj5hj+t13eWX!zRNViD3Q)iV&o%P(V!el67 zf@IM|c8+qpI_g-m>gp6~UqZ5%jLsX6wjVUMaa|)Rv@m|!{aROMWrg!YmV4eWPfE%5 zPXbLZ+B{T?G*w?N0x_cE?1@y>UBes?dCn>IdGpUJWQqsBFG7mtiD=?oN9UC3afF6FblRuY0=rSg=Hhx@6k^S-4 zXd|=Eny$dD`(`#8uGqgcb5pv)n(zKn%jc3#)QC%+b4s*l7hYL5V{bDNX^%D-WPK5S zNJ^ty3T~6`(A;=(9n;Nz)wFuK%s-=+vAw}MsyL{ZEk9AFP>Nk_NQ_r7O>nYsNfj06 z7qY;nJ6C80dAs!65aiu*WQZTPvE*85KK61QPaO8%o%lTum+AP0naCZ~RO^dy#}|{W z*@5nR#VCyUUVPgpHFE(`%&5=B_2v6@4 zScJ>q`{2#cbgml5kw}-F=L4Mp@{T+J@6S#5JN~*$`B)~{)<4ET^Kmq%bz7hZu>RYZ zlm;)cw=$9%ILG|!!+DY6MCS_URGBKkeNgpfFSw-9xFIgj2FyBr$g9kt^sr4$@6uWY z&vDL-ew!8TSvVw8@bWWMQL5(?6F$YiIX-!()hu zmIlx}Y+LgcLCK&$5MiN{BPg7&eAEMK6Ss0^p*dt@AHwUzJ9~9qf>k(65WXwN9qjy6 zz*vw4lNk%y95gd>hRWEYm8Vg~@XDb5Rev^`HkQ5*5yhY2XaIwBC=q}9jo3)(p{mS32N%T990`SQ1^mTddoar)&o#>dP0IPjXih*95Og7)BIH1--^@EE~u-5)Uo z&Fpilvv7-Qe}7t&FSqYibpKLEzLac1u(aL`M@JcIdwNB9yCLr*Q?Gp(8MUp+(2qm- zHyW)5>H+Z>p zA>!|Nv(}BIH!1l31u(Ome;@Ll@H^BVblO$szQXWzStqdIcd5t&zpEZM7gBI06>ACR#`6_VRz1F%Uzv6YI{T@J{Fg1iLrCPQ z%W#X=|FI%1NP`1Txu801yw2rLwHI{v%q@jCm+izdgsx;l4i2UxOK|=q@Ob{|wz{eyl3}BxN>JT}S zB8++}YwTU_&ct5*Hs%;_$%h(t3~HOn#FN8!&AG3Ob5oOob5r$wRa+UlGwX{N^B2U8 z&xk2AD6~vsI>*2EV`ugUstoGH+&q>=Hy=wY)0X@JCq0?6eK1CdGJDeO4P$?8#vdQ` zCsy4fO09ftpt|LtOuZX(5IHUdPNmn>pqJUBo>{8mbvN&mld;r|4cSMz6fKrSK`2fDw zVILysmDGF0KjVV(URBqnxR0d#dFbrWPMR0#xTJ)_I-|6OuMiMz9w<_d<-3pEne({t za>t!F2z!b#X;Uwpza(sZc=Y9a0vbuZS`L~oFcvnIndO4`0SsURO z&%K}HJ|N9wlXza^0|VypZLJJ~YW=xn`e@8Z?8C?DgNvV$$JCeQxo31}j4z@JslGZF zY>jHHVaNf3E;O^3OzaI%{OFoDHL9m*OsFbj>PeesbYoy?y;tP2&R?YJjC?uzO5V?< zFfdU`b2iwEJkekrRfuq;WIoQy(>fiP(%){n54l_}hLfX;qmE$(8EYW1Ur7gZ0IS=_ z6;sk=Q`3wiWw7IP7R~%v4lm{tf@XHPP1KO=I&oE9+Nr|l&w#n zbm~>|_K*uo&A#sphgm6omz4{b<%Z*;OhwNs>WBy^`kf?U8G6`jXU$#pKwtBxPhVG9 z<(a##TIi)HOW*(UdE+cjm0yt1A5b0G=&IME5fI&4TOFu>gbc&LO#7{l#IJps+=*ie zyLP-NRktV!gw0Kt+~DmE;RBCCb8&XN5j;)Uq71?Houhz5&w>D!y2As@DZ7d|`@OED ztH;hTrw6v6Ve^J;KN5*!1*YyA;NdNLv9v+*a(dO|t7@WO zlhzj;2js1Xw6L)@p!{^tKuZI+65CLSy@E8!s!AK=h2bqMq00;#QzTp@sZRbj^0|QD zGlRGw%-NCH+8REuF$4+Wg+EUu+jJ`*)f$6&=n$9SJ>~DnJ5ylz6P}p;aKJH_4|ig( zJZ?)KcWAGI3&Y9|;-%RknW&TN3kPwb6fV!l067Eaa691-)n{kIf`1$0Xf6&9iCB~>B<@4f6+MbPdfZFct)Jh+ zsj*sX)Y`}&k?&#`_@Wx!mQ&uce1sM_I!k=E(2WEK1#e83uuhdj7)oK>N$om;Z zo8C;SEC=l2pn4JqM%j4=R_$tH$5|d5%7ASzykUCNY1i;PJ7XkaU)-WYud>%lyfWxSB)r#6i=VI9@hT%|Tg zxkmeXSRTvHk!KimJwP$sY~KZhvOb11y^NLyljPH@Qu>fqv3X0g`KV_hxuldKK)l;Y zoe?#u9tgDN7LjuX0`%m?O$0@C)ZT@3EI?OUI%?kbzv0rzX(XRCbp}c3_0Z?x;Bebr zv~G`s{s=qov87ZxCB3i1AJ|6Uz)7*KdodEm<>}snDXn5Q`w$oKJnJ`LVeq$kFtFcT z;MpS+hC21!lmEIIi?0Xg%I;ba z!z*InF~!>MbS1KFR(iXSPU6mA=iv$X2c+-?iLP)|QK-tW-%*~asSn2=ebWk;TpPYO zcA<3=dG3!H+jxZbJUQgh_qV>~Ei@OWhh=KV?)1jiyE#C&IT7%K?82f~POc56DrrBK z{W0@c98C0lyzu?Xsv(;wH^nXIQe$Dc;%`qsJmgY{HEBC~PFYI`kmxYuUq#v-K5ygt z{*Nagx;|s(j`j@gUc8EKB6TM-Usy6xRe}kJ_*CUTD!Ub06O@S>Q;3FP7 zZ$3q+)@ezS#$A|hb&zhO)#*%MoVea)=?_qtspD&>(LmNfF=6Irl6T@RFHETdHtm%v zvTIj{M9<@S5s~Lo!RsCk6&ESzJaM@}W;1MKwU!D^f2EclRd)Ses&6%-rNK+pyj8g6 zaryK}18DBD6E0!zr6i@^zx;qc?grOJDvy26GQRL84_oVQo_%`aN;TRH{B1Xp`wA}7 z70RR%&Bt=%sj}E_JtzOd9|zHkFL z%QU<4k)_#JrcfJbW>H%qZyd7oX0N_We;39bRx;kJ>9Pb?2H{dT3E;<=#T4>9V+=w~ z{#veBDn(bw&dCi;coK?{MA|O;9J6)fj!(AK$l@_HKO)GnKZ`y$-E11NH$Lz^TMo! zZ0fH1U9!p#A`S#_+lamX4T&=0bhq$jeY$_BweHK9E~|vxyby$BnPgnkdnLpR_TOpa zWOKhUDHmvh>E1D(rKkHHXGbQt@IWGRPv-*d>@AO$@H)$$Zskd&eqDICVl48dSbkL% z*2J4FOVEi_nmy4`uzS>ZV)KOIUioIs1?iMH=2IHfFU~)$BExaX{)K>-Q^|Lir&YVW zoxHE~9zB#^vQZi@DAUZp&@HNZg4yu35j9XJ;4M)j>^2eTtykjuc=Lq3okfIptV>Kx za#v7wNTBb^-+qD&_b>;jS0X|6+zkXe!XY)Oso);^%02`R#_rVY)p3pRlNcfD)!g)Q zSXbg=T?j*`Zr9=^=@Lk^18D%-8a&S&XB&KBh;fSpfRr)`ko5Z;&hCx2QTVa=ZpG2* zFXxn|k7h7(#2E^C$`73wTGcph#Vst)`9O_G+`+qTfuJNa<$9d7MQo znLSftILfd$wMiW1mnaIJ5pX$b=HDFB#wK!w9M~egRN&XG3@TtxnT2C``#Pu@NiD|; zG8aKMdtoPQn&Y!L4JNb7v%a+zPY@Q zW;q^WWp~3>zR5~1vWhOZhY*|0;j<;WG~@OpfxOGn9r=ca153VVX=eAwqC9OpyX+7T zhS}cLeb9AZ`@t277>Lz-iq1;~d?qQC=UNx5&yY!+s ze7oA5V76>8h97qc)C5ATK@nh#8QJr~asUJCGKLe8{J@X}V0{;l2)`*y9~0mhbQTN@ zx{iP1Sk{8Vnm${igC9IYcett(k2^a*qaI{8JO+`Q6bj5ZzN2Fz&PP{;|=vJ%g} zIg=ZbLr`s-4s#kgVY?Rl*m}Kn-M`wUm*r;DE@xG%-+u9Y$abU>FD%pKBu*w>)t%LK zV?V25tMMEY>A)$JHph-lOr_wDV@aqJ>q%nWay(#czAe4?|ioOl`c-vFZ+!Yx1hvzKJ`; zRQP^Tul4r*AGKgWiK(pNfCJR#NST9ARx|g=D9(mNE1bjn2HQPkk2*hHN<3|s@$z%6 z+WKEnS^s%1;O8j;v;uXpi7MXZz)Ipl<;{xRqd@s!r2P5FT_=ui6WfwE_kGJn2G!yW z0r%AU8O}AfL;o=~8e9x#R);Nyrr-Qj3jE3)ri$TWZ{Pj{YuhuTL=KDb zd$)9#?%ER_BDU<>V5~or1@pzDMFh2s)C2T8{Cu*9WAKWUwBbf9GE;j9e4e2ZwalLu zi`z+Z?*o=a40{J<3l|*+nu$DCK?;%e{T`DVn(wT zu$3rh>A#2db$QTnvA+eqHz5oJk2A}Z{*1kLT1M{uBfiorNtIM+w+uG$96KooWsFXJ zWC6CZYb?RYNVe+omZ#E*uJKylE)V>tp+4TC(bvB`t&eqrF1?)vX}FN;)gALVz0e0> z`GB7x+sJ)2ff>%+b7O3qo8`L{u+{@&);e}V%bcprm@iVVjUCIsk|^LiMUaA-mpgfO zkyAelJNG%KB5c=e>TDe3F|vNt0^v#hH$%}gT}D7*wV95TmZ#UN2lTSR%*GE0PgNX1l0HbPW8uR zcOPbx>5s%ej+KYfq0 zNM`A#)SV*wP8gS3TC($q$*7Yb{d53b0&+MV;j7zQD9_Re2>;M^w9iW>FnK5MMAlI3 zwMQp3_rno@~MP^IbYi48wSRj})-0;0cAI$YQO&cgb!nX3a)TaB# zlzhp;Qjjm%?o}Rwxvva;zrc!?T%*3HxLq`-2NkKFK@9188PsSwi0%0i?3^F!ffrA$ z?RoITb7!L{Y>UX5gdOiU95MDd(>fV=ZTMW^uslOW#emk6`1ukH*F@wH@* zSTgf!*1FMP5b$jP1!-<)PY+;tBU}`RPGq>Ub!sT!t=_r4v22|6lhv|=84j}N)`RLx zkmvpk3(&(3i^~%Aap#NQ{^<8EG-a6nfjnCrgpiQ+T*A@7dMp6JTPD{``bfix9P4xxE@clOTSOC`cD{(bqpF@>g5iYaq^XE8zp#JO%|GdAM|)FFIhjKX1^tVj z`bqo!i~jtRj^;4Isq^h;{h)u+$4>sF{r*ME{-k3A&_CY`GL49gj}8e6jyLp8*qbD_g~-l^C^(xOaCAK z{FKALn%lMeXa90ZjQqRo-!Jlyi@yE8uegrsfgNbB;gb0;+MG)n z#Qo3mV<1p^2wN5wWB*lS{15K`qCJ0BJ^BbT{W*&Nua2LM z{9iTj^Wmd@knl;6Cup3TOBi%an2TGO>xc}3aya4nSKB{7_vgWNjQcpx3Eq>Z`1m;$ zI!=R*adC4WJI>9+bDYx=T#20fpyR?kBImS!Jt1o6%X>abOy~aZRVU>yw+x8ee_&kD z^@~nE#U~*tB@IzfR8m$^)zddHgc})~{$^%wapkI|gQJtP3r9r$Hv$5KfC@_GHP3M`YU^6t+B-VCx_e#{No304(3`jKCMKt* zXJ+T-7pOG)=atp9^^HyD&hEFp{qMlvKYsGX1>*j%F8hysaXNwP*zx1s$9aG9#dYk? zPsW9h^PJN@A@ZvouWyv-d7b+w#V-F|)iQ8OUe}%>?ic-mPvU|eRe|}FwSRK<|BbQa z|6iQ_7i0hCYXKy{&BYNOw=f6^VzZS&e;m8V2l~G}0j6|GmKb*54^YBmT;8+H?lA9C z7%WidL=zzxDvFUgtTZuX-D2G7|2+NeqjiEBD$_&>a9Bo4Y$Q0pdX9EylLq@#7)_N1 z^|WywK-6x66+u4(zRYN9c^3M8&bP(Y^ICw%7uRc=$Bc5XJ&o`4%_0T#XdnjjO6tVh zZpL|<97~nuaS<>HDsjPEslQ_uxFUvRQYq#&%HeyM-&$gIHuXYjZP#odX*zjMDL90U zKf*v0-!kC%qftTi_X-osXFDv!-%+kV#Oi2~v1(NMw$DUD*HC`Sg3CaC#DWk~Y5^!% zUaX>qa}WNo$YXKi!hA&9mrkQCC|7Y-)FolSZxJwP4yQ+aJC+kFNopVq61=&={H7RzeYw%6t z-Ka0>;+Uc}=AoVP-^Fg!!KdpFUfy!JEn5vAd#z+s-KDnVv45@vwoipcco$*x z~c(B=?Uv~e!Lk2L81dUoK@a*^66yA)a}j1i|^LJmpFX)^H1OG8Vi*$}|} z3uR`ZD;I;rZN3(3E~)Eja=YjFd~y^>a;q_MIW_yX#VwZ)*dk~QP8CM#!Lu`TWKAMa z4) z_crdhlOv!)-6=~GxWeQB=jBFT~Y*ud(ZYr>qR?QokX9Zq2e2?y@& zY&q)+Rz$8|Bu(emT4}w(B@ft`lpD{n^5-nuLq7M&`J!a(Mal(C0?MNd3^fP+rq+oK zRVBXBi0X6HAJR5zQstO7{n748?gyz5sWKZi-GlRO%KxL1fFFS}yiFKbVkH-PmWCx? zN+J>ajsbC0RP zzUl9prACIux4i_;@D*)dPF0yD&wS2~tV$(K+B7LiW>jhjXi5|Yc!*}yTBb^kHD00Y zEo;Hc#?Pb-Ga~o98*ZJ?lLYfBh^uxyuO(GPhiWB9zqTw06X7OrJi#XuAlTrD zQ%OUWok}cm+Ap{!;o$Ggu>FncpO?A1m|*4+Xj|sM9f1AH@XU>4`jD5- zoChY3Kqrqt0WeXFI}o@0Cr7VCiBNvbF@U<l+xRJzPWbl-=!0#8kMcpf0YyiaTLnTTIo0BcAsuDaD&OrBbNO z$2QQ+m}?mAj@q|OMc=}~BA!R|$Rp5=rTip~!z{w`G*W<-#5~u{sLWw09Eh{5nNX6` zH0(xC*rg!aY&Iq+=)jl~axO5ox%bHsR%kHQSA<-g5J1UIIqhL~%oI9_9=Pnpn6r^1 zjzfK9$|GmfWWk2_i8f84ZL&+L-7aZuq3z9mW4&u7*Ofe=*-e|1wOgCMYEEP&NE{eO zGA1m@nmt*IP^?Msx1$rp;1d<5eC^G1#_^hV6acNsJ})0lQqjB$jjrOYA)?V~I1m=+Gfl)}rBI1p>wJ zSuUTY+`ZCH$R@N~WSYovrXGP=NhgqDynxSOlEG|m_zS?n6mSWr@gJ&QRhpHbz~q|G zM>Cz#nD6>{(p*j)2A{T@c^wUglHncc+vDeffEqx`M*}ADv*~ai3Fr5vhdb;-%BQk_Vt8(10c~=m<2=OUoaC=9oYZ zOEJDwaCV<6P|gg|9~TTpO6tAJ6&*SPi6=>;cS-wfKE_%utk-H8neNj*o|7cY{*VCf z&vo!%tX4ARhN$>djBY)~k1<#!(5KS-1G6ORjliOG#vNJ zH?0@~>61ZBHp#D+9$E6~wp~B)RYZA3%G2!Xhj-|qjGa#lsV=GgG-}2U+&j(6A*GJA zFf*oA_Uq##P(w?Fq_9n@z>vZykX(7j9|!}NjGsa{yA?;tg%>d@+@1t>-;`}}0`79> zroq%lE)n*fBGwZYjC?!0((XR$tx!In7uI7h_3UMlywk(gE8Fy}lZ$swxLi4(Cl;tC z8+=ds?{}>^n~r5Fb+%<|%Jw-m@QIvfpF(P_-$mP6n^{H|J}dhCF}$MVq!Z3O*Lb?( ze7lN6s{3EU&%R9Oh}61GruSG+J&gIB{z~YU>-z7Petluf^$QP34D=sPSXn3|wsOnk zz%c|OnR*0T#`(0SQzCMA*9ph<#=*fypbnp{4JtMpDv42B#)@Fn82c?zFXmaOt_ijj zur$zje)6VXH@>MC#>{1D)Q7ltGxS$0>EXJrjC$ZAd13Ess;RJ5dUrm5&WKib!({sI z))Fkfh$pugy6O5OR;vUOD{&szfkqIJr0dN+UdAQvI>p?G3b|IIzg$daHF-f z4w|HCQowwl^`q4eM)#Y+(`0(bqp0ZJBH!E%8G-Y|yPtCDE zKspe%4FeRvZ*dgh@qEtQDoJ`v5F&&|Bria>wZ(Cn8iW>;b7+VUpaNrw*?ji_P)yX7 zjy9|m%aEysTBtkad;~J@?(OWGfUUN-qC^0c6XR?4O^ruZvs-R`vqtY`yxdc7B3kr! z%Eof9-M*Sfrq-m^<_#CCi9U#_HR~Ztm1*jp${J=esyu|#(vYVz^F$?chz9~**z9-O zb7kJrrrK3jyicf(%Bv-o`T-tbl;|)vJQ)vns8G_R;Fp%8L~%B4)iB?js?-rJU_=hO z-RQ$UnRvjp=^W!eKgXV_fL6H9b4*I)@>66N>wEDQ=~%FX_hC)P>r2l}-(_b@)0DoF z=?`dcjT8%4c=500oM$Tu(v61Gm+rjm`9gU%8D&4SUr7mE^ZsK`ZfL$&n zv>UQSdH0#`dm|Vz``L#z*f7*w!G6_;j-}K}2@?oM&#qQ8b%&PPc=Pn`YJ|~viA&j~ z$gDX2>|lfiqmTC0YSu*LOXR@Q5N}n+pG$cdjk+&gNr=|4!ysZ}kByEkDKK6r$fi8l zU)g?S=jM){V;FV!T4}k9i^|9X*%X{gTyt}l*CVUnk~yX9-}dQ*Sy6+DJMI*{yUkOz zaA)KztUQ>e1)p2_yVG`a*N%MS@uwQ|=RuEf2}R5vn>dT~YISiZ;}T4|FxjYW$kEk} z8gL+d;F~mFywp*-Ref+JX~Zz;!lQv^_Iu>u`uoo^1%FJV4LKAAhw;dye1{R3YYfXuq;!XB(DH0-G*oDz0NKr zzA*@OwdlK>x!24^3e_wn%R=7SCr4jJ#;8!J47W77KAob3ImJyX^IK#`2$dNZDfLcY zt7P3*Tl|Gz@O#SeDeqR2OJf>&qS|Y+)&cA;T%?j@nm<>`=Hq9s?dt=lIHUOkFi*wL zzuJ%D*pf1gH7b4}f8habsJ}92(HJP8qw;)s*kZvy4ATPuUxsP_!rH)i8iDabovpvo zC)d`-9Lh#`(Uycala4bwagD$o(hq1h{;T|KxJdz$vJ6aSwUk+ryCG9MTjt^HPE;D> zaqg{~q)h+EQzH!NB%~f`a$u&4*yHSr;(t7qcg%73=7w!mfla)P1ibe)Y^~YVGeY3T z&Kn?1zdoN#0{dJbMcumlpi2Gi4cAf*vs)iUi|%^f;v-0{K2A)SQgdu{??c@i(U$66 z%+W5A01H~Y;!M~2B+^o+;kFm!!Sc{n>VYce;$dz(bY86=dYTXfl|_Fs2YQ$U+8XKg zoxwgnfS0!3YbLqHtVToov8_v#NAnD7>?qKX&biWz@pIQHHcVkV0?w4WCqcH59C8 z(z=hpmfn?$wSm5i1SY~R_zb%2H=rx0b-~lZK4(2DUxxAAqr|x^6k)D=X3*2a3S1gk zD1W&;0e+MB)b*qua?k9{`k3oWHLiQZk#kv2x|pP^dB3I;BRhZF{0xkEyJau4@^!|d zKZW5S0HRubx#G-Fkdt=F#sPZOC@&%xf3H7aUen{=ABzSZm~m+C2m?KG!mc37WnrIi zrdMtG>w*k*eCuANU~k+Xp(Ymq1tvEw=svBmc(LUW7mX!F+*2~2}-T+UAZ+0jc_axpVNao-(R&qTD*5=B_ z^q6|*%$@9`@Q?fyvhozDHInZ6&3WfF>uV_K0~YFUcU-IlZPJ9|B6}1N29T$<0!^3X)#^l*lBg^75G*y+$`5l!ShR#uiA+<5@G}KI38mjtC z*HC!QHLX}RKjjI0POVKxDB4nA)m%SHU&WVd|Jv2|L6Mt7l}$~^pr#&Gr9%?)7Xm6JYIikj%L$15bJO^h+dK*s?z=}nR{Q*x`P22G$CCh0L<@_M1m1SqHHM=5K$ zac{OdP(tj{3WdY^m5E*_=FC1aO-_8~Te%O##AFu3%~+kaEcmtS+lB+N;T70Qtv-X| zFb2?bwYoj6El&?K9&gKuylG`As^!$#QJf3js`w$NdyhaD@~j+mMpvxFNqUU=B&5z* z3}I`X=~wQy2Hn=%psojaLvQq~wcwpQ<@Mi&1^s;l60^baO~pnQHoHAn5>6S29863b zTFFC)IMQ&BXlv=D8~VGdOHV7?2;1`1$^}Idt!|@Fl!+saOJalo0u6kBNrE$Tj===5 z5om{@my+oiCAtTC(wTwEWCbmcVojN_d%cOv5whsJ&Ws~amOd1C2s|IMW{Ts|G5$Do zK5^lE?Soo@w)3NO)i^DLS@MYX<5;@VHj=88sXKOhG_pI(-qNwf4J#747*p(IRgrey zRX@AmPy2C_(y45GqnUjgOgtHHJ&8}v6RHo5thMZu)av)$MM!AoP?Z!c`$WZUlE!+K z{a%bZ;xb4Rg)WAJP==FF))7b;!Ow{5RW~`w(ga!b0X~k3RQ2r2Ox%<>@aKF##CeA9B z=tI421cAmOLkcQOy0re>x*PS3yfwa^%!%?3M*<8~xIbz2g|Of2}=v#7x;VPOj{yI-8R z?}5Zc%QkJ|RIiT3DX5G^-zmf?uBcqyiw^Jn(dlbmWGq%|Tg_vW3yG|;EK8Ddz=@x{ zd~rkSS@Em$mIc3XyqBl{@kiTf(D8>hAnu1(5g^_RrCCMiEJf>`BXKrm3idUY4{cN7 zzZ%)Zl$GZAO5s#2t(BjB3=vdZxN7jR)ynzfyuz#S%8F?0fG1(O==ZA^>^a-6t4QA~ zHCYx}t~H1CeJ6%4M4MACSXeOo0|Mey2kxDHV55^mmnK?9mifaiH7s>5SxkkW@?|qT#l-k4-oO5nyjAblmLo9vynPOp;9{oaT@Hc3> zPuHET@`G!mbTBAs2-~r=RmA*4zg@lz6G7Mi!nl)c0!Kq>zqA@BENqnC$w2s2vEWR( z7Fu=$_dHPP&e%@Rh`T7`RD5y|uCZMsIeR-}H?z8AoI4j^`~hb?r9!#fq$tj=wi5Oz z_pQ#UzpPVk92ay7cIW#;yGQ54U0oBprTn#QM?#(QBsx{gR7qfCyFsUFnQ1cVL_Pa2 zbWs}4y+&VexlFcB^U51`6gCJ2XehBH4)&|wvlY?V%Xe6!L;H5XTO50&vh&ZOtw!el zWIs}*@9f-{MZM-^wRQd1R#cNB`k64ZY@$2%UWDE@(w2!NN62nM_WE!*%rA^*kRalL z-g`t?!-m%<&1UI67+AL(PTdj6HDR2BfW!+U+Ap|cBRatPq@ z9{`=aczR;H7e;GDU3>MRPZr9L&(Z8aiEkt*tfgSIeqbte7+cN~6)Ll_9!tVjiF!#g zozqL!(-Om_5BK+43PVidmm?i_1+0%icciGQ^pJpWYp14GQbXG)E-B8CoI1ZEWJpG= zGbA^(eLpmoQGy8wu8U<#u}oaVaF7DGG$q)`?iIV(jUFe*Vo{|L1;ouNS#jg`b>BL_ zb6G>zgK0@2hc7XS%(lzG9gbe3N^VWl{*(wH@@!aTlP zD&^@h>@A0@eKahXQuR0x=oLiFNIS`LR~I@CPW7t~OO~$12b%qgFjF^Ce73%FdQ>e+ z6Ulq>eMM054fLnhVx)Rw4z7fXJ+0aPH9f&QW2t#9Bk4FMl4;12@Y@dOn0vif{SWNe zlkOZh>Ne!=@X!M`->L9}z>PjN6I}-H*4+~|IG@l(WdO@Sx(Od1L zj|;Pu0HajZIdwM_|6mnh@f+&i%suH?{>d<3$d)*HRNXk~SH(YEDfo=4b6nU8KYov%8&v#w~KExr<% zOTX=~;@8}bxg{g|fbtn)!_%2XXVTHA)BwJoncZ^9nyQ*B`qSP(oXa^jsm z1QD;y+QS0!P+0$VIzd4R8H4b()30zM`jz3cpK=^ZFctK zp%BZo^Yuj#Pb4L7^BryqeOsH-Z&VO68 z(QBQfMiptJSxXOU9qTU}-S$Og=%~i(j682r(jUS0{fV?~n{H5#^D?Gg97WoAg5vo+7e4)V<@gXn6+NEDv_C;roVTIy9O`9(d+ds|=8f`-TAdZY zTTyHzkiLveH4&akI*YMkR;KpJ0g|Mag;6{(H28A=F||@4xOs8OedBiY=F7j@VuGH} zS;W=)xXpRIo*uE%U-|QOd%*Kjz3bp&j{f?LWuUM>OrZ0IM<5Y?D#r_|F9yPrIQzn7 z&Ti-%2H6_Hz92~)XNM|t{G{oez}LW~BhWg4y|Ki)0!yuAP1*9U1`RDO=u(xoFEYOm zR6u|y92xU+c7~zr*cM)5{(|AM#kMZ>B9fQ={>P0Y5VY@nDE4@)KGP(fQ9!$$Ubkrr za9cB`A8kW@IsUyFwh3b?2Nt34BLJ9M0ue7*7d!9%=`bkCuTbxEs+8K+kccpx*-=M{ zAA$TFs>ZWObd@ORDL=FWcZq*>hAVdK)9_i+TCY_G$B@x2g^wg&%hxBlylshh&)FMM zf;_&ZtJZIBGIZ%(^vx479x|3X_~hD0%%J`Ko2^Y(r>Zln$kNUp|M)C|eu)m9cZLu| zW@`36*<4h^7anxwU_+MX!DNmzU|?w>dYH`@ad2`Y2@G6iJfSNQ;eAqGK>EN-TxQ28 zlzu0p?*xFOxL0Fr()SA{VjC|yPIjQ~8y`=CLK*e=ZH?INF!!#h@I8+z-^7qUA2+H* zJml?cT8x!iwfNNrMDzQ1$PP8%_!>AZsYQjhYgrT}sBT;#my5WhZ}|+D8JE>iztZi= zqx{mLs*I}pc(zu-U0>C=*=WqoSi4%vwg~Pt5G1-%fOmFmaXjZ%*N#)y*#YMw+kLj? ztCBt-MUXcm<_-6UIg$!793qHe&I3FQOD`zhXFIG8eRp6`iU*`5SNWGUQm2cy&KRQ0~7n`S2^2Q_N%8Ce6}FJia{_)6!&z@AF6s9TCY^CcsfZWcxPNUl9z z4axYCXV4e)=(?^Ya7{A?u`1SG3~BhSehu+!1|S;>gvyY_%M7#n8$u36gLx{yH- zyk0kz$IC0Q_}qaMFX5I>_WN?3@%w0-dt4jhmV_e{UM6@eaOTUtWFJR{@tDNJbha{f zzzn%uPLOCyGH^vNya`J{Wp5=30Q{)e%*M`qjiD@-6OMF%Vz~lqOr;@R^yZ{9Fv{c~ zVjCP*>0>jYl5F{~(&4ZQW5)J#oZw8sqo}72*9`13VHpN0Z=Z_ycWl2h0PgbS-v?qtg zWl*v$V)Cbal}bsH52uE;;p!iyx3z`zb}i$SikvB&0j;3^Bz+OgTd-nV;q)sl4iUoq zPE{HLFDOyZR1Q`G$|#no-{ijW;Ui>l1Ygp7!inu(nS(2CVc0WlO>aPc`7TMI_)jeuE0@T zjnX;S+jT@31bZ#(RqpB!|R*w;Ma>-B6(<=)v9ZHYCCry@?l0wv3(PxR9AEE#`{<;(~Rl`Or&bRiMM z*E#0z#&j%`-zS9R#yH$&S41>W$R{>ux8*R$f^%LxH5*r%O3?UMghkqC&Ryw{>swPi zk_l_yOsL$uv_5~K{i>U0riO_372~ey&X1cP!#fW;KZgJHG5oRnURup_082KkIQE{U zhRpSUua5=H8ud5+LLjLJoG#*5x$)s9!nARH!Jw-?B!OqK@l095Yj*k5FNU4Y<{q!C zmF#-b)UL+2a|biw`MzBCfqUL*v3$$C+ZzI!z))2y@K}@u@7bBgwYWL(sDGyq@Qu5T__Hm8sg{ zQ!_QvMtCv-I6u23d=SA|l1#?8&6bZq3&!+)dnPZ5L+S1(1Gob>%~uQynk0qu@xU+% zE5=qGU4EtZHQo9T;QR9T`+8P{^p_I()K_2XVbb8!u*^6?%hiPmI`Q^QU%=<2PQK@o zf&&-@l5TmtA6i#wAd-EoH+XX2sN$5%s5bi3ZDW-1c*>x82S!lVKn85yC)XjFQS00( zS0knFA`#>wSrX+OURj4me;5z-({|mw)oA8&%FC~w7CFUeb_{@gt4qX+)lW5g=d2$H z7~^aRT`$(}K>68*0CAGd4`bq&T{1Y^(j{_&MrD7Z5N&pO_mdZvh)krxh%Zv=VjlA;EEwc_A+xXTaU9^B-(ks6s#sNN46lExO58HODDH0103B;-Vr zA$v?t9;kj6`r|9{E8vzO^ney|k`oc5-Fi&@_zEh5>U`l|#yrU;13dSM8g!!qfO zML|YB!YfW22xq9M_4~Y-hbxTHV24z78>D=FX+X)fK%b1k$ssC1vS2x>-mw2qQx9g) zRyoHc;wNylbh{7w9XLBCY0^ZBF+1SEw77Qow4vbwWB*YcgT9|a0J6bb`Bm(pQq63I zq2zC<`B`$3aSOw|jd9|O!}}z8mh!BL8X7;S^X0W8)l@L!om!-Vs+;bxw{fa*S-81y zZH4XV=JiLX2~ukX>P|MQp0=&5I-H1!NbTb(>JexwPuBbNaOzU}qHL4c+Q2lr%%OHj zEE>bHIJMxiP9~7*T=I%rl8mP7LdnTU0j8sG*@}4Uh>iafzt(HR8NQDKU3-&4O8wx2 zO=@7W(V_a#zSaI2K%Ut}H6%qy0EGQ&W<)Z^|Gz0+rFBm1m= z_uVxHM&9M=%4F`WBa+U)zIof<{aKwOX$6oK;&T$WG%|52ruthJ^MZ%}GIwQ-HAPUQ z8+=vU{mBT6vLPOa0|PijFR6ceFHwo~!=@G=wop;|G&n)A@^1YX<1zf*a9oJHP0{m@ zR`D-36Dq3XFBlX<5>ub)dU-GYX)XS`vDY4j$b{&EVd7b&>ydLgw{%{s8;G7VZ&DJ? zXwLm3_op|6Ofb9rd;1GWw9(mh9*0PNK@E6~j(XI!1mNT$MuLcvbg&danAlT^r(hu)oTB{o~Cly zi^uNVPk;j#&{2&YxOM~zj>zegJ8bFGWe;Op$M3ThStky&OfF#@0dCr%+TfBD%Ym^= z|32t-cmHlzR}b*Dk#&wy%93M(Nx|yvgS{TGl-nG!K9OPBOf~4MfyG0iC!6SbCss$a z)hSVeqn3uIkcg^ZtBWcx=^c47h ze{#k-Nb2A zR;D+7zf2LQV`r3j-Qi_&ngy1z+9m40h0B_Qr7v^LT}$RwXVNszPGQuaJj`t0l~qvp zf;-lXZC-BVTO9xB+X7E$<2YZ64vQ??y)cTZMK|?>%sWCg8&zI9g-%A*!d&r)t^a_+ zJrN)EcUpu7f|jhSIlU|3o1HOCkNRa~MDn7kNYq1X$%Oj#t)(aVhH8m_$Jc~ykE-1w z)g?M@{b&mFUhJ(q+`_j)|0#9WEOsE4#o0;ocpN_EfTJq+{SF@RW2-$dF_jO<P5j@e)3sGB`BlJr9|g{5=^IoX~SQQ`{Dee%NI(e>`HL))UuEjvOj9cqob zR4i@m!`lW2t~WovEh>1g-*>}T%T-mZx%-;NN!8d$AmOy*hF#6cd2=zUxKzytaSZAJ z%h7Iwvk3uYZ$Zv?^RnRY4zi=?Z2}xGkKG(1LN{ikbunGYkeQA%T@V!Gn?4RGOK$t)*d%Dnoo)F8_f0uD ztVHGgB?0|$$qf?;kp1Un%XSs|?x$Jag6kaJ>QHMQ_rjMcwTaG}^7jE7 zf7`H3(H0AJ%)N48B;+RWQ6~-3j+4D4s~Gf{eujfWi@&bp*(P1)zd@~WvV2H!8dwgS zBpzIO2NpK=WES44TwdF*VSJ&l_2&cfU6jg?OZ1`b-w$kD*-NG02f}%Wt|~oXYodpL zJ*@0iVT#goI3Z3w?EHfPWXrRJ4vrx;N*m{@<2mYk}2e%o_v`PBW-0IG$y)1Q>ffhT*uQ~ zP1&u__jl8jjn5Nr)~Q+!^%i=LyIJwGnf>uKp5tIm&GDA@XpDk-y&fIYhB8X)6S1UE949`M zgHK&pnipMO+J1Ck!5*v70;U{( z2j<;eG@fWjW%-=ma&Tp)R%YJRj6(?kqCOM7+8l_IK!`PLBGHGp1Slt$>7op3bErQM z8m0c{9uH>y7&H_lB8)Qn%~rsbr+2PIosdaWnI+9uBb+c#WJ+g-hAV>frGYlv4w zm8eSsukFWNWFyD;c~U60HN4j7Typ$aob_7!lR~D`4#H=Ovtx;kf_s|ia+zwsi_%x4 zw(QiSew;WgND^UxSYljTn!iII{QbZ>>7yw7qcMwv+{8rGC%rSqZU4%2umPfIbGg!mJ;_YZ!8qYMauyXHSx#x_ef%?e6(t1th3m`+3PDfNTH z$VspL-H8+}@#A>8yqiQty&FSOP>1tX9$I8|l6Jk+6w%k$9HrHNy?IVRuXXFCzE+`s zDlYlQ4$1B?a zV#G1inm;X;Bc$e8XCdBrTE5KsBAnUIP2{!>t30*-17d-#>%`Z2&JR8HDhZpdFR`(D zq&d8^`B#%k0Xjd33_J5Xf^eQPk(Hw5$ecfM5izz>;!J*7s8Db{(ssB-Ym7}O?!CM( zru8u5uwEt)hXSY7y-sc{8saZSX^m>_;jj(8Cy@Nb0XqW|I2EV(XG{^ixly94^A3`; zDecTpW}jn^VMUQ);7mwTCFA0+(LLkJm82lIGI|`~x0RBP$nNHP4N!MHXt!jSOk-1FxM$&uE^d z$!6)DJpwiFX7wPnb?^}HkHSR(@Keld%oaSvG5RIOh|Hv2dm!%IsoHdg3XfkymjcRu zo6C_9BnP<{cFCX4o5|9~1ru6P+i_GB7to{G^bMbb6hrVbzEUewG}>RZ-yQWPIWfWa zG5$;+tHVE7sxOBZ2A<6YFDe2m&w!^Nou(T6XTF^|KjPy(A7@`>WKNg~5a0=wiu2i= ztG#PE9k@C1yt%oU_e;Bc_UBsF-I@%%nO!PmsztOWJ125-r99Nxfn-e&v8;iccgmIj zjC8zHb*kE%^Hp^uO};8@Ua4_h;;442)QJknMwtqA2$Az7ZrIY3=b zGl3U(ubHXqX&K#Ctg&2j-RG#-)#x;CmEo4cKP`LGqAG{a4mUeg!+nE{jU*x}=xypY zzLNHEjGPAw*1ueD>!{`*<@)KnrfVpQ-%6XZjQy=Phm-OFmOgxH0%E}qYuUUQyTkH6 zy>%V*6Kc@lPqllB*_6w(xA-VN>RITAo4OkdH95a~ZzObN4XQpt@ zk2Lxa`*xpI=&#f|Bf-cRf~NNJXr=4mvW7R`nUP1 z-_w&6gC%AmK`Cr~;JY;^W|B``tzzDxeNWai`e@B?$zXB9RO?C7uQ`z?%FCeCr%cK& zx)d4Z?=e~*CAL0!1ahsL9Q;sIYFD2_GUZ0;KdlY?%2o89Vyae^F$#0}=vU{fM$?L| z8x|~_8gAaH<*RUpf)R4o4(S}gw>2WUH?lnned=Ag<$M}HtcfWlP_I35sW7Uf7boZ} zr41cmz;=eS zL?VJ1`6SLp+@F>kSK}kf`sMw%uMn0naQ|*19W3THRJHMPr0@K+J|6r8%pa^B!bw-F zfwV7l6+NhSfQ>}OcZy18*5p&(SDbL-WFV|l$)Z`NI{Xh?GIDi#mivjiYzZyfByc{1)D*M8^J1iR`_>}eA z3^K^tgKPqQd03_Q^@J(YaBxY0E%FJ?K{1Tq?^Qhl@#=#`zr6gKzK7)p_-S{@+4xhN zT8h>6z#XzzNkWH<6k{yRvKY#9Iqwc)Slk(2=FJZqn0e#bp)mu zI_#ddtVL@7^6pJ%C8gmt%O~SJ>ry)X7BEC$!C!gi} z_^&t%an;kQ>PxU?Ays+~3Ff%SCsjs+8^@}x0Q1+Q0N7;2@vf|;feI0MO*NF?$$)87+#Tfgqp_I1mRQBBQFMq9$tAiTsgP?}IX2J4Rx{^3IUGoiKD zL?Rw3zVdfRXdAAi=kuH_kGnm2BA?H$)+K|J%SJb8-Lz|@V4{W)PLG3_6uUAl>7evp z!+ZTUWx5Tj!#{Ra3mWClkg2= zAAvcye1)?p%{$Ox99Vy!EMU5v=s+no!7szO7l8-A0UqG{2*C#6iTNwWos_*Ne}Wxm zIq`+(i!XF#$DtYHt&2)SiDB?TTbllp)txos^hlKBF5EwwwWLStCFWvG)ZoKfe|M^7 z==ADs2JFQM&@~5^*MoYEGRXEcftG;64SV8hyb}kE`#P}fV#R0Io6gr;bcdVgawgR% zzFJ=miY2+8&}UFtWT!OI3~ecOyus+X0$LjckbR{+A}*jGA$C||q7Ie|Z_;_^qGZw?( z>%!waks4lwP$0)Z@wv=gt<#UG;9W;mmLNlE8%&P?)GRn@Pz(8V@K!z3hw4Hs*WI^g zptc4M3^)pc!bTjHvP^46{i#b?Y&9UAS?xt&5J<@U3M8{DjX;h1Vq8hOi09H{i#`17 zD+wxaYn&Vl#5XBEppJSxIh#%VjPURf=OEnMOjKw>5+ic%jJ==|yEkzEvqQ@}H(yCU zevk9ubvg5399@|kHP_IWcRt=5%%3~VL<=k#4z9YT@hf~C`}~Ctw@;Jklox$;18$?5 zc3%5)O>*&FveZ`FLXcR)c&67r1b!~|Fa(Ls) Zf1Zo~jhXx3q%{4{AV2XNHH1zcKkoww46jIs&C_;hLKs^YA0Hhp13jhJ&Z3__aZ*0rTf}t|o!^3a@ z1eOKK$jZoVxBglH$$(`6$PR?E+-?=KK`x4%XvTEQbsM`f;*$Qb7 z$n*(U%ooA$46q)BYblbEGOEnPTjfUKr@qv=P&8TpIl+b$C|$!HroAqURH}YAJ6^rD zB_1e*45Pc!)T|X11=+Pyz;aEqrVQHj=tYXxzFMow;v}UC-)Q`NrMJ8`??LP^gKYOb zH`pFNt2e#+0&&-wb&p)=2i4{Y6nd4)U!+e_F4EvTju8uZHl6 ztmh(Ar-Ww1ACTU>=BpDPX_mLHwYG{w2J=AuUzFGU5#^ooZq0*<;bC9&X zS(<+%nbDZxgd;WfUh_L7*Kq6AWDLHKvOs%hIsXLz6UG`G(Wp3N!ED-txNe{@Ux`{| z(syINtxg1bM42LHb}U5*>F6ATVTZ5BkvFMtwnjn*we$N6CEyq>@iibcF-*6A90mEAq>qEU2; zKj)jIV5T9*cjkrtU6&HE8DsBFd#6zw?QrbKRI0>rPMGh-7@r@D5L+ySwyiepUPi## zHJd+o3HO@F#FcgpG=n}=i0Qf^Lj&u%bD@6%xDZcAX_fZtNaEzW&Le(T$ha$pcHT#cMW|Z+lN-2omj== zQh@JW`*+b4zky`&f17@(p~iz|Jp5-H-6J$isAub2DCydb}?l z%udo*H9VFWe_S5$^!MB27lwg*Q*76gDGVfEzPrd2GnUCE^+)LE>mJQ735_G^#+)fz zI62;44D;`tecW=Os6eR#`!YH#pvuiMQs|#y=zpWDyT(3JeKgy*jWv{MMf!X{Gq4a6 z5CP`^-JL9i6$!ul648}SOISLz;Azc5DU4(~yRDq%l0kAp4lVhN6ez1ki5|E9BAN>n z$MMDVPrA#|5nDxzcGsgGImxh+ZW4|`qwF6yXo z4|j~aIB0qfk+tlHApTlfUZ0peFyLH5pewuf=&w(>{9~-2*PrA4EwgUFMiuPusmlqe zcXFl=sJb&tcjGrkI;!yc#qwH<#t8%WNmJ;q@T0GXXoo_-&qd{%P|^#3&+PR%@2o!T zE^}tOR5k+Nu^1^*>NI^(CTzoIUWO(7!8M+9Ycb;nM~dqnV2__#Ih_%bSSIqoRb@=H z{B(`VH!WBw%{MbOpA;H|tU$eD797X)RWX6+3seWTUb|Tzxt+wDi@mGs`qZ1P=UfL% zBn-uT<&(9JYPlKcgyb@ea<2)rjs#3aIG;w6wBITOK7HePhg?BmHo_VUzGpkIgWd$U z54P4)@xhal`e$0*Sc|N*bGH8D591v*rx+*O_7A5;b22_ZS|?rMQkvK=i_%jv62hi} zOdCHKV9*yHB5FC&!yLsfKSOJ_m(rtG`?9kKN6Zgu?>Az5R&3h9juSEXECH{`l{Mw@ z@n2!^q{9BT#evyAYF~l2=6Tl=6XVq-n7^+Dm(((r#3Hjex02{JW_%~2!}u~da@3nA zi9JH`v)iNm5*6)MBX5|MTKn-N62})%o14{C#&ao`@98|##vLf{CK~ZIc&?vJ9* zDVpCe7@PN+9aAb0?(4aZyZ6yA+sV|t1dPYaI3@W8&l9Y@RzLpGd>uEG!87_)MeKPT zw{v4^358P(dOaaA!5I49M>bz*5DJ+53xYcYTAxvWcSv;~Ltb7>3dpqo&v&9u%Ks;Z C8)%9E diff --git a/doc/src/Eqs/compute_xrd1.tex b/doc/src/Eqs/compute_xrd1.tex deleted file mode 100644 index 6e749c768d..0000000000 --- a/doc/src/Eqs/compute_xrd1.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - I=Lp(\theta)\frac{F^{*}F}{N} -$$ - -\end{document} - diff --git a/doc/src/Eqs/compute_xrd2.jpg b/doc/src/Eqs/compute_xrd2.jpg deleted file mode 100644 index 1bcf0494ea804da23768d39ff195ac031609064f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4778 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 K{(Bflp8prKumvsv diff --git a/doc/src/Eqs/compute_xrd2.tex b/doc/src/Eqs/compute_xrd2.tex deleted file mode 100644 index d005602339..0000000000 --- a/doc/src/Eqs/compute_xrd2.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - F(\mathbf{k})=\sum_{j=1}^{N}f_j(\theta)exp(2\pi i \mathbf{k}\cdot \mathbf{r}_j) -$$ -\end{document} - diff --git a/doc/src/Eqs/compute_xrd3.jpg b/doc/src/Eqs/compute_xrd3.jpg deleted file mode 100644 index 19f7aa99b5f79024726f836e35358a98666436e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4745 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 diff --git a/doc/src/Eqs/compute_xrd3.tex b/doc/src/Eqs/compute_xrd3.tex deleted file mode 100644 index da0254134c..0000000000 --- a/doc/src/Eqs/compute_xrd3.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - Lp(\theta)=\frac{1+cos^{2}(2\theta)}{cos(\theta)sin^{2}(\theta)} -$$ -\end{document} - diff --git a/doc/src/Eqs/compute_xrd4.jpg b/doc/src/Eqs/compute_xrd4.jpg deleted file mode 100644 index 385bb1efd79314516233ae8db633d12e8c751412..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2278 zcmah~c{J1w7yeC*K_z2}_OT3E#y<9uN=V3vG(wsd`#xig7NVL-30cMr zqo~)uyit^7Dccl7Ba$`q@}2Yj{XO@bd(J)gp65Q#Klk!K^1lG$7#n*V00aU7cDn)a zM*%AUEFdT-C;;9~U@%w+azGfei$nYOiyVL+l8}HNfCDpS56LCd|4tOJ9ic#_(&Dd53Rh&;uZk`s7t2Z71w}JQ3 zBAK1kpWz5~j29e})tG~}PVrQKJiyILzR6GywiH$W4*Jsv(qC{YrS@Hob%DGeh5%0q z(l3;G>*pW}I`4)atl<{YvN9&+;y#SNPz?GJKCPV1y)fd$ud4JAa=2kbsayI7dq z9S++%M;Kddmop|Lc6sZAce2_(mBOu76Wzil<-U7Trzzmbb+I`EX+&UQ@wD)Nq| zd_Gjv%}ib@4~S5rh)rAL>&y$M`uyHrOgO@1Nr&QE%k%ELQu{SBQ1OD|==1^mZu%bVcE{1q)P&M~8N|4(ye&O}m;iSoMk94G?MvynWkIM6G z>=B)ai~mkn41Tgf4$nFl8=kjqbjq+X7I}^jXfg3#*Qs99Yxg1%s$xBlpS*j=d3ObG1w?0DG0}eMOVjUF^Gqka|a2LYX+DZ zVoC?;&=2JfhYR>~lO5NN`GgcvnEGF>Z+&XQs~1gfoGhD~jziQgtN>4kPFyu~1pz#N zHi-|gR~ihq9+|8n)^>3IzV8}|5|Xjq(H}|ci6k7Zrv{vktz7eYt}Q=^perk?xkMwYoynpw>$A=MBfh`BfNl8E7HL@>w z=77&IrcNS~bH{=!UuQpPH1GzgMw5EA+R4PD8mG;zzE-YD_g6^3+KD2uj`WXoUm;I< z>zz~Fc>nhISA>C0+0pfcYk?dmw^^@Wnnn7rehk_FN(y9cfti6tWrfA{)s+02;VF09 zz*4oYThASSI1Y82Lb@g`eXRyjRApB_fP_(c!_9xr;L0O2yay2O8!*$H*rllt`bIR zs&mBF9sAT-Q|Z{H&?}>Q%)7&c4}7FsVk&?1B2x0|k1%|(9&gcPG#N{S-xO9wzu0bqW?p%%Hhr{k;l#{3 zsl?=BJwii_xy&Tg!bE)G3wiOY0;mOKM+vhjHMUZcbc&<3>w1oW!QVVhkSCRdLEz8hX2{2z_qX9c^Z7 zqM8~X^-z5;8V~yIguu|oL>2GmX@VYI-Hmyj$Q&!i85@q@7T^QV&{z^)I`unDtS%|RPTVu7LxUiNAr4%_cXmoy5dqv9Ve_U12B%Re%LTo)E zTwQIG)Li!5{d5rwY)JWH37K%1Sz2orOGuWA)-4qphMRUG zoIPI>Mzfh;epk(jI73i({ooLB8Gz&BYB}&xwe)xZ21}_-DEj8r8oi|6Ki vg6m%Gn&|o-J&Sa_cZ=kv&=4n{lzXrx`G_(j=k5e+>@IE3^?$AJCH~02=;t^s diff --git a/doc/src/Eqs/compute_xrd4.tex b/doc/src/Eqs/compute_xrd4.tex deleted file mode 100644 index d4deb7ca55..0000000000 --- a/doc/src/Eqs/compute_xrd4.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - \frac{sin(\theta)}{\lambda}=\frac{\left | \mathbf{k} \right |}{2} -$$ -\end{document} - diff --git a/doc/src/Eqs/compute_xrd5.jpg b/doc/src/Eqs/compute_xrd5.jpg deleted file mode 100644 index c6f0a2609a4a2abd4e5f6f93c910d2340d12265f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7603 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 diff --git a/doc/src/Eqs/compute_xrd5.tex b/doc/src/Eqs/compute_xrd5.tex deleted file mode 100644 index 2d97a3288b..0000000000 --- a/doc/src/Eqs/compute_xrd5.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - f_j\left ( \frac{sin(\theta)}{\lambda} \right )=\sum_{i}^{4} -a_i exp\left ( -b_i \frac{sin^{2}(\theta)}{\lambda^{2}} \right )+c -$$ -\end{document} - diff --git a/doc/src/Eqs/fix_bond_react.jpg b/doc/src/Eqs/fix_bond_react.jpg deleted file mode 100644 index d63b983230c0c26a7bf9c50b38593bdd65196a35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2427 zcmbuBS5(u962|`_^m0KG+A2jwA-KRI3km{WDUlE$h%_lm7ZPbJXy{582&j~>w9q0= zq(lf!su+j}QbGiz2umkYgAz&>-|qYU&C56EJ7?yc?_ticzp!Tk5feB94uC))ApE2N z_9S5NtNXuTcK`ysz;8eh2y_Zyzdum`2l!;e|G>+`$Ir!m;=x2tJOB)UI5{{@#0gy7 zU``$o2QR<}fr^QWpOWO4u*;&eCjj1GBd!B8l(&_- zm=EMhkUClXbJy-6;|rs&CmR+|h0P;O$1+?V-MFNd(KK+SYPZE*t3zD-jK05i%vbG> zOtm6G>nwG2U&r>2XN=mNm+_cDcanZcL#aKC^>-J26rd#TQ}OQB!VB4Y*-f>nBfVd* zs(>eKO*?NWCtV__6&qXQA#y>dXH$kp1-lhrPqTsG4+j3JXgBF!+3mzpyVNZB;OCAO zS9Q$H_g|=-qUKV|LvNNH z=P4i4V99&&CPKuJE7zQMhPUjC%m@#W)46qr5a}BKa`pN5UZ{*~3sk{=caMsC$UMl? zKB`LrsUM4yDhl0LRnKBfo9>J#JPE^H%vmRJQdbdMHag1G6}V+Nn8tT1%^hmd6fxxC)9w-d zgbBmru*o|%Qf>_EY&aVz*R5s)e{0Pgzp`KhjCRp>Z`k*;ermPT|uUmkdCBWTh4ah-hsq*l|PNm z&Fh3>*TP5#^P}13(FmG>%-&3GGZrN@wljYOv-eh*ZH+V|>irjy4Ca-V)s*zJGh*&! z@B}tq@E;*m2`c5EOwuVm#wh7EKxC<7M0hncjHnRSI0T!ev$@paRg zdBPgMN85_h&~a@c{z&}RacfKDegup}m=wQmsp)Wq4b;RQMvmKrwki3U*<;#rl%_3G zlE0Hu@10hk2?rzGK6OuxB9clz)U+Es|67wdl~%_wE;q0c^7V|48C61*gSjzcNpbRV~l+lJ{wNT44x>AhK9dEn3o*`Y3%(UsVJu_l|0{|2V#}=)?OV z<<480q0GdR(eqIyr2I!|5v=79={Do`3pZCb<{l6LVd?xM)b$H8Z(!R?(?0kNG zZzpc4aWf}RYo1uqJs9-Te21pxKy(OEDR>nzdzr_YZZ>1*ihGCN@{dM1-hGfDbs-@e zG~Q(I9a9T$aBkl9Tz>opS#Y@|hDquX7^|d~vT$_GO}|XtXKR6iE=uBp2lBKZ4MWeU zg<=V4pT1cK8JCPN9jA6TGO}9Ea*)l{(l^3lQPVYN7!#q7e0E%wI=57<5*e|LELr3# z#0cd3Vv3l~Q_SQEdKa9#{o=X%!$R!YKVNU~^jozwkgQsp#@#U(K%4Igc;xr4QRmDT zBjf_CApGeHvMpPQ4VWA_HeWOkwBL#N>%5`G-GMs6U51#Lg@8)jM`hKON{5ev)2Z+o zTM!o(iRNxDw9I1)sM2I-amuDigJnlKWugd-V@Z92+p%B2y)pLNf#2^BY7$v0`NumM zspr5INj~Se>H|4LZF+^hZpovRUZ%Q2SA?z)s!PZqLq_%TWg@nT#hL!)UD8}Art}bnnPq{%~_hps=cn8ntAJu&;{&bl<gLkyem zj9d)+)8AeGDTksZRNgY`^N{NYT2#Wf;<7lRO$I--f+B_vEFVi$VxsAZS1)y*2{4j1 zW(BQLs(*$>>6$p#{m43!3jyV zXT$K*Zy!7Zi+darnzS6~yvWJ=mfN4EbJ}o|akPhqtTC~s>Q&8W+oXnNofo76O;jX) z2(;<%>a^bk^WD?(6PHNg{Ex>X>g%us1-#~zSSove>Eu+V9MkHqhTjZ#yFs=eu~%#k zv2~K4H+!~KGG)_ssd4Ho=EpcD?GhS7z9A$c?;mQUZJ+CLD!Rh*CI4>aP4TtkV7!Ig z#BB!~scwEZ2e&&qT(Q{ARgca*Zb$3dg=i^J{nJo>ewcnwqWsOf)wS diff --git a/doc/src/Eqs/fix_bond_react.tex b/doc/src/Eqs/fix_bond_react.tex deleted file mode 100644 index 9400656038..0000000000 --- a/doc/src/Eqs/fix_bond_react.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} -\pagestyle{empty} -\begin{document} - -\begin{eqnarray*} - k = AT^{n}e^{\frac{-E_{a}}{k_{B}T}} -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_box_relax1.jpg b/doc/src/Eqs/fix_box_relax1.jpg deleted file mode 100644 index d425526046e14d2757882564421d996aa944efb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3375 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 P0M@PFzxcnPPG|oM(~esx diff --git a/doc/src/Eqs/fix_box_relax1.tex b/doc/src/Eqs/fix_box_relax1.tex deleted file mode 100644 index a332360666..0000000000 --- a/doc/src/Eqs/fix_box_relax1.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ -E = U + P_t \left(V-V_0 \right) + E_{strain} -$$ - -\end{document} diff --git a/doc/src/Eqs/fix_box_relax2.jpg b/doc/src/Eqs/fix_box_relax2.jpg deleted file mode 100644 index 8fac42e0fa8305c2deb45e5043f865c3a9e35134..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3029 zcmb8xc{J3I769}$=lh8Uv!B3jT`W6ano zGEy^H#y+wn8Cy}3vCQlJ^OkeoAMbtcIrrRi?)~H5|1M{YGXn@;G((vIAP@+!_!9tU z5-wM!@*qv-bJ*i=cGXe1b z*&ILuOwxt_kLj?py%h>nUQwP_B$g#eXw@ku04tm0^6@HRPZj^oF=oNt(t5W-U7sXL z$(vq2t&SHD1S-rtoVmv1;|#6*T3XM8rx7hu8s979%vdVfuUHz?WL-|sf?z42j^wIfWVcSyew02kt#(nfIkdHkE_{mX=|K1!T~lX zqsLeM`wmvTfav=#!b!r-5=(O@z1EdY=`*{?vCpjV6)Sp5np#VKGfj&kK4os=238(v zKJMRDitigooX(cj6=JR_>26(#6{GdGE=C(HwAf7?TMK0f4_jIXzFjv}8k4?)({eYW z3-KeHH&@yzIl;f!M|N1xo>u($h(aVXXEnPw-u!;IcL_1CwMC8Sdr1uKSukDKwelsv@OB($S4>;ui0oy-3na-Tk4F5lC2vEX?SK@tLT$!iO`5#M2B+ zOIM@rPR(zt6-qni?whTLXFBmwl*VSeUSvC}P@Jb57FPVHl&&#gtmUxW?Fe7Oi7N{g zl|@cXbfrE4mm`SvJ>{I7tkdGvlaZq%RbT2CCs(oHzIV=km6b`eGN+Ov=QF-j{+7W* z5<8%kcTNA{B5tk!s#{yE4spokc4hoQe}tT^R{IAp%g6DH2a^MJ)J?+ZQ&Ej1fzpyM z(KTVWE;S$@9@*7MLQuy}L(zg0GT4eWPhnRMVC;EQy~*w5Wuqlcj8f`Mt2V(B__*|@ zB{v9b9^qZ%bzA89gDMEg+3o6!>sGED8q%Gn;hg+Vkzy7h;cw>}&7KeyVGO;$W*f}xEb~E2^*7n^aae)2h z$9i?CLmC~UM>BKa+;}&e{P0C2a@gf!;qRIlih<;f{@XQ>C(hH0tM?ZPeZd^yWKF01 z41cEqTi3e!myCHR#cBJLrt=n7XtO%vbpd3ZL+DDQa#)-Sr$^t$ffk57DyfvkxiMYnbDIU8mf_& zhQ%`$D$k{T_4#}{`aP<*{zA(=7#t_MSUPMlwfYtxof3NzqiN>5axs0^_@m01w*ilC zgp2QUJ2Ch0PeW|BMP5Yth}pARykUaoGSZj)=)v58fcu%j{z+=j)#WaG$IE?3?d|pa zBfK@XKl0;En1fKzCc3GsnQkQibzd5ue=NKsj1>NH*wU+E)I_~K596VPiOk;!j7e3; zbh2Z4^{A08m{3R>aURPUjXF-;Zbu$Eior!A-T02 z$R7Mow{%JRnzD#nj9QqjUv_n!c&}sNK_-v?UV#^kE#W19tovrwe#g!2OU55s84b@e zUSqadp2-?`Kw(G6giFrEXmnj<91C? zGDgFIl{P6}f3uWDlSpQsQskc+Fk&XQH!**x9{xjnqqaM6drW7c06$bb$cBhH!y{N zH)#%H9`vM^lxoxbUd5RUfuEFpd^}5?a{rl8m|I&{>O<4NGH^1(7ufQm@XpU1`lN~5 z@*tjV$V;0-lJ%UrZh5(QVCx139U7{IAOyq}Dqw!WTb7aSL~f&WT+xwz*1;+aQCBx* z&o8kSm$7rDiA@2n8WPd6a!E67b!W3Wl~@v6E+nu+^PE9I<;`HvAO^$E_VQb+^Bbhw z*%l!Rfz||b@fJW__iJ^60OUJMCU;B?E*iEJ5tOgTo>&@!=(}vtVlBHJ*5n0sUy(Js zCNr%ynY8eueXHh_s2rOfEtS4udkcE9H9=Jy_9P~&bH)}#N9Q;HYS@Jv!Vh)1V-vwX9%XM}qaKJk69jE1P{(xIi!5P=49 z+L4-2!^Zp0UAHP2kPT9(L z-v?8>#n=~Zm?}nl5clQ_11x$o9sLIS=3Jmc2B;PKFz=U?b;x76OXa1-V|%EZh4>U((S0=6L_XtHOJ4+(r56z3I*`zB0LY==!Ty_g&iLN}AxftK diff --git a/doc/src/Eqs/fix_box_relax2.tex b/doc/src/Eqs/fix_box_relax2.tex deleted file mode 100644 index bc9cddef4e..0000000000 --- a/doc/src/Eqs/fix_box_relax2.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ -\mathbf P = P_t \mathbf I + {\mathbf S_t} \left( \mathbf h_0^{-1} \right)^t \mathbf h_{0d} -$$ - -\end{document} diff --git a/doc/src/Eqs/fix_controller1.jpg b/doc/src/Eqs/fix_controller1.jpg deleted file mode 100644 index 25f381543fda256370cc881e6b57e3b2fd38063b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4832 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 diff --git a/doc/src/Eqs/fix_controller1.tex b/doc/src/Eqs/fix_controller1.tex deleted file mode 100644 index 14f98fc303..0000000000 --- a/doc/src/Eqs/fix_controller1.tex +++ /dev/null @@ -1,12 +0,0 @@ -\documentclass[24pt]{article} - -\pagestyle{empty} -\Huge - -\begin{document} - -\begin{eqnarray*} -\frac{dc}{dt} &=&Ê -\alpha (K_p e + K_i \int_0^t e \, dt + K_d \frac{de}{dt} ) \\ -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_controller2.jpg b/doc/src/Eqs/fix_controller2.jpg deleted file mode 100644 index 178fd5a67eb618a0929d9b1d52be195221071797..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5571 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 QJ-zZDM(E$vd%HLAFR)-MhX4Qo diff --git a/doc/src/Eqs/fix_ehex_eom.tex b/doc/src/Eqs/fix_ehex_eom.tex deleted file mode 100644 index 344ebcef76..0000000000 --- a/doc/src/Eqs/fix_ehex_eom.tex +++ /dev/null @@ -1,8 +0,0 @@ -\documentclass[12pt]{article} -\usepackage{amsmath} -\begin{document} - \begin{align*} - \dot{\mathbf r}_i &= \mathbf v_i, \\ - \dot{\mathbf v}_i &= \frac{\mathbf f_i}{m_i} + \frac{\mathbf g_i}{m_i}. - \end{align*} -\end{document} diff --git a/doc/src/Eqs/fix_ehex_f.jpg b/doc/src/Eqs/fix_ehex_f.jpg deleted file mode 100644 index b74a28d907d1682c3a95ba59cef84f6914ae7eba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10352 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 D8v-&F diff --git a/doc/src/Eqs/fix_ehex_f.tex b/doc/src/Eqs/fix_ehex_f.tex deleted file mode 100644 index f6ffe1d720..0000000000 --- a/doc/src/Eqs/fix_ehex_f.tex +++ /dev/null @@ -1,12 +0,0 @@ -\documentclass[12pt]{article} -\usepackage{amsmath} -\begin{document} - \begin{equation*} - \mathbf g_i = - \begin{cases} \frac{m_i}{2} \frac{ F_{\Gamma_{k(\mathbf r_i)}}}{ K_{\Gamma_{k(\mathbf r_i)}}} - \left(\mathbf v_i - \mathbf v_{\Gamma_{k(\mathbf r_i)}} \right) & \mbox{$k(\mathbf r_i)> 0$ (inside a reservoir),} \\ - 0 & \mbox{otherwise, } - \end{cases} - \end{equation*} -\end{document} - diff --git a/doc/src/Eqs/fix_eos-cv.jpg b/doc/src/Eqs/fix_eos-cv.jpg deleted file mode 100644 index 37eeac8e2dfdefc78688b40a5f64393296eb5810..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3016 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 diff --git a/doc/src/Eqs/fix_eos-cv.tex b/doc/src/Eqs/fix_eos-cv.tex deleted file mode 100644 index e084bac9bc..0000000000 --- a/doc/src/Eqs/fix_eos-cv.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} -\pagestyle{empty} -\begin{document} - -$$ - u_{i} = u^{mech}_{i} + u^{cond}_{i} = C_{V} \theta_{i} -$$ - -\end{document} diff --git a/doc/src/Eqs/fix_eos_table_rx.jpg b/doc/src/Eqs/fix_eos_table_rx.jpg deleted file mode 100644 index 0172281b6ccfb25e31b923f8e0a2c7f027812caf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17367 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 CKN|i3 diff --git a/doc/src/Eqs/fix_gcmc1.tex b/doc/src/Eqs/fix_gcmc1.tex deleted file mode 100644 index c4b0d62527..0000000000 --- a/doc/src/Eqs/fix_gcmc1.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} -\mu &=&\mu^{id} + \mu^{ex} -\end{eqnarray*} - -\end{document} \ No newline at end of file diff --git a/doc/src/Eqs/fix_gcmc2.jpg b/doc/src/Eqs/fix_gcmc2.jpg deleted file mode 100644 index d054f584305d763e5b7baa8881a1f1a0d96f0a62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10626 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 KQ~$&BP5&Rn=r-a2 diff --git a/doc/src/Eqs/fix_gcmc2.tex b/doc/src/Eqs/fix_gcmc2.tex deleted file mode 100644 index fc4d90355d..0000000000 --- a/doc/src/Eqs/fix_gcmc2.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} -\mu^{id} &=& k T \ln{\rho \Lambda^3} \\ -&=& k T \ln{\frac{\phi P \Lambda^3}{k T}} -\end{eqnarray*} - -\end{document} \ No newline at end of file diff --git a/doc/src/Eqs/fix_gcmc3.jpg b/doc/src/Eqs/fix_gcmc3.jpg deleted file mode 100644 index e87764afd9181dd6c4707c0a33b0a80abd2170d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7437 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 diff --git a/doc/src/Eqs/fix_gld1.tex b/doc/src/Eqs/fix_gld1.tex deleted file mode 100644 index baa0f32a5b..0000000000 --- a/doc/src/Eqs/fix_gld1.tex +++ /dev/null @@ -1,13 +0,0 @@ -\documentclass[12pt]{article} - -\usepackage{amsmath} - -\begin{document} - -\begin{align*} - &{\bf F}_{j}(t) = {\bf F}^C_j(t)-\int \limits_{0}^{t} \Gamma_j(t-s) {\bf v}_j(s)~\text{d}s + {\bf F}^R_j(t) \\ - &\Gamma_j(t-s) = \sum \limits_{k=1}^{N_k} \frac{c_k}{\tau_k} e^{-(t-s)/\tau_k} \\ - &\langle{\bf F}^R_j(t),{\bf F}^R_j(s)\rangle = \text{k$_\text{B}$T} ~\Gamma_j(t-s) -\end{align*} - -\end{document} diff --git a/doc/src/Eqs/fix_grem.jpg b/doc/src/Eqs/fix_grem.jpg deleted file mode 100644 index 666b4344a6343e1aafefd29b85f5803ab2eac0ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6224 zcmYjV2QVC5*IuGz2|VlAsii59)@ zE)o&F*C6=3?|k$9|Cuvq?#w;+JTtdE=bm#pefa}G2hx112_PW>kO-3q0|1uF94UGBGjTxOw{y zGvgfwMkdC~HURZ?fE39X2?;&mvJ=1xAOT#(y8`*2P+q41l9G{MBe|N^r2~*$VUb=z zQBqJ*U-^(+jRE8ol=KYOIf1vt8C4BKZ*xgl!`y57$cmGB)J&T-4E zej9_5sQbR0H^|f67cn3px#jJudC$(x6=#ldtHuJyN1>l%6DE6U_*67d)wSZ z00d4&Uzs!`f9x7oZuJ^p_nyvd)KKaw?~(^>OO!~cuB_{R+w#I31c#~ga84B2Vvnfw zW|6Q**_*VN0LRETSnVf`Zzt&=NJR~{&kljcjZ_E{X}Hv2hQ6@L2cw zQO|?Cq4?>BT}cPIBR|xHT{VvQ;$>>VF)@BmM4-LWSDJ@tail85-}4(+g0(0}ql+#m zr?p067y1Q&Ky}9rhNM4gq50BLZ6G=KO((N9FvekraP!`uFI zhS%`>^HHDq8sp}W`QYgMF@&Lf_h*Q(vtY2+M*ZY%U(WHtw6qeB<`2n=i(*{oZo2Kp z1s*IufN&$xl6g-8O{vf{EuUk*eTl6$!mC*j&!RaSd)<1tMjwV?ZS+xI3&;)PJS`j7 z^hvbwjf%o&p{#$OfS#2%_Q!ptWp3LiGwLaM3L&Zzc~Gj&R`)^Ax4dOYHML;TuUlm2 z_I|W|C~=W!96a64^rZi<4vR>I!s`Pp#nP$?c>o z5PCK9lq0;FjNYI!e$8Z?WxT8|Zh0&X-Yc?8KE~GClv*&qsbMMiFroLT(BzO6K>Na^ zEi2VKtCV(ih}r%mVBpaEtwiRe9UNXP+7fo(et^kphz2;nfgT=7eth^a{-TF4wzdv# ziNV>8e=4~dpjhl}ijUd41la3z^uD|VEa7G$+muR@cMv+Gd(j_BA?Ch8YWE2Z3EeAn zsFawumjI^X!5P6A;1TEn6?OWR2BB}6{B7sXGAUm(wi~LjkkV2@es}-{|1>`j6x#2J8MhpuVRsp%o_CUwUqcr zc2s&c=Y4(mnVmVN1$=8`!I)hB5-F{~qi4}$+b=%8OI1|= zbCFEQ?AjP8!)bie=hY2Vp=4mOpj^m)Tegz41| zNW6GYpWOP@!Oh4*2f%Yhn%)2t_uX6LZuxo%UTmJOQNM{V-%DN#T9ZH`O|f$<7O@ut zuh^KOZU=rNb%Og9%=U{OJoC0Zh!^5P7FtUk!l*0@|9?qm5*5$pC>SJ%{`kt7ZAAIR z+hd`A099#>SHHn?-fx^PeMUHoba|+^vx4^vd1Y3s6sN;m^9Yki(Uyx$o>n1#+&SDf z_?GfI+w;Rdh_z-0{mdafFIxvB!q?jMR%@^X5w?{j*pV}1@5oE_tm)(7Vs4kuK6jTE zV_9(Us#T)0Nfi!U>JU?Yx8D1c4SwvU%OybI&9@V_l}KrAiybStuuh!zxfVm+Nw5Y* z1+zj>WZJ8v{t3)au33-R@t#4%lw&7(?hC2ndk4-h*re_y!sk%caq|ER4&!c9%#j==JkI95$^Q*ZLx33!lm$F8BBKC-(MqW0!^pZc5Nj8JFa=M)s zo4tPZ0})c#?8LL!1%hyG2xL8$?_~t3zUK;%O*CbFlCykFLLo>=RLxD67@^UGcjz`^ z$dRoAF)ZBdEmx^p_=t#{~5=UZ?o9?qp)6UUIjBLsPAR_;r=SN$8IwhX32kM2?M*-pZS3k`+ zlWi$s8BAGD2)Nfozas`c12{p1jn4AOqW#^r%3kG}dv&Oc#8L7$N+VsdO+n;+7O(Xg zbC>g_7uwiPY}GIl$aqi<8Xf2PreSHtFj3qR zbYda0#2*p<3qr&Y4Nsnl4GgZm)TF7KUtA*Ugcb#q0HN)^$Hc6!Ou@>D@(Je%YgFr1 zPVO_dz#6SYCbmJy+S9%2jRGD!RBBnZwKi`kF9BmZlAvclJQ3cDmJW z+@y~#`lGD$p3r@V+2T!rCxE6^v)>V>a>`@c_%D$`k!#Yfs+BE5lhhDC`*+EGZP2K~ zT-}d0nsCEp`|^t6$laN#u$$uwsiCWLpB+Xi4d<&jB#(d2pHP)3KfwJeLk4BeeUnsV zx!?8DPI5Ym2VY}C z%Qj9uo{Dcj`9P7m2xZEbc1H3k|4g-({^}boaTcc^GkzD0WcTe(;*5}3XzB{1c7j|$ zAzAHerN1Ce{-~)>p2nxut7CT&?1H)ow)&oa(WKeV%7H#1JB3atmmq&&XJqYyUoMsQ zk`H%m>B_1edpLfk$D($~&Jp~TGa-KFMB=4AdvnLFiWKt%QxmEv(FFQ)p^T^V!Kg1SKDT$Bu zhwmJCf7?#_xa1BoIx+uB#OL5{zA5&GkE3ezy5H$%()prS6Gx_@;^pV9#mPRDR~>u6iJa=WQ-vIMMK`$C?(4(+V7>Av z&tp}h4QS&IkQ0}H(z(3qja4mWZhGW>-oYh+Ak?~fCfqKv(!{djNrg15mA1c%=~l(Gos-y3>zICiP<+*I`JogAPNU;hmC^n5 zFM=mk1SUq`8ojjavL^?S>D4F1F+TMKMz+mda$%0*;QT&t+Riz>@>;7wg&_=Cd^8RS80UZ89Zg8Bls={eN)rp;YK?4zI$VUqFQ&`7%=EBMxBPYU zXDV%f>KzFwmTaP}-oxus3rGHxSPQWGm8$;uQj`EaaF!WFqwVdV`aLt2U!B#HyxV-T z6(p+d%ihdX4V|dV3m)bBCUmC;u`KdGAkesH6G~sb7s`za={J|a+E@=$~TNE zm6=K2t`YEmUn2W!urBKR4NpFg`%-Xiy%mSpu&bn3N5~o~c@!BOKKb>`X3}k5MkQK* z$A4PI1v+rHw7j#Ptf;hc9cujOy*ZXL_;h7?XKh3+mZKeUS5$t_93~RYZf+4f4a21d zBzte^R|KyARDKg+dG{7C4$0LG)0bZx>{Vls0V9Zj2bjp8k`$U1&T}|t*w?h&^@vEV z1j{W_bdP1af%5%p&u-T9li=&#LF;z;_^jlohbwNsK6}D!+&?xtUrN?+ZD>(h0CDHx z&Wkx`M*vv}06^PDg?>)4nBe>X>%~-ZEV*f9l2~-FPNbvZy=(mU+`{g)NDsAfN;`hH zb-hXnla*!YbIB#?q>Vj~jO41bscW6jV%DpZ+b#b@5d-yT&Z&%c$|?-!4O7OPR=16o zK5uAtZ6Sn$!))Y({}jLP5F{Rc&TSU6J75%fHu#oQ`n1yWs?6O7g_fTg9ufrF_wG)X zDaS6I_;W{`_$YY%;JP0MW;$eS;0z%3&DN%L51_A>dZ;SS>fMeT{O&a*H~cnv<^8$@ zA)abh;@(_{rG;um?5wt#It>zg+PF8rRgvbH?FJv(J$5x!ls*aXc@ilmGDG?0WL+Di z{lnGL;$x%@;fg zEPsgB6`#;$AO7zB^;PGNf^9~13cTL-mIv^Qoi1`ujhMtG8#V$yh7bdDHW(O~AI}vv zvyA>k-zg~boYI&Vof1lI92i|HR0pO==%Bleqe3}rN!7sdgT30bAcf+|R;K>chCtaF zu}t_}5G>8Y1(ri|JnQ7k+Wae11o5FP9)|6%waEJ#Gi@&nN$l4}JjvxCLnM+mK6-la zTW4H_Ny)IWf@DQjnw9oje`a8G0W)eN7|W|NZ))>zwO*zI{XkK(&V;=)HXxJ2&fe)k zNpyJF`y{pSne0ox1Km1paCk^LU3^~*$k-rKI3rX0P0HQjS;a3ued9<-`(0j3hj@!B zwwmA;LhgSup9MkYimI-?RLstQ<1gK^;%yhwW27s3=w@M<9T0S*Pp>~=p^jxE-2k63 zdqk19ee>-@quR!zl@AY!fA!T6t5@ALvD!y}_C`b*QY}@cR3JujS=jlo`R8w7R+B^{7vjpDW7Rk|=XmbEncXk9nHf^AMH$c zdv0Y*9abpxy>S+((`lGvtJmoPAMkd#WxiI^329*_1&?a>f)Gu#hi;E73@cB)TqC)L zLTu&MM=ilj?Cj#I2>_x%``N&eaya6lddn4nOgfkqaiQozmNPiDrl;kbpy?}*a;!x2wXBpi_HSVk zOy)|aPfga{3We_prXE;Gj!8aUbJb|C1;zT8&%@a{j{5NDPn8f&IdkQPgj?ers`;2_Wb3ZO=h*QEszyL-KU#5~_cleaR z+UPnsx7Ipg>7O-rRwt8bBflF(uxePW_qZP&fa%cZ+h)EEl(?f7{Cx81L#g<0YgDYg z+9khk^$VX&K62@SpS{2BEYcg%`%YS-L3-bbB~0a1=_`>n<}>tPru^5WSrUdfK5HIs zKO7H~iHEhA?c2|Ia&*!Lkw$zT#+h~&^O`vR(`*GEmV`eZw?aN*>-F$AqNl0)E*SGe zt?yTb1f2{=0<~*+`=I|&>{|VnBo#AXEL diff --git a/doc/src/Eqs/fix_grem.tex b/doc/src/Eqs/fix_grem.tex deleted file mode 100644 index c00ea696a3..0000000000 --- a/doc/src/Eqs/fix_grem.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - T_{eff} = \lambda + \eta (H - H_0) -$$ - -\end{document} \ No newline at end of file diff --git a/doc/src/Eqs/fix_integration_spin_stdecomposition.tex b/doc/src/Eqs/fix_integration_spin_stdecomposition.tex deleted file mode 100644 index 8c7baf296d..0000000000 --- a/doc/src/Eqs/fix_integration_spin_stdecomposition.tex +++ /dev/null @@ -1,40 +0,0 @@ -\documentclass[preview]{standalone} -\usepackage{varwidth} -\usepackage[utf8x]{inputenc} -\usepackage{amsmath,amssymb,amsthm,bm,tikz} -\usetikzlibrary{automata,arrows,shapes,snakes} -\begin{document} -\begin{varwidth}{50in} -\begin{tikzpicture} - -%Global -\node (v1) at (0,6.0) [draw,thick,minimum width=0.2cm,minimum height=0.2cm] { $\bm{v} \leftarrow \bm{v}+L_v.\Delta t/2$ }; -\node (s1) at (0,4.5) [draw,thick,minimum width=0.2cm,minimum height=0.2cm] { $\bm{s} \leftarrow \bm{s}+L_s.\Delta t/2$ }; -\node (r) at (0,3.0) [draw,thick,minimum width=0.2cm,minimum height=0.2cm] { $\bm{r} \leftarrow \bm{r}+L_r.\Delta t$ }; -\node (s2) at (0,1.5) [draw,thick,minimum width=0.2cm,minimum height=0.2cm] { $\bm{s} \leftarrow \bm{s}+L_s.\Delta t/2$ }; -\node (v2) at (0,0.0) [draw,thick,minimum width=0.2cm,minimum height=0.2cm] { $\bm{v} \leftarrow \bm{v}+L_v.\Delta t/2$ }; - -\draw[line width=2pt, ->] (v1) -- (s1); -\draw[line width=2pt, ->] (s1) -- (r); -\draw[line width=2pt, ->] (r) -- (s2); -\draw[line width=2pt, ->] (s2) -- (v2); - -%Spin -\node (s01) at (6,6.0) [draw,thick,minimum width=0.2cm,minimum height=0.2cm] {$\bm{s}_0 \leftarrow \bm{s}_0+L_{s_0}.\Delta t/4$ }; -\node (sN1) at (6,4.5) [draw,thick,minimum width=0.2cm,minimum height=0.2cm] {$\bm{s}_{\rm N-1}\leftarrow\bm{s}_{\rm N-1}+L_{s_{\rm N-1}}.\Delta t/4$}; -\node (sN) at (6,3.0) [draw,thick,minimum width=0.2cm,minimum height=0.2cm] {$\bm{s}_{\rm N} \leftarrow \bm{s}_{\rm N}+L_{s_{\rm N}}.\Delta t/2$ }; -\node (sN2) at (6,1.5) [draw,thick,minimum width=0.2cm,minimum height=0.2cm] {$\bm{s}_{\rm N-1}\leftarrow\bm{s}_{\rm N-1}+L_{s_{\rm N-1}}.\Delta t/4$}; -\node (s02) at (6,0.0) [draw,thick,minimum width=0.2cm,minimum height=0.2cm] {$\bm{s}_0 \leftarrow \bm{s}_0+L_{s_0}.\Delta t/4$ }; - -\draw[line width=2pt,dashed, ->] (s01) -- (sN1); -\draw[line width=2pt, ->] (sN1) -- (sN); -\draw[line width=2pt, ->] (sN) -- (sN2); -\draw[line width=2pt,dashed, ->] (sN2) -- (s02); - -%from Global to Spin -\draw[line width=2pt, dashed, ->] (s1) -- (s01.west); -\draw[line width=2pt, dashed, ->] (s1) -- (s02.west); - -\end{tikzpicture} -\end{varwidth} -\end{document} diff --git a/doc/src/Eqs/fix_lb_fluid_boltzmann.jpg b/doc/src/Eqs/fix_lb_fluid_boltzmann.jpg deleted file mode 100644 index 9d82b40ecb009745f6b984f5092b42008a057380..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4643 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 S&K9{}5&u8l7yqaE8vidi4d*NX diff --git a/doc/src/Eqs/fix_lb_fluid_boltzmann.tex b/doc/src/Eqs/fix_lb_fluid_boltzmann.tex deleted file mode 100755 index 4a6ca6fe01..0000000000 --- a/doc/src/Eqs/fix_lb_fluid_boltzmann.tex +++ /dev/null @@ -1,14 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ -\left(\partial_t + e_{i\alpha}\partial_{\alpha}\right)f_i = -\frac{1}{\tau}\left(f_i - f_i^{eq}\right) + W_i -$$ - - -\end{document} - - - - diff --git a/doc/src/Eqs/fix_lb_fluid_fluidforce.jpg b/doc/src/Eqs/fix_lb_fluid_fluidforce.jpg deleted file mode 100644 index d3149616ca83c41015e7a5f4ad6d58aef98f8c2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2358 zcma)8Ydq5p8~!uPCSh9?EuL%+BMQ+;h{(pO&CF?3R8L`(V+U3$hjN_RR6C?)!J$_m}&3UD6NIQ9uRffOP<5WMlxx z^#Y`WfE@q^$;ruq!0QACgEz=4Lgd$>ym2E`5vB}>!<1n#gc@=SVzY)S47PR0R*mi3 zwY0PlTeQ*InrNh^mZnqyY=i(-z>J&r3Ry&vtU;pZ&sgKRWqR6;Yz(pCZnU)VpjIe zwNpt6?Z3`2sCpcP(B9@6_h!Lg62p-@u_Ifa=awKgy_D)!#an>!+G**$%4BoRxk#jqqprwr`HUQ z*jONOAF8DnuiExOjb5^f80uGqPfDmhpLgdcB@3det?3b(IWxmv8~^eYAFHaXin?== zClbZ(P?G|e{J61rv9OsVOLVK7JR0vZzON$ThYGdJV5j*3RJ9Y~9u!M{+YE<7<;Fp1 z<>8aX$_KR-uPEC`penfR@^~ChL{Qf!U@_>+`_REn=9%1u)X1m#lvFNi(2j~ZM~U7T z7;Q=}W9*iHoiIJZu9N~)4YMD9Qeec3e+Uo9i_u}rCvlX-6pl7JtP*)S{ku#2o%U6b z+xxz;t-;j2!@(FG{o&+Rq~hwi`l$b8`ESTM(DXFCM5{mPTFAYz(`v1di56H@ZFL?? zHl&JC{?fK0^Vn$Vc+IY|HlpOQz6p58Nd<=3cBpj@)688XiXe+85D5>z#d7&mPQiQ1 zTGcgg&~Qm?t&zAM>pMUCj&r*b>Srr5y>(_D#EO&(YlXW6B=v4n?+=$S`7C`Md#s#d z(loN)%yIVMb=Ot<-Y2Tn&L0(mI7y1yVv@Qq(Hdy%!B@pPemL<-W4$-vS8Q%Tp-I4S+ovPYSU6zX(?j2q!`Xx9W5IVix{CVzj)Ubyx zDUSP3T3K}64oXsCG1jOpoGmMsWgHK<{MDk|@)qm%d~QxRsp0(UKCfE!FPpEwAjuD- ze%wF0N*;07YxBdusA*wLcxc?5)_9{u^&$;dWc%mCf=M|Q1{s)Hgp=4ImE$G z{w&Vk(l}?#88CmHe6huY3=Gls$W%n9xMP8XI(R>rg4x0}?`~J`>kr2So)r1*)l~)e7w;mF9tmxRWzS^ID z+W2DF&9#P%_qEEZ9dN%2Lge5)9%5R(oho)kz{fJ3sL4eKot{*+q2z7#oamCn)bvBW zYQ151H3pzPm5T(@mtfvLc64rbqU|4z8RrGRP2(J$rYCg+n+^+voxqGN=$E&hf!*Zxw0TaUW>Q7TJ)p7&(7=q-|uB<@*G zofWY>U1(al^tkk;`DwwvMz{SlyBxU-_+_=?#(}KhfakAwaq_c^Kw5p(;LadQ3;BWwO>IDL#AQ<}B@_|Z_|Xh|uaO*i{U znL9f*t+}RrT;$_o7^2__j`Qd^!By4Q|EZT_me#6nI;`GHSSoT3o8;65wzB%GP0wLA z#gx3ibwSMWYd7fD%WT@89yO=R!xx0%O~5N!p}pdX7#)7o4-Tt=qnuv;(33GsOZD@* zkXp^Ym=dgTwQe0)2jm+JPu za`={T%YbU2T%B)=oiB{t;T0;}KmLil{kS)JZ;)5_1D~7-=Y_^5=FfVqi=yr%i`x}3 zpzpTdzlPd93{hNi&@H1ZIn8QQ?u2C&mi^P>7WvWT?K_6T{nPwc$r!X;%(P`zj^q)^ z&G+_L(W6mbLC8ezq*5`HRCqmf|6q#6IFgi%!Ii#xn^xpc@}75#EPSV)l^7Ec*;Uwj zdWpLY$F!Ii<&Y3rK}1$agoL~9W`>)KzfA7YV7@rcS7XQ2Md#HUDBvpTw$XpAs%$!2 z=He@Su<2tcil=S%(Ws%fSi$ZN3XIl-pn9GO&%(ydw^vukF;ueW49S3?gN4A z{MchA?p*;JbL1=5>Ji^xJ0hp{DXqaFI<;zolIazMug%-p2DVunb=OK#g+sfboxVLH uf1?C@;YGG?xNvF=dEXcdrUlyA!T~@B>L>uNGO+}7*Z&h8ex(aH>A=6NUQ{0d diff --git a/doc/src/Eqs/fix_lb_fluid_fluidforce.tex b/doc/src/Eqs/fix_lb_fluid_fluidforce.tex deleted file mode 100755 index 8433c9264a..0000000000 --- a/doc/src/Eqs/fix_lb_fluid_fluidforce.tex +++ /dev/null @@ -1,14 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ -{\bf F}_{j \alpha} = \gamma \left({\bf v}_n - {\bf u}_f \right) \zeta_{j\alpha} -$$ - - -\end{document} - - - - diff --git a/doc/src/Eqs/fix_lb_fluid_gammadefault.jpg b/doc/src/Eqs/fix_lb_fluid_gammadefault.jpg deleted file mode 100644 index cd10239c9b366fcd33c079aaa7e0ad1c4ea0e829..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4793 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 auTi#){XYQvl?&nk diff --git a/doc/src/Eqs/fix_lb_fluid_navierstokes.tex b/doc/src/Eqs/fix_lb_fluid_navierstokes.tex deleted file mode 100755 index 41ca4674e9..0000000000 --- a/doc/src/Eqs/fix_lb_fluid_navierstokes.tex +++ /dev/null @@ -1,16 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ -\partial_t \rho + \partial_{\beta}\left(\rho u_{\beta}\right)= 0 -$$ -$$ -\partial_t\left(\rho u_{\alpha}\right) + \partial_{\beta}\left(\rho u_{\alpha} u_{\beta}\right) = \partial_{\beta}\sigma_{\alpha \beta} + F_{\alpha} + \partial_{\beta}\left(\eta_{\alpha \beta \gamma \nu}\partial_{\gamma} u_{\nu}\right) -$$ - -\end{document} - - - - diff --git a/doc/src/Eqs/fix_lb_fluid_properties.jpg b/doc/src/Eqs/fix_lb_fluid_properties.jpg deleted file mode 100644 index 3d70cd7667461b8f4f8c96c5d271ad2662e88bb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3471 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 aPMXYX5pnj&dy|I(od188|2>L4p#K+iwsT4V diff --git a/doc/src/Eqs/fix_lb_fluid_properties.tex b/doc/src/Eqs/fix_lb_fluid_properties.tex deleted file mode 100755 index fe1290be12..0000000000 --- a/doc/src/Eqs/fix_lb_fluid_properties.tex +++ /dev/null @@ -1,17 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ -\rho = \displaystyle\sum\limits_{i} f_i -$$ -$$ -\rho u_{\alpha} = \displaystyle\sum\limits_{i} f_i e_{i\alpha} -$$ - - -\end{document} - - - - diff --git a/doc/src/Eqs/fix_lb_fluid_stress.jpg b/doc/src/Eqs/fix_lb_fluid_stress.jpg deleted file mode 100644 index 8f730e9d70d773ed72f3e8814e22e776908edda0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2530 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 YM16@nD2&oS`O5$1t^S|KSpH7`8;@LJDgXcg diff --git a/doc/src/Eqs/fix_mvv_dpd.tex b/doc/src/Eqs/fix_mvv_dpd.tex deleted file mode 100644 index 685d527763..0000000000 --- a/doc/src/Eqs/fix_mvv_dpd.tex +++ /dev/null @@ -1,21 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - v(t+\frac{\Delta t}{2}) = v(t) + \frac{\Delta t}{2}\cdot a(t), -$$ - -$$ - r(t+\Delta t) = r(t) + \Delta t\cdot v(t+\frac{\Delta t}{2}), -$$ - -$$ - a(t+\Delta t) = \frac{1}{m}\cdot F\left[ r(t+\Delta t), v(t) +\lambda \cdot \Delta t\cdot a(t)\right], -$$ - -$$ - v(t+\Delta t) = v(t+\frac{\Delta t}{2}) + \frac{\Delta t}{2}\cdot a(t+\Delta t) -$$ - -\end{document} diff --git a/doc/src/Eqs/fix_nh1.jpg b/doc/src/Eqs/fix_nh1.jpg deleted file mode 100644 index af07ea3a4b3a197d6b415937d1325a7c2a5a4a00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68243 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 M|Lj@p`)Brl01@tV+W-In diff --git a/doc/src/Eqs/fix_nh1.tex b/doc/src/Eqs/fix_nh1.tex deleted file mode 100644 index 3e780f2772..0000000000 --- a/doc/src/Eqs/fix_nh1.tex +++ /dev/null @@ -1,36 +0,0 @@ -\documentclass[24pt]{article} - -\pagestyle{empty} -\Huge - -\begin{document} - -\mathchardef\mhyphen="2D - -% The imaginary unit -\providecommand*{\iu}% - {\ensuremath{{\rm i}}} - - -\begin{eqnarray*} -\exp \left(\iu{} L \Delta t \right) &=&Ê -\exp \left(\iu{} L_{\rm T\mhyphen baro} \frac{\Delta t}{2} \right) -\exp \left(\iu{} L_{\rm T\mhyphen part} \frac{\Delta t}{2} \right) -\exp \left(\iu{} L_{\epsilon , 2} \frac{\Delta t}{2} \right) -\exp \left(\iu{} L_{2}^{(2)} \frac{\Delta t}{2} \right) \\ -&&\times \left[ -\exp \left(\iu{} L_{2}^{(1)} \frac{\Delta t}{2n} \right) -\exp \left(\iu{} L_{\epsilon , 1} \frac{\Delta t}{2n} \right) -\exp \left(\iu{} L_1 \frac{\Delta t}{n} \right) -\exp \left(\iu{} L_{\epsilon , 1} \frac{\Delta t}{2n} \right) -\exp \left(\iu{} L_{2}^{(1)} \frac{\Delta t}{2n} \right) -\right]^n \\ -&&\times -\exp \left(\iu{} L_{2}^{(2)} \frac{\Delta t}{2} \right) -\exp \left(\iu{} L_{\epsilon , 2} \frac{\Delta t}{2} \right) -\exp \left(\iu{} L_{\rm T\mhyphen part} \frac{\Delta t}{2} \right) -\exp \left(\iu{} L_{\rm T\mhyphen baro} \frac{\Delta t}{2} \right) \\ -&&+ \mathcal{O} \left(\Delta t^3 \right) -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_nphug.jpg b/doc/src/Eqs/fix_nphug.jpg deleted file mode 100644 index a3a67e7b7bebc1e987f0cc415288967337770f2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7506 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 diff --git a/doc/src/Eqs/fix_orient_fcc.tex b/doc/src/Eqs/fix_orient_fcc.tex deleted file mode 100644 index 5596848eb5..0000000000 --- a/doc/src/Eqs/fix_orient_fcc.tex +++ /dev/null @@ -1,30 +0,0 @@ -\newcommand{\br}{\mathbf{r}} - -\documentclass[12pt]{article} - -\begin{document} - -\begin{equation} - \xi_{i} = \sum_{j=1}^{12} \left| \br_{j} - \br_{j}^{\rm I} \right| -\end{equation} - -\begin{equation} - \xi_{\rm IJ} = \sum_{j=1}^{12} \left| \br_{j}^{\rm J} - \br_{j}^{\rm I} \right| -\end{equation} - -\begin{eqnarray} - \xi_{\rm low} &=& {\rm cutlo} \, \xi_{\rm IJ} \\ - \xi_{\rm high} &=& {\rm cuthi} \, \xi_{\rm IJ} -\end{eqnarray} - -\begin{eqnarray} - \omega_{i} &=& \frac{\pi}{2} - \frac{\xi_{i} - \xi_{\rm low}}{\xi_{\rm high} - \xi_{\rm low}} \\ - \mbox{\hspace*{72pt}} \nonumber \\ - u_{i} &=& 0 \mbox{\hspace{84pt} for } \xi_{i} < \xi_{\rm low} \nonumber \\ - &=& {\rm dE}\,\frac{1 - \cos(2 \omega_{i})}{2} - \mbox{\hspace{10pt} for } \xi_{\rm low} < \xi_{i} < \xi_{\rm high} \\ - &=& {\rm dE} \mbox{\hspace{80pt} for } \xi_{\rm high} < \xi_{i} - \nonumber -\end{eqnarray} -\end{document} diff --git a/doc/src/Eqs/fix_pimd.jpg b/doc/src/Eqs/fix_pimd.jpg deleted file mode 100644 index b6e8f5831b56a76003f81b74529d14e87405f8e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14569 zcmch-2T)Ycw=OzJ(jQ4c;s8TZRFdSJM3Nw=C}Bv-kOvutG{6u9l*|kR0+J<(NS2(D zG~}Ea7;?@zb2;aochCQxdtTM8x>axOs$FZR?%mz1*Xr-8((ak=-MwrlO&trlO{%rDtKFeZWjdP0h%` z$jr(L0)c25IJr65xLMdhY&VSnvb%sYf>r_oYQRkkfCWGRAiS;Owvzu>Zi^)%yhCvJ z_NnfD00Ge*0>V3Yh>7prqar4_eftg}5ivChDGdj$5U0}J2Xt>f(sK#J{TM`^>zTV^ zVn?{eCEmuQr5Bg#zI(6l;LxzBq%tHr<7N_Y_uuML09<#y_&*Ud;W~`! znkCYp?aqo6R_O;a%4aFTrRHJxnN5qcUu-^zr86;F1}F+jvUHlAR22pc@Y!OPrnuV` zcY#ws(>ecpDL6>64wx%j)r@z=Dsb8BW}7B!@b$=M6(FFHa0U=LoCgdlee9q%qAi7e zwj!9E(JpjYGv24?^`d7gMG>mFH38?QfZFYV-^kfyL%Ba-{O0~VE9)7b36@v7WJu@a z!>>uDMn@d-#LN`zPw5VdLXT5}J3cniA767d_?FnMwZN(Ou6cqRo4}B^0sll9?=qH8 zAI1)!s2Hyp_t7>(2a4l@*iQ?MP?!28-~3G(87FJ1SZY6IXi| zN^burWD2O90$#3oAu4H~>m^9@qJz-5e>upu`2}oIt-UbQl!?^X@`>5=yF8`9vtKLU zTd<(YTCvuQJ&LDXe%6~#+Okf1t18c15ZeQ>ck`IOgTTXO9ndaDb$D>)rwsf{59>o2>S3{AS)aGIlz{H2CIg+HfU#q~E z>)XhZc!`m?eu-qYt;kWaEi(A5F3y$0#S(FFV7t%oy!rZ@t_)B6x#8b&?Gly(pc}L7 z$=GkgMTh#Gi0otH%BLr?OW!18pVlP`Y1&P1ycxj04KmHD5eE5-?=&8BSDr$_8pnn= z0EI-6l=VXGQy*~5;|$bcZQ$P=i%#arVhqp(H=2AeD@?nea;%6;vz{`0QA*ypk+@=U`bqjmSDF;*7vqv1xtnqDUQ% z*gpDbZ;I)ESYT0y{czt0gn49DD4r_Z`!_Tf;Wh1gxNsr(@v*-Pk7mQ{4j;?hsS) z8FP0rVer6~<4o|GB$9fc{p%FnxiCHvMAx}fMaX=XTdo(+1+ADgp57$PNcTQWKihfS z=2#DkT4D+i9R8&;bKEks(mtnQHMGIGEi zKKg##1S$s{$E~3p$7~&URoi#NQkROav}847KL}O66zNacR(Oi5$wJ{Xm7<=FJ#QQ< z%dTszY4$?R{gHO8jZU7KI}wSKv;whyERMH*A1%cj-VHp>RCrG!S4v8DM!#=WG9iBUrn!gI8QZ98D^Cf02Fvu0)bj^RC=v!srKQr`k!(W;lx%lR8S~0{`6iOX zItJ_6eY2nB%UB%ZuX$@U1}^`}JA_>f)ZGB2L>f-Y%AEf*0vTw#jiexkLx9~yNwGoy zEF3ErpAPuf2u_KEmFTU6+Lq7xxMstXD=)R#di1?uT`QGVN2`F>D ze3@VN0j({WVewh2hhWEpn}WW?%(LMaUkce1hr@E-1KDGF9?Xl<;piFoXDAg*h4ay)7!|b5+j9rPz(;n-@h{$QN}UP0M5? z*nr0^_&x~mv;Lv*o2|=k+)oz@@9P`OYv4&l;{%!C2A5X!8XGl3-Vk#Q0l7u@kXf-z zu|>&id#H7(-nlnc#N^RNg+ix=5EEYza=5kBeA>N zV(8^6d21cI2ZooK)MGV{a;<}HjfAQpTg((T7A!xN5R;+@LsnY zFKW49g?nL7Kf~mk>Bm?#m0vS!N2`AnI9jS^{fY~AzI4DTIe6~09tH&WeT?P78kBY{ zT3wiMZy&Oj`pL)7uO&2)8AS$uoYcwXLfa(-3o!KuE|>9RPODcA({vwd3;F76Gt zya6PA6XyUS6W7&uLVi@>`}{L}!iyG(+4N)j=Jv;HXAqHw9eu>>G)<7NEy8!3as6Yq z;cUzr!2K+Eol@66d5Yp*w`L}GpzA80DfZirM7UG%=F5q|^pJ4*A4G9+jD3DZR6Af2 z?Q3WMy-E7@mTr`f)RKK!GEehcDSlE`xf&ZUA z{tmD;p6UHW(BIi5EL$WjqS`RaMQzbfHazcIa{TlJ#LGy!CR^N1l=`>O7meLD2@cM6 zasT>~taDVVeH8il}LuK>Y zQmg88A`hmH%dUG3@}a~HNnwLbXxb8geQ%3RN$)>H*sZ4WdRb1X1#aI}Y{+cL^Aa9q z7HBYw)0HYDr~8hm&_1D_VkC-L8ju%r4n4#Jm7k7=*9APhObJ$)*5h{h6M^;_ldbT5 z)?e_irt|-s-oQ3H%D}oxk$gwzkjnLa{;)QWdBoK2boKf-o>;Qzt2i4qQ*~4(6&(F) zll=tNI51P1Pq!S{0+JS9V49d zSva9P{{Lu9rHEm;1M|~;3;ST75*c2_My%X^=Z=+71aYtYJ!v)o_v#%rPxNAy-8h?6 zbT3XiAC<#jRl6}8@pbzK@Qhbr&5U^|R+>7zQ43y~<1ETu;1Hn zRD8Hi!S3$J431-M8EV|SbR%OKE02}Ve9s$HQ`ICn&e*Thy-LMfNA0-(kMPnnDRK*j zO~`VEo&i^d@wHn`O49(B!nZ*;h5IF=bC9^)Br9!^2d=;2>*XJMrbESFbXo3^w7w1m zuj-6zS|BEON}m_9GEET98f<_>3eg{JSIsYVLeCOa%Y}dHj>Ke zzX!;@)s{lbRW)_0f93=fhGWq{^eNwO?6HQ0uYh&Y>J6Z(Ea8d=rc`YH&%k-?BNRQ% zWKdERb`(S035A>Ld`TrstN{1QH)~pdt>}KP7pVjdW4UKbvj`8+Q6!aKNNG#)GSS6T z;+?`jCk#nm;(u04q$bY8uW9Q3YxnXUC{WbcH0{JeY?{h5;(;Z+Ymf_Q<5I-T+nmBQ+8GyZdh!}F`(6ZJxYIjvG`(pF$BzU>7EN?*#rWV!XMkJyVF79WHj zCrDIg3JJd+Iz83|Ht71V8&>E_;UCV|u7u7$p4$`uy{`$&Ax@-U4FAgop*o!$W!-6K zRuGid@2@2v+`lSwfplmSUqX2J)}rK_&1=(&9{E(D@5|Q}$bPW$)8bpT<(GJm;Ev z;eAJ2(yD9+LSMNvvgS1k(35VZ7IzZUHhNE7Hs-y5w-`I7Q0xbyP^6wGQjxl%t^Om7 zciscy&(I?>#R4y_+JX1m5L!f^JiP%BEghbHy(jp(Z7FBWCS*^;vm$efx{KD*0+SrM z94l9I%rDPEKqQzHB!Ydn{Cdx3)lvY5$k^!8YsjI{F?b0%GN~)2CQ5NpJVg{NZ+GTK zYxLGxpNpR2vv5e6tyj}i4ZvZajfLTr8^Df$$PECRdIR`mFni>E_sa3Fpv@8CJ^t;n zWY|(!jQ69y9RE2N)&|uZfJF0XqS`5m&(6s9z;@Xe1H@o%)&!eQcvhdgW~y$|Ui4Au z+eQT`t4ApdRQtjEV9LK!iJMCvtNPNuZ>7zGmr5W@Y34&LUH7ZL<{ueonl8hpzxXR1 zEd1U7rXurkbakjVC%m80?~H+PPE+LsQzaquC?Vrn)N0oIo}e zq5B+&hK3D7zr`!u{x0&Egp zm1?Z5*zo2#sVvXpz`!z`nh3`bcvQl{+iBrvSw2vnP>~Jr)~wo$2F%|w_7I&6>PvcwEklfcOI_SKz^ycO@#kHJ@QeMLX?RUww&r!$B!k{ zOxY|V8gBpt9yb8t(Fc#rq8H!@leazgxG2#(Ci?fBx_x}(9%$Pt1YSOsAY7IV_RxRL z?JfV}#bw|VMkZ`wrQfj$$))0RP3=i988xu<0MQzwSBzJ_LjDM95q?6yJ|YEGfSl2k z6^t$9^ChmmziN$`l?}=01tmhPWANA6Qk(8qbv%fs>v&Ew2aEi zKbANVb?e+aZISh#&0FV%yij2G3(Z<`O*if%FcPaV%*X;tBj8>{ zlx%T3-G8iY%{h9R3mnK;<->=(-lk zdQv#KtW zVEh53XJ82OKMM5rdFf=F;9&_7{}A3OYLy&ae`%0K zaXwU)4i&}_van!3H4nR=@Z3&qFat~TaO2!l^T(ceyG3^)b=MC&Y( zoDqYa$Hn2qz0Rlr#S`wUuKAen4!ZtJ*5{ErK#Pb;uBrkcsapH)J8c+7?fDvZsCBV~ zVd{Ru%VC2aEE6}W)V^FekbNy{8mp$by0P%p3CAOtWxz{LQz=V0=vP^;zRLT#2LkUFaoep4 zgDP~mL){T%;Fsd?PmEoOC#cgI{ODl*%b>AqI^SP%yd8U9?}MK%@@ax!9`x0>C$k1G z3a}$D`4Q+=@afDWmPc$XUc&O$qSYGN?gR&&Ckz_AWeZik53#1Qr@JKra)?+by`{59 zI=qz3;Y??CgEK07|F~{|4~-|-DJY^ev|v|zi$3sbHu)#=dHn%m!)(d3Sy4kqk6yMt zcWbpX_#0Yg9qEDv+)Xf`LR5|gY*WF^7F|ul_Ekrtn)y1^hkq?=AJ>e24>q4laPyG@ z&TfKIMru$W*FQMM2tAO4<-QLoR(%-1e}D8dfOs)dRIcJj=Kmz#Zxsd-eX^h~#$J8e z=V!sxOeH2!$AtMCm8>x3^E&}cvTt|TdtbXIjah?o`Hcix#dCe6Hagb~c69M7^E5_V zXZgN&F=FlOO9Jx`3j;gJO$JYKU5`k*evFm%!l1QYuPCjqO{UnMFVD&P2nb<0TCg&C z?cA}gVU#f21dmLYKOKc}&NB=7$#+P4zYTIe#p+2mE_;hD${OFFa1!MXC8hn*QC2y9 z!N%-sezj)JC0mmHUF-7mpPqyW`UUBQm;F6WMR2Y?^pNq2lEhZX z^*-!{?`u5Nl-J2j`$(QMsJP|+XjJjDul~=Rvzb(H&Z>I5uL7`cNmqI9jW;#C5r5@d z97+I=f?=?*s=tl&s|}`J{tfA$0X7tXT-VBN5z@{B+^AOh^V_{3m7{ih@SP-zuL(!s z9>CC~JP(Z*RaBqndvtF{%1WJjj>eHu_n&teEn^8>yYKw`>2XL|>X|WV(?KPU{Nrtt zT4<6}?TKcI7j~?5A=i95>O4Pg#3iDR)s`E|!$(8)>WkW*D2>JhafZ=;pDR`D>(w60 zte%%&dB#J(inUGz#D>Ocn z{K(2 zwuxNvyVsau$CApkVT;tkey4g~B*ywz2TaoFb3Q**r!}+(7t4EVZ8rej!%|a@hxPb` zYeUY_{|!Et9IKoWbi<6B* z*ZZv!O8CBB8x~`##k}< z$$pb`)ebRtcubUF}0xAVm2&ZD*k$!)2D53qj(N(A0)S%zrw z#r&=Qyiuw?ntZ{!;j<3S#-+!J%!^jB-nH@vs;V+(jk&;3YO2SZG?Xb=fSSMT+xAWd_7L>=&^vGr7pTLVczUREnny1RAFcK)H zrR=S-aDm6UkJXS~^X4m;eA}zIf>p?%9wkn85pGc69N_#mT)q-wJs=NT!gk)hq}+)5 z02nqY?IA+_G+|kbMJrqyDJpv+p;lEr<#G$|`Mf(ln4g(pr~Ici$!U~jX-KhLcgLNL zW$&wX^O@H_ZFqG4#);X?u!BXOjL>XjBp#EDslSRRkAM@*Qar~4yf<>AIwTl2f`}Jz z!lOz%9bs=*g!WBiTPQNyC?{|oEIS%AKLd8x_K> zlt%GH!I9`PMkf3yF2u=RQyAxo=IQLm^g`|5H%?-{_DFMmOqtD5m}X$TG+y={sqsCh zbCw&sPT5!s*;609n^C!DIQ2bn(7ke{ z>+w+^T*dXTh(@Y8dt>M6H3pMRc&|PzPn?#r>ixY)39_`0L^Zg!>l|DAQQ(P|WdM0m8jd_hjMH>af5K z94r51r>Np2$6DZ9QKXC;S(2!%U&f}A=uU=%K*iHGr~34%gc|^YXHjn@hnwMNfXh50 zgHY$^agdGBjLu9MjsevCVcJ~Fl3qnFiXxHHIWy%i8$pzQ)Jdc)<-AMQf6Q1q1aFV~ zv0%04=+D3;Hx)xc<{dG}_gazSLBC0S_;Hku4Wdb1o-Tx%+6tj?k==R&=nhNW8qxcH zJLaMBy$TK21eZ&&tH7qJbk4Rju^DBxHNm#Zl_gViK6)sFUH`8k2G}TvBf{p9@OE!= z!SwZr@49S-SzBhSxiI}>D<=m!_|V@e{DbWIBhgtU2=ka!vnhCxH0nVdW9vloJZBb6 zEV8>7FIa&XI%0E?n2Ufa?roCxXryy;o+dob{<_-(d>E=4TZgvccUB)D0y#E(gI4=y zkb-@3c{AnsmX0NW9SXF@SoAAu8GKyC-<_$-<6P?6Hv*RJnvkP^v` zy?8sZ!hxcuj@2jaJ9wrVcS$~z z#mcj`8U76-WenC~eQ=%mxT=@`(6wMXdb(i=hCHY{GmSkhXB*`-ewSA}Iizm!y*09! zr9`r#^rUkvsMc-OwwFth>Vw!`Q)M7wpm`uq#Bf3k$@Pih=yI%NZS+rZHOXf*^Xd-e z+MUTN9SQBj&2!sJg&k|}vP?Ba8q6|)%*G2>fM4>7qqUbr9-Bj&&P=i5(?1z#c*~mM zV=&zK2>F5I;(2;9t_k_cC8h;#fOHjM;|K zNcccAf{7a?;GCmn+TWxT1&NYks@tg;!bg|9UWZm%Za#wg|BY;(7ZRTE?tLX0AK|eb zsU!NP!n-%cEPh~%Qhs}j?4t^GQwe6@2l!>NSl`uVe|-HUo-7#$p=lcnj6UG1F?ze2 zGb(M{lHGUJz$fJ#OD#>0W17m3!BkDRiC4ZVFG`imP~O!i5f$^x@FY~Wh`!>Ph9o8I zaAX|DEf_oR7YfmniG`Kfyt56f*tlOQQ%cK(u>Lsaa09SwIASv@TzG3<%tZD;L`veH z%C*_8olxC9&jd&I;s|KcTp_dA{9Hfm!7FSboh+%QoR{-oWR*pA{4N6gIneqFn~W)l@A% zAdP0g#^S(}>q64bi+9~7*?ZTS3SpJ0CC+pY+ZU8W<8a_Q`f{4xpov8@yBuTc3>*<#}a!ec16YV}5Tw&j50 zZMo|s?R8(tV*k#Mr^|PGskSzAmk+0+Qp+DFvQR}b1XfBS+Bw5PaURlcHCpJmQUQ`` zIt45HB$#$3eMdc)tMHT#fVg<{N@*=xdYsKA^Yl|vPp!nLh_gAL*4omcRhv{B(+5gU ziM5us)@p82Nx}t7_X7`(&@WV}9PLj;Mn-oJ7mK-2=rwW4OpbcFLz1JFiFZCVsB2+Y ziOT@k4Ins=g|k%y);lhoRKD=Vh`$?RT?kag#>TUUGxz{`jCS*X7mk<${Z?vedD^Og z;7M^#fujzBkrX_COy&iBs)AcNmH&IvRU}9#cTf*#B1rVEA(P{K-Ri#;4aY-Sn!K7O(>N9hg?Q<9#bxb-aFF>3!yzic*5uM<^CLb~@-gtYy5Mia6* zQd;tMU8jIKZLBNGU2T3my`>f&KON-7noEpPHsQtd#RtE8ou zMNb8u1Tjw74gKOOoe*#{@V~o25z-wjdg4FZufY%SUTKQzwlr_kM57E+4m_vqiYm;= z!i=|4n`adUtA&M)LW^CQiziY&q1=f>unmEM{wu}Q#$OJJPRiYqBxK*JfBbYRHLqB` zCvzo#956MVRtLi?DNf5Zs3*Nf-vByV3gXKy6J5RKuJBm`^|v{9PDQVp+$|1571@*l-op&i;!I7Z{%oD$>xa+tyAa7CESw8opSp>TTM)#JCv;dSA#6T zJ)H3tf6I8_WgR~F16gOdwtsK4v+v7BxrA=Gj6=VSdq4NtD9U#%TY_O^2DPtWtJ-;% z>%JnJ4B*$_I=IEe+gE8eEE)yf)6sE;kc2Mk@9;OZ_sw&Pyq{A=uBlVWV@qG$CC+x7 zhE25W1>=05T^j|{-f_80|9v^&2B0N!luVVdv4MWt&~*MjdC}n4i;2ga7NXycaPq~X z;eniL-K6b9g(^W|9noAN;>w**F2+0&6~1@X4debP8_}L-Px0EXWao% zvw(-@*hjHnVI@{+rsbRMUCE>7MJBs#s{t;|U>0OpMR5T>;r9{w@saXRZS)D&Vn_7~ zd9DWfh{aCNj9*@zUyNBxUf%#tNe^Ngj)DIy2Z!bkqe%T$4vQankUPE7XNn1W)SjSb z|3`J~^Vrp<+zMp5x*B69W1U^=Ur6Vhl@!M$Bh*Vt!JpKoEUNPvkxx6z`bodqHK1id zzBLyehB2@b4$E!aI8;&9gEo_ekVtl;Jw8la&dqdiAr({#I=nf+R|sXl1tORakbg>H zV=L>5^oR${ysVxK_{h(o`M z;nZyI2GCQbb2O}Hzy01CrS}UaWXkr2Evsyoid9LArjj%W@@-B8 zxIY8-H2}!p2p^1_`-kIjWovuZkQRbgCkg?0cfmbX6<83`*AB#X6@yvvY56DlMH6AvK zE3mKHdX5+*hFa%y~PJIKtx=V+{Ruq zP4O&DaH%7Gj@5?_3=xvq;nupmc89}?42>uYa$wYhTbO&OvBspjtvz~h*fi8)y4S^;+R+NVtNwvLTP=@ zi&kM5$-A@-Jc!3aW5BU^Sdv^{&Pbc5YhG++D|f63-b!DiV7jc#u4NQf(^p|LzPWrF z9`I=|e?PqDqU4R=G@aR(^S5WrLHMInz1WjE+gDb{nopvwuyuN!$G4u=f|?Yx`ZWL0 zE3ii(V$WXXT;dlVJ3m`!NA}+0Yd0njfR4zhQCk*gP^11jk>ZiGY)S#jZ4GIyWDS9Y z?05}P{oPk60-3YlCWSs)5B^b&2uKY-yaAx#H6m)Vr%CU@!kUb7g)VQzzBc=~Xu4(V zw`^hh)yFODonj-gRds)}P45ALS4M_{8qSv&Ny;698tuidtB{h>;&0q&+7heB>bBpv z%@S)qkDdN@_H&la>dka=NVR^&i`b3SEA2W=b9vMCpod#r9k=49KJAsH>^Dwv{Ps$H z)}75)lUgkj%RK^*H*m5K$#m=D{^U;KJJUSlCT}+kAXKy=2Cuu3^l{Hg>{Xt$b%$x` zt;#F^EFY#3x6$Al_rz3KZ%EKK&f71MRpC7 zXmq>0d5Ye2CDwflL(lP71L?tpCT`Zj;jhRcOt|q3Op9Mb_#M|Dd{?qq3*)w~k1zkzvNBQ&I#91!1eUgc^siPvq$E&pVT65c<$bGFOB&q6O6QTC_HM=y22nZw2gl&2x84cez8P1G$z zulwF9OzOogivE#GBq^8gzF%Bsi7NfmD&ze~w6@Kt5M4>RyG1HWx7KC3G9j-c(%>9t zmV++RraQ2NiWkMyGdUSt)Zk{_!1!6T^!C1deN5 zkKh1*Fpx5s2v%bRoZR*?5((dMBMceqHtra$`ci{@+Qk=kU=sDbo!c5>G*uz3irG}H zwf}^)ls44ois>{>j6b-$(AjC`kf*<3A^4H`u#{_?I`EPm=7~>^((|vKBBCg|;13k< z;R0jZnPrkjH%n=^6}R1jx~z9h|BbM!w?IjeX<^EiP}?v^yzK=R=T(?>#>K?N$`WzQ z4Jaqf-EsqTXXNl^TFy{$ERdPGP4qUR0SNZV)~KoVtK-_^TdI-mQX*Z5aIB7{-%Kyk zKofXjl6LW)>xZ$?x4oHAc#<)bm!+Xa`joEcIJS%TVN!hNHllzqiIoF5T1!Q2BB@5v z3Rknpe;+l1`w50acrfL=XIt$gi8w_HC>Z}W&xXS0nC;>Zr=a8qe}>M}G?awa^_eD^ z09gve?bNR20~OfimsZ1iYwzoQQ8s0q3#U=$vVp4h_W7Mgy;n~1^}QrK>%?DBeEpB) zbK?n3E0jF+RUvbO_!H2ao*Iv>6P;NP28)#F&0>%sZm5oAJ3a6aVLwuc+;BLO)p(3dQTpbu&P`qC-alB^WAwy2*{ElJ+Ef?qSBZUB!kYoP zXtqW+CydcYvfjU`jC9q9|0I`wmtp1xF{=5A0wwsOD&Vb9vzLi%o zqYkO$I`3yZ5FK<=X9M{D?jMaB^_S6*_c|M_noqAHk!OVU=^^ZQj@Xl13mn4OQ79~ zAh5r_^~nZSHU`h<0I@_LW^mg`!j|PmAYXP9#wi(;!>7xgo(+aRPUnZFeXxfIQb^P$ zCo@RKu~zjeIMSp>je|~ZQOYgwyc~wTanJA7#iljsc8+27EECF&*Pc`(qD|dbK9CMO z__-*uZbs@9@8^vGKbDP8y=~>2^@4>8w?&_dR<-zQnEnduEVJRgM?@`_l81^pzotc3 R@s9l8?JN8*U;Exn{15txq2B-i diff --git a/doc/src/Eqs/fix_pimd.tex b/doc/src/Eqs/fix_pimd.tex deleted file mode 100644 index 983fead8e4..0000000000 --- a/doc/src/Eqs/fix_pimd.tex +++ /dev/null @@ -1,17 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - Z = \int d{\bf q} d{\bf p} \cdot \textrm{exp} [ -\beta H_{eff} ] -$$ - -$$ - H_{eff} = \bigg(\sum_{i=1}^P \frac{p_i^2}{2m_i}\bigg) + V_{eff} -$$ - -$$ - V_{eff} = \sum_{i=1}^P \bigg[ \frac{mP}{2\beta^2 \hbar^2} (q_i - q_{i+1})^2 + \frac{1}{P} V(q_i)\bigg] -$$ - -\end{document} diff --git a/doc/src/Eqs/fix_rattle_constraints.jpg b/doc/src/Eqs/fix_rattle_constraints.jpg deleted file mode 100644 index 2ba86095cd3c3682160dedebb745413be563243b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4556 zcmcgwXHb({w|*(1qajr3B?zG@ND-tXEl3MZ3FT0wL!?Mmy7UqgiUkl7RFD=RAWb}U z5Je0mfZ{O}(a=St%H`a9&%gWQ&V1i|YtO9Nd-k5S_F8LZKhN4Hl#{;zFx3~>nsGqb(V{Zn@^aZn@5nBi%UR4 zKu|vMi4U{13k;> zt}Ym$V_>AGqi0}bW&(juPy9UvKulZ^31)6(9!UcgTMrZquaqGosgMtP$=>l6zXo>l zLlhcQ)N(Qlu>5US5BNQXhrtn;|DT##a=NKNG+pPsy7yFwF`Y!1Ri%?d6ju#MNL+m^ z793X~7bv>TPrDKQz^&;Oldc`>t%`&Cc!@Z2Z6Bpr6v2=HgC%~+Wd=f%gu#IY=sHm%UO&?OnS-#?`m zKqDroMPyua^{6K=RZc2Xh3{LiT$?eF$mZykJMg7Gn((+)mhySBLqDfNq~GTtsX z*(l&fupoeiS-htf6jWN}6T63b)$(K5f4=Clym0+m9K|&9w^rT3rv)N>a zglW$ehGO@-625%dKIztfE=Ey)l%o3rtOwf0#o7!V+01G6`p2K94|FESz#3ZUGq`94@ zK71rbXF+C!5XAP5YfRzL(4%WhzqOAv`3?uBo~Z<{8_(4r{Z*UY)#GL^A&y%4)x3tRUY)lY(QCVW$K(8*m{>W8 zYwdQlW#ad4$Gx5cvWlU}u(@LfWz8KPn9c+Boqmz7Hf}4>h8*v1&%7Bgq(r24t8ELj zb)TQ8OABV5pjy%VAI^DyY8tBOW4!=d=A*|x!D*+JodD1WA8X^SA#~)cxui0QY}cSt zU89)dn6!)TJ{quH=eFnNmVS93SXpf&T~YqfRnd{%-5LwrUR0-d?c+fU)RU_|p~EqK zIN~hC9?!i4&v6t?8Y@)3{wjWkHE*5r%nfgcd`NiL`g)cng?&S_uJ$KyHBc50Fu<*&u(q;Blc9pi}RikGmuGqc*D@zl%i4J=-0)W0h;jOqkK`3loSp5 z>~a2>QRf&YK{FdMxd_KftE^=Gd6HC@9@8(Z=gVn3$o6>s+WqlZ$woBv4KDn)I-3&-Gs~&AZ+Q|Legg1RZKN?UeU5YY!f$)Cvqah2?v6szso;O8N{8~viKJfDj;YPb_R4{yU`xDYyK3__x2lXq3|?IJxlsa?c2j?)v2zTzRi+owf~*%- zDzsCs4heT`Z4@z2F#bv&H<0oUef0^Ts|)J#QsEpMnwGC?s?EN*4u1GxR0+cOz(%_WqBA#X$YYnksz!Vq^caw}a@h(8ljKVR-Q_#pC3-K8qxb5Oths&pWu zU#)3TcOFsAwR%6?fiSgom%}BjfFZ!0=jnI6;vZlP4kTOKgN|UGxD@TWgxPy1*5Ry3 zKErSJyySz1X00>j46dj02W`2ckf8B-JrS5Dx+#}3EiKS^rzukdCAV2D$9?!&*<*I_ zU%vYXI%CZDd$!dow5Dt)yKLCZ&F3@7rVeVy_XsDzO?W3FT!gzV+jgT_`yCWpI(;5AeXiN!-nzr3;r3;u=g=K`waQN_6p}-y zh>~jC#O3Y*dBp=W1ek?QZq3SQeRRdP4P_2NKPM#D7!P%`PDh>4CLqpxwZ1$W*X35kSzGLw% zdI9aTYp4p{vHF%}(g#@sg#9du&79daWzQiE2A{k+&4Bf|ofEq7C{YO|ob`0hS~B&8 z-_NE-1M%Fv%+)y3%>wt1*7Q%C?AjK%&ZR--CxTvKn3CKh`1B0SaTIC6GMgcTOCKcR zfmk&HPh2oju|rbl^7|V`3RQbHm{is!}{=N^Wq3$W)*mLUmriYlkb+4>AbuMfA@-!*_Q0dgR(}YTvwJxCVWc0I2Yc@vr*-A+wy&wEx(1ABcRP4@ z$<$hXjbIpCK+(Exk|C9lQq|MeQJoZVFT$>H);IQ!(HK=+w^wSek_utnpooy1vLsDX z%J;Pt)WLl$-Tl;5PQa2NA@c)@wkDyiyCVV+|KYn<J=?+TMn3ofC z(3h5X3Hxp-vXTDFMF>Ma`$jZYz5+nR&G%Bi?DKF`jw*#QIg|NaR}P9{lI?yQbwC+&!-JexAkVR z&YnzeE^+18A<{S%^kr4FYWjrgnU0y6^KJaJM}dlY3DnRU&)%HH;_maKL>R0#_jE=@^WUx^L zUwo{g)UKrsbLh_bgb*5=DaQ|=-w?Umk~K3D95RHe{)|d{4rNBN${8FEiJP1N7mfWI zAKB(0wA;5r$gnz#q9Zc*h4)%9U+rmGAWqzFt1OKYS|NXDjDNB*+7x6V7MGIqZxkRvN*dl{?`l`aP!c6UDX`DJgz2Ji8VrChOv?gZYX z7E?+Wf?~gj4hi;uq{Z3kISrX{4%t0F1C!EEus5g0$s|mv!Qj;2*R}>x1uAdqwB!t1urwH!r;V7}4jG8jBXaP4prb*e}$q zLNGYl6~FsWrboEjb7sI@)*j_-eIY}-lJve~d4j(;LY8L|rg-Sl4JBp7GbD2z!I?e$ z?)m6B(RS0O!6pr@dD6S7tw{zH>AO*u*@Tz_BzAt}bEGAFOCKgJ2PCT+9FWLI+P!)c zd+&~=^A7__(TDVgf4)!kGDldw=BuV-J^_LeB3vkE_gIR5h}Y(9lpzFNP|TBP59lNjV$~Y|sVr$(oki2}0%}Of z=L_3kf0jfODzIC+2T-n~4Dmy-vB}rzM_Ey7k-b4h&n-OHz$!~y-z=ZO1%;K4 z7@RarS_g88(G1Oo*G1Ox>I1qKHU2nPoT z2M-Gi2@DYr5)u&)5fKv>92XN58Wj-{7$F!M9UUJZ9}^cMBqAOp93CGY|G)qX2mmYq zvjG7S0RO}Q8~_0T0s{d70RR9100000000041_cKQ0|5g6!~il700IF70s#X900;*F z000000RjU61O*WW5+Mf@F%%*}2o)AGQCD$+Bw>+~l+)Dz+5iXv0RR9$0PMO_l&^~D z%*w2#l<9yzN9WB!%jR(yb&0aMOFI!Xixgi`GN-ugdaAC^l1TsoQ|U@ll%*+3Qk11B zO4oOJj!P%2S6p~zA+y9qhHQ=7EJ$9_OuZl|?7G{Cr)KUL000BWV>{C>QI^g6XN1n* zSj~{gUP7`-9k;a{p4;uBk=5NomXF(F2j%Ob<19xGx}l%*?A<#}f)w3F0(i_Gd; zn@(Eri1AQSRiUf+yPb-j0#vViXVFCZ*zF zUTcFI4d}ZUeyFNGPgPYO00O0Bu~FG&vY8c?o$@k9?xc85 zk*W=UW!*>RJYx^Z?PImgLvuV4$dZVoyqXm*j;@SEZlQ{@s{(hT0TqDfM@6&?i&aA8`9g)F}t-8u+aKI?CH0 zXC0-aWg$)I7A(Y)OEWPfvl2-xNhFd0s!_xff1eTOIX%O`}%USslC9EJ-|ayyv>MMJAEXt&X{%tFf=2>~;X? z>tlb!Rxf$$?6{r!jjM?pN&x-cetv5$7JDrIvwoqH z=FsEd#z}K=5mhDzl2l7jA3*nzMRvu0I)xhXw*A}YGlSLJZa*~8OKkXytNW;gV^+iJ zBaYZ3Yqw`#c)wys)9u#0-f2owm5SyV%gomp$YN|V5##5)gu*T!-`)tV;l9qxvR7bv z8Yg~rs;PPr>CNY*+(9_6?Gk1&urocj?0tz5o!Q^B2VlUK@!)G;nv==%8OtwGIJPPo zplC9e)2mw;!v(a4)!pVTuEI}v#G^;AR`ND>FEphqSNhlKRqv@8jyrg~r7Tdw~A8rb=) z52LxezD2>U^B2=cE8b5%#k&Mlk?kI5Hm@S606RhLvCtdez^jcZN>z6=#~@40k0im^ zS)NZNuUmO;rIbMOqB_K6RXXwAm#`hWvjBY5ULD8scKo9|%JZ#kG8tIyt)hYlF1FUt z2P&P28)kWBbD^Qw4Yyv#*-BEBrF?$f4^4L0jr?w@JYxaLF8PhOF6I9Kt0KL##2j_K zwS&9HuOp+}OSb@k#we9n$qKtCZPjk{r72!_P(yWVEv>|BEHfdFL}9SXMula=Jn)6&xhfG#H`D+Pc+AYkVPch=hcKiiwVbih+uRgpP}jfrX8OgM*BQhmVVmkBNRARF1_1^J0UHGg1^a&;p85d{cn~UB914U1fH6Q&7@(&?fCvBqP|vk}uJ7Lg1{Mw) z3JijOregmC{1^FY1we)Z0bq0}bN~STs{C8(|MnefbaXQ8-z$aXa}fEL)M_kC@3tTS zfSMRU>Aa+asR-x)#HMfs#6Zwg03eD29!ut*TH}Z#$NV63V@;s$*`3H$rt-f;c;L{1SNb(f+xXw7A~gW)ace!K*sh?6?jQ1 z-Ie2nqxT;L0rp0l766SsjM%yzZcL4_OwCqG!C}u;5rdl7hGw^2^IBARrsB9aqd28qIvJG zFoIdWjS09yDXXEBxZsQij<@{9W?`D^cW)wSTOJduQC+m@zZB5G(UN*+p1~Ij!b~>= zA(BaQtB7ZfnbAm%TT%1!*@lxoP{&PV2*xIFc)cvsv4bmAV3rhV#jo^Y-gOQmQ~X`{ z?*NL+C=P1OF!}TG0-xlAA!s2XO6ViBI*cR9#Q^gBDNIcgG{&V*dT4G(vgMm$`7uWt zn1>>~`acx_Fe)us$)v_2&$_acB!d#@sU83UIo3dmPbt4&SSWsG3DFCk-oLp2zCo*w z`@IcICjC4AU+-lZsU`mv{TpF-`>p)n1hoEldLsXZ_HSWQMBZnc|64M0&BAXQSt1+h z8M6rh>J?ABxK;uXqj7CS{&fzVVi*Jf$R_QXCaC1~2p1YqoE)z0Ry&nvo|u$1X)r{c z_|a_uNRK_l;2YDBNhZ@qab_q6*9Jf@wXz@cMdx$(eM(Nv8t7QSGJoxZte%=!|N-m7mz{KAs1C%XpDj+x(4Rg8OR)lNEG*G zZ%WS1PVKzpwXyRVjIJg;gkfJ75s{flwJH~`{$ljls&(OK&Rag7Np4&Iuv8erT7;`q z?b;TQj&>1F2?vU>l@D^rasQlr04L;ml^J+FucUwkvajy^&vj@ zBmWPVwS}2-CB+5{oUajOR6rW0K<6d_S z4q^;k1bk{cdM8d9vSh0~5{=k_Rr4$9?GqrW*>`J0Br$$;%l>#i_X;cvAH}{^^9$K5 zNar+_s?o`3nOo2yC)PORt8(G>o7n-QaY2Q8 zhJ8mKIYL+uG0S+x$aRkQXy`CIn;-V_S+~gzNrS~T>xy*>EHS(u+cy;oPy-N0bU$ul z?K2?BFI_zjKG;pk@*#k$!8g9_PUPNNEjXRRty$9)V?R((aly270UsH&PvRTKHsbPl z`RhlrrTQe`(K0#a_4!i0ISW;@p(nHin#R8A_!78hd?3&Yf)O3Awj+OmaCW0CU@pmm z6UxKMi!ki^g<4^RQ8*^_(G^Ti#Whi^(%RZ8`4N>~MJ&y*(sLD-mF>a&c;v)svP>&~ z3>c-cqvS#?gjo{!trmAsUKWRCtNre3v_VrKqu`-el#;fY zaaYu#*Y06DM>aSAIq$vVO5l$bp}Nr4sX^ezFZqZmk3-3Qh8G(nG10sgtAW$?76;}_ z_nTCSaiyApH*b3RcJ}0|in_K;4!_#VGswW3ngo`oH2fs5!@=^hDYMy3G2?0km{YMj z_6PB^$k(WqhEXUJVz*ATJMF(|vGQ@+ADMgy2YALoPfP29RTeM2NybmpvpYTdg&hcp zP)v8jwLaBo7JXV_PIqe?&=00;tVv?N!|fRRsa7jq6`Oza5v|eC^DCsqR-JWoV{n4= z9t(e+@iHzef#x2TgTD1kamy@6>_J!+{FtCnU6x3-flahRc1*iUVCWLja3@)F0@)J~ z`X%rM+?n6@si~y{4u7C%eRTfC5=^69JtK9T^2X=lH}I#s?bbz>RnTdwW{f#D^juDD z)Lp?1wXm%WMN}sU9izC6*nL;muLrV5GbU-7x{gueZ8#e&F}Q6Mr$icT%FybXrii8_ zT5V-LPE8!_MQdYeqCbc^xx&OsviSR!zNIC8NI{%Vm?=;GT;n@IVJdxvK=d4qoW4n~ zJFbpccekfXREky8mkl&eqR>q?7x`3FIx0^nbTq_CO4UpiHN79ZUA}X?ZCPK*?T5dsA;r8CBdjUoKATyVE{*I+Yv*L;O6`$)-gL2gZr{@)=*^)<9csO}7iT<%9Z;2Y zP|B=Gmw>;bHorEpqjW^QZN1yJwHWYg+9l8Ky<_~<9ek$E7e~j5Z`7yk&=!FmX5ZEt zTmn!B{jYPqncIh_)5q)_M0wf3_qF5Mud+WMox^@9w06~!@KfpIOwmC@j>{l_8zr=B z?ZA5i?lTK_%2BNM*0epmwYbHBb~!0@*rRKpr)j0UJ2GSUleavG(9(DUWYrFJh5|Z~ z9%a9XBXjALZ=rSQuA=&i)aw-L7jyY6W-8s&c;%f@aBr`QEl+5gX{kEM|M)y;b(`^V z4!NfCS4!z@V~ zs2>q}DF@kDSP)g(()w_!Pn49wk4n+9cjZ3&9aHnjVw#77T4W(Mr6@+qcgkrj+|X zia%oT>KFW&f}8BoCfxd&m?L#Z5!&M5M@gb?F=979|KxM#SkM5O8^#Z*=uTbq1)pzG zq>RfW{qH#$#(z%L{`>-{|6_c9p2Z1+2$}yIj^{D|FAlBePXG`Y3=M|>kAevM`x^iR zhJwZbFk!IBSh303L{&|LVbMv&)LfDa8z@*fIL%yV&LHgKDkg3rDXD3VeX}@RBIeHS z=|%n9lppGYC3KGI~-amNWCG+%{4x6Er)(!0>*O}o-OiHr#qM^g73Ct`1Zg)t^^tI@@V z;pkdIifRE^r>>Ki@1B6XsLhNr9y;qCdk`61n#g^wMqg1GXNjI(b}Kad=ofBc>B*ba z_lR?2#qqRQH^0U%w{&;75;&PgD$KGhakDaYY3>|{U+D@#hg22J_BC--v&O9Y6@GX* z^`d9^yX3m4@6Of43Tdmi@?&w*?zI17jx*^bkM4_{2Zvl*#|gmBz51gc)QT-ubv;^_FWQ>3WGC!n8EuZ4 z7M+&lViWxnP(ByW`Z#60#8X`XJK5LBJmo}ly_G2~mUcJGj~Gpu>R)!`*edAjOj}4f zW)4Z|p_Arc+LqCt*ARxQs7@Qm%T{(Z%;C;Ab15y6LXMZDMdlqAj}kJu_U6=JBdQj# zWJh)CB*s2LpW~MWrEV4NS5~)rR(-RW6xkM+0S?zu@VXA((5WqA!^Z?%`X3!#-X$~XeRLJy z3eE0!R`B)C6UU~2)dghAT~k`|<590v1h;&~b2u%o;h6TPokXv`2HbNc z#>e?E>Mf`<-O2n+`SoLYE?$vGGvTG%Ximo3de9H`S51qPfbLIMRH~S2t@=k{8InAVgCKx{5V;(SCjds;yr?J| za(bB=VlmNPOh%B%27E6178|HV>4VwCpj_=%MQ^pg!g8dPV_|k7v#PsV@)jz9)-1g- zJ943LZ_<8s;cG>y2djo;8|`^&R-}(?39os)e8WBz_7x*W&?LUUF2B~}t!>-v{zqkI zgOMbDnAK*}(u_?!|FpIWGs~h%-4)^#8fcu$4S8LrGG>}eiiLO&NcK`^O$nOurKc>N zs$A~7*GZSGYyAG#dUj!$;&i)~0^4ZChs!zQ3pq8BZ``B{m z=+-Nwl~=4)Jkz#Evg7Q5z%p&v;gDCxXM~GGDe|0dm+jLck=gYLuXM+`TF|-XC+MR>}F8y5dA0=TBWR#Ts7y zfL}iskEgECzxc4cnQSSaoP{!CL`P4#(!h8TfBZVqws(`zp4wbcJWyx#k?;enpt!4< z*tdFfvCple9ARQ9wH+f=HR}Z2~p$HTNzW!fSR8CwBOAU z1`mYO>aphJMYVh~oZ`^8j6Q4^czvr-3P)Ww;zX0d$0w*S|Jso5MUayJz5oJ@rf6xX zm93UJPV1exr*JNNV4U#z_T2#Y?Z6X2@-kSf#no!%M8mpazk|BZ$EtCjnE=5r8l@l|bhHoe{S<#yD(PqEf{ypK3E${xZyP_et4+au z!LqE|>!t;*aoDH-ID+%t()(jz85vAluX_U8qIn#NG(2|>zkObRC?>#?kQ&;a8Mi;Q zxOnS&og#ZO*nIZb-6~NU=bj-fc}|j09evOo#)6`N<`BZ#6eabmJD>(pkH&)qtj{>M z;&)q-DK%HCX_x30eM8({p7M?iMxB&xxNK8D*9_NlJgK`m!Q3S9W;y1Omd>!bRAJWf z0->c#Cnh0*QBlAzt?OJEL1yj?YPHtldpE4bc>2IQ<4!XwCsh?Cdb_qEiI5cGe23Y< z0#73R(vG-OVC7L~)_-!W5l(<9;g{@Jp)NS=c?w5Pl&UJe_3!p4PJLg?%ASB@rRXJ| zlSB2G_wIOku&poid-OfG#ix|4BXCokDqlm*jr>Y1w6R?lR~^2ZAaq%^>{)z^E^XA% zSG?sypBp7S})RK(Vgct zs&T9mk@b)-EWF>nN;~Ez_Rf%L!TLPDIK~jyAjJp!{37MoXpfXplvGt$G3IDZCVyVj zT;bAx0{G8yaFgxi-cT&1O0!#Q?%~q6%_STf0V(B(pdz=-9B-ajd0Ps6j&ZGw42n0D zHw^;c2+(AmV%cZL1H88a-}pQbvol$+9*}3g1 z(zE$~LCt>r?Qn=Fjs#EW&XY6V73&pvS37=9S)aL#NVjcCREs8{GH$8*>EwCSY{-!OvDYL) zE*hdAoRd=YSZ)QwY2joQy{nZz$BfR6l|8&&T>N!A+%lfN%2T>#XIP;1kfhU2UB0A| z^%KW;LXLM{4af!N))`C@&0@n{&TgaqBz9s zOSViXk)OWoJLGEpMA0&bwU$}OfvZt`Duf)+vbaSozgi7Y2PpEQ<_D7Pop7Waw8iRi))NXr}>5VmcRL(9#P z+fIfoDJ6*TWM+h9w_vxw(eB^G#8i4pBfcPPLU&FK8+%>WlQF_d^1+mD->y;af`Jwk zuftDd^sarO!?0MZ3UqvC^-I~un>2dDXL))oFXAycJp9_MTHF?14TS=H1d95ZJ2oqn z=v`5jY2jR${DBn?{#GF~+y2hM4dbX4^Ib$Wq>j8l34bB9Vd(HEUO#<>)2@Kz6YQ&< zoAMC&+>zQmo=N#UfkEKK$Ii5(Mp6#wh0p7w|3LzUoH^sJSy?>lxC z*L}@eckp3LrK?y`Xmmpx8%|^$j8~-KM!>@jfBk;xuGJfbu8&e4twY>lWL9KkkWcwn z;^Ty$c*zs6{{*ZJu+Pk^qB~|3Gk)4j-SFa<-1?|r>(r%}alHzow8h|Tdk~$Fg^-kG zbbTsJ~kx)H~k2ZDC90xZpA3MyQie(!wzKA#Lx>MH8yV`oxJ z4*k66myBOvx2Js2@H0Q)m44;h(S_GVZmvu7!!^+2-j8mi6ct6|{Q*1Y^_5wZ;>a1I zPCG;`aPk#?LSY+hRcwgrES^R<9Y(e;JC}-bs_&MMX$gnpmW1mXai_y7_rqHwTH0(& z-DRXnmFOXmqc7BF={oEySG{P(J`eroFhT=k=li=O&O7y)w}igq?xrpy5SRK2k!I{$9iD6o9J|^|$tu&#OX^&J&sD)) ztQWNKIak)EtVmnK)BGSK+A?&5R+ryooYuu?koJBM7Zc|E!~b9;#Hz5Lj_i~Y)&-?mJ+zUQM`^9Nm;~6-8cnc06pq8a?$AEfJk0rmH2gUOh54!p(S* z+?*#5Ul2x^J7Q(V2m2r?tN5ZKnc`>h62Rps=v|OO@Zy%y$X3F>j+gWpp zETi^93|_$eilU1uHdRhs8quN3-!k_J(CX=Yl;nz^!R%v$SZ0}iAwWX2#h+Q>Hy$FKMpDQapYm zuRGN@K#3z|61QL)qjuYhD0lVV$3;=Ep;`WUk3r}Rl_M|UGGbokm(rqeuHzl?_kE5i z-r`ct;<%sw_DB7*18iKWm8RI}p>A)EC!|Hzw9P!%KblynypKBaB)E`b4Dj4LsTUh**aF2xmc z-|}S?HBJL$&HcOIUgWZk6;*{ZIU1;cc|~yv-SyMCG(xL&#&?xKsmDj$jwX=W{_Pak zL&A+afdtXaY}L%Le|O8(rmblfq3nEp47_N^gr^ln!K*=8MOm(-G(C=Z9fRYq6JAaO z{;`Zgbr#tl9ReZx0UR+28ZiwO2MoQYSYs-JyQJmOWZ}H51@-t&D9S`H+73T|y@9aS z%Y~Ec5ZyM?zTdQlPX%R z4tUZF!zpa_1;VwK6J`4~nq}-T8eTX@aggjm)cbNB`~` zTe+Je$ovSA`=Up)>8p>cb8VLAsv5uc&!t_OGS&u~w=%L4Y%%<2I?MTW?q&NT%HR*l z`M1->nG3eJe9)fj(m$zOOtX>onoSy9jk;=9mYtHWpr*b;7kB-U?BEcJKqzjGz~-O; zfyx!Zs*N)-cOCnjlW&qX$4WYdjT*1CjBQ$vTjLZ(p73tAf5N`qM32plnK zD@cV-vUL)00U9>pHj@hv$9)ZGCo#VW`qBoXBbQBLad^kX#BG{9&&SfBwI+qwhbfYK zC)rR!i^=FHl~L<1m*zoBn%;`h`ta6@G9C9w5v5ouwL`kz?0?rLlUXT^&c>1Nk|9|l zCc2V$$EZjgDA;^#8NIxCpJn&%D6pkNs})~NS<|*?xLF->Eq^;@?~W?8Hg_G)V)EBv zQ&Uk_>%e71rVC4$kX30Q|3nJffr{&O8cat*WVit8NR8M*ADqA%5~-vn%LWDpP6HGb z?xtq7?QuM%WtxDoHaZj+(+U@_9RyeJ9Xhhcb}?h{y^jx_-RP8=eAS)e1iuok?VG)1 zyf1{~ZY_x=x%hS_2}Km$yc%rxs6x~QkD5Yp4D!-Yy zlF3d46U@zoiGen2R#LbWC1$Xi)*DAD=zCja7t*Keag9ZzZ75cFD<~tOP-89(DA~Mt zJ~{fxNmK@td2e!>xMc-?-DGI!;%?UT{}gRM8;u8pfrFO~}$v)RLh$v&xav#S8Z=j?ckjvO9Bd zDP<2D{h=WzcF67D4e9Kea6lPIGqP`Dg(MWuCGB2jj9CNprsa#Y$NS<@Z_XuTK?$=y zC=EmwHym$@AVDLxLLsw`V;}j$_(Ip1cVoVph^-o<#UxnDeSPbWd!GK7GQHvEwc|rk zWLn*3OgQpcrvRC$S)-kt!wD7H;Frq9orJ?QNw3*EZ4>If&?msWSb6fe6z@uC>0LXm z{uS{jvShAT3*~#)KE;K@#NC-LcFPfl^#k~(FF8`NC;BD45H5-_6s}(QiHmF2x+7zD zQs81a-~uljDX+y2xFfTPylcREX=RSYm%J15$t`#h`|LFyL_D83wPE{D_MH@ad|mzA z#f4(zAL}%X`|0mpOJt=b9`;gG%}9}Ik9r9wKDOk?CV!*0mYIpwK{~aRSB6z_5Op%Q z6JLLUd&}yZ+#=&7o7V{X=*eBSID2M^nrfW0EY&vL!CcZtY?W;?Q?)9&TP#P7s65E^ z+N@6hb;+=II6irdNrca|ulT9T%e_yZjz6c`zm+8fwU=JaMrtp2r{jaV4#Z3kEI+BD z#XQ{H*L@1C@|hZE=@x`tnk@mTREFnoVUKXBP;nGVy!*~88G-i`24Zp?#u0W~xaWEv z!oj7)>6IV72PYx4#gvgzBX$J3K#XgufD2laLP08ZI^Rrv^91aIWPCz~QDP^{GO$+3 zS<>&i@-uUYFxyCwIcPEzeRE}N8Zil}x>Lh*i)oa84q3Aelzj{f>?j`@6<1;*x1*K9 zO3gvuH=)1;$hPVCMWffO<&ei+-m z2K0V?#_=f1{TG>-jAYXA0?h9nGc?o$Q|r0y6>$uj;*R|M3Es_Kp0)C3@ zVU(UluS_xOec$a`&?J3fPJAJhk#Zx3$TpPOZ7x%7b~D7>VlAOV+B;sFbcB#3$fGu6Kk#%#0Xs<&RWo1hv&E0> z*J1lB9d4Py-vc?`gfr|wrDcOTec##l1+15k_9_NFU z#^T9_j+i?Wn5K*`r3|jnZ+~|#&wWgJ&2cf(_Uu{WBFbCKQaE@2J8ey;_g%O&)HT>q zI|WQOTaq@E=1c?;8_RRxxIqV5LqO}zdVwX6j=8JNp56fFt<09G<5v3WF~b(r3JH_s zwCjwK5#|;co;};T6N{N&%=_LnCz>(~Rb{HFgf7In9syf2t7N#I$_!zYBePs88kv!j z!EGUra1d-g$#IVfwZnE-V%=ae5KCJ_AT#!}M#1ciN3EeZ3u%Sqq81U^4k7eJuY23W z7v2*!zMkTX>Yc3wrC^9)_>92<)yYR2^c!Mgn8&x?w;1>C3{(A-V{c9NWh!Hq#E-mO za%deY`?GCT z2tT4$;EUOssY@M#0-Z zMhoc|EsU$@2vy!Bglp5xT=IPa;3;)vY-f{d%EYz|I_!GRq$YB{>k{I}N@t7XJK<9% zsG}mWF&R>3;E9q6w3Zj>z~{lRpWP|v)_G?#DQa4(&0m%g}q{AS% z>M=(%hLBfLar~P&!9A&0L*>?&ZO&i*!r$hIoja!^NuqJhBYNRt^J%0r;ZQ7O<&jFA z^$I5urXP<;+4JdyKgJrpNh)cQb<_1pE@$LfU9;(jnc}U{VauA3WDJ94VZ(`VHcaU} z1FsGYUM-NlG&2%hpPk!irrU7M z^wtol^G;EK31@f0!O>$%MU^Zjui1djuJQ*3@LaR%ymO?tq9E0xT(}=Fc6p&FnluG=>{tFZiw##Gj_h9CR*HN*;O z&%ROSFbEH8NsIRHQBI zkX`A6BpYUA!HQbO?HQRBu#3j|n(hgxQ1~GyAI^zCU2&u@hP}rCQD^vxoT8rsWoq2` zU6MA0TF*kY#4;-91S1(I7hTaPGB{GgwU+bBr#Bp?MunNJ40t~{jav}`9L7M`NGZ}0 zOXUY4r&%bLoTqwSO4*+sXQSa!TZrg} zi%HM*g6Aqk3;Tej7ke#YV)C*wGi%feRiZ1jaKm(ls9MqAsGdyJ9vf+*GKi^x1Ez{B zh_5J^9wSvQQnkDQit+`PT4o3$G%ho2ki0_ZS=J3^h7JiiBJy-M%r~e>Be|YKEP>gS zO+_gVI=;`-;k>a3*cQRD^gEE)YUl{vLb>xaDz*6)=*^5XYWOShwG63+ItT$8T@*S<1`;Amiuo4_0?0y#JV($o_$)%2Bue@_@kjiF2SESJP^3wJ z<9|}0ujmMWasCJL|26S{UEv?E4W{hx);-7PCOpUIY|8I~pfN@Nz!CnypG}AG2hTGJ z0Ro7Sh9Ceb@T4iC&k-674+(n4|9Bip2+yV<{gXN5Sqk*0w%?{mde;1R4Ei(i%6-J4pVuK7&qb>cSG7{Jc2hT-b2_ zA8Rw{Pk?7Lnp%r(8jS^dDVoQG8kZ%AL!UBmIyl`{3;S&toBpk0i) z#xE_dZL-75`i%ox9!BMir_CJ^8k0CQeK*_HaL%fk4ks!ZnUwy$)|`4s!SiGyY&fSL z`3dO$IBp=$h$b~`L?mXexC9%x?rYUCXkmgLhG~cn*eDRGxP@p0t!XmNOUbG8L@98* zRvd(SOv-_oTF~_lke<=nGezRw@*23h6QK)oG^(G846>_*#tPi&+Ycue9#4jY=60o$ ze+()Q4kAI8NW)VfI)58FamAN>iQ#EBZh=dW%5H1u%sSczLH*S4K~B6^?aJ1Ez~NO+ zf&xDq>n4M`;jLiydCs1_zb@#^^e2nKwA=zLYk@U>rCq$!c!&&WvD4z?64Yp>J`U3%8r!(rfc%En0OUz$o2w-mPeevgWkt{p{iY&0?YBdA<7E6Hq<& z8hWJyp%JS_W33L=icx$DhJJHMdAaGeA%j8@jPtAxbeVC8_%I*0a+2wT@N&pd_*C$G z>?{TW*GR630;vSLoYAO-Y%)iMw8^h7Plp9hb%_d;{q=@@kzN>0Z>Y{PDaUB+A<}Xs z*q`V!MO4ZBLw)qJG3>KYIvB|x)3tXv2ubYwRdkX0-$*qDbQ;^vzocM+v;9k-kMc(C5<-Wpi{ z>&K_X@|xzj_i7n;<{ z*qf7?MhRCq2f_zvxzz`WL}f&v;mhz-NVR&~f`1{0yRnz2zxQ<(2qYqqTj|9SIZRuv}} zbT|Btqj+=o_07u~nm5N5LRI2s+-K1Gl~%e1AkFi5$uC>(>3PIZ$G|dxPYEu-5xH}I zulM~+(*a-{7p-0QF+25lTq#|p)kN|WHn*$ zIQMz7668MYGtnlP(Pl!47}}QCotBg-?^SN{@Jiy^V3|@w@oo&8-w}cOnzrSLgvKqNUQ90K9u=qbNwgv@7F*Zho^acnK0UV=Bw_v`sND)a{H!=&=~hM$@}UBmoI)}x z)CMNpWcx~f6r0qgo{}{}9jdU~vpmh$zotN%m~e}_y+xk*hmFM(5X4YPO#q!9FKQGC zJzA|A9vl^vNL@)OsuUAMR0(LRz$ny`ay3IL^l(E_U(Q}{Mk%Y=j1-1Q=-?*waR>Pm zgO4512C=R$Op~BNK(9y9=5tho~_&iUmr`)ozB~F<~)~h zz>f`}QCWQ<8z%i706ELU>idvuH}L-C*V-5nAqo)$7 ziad`ZgP#d`yb2PbFV7KvG%{NI=;nEg?fH&s5W51mZ~r@~o9<`KS?;r*Q)WXu8%iG> zHA!ToeiQ`ooep5bb~_>`+HgP`1!YiPUSnA>U7UHcJFO3GBiRYNCPsk_`ys4~fz`g) z6j@T^JvLpfs|{hZG$~FqRBETBY2r-JhAA_b*p$u}3H%C?PM%-2>Z5Jzk7D3O$P*M;_ zAYyC7fuh3Z#Hge`d|}#X2u|LJqgxCW4+<_AN9Jx+3D9{!Rp&#Hrgtn0#SXFkbU zV-=f09$W=GRAI{CB~jrC@Z0Ff+v}%F<_PG6`c!5`Zn-b|K|0)VcHvQ z?H*Ai-+=;0?ci8zhsy#va&i;B>96)dvyJD*!W%aoRq1PD_AWuDp(vkW`$lo#`)%e1MQMju|b-Vz(&ocv*2-3ytWxpa33B^FU}(P zD!k?ih=jXkSzhiIg|3)GlD*@j<@7&ydx!(nP~S16XXO-XZgSVI>E1?!$kCHZkQ^rU zat_f}OBnl`brRQ^UW^h~hBTefxf*4ohQ{7;XX!D+vnx8fW#T|y+c1JSf1D_kVw%}4 z(7nLd!1^-Idj}COsywaH4sAIW(uHba(ef`og=Ghhbk<_yc@l$i=UVuQ|rcZWgLU1pGUGfnasuRuu3 z1`-&b7kwC!!~3YMQ!_wbZdpY~wF{S0N+Pb-EC~}8QA7sE(b(^0o$*|fC-+i-vi$d? zFX3otV?RTZu0u4?tdqZf#vEIM*p`1s)?+X=MP-4g95S}Hd%b%z168OTN8a8|;4Bqc zDjh2BOB7u`JF7q@q9^5gQZQ`^!S@Ns4Q=QixbQJ{k2t3B4p3ghj%>y(@D)h7uFp{F zqfiufHk&a=f_Difk5qMR8R&8!jv_|%GsPJ?n+xF(q!S<@T-s55-p(*Z1kbW(I>Lt1 zk`ByW?hwaczf7I|S;B29{(P==$N^O+7j9oDgX~H-BIWJ`7W5Bh=OdY{H;x& zXLFV>O$bKj!p~8V*&d<`&NmwO1g{l1?AQb0G6t41mDu=K@l1JsYosX-NjSD57@_JI z=2kIv@8KnCU?vrIe+IFm?|Tjt#6^*&so+;(pU!k7yi2v?EDNFhw&~b4l|~8#k+7s} zQCo25&H1`!G4ikc0&Nez{=~bT#=hh#1NByHys4`C!d1P0uNR#3esg{q1>zP5*oFib zI58w_x|oD<8xn)25Mc>u<}K8*{@$av(5zD$pkL9~T`AhhkdQK9~Rn zu5JmLB0*Z)V^Sbo^7qsFk$8k}4iC7B^=!zE0&rK?4#b|%f^Q=*k$Z~2{=(fxn=;o` zw?QHxo%62yDSP|a7>Lybq~W*RDW{yyFSxU7NT>(0P;y7ZeP+Js7F;PIb8 z#YkShox{afr;!|P8_rbfc0!lsl0j@PfbXkJhk2DU!$3a|s90kUH&DJMm?y%9&HjmR zZMPE{C8Sb!cMA#y2|i6Q9SIeMR3s8E4Q-}x(P?_+ytxw|RW zTok@wSImN2$4ia=_8HQBY~+9h8Yh+mh>>g(qrl->BY7m4t^_+_(jJxU(NyNFvOh%= zhU2UZV(?w?-Gw9=&f9}H(H`m>l*$|`DeizFKLpWfeuymSxcqfU`#qUDN3tc_ z3p4f|Lt^aEq4712ASs$Mq#C%!V~{8*#(*)ooFqp`)B({<@gWT&A7BKaBe!UDIjteh zvIXhhlHnl#=y*#(s`q-K!$J}jT2qFWIQuh^_;^vZ0R#>lva7Z*$kF``?$P6Q$p z*y=E!p_V;?f+YCOx@1c7Y*7jK1o>M~fL%!#00X6wLQRd%f;|joz(~4vlnHIHPX2FA z!$v$hj}{aP*yfQb^Ans)!nd$si@euII(w{fZoB-5i2t#EN&@^H)Ej_BQV%^PC~z5B z_i3W=3s?w4L4C-zOPqLFvM7AuKWKKf>9Fa+%?^tY(P4464u{XZMZNGq0L6bWcweqc Q$`BQ5uJjzddRqQ}0B&iL?f?J) diff --git a/doc/src/Eqs/fix_rhok.tex b/doc/src/Eqs/fix_rhok.tex deleted file mode 100644 index a468dfedc9..0000000000 --- a/doc/src/Eqs/fix_rhok.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} - U &=& \frac{1}{2} K (|\rho_{\vec{k}}| - a)^2 \\ - \rho_{\vec{k}} &=& \sum_j^N \exp(-i\vec{k} \cdot \vec{r}_j )/\sqrt{N} \\ - \vec{k} &=& (2\pi n_x /L_x , 2\pi n_y /L_y , 2\pi n_z/L_z ) -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_rx.jpg b/doc/src/Eqs/fix_rx.jpg deleted file mode 100644 index d63b983230c0c26a7bf9c50b38593bdd65196a35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2427 zcmbuBS5(u962|`_^m0KG+A2jwA-KRI3km{WDUlE$h%_lm7ZPbJXy{582&j~>w9q0= zq(lf!su+j}QbGiz2umkYgAz&>-|qYU&C56EJ7?yc?_ticzp!Tk5feB94uC))ApE2N z_9S5NtNXuTcK`ysz;8eh2y_Zyzdum`2l!;e|G>+`$Ir!m;=x2tJOB)UI5{{@#0gy7 zU``$o2QR<}fr^QWpOWO4u*;&eCjj1GBd!B8l(&_- zm=EMhkUClXbJy-6;|rs&CmR+|h0P;O$1+?V-MFNd(KK+SYPZE*t3zD-jK05i%vbG> zOtm6G>nwG2U&r>2XN=mNm+_cDcanZcL#aKC^>-J26rd#TQ}OQB!VB4Y*-f>nBfVd* zs(>eKO*?NWCtV__6&qXQA#y>dXH$kp1-lhrPqTsG4+j3JXgBF!+3mzpyVNZB;OCAO zS9Q$H_g|=-qUKV|LvNNH z=P4i4V99&&CPKuJE7zQMhPUjC%m@#W)46qr5a}BKa`pN5UZ{*~3sk{=caMsC$UMl? zKB`LrsUM4yDhl0LRnKBfo9>J#JPE^H%vmRJQdbdMHag1G6}V+Nn8tT1%^hmd6fxxC)9w-d zgbBmru*o|%Qf>_EY&aVz*R5s)e{0Pgzp`KhjCRp>Z`k*;ermPT|uUmkdCBWTh4ah-hsq*l|PNm z&Fh3>*TP5#^P}13(FmG>%-&3GGZrN@wljYOv-eh*ZH+V|>irjy4Ca-V)s*zJGh*&! z@B}tq@E;*m2`c5EOwuVm#wh7EKxC<7M0hncjHnRSI0T!ev$@paRg zdBPgMN85_h&~a@c{z&}RacfKDegup}m=wQmsp)Wq4b;RQMvmKrwki3U*<;#rl%_3G zlE0Hu@10hk2?rzGK6OuxB9clz)U+Es|67wdl~%_wE;q0c^7V|48C61*gSjzcNpbRV~l+lJ{wNT44x>AhK9dEn3o*`Y3%(UsVJu_l|0{|2V#}=)?OV z<<480q0GdR(eqIyr2I!|5v=79={Do`3pZCb<{l6LVd?xM)b$H8Z(!R?(?0kNG zZzpc4aWf}RYo1uqJs9-Te21pxKy(OEDR>nzdzr_YZZ>1*ihGCN@{dM1-hGfDbs-@e zG~Q(I9a9T$aBkl9Tz>opS#Y@|hDquX7^|d~vT$_GO}|XtXKR6iE=uBp2lBKZ4MWeU zg<=V4pT1cK8JCPN9jA6TGO}9Ea*)l{(l^3lQPVYN7!#q7e0E%wI=57<5*e|LELr3# z#0cd3Vv3l~Q_SQEdKa9#{o=X%!$R!YKVNU~^jozwkgQsp#@#U(K%4Igc;xr4QRmDT zBjf_CApGeHvMpPQ4VWA_HeWOkwBL#N>%5`G-GMs6U51#Lg@8)jM`hKON{5ev)2Z+o zTM!o(iRNxDw9I1)sM2I-amuDigJnlKWugd-V@Z92+p%B2y)pLNf#2^BY7$v0`NumM zspr5INj~Se>H|4LZF+^hZpovRUZ%Q2SA?z)s!PZqLq_%TWg@nT#hL!)UD8}Art}bnnPq{%~_hps=cn8ntAJu&;{&bl<gLkyem zj9d)+)8AeGDTksZRNgY`^N{NYT2#Wf;<7lRO$I--f+B_vEFVi$VxsAZS1)y*2{4j1 zW(BQLs(*$>>6$p#{m43!3jyV zXT$K*Zy!7Zi+darnzS6~yvWJ=mfN4EbJ}o|akPhqtTC~s>Q&8W+oXnNofo76O;jX) z2(;<%>a^bk^WD?(6PHNg{Ex>X>g%us1-#~zSSove>Eu+V9MkHqhTjZ#yFs=eu~%#k zv2~K4H+!~KGG)_ssd4Ho=EpcD?GhS7z9A$c?;mQUZJ+CLD!Rh*CI4>aP4TtkV7!Ig z#BB!~scwEZ2e&&qT(Q{ARgca*Zb$3dg=i^J{nJo>ewcnwqWsOf)wS diff --git a/doc/src/Eqs/fix_rx.tex b/doc/src/Eqs/fix_rx.tex deleted file mode 100644 index 9400656038..0000000000 --- a/doc/src/Eqs/fix_rx.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} -\pagestyle{empty} -\begin{document} - -\begin{eqnarray*} - k = AT^{n}e^{\frac{-E_{a}}{k_{B}T}} -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_rx_localTemp.jpg b/doc/src/Eqs/fix_rx_localTemp.jpg deleted file mode 100644 index 2b5147b93042028546e9fd67a3aec8e276d74ad7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16562 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%0AgD&f}W8Q|LQEHx0r=$IKb&=R% zeMOZrUZg>y=eSXJ^x<10M%}JsW=F8>e8}V#dGb>(+4vfARQU{=7M}fqV|S({dkt+a z-1?Vn=5GbHf3ei`k9$ileC}23F-3UgI}AN7<j@(PtC;mq%(=STPIj#W!UZWVb)pQKP$!743bTxt~0%lDF$AQQJ z)z7MFEG=2%%G)am359I8hvVE8=%#Pfw+=LMW9!J`LoY(#?NX|U{x#J_5w1z5SySJ{C z5G|9*v7APQLl}};T}GY14J$)c&TCBKmKCEL*WJYlDM2zAVC!^~6kDz+rqjbFNId3w z8pfef5av$pCc}xg@KG~Xi;DO>WlhB(*TO7Ku9ZvWsK;^@yNFO&{)Sz@i}U;0H4xkN zRBy=CQ}%3KBR#EZxx-&;Z5?|q;jDX#3GXgXe>xr4uYcDZ11+^RZ}{TF7EM+Z2}Xpgt9)q`_nSkCq5oXNlVR}zSVD*-HuUD^CX-YidSgRD;icVY)LE>bYZ&?6tO!bU@{jiJ zG?uFYl>N6(Ub=8)EN3M5KnS$!M!G!mj|~lPR3cPj3wZGTXpq|a*o10g28D2l!y(|7 zj(G016zk=Aw&e#q7cS6XLUP`TE&N!(^F;H!LN`QHi3O*v_v@*)0)OhYx<4wK|EO&K PJpWeV{a@f9i<$ZlMh8*8 diff --git a/doc/src/Eqs/fix_rx_localTemp2.tex b/doc/src/Eqs/fix_rx_localTemp2.tex deleted file mode 100644 index 0b524adc00..0000000000 --- a/doc/src/Eqs/fix_rx_localTemp2.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} -\pagestyle{empty} -\begin{document} - -\begin{eqnarray*} - \omega_{Lucy}\left(r_{ij}\right) = \left( 1 + \frac{3r_{ij}}{r_c} \right) \left( 1 - \frac{r_{ij}}{r_c} \right)^3 -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_rx_reaction.jpg b/doc/src/Eqs/fix_rx_reaction.jpg deleted file mode 100644 index e656cd8362ec846c0c1ebfc76f4bbe26934d4c32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2896 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 T8ENgxOTYc#^?xgdsnh=hi)57M diff --git a/doc/src/Eqs/fix_rx_reaction.tex b/doc/src/Eqs/fix_rx_reaction.tex deleted file mode 100644 index e9515f1326..0000000000 --- a/doc/src/Eqs/fix_rx_reaction.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} -\pagestyle{empty} -\begin{document} - -\begin{eqnarray*} - \nu_{A}A + \nu_{B}B \rightarrow \nu_{C}C -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_rx_reactionRate.jpg b/doc/src/Eqs/fix_rx_reactionRate.jpg deleted file mode 100644 index cf79c36089111d89b90c3e9688a6f2decb345209..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2939 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 Ezr?<9zW@LL diff --git a/doc/src/Eqs/fix_rx_reactionRate.tex b/doc/src/Eqs/fix_rx_reactionRate.tex deleted file mode 100644 index 4974ece1cb..0000000000 --- a/doc/src/Eqs/fix_rx_reactionRate.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} -\pagestyle{empty} -\begin{document} - -\begin{eqnarray*} - r = k(T)[A]^{\nu_{A}}[B]^{\nu_{B}} -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_spring_rg.jpg b/doc/src/Eqs/fix_spring_rg.jpg deleted file mode 100644 index 313844f5557f18d84727692f9a2bb85428526b0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16204 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 F{s$4=LgxSg diff --git a/doc/src/Eqs/fix_ttm.tex b/doc/src/Eqs/fix_ttm.tex deleted file mode 100644 index d5a3238f82..0000000000 --- a/doc/src/Eqs/fix_ttm.tex +++ /dev/null @@ -1,15 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - C_e \rho_e \frac{\partial T_e}{\partial t} = - \bigtriangledown (\kappa_e \bigtriangledown T_e) - - g_p (T_e - T_a) + g_s T_a' -$$ - -\end{document} - - - - diff --git a/doc/src/Eqs/fix_ttm_blast.jpg b/doc/src/Eqs/fix_ttm_blast.jpg deleted file mode 100644 index d4ffe05f129715572923fcd32c547b64aee902f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4449 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

    (}hGqx|Z)NFp{R{ZwpwB%~^ zaQ#M$`S4MI;)}-`S6M#s`RU_nMH8b-R}4T<(pW-eB|GZ`>V@5z`AQv}ns{r`6|~{R zblwNJ4JcyJ8!MKzkh0=X@Ruw8J+}YydBz8Um)EC--{rWk@cuUOP>#tReC>+r|MghC mr+V&ufTe(LVY70k&s8GbKQ#AWYxQ5G{O!{J`ClZ+r2hrW3%7It diff --git a/doc/src/Eqs/fix_ttm_blast1.tex b/doc/src/Eqs/fix_ttm_blast1.tex deleted file mode 100644 index 642afe4300..0000000000 --- a/doc/src/Eqs/fix_ttm_blast1.tex +++ /dev/null @@ -1,13 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - \nabla_x P_e = \left[\frac{C_e{}T_e(x)\lambda}{(x+\lambda)^2} + \frac{x}{x+\lambda}\frac{(C_e{}T_e)_{x+\Delta x}-(C_e{}T_e)_{x}}{\Delta x} \right] -$$ - -\end{document} - - - - diff --git a/doc/src/Eqs/fix_ttm_ce.jpg b/doc/src/Eqs/fix_ttm_ce.jpg deleted file mode 100644 index 4f439e31e6b22ed3268e19d3d06852801812f93a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7446 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�Xc$^+y09^E{F4seZA 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 diff --git a/doc/src/Eqs/fix_ttm_mod.tex b/doc/src/Eqs/fix_ttm_mod.tex deleted file mode 100644 index d0a313e676..0000000000 --- a/doc/src/Eqs/fix_ttm_mod.tex +++ /dev/null @@ -1,15 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - C_e \rho_e \frac{\partial T_e}{\partial t} = - \bigtriangledown (\kappa_e \bigtriangledown T_e) - - g_p (T_e - T_a) + g_s T_a' + \theta (x-x_{surface})I_0 \exp(-x/l_{skin}) -$$ - -\end{document} - - - - diff --git a/doc/src/Eqs/fix_wall_colloid.jpg b/doc/src/Eqs/fix_wall_colloid.jpg deleted file mode 100644 index 8168d3a792d2e4dbf7d4df3e767771f61a57da84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17879 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≠xCmX8xgA6 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 diff --git a/doc/src/Eqs/fix_wall_ees.tex b/doc/src/Eqs/fix_wall_ees.tex deleted file mode 100644 index c8b62067a8..0000000000 --- a/doc/src/Eqs/fix_wall_ees.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ -E = \epsilon \left[ \frac{2 \sigma_{LJ}^{12} \left(7 r^5+14 r^3 \sigma_{n}^2+3 r \sigma_{n}^4\right) }{945 \left(r^2-\sigma_{n}^2\right)^7} -\frac{ \sigma_{LJ}^6 \left(2 r \sigma_{n}^3+\sigma_{n}^2 \left(r^2-\sigma_{n}^2\right)\log{ \left[\frac{r-\sigma_{n}}{r+\sigma_{n}}\right]}\right) }{12 \sigma_{n}^5 \left(r^2-\sigma_{n}^2\right)} \right]\qquad \sigma_n < r < r_c -$$ - - -\end{document} diff --git a/doc/src/Eqs/fix_wall_harmonic.jpg b/doc/src/Eqs/fix_wall_harmonic.jpg deleted file mode 100644 index 3c605690c36bf09017f735f8d933fbfed80c68a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2413 zcma)%dpOe#AI5(>Fdm`tAjXz$tfIVxlvBb=LI^pgtwKV}VZ@v&mZGSfD&&yIBV>wI zjyWrnXw0FBVQCZNp)}j8_mB7A_x*gY>;C6^U-y08;!*Jwu>CmR4iA7pAmG^60pfAM z8jyfMp-_m#mPklQNW!*B!M2c>k&)g8mse1L%fsP{%IYeLf2t|L;X5>UsA*`RP$)$e zG!~7-sv}WIaVsDr1sn!pK_ECF?f}#Q5CDe!?)Wbfk`O2i43gUV9@-9opkNRLECGf< zWPdw;yP*dW zq_ySuy0o8NoE5m%H>nwM>MnSIZAi6c4AMw^t3uJ9m5Zr&zbw7lM)_M|9-Zam!-#X~ z3>f#%e7}&+7}_xANAJ`y;a0kA#s7!YIVNd1I-aPREpM_BQTFnjfd`&KAM^X3R|;pf zMD|i3GZDVroE?mn-GXdEUSjVgHctmzc=LX)*WhAQAaO>NsJQMce{I=#xxl{XX$29> zi(K(tvc9-lk5J4Xf&Ge~dE_O%Gjm-S?7nK_TsW(O+Pv)F;@c^D7U%qfF4`$bN z!psD8m+`aEy>U<5Bi^bZ$?W=E>o=m08dH2n{MxauUPS(y33$Yiw>|y|#m1RgN57b7 zObj`{yN$$OxMXmGNzceJZ4&3X*60-q$K45ZfHZ!2aNAZEx4C z50D9F?AbR%*8fbi#Gv&v{ zK*HMGmM*!B5`P zO!yT`en`|1MWgTzv2ZABR`rkEJqbAjyB1K7yI4wTmM7?;`^11o-(WYhD4J89e^BmM z-Ivl-N9?!f(NR4-?^Sn4t(=2AY)p#&v&x{wtUT0L9Uhg#X7NEYOH*bys`?kKFJ1@x z$axqI=>?M3SP<5zu%kIJ3FU-cU!FacU{@~Uy(-+i*dh``XFz2gqHzF zuhSGY5m#i;QHrWwHH-0zZ=RzG$%721oYr0*r>N96rlH2asV&8qD+Vr`yb-xIe63OH zBW*Lkgw4~neH0mZNKJ>pNeGJD< z`7XS^7`YOqUE-5gYbcVZ%_mTQNsRcX?O8esh1Z*u1QK@)7BQ2GfDPF_i&t{YAL4X# zE$q80PHHw!9Qcp@e>Iwlk^$LRSfnUb1-JG#m~B?iX#sfvM%o??KjbHThp^@!v- zTykf9*Pz++BZTztBk#T5&MPO!f#-u4B)U~+Q-U-?ozP&WOrN+io7%2jOrEk;5LF`tak8Z5$SOnoBF4vW+ zBB$r+B0FrA9L3{-_sl?QDyL#b5I^Je>Vie}Ut%EKYg!!>!!Li81!8kd`A*aB^c?kf z`of2*Wa(ZUT5q^+MQBBv8Gnknp1T^KY1kDj24tIIPR@<@Plh7BW9-!XBJ4x^teDra z$EAhf)`Yh3FsmOK`*(Ah`_{EO+#13xLngAuF9dj;S~>9zZt{KM!(8x2{Bf@5KG($V zGZaLOvO)B10!5z@5>JDej~FU<4j&uwM7ZustLmdzPEQo>_QpM|y!z?ytop0fs`k$H zja6z2c;+#+?%;Jp@XI=jJd!%o;zSg|jETQr;^NUz*rFRIs*31P3QOKq*`~f7KRTWM zjCugp_rcRfRG5hO*g7PreU5 zQpzyzJX;ZeY_``kKbR$rVcS0&z?9{bC%iZ~TP1S8L9ns0ai&iw;}E%hvtL~=dC&w$ z_x^nS=maCfxN87+Skh2dRvy>8HJ~%JDK@gSGF0lBm5x0&%^jxCx3GfMqHd^kMKf^e z^&KXs=PF$YAIAvf*NtlIr4lSPi5=D8z%vbton#Pq%`G)NXPH=_(>Ff4)v0(tT(rg5 z`%S(`HkL*}QM7)1)m6iyG8gT3zs8WXUE^PF2Y!Go0WyUoIn&Gz0&VnCx$2$$M9qSi pnc4h2O{0JX+WF+8V4tc9 diff --git a/doc/src/Eqs/fix_wall_harmonic.tex b/doc/src/Eqs/fix_wall_harmonic.tex deleted file mode 100644 index 86dcb80a0e..0000000000 --- a/doc/src/Eqs/fix_wall_harmonic.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - E = \epsilon \hspace{0.1cm} (r - r_c)^2 \qquad r < r_c -$$ - -\end{document} diff --git a/doc/src/Eqs/fix_wall_lj1043.jpg b/doc/src/Eqs/fix_wall_lj1043.jpg deleted file mode 100644 index 303743bf3e84dd0631cc4f1976aea6eaeaf90a26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10996 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 diff --git a/doc/src/Eqs/fix_wall_lj1043.tex b/doc/src/Eqs/fix_wall_lj1043.tex deleted file mode 100644 index 06fc4dd33e..0000000000 --- a/doc/src/Eqs/fix_wall_lj1043.tex +++ /dev/null @@ -1,12 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - E = 2 \pi \epsilon \left[ \frac{2}{5} \left(\frac{\sigma}{r}\right)^{10} - - \left(\frac{\sigma}{r}\right)^4 - - \frac{\sqrt(2)\sigma^3}{3\left(r+\left(0.61/\sqrt(2)\right)\sigma\right)^3}\right] - \qquad r < r_c -$$ - -\end{document} \ No newline at end of file diff --git a/doc/src/Eqs/fix_wall_lj93.jpg b/doc/src/Eqs/fix_wall_lj93.jpg deleted file mode 100644 index 18e502cfbfeb8b63f4b9b0df3558f8192058273f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4883 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 GiT?v;b4T$2 diff --git a/doc/src/Eqs/fix_wall_lj93.tex b/doc/src/Eqs/fix_wall_lj93.tex deleted file mode 100644 index 7372e55c15..0000000000 --- a/doc/src/Eqs/fix_wall_lj93.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - E = \epsilon \left[ \frac{2}{15} \left(\frac{\sigma}{r}\right)^{9} - - \left(\frac{\sigma}{r}\right)^3 \right] - \qquad r < r_c -$$ - -\end{document} \ No newline at end of file diff --git a/doc/src/Eqs/hexorder.jpg b/doc/src/Eqs/hexorder.jpg deleted file mode 100644 index dafa25cabec6733d1f5714501df3098b937a50a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16870 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 diff --git a/doc/src/Eqs/orientorder.tex b/doc/src/Eqs/orientorder.tex deleted file mode 100644 index a081a9eec3..0000000000 --- a/doc/src/Eqs/orientorder.tex +++ /dev/null @@ -1,12 +0,0 @@ -\documentclass[12pt]{article} -\begin{document} - -$$ - \bar{Y}_{lm} = \frac{1}{nnn}\sum_{j = 1}^{nnn} Y_{lm}( \theta( {\bf r}_{ij} ), \phi( {\bf r}_{ij} ) ) -$$ - -$$ - Q_l = \sqrt{\frac{4 \pi}{2 l + 1} \sum_{m = -l}^{m = l} \bar{Y}_{lm} \bar{Y}^*_{lm}} - $$ - -\end{document} diff --git a/doc/src/Eqs/pair_adp.jpg b/doc/src/Eqs/pair_adp.jpg deleted file mode 100644 index accae4716e01505ab7bb434125d9c1997e6ee3c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20391 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 diff --git a/doc/src/Eqs/pair_beck.tex b/doc/src/Eqs/pair_beck.tex deleted file mode 100644 index dde6b6ef51..0000000000 --- a/doc/src/Eqs/pair_beck.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ -E\left(r\right) = A \exp\left[-\alpha r - \beta r^6\right] - -\frac{B}{\left(r^2+a^2\right)^3} \left(1+\frac{2.709+3a^2}{r^2+a^2}\right) - \qquad r < R_c -$$ - -\end{document} diff --git a/doc/src/Eqs/pair_body_rounded.jpg b/doc/src/Eqs/pair_body_rounded.jpg deleted file mode 100644 index e7136ddd20c2acea0e89fa8412497333f15cb541..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146978 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

    &mla2Bv-j9_LOV>rgc(FYfl_PM7S)w>bPe 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 r_c \\ - F_t &=& \mu k_n \delta_n - c_t v_t, \qquad \delta_n \le 0 \\ - &=& 0 \qquad \qquad \qquad \qquad \delta_n > 0 -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_coul_soft.jpg b/doc/src/Eqs/pair_coul_soft.jpg deleted file mode 100644 index dad9c745ba6bbb555427ca7b6fb448bc2853caed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11309 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 diff --git a/doc/src/Eqs/pair_lj_soft.tex b/doc/src/Eqs/pair_lj_soft.tex deleted file mode 100644 index e32f11f0aa..0000000000 --- a/doc/src/Eqs/pair_lj_soft.tex +++ /dev/null @@ -1,15 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -\[ -E = \lambda^n 4 \epsilon -\left\{ - \frac{1}{ \left[ \alpha_{\mathrm{LJ}} (1-\lambda)^2 + - \left( \displaystyle\frac{r}{\sigma} \right)^6 \right]^2 } - - \frac{1}{ \alpha_{\mathrm{LJ}} (1-\lambda)^2 + - \left( \displaystyle\frac{r}{\sigma} \right)^6 } -\right\} \qquad r < r_c - \] - -\end{document} diff --git a/doc/src/Eqs/pair_morse_soft.jpg b/doc/src/Eqs/pair_morse_soft.jpg deleted file mode 100644 index 9c8321eba798943de9ad293f80e95d946e872f95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20988 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 diff --git a/doc/src/Eqs/pair_tersoff_mod.tex b/doc/src/Eqs/pair_tersoff_mod.tex deleted file mode 100644 index eafc4fdeeb..0000000000 --- a/doc/src/Eqs/pair_tersoff_mod.tex +++ /dev/null @@ -1,24 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} - E & = & \frac{1}{2} \sum_i \sum_{j \neq i} V_{ij} \\ - V_{ij} & = & f_C(r_{ij}) \left[ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) \right] \\ - f_C(r) & = & \left\{ \begin{array} {r@{\quad:\quad}l} - 1 & r < R - D \\ - \frac{1}{2} - \frac{9}{16} \sin \left( \frac{\pi}{2} \frac{r-R}{D} \right) - \frac{1}{16} \sin \left( \frac{3\pi}{2} \frac{r-R}{D} \right) & - R-D < r < R + D \\ - 0 & r > R + D - \end{array} \right. \\ - f_R(r) & = & A \exp (-\lambda_1 r) \\ - f_A(r) & = & -B \exp (-\lambda_2 r) \\ - b_{ij} & = & \left( 1 + {\zeta_{ij}}^\eta \right)^{-\frac{1}{2n}} \\ - \zeta_{ij} & = & \sum_{k \neq i,j} f_C(r_{ik}) g(\theta_{ijk}) - \exp \left[ \alpha (r_{ij} - r_{ik})^\beta \right] \\ - g(\theta) & = & c_1 + g_o(\theta) g_a(\theta) \\ - g_o(\theta) & = & \frac{c_2 (h - \cos \theta)^2}{c_3 + (h - \cos \theta)^2} \\ - g_a(\theta) & = & 1 + c_4 \exp \left[ -c_5 (h - \cos \theta)^2 \right] \\ -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_tersoff_mod_c.jpg b/doc/src/Eqs/pair_tersoff_mod_c.jpg deleted file mode 100644 index 311ccc81ebaa809dea7da497439a7c79a405acd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4211 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 UN|ZQ!w52$F`JYDx2)~~F4<4?(J^%m! diff --git a/doc/src/Eqs/pair_tersoff_mod_c.tex b/doc/src/Eqs/pair_tersoff_mod_c.tex deleted file mode 100644 index 8cea2d382c..0000000000 --- a/doc/src/Eqs/pair_tersoff_mod_c.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentclass[12pt]{article} -\pagestyle{empty} - -\begin{document} - -\begin{eqnarray*} - V_{ij} & = & f_C(r_{ij}) \left[ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) + c_0 \right] -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_tersoff_zbl.jpg b/doc/src/Eqs/pair_tersoff_zbl.jpg deleted file mode 100644 index 20d60d225689e11d7f347cfec1106a6e2356da05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392677 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 jQJX}uiRS` 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�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
    o;ON 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 z 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 DmPd6^ diff --git a/doc/src/Eqs/pair_tersoff_zbl.tex b/doc/src/Eqs/pair_tersoff_zbl.tex deleted file mode 100644 index 902819aa1b..0000000000 --- a/doc/src/Eqs/pair_tersoff_zbl.tex +++ /dev/null @@ -1,33 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} - E & = & \frac{1}{2} \sum_i \sum_{j \neq i} V_{ij} \\ - V_{ij} & = & (1 - f_F(r_{ij})) V^{ZBL}_{ij} + f_F(r_{ij}) V^{Tersoff}_{ij} \\ -f_F(r_{ij}) & = & \frac{1}{1 + e^{-A_F(r_{ij} - r_C)}}\\ - \\ - \\ - V^{ZBL}_{ij} & = & \frac{1}{4\pi\epsilon_0} \frac{Z_1 Z_2 \,e^2}{r_{ij}} \phi(r_{ij}/a) \\ - a & = & \frac{0.8854\,a_0}{Z_{1}^{0.23} + Z_{2}^{0.23}}\\ - \phi(x) & = & 0.1818e^{-3.2x} + 0.5099e^{-0.9423x} + 0.2802e^{-0.4029x} + 0.02817e^{-0.2016x}\\ - \\ - \\ - V^{Tersoff}_{ij} & = & f_C(r_{ij}) \left[ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) \right] \\ - f_C(r) & = & \left\{ \begin{array} {r@{\quad:\quad}l} - 1 & r < R - D \\ - \frac{1}{2} - \frac{1}{2} \sin \left( \frac{\pi}{2} \frac{r-R}{D} \right) & - R-D < r < R + D \\ - 0 & r > R + D - \end{array} \right. \\ - f_R(r) & = & A \exp (-\lambda_1 r) \\ - f_A(r) & = & -B \exp (-\lambda_2 r) \\ - b_{ij} & = & \left( 1 + \beta^n {\zeta_{ij}}^n \right)^{-\frac{1}{2n}} \\ - \zeta_{ij} & = & \sum_{k \neq i,j} f_C(r_{ik}) g(\theta_{ijk}) - \exp \left[ {\lambda_3}^m (r_{ij} - r_{ik})^m \right] \\ - g(\theta) & = & \gamma_{ijk} \left( 1 + \frac{c^2}{d^2} - - \frac{c^2}{\left[ d^2 + - (\cos \theta - \cos \theta_0)^2\right]} \right) -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_ufm.jpg b/doc/src/Eqs/pair_ufm.jpg deleted file mode 100644 index 40273da68063274cd6d6496d38f93ff97121df91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17830 zcmeFYV{m89+bta1_AgE*wr$(CZQD*Jn2DXq#I|kQw(U3fAJ2KJ&iD7z*;RX2<6771 zt9RGl-PNlj739R>VQ^r8fPmm7B}9~ffPhcF(?6jgzMp@Ac0z!FU`j28g%u=)g$Wg$ z?9D7~Oo4zTB2&^JRZv%OhOWj7F|`Oml!WYqTtFnCdC>&9mZ6{%6pY|P$k|LB!PU^v zk*o8f31KS1k#LQAdh?g7>4%APE2F__a?gR{uOB<^Ho33(j}AX4*|*-0GBR3@d_aMU zf=N)w`ka6Yq2~H~Htk}D|5!kDVhR8OtK@=8;Mx6+Ku6n0RG1j|UpfY5!ClauldSUR z|I#O$ik3bA0Rqp%8C1 z=x2;V!@G&U`~U)j2`7;Q3gC$t#6DREn-3QfSkW0qg;F%jKOaAE_MkM+=bxA9~cJ-D4{&nOpBU znO&s}B0l`CAX3soq@V0l#=#7eyc4ywQ<7J7nzs2E*_`#T@`|`$Ww{5>*b#}dpDveA zaPbuYs}@1DHUJmU(lJ{#$-AT$(KHeS;g9VRa+ksjrrl4UFxE)dUIu1pxhnozL_{ok zL=~YJAFQPV+4h3){Yo}7PBa6;n*j?TV8ETj2MQ=g>^{NOiRAF*3j6)uldn1gBAN@r zGOcS1B{Q>X6G-9!p52WJ7Nmd#o(fF29gIc@flUZm4*8OcWCP4Cz_|>I5P;)=h6gFT zP16ij8I-Zj){K}PKroG{7i`D?Ge`*4E36U$Q7Vw0Kwtu*DI_zDeH-$gXFv%P6^KGe zL>lOn3$H+=0+J&9mZx=$dCcO1+=}2T7@wB7?gM5QLf^~2^X7o~jzb^_BqVkmfngNIfb33+6e+fg%vcNYLqIB# zs*u1^a5b?_0`V5&C8)>H0t;dgZ7<@cC&aM%SIRHeU&Jz;#Sn85Eio<8Cj)TCoyMga ztmV*)z+;1AMyS=;%RV+g8gaZ~yurNzYw`F4I}R?Hz>^3^!O^{ByJ|a84sDL`&1yQB zm5A&?Lwl;%p8F#wXS(c1h-+N2w6=<1(2H4ce6X0I4YDHsUr=s_0Z%w{&Kn<FYXD@-;FPbg0)C`=mKs|A#7_@Uh1EZa1~Y~}PT zx?>bXl+A$1fY3leR8~}<6pYlO)Q;3|DRil$WUpf=-JHo{in-{Mp%cVo{i8oqh7*w) zb(V4;ncU8NKc-aORO6KC6zmi_tKL;Z^L9&<3Tsu1BoBU5i7jZjCR&A^5-d>vwLheq zbj=*g(q?#iULUfmPOs6bUZrXPwZgX|ImJ2MJSBe6Jx!b6vY2MoVMSqWw9Z_@nk}^C zvW8)4veujS8Bj2)#u|xX8Z;fOPEAjZPZhE5QY%^f)fnjZ%dOHa_>mbu2|<}c&%8}8 zW3sxk*e<{>&MxcHm^Yt5Ilih%xk~ryXJ?>a$fwu``G+8=DQKf$qhMB#vhd%$=pCs( zsy=Tq4w7QUq#3({wZZC|SjMg9-se)b$B7SFy~{f? zKD6HI9`*5T@MrPjxZh7KPJiutEIT>`_5?M9Lt@@@T5>yPK5{>BFlQQPK5;%ZTeLXn z{MFHGK5f3$Dbt125Gxm1L|)WpcV@3y`_UwSiEvrAq0NhgXde#}FDDN^#W3YGb)>hd z2d(F-*SE>GS=O%YTg~Ukr|sLia%w}@mdbl>ebl!4R0|lO@2^_F3hk=tTJ9nPLb!%s z#<+IL+Z5XAEfzo;Mp(yqrWq!*FrEG_+AJy5a-y22PGIl`at{VJAUU*k725 zK?U_QBu(9-d{}3Oj0yQ5+DnbAe7(j=tP4n62bTKD=Cbzrt;BA^Qer2l0oq zn8#qG%!`bnnRu$>VsUw(P1Sjhx}ln*dc%RmLHX2)?u1r{KYTs8o9voaR)eSY+mdHh znWnr}PW|VS&fR*_dOR*MTm63NQN`HVThCi~tIuyAN53brp;&MK{&&jf8t0!2#kv`t znAb3NXz7@#7;%`6(RS}9H_9vWs2O|g?igzrS1Unl#Ot>PWn+u!C@)FpNu9R9YdB5J zjhHrH&BiZrXGM!e-tI|mQf`mQFKMh-vl|VjOCFqE?|z}$qQXU52gRfEZJupc=Z+i7 zUFyE}JDXK+U~dGMPn%mBMf$2BWa4&!2aZ)8d#$dnz)b}YIJ}>D-Vf5_^oVh9`1agAJc|BGS0)EP zR!f7#{xFs~Hb-vF&*3esyRJUDXh$25l`@-|BV;XbX*(=V%E~f)JJJ; z>BuxMFEzGbj1&z^Khe>*u6qt#jW(3&sna*qta_K5E3y_`df}#Xr`vpJ_I@CE+njiVy>jP;^1iP2mUN#I-t6lU zABo@OmGkF$G}%x-p9?Z~nv%*X?aQv{G@y@^h^~cBh`Efs|(%%hE9O0=8wJXCz|6cH* zFE4%(uqGBHmK|Rl6X#3yTz=bf2zw{}wiHnXYK*=2d{b*Lwx!ki=IhUu$izsr8^Nhu z0ThJ5!AB7A6b_Utme()CF@~Y z6POo$A4cF0bwEXV;T}LLwy8Grk(fQNLh_`)AF>|Mj|+TV;caA8ZfUfu&8l^745TGq z@^&L>nY#tCvqf<-dfDuFP5%nJlMg~Awh9mSJ&VnAT?`35Y;EkExjcA@|7F4To&Kkoo|y1oCN9>z#2T^+gu?btri83? zEOZRSd@zKBggj0rW?V`lV*i1E=Xi-NTwENu=;__v-Raz!>Fk}%=@~gWIq4ag=$V*k zzb$B;J?&f!J!tKmN&fBRzkWnaosFF=9b7E!?Fj$zYiMNe>cUG*{14IpT>oyTsfXqN zVX|}nPgvgp(*ILK&q&8W|3ALJp*;VTaw%APnA&KFSlXJ}Ie&BTv2bwm{LB9Ts`)>R z{|l-4e~^qU?Ef42ziR%2*(}@hkozd}Xq<=Hd6ls4Gi{RxSf41Tr4QEu%Z^)!9rFd;vxhCYk_Sp%5w#)He`3T z)e-`apIMSial4D_7;*dQF-k+hvCSHNoCPj10dzhjV{mxJppY8^7ho1U?^zCIbcyYz^Z*gU0ks|`? zzx!TVI%-!ilvyFY9zq;^WSHI~;{9F7=VsR6m%?4eK^1}`1c-X&;F3Og!B?&P^$kT| zp1iyB&ojZ5X?Q?q8_?dwUiD!#ea%_dG6Y-$)A(C_xBJV>JKy$`kQ@%(*8`}RBRuI7 zw5>>P3)Hmjh7M^CD5sE~n7Xp=FDo|@ad=sm^FMKq7bhrIFMlzK?~j|F^|#|0{N2G0 zeYYWvYvGvGgX1;~XwumsKUTAPUR|vnckSFdm{L}o!o9@(=w0@of>OD-tjYxIHql&? zpjfg6`YO`~#|qKD-{f$jK;<@^-_+kU(TdHSl<)K`ukw(quJdBL3+X7+g$16E-?)M3|YY4F!&aq zs*JRA07ItwM+5|PFc9$J0y=i0|J315FS&E2mh*?&@O7VR+Kenc8IQa#EPF4(I5#71 zEivGn>0d>k*wgp?5PVpyMQA7Q4CzE|HC_ufUiJ~37HE2^qeMP<;rSlTxH%7U1A{6+j?vKNrT;H|+w?E!-|2`<09r~1eIe0LbHRehcgjx@GO25*etkgzgW zZ{J^}Cwf4|k(XwGm@#C-)ZG!=Ti?0MeT;!c+Tx9;0D%&fkGHu-^RQKM4}C6~g3mSh zP*b)ZSej#)F-|^uP?XcOpY4PtPAGxoC`jactBG|`T&3ZBy5iTlTOxwD667MgA7G@L z+#zew=E#`}D%p{Z*%QI|rinGmyq}BkHa^~@5_DESoyX5Lp*nDJ=;5UNKtN7_1qOFA8!7U! z)%v4BBO)n@93n)<=OGF@I?BRXN2~5(=K@71vL)8$*s;UCDcd9FT-Lqm&QsiJ9)dEb zcWm}YOAp=D2ckxUDOy7qd^Cwr75rdtG4(>D?triT9d!G|Xl5UIj%rYs(QjOu!3nL` zw|N7#tGN~;XKj3Ah6+DZgd;5EwcglGZ_){Wrb9f*ED#P*&+^ow+B$JUt zP`Hx4INascvI(eeWkeFfx_IZfFj)f(ssl3(GP^N^QP`w{#_9Yc)_j02BK>k3zPQ9X zcqZ&am@r_#Sg%y2eoYKo!g-3N^q9&^?)h^_|K=jRATf)kd!^1?@stgP|B@@>u4HQO zzI2Ym{SuEZi$AuC|2O2uya!lTM`T@|Wl;b_3#JMzzP}uT)HEPydv9Z>te`w^@n4|J@*WNzOqoG1g(3XBxB=?yKjrJ!_LtGEgrq@V66)d1T zE87GYF0tzUQ%1K+T^8UaPOYwt|7OHTlk!6>CpfB+SMT$c0`Hj~jB!T2rnw3i?o=TI zfjw0KyA}n-QzA5_g^p(80f#zQbPtwUsAe~s-hpZZjKAs)qw0xOY`?=B3Y9c>Rp1oI z3tG9)k?#SRt5ws;Lq6K<93N%(l0V0IVbqxc`+>Lf;}snXbC8hcoX^PlY+6bZbMfQc za4#h|eBcN2VzbzG$Hr`2d(&0Z z$upmDr4}jSKGOri1DO8aSp%Ap&iPQcWC~ip zqNjiQ8*KhcyuQ|r{&Na?caZVHoT#_7utGBmh1%!%hY~QNv$}7W$}sJ9DuG&()%T_^ zYVcZ)e0^*;*wzG#{G!gmqNf)4H+`2cBpnt(8~7)ivac+mLdET2Mv??%q4LH!7eerC@0tvxwy020|%0YsTK; z$t)d|PNe^(LgQhdkn*An=&=VMm;$0WP=HHXuJq zqrZf|oD~5-nH_ipb7J4@-iHu^B*6E@5WbfJJ1mWyu{2L04xy7 zVIJKgS0~Xw+wECJf6{AGF*z(@_0Kk6#Q{LLg-uDJgdEk8B6lB8 z6?V>8qC?*sbmy?*x_YfLvWa3%BQX=D9R`Vi2q3p%DcoY+#s_Zw*do z5rf-p6J1^y+z8rZTpYzY9?ygGNZz04iE%A>JIGG^mDQ5NO$d}+So22D$_O%)N@9w$ z6UNo~s%_aPLk@D6nkBJ#$1%BHK=3%5aZ7>;1m^PD!(#B`d$M&CTr9cebk{?LNOCDv zyD`~3xioq`L)c_u>d#aQ81w?hZk}>i7hnl=C(dHElQW_u_^f!S7(srR~g(d;Q5~4aoHPdd5A#S{`3Tos+*zVK^CcOO*Wyr%hmnugB zbucxyFaDBpFqL0*_!(}HeOB8BF*$7T8!UGY5B+vF{4NL=E;iG~+h8()D|pb~fITCg z@uVJNcEbJw+Sc=EraX*$X{&r)VF=X z)pt)F901*r$w@mbc4IDxW$N6YaU-_Wh7_IGh8r<20=7+|=MD}a)U;F5{Y(UzhId|^ zHR@{TCPDQ=Eta{zf?!t`Dqx#QR#M?J+7o)PH!XRkUZP$J!_N&jgK;{s$CWap?S(Wt2F93s z(=(;TiB8zuubWQnpeDJxj>h0tV9<8bIMslcoX+4)XjaqmmG*ID%{T`yZC-aP(!NHR zLcWgnj+}W&%98YGU0lYn3y*8?bK`{*cWo=Zq|QuvbG5%$NeYL?QBn!%?Ri2GF0Npu zR#&im2Ms@q4}Pvcc%oF z%{H73{JG|rY523Q!VvkSdCw4gO=L&=N++bJtBBP`_*m5JN-3{?E#2g#%|t8x3aPfN znc+bX`NXvuo7|+$KotE-bh}&(9`EvKL5(bZxyG>5u3epN&ZM#3fvZjTc@}1^FD9V6 z{nlK^SR}1xJVM!KLWld1$(vQX&V^}?rO|*un1a#Xn0wK;C(Y(y7W1XSWOUuP(=d_N z)tNOP>Y-iuc1$m|B8eZT^z0^o?G*Ks#3Qhus0Y$Fnbj;V zp0vy76M`4UxdcuW6ZHZEzYxRymYYVS19C=lrh2y`KPqnQY0DqeTuw*ao7-LEggtvi zx%m{U+JLwBkcI|8+x58%|NfB1#zw#sicRvuW5uW6@pLJane&Jo=kJZ+J_r{Wt0^7| zpnb3Rsl74{f!KWmbPmN?Xwx8Ei+9V&OT40%^L-$>4S(~X|~7)^m5nl?MZmy<%_K9Uk|Wm2&hC?IUw(@ z#85%Qz{|d`R4P|jJ-~WsdChQ^;IUt=oT%tTyu?slcIyH1i&x+-wA(Ds@N)hPpqq4N zvKjRBqr%4>3^pycak1X!Aec@H39XodJ{@tuIal2&i8#x53&@d+K5%vzA`SPWJZGzk z8HttW@!2)++T%Ev@V@Y-Xh;2f^P5G_ruOd3xGrMi3xn}{7Ip z`<796L^OvDJ)$gp?v{6@w0g)vZUh6vq8SFd6&WoZspw%c)qiOf=i(#@PUB&Z8t;AY z@9OET5cYaMGq7G?QDX4d3)Tgsn<;VK z`sQ~w9Ii(FLPYfYE{>5IT;~PNr%FAJV!el@v_dP^8hfV)Apr4n-GjFNL?d2Id}-xT zriu%;xuvC`@bI*o&sp)Mb(`KcxnwQZ?ru*+9+vZ>A&|b&6BLNuwO!Qj;@rHRhTdpp zhx*pIBrbb-eBOG@s><>EB=0hO<#o0U%_Rs)eq&<9R}_z#jZjtN-tqFfyIGfh#?>kt zfo~a*1`_fseD{gC-k42$mjypR2=5(_RibAHnm?D=eJ;T5a$Us@8O<;GH#*+u68d;r z^M5*ugOzs-rM;fVT@qw7Se+Z^rQ!kbcM+jG&2XG*6Ot8t9ru1RAdw>JkgC1BHnQt|%3LLOQnzRTT~}8EiKF zr{5dh;v+bF{GWi-EMFZuq`ib8@d5s_X9(Ni(M(*)}^Egj*{BT)Jl3{qa~5n(AE~z?|4*#u0wU?rAT}u!@p@w#O15Hmtfsiew3Q z+skb_Ow`=kVk-U~p3^94`1Fp9}m6tdp|O)m-S z%!D}@*V%#(4f<_bF>l~|3(+>04-+Op&d(%w?Cy}hdGb>2_!28bX+{`|jQMZjgSu2j zJ6Cdw%uLP7fmB6zU985SH*yFSl69FT=$(WP!PP#WEx zL1EQHa}C8{LqqWOL0?*p&!bDTwwnzGZMv|;`^kbvvk#)3h^p?Wiq^^<8^PcZ^Sgm6 zA6F4CfQ1Dw@vbv)qXfW4`F7|7Y5*!G>yv7*nb%8z zHkR|A%uhHyxm6|hFg%{KD*#A7=IcH7 zR$0>>G%*VcvDqywFvB&N9#!=~@`jopSX>Ad+4?kM#TS1}dq`FJV9$#%hYsBX0#si& z#?l$0=g;lW=)346(6!xX4%U(2CdVo_Rp-BNnEK#}2YjapDe@4m<`q!p$z1to(=*RW z;raJaIvwueO#&`?d@=q%+ah_QJd6)|D-YHM#08f+Da?H8@VDX|trlPBSkA%}?fn83 z%b^m@>2?-(D385=_5Ebm(Hc{GQL^XDqJAmZC|1b=eJ7mgij7Cu z?|rhh=1Xg}YBJQ7iu61SdD}eW+StB%^r^RN3rj!OiRw!RIGW8jy&u|W>EWy&{ZV2> zWTpVy@~y|j(Jk4%Ru5L}P2*Qp+p~A-co~(#KTt;BR$f!+JeCZWKqC$+Z&zJd$SYQB z3rt0;R?+AWE(|@7(2P#ot2_8aV0CTjl;z2r@mq^tvbMO)qQU=meApKoSXkLE6UJbuByXm2YXpCf=7aiEskONEZPn9 zT@s3igsX`EUG}k2r6$>0ZIBEYrb%-A>f>LhVo!ew0`{omI-5-;Hqr_>#JU1xKVN#8 z2VRE7xxCqiS%uZVN8IU8-O2KZf^(n#%gr~C?+lBW;+Z9TWBP}8i<|&a`UzP@Rgi|s+Uv)In#pf7d}&J|Ubn9815oB|auVh4{ z%Y`n?O|d)gvldgy4SHg*%}upFRwmb$<|b!QSTsf6a(83MN@){(#eK?PYh&)6x-W?q zVr|Jzj6#-r(+L2#S+Mv=R!1v{DbEB;sbxrc_rbaejG$zKoG3P`ZI`Qr;dWgAYcZa#YhH69CfhP1zeU8GW>W}Ki9xO=h zV^#0Y!;*d?elmjU#^Au+dpru-L;$q;ISj>GrPAZGAqzNIE#h?Yr^o8 z2u$@7DO>_W?c92=+uSi3A4GH?5B%@dug)?TUBBfUaDw8O{9+t~*9{Bl+8R=2z~$f( z>FhtsZWg;D&xy6m%?f>ZSmkm?KaVR@ef(Ge3~Ec{`__E)%iUYE`dYDeYFUM+rwS+g zVfKr5B3w_{i(lP;NtTp0gIFDf>|wKB;a%`YGF&vU;=417pZ5z4*Gq&US|#B!h!Um5 zK{aj-LP&;(TSoe#84jHDsqL}zh8(uNP~ddlN3|=GoQXT<4_0F{97^_JIWWC}TDq!w zqtMT4?w;+BXQx2!!nqgyXe9|CSP7s^BRXB-6niLI46!HRqw(R&u(L;BRW{QitoGjo z4)$X=>Gw9?1Y0bddp>6LTC=OCD@Om$fRvFTnTirCAcgWU5)!fE zgtzdo3ft0T$`rOcoY5Abu-wxy?#H5E|L#O;lDirRgSTdMug3(jX*2BndiuqA2(EF$ z#!4@F#vk1D+1DJs0OSYX_&G4Vr~4}Iw_7$>@dCQjScx_5ily&!CJfhT>8WmWx9NC* zPIUNr+y!_mDCrwi0;DW5lq#tr?$Pahk#|J532rd@ySihY+`b4Z*(4=SXLqV8^{eDk z9_UUYdr*!GmlmG2`w*@efAl*pU%%2H^Sq(M9WON;LQ0%ciFuFoN#7oCZzZWIinWc( z+gncEcpMO)ju!kFda;;r>4XxIwDn>Y)pIVMIgiQfgWT>KJF401$LH|6W0<%&3D!*x zyYnaLkJWIEx%;h_38biP!@Un4wcoD^?ZPEM zgGBfphNbd_Sw-`zV1qG*N3198W#992p>^PL^CzSan={9v=Ca{yo4eWC-C{eEuk z?V>-a{fD?<{9A$d!qV%JlmM<>*zIJa#@ zE5CqJ5pn;pWYoY#op}vCGioVEU;zcfUKk;`XnPtV1uJsXRF1dTB^1BAyi+BRq~lEU z>y_hsN~&V^<>~`-GrAAp_lu}S{#u6)v!f!pQ9+;MmmEXf=L@DB>D|I4sTclAytBIf zj-U&bzLp{~fumG4E)VkEQA}S#Qt)z%BRU&?TeMGQ`aTZd-A{hMRic0}e1EKCvpubC zw{|9DjLm01$RyR5V=DsEj9LW1!?_s%qUX@R$tWNTW4?djcu@WAY(ift;|aZ*2qu1t-Du~hSAiIT z*5LXDJZV804tD#>U|$~1(~OhJ!{N-Td{nJ{UDaC)<0W!M@38HxlH0o-6E%vob}x$C zBQD_31jfwTdQ3-0=T~ttc^YT(hu=H-8dn{E-CVh+-P#Q7`I7n@)7t5g%~7qdpksOS z=J}bvWBGLt-(r_~8pXliziEZ-De9tS>;)KHFA1UgD^q6Ao_sT!P8T@dvBvrz-q8o> z19cOCDZ|AiM4 zRgG$*M<;Gt&5X{~NHm|JA?JkmPboDeZ8monTn=kSZrr0x|`_!@EYWkMr5mi2q zKez#@{e_*bf1_=;-L0nS*!=5B_U-~#!lHk;4*4Od;Tg;HqXfs*KH2tU^7t;V%wx16 zc`gpnFrPxaIiA>@)mXGTl@ybhTg(TO(g@ndc(cCJbGyz_K6f)gp+;MDU8(JY-C3j5jO<<|=Ioi- z64N3Y_7^(t`WNxW$Fu?(;lJV~ztAxcYLk=az0%Op56GO1KReII(%BqTSs&~1d}iY_ zj_<1wK&Tkp9r{EFER=yjd`1(Cuho+YluUT3LFO)P8?h55W*wjx+U zM2mWt28(AkUoNQ1EPDdN&9+2Jq4>NZn>@N^p96WzCcP^um`z#XkAHvb&oa%pRR>Eh zz>bK>`_Z-d`gW$<5thxA>&U=={3sJzOYoO#CS$J1!~_WZv7LoC);m*su>gHrSM6_` ziuFt|o10M*eWEJcj7-SN4!N$D;ds6ev5O7Not3cl$~3!^WY-0kk_1~N0Op&(NviR- zn6hW&qtIWJotwwtm9@$9CW6_)EFjd3D`K?|l|*hH=Qp)JF^QYuq1+`Ol^j&MUBWUwopy=-9(e->n5Qu;VZ!H?HpOoYH{uG}c#SxUA6lJFz? zC_I3J91{aOsDapCz<*1ZDFp_v1$J&XkH z&mdH{I5&%=@I_LEvm@wNKCj#wkhE9}w*%CrA;YXnbd?tzLDp+~J8d3p5Y3vytn4Uq zV5cMk8ygQZdCnpNJy2M#PlFN!A#HLy+l_M)b~T~0>Bu3q7%>yH21fHiW4CNVA38mz zc*r_}?+HCv9BxoHXa#}`5hx1tjUoXtF4})(sifB^y7_-|9>=CJTBIT)=q<;8U=pV{ z`uVO=EYzb!B{_P%31+SiTpMjkVy&fV&B%gEmZnDoVV@ilzpM`@dPuC^zE(u(C!%yc zaXXtC*IOYy+O9-IBUkterRFnW?p&6}F8khME_d)^*|#%;dCl?>y?{Jlykv4)xll{# zHsbRRQ*5}M){06crJ;uo|MIrTDS%KL%r#!c9`w@k`6R@?#3&6I`mNy+-xu`Kgj~H# z{a!7H@AdiVkoc&qMO$h?Jxa~_OzHQ`i6prQi(GvTI$75_L=s%h02ryM8Afdo=5~Z8 zfZ9!5j~bQ!+lT-%+ey(FH=B^^M5d4qDPs2mg8Js&UDO7vqpMrpnIVF{l zf*MumW=>|!T_H3q4!GW8bWxeIo&xn-@y4`M(Ene(*uHo`Yumw4Dkb|6Ke_-1qv-Z_a|z}^9;}e!dk}l6q5Xua#{tQYF#rPt zGdPG3CpbHg^2~WQ7VQSZYUtM0&vd|VYrGunQa8>ktPELS*QpeT&ixC6j!t|0r!-HO znO;Z-774jp5i7@dKk}PZSD~D}=;*(MUgn_4Q4*d#p+(tTYv-Ulg08 z$(`NJ{tLEr@q^Lu)}?)O3FKlxR3f$|l=lr`cN`s93|rg4<|M=%GQo))1V$)V)J_xp z2X(0+ST-(*6crc4Re5N5n0Kx!4k%`u;<2rL6h_NV=#OSkUho?n)a!{vpz%BBKr>N* zw;iQWlMdLjcuCeF6J1E!008LgbTOj zT44dn+UiU|c??^NDwU@`q%j#1S;6KXeQlec1UK=t2}u6BiO#_egjb)?($DZz3vpOv z&kvB~39NRC`%uFaiWsPonWY3gSN!V6z`S7EzwD`F{bZEPD#5Ka2=f^_PErzJs|bNq zO$uv2Fj7LG<^^-h;Y@{)MT9=P%Hud}_Z{SfXh?x8v+~x)aA=JS<{T(l;GxHn2p+>! zC8L;-y_sPdiQ4fu7Vvmme=jlg|K6cUTp>cEk|WOzb5ZrVKYJmaMyXnyqR^yj*hQkG z7C7Iq=BT!%X1n5zO88apw1MZ1IB<658)R9~VVGAy*(8K~nav+W%NF{HhsNAa~;KyEg-^NUR_K8aS0*+s3_}TZ`?4=)|tCkQoEnVWsa7~=l zKZwO;#}oF}Dp1y`CDSd6Ay-VFmlgRTf)=?1gzKyr2YP)QuxrOxPKglDK^zBgG;g>1{g@} zM%8$CqB2T@?B4R{fkWT6ljwYxED~_iftlU!D zTe$lo>fQp(@z7e8Xru=JG9d6MTUb0wka|VNhKl zcj1KNts)7Ev6y8ooAMKBO8XJ|J(FZS*6UiKPFP!a3ytlyfxIMGWV?kl7bw2yD2W@r zl?*C^>H2B)LBs!qNbJiK`?Fx(@QQ1FpM3_th}6!&&o`L? zPwW+9Kw_^wwgdRP|+ zIIwcN!b0kgp6O!9cN-i!H_hKzrt7~_aF3K09fGJBrFueMkT7A1F!Jm`C*~q%jUAZ# zfJ}=C90YjcNQVTvW6!lo^!mJglIyivbW|-){|YG6Ls+gnC8Vm3$KDq(r_|9tiBk-A zw|0THE~D>;U%BlCrqZ)t=JZZzfTaiu-!yuu|MEr%ix1xXS!ilXd|8%;b)ogz^*tpe zg_bvBH!7*+U#)WUcOfZMR3W}zNBUOiuB$xUsVkVm>rz^y5%UQLL`X$<1*g{W#+^dS3(FDTs%danUfwKJsnkS?$9quA`d_iuQR~@ZaA!hdK^q zX{E-GdwUL}0ktc_)mPCvZ(7AhiaFVU7}>4&=SR0OT21acfnM0X{)t{0F~`gF`CD|r zi}+Qk5g0(vmi!i5mPPwzx#119`F_pZ&Nhf!j5C{YM)hey&AY7CFz!;lIw~*}Az)2R z_@TR)E+yKE0xTyWIRr<*_0rt5BYR(67wX%TeLPo!=;f9ZZ{LY1RuiPC#OO9Oe)5yi zwi~` zYFwlHqqCZ?U5s%Yt61pw0aDTquoy;$&7TRVzUX_p3)MESOyyd>5GxN6e=GIS{p*3B z#Bt~E#nt77yCQ**1;%IuL~j;s&9{_mGI1mLt#%ip?FzX5TKh*{1x=|)|@d54t z>5|`tu+NI@)h;(>LsVDfhq?nwwxYiyT5|%Av8+9?x%y_WEyX(+D8LbGew#7AYo57!jHcR{GDT^acqYi@Rrh6Wol872ZFTAE)xM8h7oA--$4*;^wo>bX}VWFuw(Ur-!Q@f4~dU2|zN z{C%duIj=xO0OtFLQxqVgs09eTA2uk|eh4a9vSz}zkQ_;IEx%dK0Q9Y0$zF$f?6GgE zuIsJA#mS|@<5)yqkM~oWkUII-EAw-3JL`Li#Afd}rvHt6$_mhfJA=+u0_EMi<|I>4J)E zZ^#(_nDIfw24Fqbx8V3*>f>=?Mj#D2YV1BSwcA>yTkvE9@W+nCwck$jod>)&+O5-{ zxcVklARozBBM{+5+U?NFeaU$lr<0US`v*yw*$^=0L-q>1caCR-A;F>Zn(>`*gH-6p z-;OE2fWiPVRtS_;s8Vu59612|o~gFpR%O7l3$edTR`oF$@*lD9r6nujeVr}R^g)G1 zM`2fu>4CSxq-KQVhgWxV0ge=GEn%}G+LrAzw&p$4&fZP6d;{9w9rCq`2s)(V#5DhuqC++-nDSlUSVpHZ|vVX=gMpCcTEIh|=GJ%M?9md)NgGsQr{`eZRPM1j@eO7rA3+u^W6 zSi?s9x^FkBqD-~bWQx{&${ytVc;iD==hW`4w9y5si=&z`TvqAjkKSfv1&q6M~+Qw87V7tdv~%v$QWGBqpKBr!Mp&6k851U$9->)Y%cH`SMrm)E(z(`@vT}~395_3 zT74h%?6NKsM4#Jy_LyL6C$U1b&5}B^{+nU+{1^UOvk`^!h4_H4^(P?A~|JRtXsMM=GScHJ`_xUP2Do&{- zDkw_p>riH|`-42zKib`G>Gn5t=D_EWae-Myd@Qak9v0)RtE1DiCn{qBOp-4td3mPY z!WT45MkLMrTzG1edetmd>E?zyNRN1kz5GF+8Z5Si<7b(@s%#Q1hQu>nxhd zQQs%CG@+pC9Ipg1E{8a7f%QA4SN2Dm?KBIeQW|BFLnAVpkg$zFNGALk_G4`lCBO_F z>3XX!2DGo}2A4AS7>s8!Jl;Bh|5)`FjRt*xG>NCdK<1O|Kv<-Nz|zwKpfpFIo1N|G z5%gPzF{yS6%2D?mp5lP;%PS1Z^&7NXTka5et3jwiI=lJ!h;?eSG&w=|D}Cy}j;mN9 z;?e{A()9a)+_^1glna>fzTcx0*|gklY??I!Y3BFZ=oR|PnhV)+cgqAg;*h(mYGnab z!z_@7vs>MFK}H-LW~({4?eY!R7wv;+h%yFhSiAF^M>%8!BI7d1NiSb5Jp|b-=a3E3 zV0vBdr5|JiT<$DjiD(wPH^c&}0gE4$?=D+Coy#4fVeL$yhHEj^ORS-O$^`o9cFEVE zhmg&B3rvL-l<&^U?k`b?_{q!{=qJ(w;lY2#_kRU^&I-G1U;qM7S3j3^P6;MN>MQ1StuMv_L`$ffR0h-|u|ibMATWbM8I&p63qP?6qglo;_=3)?TxIYt8Y@@e<(F zEfaGS0231vAeZq6IL0wwH#al{-LbVcF~4ohxB&n#U%X*-)0p`b0N@`G9B6BL^PHoT z^Er+m08Ri8KoD>lpy%!p^!Ub|JGTLh6aWeE{CocI6KM*-s0jcVSN&Vpe}C_Pdd2PW zI53z|ipn@HJ@gFn005XSGH7sE@MA_k(;EgY^Z@)X`r}_Z@Sd$9BfpP9pY;AWJ@J=* z@NfFpUpkP%1f$H}-}2u7qM14W(hvSkpZQA%dxrmgFTfD;I3m#3+b8(krHdCYp1bi7 z^1$=l-H4!IPye8E<^dj%z{ik4_h8S5jI#f3-`}SI{QoZax5pGTu3o*O_^;gm5C8og zhksYMYxA%EWfJ-JUwQxaB9D;3(Eqq%V!jLj{LilctByCP0RZcA0DzVHUwN8o0Ki)n z0Dv#&zw$0<005`d0f5do$5=qHak#G+0AOheP-4856Tr$O4q#(Ye`kOJlf-}0CQJ$d zmVf0l0{{uW0M`E~W5qcCO^o^YuV?;!W`4{3-%79~zGeAuG?VP#qQ`RpLjW@q)88L6 z>U_G#mgU7-T00L;#cgYHX|MlZgkj{;zX!ycWqOo)-sKmtC zWy=YD@7kZ=3-+JOM#AI$Yc(nP3tLmRJQp@H-N6@rilpNw-e}z}ytM{8nx;$CeSTjq zU)_8RnErOOl}!Ck=2)iikrj^tJ;0|xJ{TCrw^}gLhfbg?O=(&u9fj;{=j!~Z6<;8v zGPO#yRo8Mm7*blKTNJtzgpXW&eTCy{?l_se?B(WMP80Qe_v|S^5+GUaWSHZ2&^iCc z+0x?AXy|m+8y8c z_Pb%5US${u`!L@+%mq07QkccN#o$m)8{-={jD_wn{a+pt^7!A?m{oW^ysrgm$!AH_ zGsjY@!IlztlH{5v5pssYwKa)L)m#B*PZOd(B1S-Qq-og4!5#!gnWRoGe{ZoYtuwxd!?Sm=34B{yf0WS!MaDKWgg0VOOi#&E9!_4NOw{ z`qO`P9`1H;GaKd7oMqtxuW53SBnU161!8q zGKOUvu6jqD&JFeQlFb6we<(0ViUxa&{L1$Grtl7}6vMV~KZenXD0p1ww%sO z@7xV?)r|;PEVFF`+Pz2Q!{9^WE4|3VLnm)x$C zx|PI5$>h{m{eAu@N6yzg*b;HCb*`KOS-kTuS&>uW zU8mYHAhwJCr9NiC9>_;O6&`liK#~|xNvp@{@y1N1I>)C7rzIKXE_n97D>6AS5nz*n zx=+X65LCQUT@L#`?>}E2n&-9=xYliDAFwzD&u}Y*`;3C#fS5X^!^7y@(^&NEhjCH{ zVIVJRIfLB-Cl+&lEzJH4Zv4)ebjGa-&9w;u5kC2@Rb41aRUK=70bWKH7$j0fFkc~0m|JTDIC1!3B zl@SYDf`fRD0az_sNv*zPv0wrn7~(2#RA_@5>&{YmIj?#B_46TJrL3!0_iC+Qz>#&? z#L}f}2Yo;;@?D%(X9hSR0AGWY;=Mn+UQp(C>l?z?`<%cR$@^?eBLA5Bna|&{@I=4F zdkatES0ZbLv9NjsRYtSLBWa-h)p zaP(GsdNP-ZiG4S#L#v&O5hbf2j3Jt~r)`Xd0DljMBnyfj`50hB`?P7G0AA1|p4?KazQiQ-`K>9JjFJq?H zhA=W{J$o6Kkh&Se+cVYbkV@4njm}kU%G)(_`Ba&UaTm9$JFm8iQ#3LKCut*oEH;>K zVma_giZ0m!m(XQBXGp4>plaaev|3Rf)!~mU9vv#HwtvwyZ15>_NSl^F@gis{Ss<{( zaa#mOt*b@7amyGfm9+ajadynXx}yez&Yln1HSK^ZF=looSr5xW6=K1`@ElmndU7@{ z_gRGxChg;MW<^!;8*)8EZFH9b6`PkzPyKZ~QxhPa4xd}mR6&+OL8sPLV6zV1!vC@9 z=L6BsvqeHjIj)jiM*+gW7aJhG+n78O53T)?{x!-!(EAf~AXS)L3(?MdyD`4z>l=-= z^b*cmIgN0CA#7HOO2=tj@v_g6v6WUy-V)y#@5r)Ln|JMm7_V$vniB6J=a6)BWonkg zjsx)KM&B{u(a7xL;4z>nBri^L`vqN(koQ8tA$bC2F0a+rsq2i+5`;b?no@;9SntGONE!_3fY)1EOb7C974r#_1E&sd zHofTae3-t15!>_5xyS$OOX}w67qm8O=5Lz-J1O~o9*eE@R=sP}-=`)*{H?f9Wpy1= z-WZzHklt!c4t)|xum*9&OaYr9UFf9FD|4cW2JGNz@$bcp-n(qnAQyeF`E=|@)t=d( z)!5J4{nyXByKf_Rg5iYQAdy!F4tN;FK{-_Z9$`%?k8}{CzBVXf(;XDH*DS>v5cjW9Igi5O$+MT`JYs_f0 z%}^68En>p-3h$nC?o_zeZdfmzti0F@N`^OmFDJly+)k5Qj{&EGMUcAR^VMS!9`wHC z<*z%H?XM7dCvG>CZhQR>G1Nc1$K4K~9`40nj z*Kp^r{me%cXJTigNL-1pE>s#ke+!#a_VS$oApNv-LBvBZJ2PCMRcQQf2BwtGt+Rxl zWx*xH>&p=JdO<=V*Bk}{RQGfU2hS166#rX)9%V^5uAodn*F56QZ+o+v)Eoms9Mc_o z#gnO)jN$LF4nvrR352UJ4acpdcn25X&$R{XB7byvr_yFaSDX2Z*ID>*S{IxC2#+=w z?xo~(LYsFwz83s?@$0}GNaenzcqA{oFl}D86^Twl`)|KEdxBgj`W)&?l<#i!PV$%~sd_}?-pIyzbX?`(l;l@sT;JJn5teZPj-eUk8H?0t=uCs|Jijw}J747rh zT(M4cy8y?5`ar_rjIR=2*P$m(+y91^McbP9V-d0Y-SV?46G>c`too$Q6_0?VVI+t< zW*XFBnxwD!8G{^5-B;(b*53W&x)v65cA~B_@#V>16q7vntIOLiC7)M5_Z`$%A)6tY$MGFfJr3gKi*dn2&>*mfN38`| za9w1|K{do5^7xLJfMW3#%sq#n!Wc~zfZV+|Ty8u5!Q+3>ztQ08t!HcCeL5Q3Haq9- z&#mz8DYtSwt;|3sybvqZT?_78ogtx=mtqnp(kqodcU@{| zc*!Z9*ckv0M$*Gji{1wYU3`jt&6<&>V8278qpg=OR41Zl@mIk zqw9+HbYXLsNnu3Bph|jTE%mU#bgCSdSHfsoC4^=*?MO&HT3+9ET(}Y8D?TJr?)%HA z(WUwmX7l&m6HhNfw=tD;u8pN_%pfU^EK1ZFlz2eo=o*e(b{e1Cr2m6X2YaW^)&JCH z`{bgR1HH;V^Pc6K3Q!BU^kPv$--a>M9LP>MNr`0;-i~5L)>+QzrBpueqn|-`{HQ&D zG2cn1r8z!Y?6)0j#HCU_%|OKPGua5rf;IVqdde*+WfGcJozo`xAv`$aE9I1fp>65c zfQ%xbc5c;?++mnT>ZFzDFWhu4$`X387dCS=kWBqbt2zd_qv!NUo|AhcNw5Y{yx}rB zrB&*=+R`L4Bf(8+d{f|{FZZ$e%6;cKx4G+yI~D@3r(}e@Wiu~?CexVPJFGE+Bv{rT zY%cmkcqCB5huu}#8TmqPt3a)Gm-pL~Z)IF}zd3NPKmHmoY5Z`pMRCv`upW3ub;2648*^>4ay_Azixdeqw?X|56_KMJ@kkgvOA{GiYzni#7 z5}!7IwdEi5xud-9J~oPz%5lH|l^Kj9Ffz-N2&ynkKfEE2Dx5%iP2O07iEF+CvTmG} zXc^ty8#x8fe<>JJVP%bZfFXSJJRHTkue?MaB{SB`3(9y3C}#2)K-MDsIR+@Kw?tIA zg1KgoFr>wMlM4ml9nOgyr76r~7~E}G&u8DI?$5XsAC$L}dXaE40gK?eo{MovXd-LQ zDco~^5Py0~^A5*#;p?@@WIj>`<8x_GA3aKl-I5|1(>}#$tQklripHyp&a647<&0vU zNSOP2vUKOp4t>0j*={>)V! zNj)EigeO$lFb#lDpI88~Y(cu;1G5iM(HMxsj=%iMbdc8RAE`3JTbu1QO`t&k$jgfg z?~-GC+8qpO#Z(v{zA>7p*I#Tv=q$&oZ;BG=dDz$OGAg32_f?gwc6e{EpFC?Wn-0{W zol#af#pd|s^3dVjF@QszyiIyfOVyG(K@Fy58z_W-A6)vW3N8;H>21}SeNbo)(~N6N zj_|MGFI&e6Y^6)TG79~a?MLIK$i{p>6*C8FM8w4?Kv`)`KtH^7?^#ub$c5^n;`^FM zvKr>Tl^W??NHz|i4}ARD^qQ{?^q^W2_Y*of*}R)FN{Z%iR?@CiEz5Q-Du_DNa}7b= zi<<6IC(EOs9|OFt=d71a2M|n`O>3Z!o}0VcejVZwE+d)i4rxB(1N!Vf@V?JiEIljt z{n}2aF=M2cUZ1^EFg$&OR*&{`0mmAce(E6XtyWHaSY5Rqe~eJ0WyeUxOrSr4@XPMl z?Ku|QN+shKVCxWO$fEVjA97i;n^_D7vK_rdsDdl-LG@1>?H@l5`Q4j+8o zG;@=b)i96p>b|yxuHT+-`4BMIw!O0WZt_qWUJ`6$d_GRtuwR!zK*WbgT3J|7_Qz|> zTC}Gwifz?tEBe12xEl7z{a%PH_u)9ni7|!hs5-RzPPL6rZn9hn)#}q^yL{Ex((qXD zBBz_vtdD5DN*sP`>!Hn=Ko&u@pV?WRZ+~?B`GWc>w>6lLuiu+|OxLEp-Q#1WdJ-~v z593IsxDheqkO+p-;LNGn^v{7(HY#K}{m0Dxu|KVx&6n-$W$`=5fMgKCcAE_7(VUou6j( z*IOVmEUEpjHf8Z7C_Jo3yAGezIJPwEKGE}@E;+5+u~EOxcuTOYt<@O1&5MrL+4rM6 z%x2_JMnNL*3@Q)uPe4KyIgB(#HpeX{i5Q$B{OJR6xrJxgwX`*iZWv-J;mmU_gUl8RGKL&83eJpvF<&)YyOMEidbs>pRwhu+hPGiW^MmqMCcuG_b z_qPU@`#ttP<@V=dKhMdfJ1$cf$$!epg4nd}O)w7rOc7h;O)_pGBP2%>1banM4&qHQ z=O)i?=~)a_w1){gsp41OdM0t3#g$^j?hP2U5htVw3CDnL_n0%T;ZGiseO(rU=^J;0NiOv|98MS*>hajFjX7|@)eP@wS2 zJOUQ+q`?s44d!2zjn#QDEaa2Aqk!<1yt;7*dH-ui=LW2p5`el5G5zO%1kes0maVD6 z+gL<5LXzBOC9a-EwZ@LbN2V3$EN_dhPT6n24L`fGVm2z>UJOqBRkXaj?3?>tFZY?t zr5E~lI@T0a7xxeRkaKoFp>^NQeb9(CDLWgpI!VLxto$!c4K1#t7#jXGL-xR71W|lZ z1yr7l!ftO`NJ*@XL@Yu0%U27g`$VF;7mteqn&}@dTqM1c)Kb2B%W`gW?Q{iA=4|jWpyOfT=v-D> z$W`S54SO_Z%GNic`7mlNbmGx;3%wi2whi+}%nV{HU+CY%xrUklP)$c_UknIQy!*Z5 zHDxGBWy?Bnpd&C@**Tk(9e8UxtYP-_cuMNMhg+0`U2Y;A10rEYj{%;Gg1#6~QacB+ zus@^9xv=aL0rFG}$Uk?JC1+N%`A%!Uyx7c)>?!bU^#IxzG`oxQ9*`1TJAkvs7=)v- za&hHV@wi@7!b(zA`Ci-5Zn5R9?_st=ahN!V)Mc$#h!6<;=P>{Tn)IvnhHcy(hGDnp zLdSr2mnn`gY!*@K7$EIX7xN8NMZy_X5nlY2XC?3y+6xrhX+YNTtuZBzEUPDVs&`QO zrUEy_&t{i5zZSX}a-#y%C417ze3ym)qlehlG3`e5J`I}sJF5C@xv|i_R}Y}(Li zcXD(s1Hp;O^R5dI>I=19!{oxl&XOUjzi(!lZ2S~{piIah*^ra!VBH8f!A{k52{t%v zwZ2SpA}@xAsGrz4XyNx67pO1q%Q#@^e_dPG>S-`?6;on^j;13ItBLR~T_9C-gY<5! z{o0dvGwV_f=q_~ut(9^dR|&6tABevT!Q*=r{NkZ+E@eJIO$Zm(=bHn%D0J+_^4k%z_S@{Rg_zBD0xhQ;n3BaylE5Lp!ay+#2MfIF(4_W}Y)B&&ePD3vh zN+CxW-3nPG%X_}bJATIsIE!!>TmqP>{6Hd6gkM z#WCZp@T6_kzw>I=cEp4zH2_IlRY6wo-Cu%oH7=Q69U<5LdV;>pAEV*vYM39ZCHnLaJmR8F{r=pRWMUpuAl09 z^gI4xCM-&pI4FiQNd;KlE3lK7N2_M7AC?uODwXW#cSCPa)iq&-8*}DXYem6FEp8Mw z*N`U$HN>k@A`Is*Z!67xf`H$y3RvJsWl!Itg`v*YJD8DgoBJSal*#BS{StzT(w;n&CfY8<)Bg1EjA4mbW_@T)mNKD zktGA2$%;$xWS|7lpS_*{Pc}H`icUh#T~)V@g0QVN+b`JVJpXxKVP#=Tz98(ThmNSI z9G7Jc7z&^@=*#2$rIy3`rTD|!2JIKb33XNM@b~1PK4+slIxjq*TQ|S%_2q5Q+%*r* z%iWEz8nayac7FCu@&o23foVti3rFP_wu;)zu+at12Blel{GEx}4XzT&&UN&iyAHF+ zkRM&dKh#r&Bo{KA=;A^|WzZ$pF_lUB<{ye6cAp9d7^qLqd)IuO?Sh}6MAsWViC-Sw zv%6j*q_8ImTS6zrXwv7!IZ_w^c;;FRGx@6bW2jn|^_j--=gyrd$BKzilfj|bsnI{k zRP$zY+1Azv$(cR7>YGl))@f2K(V;&r%wifEI#NL{xW<0a6C?Mr2?=4FcbS>fo4f9h z;@=^0xFpT$UZFT3(}|LG-eY>*DmO@t_S_|Yv~T!Cgu4}4Zy&HU@s9tyPb)&`W) zd>_`o2U3*~WcB^DfmWILLEJ&N*LYJ)SvETuFJbSy@{A*h6m9u%P@cbjiKRe_aCiHK zn>?)o9k4j_r>g)GuQhDiB`%t}9V1PKJH}!R-7CJ9IR}j6KE38m_Wab+Q+lR(feElw ze%8l5YeNwLmi=`Tllt&{rJK zr?PpGq>|n!)&9++-@k6&&`eP=#52#I`Mm3DENCtcDb`$Raaog;swwn4n3W6pwplCD zjLEjVn=^$%ujb(W=OX9Y8YqgiFpnyi^_NWr4+%d_vh;6{UU^(sWA`fa=f!jBef%IX z#_Co92YLaM0)o|_M+O%L!ohtE=+%^yP3imYA`9xQX$S-;jcTC4+I@jIh z4n5qTO0fNC>C5l>X`!O4N97#>>b3G=g|Tvvv6A><3j zT?_-*gFcJqZ+g~dG}S3HOLiUz@!r{j8;_|z+Hw-2mZ|nyiiNC?Ho!kAVNc#_Ozo88 zh*^}>qwAgeRcWPOc?m^l(S!X$%^_T*9xkkFA3b#6SHz-B^bF0gOa}QtL(nDq=z>B6 zjI6M@Ir?i|yMoCRw|rqPZWdne>=AZ_PP)A9HcDJ3d6GjYw&8x`CbV*W9;~{QuXyy2 zj^+j;dp3J11aigXhLY)}hH8A6YnS&4(@1h5=_x}UIMRo8<*7oVq_8o~jHfV8Rn4M+ z!G6;_9}{{)Z7}QX$}ZZ8!<;D(E3{Sae3awS{uyv}z!@2{l1SrdoPLB9Yws}FnTpV8 zdlXo$eeE&dr)s-jAXeBvQqSOx)@c%b@J4j^c6>2Ak;Ua&{zQ`$FUI%4L{!P`vWiBv zzuc*u?Se!f8s(SuBx1&aG(iASg``NX1XMrdnW&|963!xe%;lCTCb+Hq z(7WlA&4Fi9_ubieF~;PEy3n~JC|2t+^6e;E9?a9?nnWK=tW(2R=hVFEdl%KM!X-4{ z=M$ol->Z0-Yfn4)VB^TeUUt0zyABwMh4zBV#ZXVnv^*-1fFMOTh6ksKoj^HcFU@a= zrgIcU1om#5pJ%D${*d@qNr8uN%O>Zl`V(LfamAwDK6kY|ytdr0PwQ%rFJ*gqkD^Ys zb_M2KI7o>ZF&1Jz&0KkIPm`01KL$Kc04}|3gms$&y_F$i^pTfCp2Q98ts;vaRC9K8 z!JoTHr*DzYKJGqw>+q$9%)>6;&kbgiB@A_Z#F+dbM)-g~MPsN0`XHyKQ-`Wywl^X= zd*9?-;hnkH<2GhbnV>zX4R2Y#<~#b^`5Z)FrG(JuVouYZ(>cs>BWG`f)vO=o{B+id z*Vm~`JAxdZ$Xzl#K0Y_2)i*qfM+0Z zCn6MM*6>{}(!I}{Gq+Deo=l{G+9L5ydq{YJ|FCLZ;gn5V z-NZ5nY(XC47=kV(N1}q8Y*90NHrLN(KOaXRng3$H8V0h|D?d6fQVpi4ibSAArU6OVcA{rQA{iaCxONUUQ$_l2%g>KFl*ciQ4nOatw$Z z@*A{MbpP|Mc}o2Q+yd0v3O)>&pRgWFEO$xFH4}3^!)|}~W!K)hgUWlMxtYGC%o`p; zkGq*Um(#VlGvA-)e)|}}a=MC(MeLey8|bDTz7EUqZ;E|qm|A%i)YD`e9PD)XfG27U zs$4b?7Hz2SN|y+Cc95kgiIeZrc{9nrRXz;cz><}mL1Y(A=?6+uoob-hC-aX!ALv|A zn1MBn&Xql5@V_=eRogKQ40W%I*Sg$n~Rgyd%O$_Sp6#GbM?*t@t>!y|VzIS%% zXDtq>4LK1RY+pW@PeQfKe6~$skD5}-!$SbS04v69_pG@5U^2&ZX8{!$9 zm9}W?YdthasceSw$lwO4LV3$!DHah^z>`hUqS)bh6C)je39$GxLpsJ!_a>_2?zB78k!nIr3*7P6<_b!W#)ZPHuKCK3$`6&&b|HK z&dYO{Rs_Ac_)%&z4u+sl=+@|Fq-xFE!vx8le=L$M;?UDtdgaVtty42Dc?t~syZgO> zgru`|$qQSMVrUG&%afwv2NKlc6AJ$`kZYhs%q{gOTMIjiu9~ccq?gJiuWH}HFbP%j z_P5v9RG7LZ@9NX<_=*(V`JDpeo(yHk)QE!Qsx=w$ArF z_^EL!aZnh7RqxIaAor5K5)&By^EB~?k(!ZSuNOE82D#JxBl_ZgKMxODQ-=jF$t+q6 z*PA^TF;l^R-OMtV&RBtCdPzAThGE$)8lxD_@c)PPK@z81QK`tbVZEM%gFMExN?TtL zpZqfwU+7<{auj7`FQM1{JL_Rc))jcv=hUD*oy}-U09j^PJ{^vA=ylSE)Vh-OdYnV+ zMU#+GVsRPCD#gB=SvylZUYA@GatG`M8(tJSc_yuxEZPYx>Q%lt@ zm1}-_a3a4xT<9euW$@Eub+4D;-Rq@f8;2#m*ofvlq!=tY5OLgyKBc!G+* z?aI&fqv!tm%I0$Y1z8-@^Cscv{)w4fBsh$SK{;sU!HZl_C9<{u^1O@_@e5RQ44dKv zRs}gu!5aFh)2FJt{;@QeuWUl)dIf$Nz&7K~n4>9TK&mnyS@{n>Vu==R$~Ktx4*}K3 zD;1odwKLkZTXFwVx`E@CiuN1tvwpvJ03}2iRy2vukge`0x}aa{cDz;}If5XMZLUJh zY#{ul*HGds)sIyy8@{Gx-O8=kEW9CigY{X?1>b&)nHx|w-J`NUcVl+!WPU4N=#~D}aP$ks)V^?tbY(zUjc>EAzI&-3sJQy2H}+b8 zIAb|5NGh8~dmIC1T|h)sY?Gw2ee;;V+7=SrVQ;-BsWv5X_0PPlvb6c*-C-dSn|=wF z6*n2ddI^ItiZRraXu28A(2v;B5WYAmp7!%tOCCl95uX}zk$&FoRsyr!LO>-t7(Ye;jL8p43~GY+|T-s6Q5+v$T0x04-s|^ z54$;LBz00>OWEY;wt%dKiW%{SazyBtZ|07Li94aG4K&fEkwg)O>I0RLt4&a!vEOzFfE3)3@zRqWgCw0msi>FO{!qF+l&$#?IPV>DEu<`zcAP=ic}h*has! z4hqju869e|;dkfT)vOYZCK470MT_Og{#aKRoHj!|Idj`^yat%4B9Zkq**xpEEGCuQ z!U0x<*sf5{nN9iAh%DgJGZ4GJHQ|6HJ=yL{T<$GE$LYg}sDY#HK1rCxWlW{V0Ml4@?(1DKPqSSZkpRa4A70P^oN#X>0mj|_gfQM4c4YFp0FkukZ?$8i zU0rVK?cvWy`sH%JOvB zUQqFqu;jpIOr;x{5hQpOB!y#ISR|(UkVPa(>dg(13**~)BiXAx-o`PFwtg1-CzSjpu z26yN3zQ*5BkXV!#M4VSuG#W^r+&Q}k2vwXnW| z+D!*k;r3~quahm-V|L*Q&Vqwz zl@L<05I)zhDqdTkVBL|d_p0gR&EY?vGm|bnNR+*PU#QBY`jsD8?3R)R^2&xXdV9WK ztsynW`AcB=>3gvUrQaq=L8GQtb$XqnuWBnb4nT3s&wF(*q?Nk4nn2te%*L+Do_*9K zYaGh+rkU%0=J@0NS}`r?`x)lYrTW>t1&2*Hv0%DzF4G+S3_gbIyokpL4DysI!H#8*eN3$;+1McQ>ss_k9_zX>`?v+ol`kd;O%F1XN znsXrqlQ$61`wZzz^E>j!vk=C6oJA9<>V$RmQ!{>dyj(#&+TyvTnl@`X2YMJq?}BSu z0S|YW2L;b3YIYm#=;+uD1cDbYb>x!Nda%PJ-B<^=PmSnK9oji$H# z;ci-BzVMc^Z^CttO?o)KHE(TZtHnJoJ~@`2eQ`DySciV zOLldG*A15gc;%_|4GR~aio?6><60F<8&=4DoMD6xy{!D7hGef{DhYpsALxccSaGXvS# zFCq?_J4+bYbngG|h{zakSa&4)(PD~$B^aTlE5*rN#1!5s5oJ=d% z3ZfA`ha$>8cm83@Z|GwLH8>@yn9CN>bl)Yq@jvO@ItKje5ST;G&DT#f{VE4Lxlk9Y z$LLAHrYj>!42W`RTh!S%3-}!9&NugfzNa`Vyxn_PEA25OCOCX93a|AA)~$#3*~UcC zxfuZ#Y^;q$5I&#a&<|@o=pK2l&4_y9i{DREJDTzja&1Y&pDzFxwuQ&coQt(s;So2f zZ|rk&N^YQMQx(Z^AE1V)>0dhv zdWuxIjPrDiO3VNn1x$<4hFW~G^u~#%EMikrkC3FFsvY&dLj4|(%K9OkcK2=+eQ=74 z`Qh*;{5dHlp-UIlr$|>O2Z0Fa=j}}1zL8Ly;LKt78dH^kU9G0jZCNr3Q++;5^LInr zE0LOI3hF9qe9JZFpnA_W4Ou13+B`kE+2J28T5X^Pr=Mh>n!2Ek{`d#~ZO7v`FX6i} zDzXO||W(m)^X^Q>PR#@+0>OdRSuTr?|-+t&FtnHkv%AQNvkh&KtwAvC*{ha z$D@Z!62Gi&X$enGj*kN6e;wslHMLZ=8Ked8nk4i>5?W1rtP>*n;`EukMT$zoy{%AV zO&gB!0vHTuu0pBJjFNOlPxJeCZ~iD{1!lKJHh2iLmP%$y{{8@Rw&49@DjRg(#9T=C zq73V$;!;c}fc8qukul(zQoL%Lz@^G#fB=-~9b?AG+LL00Cx6JmZYHrV~aYcW2Iyz7hHNEh`J)O!q1seBStux|ePxXbLq2hBhi zSLsvR-XW}6bKjD0%wG6?IQnGMK%iw(9jaVmxtyY>3UtmLlSd;PTfx;);Mk`_XYOh~ zX?lx{bmj-vCnMK-3=N)6b3rJA<8 z)WxA!iL`-oa0z+CsO<-2Wqidk02jL=l7tcU^mO3<75k<4+Kn>~gHlbfZg|Qfn*kg7 zD=C_mMi(c;2hfD3c4ZX-s?&u2jdCX*NoV4;Rn9hE+5)DivNw@zmR2Jx+#J7f<(Wjn z;=Ox2#*6u`=FS#}rHIxe%+cypRjAVCCr`2#)QGSzdy^5fE-tI{Nd1g{7^l7ip^$X# zBRPs9GK8I%a{bX{q0Z~0Q_%g=Y4wLm=3MmqesPVWr8wt%PhUB?3X7Xfrqm%evnd+k zQ6wE&vAzc34>rZsx`G@yQEo!lLv-Z_LC8vAzOd%UbD9iaTBNO_Hn>sB1(&hE(xyQ|<{<6EmX${%J?dR=m*h8zlg!haX z3jeWobG-(VmH_;V()d2YM3u$8*2wLH+33$yBQlVoug(w`lhFa{{Ln}m z682zw?sA{O`5(UuO~{~kYw(k50h(ym)vaW?Pc|AEx<#W47hWsQiP!kdU6HygMZO~H zI4Je;06%^Vh-cs&unbAPnwova@e&-LRWHVWzM(S0BA=n6 zu~|FFCfAH1AjX=0@-*$;bPpLMH+`amdtiR~jEQRP*wnDc z8ENNtPnn;&J*P;=jNYYB!nw+b!xhPz87DTxi+&KA@PVG$_s3*lYKyj>Gw)hE8*IHfB!ejGB6*D+s(}T<^pCb3+6I?RpMXX zUOoTt{?f0zm1>U7s4VA0A3VfGySS=0^!!4oFQtmMeGguo*N7RhoILuV+|#6v*}l&( z4N9Gl0bK(G&%{wpAd543xc%UZ)s8^8);Il04SOll8ZUo_cVHcPh4zuAzL*Ip_& zMLN`m5wJhHpP-3`_uTH~;Ad5!?`SI=GR95UG>YQ?$ZPe)^Bja|A?6?p6AE z@>lHk^8ln?^)<=aTuYr>ZxrGn-uFBs^6OaxI8WjeH=t)20x&ugGqT8|$%r!(r#*xD zFY=LHdPQv3j=bPtLZ@*uM(8xa>rp);zCQPXg@E}5v{iKuIiJXLkDykH_0iYCN{00- z;&{ETUE1-#y5zX0AbwR6Q3qW+_4?kxdn5OsO(}8uOO?Sb>I|uSnjM|9*O|N%?fBtS zb0s7$@({JYiSXadGlFv9VB{-${Zj=GGnPhX3`sNS4(?FnC;}a9_L{_Qv}<;jVi^c0 zSZ!nUNX3j+e}Hx0P@y_dyr9BF&?b!#v^4yx;QMoIhlfQcvheSHa5Gf>bl- zxvaz3fy|mmL=pQ3HRwqCf>hJ+pG{xN`EUxZBBjK4;R1}=*A^_Wme<l-2DcuD%c zYWuHScSHMkK8In-Uut7l(R}-J#{i*lKBEb$Lq%QM2S4pou5P{?Pe{)^E)UcYl5WZ8 z*C)BoIb8WZ`o`{VLw2FVZ>ogV$oHw%&9SH%JHaP59W97m^J;|bR<`S1uw9T_@~$;z zgOrlNa5(cdJ^($lLIqEs7SJnQ8a?Ud{!`x#lpJ9KvjM^rmtU#sj8nla+D9@>r8n zk5V$?&Y0TUANxF?Q$PA1;01ZW2{(rLzy3y_p|%HsxX66V-x>G{YZxsaM|Po@GqzG> zQt$krN*Givsk8eUcoNeL-fjo)UN7)Gr;u89rH(54nY+5`K%)jh1Y;F5NiGO=w3oyPdM|x7xVZ+1ik2 z+uDN4B1L`9HRJ7g(`;`uCz~x@+g6|XT)Kbnw{ZJ7^ni!?*)$p`4M&TrG&)7m;87rMIDN(#6f zhEW;8fqkoAUz%#|c;hcqfK*E|YH5hkx&$~Ua!&olfr0doib?tfKLfe?0;yAL?7#e4 ze@$zz+y23$L~T0i(;g@*yO}F$3|xd=e_zS*d3$VaZrFvI6+J~$0mYDf4L;Bu3f7`# z*CQBl{6K;>3}d)t(6OYfF5u@T&`2~=tX$VQdgKS;ecqbV7B2ZIZUwdLE(mZ|*NLQl zDGNQ)&H!Wa(o?;LvC1yWr)?J&IP?4r#TD#~C7%KS*FFpj<>sM4Ytfk5;I`&X`?;@> z>Fowe-b3LfIzxTNLc=X^ruZ~(VqTx~NYeLm_QHy_16}SRzu+{ZwP^>@P{CW`KYy~v zudG#YomrDG7dp8*ASbh+P~xjF98ff!z12=JD14i>lKPeu3DkxO0m>hZaBVJU!G~Tn%+~zt(;}Ux32tp1iFKN0=RwLYt;pUPu3!2!_6N**FOx5gbu+05i-E>`DhktT zM=RP3khPd8d&UNUaoedihV=k}9PDpTFe1XQLvx53q#Ll=YFt7e1S3I$5k^uCE>f>g zZr38KtpVmWYeyl^CV0!6v$cNLerv`V=WG6Ytz>z5fHjXtywqwSn`FxH*19YgIgnnG zpHobHol(7b*fPCLbKYP;j}oyD;R}!X-sR{B$rZ`v+;T+D|H(~L8koM}*vKxtj}%tZ zcqMsNx$-P1w;)Dj+A{=Mdn-Womag6|sLl1r`3PTAGrL1$IBJ5hQ%N}3i-QG;DSh{f zS?C4AKt5I?T64tExkGgBOk&1y@mFRv7s=l61s#>Bou zlCu1@NdXp9R`{d&#i4bidHznF!`U=hnt-`_i$W*yz;)^w13?k`-;JRBtzY;zy1A<{ zfn-g@Zzt7J&B0|pN4Hy>D+*YICm@^nCqYlVc@)&pKJj9zLm2{W`N@|IrWmn@-p(h> z5t-YIyMGZq!LW595q#EOKk1H~B-hrU9+n?beKn{mr9*dwAvsn+nC z_^YW%qk6M7xuVoOd?jzCpSin=MPCR>So_M<>7JV(l1l+hPZcM}-OBuizbFmu{rtk! z@3egY15IYl^pN388}LNf$&h&tv*{4niTfM&f=;H@YqwLPEAmfO!UM*XrN89=tohP) zk%QwjA{)Jw`F9J2K0k4z|LobUYdqNg={~&kcyDgQyw1#~ispO&y_PM*&x7nyZ9H>H zavu3-O)`hP9z_4$k5GsNVSt8&UyMy;B}7529b>(^|KvkO30Aq#=NI~{(GMhY!r_kP z2?GDs==2v{GHFL|s|*BU20?rVeDtpc4&5Efz0JDQy)+$b-Qd>$gSYpJYU&H4eNj{t z1f=((RH=#-krEqS2%vxvAu1wGh#(M3NW_M8=~5%TgVI8ebO90R5~Ky`1QLX>AtB!V zKX;t_aL%~p={_VpF$meKd~446{g!tlw};jG`|nP6E%r$jodZ(3)%@_ZnON=ePmK>& z#w+1HYWV&^nWN=<38@!CSu*`nUDuoykfg<*zwLkr6@T7!EK8dLdLR{23yDNj zwZM=i)3bAf3#lWgGr;Muc{rvhYT|E?_`o{a~^ByM*H zRXU$DHHN%}t=KrM&wJwK7gXWeM6>CthE-8xz*OeTU%0=^6U6Eo^HTP<^gix`=a=Gk z71F6 z48No5TD%0xgfbZ3jt$3y{o2n0HMWKOWQ!_{RJ&&`1TK+V1TOa$*K%>56U_4r)3uGS z=zDXrA%0Bfx-%pPQVrd7E@1TI#1+T4TC9jw62M&V3&Idlf)|K23mDTl@9AAXG3-_U zPTo0EevEYQMoNOwscTZ4J)}#!GGhul4q*RYa&nYZ5m!fJfK~>&h_@s{cz~ zFw7-oXEF0j%8s>#=37x-$EygzqEVxOKgrFqV_u$D4JruSnTeUi@;{UPeX@)I->v+~ z+rt#j?$A>!^Qm;6zl$n0i*fJfYUN(h_2wa*H_E10(OMKnR{5{MFeO|2^P?Z^JyJ1G zYt&?#e&_6@+=m1pds`L3kq*dYjekB0(-(4YGQ?wu07@s%AXn@CmSCU2`+_?0+qn7! ze#EsA6Xy?|@;XnVoO3|n$>Fi2Yaiy%8J^Z#wK@Gs5?nf1ZrsZs&G4pA(8l);imEJ{ z6Ns(T?w&_K2&js-Bh5Oz09ZW6N(e9};ez^#=y9|p3^J8REb7w1zP^^^<59h;w&t1V zwr|;6GFYtmtf3Y*K5+qdQB(2v;Mv!Mez8*f+ufY}|GAE5F^?sf06A)3T_mlesVA)H z*P7EgO83V}x=DGhE#=_3nD&X$Ie4J}=0n2O5Bx0AlVgS_F4pFfer!5NuV^2xr1wg& zw_MYg#77y1<;L;#J#K<|!XHJ^ZdCBi8sM~aP@U(3q>75UtHdDTJSt>l->w?uvNx@yoL=mLO_Gx=_N zMgCgqVc{2zo}8dECy#5H5y~^9@v$AKdaRWVuXj>uu0rmGTzS?{b~lJ(Dxr5f4`V9B zgAZ+%mRjOFLwHT32;aWhxUkNbsb!uMJQwgXuq3*`G^4sX_+T#HAb)nab*5=8G`_r1 zPEna}ylTq4PZOV3#7me?otc^2QSD%GQi@1MG^-&ZJ7j*J6jKSXEu8G`iFbacui`c` zbBp*{SaBe^0o$c0$X{P0V&iF-xSwkGB}!&;zf29sm}qH90ur$ zG1Il@A>kPJ#5-hCRU$Q`h}+SFr$#+-=63`0_l9iOl%OZ;JEogK8iW>4S>0}1g0I?@ z*Bf@ypNO9rLKoqV4#8_v8+onC$-8PMCO^#GrN^5JJeBQiTteJtX6l|eIBs}cb7}4R z4E6ZiRjtm$B>mzhge&gDds8}auv0Fl+=`6`r8FiRsb93YLWIy%3`b3da6=}iA zq2&QsDZw-NR1GKAHORXwzbxUjR1ygtq<2O8se1M!Y-b- zV7Ym{s-$e^7WEmhjiInH*!F2wbjMM&2ugZZIM(VUzhy;o+y^zKGr!TKE7YLm}^OOdeCU_P=6 zObYOWvBh_wpuTSmB=T*?s9gB+(`BSZDyS5;A&~G;Ijea(578)-6eP7QP5(5%IHxZj zIE=m!sAw@k9Mz~0@)v9wb}6&3D+Yjx)K*xe3oG4yW7?{EqxROm=aVaQ|O!@mAFO7fd|5S44x1YvgnM#2dJKeVC z!Sz(T(<26KSGkSLV!oG+g*EybnRiZ9D(+v-#3d%Vgvhd{LQ$G|5{7hpXv*t$FAuum(i{ULKf{}Y87=Nl=1cIRmb3cg}-%u z)t^Z=x!hmwy!g#f8hN}~;unZ`@B|;i5d{&ej+oj~6)^K5uanoBb_prr8p(A9^8to+ zJXfcr`<);6znOoSE%ahXi&RFb>B94(oO94$A!H-_3c6}gu3P;fri)X=eyIX2;3gl% zJ$?I|A?c=D&$wm(MmB4W`ouq`7wF!9Ox1RsLx9}m=3ox}8gRz>RK$WR8|-pI&>y(w z)`O>>&5fU#`#0HiGLQW{X=5YYZfNPx)8cQ|QjwS3WK_S8tf_8}jCAkOtO>3Q*`Y>- zK4I9}dU?dJHBlSg7h*W}ttX3OCwie_Ti#D!ynUx`{k`ju=?qEXCnoA_Ko%+G;~mxeBsn!k$X=$M8+cw*Oz9>JV=hWFr{+6F~! z&bmR+oi`n6@yQ>`bDCM(%w6#EKG%CG=Dj3;OcpX=CjJ}W0fqJi^#TmN=FN#AAdfi# zSulh}ztF}^b}ZMF5Nz?!mo!7LxqlK&y*_Gh*y*p(L%Ad>X%v^0_~yrGV$#DZMMdT2 zzuNlo4xSs$)&5)gMRINxv$W}C71Bmgky#y;Ws?(J$u9ve;Je&Ux>YH9ptoBf82$#4 zcn9AywrjErun$`go`A|9x97TV6q4PGnD|1r4#8{q#huj6r%8cSr{ zyE=9Y7>u^`e|9!o3T=5GzvvZj*wS2osZ?7!46cNd1gG*h`c>el3c#5G8uL{#+2`?O z@xnvZ_vh=#%FBKkf0V=t)?be)Bxzfki1M@x9YTrwU9CFvy&YhTw6ll1Tp0QmoJ^0Y zhF8z9wQP zjhSDqdP#+_ODa}6&}Ap!JzD(uU`LHV8Jj-8DKSyLVW|m7}#Zx zJ}~7>EQ@1vulUErBht!am~rpgll#&`&p*5x?znU;QPA4(xwd!(TmxLFo}koFa8Sg} zIm!iV=l+$2<+^L~p=oaAf0Bc~ty+pAdlW@)&nQ@DB2DlO6L0h?jNA7DM!&DNu+c&R zXCh>?%AXS6(Z&PhX}wv9QSq9`oSrEJ8)K>sH~c*x+x#cb#;U5zb8>xGqT-Ax?Dc^&fd@$f#IamQ0{xz!^Rarc3UY^P$ zc}v@#tINYgzJJa?403()<9`+1adi;!Lq(0CF25+tx=H-m7h1V7`TdJ|<$9`h?IiAR zcGyZ|ioIs6K%l`fo9nxwMtAFnHwlY&4X-9v;F$iU)hoJCI6p?*8d!Gwk+M8kq#{FnB#Lm2Ju}HM_i73 z82k92((fO_{SBn$1bIri{QTHq5tdz70>H92~xuZ%L`mPU$mlIs{bu8sBKP3J!2 z?i|(*a>oUf`|yRny?AdkgBIg9O0ARPAgQ)MTqOW`qjo4^ze_+EzS&8U>lD{+t9`pA zXMSP+w~~ATGrzycjZ^mlImjhqF@RyP+LJ}PF=BHI;oBi?qv%1bKS0%wN;dZ=4O&oRgnwKkh&8n)gYJm^!dn&=-Ctz8c>RVbaRO&!#%S{^}!xFfE-J&M=onPH6KtDz*G z5&{4Y%nm0lU}{lS$PMQt^Vxhd{pS5yM>pY+>&T1Ut(92sd#B);-@cYyXJ6>XT zqh?Dz4BCnw!m^-lk>k1`Li(rSW<(Nmr<3ZKMw}p^*yA87!X+-6ju3?9se# z8GUJJct^bGoiH)mqb=Pqh4f=iag{~N`FKB0YE4?SYBq{TpG$f+w~vtCtIZ~LtM8R& zW-fTPxx+@Rp|@%I6%%JdN=zpX#O#4B_9HzYwln@#rA#d7@ zQ*)&g*9up|q6d*W;xM@}eO1PIFiQtC+KCxJ)n6NW-{MJOB|<;1IovUkuGc(AqS+P& zj$D)Ge~yT;@B6(i?bB1ObFxx|%1;(=tptj|CU!(5K|gO{#+k?{d3IfkQuvJKE^_t9e*5&B)x5ht_7G_+tKs-I|3 zJzUFoKkcE^R{7*#_?@rf_f>)%OjWZl)g?X7a7+qv9@q#nRQ7u?fi#vqxR*aOot)AP zdgs~kNr@9%Gh#!vWrG+GPD0|1qxcrF!ayu>Ji9!b3wtlzV!W=|ZNvgfo&TLGy4 zYt&?BeqEupBSR-}g?96(aAhDS7QnejHL z*rSbQQXS3(Q#iu)pJKyaOiE5a#jVD&nEd>@f~RJY{EJb$k)z5)lPYBgXlYw_$mfzi zt7({ig`+0^1Yvb^cvsg~X}GMbJ^9@&<_|{2>UBF%I+tp1@b-Jm!$B=DT)W4X1?z&G zZn;rTzuMB)Fq9S8WI&%t*)hpB%Wxy%c*d(kCMU-8M=U5vi$T50^rnEn=2x!Pk6O=Y zVoL)&x9@;#RaYu#M!pIMeejqT^CGvoI<2nlGl4w!#w*N8$@Nu%k|7^&C8?x|zU()+ zm0)YW3~n`57;#xCF@HDB6{l&PsAG( z_vJgDnHbDJ>ue{L^Dx$Eq(pZ6iCKbevz|qyeEyXoygP;R|yjRciTYjVD>`)IX`8A$eerG#N7XvFFpuUWzfo{ih?I8%BUoreG zdK8`el&2+&b0WW-0@?1vGBTp3(wrUj(BCa`XU%K9hY1Je@9tbW`5AMkI9Go$Glc{j zc7${nU<^Dxk%}gUdOY~b7_>QkZ_*6?5YsN}4>^ar34S^CjIlX>{i}2hpnZO$Dx%t* zfCyWr$c1U>T^n-?I9K~@2&sNS(e-0N3-)Pp!kxG#iI>J64Dw)BC%BaopBgfwv8;Wx#I&uOU)`WiFD3Yf}k*9Q$4K=2Gt8NGkKxl#C zRIq8|watjW9!iaz9Yw^jqjbXIqjhYk!SX=U-n(Okk;)esiy=lDU44ZW-?OjZCqB7+ z>Z5!%^o!@R>M!Q`qG)h>M@fjbU1t15i(xxJYF#H$=TV_ss@(_2S@&xk86GL=C_7c} zZB{d>&`MHn%^lx|7o(=SdFR($Y<5gtQSPtisFs*2@nM!GrqS=((CSIYaA1Zk5GQeB(%v? z+*U7E+qioYWd=_0)}xxXDTU%Xb$m`JKnVrX!n4J`$;N)Ay{Cf;O{fP?HEO%+sr)(Gn}wS_fh%yqn;D6X8o* zn+LR8fEnYA2#s?l5J9~JFw<;No&dH?w<-2Z$qec|g#-MsS>85J!AHJD9cI1xWL`li zi#P0@%bs%A7Np z%^99<68|WDfxkz@qy`aRxy<0i*v%A-#(poU6shqI`mQ z;~nNa;Ai#*71&xI`!*RmrF4b#8+u}-dRs$tHc85er3d1lQcnqXONmg>?3 zEn7nqc1O*c>GKQ`3UpJM#v91oj$tPG%~-E=G~KZk2AK-Ws*mz+c)CdMr`PS8Nc+yH zC*1sMz@w-;sbIf&eXAJ+Z<3(KVAPL=oce&Q8di&W*MyAJ)$$~sB+n*Gq`DWHpzxmY z&JWI>NJk}yk$`!7v3fdc(BVc_@Pu%Qm}V4E|nX$ z?*77UNBNuEvl?kbnbg6AhaayOY;35W0Ui&u>+_AO!#QrI90tU@^Cg#?UixAne8PbF zr$U&+3+>XxATXva;c=`z5qCpoaAv&g`xgg7#~c3m2uD@kU@sB*64AyTILQ!@>-grSA%Z_)55I2$d9OZ@$|jzd@AP2kWb1gt!D|Ev zroAO(zGU;o8j65)h9Ge;FW1nlS|3l0YWEbpZZ?wEtWtcK5(&V-{!g+KnuQ z3xqBpx-;r(C}S8-$O5Oa`UK^6dS10;+~#qbZ`*<9$NS~KtQqhW-G0JRIb^0Utoja8F75O_k+!qks-Z6el z2$yly%mjCpeQS6ytk!&@X&3P)!aSA-f3qsCdoc?ate$qjHVa**CmG--$Rs>pg$MNHO!&lJq+$;TD4}Rk`ZD zaRYgKbB4S%XE|D7w#4H&S=10wnRcUR_w(n#L`k)%G~O%)hT~$|Zj--2%H5)#_~3+7vnRV}wUh$z$aA zgWDN1$>%OVJ%2Br@*7Wnt{N@_1eFBl-2@aVFYXW1FD`Nd*Xeg(6ipKz7!-O+cxi$N zj}+9p^oQ!LH_y&U-$;AnANyWTTfWzJrVVNKH_7g(RebdY`iJh$G`wA_o+f+5vpMwB z^e^HSrtVZYWt)iU<~$1s4}gw$)ZNNk3xj6XX;S=lsY9+Of5*er8lPS&7`rIDbVpm# z^~6Lf=^|y$=;$NF6)S==qR`Y@|PRTZxx^oBu1XS@Y*7q|(VCFl{k3um6S2 zMwKOJ;kzxNak@^E`d28ZXeQSQfBV@(k_F2Jt%eb>Z9j4Y!o* zI;3A|>*Cy&Se=s%|2(xmvl~hOeN-LE==g66NW8=fDgUwujHvHNTmds8Zl+#l>_hqC zz3-4ndr|3QaWlpl@!1&TweAt9u$ov0FsM>5G~;mjlQiJm;Txu+}TKZ>2(wK>2H`&P>k8KYQe^XtC(IK51*C z3sPq#EUKdL^TmpCAUMaF>IBR!$X5zjj-oIK@`}?XvE0A6C)?|vU}=4Pn*lt}qkU-c9J7zI3St;YpQVQPA>?nE76 zTcSyXuamdP80!28#1%T_+K%CXxIn}3wTL*4Ar>HD;QDZFRMopf{5$0>2g1zxTQ5pB z_$R3KtER_y)T3vNjdUe&s|6xGS7I2l83&HiI0whw8N77n+?Cg63;0FP*$IY?_gpAL z{0Ka>J%WfZ2D24`UfLbT#KeTY{!w0=ynXG6+pM??KY=3)aZa;MV$`)kLGa5vzM#xp zo%|r$J9|wCNCgcB0p{Tl3A8i-TY$gu=X}4mc!sX--Ex)W?6o*hp*cG{>|j;x&|$jowj9Adk8Xqb&*85G1W?~K`EiXK}t2|DqYuqk2%YfMusa{uWc(g&Fr;q zZOb0C$>t5Zh76>GL1cIPS(?L)GGfVeVu^&APtS%x1T>(rVBA3N4PB@puylaPH~DrC zT=9KJV4fJkfkMLc4Qh%>+MiSW?p~LEENXtgaqP2xP8FCHc;$s2yfz6+62gH-p!UC| ztf~u^Zk`i#=!<7d3s}1`mBO}G`9H_|$Sj0dyx0FOIUKX`m3Jx~fH8s$0+eFRGiFTTDaU z#=Cdx@dRZhpRI@Q)Uth#76q^0Hy~C4N};%pxHtNIKpE`@NL4SImw4@@kUc8_m}y*o zq`2zyo0oqwI0buh;5T8~bcCs@F3Y#=iBF0pobY@-9a>mDy*(9Fh`ST(@?>IAvsDT| zb6B}DA;GV&03hdGJM}_(ApCot=4_q%LSIs?#`f3>r}^@^N?Zea<(Qr`NoO*hk+e|_ zgYdx@<2sbtx<>#+S2h>)94xe2OcDM{C)AX{@4O`P-Z{QYg|eAA@N_n;qbcv5&4C@L zH3eg9RY_3VMLNe>gs#lu5RX&fO4nl{n@?lvq~lYnlDOoczvoj9L-pSGj7aqa@lji^ z7WFTwP@STXf0GxzGvm-M9=_%UVt&nNT=jtrMnlFEW*w=h*o)R0X%hm#-g~)N#G_F^ zDCe)C5)XkFqF_yU)=Rqj@+Kc&1eK2`;mw2m&3LQmA{oK5dXHiFaV(%Jo2IuPx9g=f z5ASZq3ZSl%zl&>5`1$cGJySQS1@Efp)%ZT}+*Tw}$hbRoP&?s9or6ZgeMa|DW}DU& zV+6vaD@I|vHL{m=s<+2MqrQd%TlQ6XyF4K<<%a0$8P;_XmJ@L|4IC>l%Kw-oc0BtE zvrBTdlSj5ocZV6~5cSciJWxY+pE-l~ywBjc@8FS&mVvTrMQwXOj$uzpbMu~J|#1I%HLb-_Dft_RPOhqBSu3Z*pl+3U5>67NR zOlIN4Zvhr@9#FQeQl?Bh0fV&L9xsitg1Yu9*o8DT3tf#ofzeG??yDwCu?({FE7fBw z6+xT$nWi{jR525r?^Tv?+heO6TG0g6upd<`OTmFM54j_sPfz zM?&#tRwLFMSwQo3Qot;vbS5PF-?RPFnu-*g#9o0WS5k&Sv(lir6fHivNw@oSe?42Q zA#xi!R;{D!5)O?PRz6-D#d)9$JoOgbCtTBj*VJOrLVk^LKjK_~ z$9nmji`Y>D(qwZMT20rl_GA#xJo@cjUa@4Sq_Pk#J;)pRHrJPucEa}nod%Z%&)f(U zOGw3kc|X@h_%ZD|N>%#{&Mxd(_yzuiA2d@;ZKiWVHLT)0hfe+$=c%?#0I>+eM8G+A zCAiikD=P6tuyxDVW75M)QHPfb*!tDl))<`k@g1gfGtIwc4_w3tA+2B!LneH%^4&PE z)t%!lE7W%KEl~MPV8{phUX^ML4e4;G%=}^^6#qnRYCzEXCHL2q)njrat-_JLTt*wb zMJCNJWZU+f9rzqUP)n0KV{x7n&`PE1Qo_H+{X({9D<2h;#D{tbbMH25L$&UtGoQ^C zARjfG$Ydo-`PTIR1vR{L{TKzPY_)mc_qE;k{ zA+lO?OZqX`7RKe|@yB@T#RZ36FXrT%pDX%=Uq`vsKwIk{jo^8DBYqfO-U8B!` zQAUB-Q!G;DUX5DU-uFu*jVN39TH#=x8z%HsX}1YCzMLztkKSA|Nzx@P={r?t1MP@I zq$rvz7@E=QMZ5t|3}@&9WHm30^|?7uTZhPv!}3}0j3N_vs;lynELNtwv$jNhN@Ya- zuWr3hmYl1(=2p>nIcS}G z@joWEUk_#ikv5cos$zmiaISlL=wNHjjiR-B1Tr*4eNs)@r;}UBYD+H7`=N!_mUVfa zffLlC4NjhMnn8FOS#Vd#2rA-mSUSXuUKtX@M{)g%2bA^0XxCBq0OfqZXhF3*1HwuV zd3OkB1=9a9L0>5%`2&WBbaDI}SIkZbCH9*;*n4}`oZoL)a?{$fe; z#FyLA{ntrC8$XYx4DKXvj#s7!msJP{c$yV?*^E!5s&M~7?oAt&*2m>-9$xtaKL;*r z4*I88@h56wkYBiNaZ#Xm(aY1+SeFlU58;J*B_7rXE|ReKIZA}kYBjI)>9M8D3pbb2ji#c@oX7Q)xmG~xZw=PW;^{cL=nlrb0cz}fQ-_Rf*er$=d9qgF>* zEo}at#4NksbF*%mc9#Rg?}kaXOpF+FO{}{u-o6*ad`f}qxy2>L`MK#yYQhK|NmJec z!yb-RV65aEV+4H#KZ0T|UnN*%QZ(aSD@}2Bj|Wj7=>sC>k`IU|QJGr90PaSX-PgB< zD_XR3r`8DSW+$`WoI#ubrJ9~dzI!1|Och1_GbROjDOg3^pWUQq6NkHXUm}y74b^}~ zSja|*Zym-2fvhLYj-z1U*m*GY4!lOkFz|{^tg!~-G~JJ4M{rI&maRDbX3VRA^_pUP zkdSER{1FSm=C8ne(A2{4(V4-i`wEl;W{$AxkE#OUL{bGdoFU^zaWp{qxcGPoDQVDr z6cq-RdbYiM&OIavBvHcMBK7^IW1tredWRbgO%6lA>q}-5o;Aha4bOB)Ej2Z%YI-m; zr<_tb)QNY&v;0EYgMWige>SOmxu7t40W&qdz(|~DSNK5~_uAyA*(TR{Ha;@2%r$T3 z>z~g$(Eg@zD7IJFd;Ip+@P#sCq&D-(*vp9Z6v|J!|-f1zUX=@*0Cus}6}+iz%TpUBmqS^3V>IqxqA&7PZg>lZP>G=6Aae zL(si#GJrVSvAE?SK|TTnV<;?pwUMNNNOogbn}?(fys?&aI8we@oPUQ2qh1Oaa2 zy(JFiA=Oxh2nq9#DYb3`UZavssWPjbU?C+|p_C`(knh*b=Lb)Lksjkz_T{LzEv=0z zCOg!mi_w}lzV((^-OH*p`)|Ga@Z%P7`zwYG74W6H9>^;)FYYY*HuCk$+yjTrr%c>; zxX*ht%`Z2=0c24J7ndNr?ejm`( z1=ID9DH_jRr7uBe89oMMSG2wMEI2Mwyu;C)F{tjjLYSU52r3{Lxr^pr6tZ72c~AqH zf>&3Om@9xp8?sU7wzy~0sk%im=C3LH=xgy4M6nxtK4J-1V8^`ctGnCG@Q^2AIRRm) zFD;~t=>3Vl=_U`0jXwFg5vz5AX&yDecdEY4z1#j^)&$m+u!d~(0_QUwFn4_+I>8WW zwZHIi9fPamdBtILYVlNSdP~)OD(OZp3IkLT2d^x|;uc8o+vM?g*z-H=--9F4iDvjY z!KDc2gr58J@26*O?nr;f30{rn-!lzRFzK!x%4`AWtsH z9U)s#JXAc>B>DA<$w345dzT(I<+ zt3;ap!}qfBxT`~Yp2KcsUbp~L6Gf?R{K72u^gpIm`!;ZcWEA{k>Ql#bw(4{JWBOSG z2H0L7f%Z>=C&4oVXr~}L|1lkFgMR%kVDyja=HNbqb5E6FlJ~!iMklRBIH2mfxkldZn3W&b zbtw<*=>kseZ;D^4L7eem_n$vt?+O5GGWQEzw~yODHHb=Z>3VmGc#$#}J@c^mRK9Q)|8w zQycdxA<&TaHFz>Yo&AO7NG{onUei*K)7sbM?pCfVUv}oX^Zk*n!C%cs4$aWlcoEDK z%u9SNnDe|$*QEH*MW~ZRIxeq**f3lP>h>7QDtB5)B{yO8Mm>0!YeOt?EwWGh-LKR* zc|q?+%efru3;og6FZ(1oiMPQNEfUWE81Z~7>+-4pH zv5*?6go2U}r>U>V^@W7`*eX;7dt=L$6Ol4%>Jdv#A77<0mzXy24;47RY#ds@UX4I^48NHcgo6aGx&oNw6hR4D_hW!SzE-;6{rDTPDKk zd=iUxo4sT#^~~h1L}dC$-GzgEgcskKI$a( zoLU-cL=U+Oyu{2mfl01_)Uv+%{a$b&qs|i@wME#LVN(OezlLzM=_hX0Awe&lb0CiZ z(}}I=&U)9b0D^yEnbPTf$}fJ;N6+sCWy93U)V6*IC2?OeW{Eslp)MU|wA?L0-34J{ zqtpkV-I1j}^8`-@mV%iq&2Ay%C zl$`_e`rE8(Ve2Hh@!S1(lNMCyU(80XtYEaZ!IM;Eh$a$Si`ldXpC}>2epIzh)&s-! zOm^f^pd_3f*sv#WT9mg(r08AS;!Cc+>U#G2yr^9U=#S^<^J0E>QntakD>Mpo;0lM@ zKhRi8QX4p1Pf}3)SkMDR2oa`Dgv2<`h%Xo9f6B>)Pg*Yfj$<`ZHh|AO9FRk9>QSV+ z4!!X2=_ZANEKoeGK06R1ydS#*;dE6g^2f2s0kbdG)6%ab3oT^XlM$imyy zVDNESqC`e@ExoZ$le-AOv@S>`Re;-ZJ)xDJ?R{NmlB5u>OMk69Iq~;qDwjHvwK7(- z`t!F(s|Hukp5MQ4wE4^y=|&v$q%G*XSBEv2~&?GAr~ZmL8)F8 zxo*xFuVOKlP9GyiT+y_~;L=f7wUQ?Fr=k9C!l1NIrLpA$eiuvQ1${Qu35x!I3@APT zPYGG%_*idiOE65EhaTHX*LE;hP#2io_uz_%8)|L5ANko<%HpOWYvS&`pECU?8*azn zILmzY<&AF;%j+6k&G{*VIJu<|83fJuazKblt5&N{h#6r`y45QHd`Jk*s)>vCo9J8U zX%N)J8HLBm(RpY@1nC&L#d?&z)-Uq=KwO@W zPSY(Owt37Nxq(B))ZZq8M{z*N!(O(igq+IW;gHz(IDV4`&O=FPQw2%!^E6*IGdhxy}M zk9^p=6$sME`mz)MnDlQ~t;n~3chzR&3i?@M%4XzkGc{F6KWLqlYxZfY_%e!VeQN>< za@uYh8GtU;R8PryaY6w*MRRgzCqm~+^IAapcaRG4_(1~nF8nHhp(YLMUjtV$Grzc# z>rTRy%H+~Op6inuUcxlm(-4>rV7)VUr!k#o>R38#ay9MQat7w3viFl1tFyjlt{`8q z?P?%1)fIS=2explBlY!1bzO5|4`zY8U$bqp8w;Y|#u7)?30qs+o0dlzAjtE}RmDFH z67pKt@9iGdsVW=LDD#Mmz}G47N1(ijGt4xV9x8@8(C%i+iqjYe*7=1y`y1S|ze0W$}%y>Y8xQs&jP^=R7+qG&+BC|_kf zqVRdOgHTJ)<)G->s*R^q>HOI%G~@zU$ewba*qL3=)&gc0L||@@369Qnt&E=ysh-DK zdru~PpPJ_gjh)=o&hz-kB!YQ17Yi3hndNvM%7xc$gi5uGpK(Oo!J4-=kJSFj4vA{_ zd|sw*1r5bK=Ls(H!x=GqUepmb+N2PN;=q5&vY4TWLXSW`qr}L*glz)=kw1Xs{kx9D zxpDtva%#A5pCaS-vaUYj<2SCN`0=xmWm#A2HhK4>?uM!)9gN@%CzTu=3a9H5J(fqQ zBZbNNnRewl{YTcQA0U=Kqz+T0xcuLTY*#`H0bsLCa9eBT#+=CGwu$Yh_y#l8sBHP_ zdJ~y|fOFHG#pRYgZ0El8ltx}EWn!`$;k`Evi#~V`jv7e@FIebEarU-h)@uWC|Cmzz zcYlEQGcO$R|LAD16lW9Up4H4oX4~Gg{M1s-y`#xAa9If|o!~LfXBU9GVefPV)dVtV z7w8Z$t<$K1e;=$oNG(!w=P^yMTWV0qW7RZJD_(3<#DY=EV3gE9rktlV@P4#I(94jX zteyNJQ7b^_!_3ER;y_FwE6Rr=o0mK2j^s%72Uieh$Dsm;^(*#$Asm_eR)&4lKIOc> zwllteOiuT>MC;b4fLDv}9jw~aBEVVmzn5&xo%m|GuMz@*lU@3vG-_||y#(i;87Fuv z7q~)qq-P=>lo_9F_9BFeWiA1>Vl=`mzox z=y}*Wxcs_gJ-EJVp~AF3)Zu71KV+b}PqyB;VmZZ5<-82j%_#2E<4is+`Qx>9jNSB6 zoT9~cQ{7&5h$9lCs1v$BGHY?9x;NPw_v`Nhn2!^HdA1!JRw=JDGw_de9pCmo9&R18 zV|L|y{}<8MvA-w3!O1=no7+T*C=7EOd*DzVR)yQ4((b%(>Qn* zbQ(ZBdCRBVb@xqtHayu!^sT-v_)W*sZ6ZwP!gxS_-LeJz{at8a%ijZ!gpHID z1^V6F*?I=$1p~4(`drTjJ=LQm8ybU9UxXFDgBA;Q;?h*A=JRf@WSsVGwwA+8e+}g` zz8VU_>IZqC`?FqNzrG((Z6e=ybvo-KF0=eR|PIC zg@c)vDJ0kwb`hkZ*UTSX>2Qz;t2NmB)59mgij9`%>K-;;y^ z6kIo_z^|_7C`Q*21owxulAk8~EN)!%3%zSe;d!w6r8XWNq&zZXlHhdw?c-7{Z)wsm z##@>kz}5}t&}R;GHUL&Q-(nUNe(nOb%~3JOmJ>#n<#`Qw!-{Ty;J<$d>xZ7ZOH+Qv9r(gGw+WfW>Jgn8go>j(ECL`Je=FkHm zZ8EbTU95VW|9=tAx} zD3ex7XiQAj`dkk~lwz2-u#pmP^^>Jxbmg609QT*YHN4V_T*=l~=Ky)m%{VR6Yw`tU z)%K=LaS6)y8;uYsf1n&JjjcD|GXS~_Gf{|j5E$qL-!JAfXWHe^St)T5s8Dj^&G9z1 zKnnzOVCnjtaAmm6rdCJC!u`DWTjw7q-tIO7Enr3UXKxcUe@9iAR(Jh1EnGK0EYZ?A z{HyIWt>U!ox7y2*CmiBiuo74aZ%#HE|4qgMesUdghk|H5upw@Zg80Xzw1ES(!ILlp z@F&|2bfu&}qTnKShxpe>1s+Yv=oZ&9ptNIayjon!v(yoKjzcKI}svD6OFIH}$_u1aOp$pvl^j;6{owW&@p>o&=kVwSjCzZqgT{QPUm z@EhFi7#0JompZ$Ae^YxU!km^<3y_hge3N(~B>qMLk)V{;xlIBKQ15N6P0=s zETGbpo#MQJ8Au0e|Jo)*5s1OK9bK^}S8a~Ja7I2N_jc^VDk|w#N}pS9bqhydU-3XF zyD*a*{(h4i2sn~U&`8%bxu^EI{lpWlRkv7;NDbp8h2pPF509no@BpyfyP zRm@Kg0ui6;qOOU@sZMP!JauNTHMEY;k>0dXGUJz9tBU%^RD%m^({m4~#|wg}aV)P< z(M)LDpud-dGRX+5PYz zQ&*N6hzX9fBf~qibH-5`Nb3EO^F@R#)6E&!ZRLsEqxAY9xd8n~zqzZX+k)%LJbnxB zB`?U1tS-q9^vNbn{k}JzXPPjY1?$uIOFk?v;+vVmAw7ekq(PeXnz#foO5Rui|D4QX z8BIbcu;^ypwVt@*!GibO(%B%fOJ4jEJJGP|_Rg%K7{5+HT);o3tLMvTPZ?u}D7Xmy z49Fw|y_inG)t*9)SfCJ<{}0;UJE*DtZTCe*Q4vvkk5Z(AQl-X*h=`G10z?I*L_noO zAPUl(^hXe)bfifQH4$mjM7ktEAV?>WD1=DLbJp|jIcLs!fAjA5clPZ42jdLmkd^OR z>s#*ox;~e-J<2%U$#XgU{z>HzNgUY51V!sG^un8ugHjTH#T#d3a(YTM-u9WhYj?Tq8&m@3KDJl1-_wlZQ6!`?!3qF)9& z{@*G^y91VXIX7}$$Jz?(^|jJ&e|~-B`tdt|u1Q4k|3o%x0~`qm#rcZ(`CVi1 zVeimgzEOve&#)L=P_+JeKO$$R`n}(0)V4zBSDO$EuE|m%IXU%1`hU4!@bzoDW**IU z8Y%cs=inqF#9Nwdl^#G| zqdiG71A^*BZz(q{n5;M`{mr&<_2t|h{g&6!i0MC;&xxI)|EbUi`wJ+xMO+A8UR-1F zf{37gWXdy|Xz!r{!>@g+!(>U3#I@QsH5{Q}dQl@c!|?%^H;7TB9du#I5ag_4 zuc315_>DPB4G*Ky&MtlPKI+YNMMnjf`?`A%Py zqPJuf8VPtX9ISM!GaX(Z6)i7H^II8C82&K10)?yn6tC)L-$U{8_Pk)|&Dbs-TOSLq z-oE4{VP@|NKe;n_p3_kYrgsbE>E?Ka?d5eHAy9*Cm(YK>a9v}?v3)D>ix8Bp_H0NSXL`N2}%xyT;WIU2w!O^x!!HfeZP6({^Q)4rINLpn6W znYfqV644y?yM2FrQ`mY=TfBrd36elQsuT@Zqz=&_z7*ci4lk6>(RP@m|16IMCnzDX=Rtd|lhu?{%fYMus@2WGqO z!;B3O`9AXe58APN6YjKliY{?<$vw8#t=XnEUbB76qlPs8uw*&K?){M5)h7vR*A-gm z$UEfe{P&J9)Av8@?M*Ab`P51*98a!URru(dSuRTOlHAd``ath=lhP?eg28#}Ww$x? z#+27#V-{EP?k*aZEa{-Q-_yy{rm}P1Zaq1%D01t1~k-e6(dCBHe#Y!oHS&& zF8A!-E_bk^5qd)T;Jld4bn_=Ac){SuwA6>kgF&BnY4QSP^qax4ORQ@0#FAjrP6RK* zY;tFBp0jrw8A|T*)fo8b_@m03YNmy}P^=Eo@Y6Gqc=%uwGKMFY@5r$-~3QCj-3OIN%6~q-y z>&Ns#Ow>pCIs6T8lC5QX!LJqRTZx12P!Hu?`y#GR7v*DCn}fw`7Nv)J2UD$t(OWrY zPSjg+xAWz`NWdp<6&<42t6MEur*r5Ip8q71!IOD=3(iw&<2A5C_DwNG&zI;M{sUFj zJ1QiNm6U1f6%^^zlgSU~u0;#?_+j?W^V*}x7Q46%2;c;OTaZgT7e~dmFg$stpBg9< zwZ(At4MAP+=Av+kw{Wg#VwB86k6duyhM0{6J2KXO&872@R0mns3d*@+zaA| zv2b9a2rkBH8gOz?7Kjj|fhiX?L84m=YGXc+nkSzk^v=?S`^t1&vGl1T(Fos#nf075vDS&77O{+)|$a4wr~dhJiL zg>CFyuY5h7ZE{}x{#7^j7m5+@K$57CtIV;^j@^*EOs!`0DLNw&t<5qULVi))b$`YB zf&8?PL%+ii!jNrWP23=70VN6dB3fSW?upzF9Y*{mq>|oYzmPD*Kv_bc(3#rypAXJn zJ6cYwTs(^=8&gwhv6P8!wM}QWL<=&hB+2>ASYxICluGo6{OkqJiX97HUemCkXAg>f zetqS&>QOCTYH^ki(mp53ngl@9~HM8)Ftkc-Kn z`z+oc$|;2|txs+;5V#fN<`SJ-U|kSroA8trAg*qSP9NVHU%jZL{oref zv(EWfXR3-L%OX$l^YhJt8Uk~SXZMhooV0~TbiBj8J5yf*ou5~*V;Y16FxiX*A#(Jm zp5AbXDWTt?_1n=hYV5q4>lS*!INv!OhsiNT$zFDz3sR?{7mk`mL=~Q#RA2*Wa~ww- z5d4ePpe5{UjZtof!FVH+`^K2EOZ~*&7Nk(iQ-%1w+oiEJnutvkgwvW!URRN$p1eOAS_U&@r1kvl&?VV>-Y*VkKnr; z!m9$E&o)i7^l9Ht9dkr_dRZ8qNGo$}zta!zAsc@>%m4V=`-d)jg`bo${In-SL?=SB zvOc)5mq=$C8eCd~La+9HFnISuBmU`u(86Qepl7d1XL^=3Ht1O{mQ8=NsRr%jCNUou zY_K<#$p!t*rU%BTm;*JOw=UfUY~K-}kDCXq^J5yx3iKX9$=_Bj4Gk%$0_4B2^UUeW zsbQw9=YGDE6aHMQMbo37LTJ%ADg8hmElb!wxD?+fp}FSN-a$!eDDVFG=5}B1^yaTS z!i5i{;yXIJK|9NGDCMx@eAy{mO&F(6jq7cn{%>dfzxnSG3cxTClE`TuP5Bc@@EF(|rp#OObVaS-qN;b@%F9;l&WqA~4MXGh4+ zV|23Q@1H69Id2W=<$WQwMzy)v#ah^}RDv*ah86!eTUn(@d~?wU^LZx;0y(Tdw5$gk z8yeBH4CbIkeRjxN`|Hy8{nn}#Og&!e!f%N|V({6;4>PXSzuMN|ZpLQL{B+ldg#rm? z8Xy=rMzawYbfEP2U=sw#H(2M%F$s^MBq!o^nVwOloir%^%WM6NJD=s&g(!|?-Kjuf zF{%c0iSd|hOyYF`G)?$k*wH;xBoD0^Qr=y@G3J@^+)XgJKMY*Ua0nvUH=qKCTHqBB8Br?AkRpnmvBMybE_+xZkgwMX(IUQ=|V06`6&8 zJ^-C>g0QbU1jT92-`cXlJ;^)ckYFm4Bv6kzXf5zq3^{W0lS0g}vHLy!L#Xn{N z>Tp3>)jZ}de%8*uUwLHmuj2_uqHjJ9KYO2MNd+^DiOg!u5#T{Ylc|+US^zcZsqEOk zj%51p`vrq6;-E+A90O%`ZO`1^7* zPFRxhOLHQxZ6%Cix~1Tuktn5}dJ`piP;OaJ`q5@V&quu<3r03v@xSg4Q8LVbVKsB_ z!R>Ua158v%*fA$Yb&&_tfF?-6e?c{teIcp$A&&>RPInkoo?;i2xR?D)s$a@TN&UK7 z)h9EtI7)|wLYuByedNiSHq22#mEx!GOaQblF5tKV-HDyjw(k)a5Y80exJHA`&&F;B ze-s3taU7qvS=Vt%dpAR9{8?2g5|1YjshJfEvPPD&oN+SIx-plX=5Nby9d*n%+ zzv856RA6@FGF7q6j6={&4>iE-?+yOXv+jinJ zRyq%z|7KI(+ivTuuIZn$0@yeN(o{7qXIZfr-F9P*6VM#pkXgy! zCJnUN8raQBcpAj-5r8R{VYPpp>pJRNuxPhIHoF=rv$7^9b?@cyDYiqI4zBgc$x_|mO45_hRJW%HNtJH0s-{kWA2iUR$@)WJWMtke5{v&k_jIZWg_ z>M*pfB4ee2^%p7pBoYpMV-Pum;hxctYMe<{)j2hR474h3TU#gH#)~O81*Zu{+7tPg z2@MF6PCZ@6<&vw;ahCU#DeLqVIy=LX+1T-XQIrsc74ruor6kCj15>bTShAR*Ov7}5 zjO_M-t*Pcu(+kbgCTH$NTez9D`lq_rMSLZkK)}edi%pn+oTY z!D|R>G=VN`cU4nm+D?VHV?c_R7F#fr_(?35=jjEPav1*zE zLjtFrp*o6T<1?mV3wcI-meT+1kN;2nDE>8Vs7cfA#wCxS;`E)C5=Gm!@XwF;Rj^xJ zdv;dbzRNO_+aTG0|Bo?6Z&C0S*gKV`v(SHs!X1f_0sNzj+TE5lTf}h51&`hRp+7h9 ziQm5>4opKnjmzp+~rI8f)fz=w%tuH`qkoVN?ynl)M&Q zRaJv9BXaTHM^EO27o%;*ZsgoN(jcnNw#+V}-o^hL$>6)$bBOE*aWlkdPK929Gb|q3 z^72=P9+5Lo^b^H-!zNH0SF(~q8#t45)08e&S@5{P?dpgd@V-DJj?)yWuV_$m&XQ^} zLvd-ug~huYr)wDhNPHoWum65s)04^l^FDW12@$9gr|WHM#iy=S!|*PPMrEG?j3f9Y z!-cL*GaMW>Vit731mlaz*jSCmXz8()hK`A*^X{HU9}aOfml)uTM6$E0JDQFc^FLVe zzV9HT(X`#_L^ueT2>@)u-!)Yu!MssO?cuDB9UxZMefFI#gO9MdP_`HbFu5$-5{c*@ z$eDkFY4pMG5!&Q?eh&E{bK7*6DkFo=xqA&K8GmJ^Yh}yCcNF$^Gz=pAl&oo7?#jedl` z%(ALjf>7o|{bMXnRSLw3jNAse7raXDcEqr_CqvT}q zOxvW|H#d)8SmWPhU8SXw4_K!tWT`JAO1c62*-@_E`tnQ395*K1FrDrG(H)g=sE1X< zcI1M+Q_CqawL3iu84rr9<%gCaS;)lOtQEOhZRM$|t*nL1rVH@Am5&UE>`uPGptgOS z;!ofIMGf@fYISc(SOEIl0Di~wP=o3bttsouU^&!|Xl~}N|Fg;i&Y~syb!3+<>m+Lk z$uCPT>j&|8=_*aJvEn!rzV%`OD`d{DyoHdwP@y67 zPe60+kne9;=uRXgtwdS%kibCA(Iuw-A*DO6^&*oDd1%~=iM70lXB6XDgy_-`Pom$) zt=uHt@XX^s6k-dWSXm6;cnOhysZ*1JRsSb!$C-!O2^_^6ki1Q!i3n!G4m52R*9N5#3lxN1YvbE6Zv&3cMEe5yU0>F|u&!J3IXrDkyqoYU;z6ms>_ZNr z2*q86(yAgEYLPH<(cA((NR?DZOHY5aNM#+91@+CGUXHkoK$20P!8BtKai@Zr2>4AN zi=XKG1r2fd?mR5|H6di`ULXsunw_dB*_bN!Fei<_U11sNk@`wPoLR;?PHR|N>rK?a zl6R8;Y)$2Q+)wFp+fdMwzqIbB6??0sbBYQn=84a3;blnGOH@edVeWN#jpFTg>hIrZ zpU$ya^M4XNB_i~LbC&zJFD`XcFneCkdStB+6~UrCId2Crm~r1Hb?_MQ!rKcefNI$5 zCJZv&U;+-9_d)sZLspyAqrAfgN1vb@95f@E0UWQ5U_yjku>0qkI(#s`$3Y!F~X^rQ=aG1J*pTtFK(>0hphwx%T8W z8?!&%82>75eB3_p!&fQ(KW2a+Kmsz0T;gW%EO5sYnopF_!5a}5X^FL73#!w3wy3+Z zX1{9|2U_vpWfy-a|+d3DW&Hn+Vbq z8;?DS097K?nRzUQ;DkZ?Qf-W?_ex!ge}cTtnsw8}Pc|HM-Y0tbh~<^INx3`eShFpY z+k>js{`m#TTD9)07}kbfNp5;ZdSaVd@gZ1~8NT(PFhSui;PZI-A3y)P!>TQTe+Dm> zW4Su4DR8PVr6!ha+C3woM7cHYIb)-HOYniiK!o?cA~ZJHEq`2E@1kG!!>bGh1%!-| zvk6E8SW}I6N|~7eX9e7VCW%s<$G2E~`>C;-zDH@X&MAV~_%5`q*(%i8Ig4Weo%PoZ z_lp+#ZalYgTj+1go;j{T#YPM@@3*p#ixk^mdUaW$GX{SLBAtm8VFzNA$qzS{?j z!<^3foQwQ2WEV#X$Zk^p(3JhnTl&@Wqj(H8#7W?aSXei|tMYGV*>*TtlqC?2>L%a? zi8~E+6-F@aB6;fzMg#^5Htq+LllqBJk3G|%Tp*SZHRov1xFN-#I+*od>t}vN7PAd1 zXF)2v^O&~+n655kjf-uKstK+bD`4>DX!w4NA@fxud=$swgcO3^tbuE_ z87CA^Yi@QyyEa{;vxmR#Kxorv2lGcYVPkYKoT8_|_%}d^y&vlIT zii})1GADQDv;V-RmqMTBM;%jl37huP#d%U`N87A2-bR7PzpypPV%7QnxCyj=bz*#& zcC0T{FcP_#kFCdcL1t}0T(lu;a?gx}7E|wI}qJdi#RA+&Fu6mc32Isr$~q%YPm^D`sJ( z_dGSdLu{xWx>g$#nUBc7UR3U70flCIt^ZbL^}Xft!2GfMni4+ zdc|Elr(Y6{i!5~uc-%q8OQ_g`2-%K_!UEG*m#{=pQXskE-6w6^3DYYuBSK@~Q4BY; zDnJhVSe2%#8j17(nFwPkCXNnT>Ylx&c*U?5vF!!7Inon)~0pr zFNVcCv*=J;9w^sWGNgy5f{ntv}OVqz*@F~N0;w4 zw!}lI#nfz~j-%8kb4h?e@;uJ$9O>O@;EB5Q_Kc#$fZ_M@O;UsB!)r_k8l5uEpEAWG_x+JIpF-{T(@zB+ z;7z5ozxRp``$;LVIUc6#ju&SMZ!#rSJJ9SMxR5@jhBf zsy&;d^@<69d+{rqIgI|4G8MVaQ4VD30!4my|8e8~>(VeDp!&+`MLjo<$;{^QV(XmL z(jI*>n8*uZYkt?)6_WEt?b;zRTno1z<>$*D4I37HBc^@Oy1Q#RX;u1hX+eCOn1K${ zz-{A$#_*kc4JE2BHkwjYrD#M=UQmaa`1U@u?#!u&C^&Mtf02=OI zoKbcf#bg`mk2>T3!(DBQ!`d3OK4USQjyHyD^=A%Tx@s{+6-Xs#T&FbvH1D`v>AV{wR9#Qw?(sV^{UEEdZ^K;o*89Z0q=#iXPs|#*7 zCtStZ%&k}*U7K94s70|fSOW!`8PxX~L;%@bvJ5^O4DEHmM(2ESAmzmE2?vC$Tc9I7 zYm|KWAGS4T%ac}HTR~gGGAV&KK6Xhvxto7OjN7hemZ<7|xvMy)U9#(W*8+L=rFN041o2-z79lU12IreszlY~2|J4SZg;Y6&tYKa zrL>PGe9m&Lo(ZaRZ!IW^^3jRO$0B#Ik?PV zqp2>|0$0H6<1hL*TePzzVANS?MHVLC2zR%bynr$7ym8frC`Z~A@V>vgI{(9rkLT&I zg#zhngc>ahNsnMngHGskEsnA=EWdZikZ<-oq{el)l?S(9Yn`axkr{tfFnU+uz#>YV z2H4q5zv5*5R`48er1&i?S2KyFyE4*v2YKW9)xhN)8L8y8fvnAqku;?9NDJ3zEOzdb}?YKz+b%D9}^Np{MZ@-rR2oK85q|D+!UwWIx zBcxotpI9M0$9`@5Lw*)$4Ec07so)~;Z~?;|HHEOJSbi4S{Q?BEdIjMgbdsm*6ikE4 z^dl}bCFVRhRutD0*K3s-AakAAg!Mqtq!};}aPZIR!Nn#i6;j-L%zVGJVPk7+8m0U| zuP3^9*{RcbnQrAT@6?APjRF+hbXLCz%s+QW_V1w_76w6T2DM@KNns!m?E7R$Zrz2bz1|~8xAI|uB}%G35JVj zKx`awYcEVqRsYA-EuFO=5j(qQZlreO|I>^j*Ww}6&2a#{Wr{rx2MKrRQ~{FxM#|au zIOon~)5rC8K%3-Bb#ZRe&4YMvjg+yxms+>Fjx7&c-UC8^eRnw{`kjxF_j?3v7Yr!a z9?q$#a zq8^Xja+r-@lE8rJ)H;EcIi1s%8Xy=_@aEmZL2{0%lWc7%+UuKH$&i1}OfIqyn##u- z<645mX3!MvzWXcd`Vl?7_xCdFzV9FXo(J_*I&X3-{Zjr=dxfarX}?^`?vETQamr9} z4q=f;eLI5@-vBVB6kBsz*ka|D9l;nNh{by&$`hWpwdakt2zvYZ=ocRQ>y%yJb7v#E zB2Cr^$bt=u7+;X5sV^~aFL$GkAh-YvqG?0JZ&jcDPLuSt9+5n>vdsL?aoCUDtRYjS z;h*WlCVvRjE6hZM85!h6vt1(K)|Oy#5m&H1ouaoX9k#mJ$-y}iY!rRmwnKJ_8?)$W zUKppIpZ;M|n&Te}M^m4RgctXo8(l>%SiKI_tlq}R>ll?aH!dkU6}P5m_>BCO_(lEM z`cx;MMb^|_lSzMGkO$hWF`^Zi%Q}ZOxZ^?fC$JUjr8&inpz#ZBX;x|H+doZuUsV1f zpBtPZor=-TNC4jF$e*;`Ycx(^2HOI}YEUP%B@uPR!`I3^4`D#=iwb_T)p>JaFKBXHjjH(}E}=6WM%{ChSNx-? z3XXw#B2Yh4sW-^6+i&To7{X*!>K=?M58yqDHs{ywY(MII8=>3~7RK9hi6ba|P$sbLWtKZ6y)$O1&gzEIz&4q@*{%#uP{(cReljpXV!&+Z3w*Nc{;0MMbS z1D(H|pHxS(@*qC6z!c>2wL~ws7^UkRv9S?8!~MYcIqU>$6#WU=CFhNR0(^+$(zGbR zcz!6@iv@XEZUhyE>`2Wt>9y{v8ci1kX;zuI+CtC`jVW{430GWtzD-C!-?C|}w5ib9 z7zu2b*Fx|5Z&!bWKgnOtQt-->yAFrT&X?eua@&8=OLho#YyEH-juRko=KFLz(q4Hp z(~xBz2Y{B`FwfIf|DwVVV}B9Q1@(-8RXiUe-55FKntc^oWB_pqz2-RZ?2e3N97l*`JTnr%1dDl!k(sBB zPjnwDIjdqPmdAYpni`V4cxU^i?qrWXPhOP?3OafJ`|y2rXLaB)&}IJBVNQ2q4GBt| zrde{w*82ErRx4~-P6SlncG4PkoKW6fY;B+T*&c%<-mxHF)o+#*{3>&&OEYPz{7YuI z=&u*`xNl>TNnzz(GWD7k_bbb1;E1e+L#Kg(t!an#U~UE&9PWN5(CD_#MXRD)o_U)=1&7HhEe;MgmB+e`)!j0g51`-Q`Rjd_mV6De;7k>8HM8@*7kygXtvkKeHu-@Z<A){QXyo}OU-!y)+TN)&nx(a=C{67_>mX0>28g&#|F_n z?Quo@LqbL*hfvw=A~LocCZ-9B$B5Gc785~nxQ-`^1itHqP~$46i`F;lonHU8DwQ0*{1`;pV*R!e$e1APu<@bUpKbkj9javx&Sr~ylL69o zbp>mryJNMu9UD`Bs|5SYm)=NLnMv9L6G3LgAQ-6Ud(L8bN9kb4U;}9~IMKGp_Iq&5 zs)u)hUDb}ur#5-6j?(Sf1qeS8cO}}*ga2Ng*j37CGPW`H6?pLjsEOk<_BFVnHlDL)5hQTly8tqv)o$S&b?2)KS7iZ`7Qn8 ze)HG%d%qR56dW^onts-n&aC>FuGK1TPd8)QHOefF-AZdq(k-w~Qxn_Uwcb|&L#7K7 zj<`UZueH}t_bia5tt~sP{amJ1!?=Gdt4ILMIW^|DpEmm_Gg%yKZ(Pah_b?!YG%?Kg(lcM6L{NfCDCfEpkE zV*ubaCEE{LWVQR53=$Nh5&vi@kI}f16hGpLXulHH0Qd-Suni_@P?I)U2GdI0HI4PI zE>sVJa7jw8dUv|`2|GsT*5;w2yz$#IJfr$>kCDt*mAez+3Fz$j;h?=F=zr6 z{I$%tv!MLvoQAz~KO7fbm#f_wVBqb05itro)dBUaWhm0P$?n~{I|X=BfU;tjgLl?^ zLukLo1H}&q>{fE<`^BPY^{L%Lo4a_=5HLOT+lJ)3PMV1~-yYs(!UvFu6nE5?jK*LW zlTpHe{FEje%Q%m|IfeA5=|3vG)L!j1<9w3*b8#N7>m1iyztGDD%{CVSu>Hs&`r3m} z?{}=Zr!bPt1_tnavib~@uq|(=VbOhx7ys6E+Nw0J2Hh z`@wm}4Kp&(%DN|*dl7EQrEgT88=mFCN$H((j4ClD@-6f48s6z65sZcc4}yT82b-W( z-{4P0LKB%XGCMUP_wmY>V{kYAuuBEmCfE>h4$>MW26PI+#!Ri&zyhK6(H+*y%7PEt zD0y3c>$bYz;@uyqRFp%)kAH~K>Fw?O6o>C{3z}Eq4Lov)raolWA`Iw{H(1)KpF<(Z z9opc?{fs5%4bVA{-4bV|5%}>zQ!xv-tb4ZRmw6QKlwBOV(;J*h0`3ZXdj@rwwzNdA z<>>r32Wp=CPBnQ=dIY zHHBT80}^+e#HVxR{2T@xf)>`hv!7dKcx}qx#XG6^bk32&u&-*`W&kaRF3@2v9HLYL zv;rFxBi@*CWonlx0856^bQ}L>`+1j=iqB)67N-D^b7mpt3=MjV=JdgyrcU(j8PWbc zN({GkguY!%Sky?OwuNJaPo>CPnQ9cd$PM2Yl_H&vE0YVmp95dbgssT57NuMIAI^e1 zfkA2ROcnSyKAf7n6an z!9Q(0AcQzV5O_)b5JGh`9oD5@&Po*DgnhY2?h`a)Q!wQU#isHKo~z0cq^xF(C_eWx zNwHnpSH%XMXA@Kcr7JFT~4K`rc}KLio?a3SLU7MXuK~0O4uZ z6d+uaw9RB_G7G?7qsa?AhSJOumZ2#*s>k8o6FB4~Lzldh8desJ5c`YR-Z@pRvVwhk zdraz<_p*}Eg+8(Gz~#EJ#$XbL`mAv*s1b|WfU)+r_+-je0PJ8GEdq#IH4L z=IX{{ZGnSOKTbcX;%lVid45gyzh4-Pdv7+|K&vIHl|>imm!=T|U1m?Wv$t%2?gK%+ z-nsL|%p8^wAYM;Y?W<*oJ0O3_{O1u>#Ca5(6AAy;I7_Z$j)C~Fi**s;yk6%ElrIhp zeX`)|eFH($I*Lt^OL0l>{3=$wCu4(rzxlvue0m;|FG>;Wy;}3+O)*JOg-~g_Z(#gy zT#!0o!u(IeY!1YK2ZRB<<(y?(*4b+CAD+(A1U8B<&83oXsDu^4k^_LH>1!skTO5#6 zj=9mM0F7WJgmtSXmfFFrKmchd5hI3bvAu1{fL6 z=CNXd@$#Fi7 zc-XR@6`(|6_w}Fw#?9g-he}D0!Qr^!w!z&7CX?db@IwOPdNj z<&lw$2(ousT!(vku*lG7L;jiEiC$;r$&TyCGiL;yFPK)GZ&Hj;x$_*0yKA z=lCDA|9r@%@?+ovn~DBuMm7!5pd1%uz5{?)FnrkJLdGJ5cOwvUp5{)}sH2&a+pmrN zY-*oUoz_tXEH%5YqA%9hH8;}lHBToD_NgvlzfthATP05?oiwj*KywFgUe9yc&(;&o8+&c$3ASycw3#%Wm|{GV-p%pN7Q=-Y;v>n%5P8) zY;qn{eRu3xtTdK>db;hCH2;Ojvs^ChOS0w&SedVFP|cQGnYOlVW77Kyld#T!>4Pz9 zef>mbd(c6MdsAD&Ax@{NIK|`11IpJVVW&G^FQlB5dN-Ll1ozk`Eys*&B*+t{ieGNA?mzmpfkq$$gpJs_OfaZ=T#0#ni8i|H!|!()B? zCB8ON6$hFIeE+4{#)`89f2nXL-j}W2{}=AL&~IVC{F1h1gO8#AVaq%Qp!8H!8Cl#v zGFacFt^vMD_#k}~1JtM@Un0A-F-k1_-)sW<+*RuYv5qT?`Nsh2ni2!P6``jRZgS9R=vhx3OaB&R8izfyJMz6R>yo@7_=O1bkdEU42Jj&84c- zCg`@b-%H3I=sfRdpj?6K#m4D+f4n`ml`B!S^y8_|kYvNjX}V41vj^$1{-%TPTpyw` z!H;Y4>O_@z3W17h9Y?xhlXE-TYI}b8_*7RnfzL>{-HPfCm4>;$8>%X7jDBnqb!+_6 zz{J{otL;Yd zy5ok@f*Chx%H)XUUY10CT37V$j<3kL>C3nb&J`u-<@zOPbIK>l;0W zaAoE*ytTiKrhv{$r4N}>PHzlV*lptctKT+`SbXhxvO0TUf_@rD(TM)O(|bNW*(*S~ z*cWa3#T?U_*N)C_yMQ*(neg?;o|1Ln%)%O|jFzd^ewa`yZJjJlSy-4Cv3E<0EcPgp z`Ky49jmM<+0?mcu-YrtL-CK!pW9I7fR>B|9e)V>Ep2&BB^Osf-XC0%g_D|fh*lD>xR{sL6ZjN;&I7#eg&+|I(qph-bOSa#k^0W5- z0K2c~QFMe1;`$^&WkFg~RHBv){CWQ;Z%jjXW(S8g^t0&?V{W8#$nqWAUc892Bg;jPF#f{uB zF%ve|^L3URC#u}ipQp}sB(7d>|7Hxoua8p+F`}j_h13v!VLVEw=QTTjVOzF$cjQ%e z-~L)}FU_xY-N$6RZ|)=N$iFQ`WEuQn)K{JUYMhYh0?xn6uPQem^o%62_-Bw^S_ok> zpjaZ*XGNE7H~0}132dX)aP3fo>Dm`6hBJI^`9p83e!{Z0#S;x0YPo&Jt}222{E#Q# zm;i$iNZS!RTDFuEd4$~+vAtyM$-u=4$;aS(m~ zFXrAf9O^&p8&*+CvM&+J60((S6(*HEWZz9CF~lU>V9b<#m%WH7OLmiOWShwzlI)qm z7;E+!#9(Ir&+mUf_w^jdeO=FUTyLK3jd>w7zxgib`8hueRnCmYBhZ5rVO*y6Isl&; ziBi=tM12t8SoQRXjU#%1eQZCAbM+CvKYaX&2Xm6V*Yfwl_vc$9@HEyM3VPEQ_@h$e zh|`QItm2ra32A7mgwz{Nv>)AA&NZv0Y{w~Wb`F)h6d~-J8+C-48{u6djeIlT{sL+g z@n&aO9f;qr|nd#~EZwzfRF6uGavYmD70m&)I=c!Z{oZy4cQ9!F|jhUzcaO2qUnr%X(ClS zp)iHgfUWd`xj@gw2od|4^!Fe)u)vy)gHkN^v=hyMEa7!T@t~clx>!_m-QIa7%fnkT zweX!}%F?&><1g`cwkXD+Sbb19V7KBaHZ{)^o)eDQrU7)-=qz{0>iS5?E}YZm$I z*}21}X8LUlr_;@5(hWTuJj<68$83^}h#I=yjctYC<=ap zT#ZpNKq$c~{7oh=EazQwE zv8a3yHMN9#tV6w3JPWs)9GUDGhR7AQ$Y%u_{Y*EK49ZOBdK>kqZmCu+Y~a|7@jWMd z^M-mSnv|c$ z0%Uldy??AWMY~Voh;6kDm`_O{@^2xC^FzX6(Rb`i-izOGyzl}o!mgpPH{ zZ=-;_MMcLnrK(p$T;4$46h7l#k;7t~f+y}v2KJ|^d~9F(=qG;ps!rp}i{)H2%Sosv zcwz7=2a9JGKZB>X5oJ6PVEkQS56wLwuWT^fE@>h^EH58-2`wqXvXgN6673eSjgj8! z^OLWU9>8{ht5Dn%_T0x?%}VWcf}X&Y6lr2CU%mMSa@Jfg3(X8bvW1FB<3%&U=WA1D zKOv;=Q8xbl1#|C^82tnUv%YT$#6^xWQ85QZ%e_!;O>Ng!(7eg~YwPL5Y@r+{r#op5 z`l&@v?ccpesjTAMDnHyRoZakpbk18$o81qA1U-V7T#Fw-WggnAhy69totf=F@^73$ zlFh()v<3Yu$Tj5@+?HY%nf~oSRINUZp&+7awy7GpBf`(A;BVx zJ2*?Z5*|ULt%L)&z?{v|(DfOuyvh4Q79oBLA!zLi)4cpmdz2yvVPU>WY{wle3NQj-9zM<@>G8dxI$((H%848Op>PM%#=GTHKSFSTh0y> z&jnUoI<*(ZmlNn3QrM64NlBSR)uK0^P#giFr1urv82k*$#MrqW^DdQl)RAC#O>QBt zIMXlLH-~zE4oTw~=p{A)?Eau{AWj4~&3f_$60#kqmZOv+1vomaHP#NgNp*dh9e^-j z$7Qm7e3LWf&8<{dyQmWE-MQD&JIg$xEejL2Cl7UrXcMh}!SB1O<(5vFwiL89=BOpx zeF(DAdyHtH40YhBQrq3&2(c5-seE&0DScw!{4U|Wi!5Q*LrHsi;!azmRRLW%J6;y| zBt@a_;v_-lE2$#Zpg@bj$!Xs(0l9Rq>Vt%kJEiqU(w2w~TeFb$wvop4#?}VU!POS8 zWa`}mFxebTm6P5)LmI*>1731iYQV9EZowa5ZW(Diiib33(&>fM&YmGj^=`U^q>4*& zvakiGS{c7qs#wqVCAb^ajdE(go}P_-HW=zc;fsl^f=kb%n16eUDrEIKB>z0xnqG4e ztDlh07{b81h6#=Dq!I>q7M>cpZW4uo!{$~4nu#%S8{LEcZQOGN>O}EVTMX)kHJyvr zu_9ricPa7!Z*^qe;7Uuw*Z3V?@f*rNtqP(%`lM3wypUvF;~{P;+q`yF70r2!u+RuF zi>aaALfc&$^)inD@acEs#DR@Xh)d2$ec-PLn08KM$sdLsawhdM`PS+tF2hD6!`fbL z&Upa5)LJ*C^t^3C!1HEHOW@M@F$R-8T&2WT7T7I&gKXW+1Sp+~F&^3cgOco#sca_K_?|NzM&Pk;0e2V^ zfHNHnt_Q+U;*c0{m)IF?GP!HgAJzbeez0hsQ12OLQ9{bDqC;Hq13o|VpqIV zU2x>p85}`wUu_bI*S4ZsQ>5p>@q5rSa09A-a49x3sLCU4-NAY0^Cu7Q>dlq<_^qkF zJC9Q(?X4>AC-MdIRroHK$odBjw~hKJIor1N<6B0K)%!CPGe*|=8=M!O*Uu0hY-Ap^ zS`#~S8qkRhN#L{mhTs(w#Y(NtUMIV6ydfW0Q1aU(| z#QUoKU$N782%deZ3b0)9^B8t9WB+8I%KAR?vHNAtprxXj!(jd#aK5Eq7(O~H!~-pf zer7xJS7O|hu)48uL3d($v#((We@6|#M*WE*p6WyaRpp`ZH#u=jRM`~oTlu4e_x@AQc-%TGxQC6$}LJV4d0*c{u|Vk-1L zq!|{?G&p7zw3SE%9vq4ssiJ?bDS54iYNcS1bNONoz*rD4mb~VH;{FTpr5&g`4J|Wz z6T-sIPHUK*Zm%${g6Ymz6Xc5$xf{z?SEUY}L;hCllg`kJR~8!S=^$q0Dl)EO!3-G9 zecR-ji`fK|SLRTgw&k!0J8CbPYwu6%#Zc0w_2wR3UpKdN^35Vj4@%vueO=M1HIgkL zP)9hOk>v=(4p4ReVUi7|t^;hZp?0w&@Vw`G2Cvjsn`&bYhSAs@IIObqGeBL#umKuH z-*pHH#8%nYr<4HV=oQufL-zC^@~8j5yvn_ym*ODEvxr_Klcps_X#rc*Y#Y@o^=vXb z{pGW_i}EkKnuM3q^bCg2$Zr+4`2l4<5Llyqjb=bSIyfKgBbuum|!2C@0 z6-as7PQs4DWqB!h#SzVm#nwsiUN@@~C!T5_s5U!Nrb4!8X_Englh;iCBFWps9&HX< zApo@&u-AHY!X!;K0!7QEJml7ZGH$YdDg$%c$0a%*3OTTovg@wZe^ z6FLD~U;Yx7o^+B|n~`d?t7qBC{ytuD1Mh`2eFN^`@amNru)bi%RzG^^;Oj9F>=3{k zmMNNGwths=>1*m61mFnLKTK-GiWj<%;!iR$2{QTfEixqN@tSAm!T98%1*tBCOf6-z zI0^G^@-{N=ubl9mb+4d2QuJ02TNI|*%Bv-uc^G%pxtU^Lkd%{c{UxW_H}ro8=dkWL zI+|uimSdbd;|7>7XEu)XhBM?J>;m>%QkgB^Dng;0UR6AgObl_VycAPouUB{x|XFuLA=bVew-(Gs=|_9um`%(K9>?l ziHb~|u5ONr^zkl8e?;&4)zCI=`^bd7OVSkV`st*>0-{t73K#_CX(|DvR95n2 zCpuECuAM|=b4c(4H#~IznwM}rv=rz)tfjOpsTWx;~YR|9>+sJhO2V( zGx=OT>DzazaSeIf;eWu8hbg_l7!eeQ6-N+rl)ep3DJz`YW^jK0Na5%X3t^}?C3IrA zqt!y3TYZ~X9<^Tn>hAreUD&|lUjN6GHYt`#hDhUL_MsdmJ@CM(Sqhj6wK)z4qf7yR zowNU8DR8Z=Iu+s?q}2^b*l*5oK2Mc6x05>RdrD#KZw2q8Gw%Se!@BBE#}8oOd$r`C zE+`O$JLbdMkIV^_cb?WXv*En*U(} zPlhUXru#J&K1NTqV_}o zT}DripTP#^#5N(&Vm!53P?DnmrXf#zX0sCheEVa_)sT?mI zR=$ay+#3gYdv;7egrZBI?Wh=Ej0Jt`@v0L(SMc@ma} z6o%X7cBpa3ovK)EzQpGJVj%pbplL7h6dw1WG<>Ph1gUI^s53I&N|A?7X5KIwsW7if zUjpwhr)+1dVE^UC|GRll&2Qr)7;LwS;pc$?7n%(&2qeX$7vRVXM$$>D$Wwpff=Xb4 zPZJ~@f@=*>9?i+phN6PIHO@iTuY`vpBSAhOX86N#1i*)v%-QX}0e2s%*1TUhZC7v@ zm}AAiDxW>6Gv%Ps)yN-6xa+=Kof=4TPXC1!rpW_LYdQQ@EmFCOE z!-Jq8Zl~!V8(mq!S9A0w^Q(R{omn}c@i6ZEOFjLDyM&cDE_8)nsaIj8z0Z5-PRYD=~p3zRC%OBp>j&cA?CHj>|EPX zqqlxedlT794S&bgkr}R6kDR;hDfH#|Ut; zCFnKkISoTp4#tD487+{NRiqanCq4~W4KTr10sP9E{#Ke^k9&&aq58F_WAYXTnY!mw zm_2K}c~*t~MuZjgdwhua@}8&v>FL0S3vK_7{BMF@cz~ej-)5x7ZdhUT>~Xh{QJxL{ z@;wL7>vcN8+!5cczs5hl`E%N~#dZaV=)(hY;+0+{g20^0XoOfNG(kX!k^bWJcq|;x_0^D<#x#e$Btj$N-qfXYn-~; zn$EbO)(QeZba!L~>eQTTBhVZG$)_;ON4nVq$c?{Wk4-w0bq*hL`ZLJ;=wJVH3N_BJ zQSc}>{yOi8*GvUz2cA}IMDabNo7oKJC6U{&q{pmZESaL7Ei$}&KtTXRMpjY~`;T1| zOD_c60?r}&!KYP+#NaQ+Omj&yC#8aC#37&a^#hUxFUOsLJkPRCmRWdYKQpd>73&X_ zYIEp7v3m7Qu41?{wT}#4IP-0Y8`fx?YfpYlSs09<^1Wag3j!deQ7-Q<^5K z+l9GiY}5bhICO7DdyQglYa2hYYz)N^HUek7iX zmRpI%dCmxsQfPdQ`)w3=AR)2`91r4yE0LU)bW=LDFWFTo1)QyvcVHat?<}}-j|>ES zUZq@<+#Qgry#|b(^%ETREb3jd(s7QuN+Gk*`BlE^3dli@cZIr_(k)|>Syk3hu&Vc8 zkY#D*_L+4*YHo*vOK};=A9JdBmhVdgOh9-^YCEQgHG`~7yX_om~VbRGx zxIOcweL+fU{IN?N+?C|0Btq4<{zWr9=d_9+{4k+zuF*fhTWUU*JXgVGKkk?4R0j95 zUTXj+FK2w0+-S$ z8Z)(qG!)YuH$gL@h;?U;fLHT*$(s@2wKTk5VB2*6+2o1e*X356G(CQtD|^m-LC6e9 z-)nb7PW3uai~UNeEex&{*0qD%9P#229S(W3g(NnD+w-ppHnok7!IhCuF08tlb55gf zoiC!L2LtE3%P?|oF(sZ0Mx4)%WAM+=9#Q>@Ibs?yHbPbv)sA>x0eo0%PEuaKO6rf4 zm%n;k)4j6Y-0+Bf>( zZOn!ZhWvhF{G)Pb4T{HcMd`{<-|Vfh%EiKftLWLAO8^7G`=FtIeC9zW*qtTJwT|K8 zr=7d2lD1JC6xPPmMI_sS-nak;o8-}Xo5CtsGxQw%aa-7(4rM${&K}6=Rpk9@H!>lo z_ufHAxc%i^dq0I_s20V&VPSG61c=pV=s3U_ud%}*W7>5mLWmcnM z7k}x*la;UZJ#&?_RpJllrLA9DAp!vnv-l`zE>8@DdkuFxzDo_JsUF{e!%-H<*M6Q3 zhs_ZrKVsj01m9rAweF_@8V_Gxv6OHu3g`F5{z(A{f^#K^+ryeyfFmpo*h`^n`EuiX zGwLQNOG;)@P>{MTFSm(rQ9CnNjBEIavAplcpZ0lH&r+Qql?=(~4c=0#JV-D+PC1@5 z#w0=NJZ~aRj6yfX1D_G*x#Ph_@Pj&FpSkktWK0`kfNu9w}96rJr`P4xoc%?;Oa zpH_u=XVC@2v7(wld}H9ca%6KvQ2(>24-${HNA7A5lshYAz4uf3DQ@u8-Cg1`;tj@=mOF7*6}i<`l*_(d zV5M_Wij@53HXZH+xThK4%Cy!q=8j~NOKwF+1-P~q?=E>e2Rl2Ct5~^uuH}Y=qDSar zC@}dew&WX<>=h7!0<<}i0ihU(J4GqBRj1teRv6La`M9FQuEr`##<%z30s7Yw4FD4& z>=j3lRB?e0gGY_I?g7<0%C(s{zD_6!mJQXNJ09xI=g;lIa<`4_(YjH_*Y z04eW#^EO=o3Q#)vijX^)6zVhQAVxwXK;=6(0y=bbS`r=Ag*DQY6eIKyY%I@Y|6_uKRb6kz6_S%n=T9h_#Ny=xCtm>6bE@ksL@nj|C zIW3lHhN%Dde}3$1nXI1CDuIk!2@B&g&rL{3PVzcL*o=;&ln@gL6$-ioITh4Rtexx( zP{m6w7`KH?pu|_KTMhR z$WHNf+@3QQpqARC{=?LdAALVX4D!P6cRZ#->-p164?64-DhyO5{&w~K^s$Da)D~~>OQIYA} zEelgq)6j)@IuH71%2dQdd)(X-4*!bWcRdsttt}jR89MXD@1j)9E6th+g2K9eH-S$V zjPwA^>vL%%$SXti*(zKUUDG7D0bMe(i*DtC;G`gGNQ7MWGhMb- zsB3~gQYQ*`F^y@vk`T4grMd|-nm{NCm8cCU1=_{2w*gP~hw29|k}YIP)*VN|#76Zj ziW%?Zb-mY1cw^X#Nkx|TZ>F>phX7lJ1tEk0SifZb?Gx)@UO@JOiWdTYNp9PnyNsa` z6?RakoNo{kD#;2d#>e_c=5C7bXnf+7lgu4;eGKI*=G(kx{2qVfrP+w7Euu_+#`&PO zp&t{a@pb)b$z-LKcbJ-wL(4{9!+2Oa$&7kUsY6Ks@q1y8uXrV~5__#aNS&>4P5b=# zhWX~lUG*7-9}^X)9B)K*IGwp+5E%Jf{^QP(7>yrrm`{M;SO{}(XQS9Uk1#|`{Jeo+ z5)dgRwj{zV2XD^TWg=5Ewfw-*@AKyOHy>V?cm0pvqn`Ydj?tE*vXOdeJe_tUqx;QN zc(#k&2<^UGb#Ww?b%bB(+LF@qBuUr(o*XvVrU6TinQFZ5rKmPD25aN716-9}jGW7C z&VNsq)^8+hm(7WBtZ84OD1{d{@1kj{WrWUa(?uIUo}qqZ!#kGxAgvug;X~KYyPH>P z8CAf5aE@T zP1AJJNs)E;y#p3_=8~*DLY!(vT6`2+lgdk}hEmSM4;Cew8~Oe=#?W-0%nzOhOl=xA zKNo-Yd?YnqJX1NK0#Np&4JA?yZS^e9J~p@*kgcP;4vuaMII^{1N*u5SYk_bQ@3Rk|B?S=q)^;4?PNsR+e|MJB zVps?#A4=rV`O!at$Wr-2fc_YMfNa;UMq7{Ibt!GNeP1$_)iMRGzl)fXz=aJ-GNq*X z(OFCAWN!99OooX_Ql8A{&l`NkL%h#-~NhI zF}KL9L?I75X02_P-(#r#v^d#mr&mz$6wiM-;YYYORcsUf%aI29&xa9Hs0j?U$##6p z3ndKlguZc+bga@=Is=y*Yk+ct+a;6sbK8teZkuR#TWCcY$p;S89;cmE=DN?2r{Ql-QLoaF3cia3%hiGg$0D-K4R{sgE2Lp|l*Q z5tn46eZnGS(`|4NF`J{?4rw@av^^ej`BfkJOXbd;vsVFQ3>oejx2E@>^B=|Ys-)eJ z-|$WAN;5UA2>5SrXj79u%#VT$3xogDo8dqIuig$p3R($(7bU$MeurWel3zj5pErvq z8O+`+S+`u>_E?HO#l@0g_BB9ETT2IR_>tr15cNvZM{?t)>~SD0$n+nkw_(}6a&#m4 z#HYqzEeube=4E>1dP=)!@=qSZAKA`Z-<`0(M#n*!(*;oT_>M=7TVql!Z|`oHy?Yh< z8k>25>={bZ7Nmb*aKjRMkwU5-^`LVwiymiVYh0SFl%pf8XE`jj;?4(uE1Rb;nIz|H zi&egiNdxGDVj1QirmagpP8lUG^%j$OD`Ox>$f(yGEVl+C+e6=k1a+;DACI@12h4k6 zzM7otnCw*F?VIm}1}kK?kHkOF#dm78l4cBa4f3DP8ofV*qw!M*Nk}}1#1Yf#M|QQ1 zaUr7;UWkv?x837~Wv$KX_G5ajVLvaN1N=OguQPLMp8$5DKOkA3j0ertB1HqxF*%oP zT+RYP&H^9deB_tA`O6vt177QkwyE#&b~A-Zd3}NBUv<^lRP*d(`&QkqZa3F92JBC} z)=@FPa(jO_CxrIQJ}#Smo&LeB-bMd7=q&9nH4g#Pc+zI*M<3m}4)}lM2 z_?OOR+W57m9{2U?4pFx`>*epXo!K*rUwXEAm3t+V&JFSy8iwjM@$W1h9^+_fqhVQ% zwpqm{#;BrTA~j%gWFV~hPkQ61D&OBdA?J+A+aHD<34~8+_HHlZgx;k6=zYz^oaX63 zHDjEE0-#YpHR0Hn=JiW6cy5Sq6~v_}LHc9m4CkW^4vuF>sy6YZM)l@B*11{TVdc^u z%)k66Vf2<-&gS_3E@pe_(9^-zY-f8nLi7VL#Y6XWzXiC8;PB6Te7VrY2u>$h^EN3zNvSs%%wb3EFn)}$ z!bbV3{>)?U`cTCEBTh2@^yy_?$?%uAZGV7I;O0tD7Z5_u9-#9$PqUMrsM?ZvYuC}e zyi;8h6Z=?^w#OB*{$WqY@@_BbyiDMP6-$au#~(3n@q3Ju-27jj`*MppB*HxUV36G3HvNni>Y1$Y4sexs0 zIA9`zKdUZh%g3j>wC~4`)tkB~7ezg{=lXW7y<#bas&J+Q$qu)t12z5gp~w)0DD?h8 z?{;iXV9CPicR+nh5EUbL-6X0O#co(XW%oC*X5vrnV@^i_H9|3%2Mk!tXKG)j*-*tk z!F-7GZcEr)5<%o?*zKzs13^gkq_U=$rv}b*yBrp%J#FPmHhrFVcxw^8Z6vE8d|+J_ zrhV(xHZ;&!k4`8P7!uUQQxYaiT1Ro2>0#p&`v=&x0_+2FZ$hivF>p<^-`5s|%TBiX z&J$x@xPjc3Dwlmjn*Kh-r&2XcY9qnvz6zIagW}V+>>m-3Bo~>)dzYOZtAS@4g&3a| z1{{xmYl>9C&^`I*C*kh1jl5jExf_UHMgK5awfWm>Clz4b=|H381!bq*8d;rUy+` zKGg$*`(RjbfYD~4O&c+@Vb2!dt4|qS0G5EeQdCY!B0_e0+R@|4HX~7?>REGBa}LBp zP+@Z}&cU!G2l6yt<1K$ss@3_N!xTs0G5tjhGDLn|9s7&og5?Wq$=LzUE66TxWQP)B zfTVSIMys@b?DqqkSwDG;dHK59D{oJU4Y{lzLuRRWI>2=?u{1AAPltm31L_l>*;{r? zspAq&BV)5VvgbO34X@~1zerjuxp)!_G)m#ThykJJxxg`yL3LB_HQ~8Wx!On(g=k;( zQbLyKD$lG5MGb&;{J+no+}6k+llyyGRYFiuRuN)2KuSoWjpb*BI+u>&yzYm#@L48` zFSN8_jloS{115Gh{kA>^oln*&z(T1a$F?x&eg>ds)pYMQ#C>Z9WO!7wOk z7vV1~Mm36hH?BP-Mqv5m>T?yZeyGcMnp>B+oA?~-OGg35sYEu0IBdR`G}Kk06*QO9 zHLsZqWrl5a`+E(1i7aIdzPst*d4t4i2~qj##LqT@&8d>l@E_N1p-+qukrh{32AmZ} zY1>tdr71CO#3+tz1&RRG5W84@fjq!mvmW<&o;4?z`?ti^S8<^czvM@bwp4Bq>WQvj z@q%Pde!K`9n4XE8D9-?RNyW#NEF@wT4A+LEH(A!dPZ{2!))UYT`h^!`|LO?}go zk!xlYZ{!@SVMyUxyxbBhJYS1q){djfY_$L`9on*!nh=tRJBcQGYj`W5Pa@ZRxLO>m zrfxGEq8IHU#Q{}5%*_+~c><#>?uGb`#BfByIVg8JK_~{`Z^rv%x1@ zcAUzCutYYO+&lIt19R|6+B16j1_S8n+n>Sjs};_JL}veJpQT!Ri4Y@Hyp0abMK4bT z2v03FsvRkRe`2q&Q9tlrbm1wB@#~TA9E2(+m{R_YMr#ER*bIsQSYjwm!# zoNZu3*3Iajr&Pw)_NF&{dwiBTaZmDbCdcgkJUFdwRSM~1GnpCgeXpc0bbEcPn{lZx zBrl2A{BFnpjiclX>I=w?^*Ii_Ylq=S#xR1Fj7r`!_$AfrXoZ=IE_H4*V8Bp+in^= zNywF4oGc$U>K_c6T*e$n&m3s>_K4Mh+EKACJmjs2h3!b>`G7&T4t})jCkQ?!suDPb z9D~k^3L89&EpB}wp2(Xhb45VnO-ce1n({lQ2P}y6QJNZo0z9$0?C4fQveKO7?TNhL z!a-!A<0^hUzxeZg&$m;nX()v&jn{MxtxxQbBZTc3Z_Q00s@nKNtqEM{rDqEQf~)?M z1)e{N64BI)$2Vvi^mp}Mo1lGPGDk!!i(9$be#LJ%sF1MQ7p!(;`Qa7aU9n3(FFyD> zccsR;y1jL?dz@l!tjm2+|4dhA0}%+UjfOj#T*o3bQ|jZz;(rAi3Hj3Gx{j&SlE$Bu z;U#Z5@_!Gg1s|s990`=I1>zNReS<5VbRZB2kBR24MzV(MBjYXMCDCD< zGHoH-b+W52<#`M>h9!KxaVl*uMD&R|jn94Gr;%&~OGYN4E@bPc1!C-f*6;^a%H9zJ z3?k3E#ak=|#xCmroM1ji$F$ymGCy;&_g^fd8o)9FDKk?u`2O1Vfb;PeC6mV9{^{2_ z&&tfHi*QG_i~qv}0H`MrMD6qRa_n^)jEqT{*Am{3rEHauj-{o>W~jCgJvJ)m3^^;h zqBcLE6rvxRf1s5MY_M@8B7}kY$EMhvSvar+h7xI9pYG2M7|u`7#QmF!o6>q_d$^zw z*H_hF90z<9E3c+WEE`vAr5VCAtNtWw^_<6)d9i^0IZk z>c>&(Bb!QL1+DjX_j5;Sp~ueD&~IXA5tpepxBR)vOy=9pEf_TAZ(G}aisP4KBd_|T z5lsAiCb?2>jX#gGe>%&$@BLh^X)mIuCAzL)CmxI#1lmO1rVqa{ETrtGI8%c z<1+0zRjTaI_1SwznR(eA>&M2q6_4izF5Semh<8g|ovU_zSrl$v6JhB5J8L7QFt5wQ z;U1sWv$U5?=u;@hxx8Zy0u@jk*{3hqcA_^n)dCv7zV*6sQ%;5BRb}ag6}`q}`>yzN zf`!2+eiz47(p;%tXL^v42w5_stjrUyg^u4#s1o&}UvrB->QlS|%W(|8Xm4SC!QQTd z>DwjI%tL^y#Eb^C8)Aq_a6M`>n zSvtLEzPx@Y@#*yEYnB=F&HA}$z4X;tbK}0oeJi(DONqQFTWH5R*#c3f)Bs~-!gzW^ zl)5=sR$U~hz7>$8tvA*9-mnr+HJ-}-$u9<<((H=vSr2D~pVhcL(Etx10kT5aC&0J` zXrmB6L0^gwBDMLcmUBvP{DT)l^R6_cXm0_FNX`|qct|<4`J(&O#i=px##a+G=e?0o zr45c_b7LSf`@73oYI^yq?8i0jD|M*>3b&+oUF+H!bBw*-Exe^uyU4~3DN=#ygN{o< z8G)-|n}Im9f##b|!}ZS_M(F5g|1e3H&`$l9K?A_uv8e}9jG+vhM@EZrwo1(_orbxZ z*1XwUH@@ZCI=VGeEg9OUSoAm@Z*n%K4>r~Ve{W~7P=u^g-@F4v&VqPbUCZE?DF@MT z^Eq$D0n_MFllqZr?*?JHI2-$<>AD|xzcw^QRn5*CEbPqi<%#OvDobficflq&g7inn zgYm^%vvd(`7-9>XxZh6$I33{-$S%zYcqJfa#W-DIB_sZXA$Hicey41=tWmSUG0(2N zPtRC01s9V~@EvS-LB$}*a|kgntPEvv+D1qzM&s4RgL zacE>BbBokBXq$ql!eyWbc;{2~YZn!Rt6Av)MdoWZ zQOr6}QGoZ@jrq{w+tZ#$X3>?E=oOx?!JX5(+}~$i%j=e~Pfy$uZylOn*?`U=r;bTt z@qbf(N9+evUl2JP6u1|3>P$`G8P zyxLX;&3?K%=KuL~V;duE=nZZT7@d%f!RKf~^en8%Z^k65uB1~-c%Im4?BV~H!rL5} zSw7=w@!(-xDEqX*$QAZ0Onn$#x2MY22M-2$ZFL=zD?gxYh=W^<=e(=s=H|}aV5!%Fus)}2hRVH z|5LMKLfMa}TX1$?uqpoNA<8v*b@+v*v~Okm`Fz(YeR*Gd$ixI? zMXK0CJXuhJD0gUZit{xuKI78zo<#=Y&*yylV*0kbcjfJ}GMRQLp8~RL6zuP4_Bnfo zfGzp zCAsIhyEF%OD)*YYLYV3?2r-3Z!+COWQBe=*D0n~ttk;5U-eB^?|L}YQQ&VCeb2;gr z32%9&ja`Bs!S3|;%NpH%hJ@#%e~kb$fmP#`ohB*o2Aj4cdrUUb9lEP^FMbXfc3prQ zQ$P_4m+4t>dlJW)_0^DCr&(A^XZkv3gz)0!uq5X!zSh90tK+@|6JPX*9UlcvwE|<* z=>lf2QB;Vk7{kNUM`G>vlJ-sbE5HqtG8e3A2w3hqfTLA3R^lf&gLcmjFK2e>a$i78 z)SNKak=*0!Mf}ueqmoG8P>b~aD!{RFrN;sO<=Sr@5{_lYLzytpvK%a#YuU^#>vA&6 zg5%bvi#gDRo7fsV;N4ttZDyt5_ZK8MLH_i_=4eaJoDklS{9!KgmXjnLGer#sH{ zBsyL5?Tvi#k}pMT3NO%5(|mNvUee1wdYiS$-@s!AT?q%47^w$SWhTFYxvA@&`4`D6 z0C6d%Il5(j5#ud7GU*upe2o1E!mU})IzBt|^xnfQ-~Mnpyw^O6Dt$oXCX(F0L4Tjx z4<2Cvj7q&0ic*I$8&a^S8ytp;b;H;zZc*h{3?!wjz6*OK%d`A$2~IhQY`>>{%>nTf z#SFB3akjHu*`$M>6kbS(cW7?0JBg@n%ihj?m*hnQ!pQOM&bSwd`#pQj@e}Ea2XqJVFzN?#t+S<9|D}e({Olc5uuKK+`*B)IRdC71`tehmGQG-;a*gp*^!li#6PB|j zdcZ2H%iu}ea%1u`f3n`A^lnMzUU3sH*tA$?@`dYwM-j1prg6jjn2lyleP3#F-hyh} z85Cr5PaiMc=J6x2=G3}WXGg?Lly0z5q?EddMO({iz`@>M#YpWMjSi(CXx=7OYbXOb zH>;(M6!1VcsCN-!;zL1kfc=+#Xz{eH{3QP)gSTBlX|F!UolJat-FE`JNb->00`kw#Mp-%h3wG8l#tq&UP$Mjq+nUk#mWt+OWwDOQ81Y z1vF?JJm2<@{^rLvXEg}t4T*jV*$jG>7@CnrN(XJ6J3?U4x|a0r?EyZv>ed=_?-2a5 zzntH|IxF15Z}NELl_8!ufd z%J}JaJ$^4xx8(# z{qFhN+JcjtSy%23@!@nIqEtRKx%+LHs>(*PT%KcI?niwC*MwA*S(`tv5|{ZZ=Bwkw0?&6a#(`M20@hM zz|NYZUbQWOZQELa(}f;zKSTpwmhE%E`?vrHe43#=Fr;;CXXs~7jPI<2^QX1i``0pk zH*`w1xoJ{l;x|D8?uO5uL;2v&@$45%tlZ~iKr>IBM#>gn}Ivz`tK zj%_nbV>=FnV4L9tnZo4jm0MDo?><>uE+gcq&XiHcIi=$(h{1gIcxYr{H(n73=s{h+ zxVB(ZI`M_NEE~5?tDd7hcb)HFs&nx4#Tzfi8R*{B@5(%4(j!HDS2^+K%{Sh?C3DQ6 zDmKZ;Vzgm#ySU2D%idmp#=E+#WVy*Iz)?%Uk?6R!eRxP|+{ zaPiS9+6~gc0F;e7(b=tzl^VMeZcJqFEHUHzV{#|tJ%4CZ)f^`9-p9KKEV+01=*y$V zm@hfO^4@dN#@WQ1`hqr@ZFb2e(_??lvz6o=%VZDzs-3+FGx3;~;COtS|I(5pF?)7> zb|++Yw7e;E0d>j)$I~iY4hx!BOE2+iKHcagmG!9vOsMLv+T)hBjko*2=kNBf2@SjB zu!=E=-D4srD8^f%QiZO~i)p|##yyS3OFk;Qr716<<|m%A@72=WCJ}8 zdy8tekg};WKNOQQ^jf}%TK0KbpXAl#vl3b+nPL<^WLV!~?!gjOoYBE>T~zHfog~Dj z49F?EZvfC8GnUf3!A5cIII`VHD2F+A;#jv^ZvgS=3Z-w@(*$2t$aO2CdB{O5@#s>--drK~@<%VEf7h&~kdS*w-wq+tF=+L>l1vz(Z zCUd0rUxNM_Vant_j4TaoYgiSmHfbTMq1S;oLyq_SQsNg?2Oq#&=-z?RAw!`W$<#VI;!N|3yyMb9u3#vntfui1Zf}2^B zHt!z*5|7aqq=t0PV;j!I(#+jH6FMu_zBnipIV9nG3Lpz_47nt}0~tGk;ipY+I__DN z95;KW5zIQS-8r06pPAX}RSNNe1|bJ=9h*vWin0Hp8~T6Z_3#Yi9PwC@TG9)IWUKe! zrfmN;O%TGlhdH;Jk=9kNNK!;1O0vs6iu-F$ZcT<%pN4lOo>VpoUD;STzDK>Y|BIg2 zss%9bBSOMGXL%_3sFikc%#;LsMi%ScTge{NhCH8^L@t_%x1DPmiUFU6E0CkL+_d>& zp?c&E#FcUBiN7kNRoqihbO~X_*@%;Aq_4*K)>3R=-zTZQYp-k*#zR`Jwh7hk00QQl zbx^xLxUpGQ6?~M?w_bY#m^DJDO4>m++uw*BGSX>v&IUgUePnd*sCygEAn=ivz*zazsRczV-bB* zT%%)x;~z;#~`Vtb>7gf?9EC~i_>PA#U9@Ehk4P4>Td7S z4$%!2sZ?1q8&HANLEkKphcKIcIftek~|JSjavvFTqek)Nbzac_yaq(qgyJzl0^a)WL-Vn^oM9HL{z& zL0#{{U7!UVUj??&J>VvFpoWqOU4V`O4x%JuNlH(n`}`nc$SGc?Rja)9 ze{1f{-;z$(FkVeMX2Wn&T$0S0$)&=jF->#BrgU;i#Y#&u%5-u=%WCB2&ov+$=dlRnXU|4lAs~@q=Hlm?MH1kwaJ}mopOG;@i&6NhdK2 z4xN5W`nHwG$@#*x_&9LH_b{Tgo(+okwoBUL0h_%7fKMMyBtHEn_q&x)E4LMIymJI}ayi+Q+j+OOCu#0?jmc?*`DfQ;{I z;_tT=gKDmvQwF;a3@}kak2FT&i3-CusyUFkfC zLyCYOyJh-u0F;>8>3(u>86P`0=cMv_W7n8?h4Mp9NU!NGv%|z4zk>{t(G7a@)V%%q z-K*i`4*m;QU|s6+It_Iw(=%E*Epv=VN;86_lcU(riU@S*s1OS>_kw+!g&?0@T))Y_X8z{i9>a8`{um|v>tv-h6eq8{NwD_4)+PI#V%a-bAR=#hGT9? z50cGmYk7x_-Eq|+`T5mVkBQrsjY{S7cgIaNc!k5B*{v@Joyu*_FJviZ&7{gk&W~P= zH=1k%?0SevMP;ty?NK*i+an=?p8rl+Nm8w5nbd@l`xiM=v7xKA*`$m1QdvEI?O?s& z+<&fUbc1(9dM{k6da4yI zHJ+PQK|sv%@kLhS%N-vS6p7gehKVV$x79dF8V3-EiEx zEcKqlzU-G^SaK04mWL|}DLhNz!t?F~><`1;56N%+kz9i{1NW*X-9214-}<(aQXS#} z8xP?I%%RK6PD9edGrhT+6{+>uaK$M%=MjOy#jg-ntlzItU9aDHpGvU_{{F#Usdr)w zajLVbpuf>o!kl9^;M4hn^5%?{*EgRg{kkUka~tDKcEs)2Y;5KUutZ}t)!`+*L*UUPkv+onP4gbdYBf1Xw!gjZ%!~Qi`9&MVT zu?F4HlLIv&Y>?}O`>1L65_uE{pOI!g6>nt31BH)+kvx|K^rPLMJlQ+LreDIy%D`8! zfbV>TK`68vHR%k0DSi{bKIXe#!%k;K|3)pqT=$vj>~vsnKz4w^=eCFe@Q%vfWOT_| zkWY6HY|j=0Ab9sQf->4Dl~k-6bkU&Lo8~=ez$Wal6=~O{38HAH0b=mrBRV-0{pjIJ z1atAKxT=ukflO8uLNGHC1@#fL$2bxGwI_7U^^0;v@(RQf8SJT?@Lsm@)*mu180FPF z$;bm(BhzIAj<>2?2i`uDpF@&QRorAQhNO`}flD^C;2=PC9 zc8R>!JC6KWKzE=0XTW%FVKL?q!Y_Rk{W0tVAy1gVFxUv&D!)`5WF`NB@Eo8U6537ek`4kcPT>eHY)p~9Urf4D^1bKQe9f@#(ZufE|r(! z82U~So9^~3<;pYWO i}^N U_{ij}^{(2)} (r_{ij}) + - \sum_i^N \sum_{j \neq i}^N \sum_{k > j, k \neq i}^N - U_{ijk}^{(3)} (r_{ij}, r_{ik}, \theta_{ijk}) - \\ - U_{ij}^{(2)} (r) & = & \frac{H_{ij}}{r^{\eta_{ij}}} - + \frac{Z_i Z_j}{r}\exp(-r/\lambda_{1,ij}) - - \frac{D_{ij}}{r^4}\exp(-r/\lambda_{4,ij}) - - \frac{W_{ij}}{r^6}, r < r_{c,{ij}} - \\ - U_{ijk}^{(3)}(r_{ij},r_{ik},\theta_{ijk}) & = & B_{ijk} - \frac{\left[ \cos \theta_{ijk} - \cos \theta_{0ijk} \right]^2} - {1+C_{ijk}\left[ \cos \theta_{ijk} - \cos \theta_{0ijk} \right]^2} \times \\ -& & \exp \left( \frac{\gamma_{ij}}{r_{ij} - r_{0,ij}} \right) - \exp \left( \frac{\gamma_{ik}}{r_{ik} - r_{0,ik}} \right), r_{ij} < r_{0,ij}, r_{ik} < r_{0,ik} -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_yukawa.jpg b/doc/src/Eqs/pair_yukawa.jpg deleted file mode 100644 index 103edc604321d02e39545dd4e55acac3884edc8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2189 zcmbW2cTm%b632gmgd!q@8XzG^QIR4=BM>o0x+o0bg(i3=QZz)R9#S3ZF;RHm= zA;l+03mv2e6X1aeNCGiPRRrX~NDB(&>3cIb_vf4U*_rP@`<>mL{bN@+DVzmlFWEZS z0w53wu>T%_kOx=+5K%A~EDHH95C}v}{IG=hcVwibBo9Mn z9fheP5J)6aURhIHQ(YUbj#L+R15y%zFGvIgf&#*q02}}TBBDQf`~^f@6f6c3k@%iH zCkueUA|Mg4sF)~N>WAZp8w`Pp$sHA!H^wR`x=1K#;rXHr%4nX8XD9jssFnlP)cvBXm85 zzc`6xwA&nUna@bx^^P!c?#9;z<4;^%ElW^v!z%rW-applyC?)6`moSR3!PiRRL{Qh z!QQJ_y^qPeD(?={2V}NmgYCaqBxpRSqJGjzX-BAUr4l#n){}vU=)vH?d*Z%NZh>R5;0V1~s6w31Ag-G~R2VVG z4hnZ5y_&gBMk&7#0zk#t9?T)5sjSsc;?uXGXw!dHO!j-XShe+5nZG8mD4T@b@Gifw z8ym7SuipnpZZlRQ%lp7%tOy9%B2CLDfnXttWzDQeen#qj9dMge#E}LV1X_Kbo>mxbJe(iV8TCdSM;39 z=BY>qal-g0^(xeHarC#B&tQVHU zh7`XGwLdat+2%~xUnfRqaX#SABiDulq|%pH1R1&WWvz=*VVj#CNhQ})qgST;%3m<{ znwgm4Yo?oJMN{%0I&}|1=8DSn4`z!D_|6+Shxc^@cEG!LQ{wVl0+t;yEyo9A-1a{7 zVlH{^_k=g7-TIAKw>k2fL_h7UZwxDm-V)?8B#}6%RNCt z0ID-HA%MI)S)Yx+ueB>Z2=8pNqVeq<*k0L6Zn6nQj*5w;b(Yl9%xWQkXY)R{H!Ba! zTVKO5#ohiH^9)xpiewaBH{b`t3ihgjjHmfODW7A$84@fo1QR)YSu2B1w=AmDZ08A2 zTfxZ9me`tL~yBgbP8L# z{6cxVb1tWYIUF3C9Ga}Xqy0S0W+6V*(P`861;Q{c^>e2sE5yCdENVxy@!`=4?I&9J zo`P-wKBqS&6%T|*eQMflY{ewCyU`X`7VEFBal5V@_&IoI)hqX6E`(ci?7??N)C_>4 z@Np|Od~)XLmd12x$grUW(lt73&pCXvJy`lyCYof;SE0g{0AJ^yWhIM?TtV-Sq!zZy`f)>NwI6A$iCFiVZQ;N*Ly) z?6*;qbfltw?!THj;zhX|tBI3cEBeF1;QZ`!w(5|QPJW^9<+r5W_J+sU?WlZ*gp9Cs z|K{H<3Kwco(Ln{$7b0`WUAe7H5~uppIA5iFrWKn(@VQZyh+|>zOY6`&%`F^&&Aa2k zGb3X&Zr6PQEZD?5vnKN;E65|%Lxp|HmRHMZtlD$3)QF0bylVX)T-x)>h%L#Q9cX-M zp9#^@iWC#vVmTBc1lUL0?yWb`EZJ9Pn*kCbjRd#NQVxGvaj8KBsvN*3M>rWvBE0|3_rK_MA@|>2X#~jt diff --git a/doc/src/Eqs/pair_yukawa.tex b/doc/src/Eqs/pair_yukawa.tex deleted file mode 100644 index 382cf249a8..0000000000 --- a/doc/src/Eqs/pair_yukawa.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - E = A \frac{e^{- \kappa r}}{r} \qquad r < r_c -$$ - -\end{document} diff --git a/doc/src/Eqs/pair_yukawa_colloid.jpg b/doc/src/Eqs/pair_yukawa_colloid.jpg deleted file mode 100644 index 1d836247574039b3451b84950e5e86bee6e6f13a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3067 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 diff --git a/doc/src/Eqs/pair_yukawa_colloid.tex b/doc/src/Eqs/pair_yukawa_colloid.tex deleted file mode 100644 index dbdbbcd140..0000000000 --- a/doc/src/Eqs/pair_yukawa_colloid.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - E = \frac{A}{\kappa} e^{- \kappa (r - (r_i + r_j))} \qquad r < r_c -$$ - -\end{document} diff --git a/doc/src/Eqs/pair_zbl.jpg b/doc/src/Eqs/pair_zbl.jpg deleted file mode 100644 index 88656af5eb4f6ef617e1bc400e6f4eb894da4695..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32209 zcmdqI2UwF$v@ZJ5yYw!gRHZ6aX%UeoLPQ0mMx=uwg3?2xND&bD0RaUeDqWhCfV4!q zh=_EhCkTqPgc>A-^ZEaGm%H~q&vVax?sM+GcVLp0nfWHOX4b5EXRVc^uSfF$&t+2! zQ-F?+4loD*fFmL&qlK|C?CLeBsl^o&umS)$w%zXDy+h9f0PukOLD$SKp1A4Yc!FgH zpabXuRzMUGc5}aX*XZiiE5QFW?T&-3!8D@sr?3BMv;Vq+*TeIkI{?sK1*>m++;fM6 zbUjF`y59}D57OU3`b+5jyC6;fr(7Ti93V)4_(OaDLr?#qZ~sG+{%&*QnlS({FaiK8 zr<+@lH^?W*A#ftZ-5czO;|xfj3Gna@0O?yGZRqaf<^j?#L0TCONBp5bf%K`{|E?eJ ze@DBy-Tv1;-Q2wYmHvkp@JaBCFZtfPd&e#O?+^b^zQFGUgY)%w`ZMdCo&mPk!FN6| z9|w#9UmyVR1mJ)hZ~|QOO8{`+GYsSz0E`iL!-IUieeRzy0$0gX`GiG)yQ=aD^)qKR z{#5^eCjF7me+Ikh^S9j5@e%&5EF9$Z!dXy0O#ZFxW)uLFgK{Z!>)*;`7eSE$=dt;* zdvH+5KmCE?0su?^JHQPHfRZl>$N;AR6+j)(2K0anfC+FJfC4uF2f!6@2YkRe4gx{} zB=8W31CoHhfJ`6=+x=X(HYX2&|RUsM(03xi_V)afG(I0N%x2@i7uTkhwc?!8C?xs6J0x9 zAKeh$H#!2{GTkQKZ+ZrLPI>`)33_>YHTrY(M)a2SH|SmHz3Bt#Bj{u3Q|O=3zoxIC zZ=i3d@24N5pQm4;-(dh4I2eQ&PBN%4oMSL%fHF8TcrgSqpcoPvvKU@7R53I&^fHVv z%rmSq>@zYm@-v=bRAJO(G-tGBbY~1?L@_>L%wa5LY+&qS9AP9dk{D@BTujHAl$dmx zESPRGc{7DF#W7_u6*FO(x|zn97MXULnVE%{6_|CH&6ypT{g@+}pD^b!S2Mq79%5c# z-eF;35oJ+gF<^nRxUt-4iDP-rQo({}8D?2zp|EnWO0lZ5nzA~w2Czo6X0g6u#jy^v z{$M>|<6)Cy(`AFQd9a1ErLq;WHM0$}EwUZ3^Rg?j8?fJC_hWy^{*1kfy_#{-UM9B(;3a1c25Ir%shIgL4;IfFSL+bAIF8;^N|x=eoe<$aSA9 zg{zFKlWUfXa*Y3&>M@IB9>>tfa*s6}8$Pzq&BiUqZN%-$9l@Q&UB^Ahy~@MJBhO>Z znL{nc&&s<>x)i3+09LKH+`C+sFHpkA+X3&xFr|FNUvxuaj?qpMhV7- z{}F#7e>eZ40JDICfQ5jcK$1YEz-IxHAfKS7pq*ftV6I@B;Jgrnki3wE&>f*vp<1DF zq2Iz1!bZZL!U@7v!o$LQBH|(!L_9?jMXE){M1G5&5H%6?7flmw6rB-c6jKzl5epT| z7wZ;V6&DcK6L%L+6t5MZJWhXH@%Xjlk;e;;e>%P+At_-daaZEGM5n~6q>$tVNk7S_ zk~qm_DSjzKDPO6lQh2FfCj?Izow#%2*@>@<@V$io_It4iucu3jQS7|Tn$m-nEd7(3L zPT<_tb5G8FIL~zc;(7G>*7N(i+Pe33YjrpDRP_Ay-st_*SJ3y=FVtT!kT!5Lcx5ne zc*5|O;Y-7L$VrGB4zaT<^HH!MI^=u)14Jx9o4dxkYt@y1jPWxovU# z#ch(iv3s`ripK?yryk3m2A=7jKfDaQ(!G9q8+d1UFZ)1zvV2y3jeT=`$$sX37{5J# zsDFw7(H;9c)o@n$EqGG^Ux0r=7eW#dh8Vi5bT{tqe4uV%W*{lZGN||--949k@9qnL zK;TpGso>aPLWp5VZU`mRF0?L;H!L9RQ@CPyLimpe(}frOEU|T&7K{cJ^$>=vv<#Bpa1oon&Xo*mU}U``o-}V z2`~2YJo1L~FXUHYBrr*s-!FY%etl*3s^PW#>#PFif{=oxLc7A=qH{%M#bU)t#fK#U zCG(}%O1sK*%F5mxf0J5HUmje(T;W{trSekcyDF8cSJgt*NpFF-!Eb-n+^QL`wXE%^ zJ6Bg#FIWEp%a2WLplb+kAT|0l&cAbbH`H{wsiRr18QY@TQqp>|HMdQ$EfvR(i@_b? zBk()#@4jDc_ikV4fOSlD-s~Lhvg!KVZQ1>y$F!%j*Qgi&!Qew{pKf2%$8#SW`?dQU zK52cz4rmQvKWl$(7}Obj_vQST<{|wd+%ROgedN+e*{|CsgI(75gR*9qr|`L7;d ze}233jXW7Lc`)^0nrS+5hG!;g_W11Uxzlsi^V;)mgiC}^#OuVV1^0!O@Atk_7h{&V zma=|G{V4mX{1uJW=Weqf*&2-bqjL)8w)Ui zuk>DC0I*pC09+0L!2bmR*pK~#AOCJa_YdX;=|3p!PyUns1N{%i{JTaQ01Dm%fIXNm zgZae+0FVPSKL7w%F95)e_W-?y#=mB;^iR6yrJ?>eLB|PVOlHQTqpd6eV3`7d!;?ox z2kl2khaDi!eGLGeCja2pKdqTTtedV*4;+i=j%4*>DLz#p*mhg%Sf|DC}5#owR*d8dC# z|1T}*k6tqT3k~8TFda>SIF+7`?$19x_zxxqCWb$WnURr!iG>*i1t4l*VdY?BVP$7! zW@h7JW9Q)DY3gm2Qd7@*1vN0ANb-0`JxBcfRW`7Uv%`Le;DUwWIB14na{|E#VwFuTKyrbz{Rvz zHSKIN8rMjIw}Xb*g=94ea^yd({mt3`HO8X|JcvvXLUY3%n`aJ!aQlZcs-MTFT=n1 z2r$5rA{-B)#(&RbtJH4cVbjR&JxcF9I)3&T#hWZetbWoO>Wwa)TAt;Ldw&FYO*(3F z$aSyoO@w@z>KY6dlhGjLDop^SIXcMv8xk_;ut5#S;EWWZloK$bK4RBaB&C~Lo4!}zC12` zQg`aZ0P+>Nm&RcaSsf!GOv!V-so$~}j)1uPYP>U!zLQsUf+#+}n)4P%n4*WdRJ5|% zBI9H+vc_!}n>^{Ptd0Patq8eaJ!6@NXbzX(N*gtMf`Zxe7#`=a>h>J#@(N$E)cExs zrBeYV!#fPTEh8>pG>p#1&T2^W*)-@?-B|MyQMguR6BwZO>U42cbmAuWWF3uPDTFk$ z5r_0FqCzOag%ZX#EL)6v`eZ!aTcGT#nN`x1?HPn?CO^jG;5s`wKkCRCMkSfIcq#znoYz$^Fa#aU7b{9 z?#H?0BcN}?f4lAZHRm#&iR~jmwXLe9V7l~mBBOwf3Gm+{-w;b~nO)xM=IRLd~0RADirhy@>Wj$<7VOdrfHd&iMaX4$0_gQ@rEWij9#CK+|qPrw(Fzx#dy8R zU8xbr6L-KD01VG)_C=V<(g^*ap{gZf*9C9=X&+$CkKB7&W`|-a`DgsjIB<&_e^W zZp0)6Q~?Yd_m$9zG}*U93gk;m6J{w<-B^nb;mup@+|T8^y?Co`zNrCXWl`6cj{pId zUMNMuvmuYPLJUYFR`b(F40SWQn&&zV1Wz=RnOk11=yq_l=@P>{(j!^jh67GmR6X(E zy&vzj{V{EaWlibeD)Q9ZBOtnhDno*GsXaz9l5hzm@eZ+xWUM(>jmPn8cZr`cZ+r1g zvr}2Nokf|S%THeaSkUu>?hE$1^Yk0X%e(%c&s@j6b}Wi=ax5yE&fG8Jj&+&q>(3J2 z89o%;4){D5Qjj2^zU`J~U8S%aN?9mD4Z~RL@!}Lkwt_GE7e=6k(33~NU&((xAD$&M z)A3GUD$`~7+;{!ld4`5p<$CJZ-`SW5#Qn>bl8G9D$)Vdh(TgHz?jvC3!1V|iSv-uA zA>Vr+k=lg^W`E)Y$?*yLEKwourz?N*er-E^X>TWe7VUqJ<&(gxISz@6khME!HaEW7 z@AB3jK5S)x#84T?!bGzqszjc zy_T5##F@bmP@^*tF_cr)YuE3QvKM0GJ7HfT7l)~42M$!&(901Og{Pt_RH>I!19}qP zw)z!z4Vy00^**NFnH@|S;!1B1qYarUEW2!!$OW~yIrh&j3lK4i9|xL`veIRLQrw1| zg+>I*;MRoIT^5o0SCn)5k9pY-}(5)17?wQ8>9!|{FGfUoB6r0>(o-cvUh(r0Jl2gSs041f3cwNPqX z3#k-rwy_UFtXa4^p4#-;&@FQ%LpN$0HMVMPELXd+!Xf*()Wb?cO{6Bp`{3jp^}=Dp z%hb+%)-Nw>$U;Tl6#~8$>o4=g%Y8&ohB#CS{W>RjJNbov;v1bugMCLp9V8lyPnHr# zoX+Rn|MvSd|~!2 zzN(EnlR`?6Rlyh`&p1(`QynMR4KfzyR{h<{8N?$X9w$xF=%y)A?vYtKb8MF$9cv>{ zR^@YkST%=zPah5o=5Tr@Yoy6@rKJB@suUMC&(+zJ#cBYpqrS5H6q$pU&7%#BK)pjR z+wx5W*dGB88cWQ`X4P$PLdL>ym;*kl@nId_yBw~tTTh84#}hV}Q920zu!zs&dl#aD zm0$5nAY^9bqfUc3fT0DNvnn1D|mj)&w&jTX3|3JBkl!^ zeHsp!9%wrPgyyU?TN*u9pV`1vQD2S#k_~qpj_Dd+}tC;p);?^tzxGV_RKHc>cL zZe%@w^4A75nxL|Ms4?&)K1Hv*C*6VlFIN@ao7UI71@pAuyen;+f(0!hzGsBYK{cJT zrQvOvbLAnHV=Z#Sn~ocZl2g?Zl!POIiH*WfO6qcz8={@2x>5WIGfwRt^5d&mDPG5^ zXO@a#CrFzD6R`eBsh zayEt+X{X}t)3tOd`^xa0AMB<-7t`U^KYTx^6styFbL=xKKjcTOTi^{IE(@#9RV8h} z)t+w$3oc?r@BwO%Aa%V-kheGkq#Y%EzRd-mzG-Q7uS>gu&xrF$|MA*{LYRs~+L$Ow z;%RIjqy2N#sOy+}CnJ67(;fsPTaSru|GVx z=_ggUg*-tDc(h=pL5QGwkmIQ`I{7*{q3>Y<-;~!?r>BxC+IO16=DD|Wo64M1) zM@|P#4HRv`<@TRuuFqYX>r=vi`28kv|9S_S2`3-MuscZ!Jp$PGh?rEW1IhK^!WcFx zWbS6xlui7>WjcSjPXg*BUrZjN%KHrBG_FgXkuEcP*PN1n1W3|k!P(p)D|D$9Q#d+x z^ULS)tW%byxlxLpmc#3uU_nqzjFslzc<8yDEBhhiZ(~j`SuHs>tbKE6MD=abLXLpO zsP!xk?dqlUEjVlwx>Px)vtui`Fv|lTV2_X-l!wGT24fPW8`LUdRajzzn2LPIM3+#l z^W2AOMUjQahQx!lb>RSYM^Ql3wD;}s+_ive#LCszI0V?i^L`?CtQ3RPf_DeUfTB9Vf(d|WpXjVpEgD_c&@7Xz(i8sxNqC#xjaEpn+Rl5HT znPotVWS2Ts&~XI3wO=(Lb976pl1*b@Qt}r%bDp^J*Wp^ttF)5MoigK;e3Dq6XIV&l zv84;k&fkMEpgxH;Qu#M_MGl|g=)!*Q^|OM8Zg7NG&(9ho|Lmvu(UYm z?b$z9z8;3|fTrSP%~8S>DDiOcVKy;40o0vq)q*|>&X!JV$HwOKVcU9FQzoKMk1Jj4 z>Jq)?5bAkZvaVf9>JCa4d7sQ3+saTDrsg=JuTs)8SvW2!ZJFl;9Ti&&Lk$F$6ncM5 z5*ne?u*{IX*1PyfTx=6M$v{x8BrWWA*HXx34YAyvc!n@jn$=AscyMTW;i_O&m2^$x z!-4PB2zNI|#5;YP%8zf(KZ7UjGLW#1i8LLmKLtaWIk{cU;U7Bb9iuN|QsCGg`D)p& z;t24KmIwB)`8nplwYx&6sAyi4nVGX}aU&=M`!ugbHNX~!^S7JbxYT{_omti%=wwgs9arxt@{E=Lopo5qF0)|gSBMZN^*VV>1uH?1v>R{`pH()%m z=rOkd7dmLmsL|;=7CNKWRW1#W209}CsL)s6suG|7g5r`;I(&qWi1h7fS) z{|G~OinT}qNY=xb`k{oDBnvGSwJt~bwBlqv*ILVW%Cv7@s==%!=`8u{ObMSXe<f32yv>}~e4|!t&Q^F(@Z7Kb*@(@bjRC(M{G(XpUr)QPpjFhWJ>db{4JFY3V!SZY z55nh``8IKz1~M#_3MH;2&Fu(B#t7~xJq1SE|pq7o!nH4PR<0%0>1OSch7-qy~}9& z4k3L;fyeXfBY>;}p6Zg~N5G<$)PGeNaVQWM&O+6|q~L$zsh~Zk{huYjlDm6{-1bRL zqPKT2A;?TR(-SV$>2b!uh{fW&{n>+Hu%S6p>44F=WRT3!>3W7NS5ea$TxRjo$@uQ1 zLH)#TGg94x|6{5~-@Qn&UPdL^D(M$*Fv^d{Q2le*sKGVSQp#{|w-gud1XW{HpFa}e zeUBv(UYVwLX?JM4U1?u$Xu6k#fM zyYap!MQ>N14C(-Gqe3KvGPsb(VS!~d@+=99>=bGsegD3iVsKn>^WOVPD8(BhfgVCr zazU|4C8bQoc)fu5aZbg+18d{U-N+Zq~Z8OC~jTr^d{YtP#m|NIr67 zN^9`K9%-ikXI-wi!00M>mYuP?B*vF5Jy0}l!CB+EAbqAhuJHBiLP7I)xT2BV5-qKv zX==g*O$W)|M$uZRegqnw9ulMyH=U7c4HW-*ZYD~AIaVntckL=vyQI|5=Lu@?j?VJ6 z8CRF^Tb7(}*1c}UFK>L)c^{Ge9!fcFPd$m@4Q|@WyMY?a7kt~$`i%duL_V|Bj|X<8 zs;e$dZl|DO-E30W!2g$8^c?dEilM$OWHRIGXe*4UG{^&UNpfQ__w+P(zr{B5eaZw3 zy9nx#_$vDTJH&VJTlIBHCYgh<*9Cp#7#o*H<|klRUw^ioKLXsxHCx^$l=^0yo^f%{ zl!?2MW-PL<0-y7L(~1~b6L@2aC~s}eeKG+rP)vsxg)4ni@Te($QE;ve{yJ(+F<`^L z$@J+psMq>bsP`u{0P%t{Bd>w0(TemBr=FMCi=lB-9FTg5W3R=2iE3d4TwMJlzJKsk z4(;QbDKukbN^}?LKw>vg43rkaAO~tZ2ilH~(>6Rs%1S1!v}X$k`U*L^yg*4c*CwyR z=VgEy0S3+8*w-f2y(=U8~;jXYL2(kpiPj4&Z_fn!%D{{+x za&g@PwIi(h}~jKyWNpOwKuPzl~%q1LgVBPCqamJB2@z(if#eLUx8wIA+{oLMp*Jfz z(>Xbpx14;g!_Wl|YR^i=?CVAdHA#1`N?HaOUT?<5QEW*gW)wA2XJrT9&s}igb+zRVlg zRK51(Kx|uE_vf4+g*Cmw0)Mp}>oA{*GOCV4>7qVJ30I)~)gIb4;<54FN&UGim3NK8 z)nZ%a>wFjQkKZ0*92(c2rnB4Pr9f0i22c;it+DeiQeCdHL&3?R*7eO}`g*dp%h}iD zJ!*Y#pEY+6m@4qP{)n2T=>Ow|$$K%2#$6X>X53Pz@ zv5NApBlMg`8oG@(T_J@i_8b!MLy&5}Gijqw}xPF*aFn%Aj+m?6f z;-2Yq_y&gR|MnbPwc9)b{N|RKgB&X4vYf((uYO9$)+dXeecZQ&e}|ldd<2xY0|zCvLvCwRr%% zr*HKpsI88@L2@3J>PJ>n4O>UR!y|z*5u7XuU%6Kt7Aqto`D=vThS1WO%=w|4-Rh34 z%Msv{(f_6{&$3%DvH=>YnQlL2sqh13i~U+4fb~V%`@^-`T6e5)xUHFQ)ID%)PY&~2 z)k?ub(m-FB?7uJ(qZwt^O*=mkER`Z`5BY}oYi<|~KCK#X>s`XdY~O{NrbI?Xj$3YK z=c=zzq7LpmIU`v??@NMab%J9TUs$=#@ar$@Dw^1g&dQSa?rjMHul{nZtWa@_R2sZ@ zxA*hbEj#Z`HwaXb@j@v8+@kAIA|ev-Z{w5onGVkV!qiQye)A2l3gai5<^~q8JF=Kd14S;nS^8pWd3f)-m07)ORttz_;GzDL z(|zCc3SU?1Hn+@L1&l1UWmEE2tA92c=n<>CC3HZ<6Kxfi(Sw4FV(~n_Dx|8Fn{BOR z!3u5Nlmd=rD<$y{@PeDKo{zm<=3}yxRU|Qm;%kH-?MTJrYvMZ$7`kirb*mEQ+ax=7 z^=rOq+MOw=a#|uhO$pzrfK2x9-X6vK&d78aGUWWYJc1J_qT18cuuKE%ScDJR(!Z$d zArjk=bAy@it@d_&-wn6B!^UfVEoLH>2tmc+=-S-m>>IBJ5%|37gOJ@i`;N2ODuOzp zf=ak`=f;C35N9I7IZOm@h%pJ+T=;)09}it)AsL$;7NJwI;S zd?&2@gT}W`TL{Xz+6SeVjPmJCbU^qZp4>?hQdB`DLTVyXf-pGA-*p6V>vI>vehTNy z8mf}Ie2##CT#|BdZ~>}eDlH8NL+?!hGDNndc9U-Wt9KDQ|(vY%g`O-|W{6-tG$voMX$*^Jlp81% z78_{mjv4O@^h3xc&Q!s@!xT)?eIBwOz{0N1-5P>s2KA`i8QJlh+8!%!ak86i$in-q z&qY>e*ii-3S3DXGg~=?j+Z(({_+hrb=mI7-Tk05+30)rcdR>iiWlzXHZ7>RP+p9kE zS*5C~ibpngsdF!PuJ%kmqF)x>vLi*2U7dxkmX!Jac78=Q0B2i@(s_xr>a$3!AFk9l zDRpvmx)>D5c=poUu1D-?U5^X=DkJe-m>8NUrT1lb5!LRCW-6~Q$yx6ERX?G!yMKLt z{!NjY#Um*r-kCS!(SQpH@kkRL@5(oFpF94yUEZso5nA;jj;K7hJ6YomXG~wYCyM;V zlq`6G?gkhKVV7t<+!C>k%hTGitKCGjJxd7Y>T?B~+hxejzG zCA-;_gae2VPGH1vXnswYXo5+kdWSXgUUI7+UaJbIAl~=lRy2I6+%w8)s(!&a?K+J; zfehZ_2!oHP46i_+GKJwLX(NSd>s_#-ZFsuDzf`qi_(n?`Jm15Y&uO`#xoFGT{1b1* zYa@X;SoW{WKX50JvZU(nQq6Zb#W4R1WaS76YDCqG=Asz;+Z~%{I`kf2N<=o@(0i~F zNB7J-!#b}FTl`{rAe3_bVARHXI5c|`)aJ`pDD{I>W=iEkHJ=}zbagIPlA8=VmL=>v z8>J?3a>GKArvtR2UF)*Z%Fmi+U)l;j>r2>;k5j(YQG$nppj*c!*XLjE?*HOh`tSTMxQSlFlObJ_YKQeG zdL%O`_3_Res}G*%)dbRl2sbu)G5JfULD%^V;|QS{HtU#B+?FuwbNMnKed$l_S70Qrj4_olwn3Un4lS|n74JIdlnjl%pSBT$F*ikd0(5`2eGC9?=WywD1QDbfc z%~Eg>XRR_4mJHjX>K^VQ@%uVz*-@%|L02SzR7{w@TAK_9~0MCW2c6X z0Qg4g@4fca*s>xdYeUT_?lfg|pg7F*GwE!7+@f2!C%$#+KG-v!%&s1(~IB^8|fChH%L%IA9MUE1Ut4!MimrY+^p-D zNX9vnJoj9jL5gymLe(F5O{1NhiX--?AG)(OH-~M(f4Y*mtQV8j4ad z<&f1z;<-DmwuI-X<8!_dxJT~V>El5I2w!DXK($2u(xkD$>kp2QvuTz+H$boI1~by; zuoR_58=n(~xL0$BZ5a>k;N!&~|+cQ~mzLJ;w-B6AUS>s)(bh0BYW?>2`@|*pa&N%yB6PGam6({xf@VRn~F!x>W>Eq#ugm%X_ zwNDil--s1y^$+2~wECMZSIdhtuG!bxBg+)n`ey=EH|{riVRT&K=kuBZn(mL~4-_jr zh9Cx~{CDF>`PF1@BKN~q71E7mN%1erRD}wQLUS$4T*gtau`0QEuKV_DLZqUK?zM)F zMPkOMb2|`~KEdugXz{d{pYsGCHUv$Na)(*y`FvM85~fFqzmW3k^Q+2Vj)8eza8
    hpCV`~2!#CrT28R`@zWQ?A{)ohA#~7O=q7SH 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ͩ$>mctPh&g&N`jyd1|R#t3mPrj!Yi5QEhrOp8P|K(XL%@{g=d~%bd!HZ7U{rPLIFZL28 zK38bDtsi(r+r14`EmT zy44m^D6H)6sAlIh1{nE;4m89pq<7FJiuU<3Ec~S0JEH6sa3J` zCt!6{E08t%eU}_t_DI(ly5MMfX=?CL59sh(7zQp0;SCpr{Uyv2PuGB4T`&NjZUk2#k$ov@?pd4hmFZKhrC z0&OaO-b^i7!ko5Kn3YmKdMU-Yu|7e~Eb-H+?(wBt>{sFq)GLHttussrBKzvN9Lu7~ z$)?tAbF1y#k=|U}c^6axQ&XmLcM6Ko{Kw{j0Ax-~v3L-NXUu331_yb162AI8ZNe<~ z(H*WcvwxzLx2iz(pTkqCznVVQC;M7YwEW2in-uQ}i6patlVA}cs3)#g#pqr71~T$R zmPei7Wb7K`jT^5l*M~ND%7ohBFPGoczY@bmJHz+fs5E_s24Kxp^{o#DXW30W`ec~; z;r_HjapS1!d+3u0kDI0%Ut+mSCChJ79{fD>od&L(&kroHziEN`kRfMSoPcgoSPCd5 zV%p8v*3q8ia#CBD7l=M7!7sH28;&g>6_&VJadWoVa=`oV3+C*=3SFbBh)`Z=7HDQ- zyca2)XuVWm6Es%2ivw429mYCf`*FIS>c^C4og0TfY4{l>0brS3gsr7J8tQrCwHmaU zfefVGxUl8BPsgvlEQ6P~Qw}FCa^b<;ItB%R&|Wi=0Uw#9PjUE*!^uJGt>zw)XWx5Z zzo7`reM2*oGm*mKf%0GcO$ZM1GXJ}{AqghPGN7#_!XJ>R;`iwKZv<9Vb?=iWB%4Q# z`V~Tt&fnKCS-v8N9o1kvQofmtu0_8@_$ZzmumYG1o9Dth2ktg9p_wl*Z$crD(S9972dtpU7DEbK-)!KnpiuvJj|fIwS(N*_>L~EdDO< z3VkXGLyU7%0**1&!YUD5EOELxRi7O%%4P37kO3?FlYduZs!6f1>$;IbNYU0bW#aLB zezSsCr@$bZgM(Ov7wmM@uy`G4-;);=cLreMNoahNZt`%9&JmI|MN|gwWZP07`+e@q zpi26NU1Q^nWR0=Y)msVtrzLRBuAp3pQ~8kHgw_KVuHEQjAb?NSKTjaz4mMI$!i4uq z;`KZ`{`P<^TDyjupFK&V1HukJPW$|`jUBMZw{eZ!-EzgGBo-UG`;VDEm#h#m|I{qz z__j~i>}$-YbSSo>%HG>pT=79RB)+nuWqEe9GG#x=J{LV~B1CCB)q4M)t8M_#;UMH3 z8ORn-%BN|(=}o-Sn7*Y8Vajn~djljN%gQ*0Y&g1Ilkhn*`&~WVgnwql!YiQFHm5x- zpK%{>T}(ZKC&4bV)IlFODKXN()k*OR6F-?Pz~g2iKd9J0)AB^+#(+YN>PvsGv|s5C z83L`$D{wiw(QsT5T^tWP>effPDuEffOW?2NloMJ`2_x5^P!aJ_ijd6Zb<4D6+!AEqP~XlvO~5{hO6Yxh>60z>qGWo z9x2Nt{@N_Z-~ZhTIe|sj+T#bf;sb&H-uC(PaoriNxqE6sqo166o3153f9A>2@Z;gp z^Gc!b+wW4z%`aq&p|92(SN0KY<-yybRyFLu*SuZM^w)<*l$7g!t9wBCGVf# zy$5gQLZat{HvSZ# z5j|BKR*#=T4YquvYC7a&+Uh(ae`)9ZddO2RBk`N-wcELa3UNjs@C#+%1(}{yw9|%g z39l{z!R380tz18}f)V#r))%>BCug_(ze_whrTTeUq63exMLDoE#wmxQh>jXa9aoHwZ8-EKj+DO$Zb{Yz z9wl0wtkA12F@ky3U%1{s74n(yY&}{`k5)Bx5p)o8M|BZT>Dbf1D!-kV0z4P|HbuLG zVeqEyeN`^FKXfF&zQM*d7nF%iuQ?A$%>tq_U5a6=1iF0V8!C zn*}e%W=Dp6&SU(X8Gg1ba8mQQ_xH5-<6PtGh}c6>EbuyjJmAW1l-g|{B3n3IUXf(@ zA8JIjz#_DfV_DUFV?#o*?gsBkvr74PM70ShMvo!#t%n0`nJ_FwESU*-jy-EQ=n*M4+G?v{__6oEzTEg&A()ENOb|YZ5L+15rEf-j&BeH_k;IpuYkEFk}R{ zXv1`46gCtqVQe0cE~iNc&xjGPMWw?%4-)jaqek?u*U|-hVX;x{^r&Wce`Ek;ji4&{ ze2?dcjOm3rvoNG5@2MF%@#SMW6IChVH8PzbKU?lc5I9JiuUTH|XqZ%C9jYyhbEf+^ z2=Gq^%k&4nb<%I@7QD1z7qnN>c}BRTQ~&CNk7`xBnV2!72<^Jb9jCJU5B#FM#=^~c zUm!xWrssEkR-d4M3sRUg7eC0)V;4h z@9qwYV!D@xQs}>G>pJ!8@R$C6KSI~{Mf{TQL4OnM7$(#+A^?lUn}`|yIR*jmrLw(vm1yYR_$=g5MY%cow>SXCS6dio%stWes64jf;U(C`8}UXPEq zj9XaG4XVpF99RA2AG8vqQgg$9&7II}Q_?$7=PtybOS5Nq0^!V?KKmc*+Yu+iygKjs zJy6(BWw@b5o7Z^dDE1%6{WHIkZU;Wo6tS6z!@OAy3Rv1PM->ZKBK`7KHw)9D$geoR zi=+1G*&6wb4;#ZFsNJXF<7=~eZ>OB421GCw;Nb^vFsZ)`bY!>eQj2g~c zE>e%wIaY2|1>dyY^?h>lj^NP^n99hKf(Yy~Yi0q_9*^)vOy`p|deJjgJ&1EbHuRO0 zV5o-8#7^pI%TfT>N$^bh#!$}_`{}PYuGbMLQ)B#^!q~byHk4Ft7Eoij52JZ8qySx} zR#-o?3vvXE7~|?7Y!q_LxIq5wi?)8mcW&jlU7~-I7dE{cBY4JnSwd&xJ;HtX4VHKT zM{>VS>uo;`7MD8RU-V0~gOZ6mo80lsf^LxalHOVF%FO|{_&x-S7fIpck zTDKda=qcl;j=o+fG{!)Xny35w%{OK=el#@)Rs`8?JG|F1?`t@EMEDguojnbhvro`^XF*8ZxsEzWL2H?aye1`-+ClsOp}f6G~4gEz5OKj zQnRu%LAV*ZA)iu10)S<>7rD6(H@SfB)Pkq^37+as_bc=^%`MoNcq*VR8aml zVTe!V%n{9_t?3C`&iiAqrhyIivgX;poQ4cpK>I6j!+^H53GR)pNkk5O0JOlz9gj`) zEHZr7KgHd_mLwTq{ykaJ_h_T7!nqSJ^eIXjt&AL(P^m_Yhj7AAkU9M~Cgm^eaGKo0 zG&P~-rJp1SAWaAO3^r`d+Gn5LRQnV30NOXV&tk?)@q7L;g87Ihqiz@X^6?l%YvvoB zNh=XzyZVRi*eeJcLi=x%{cwWDIzA@e1K|c&X^9n@0NCS}@!3JRf)jm^&&iPr&dsL# zl!WgYLODM#UBA*)X8c1GVNmuSXr#s60f?lls@89>Sq40UeO)E|@Z%di&ymaVOSvL9 z@WZ=WLTC4jYbUI3s~Qmsp3D#GHx?awc5ju5u(!iF4}UgUr?^1~h#thrmfNI!-!khv_!4LYDw^SD7_%2NZGP5FBa<9t+OG>_k0|_5E|{ zTk4!tDz@TLsKV)A4X=K@9}3COn_y%G{A0U_@B*prNSiQbcunc_U0;LZt-pxhKQqN=3y6J}66?I!>nZ>>DWDs& z3=d}t!5`Al9aRKj#wt)xckV*T#I=bS(Iu?L3h0~%-=q6vYDa?BwKK0{`6x{YiD*RF z1+64|1PC}Jz{f%=V8YO=rftTx$dXfIQ6}BE_{o|MQsS_{y1@RE-++5j7*_`!elz9QbSeiJJ2iuS_Y*nq?q`tq zKsL}Jx>&*Nri@x5{WU`vkYySGv5Jtz&5q5OHqD7oV1lYVkvr@@{y{^^se$)oN12%S z#zl^2N;FT*uz8H8H@ykHch9vlU(7AlqOQs-s4}B9hkMuNBgWr)3}x@Cw$wc5SXYM` z*~=!wrilwCR7K_umg+$kXqE2l?Ex3iAL$Yg5EtS0Hgzo^WP1B>%za|RKgfBu?`eJZ zeb>kj=3nlKJafCn(_edzeQ}DCu?YJ`WLO`7dJ$dW9xi$)KCWFr|9trl)qEBgPdU=) z?KWW7e9LI8qA1->;Hmm|Q(GHC>Hexd#f0XIc=Z>4L;v)la527gh4}z@tjsyxTX3PC z{jbrNo-4fmN9to{PqE*u7=8`X$Cn5%>vKdO{Ucz4Pt_?OLg5&Zc)MVA#Hr$7;H6l2 z|J56&1|>>+kNM6noGC4s{SefIY0?jt`hv;ysN%z#8Tk+7D|=D)c7CU)Z?vx0hlb2% zjpxqwwLVST@}jPjMKu=1dzF6~Op%H{dzKHB!Huj1rV~T2D-LBqKS5fizS;N@%p)FyXJ;4c6usb=VgY~Db zRpahoJNs`5Bpc)@CkE->Wih85kAo9{3X=ykyMNR%j4Xq*1MUm3Q@&1FWezSbK3b{* zDU*ZpcPAIVB!A0sEl^S7t{%GKGM@ti#pZ*YI@iZz_eOADuvd1dn548pXfW5yx)Lz3 z`MXMszv5PTp-uEDiDRPj4pu5(3l7D+==FJHC&mF`8_I8IM_fu$jE$4XxZ8TtVAax%Is*5jf82cwGS72>KAFh9 z=3fK8q+sfG&^mJlYh#Kx)A@O$@wABdX_+$#T5R&LE@BN=C*lH2egw`*9*%Wm8;A3g zO5M>WKmB#|z4!eyBp*fVR#c}Byvo#mdC%tMU`kO<(fGs6tfe609qQl!xF(uY#rp4# z+Bs`C&S@*zfoUO81M}0ZqZo{R6a+l)HNcjHexrd92--XqR@^BjNf#w1Os;pUA9B%l z8RBtu!lXxjM;!<=3bk_mSO#NLeRV0br5Qb7pQ5&JR~;qBx=GvZv_7#qFAUgz_CCBo zW2A9M_gajWFV@!9CW%lIgfg!vnQ8vVu7)w3mKu@TmBdv*%4T{0=RwU&bbm!dQz~e~ z?V*H&;pjv0up1WW?*9g$<(SG;m>{FzdY?i~x8`YPSGd1S+Pfvk<+Qg_?{oF^4sxSJ z;dV6XY!WO%?+DF49<=ei&$Sv=b3He?g|}9b{+=YT)icstt!GO(Inv%xLo4@t@sA`Eq z*N73WKfVQXAz5cyy?D-*TF2R|8G^1B>}Xa#=9?!}4?Lhz!eGwKtGLlz{A99ch$1BN zYu}MncLlD$cN)69GSB#pdlxo0pe!9f^x`4WQJlaHP730bjtmLMVNzuuR9~Asct;FeB?pwqB*JA86&5;gl4AuhS#%p{Jxqiw&$RpvXnunrGW;i60@%M!R7ICD9Zl_~2_`{;uAoyUS{n~onWpIySt zNjeAr-dem=!h_v9rLXPbK8IK+L~yk{po7l$d-PhoAAcogQPG}+t?;I=Vu$%Ori!iK zU8|4DGqDXF>QbUy|5PhxUCYt}tn=XtjdYPVu7t4MZl@mvaLmiOVR~`RVbR2MZrA4R zgC&t;Xs1;_t#`rKMm|S|Ulw4E^SQQEMJTFbJB*leLuK|ZTUjk1X0upSzt-Tks;cE( z(8FwbV=34k3LDtNh1y z$lN3%#J*o!tq0jpJ2nc|e06@!=)bX=p05cm)n|^ToRoJO zW%O4fpJx`&51I2=6psG41;t(YHX7!0FXF4O%FeyOELQF^27_rLS|@>;CkXc{PU!Gv zRHp!rQ;kFMiK{bNE)4s_xiQT@C>MJ4V7c`^ZmZ8|@Z0<|4Qru8IXc(OdBz3^*q*`- za5PA&o*Y~qEYx7uars~hcpV}H9 zkolwBk@_ojVVAN>7N$Bc=;OtYg&E!-uW;%lFPe>fstdvTI6bL9!3TZQPrV%fEG8uY zwY)tHND(Q6U)BXsDalN2_?fzK1&VhVkL2)EFmE^&U`!nAliA+_f=Ni(=YpVXTGzsW$KYsWSzm5JrSf|wDldTKVeVFCQ* z4~!*j4QeX8ZRPT*o5{Fp`%ZC!Mc03zYF@nU0wCU_g=zgfHo9v!@~Npoy|7;RN!oaA zr}MIk%2l%=c|&p>rI1#?7#dfnE3s&Thk>!hX0#4=lbT7Eu1|^cs^ryM(0r7-!?Ukt zTSq!y5gJ8=@k7x}Gi7vZID9V`I~DRLXZ(Y$!$d??|G*q}PN4ZubMqQYaI!)T7JVqt zHmdZnr8e8R4tev_J2R1lhXxlMtxidNNOb}X84nH$)d2m4WQZuvx9Wt?29cYE5KLr6 zLK&Hka{}MN7YALdQ8LMfc@{g$AT{?y&^f=*%~9N7E`~B?mn0j+_0o-lhJLkup;Bza zQUkwl)RyBTIm8z3B*gPy^NIf)lHTRZB-GMsN$fFE>@1ycwCs*euKzt&+K`n?7}Yd=cS88%T&f6Ca;Ji>XvY}Rx>=?yzXpba3hOJqd89v0vf{PB=d)i@)Uw-3 z2(`yD^mP%B(Z6c%0CM_IQhDLQKn!h*+0|6>oi2th@tGIRTkJvestvTtk)AZPPCjYQ z3#TFpYd(^uWEW*E){i66Xc(jcV@eP|q*KKkD^% z0<}o58zwMGPXU81)9&_J$6p!gX4@C9zSul)ex#@fTVo!q|lHJs@jw?~4iL|B?M zy^2C0aDo!ltX*-A;2fzn%?L-*dLH;19NIX4VUq~=c^8uO1WYiBi8{r4Mjs8!U$pNS zj)}TPSM?FGC|i#@|7~133!G!@zL340Zk-2=!>9>6PO@`zdiA(rT#2r2lM_*CJ}%cW z3WW5hf`%`;gk@L)&a@3;mqt^rpZ&!TZX&f7eVaKGgwi=tTH2;75JpZQu53vXRZU6uP diff --git a/doc/src/Eqs/pair_zbl.tex b/doc/src/Eqs/pair_zbl.tex deleted file mode 100644 index 3d68dbed23..0000000000 --- a/doc/src/Eqs/pair_zbl.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} - E^{ZBL}_{ij} & = & \frac{1}{4\pi\epsilon_0} \frac{Z_i Z_j \,e^2}{r_{ij}} \phi(r_{ij}/a)+ S(r_{ij})\\ - a & = & \frac{0.46850}{Z_{i}^{0.23} + Z_{j}^{0.23}}\\ - \phi(x) & = & 0.18175e^{-3.19980x} + 0.50986e^{-0.94229x} + 0.28022e^{-0.40290x} + 0.02817e^{-0.20162x}\\ - \end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pressure.jpg b/doc/src/Eqs/pressure.jpg deleted file mode 100644 index 525d8a75ee0747ad5b552a6020eddad600656ab2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4333 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 l`jdAtbp{vxy&h*o>Wu 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 F{{gZoA%y?{ diff --git a/doc/src/Eqs/pressure_tensor.tex b/doc/src/Eqs/pressure_tensor.tex deleted file mode 100644 index 5fdb723979..0000000000 --- a/doc/src/Eqs/pressure_tensor.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - P_{IJ} = \frac{\sum_{k}^{N} m_k v_{k_I} v_{k_J}}{V} + - \frac{\sum_{k}^{N'} r_{k_I} f_{k_J}}{V} -$$ - -\end{document} diff --git a/doc/src/Eqs/ptm_rmsd.jpg b/doc/src/Eqs/ptm_rmsd.jpg deleted file mode 100644 index 2d20da706ef61194305123d5673042d2318aec23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6833 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 | :ref:`Pre-built OpenSuse Linux executables ` | :ref:`Gentoo Linux executable ` -| :ref:`Arch Linux build-script ` -| +| :ref:`Arch Linux build-script ` +| ---------- @@ -132,11 +132,21 @@ mirrors. The "module load" command is needed once per (shell) session or shell terminal instance, unless it is automatically loaded from the shell profile. +The LAMMPS binary is built with the :ref:`KIM package ` which +results in the above command also installing the `kim-api` binaries when LAMMPS +is installed. In order to use potentials from `openkim.org `_, you +can install the `openkim-models` package + +.. parsed-literal:: + + dnf install openkim-models + Please use "lmp -help" to see which compilation options, packages, and styles are included in the binary. Thanks to Christoph Junghans (LANL) for making LAMMPS available in Fedora. +.. _openkim: https://openkim.org ---------- @@ -146,7 +156,7 @@ Thanks to Christoph Junghans (LANL) for making LAMMPS available in Fedora. Pre-built EPEL Linux executable ------------------------------------------ -Pre-built LAMMPS packages for stable releases are available +Pre-built LAMMPS (and KIM) packages for stable releases are available in the `Extra Packages for Enterprise Linux (EPEL) repository `_ for use with Red Hat Enterprise Linux (RHEL) or CentOS version 7.x and compatible Linux distributions. Names of packages, executable, @@ -187,6 +197,15 @@ is *lmp*\ . Thus to run an input in parallel on 2 CPUs you would do: Please use "lmp -help" to see which compilation options, packages, and styles are included in the binary. +The LAMMPS binary is built with the :ref:`KIM package ` which +results in the above command also installing the `kim-api` binaries when LAMMPS +is installed. In order to use potentials from `openkim.org `_, you +can install the `openkim-models` package + +.. parsed-literal:: + + zypper install openkim-models + Thanks to Christoph Junghans (LANL) for making LAMMPS available in OpenSuse. diff --git a/doc/src/Eqs/fix_integration_spin_stdecomposition.jpg b/doc/src/JPG/fix_integration_spin_stdecomposition.jpg similarity index 100% rename from doc/src/Eqs/fix_integration_spin_stdecomposition.jpg rename to doc/src/JPG/fix_integration_spin_stdecomposition.jpg diff --git a/doc/src/compute_centro_atom.rst b/doc/src/compute_centro_atom.rst index f00cc179f8..6e706d9f97 100644 --- a/doc/src/compute_centro_atom.rst +++ b/doc/src/compute_centro_atom.rst @@ -52,20 +52,23 @@ in the specified compute group. This parameter is computed using the following formula from :ref:`(Kelchner) ` -.. image:: Eqs/centro_symmetry.jpg - :align: center +.. math:: -where the *N* nearest neighbors of each atom are identified and Ri and -Ri+N/2 are vectors from the central atom to a particular pair of -nearest neighbors. There are N\*(N-1)/2 possible neighbor pairs that -can contribute to this formula. The quantity in the sum is computed -for each, and the N/2 smallest are used. This will typically be for -pairs of atoms in symmetrically opposite positions with respect to the -central atom; hence the i+N/2 notation. + CS = \sum_{i = 1}^{N/2} | \vec{R}_i + \vec{R}_{i+N/2} |^2 -*N* is an input parameter, which should be set to correspond to the -number of nearest neighbors in the underlying lattice of atoms. If -the keyword *fcc* or *bcc* is used, *N* is set to 12 and 8 + +where the :math:`N` nearest neighbors of each atom are identified and +:math:`\vec{R}_i` and :math:`\vec{R}_{i+N/2}` are vectors from the +central atom to a particular pair of nearest neighbors. There are +:math:`N (N-1)/2` possible neighbor pairs that can contribute to this +formula. The quantity in the sum is computed for each, and the +:math:`N/2` smallest are used. This will typically be for pairs of +atoms in symmetrically opposite positions with respect to the central +atom; hence the :math:`i+N/2` notation. + +:math:`N` is an input parameter, which should be set to correspond to +the number of nearest neighbors in the underlying lattice of atoms. +If the keyword *fcc* or *bcc* is used, *N* is set to 12 and 8 respectively. More generally, *N* can be set to a positive, even integer. @@ -74,9 +77,9 @@ lattice, the centro-symmetry parameter will be 0. It will be near 0 for small thermal perturbations of a perfect lattice. If a point defect exists, the symmetry is broken, and the parameter will be a larger positive value. An atom at a surface will have a large -positive parameter. If the atom does not have *N* neighbors (within -the potential cutoff), then its centro-symmetry parameter is set to -0.0. +positive parameter. If the atom does not have :math:`N` neighbors +(within the potential cutoff), then its centro-symmetry parameter is +set to 0.0. If the keyword *axes* has the setting *yes*\ , then this compute also estimates three symmetry axes for each atom's local neighborhood. The @@ -95,7 +98,7 @@ of any atom. Only atoms within the cutoff of the pairwise neighbor list are considered as possible neighbors. Atoms not in the compute group are -included in the *N* neighbors used in this calculation. +included in the :math:`N` neighbors used in this calculation. The neighbor list needed to compute this quantity is constructed each time the calculation is performed (e.g. each time a snapshot of atoms diff --git a/doc/src/compute_cna_atom.rst b/doc/src/compute_cna_atom.rst index 16ce67d7af..f270891d82 100644 --- a/doc/src/compute_cna_atom.rst +++ b/doc/src/compute_cna_atom.rst @@ -51,8 +51,12 @@ E.g. 12 nearest neighbor for perfect FCC and HCP crystals, 14 nearest neighbors for perfect BCC crystals. These formulas can be used to obtain a good cutoff distance: -.. image:: Eqs/cna_cutoff1.jpg - :align: center +.. math:: + + r_{c}^{fcc} = & \frac{1}{2} \left(\frac{\sqrt{2}}{2} + 1\right) \mathrm{a} \simeq 0.8536 \:\mathrm{a} \\ + r_{c}^{bcc} = & \frac{1}{2}(\sqrt{2} + 1) \mathrm{a} \simeq 1.207 \:\mathrm{a} \\ + r_{c}^{hcp} = & \frac{1}{2}\left(1+\sqrt{\frac{4+2x^{2}}{3}}\right) \mathrm{a} + where a is the lattice constant for the crystal structure concerned and in the HCP case, x = (c/a) / 1.633, where 1.633 is the ideal c/a @@ -62,10 +66,13 @@ Also note that since the CNA calculation in LAMMPS uses the neighbors of an owned atom to find the nearest neighbors of a ghost atom, the following relation should also be satisfied: -.. image:: Eqs/cna_cutoff2.jpg - :align: center +.. math:: -where Rc is the cutoff distance of the potential, Rs is the skin + r_c + r_s > 2*{\rm cutoff} + + +where :math:`r_c` is the cutoff distance of the potential, :math:`r_s` +is the skin distance as specified by the :doc:`neighbor ` command, and cutoff is the argument used with the compute cna/atom command. LAMMPS will issue a warning if this is not the case. diff --git a/doc/src/compute_cnp_atom.rst b/doc/src/compute_cnp_atom.rst index 3290f67508..42e187ba69 100644 --- a/doc/src/compute_cnp_atom.rst +++ b/doc/src/compute_cnp_atom.rst @@ -40,13 +40,16 @@ only be performed on single component systems. This parameter is computed using the following formula from :ref:`(Tsuzuki) ` -.. image:: Eqs/cnp_eq.jpg - :align: center +.. math:: -where the index *j* goes over the *n*\ i nearest neighbors of atom -*i*\ , and the index *k* goes over the *n*\ ij common nearest neighbors -between atom *i* and atom *j*\ . Rik and Rjk are the vectors connecting atom -*k* to atoms *i* and *j*\ . The quantity in the double sum is computed + Q_{i} = \frac{1}{n_i}\sum_{j = 1}^{n_i} | \sum_{k = 1}^{n_{ij}} \vec{R}_{ik} + \vec{R}_{jk} |^2 + + +where the index *j* goes over the :math:`n_i` nearest neighbors of atom +*i*\ , and the index *k* goes over the :math:`n_{ij}` common nearest neighbors +between atom *i* and atom *j*\ . :math:`\vec{R}_{ik}` and +:math:`\vec{R}_{jk}` are the vectors connecting atom *k* to atoms *i* +and *j*\ . The quantity in the double sum is computed for each atom. The CNP calculation is sensitive to the specified cutoff value. @@ -56,8 +59,12 @@ E.g. 12 nearest neighbor for perfect FCC and HCP crystals, 14 nearest neighbors for perfect BCC crystals. These formulas can be used to obtain a good cutoff distance: -.. image:: Eqs/cnp_cutoff.jpg - :align: center +.. math:: + + r_{c}^{fcc} = & \frac{1}{2} \left(\frac{\sqrt{2}}{2} + 1\right) \mathrm{a} \simeq 0.8536 \:\mathrm{a} \\ + r_{c}^{bcc} = & \frac{1}{2}(\sqrt{2} + 1) \mathrm{a} \simeq 1.207 \:\mathrm{a} \\ + r_{c}^{hcp} = & \frac{1}{2}\left(1+\sqrt{\frac{4+2x^{2}}{3}}\right) \mathrm{a} + where a is the lattice constant for the crystal structure concerned and in the HCP case, x = (c/a) / 1.633, where 1.633 is the ideal c/a @@ -67,10 +74,13 @@ Also note that since the CNP calculation in LAMMPS uses the neighbors of an owned atom to find the nearest neighbors of a ghost atom, the following relation should also be satisfied: -.. image:: Eqs/cnp_cutoff2.jpg - :align: center +.. math:: -where Rc is the cutoff distance of the potential, Rs is the skin + r_c + r_s > 2*{\rm cutoff} + + +where :math:`r_c` is the cutoff distance of the potential, :math:`r_s` is +the skin distance as specified by the :doc:`neighbor ` command, and cutoff is the argument used with the compute cnp/atom command. LAMMPS will issue a warning if this is not the case. diff --git a/doc/src/compute_dpd.rst b/doc/src/compute_dpd.rst index bca72efdcd..cb3008a73c 100644 --- a/doc/src/compute_dpd.rst +++ b/doc/src/compute_dpd.rst @@ -26,19 +26,26 @@ Description """"""""""" Define a computation that accumulates the total internal conductive -energy (U\_cond), the total internal mechanical energy (U\_mech), the -total chemical energy (U\_chem) and the *harmonic* average of the internal -temperature (dpdTheta) for the entire system of particles. See the +energy (:math:`U^{cond}`), the total internal mechanical energy +(:math:`U^{mech}`), the total chemical energy (:math:`U^{chem}`) +and the *harmonic* average of the internal temperature (:math:`\theta_{avg}`) +for the entire system of particles. See the :doc:`compute dpd/atom ` command if you want per-particle internal energies and internal temperatures. The system internal properties are computed according to the following relations: -.. image:: Eqs/compute_dpd.jpg - :align: center +.. math:: -where N is the number of particles in the system + U^{cond} = & \displaystyle\sum_{i=1}^{N} u_{i}^{cond} \\ + U^{mech} = & \displaystyle\sum_{i=1}^{N} u_{i}^{mech} \\ + U^{chem} = & \displaystyle\sum_{i=1}^{N} u_{i}^{chem} \\ + U = & \displaystyle\sum_{i=1}^{N} (u_{i}^{cond} + u_{i}^{mech} + u_{i}^{chem}) \\ + \theta_{avg} = & (\frac{1}{N}\displaystyle\sum_{i=1}^{N} \frac{1}{\theta_{i}})^{-1} \\ + + +where :math:`N` is the number of particles in the system ---------- @@ -46,8 +53,9 @@ where N is the number of particles in the system **Output info:** -This compute calculates a global vector of length 5 (U\_cond, U\_mech, -U\_chem, dpdTheta, N\_particles), which can be accessed by indices 1-5. +This compute calculates a global vector of length 5 (:math:`U^{cond}`, +:math:`U^{mech}`, :math:`U^{chem}`, :math:`\theta_{avg}`, :math:`N`), +which can be accessed by indices 1-5. See the :doc:`Howto output ` doc page for an overview of LAMMPS output options. diff --git a/doc/src/compute_dpd_atom.rst b/doc/src/compute_dpd_atom.rst index 12956cc5d6..215e16a9c9 100644 --- a/doc/src/compute_dpd_atom.rst +++ b/doc/src/compute_dpd_atom.rst @@ -23,10 +23,10 @@ Description """"""""""" Define a computation that accesses the per-particle internal -conductive energy (u\_cond), internal mechanical energy (u\_mech), -internal chemical energy (u\_chem) and -internal temperatures (dpdTheta) for each particle in a group. See -the :doc:`compute dpd ` command if you want the total +conductive energy (:math:`u^{cond}`), internal mechanical +energy (:math:`u^{mech}`), internal chemical energy (:math:`u^{chem}`) +and internal temperatures (:math:`\theta`) for each particle in a group. +See the :doc:`compute dpd ` command if you want the total internal conductive energy, the total internal mechanical energy, the total chemical energy and average internal temperature of the entire system or group of dpd @@ -34,14 +34,16 @@ particles. **Output info:** -This compute calculates a per-particle array with 4 columns (u\_cond, -u\_mech, u\_chem, dpdTheta), which can be accessed by indices 1-4 by any +This compute calculates a per-particle array with 4 columns (:math:`u^{cond}`, +:math:`u^{mech}`, :math:`u^{chem}`, :math:`\theta`), which can be accessed +by indices 1-4 by any command that uses per-particle values from a compute as input. See the :doc:`Howto output ` doc page for an overview of LAMMPS output options. -The per-particle array values will be in energy (u\_cond, u\_mech, u\_chem) -and temperature (dpdTheta) :doc:`units `. +The per-particle array values will be in energy (:math:`u^{cond}`, +:math:`u^{mech}`, :math:`u^{chem}`) +and temperature (:math:`theta`) :doc:`units `. Restrictions """""""""""" diff --git a/doc/src/compute_entropy_atom.rst b/doc/src/compute_entropy_atom.rst index 96d55bbb0d..9b4bb5f62b 100644 --- a/doc/src/compute_entropy_atom.rst +++ b/doc/src/compute_entropy_atom.rst @@ -53,27 +53,33 @@ information about the solid structure is required. This parameter for atom i is computed using the following formula from :ref:`(Piaggi) ` and :ref:`(Nettleton) ` , -.. image:: Eqs/pair_entropy.jpg - :align: center +.. math:: + + s_S^i=-2\pi\rho k_B \int\limits_0^{r_m} \left [ g(r) \ln g(r) - g(r) + 1 \right ] r^2 dr + where r is a distance, g(r) is the radial distribution function of atom i and rho is the density of the system. The g(r) computed for each atom i can be noisy and therefore it is smoothed using: -.. image:: Eqs/pair_entropy2.jpg - :align: center +.. math:: -where the sum in j goes through the neighbors of atom i, and sigma is a -parameter to control the smoothing. + g_m^i(r) = \frac{1}{4 \pi \rho r^2} \sum\limits_{j} \frac{1}{\sqrt{2 \pi \sigma^2}} e^{-(r-r_{ij})^2/(2\sigma^2)} -The input parameters are *sigma* the smoothing parameter, and the -*cutoff* for the calculation of g(r). + +where the sum in j goes through the neighbors of atom i, and :math:`\sigma` +is a parameter to control the smoothing. + +The input parameters are *sigma* the smoothing parameter :math:`\sigma`, +and the *cutoff* for the calculation of g(r). If the keyword *avg* has the setting *yes*\ , then this compute also averages the parameter over the neighbors of atom i according to: -.. image:: Eqs/pair_entropy3.jpg - :align: center +.. math:: + + \left< s_S^i \right> = \frac{\sum_j s_S^j + s_S^i}{N + 1} + where the sum j goes over the neighbors of atom i and N is the number of neighbors. This procedure provides a sharper distinction between diff --git a/doc/src/compute_fep.rst b/doc/src/compute_fep.rst index 1cbabef023..84b62a7f4a 100644 --- a/doc/src/compute_fep.rst +++ b/doc/src/compute_fep.rst @@ -70,14 +70,17 @@ initial interactions of the atoms that will undergo perturbation, and a term :math:`U_1` corresponding to the final interactions of these atoms: -.. image:: Eqs/compute_fep_u.jpg - :align: center +.. math:: + + U(\lambda) = U_{\mathrm{bg}} + U_1(\lambda) + U_0(\lambda) A coupling parameter :math:`\lambda` varying from 0 to 1 connects the reference and perturbed systems: -.. image:: Eqs/compute_fep_lambda.jpg - :align: center +.. math:: + + \lambda &= 0 \quad\Rightarrow\quad U = U_{\mathrm{bg}} + U_0 \\ + \lambda &= 1 \quad\Rightarrow\quad U = U_{\mathrm{bg}} + U_1 It is possible but not necessary that the coupling parameter (or a function thereof) appears as a multiplication factor of the potential @@ -89,16 +92,22 @@ This command can be combined with :doc:`fix adapt ` to perform multistage free-energy perturbation calculations along stepwise alchemical transformations during a simulation run: -.. image:: Eqs/compute_fep_fep.jpg - :align: center +.. math:: + + \Delta_0^1 A = \sum_{i=0}^{n-1} \Delta_{\lambda_i}^{\lambda_{i+1}} A = - kT + \sum_{i=0}^{n-1} \ln \left< \exp \left( - \frac{U(\lambda_{i+1}) - + U(\lambda_i)}{kT} \right) \right>_{\lambda_i} This compute is suitable for the finite-difference thermodynamic integration (FDTI) method :ref:`(Mezei) `, which is based on an evaluation of the numerical derivative of the free energy by a perturbation method using a very small :math:`\delta`: -.. image:: Eqs/compute_fep_fdti.jpg - :align: center +.. math:: + + \Delta_0^1 A = \int_{\lambda=0}^{\lambda=1} \left( \frac{\partial + A(\lambda)}{\partial\lambda} \right)_\lambda \mathrm{d}\lambda \approx + \sum_{i=0}^{n-1} w_i \frac{A(\lambda_{i} + \delta) - A(\lambda_i)}{\delta} where :math:`w_i` are weights of a numerical quadrature. The :doc:`fix adapt ` command can be used to define the stages of :math:`\lambda` at which the derivative is calculated and averaged. @@ -109,16 +118,23 @@ choosing a very small perturbation :math:`\delta` the thermodynamic integration method can be implemented using a numerical evaluation of the derivative of the potential energy with respect to :math:`\lambda`: -.. image:: Eqs/compute_fep_ti.jpg - :align: center +.. math:: + + \Delta_0^1 A = \int_{\lambda=0}^{\lambda=1} \left< \frac{\partial + U(\lambda)}{\partial\lambda} \right>_\lambda \mathrm{d}\lambda \approx + \sum_{i=0}^{n-1} w_i \left< \frac{U(\lambda_{i} + \delta) - + U(\lambda_i)}{\delta} \right>_{\lambda_i} Another technique to calculate free energy differences is the acceptance ratio method :ref:`(Bennet) `, which can be implemented by calculating the potential energy differences with :math:`\delta` = 1.0 on both the forward and reverse routes: -.. image:: Eqs/compute_fep_bar.jpg - :align: center +.. math:: + + \left< \frac{1}{1 + \exp\left[\left(U_1 - U_0 - \Delta_0^1A \right) /kT + \right]} \right>_0 = \left< \frac{1}{1 + \exp\left[\left(U_0 - U_1 + + \Delta_0^1A \right) /kT \right]} \right>_1 The value of the free energy difference is determined by numerical root finding to establish the equality. @@ -265,9 +281,11 @@ If the keyword *volume* = *yes*\ , then the Boltzmann term is multiplied by the volume so that correct ensemble averaging can be performed over trajectories during which the volume fluctuates or changes :ref:`(Allen and Tildesley) `: -.. image:: Eqs/compute_fep_vol.jpg - :align: center +.. math:: + \Delta_0^1 A = - kT \sum_{i=0}^{n-1} \ln \frac{\left< V \exp \left( - + \frac{U(\lambda_{i+1}) - U(\lambda_i)}{kT} \right) + \right>_{\lambda_i}}{\left< V \right>_{\lambda_i}} ---------- @@ -314,31 +332,21 @@ The option defaults are *tail* = *no*\ , *volume* = *no*\ . .. _Pearlman: - - **(Pearlman)** Pearlman, J Chem Phys, 98, 1487 (1994) .. _Mezei: - - **(Mezei)** Mezei, J Chem Phys, 86, 7084 (1987) .. _Bennet: - - **(Bennet)** Bennet, J Comput Phys, 22, 245 (1976) .. _BoreschKarplus: - - **(BoreschKarplus)** Boresch and Karplus, J Phys Chem A, 103, 103 (1999) .. _AllenTildesley: - - **(AllenTildesley)** Allen and Tildesley, Computer Simulation of Liquids, Oxford University Press (1987) diff --git a/doc/src/compute_gyration.rst b/doc/src/compute_gyration.rst index 6eb629c85b..fa3b6acbc5 100644 --- a/doc/src/compute_gyration.rst +++ b/doc/src/compute_gyration.rst @@ -32,24 +32,27 @@ periodic boundaries. Rg is a measure of the size of the group of atoms, and is computed as the square root of the Rg\^2 value in this formula -.. image:: Eqs/compute_gyration.jpg - :align: center +.. math:: -where M is the total mass of the group, Rcm is the center-of-mass -position of the group, and the sum is over all atoms in the group. + {R_g}^2 = \frac{1}{M} \sum_i m_i (r_i - r_{cm})^2 -A Rg\^2 tensor, stored as a 6-element vector, is also calculated by -this compute. The formula for the components of the tensor is the -same as the above formula, except that (Ri - Rcm)\^2 is replaced by -(Rix - Rcmx) \* (Riy - Rcmy) for the xy component, etc. The 6 -components of the vector are ordered xx, yy, zz, xy, xz, yz. Note -that unlike the scalar Rg, each of the 6 values of the tensor is -effectively a "squared" value, since the cross-terms may be negative + +where :math:`M` is the total mass of the group, :math:`r_{cm}` is the +center-of-mass position of the group, and the sum is over all atoms in +the group. + +A :math:`{R_g}^2` tensor, stored as a 6-element vector, is also calculated +by this compute. The formula for the components of the tensor is the +same as the above formula, except that :math:`(r_i - r_{cm})^2` is replaced +by :math:`(r_{i,x} - r_{cm,x}) \cdot (r_{i,y} - r_{cm,y})` for the xy component, +and so on. The 6 components of the vector are ordered xx, yy, zz, xy, xz, yz. +Note that unlike the scalar :math:`R_g`, each of the 6 values of the tensor +is effectively a "squared" value, since the cross-terms may be negative and taking a sqrt() would be invalid. .. note:: - The coordinates of an atom contribute to Rg in "unwrapped" form, + The coordinates of an atom contribute to :math:`R_g` in "unwrapped" form, by using the image flags associated with each atom. See the :doc:`dump custom ` command for a discussion of "unwrapped" coordinates. See the Atoms section of the :doc:`read_data ` command for a discussion of image flags and how they are set for each atom. You can @@ -58,8 +61,8 @@ and taking a sqrt() would be invalid. **Output info:** -This compute calculates a global scalar (Rg) and a global vector of -length 6 (Rg\^2 tensor), which can be accessed by indices 1-6. These +This compute calculates a global scalar (:math:`R_g`) and a global vector of +length 6 (:math:`{R_g}^2` tensor), which can be accessed by indices 1-6. These values can be used by any command that uses a global scalar value or vector values from a compute as input. See the :doc:`Howto output ` doc page for an overview of LAMMPS output options. diff --git a/doc/src/compute_gyration_chunk.rst b/doc/src/compute_gyration_chunk.rst index 4cdb6fa4d6..987cb7fa4c 100644 --- a/doc/src/compute_gyration_chunk.rst +++ b/doc/src/compute_gyration_chunk.rst @@ -52,11 +52,13 @@ boundaries. Rg is a measure of the size of a chunk, and is computed by this formula -.. image:: Eqs/compute_gyration.jpg - :align: center +.. math:: -where M is the total mass of the chunk, Rcm is the center-of-mass -position of the chunk, and the sum is over all atoms in the + {R_g}^2 = \frac{1}{M} \sum_i m_i (r_i - r_{cm})^2 + + +where :math:`M` is the total mass of the chunk, :math:`r_{cm}` is +the center-of-mass position of the chunk, and the sum is over all atoms in the chunk. Note that only atoms in the specified group contribute to the @@ -70,14 +72,16 @@ non-zero chunk IDs. If the *tensor* keyword is specified, then the scalar Rg value is not calculated, but an Rg tensor is instead calculated for each chunk. The formula for the components of the tensor is the same as the above -formula, except that (Ri - Rcm)\^2 is replaced by (Rix - Rcmx) \* (Riy - -Rcmy) for the xy component, etc. The 6 components of the tensor are +formula, except that :math:`(r_i - r_{cm})^2` is replaced by +:math:`(r_{i,x} - r_{cm,x}) \cdot (r_{i,y} - r_{cm,y})` for the xy +component, and so on. The 6 components of the tensor are ordered xx, yy, zz, xy, xz, yz. .. note:: - The coordinates of an atom contribute to Rg in "unwrapped" form, - by using the image flags associated with each atom. See the :doc:`dump custom ` command for a discussion of "unwrapped" coordinates. + The coordinates of an atom contribute to :math:`R_g` in "unwrapped" form, + by using the image flags associated with each atom. See the :doc:`dump custom ` + command for a discussion of "unwrapped" coordinates. See the Atoms section of the :doc:`read_data ` command for a discussion of image flags and how they are set for each atom. You can reset the image flags (e.g. to 0) before invoking this compute by diff --git a/doc/src/compute_gyration_shape.rst b/doc/src/compute_gyration_shape.rst index 590aca59a2..96c0346926 100644 --- a/doc/src/compute_gyration_shape.rst +++ b/doc/src/compute_gyration_shape.rst @@ -33,10 +33,14 @@ due to atoms passing through periodic boundaries. The three computed shape parameters are the asphericity, b, the acylindricity, c, and the relative shape anisotropy, k: -.. image:: Eqs/compute_shape_parameters.jpg - :align: center +.. math:: -where lx <= ly <= lz are the three eigenvalues of the gyration tensor. A general description + c = & l_z - 0.5(l_y+l_x) \\ + b = & l_y - l_x \\ + k = & \frac{3}{2} \frac{l_x^2+l_y^2+l_z^2}{(l_x+l_y+l_z)^2} - \frac{1}{2} + + +where :math:`l_x` <= :math:`l_y` <= :math:`l_z` are the three eigenvalues of the gyration tensor. A general description of these parameters is provided in :ref:`(Mattice) ` while an application to polymer systems can be found in :ref:`(Theodorou) `. The asphericity is always non-negative and zero only when the three principal diff --git a/doc/src/compute_gyration_shape_chunk.rst b/doc/src/compute_gyration_shape_chunk.rst index 309b9d7b6d..72fec2ddc7 100644 --- a/doc/src/compute_gyration_shape_chunk.rst +++ b/doc/src/compute_gyration_shape_chunk.rst @@ -33,10 +33,14 @@ all effects due to atoms passing through periodic boundaries. The three computed shape parameters are the asphericity, b, the acylindricity, c, and the relative shape anisotropy, k: -.. image:: Eqs/compute_shape_parameters.jpg - :align: center +.. math:: -where lx <= ly <= lz are the three eigenvalues of the gyration tensor. A general description + c = & l_z - 0.5(l_y+l_x) \\ + b = & l_y - l_x \\ + k = & \frac{3}{2} \frac{l_x^2+l_y^2+l_z^2}{(l_x+l_y+l_z)^2} - \frac{1}{2} + + +where :math:`l_x` <= :math:`l_y` <= :math`l_z` are the three eigenvalues of the gyration tensor. A general description of these parameters is provided in :ref:`(Mattice) ` while an application to polymer systems can be found in :ref:`(Theodorou) `. The asphericity is always non-negative and zero only when the three principal moments are equal. This zero condition is met when the distribution diff --git a/doc/src/compute_hexorder_atom.rst b/doc/src/compute_hexorder_atom.rst index 66cbcf2409..45560a2aff 100644 --- a/doc/src/compute_hexorder_atom.rst +++ b/doc/src/compute_hexorder_atom.rst @@ -36,19 +36,22 @@ Examples Description """"""""""" -Define a computation that calculates *qn* the bond-orientational +Define a computation that calculates :math:`q_n` the bond-orientational order parameter for each atom in a group. The hexatic (\ *n* = 6) order parameter was introduced by :ref:`Nelson and Halperin ` as a way to detect -hexagonal symmetry in two-dimensional systems. For each atom, *qn* +hexagonal symmetry in two-dimensional systems. For each atom, :math:`q_n` is a complex number (stored as two real numbers) defined as follows: -.. image:: Eqs/hexorder.jpg - :align: center +.. math:: + + q_n = \frac{1}{nnn}\sum_{j = 1}^{nnn} e^{n i \theta({\bf r}_{ij})} + where the sum is over the *nnn* nearest neighbors -of the central atom. The angle theta -is formed by the bond vector rij and the *x* axis. theta is calculated -only using the *x* and *y* components, whereas the distance from the +of the central atom. The angle :math:`\theta` +is formed by the bond vector :math:`r_{ij}` and the *x* axis. +:math:`\theta` is calculated only using the *x* and *y* components, +whereas the distance from the central atom is calculated using all three *x*\ , *y*\ , and *z* components of the bond vector. Neighbor atoms not in the group @@ -60,22 +63,22 @@ the maximum allowable value, is the cutoff specified by the pair style. The optional keyword *nnn* defines the number of nearest -neighbors used to calculate *qn*\ . The default value is 6. +neighbors used to calculate :math:`q_n`. The default value is 6. If the value is NULL, then all neighbors up to the distance cutoff are used. The optional keyword *degree* sets the degree *n* of the order parameter. The default value is 6. For a perfect hexagonal lattice with *nnn* = 6, -*q*\ 6 = exp(6 i phi) for all atoms, where the constant 0 < phi < pi/3 +:math:`q_6 = e^{6 i \phi}` for all atoms, where the constant :math:`0 < \phi < \frac{\pi}{3}` depends only on the orientation of the lattice relative to the *x* axis. In an isotropic liquid, local neighborhoods may still exhibit weak hexagonal symmetry, but because the orientational correlation -decays quickly with distance, the value of phi will be different for -different atoms, and so when *q*\ 6 is averaged over all the atoms -in the system, \|<\ *q*\ 6>\| << 1. +decays quickly with distance, the value of :math:`\phi` will be different for +different atoms, and so when :math:`q_6` is averaged over all the atoms +in the system, :math:`| \left< q_6 \right> | << 1`. -The value of *qn* is set to zero for atoms not in the +The value of :math:`q_n` is set to zero for atoms not in the specified compute group, as well as for atoms that have less than *nnn* neighbors within the distance cutoff. @@ -102,8 +105,8 @@ too frequently. **Output info:** This compute calculates a per-atom array with 2 columns, giving the -real and imaginary parts *qn*\ , a complex number restricted to the -unit disk of the complex plane i.e. Re(\ *qn*\ )\^2 + Im(\ *qn*\ )\^2 <= 1 . +real and imaginary parts :math:`q_n`, a complex number restricted to the +unit disk of the complex plane i.e. :math:`Re(q_n)^2 + Im(q_n)^2 <= 1`. These values can be accessed by any command that uses per-atom values from a compute as input. See the :doc:`Howto output ` doc diff --git a/doc/src/compute_msd_nongauss.rst b/doc/src/compute_msd_nongauss.rst index 180b922097..8168d25ca6 100644 --- a/doc/src/compute_msd_nongauss.rst +++ b/doc/src/compute_msd_nongauss.rst @@ -46,8 +46,10 @@ dz\*dz)\*(dx\*dx + dy\*dy + dz\*dz), summed and averaged over atoms in the group. The 3rd component is the nonGaussian diffusion parameter NGP = 3\*drfourth/(5\*drsquared\*drsquared), i.e. -.. image:: Eqs/compute_msd_nongauss.jpg - :align: center +.. math:: + + NGP(t) = 3<(r(t)-r(0))^4>/(5<(r(t)-r(0))^2>^2) - 1 + The NGP is a commonly used quantity in studies of dynamical heterogeneity. Its minimum theoretical value (-0.4) occurs when all diff --git a/doc/src/compute_orientorder_atom.rst b/doc/src/compute_orientorder_atom.rst index 401f6b46a2..b864db82a7 100644 --- a/doc/src/compute_orientorder_atom.rst +++ b/doc/src/compute_orientorder_atom.rst @@ -42,23 +42,25 @@ Description """"""""""" Define a computation that calculates a set of bond-orientational -order parameters *Ql* for each atom in a group. These order parameters +order parameters :math:`Q_l` for each atom in a group. These order parameters were introduced by :ref:`Steinhardt et al. ` as a way to characterize the local orientational order in atomic structures. -For each atom, *Ql* is a real number defined as follows: +For each atom, :math:`Q_l` is a real number defined as follows: -.. image:: Eqs/orientorder.jpg - :align: center +.. math:: + + \bar{Y}_{lm} = & \frac{1}{nnn}\sum_{j = 1}^{nnn} Y_{lm}( \theta( {\bf r}_{ij} ), \phi( {\bf r}_{ij} ) ) \\ + Q_l = & \sqrt{\frac{4 \pi}{2 l + 1} \sum_{m = -l}^{m = l} \bar{Y}_{lm} \bar{Y}^*_{lm}} The first equation defines the spherical harmonic order parameters. These are complex number components of the 3D analog of the 2D order -parameter *qn*\ , which is implemented as LAMMPS compute +parameter :math:`q_n`, which is implemented as LAMMPS compute :doc:`hexorder/atom `. The summation is over the *nnn* nearest neighbors of the central atom. The angles theta and phi are the standard spherical polar angles -defining the direction of the bond vector *rij*\ . -The second equation defines *Ql*\ , which is a +defining the direction of the bond vector :math:`r_{ij}`. +The second equation defines :math:`Q_l`, which is a rotationally invariant non-negative amplitude obtained by summing over all the components of degree *l*\ . @@ -68,42 +70,45 @@ the maximum allowable value, is the cutoff specified by the pair style. The optional keyword *nnn* defines the number of nearest -neighbors used to calculate *Ql*\ . The default value is 12. +neighbors used to calculate :math:`Q_l`. The default value is 12. If the value is NULL, then all neighbors up to the specified distance cutoff are used. The optional keyword *degrees* defines the list of order parameters to be computed. The first argument *nlvalues* is the number of order parameters. This is followed by that number of non-negative integers giving the -degree of each order parameter. Because *Q*\ 2 and all odd-degree order +degree of each order parameter. Because :math:`Q_2` and all odd-degree order parameters are zero for atoms in cubic crystals (see -:ref:`Steinhardt `), the default order parameters are *Q*\ 4, -*Q*\ 6, *Q*\ 8, *Q*\ 10, and *Q*\ 12. For the FCC crystal with *nnn* =12, *Q*\ 4 -= sqrt(7/3)/8 = 0.19094.... The numerical values of all order -parameters up to *Q*\ 12 for a range of commonly encountered -high-symmetry structures are given in Table I of :ref:`Mickel et al. `, and these can be reproduced with this compute +:ref:`Steinhardt `), the default order parameters are :math:`Q_4`, +:math:`Q_6`, :math:`Q_8`, :math:`Q_{10}`, and :math:`Q_{12}`. For the FCC +crystal with *nnn* =12, :math:`Q_4 = \sqrt{\frac{7}{192}} = 0.19094...`. +The numerical values of all order +parameters up to :math:`Q_12` for a range of commonly encountered +high-symmetry structures are given in Table I of :ref:`Mickel et al. `, +and these can be reproduced with this compute. -The optional keyword *wl* will output the third-order invariants *Wl* +The optional keyword *wl* will output the third-order invariants :math:`W_l` (see Eq. 1.4 in :ref:`Steinhardt `) for the same degrees as -for the *Ql* parameters. For the FCC crystal with *nnn* =12, -*W*\ 4 = -sqrt(14/143).(49/4096)/Pi\^1.5 = -0.0006722136... +for the :math:`Q_l` parameters. For the FCC crystal with *nnn* =12, +:math:`W_4` = -sqrt(14/143).(49/4096)/Pi\^1.5 = -0.0006722136... The optional keyword *wl/hat* will output the normalized third-order -invariants *Wlhat* (see Eq. 2.2 in :ref:`Steinhardt `) -for the same degrees as for the *Ql* parameters. For the FCC crystal -with *nnn* =12, *W*\ 4hat = -7/3\*sqrt(2/429) = -0.159317...The numerical -values of *Wlhat* for a range of commonly encountered high-symmetry +invariants :math:`\hat{W}_l` (see Eq. 2.2 in :ref:`Steinhardt `) +for the same degrees as for the :math:`Q_l` parameters. For the FCC crystal +with *nnn* =12, :math:`\hat{W}_4 = -\frac{7}{3} \sqrt{\frac{2}{429}} = -0.159317...` +The numerical +values of :math:`\hat{W}_l` for a range of commonly encountered high-symmetry structures are given in Table I of :ref:`Steinhardt `, and these can be reproduced with this keyword. The optional keyword *components* will output the components of the -normalized complex vector *Ybar\_lm* of degree *ldegree*\ , which must be +normalized complex vector :math:`\bar{Y}_{lm}` of degree *ldegree*\ , which must be explicitly included in the keyword *degrees*\ . This option can be used in conjunction with :doc:`compute coord\_atom ` to calculate the ten Wolde's criterion to identify crystal-like particles, as discussed in :ref:`ten Wolde `. -The value of *Ql* is set to zero for atoms not in the +The value of :math:`Q_l` is set to zero for atoms not in the specified compute group, as well as for atoms that have less than *nnn* neighbors within the distance cutoff, unless *nnn* is NULL. @@ -130,19 +135,19 @@ too frequently. **Output info:** This compute calculates a per-atom array with *nlvalues* columns, -giving the *Ql* values for each atom, which are real numbers on the -range 0 <= *Ql* <= 1. +giving the :math:`Q_l` values for each atom, which are real numbers on the +range :math:`0 <= Q_l <= 1`. -If the keyword *wl* is set to yes, then the *Wl* values for each +If the keyword *wl* is set to yes, then the :math:`W_l` values for each atom will be added to the output array, which are real numbers. -If the keyword *wl/hat* is set to yes, then the *Wl\_hat* +If the keyword *wl/hat* is set to yes, then the :math:`\hat{W}_l` values for each atom will be added to the output array, which are real numbers. If the keyword *components* is set, then the real and imaginary parts -of each component of (normalized) *Ybar\_lm* will be added to the -output array in the following order: Re(*Ybar\_-m*) Im(*Ybar\_-m*) -Re(*Ybar\_-m+1*) Im(*Ybar\_-m+1*) ... Re(*Ybar\_m*) Im(*Ybar\_m*). This +of each component of (normalized) :math:`\bar{Y}_{lm}` will be added to the +output array in the following order: :math:`Re(\bar{Y}_{-m}) Im(\bar{Y}_{-m}) +Re(\bar{Y}_{-m+1}) Im(\bar{Y}_{-m+1}) ... Re(\bar{Y}_m) Im(\bar{Y}_m)`. This way, the per-atom array will have a total of *nlvalues*\ +2\*(2\ *l*\ +1) columns. @@ -163,7 +168,7 @@ Default """"""" The option defaults are *cutoff* = pair style cutoff, *nnn* = 12, -*degrees* = 5 4 6 8 10 12 i.e. *Q*\ 4, *Q*\ 6, *Q*\ 8, *Q*\ 10, and *Q*\ 12, +*degrees* = 5 4 6 8 10 12 i.e. :math:`Q_4`, :math:`Q_6`, :math:`Q_8`, :math:`Q_{10}`, and :math:`Q_{12}`, *wl* = no, *wl/hat* = no, and *components* off @@ -172,21 +177,16 @@ The option defaults are *cutoff* = pair style cutoff, *nnn* = 12, .. _Steinhardt: - - **(Steinhardt)** P. Steinhardt, D. Nelson, and M. Ronchetti, Phys. Rev. B 28, 784 (1983). .. _Mickel: - - **(Mickel)** W. Mickel, S. C. Kapfer, G. E. Schroeder-Turkand, K. Mecke, J. Chem. Phys. 138, 044501 (2013). .. _tenWolde2: - **(tenWolde)** P. R. ten Wolde, M. J. Ruiz-Montero, D. Frenkel, J. Chem. Phys. 104, 9932 (1996). diff --git a/doc/src/compute_pressure.rst b/doc/src/compute_pressure.rst index c6530ed11e..ed3b90c8e1 100644 --- a/doc/src/compute_pressure.rst +++ b/doc/src/compute_pressure.rst @@ -37,8 +37,10 @@ of atoms via the :doc:`compute reduce ` command. The pressure is computed by the formula -.. image:: Eqs/pressure.jpg - :align: center +.. math:: + + P = \frac{N k_B T}{V} + \frac{\sum_{i}^{N'} r_i \bullet f_i}{dV} + where N is the number of atoms in the system (see discussion of DOF below), Kb is the Boltzmann constant, T is the temperature, d is the @@ -62,8 +64,11 @@ ordered xx, yy, zz, xy, xz, yz. The equation for the I,J components the first term uses components of the kinetic energy tensor and the second term uses components of the virial tensor: -.. image:: Eqs/pressure_tensor.jpg - :align: center +.. math:: + + P_{IJ} = \frac{\sum_{k}^{N} m_k v_{k_I} v_{k_J}}{V} + + \frac{\sum_{k}^{N'} r_{k_I} f_{k_J}}{V} + If no extra keywords are listed, the entire equations above are calculated. This includes a kinetic energy (temperature) term and the diff --git a/doc/src/compute_ptm_atom.rst b/doc/src/compute_ptm_atom.rst index e7667adae9..1b5066e473 100644 --- a/doc/src/compute_ptm_atom.rst +++ b/doc/src/compute_ptm_atom.rst @@ -62,8 +62,11 @@ to identify potential structure matches. Next, the deviation is computed betwee local structure (in the simulation) and a template of the ideal lattice structure. The deviation is calculated as: -.. image:: Eqs/ptm_rmsd.jpg - :align: center +.. math:: + + \text{RMSD}(\mathbf{u}, \mathbf{v}) = \min_{s, \mathbf{Q}} \sqrt{\frac{1}{N} \sum\limits_{i=1}^{N} + {\left|\left| s[\vec{u_i} - \overline{\mathbf{u}}] - \mathbf{Q} \vec{v_i} \right|\right|}^2} + Here, u and v contain the coordinates of the local and ideal structures respectively, s is a scale factor, and Q is a rotation. The best match is identified by the diff --git a/doc/src/compute_saed.rst b/doc/src/compute_saed.rst index 9b4067043f..2a9c05f218 100644 --- a/doc/src/compute_saed.rst +++ b/doc/src/compute_saed.rst @@ -59,14 +59,14 @@ radiation of wavelength lambda. The electron diffraction intensity I at each reciprocal lattice point is computed from the structure factor F using the equations: -.. image:: Eqs/compute_saed1.jpg - :align: center +.. math:: -.. image:: Eqs/compute_saed2.jpg - :align: center + I = & \frac{F^{*}F}{N} \\ + F(\mathbf{k}) = & \sum_{j=1}^{N}f_j(\theta)exp(2\pi i \mathbf{k} \cdot \mathbf{r}_j) -Here, K is the location of the reciprocal lattice node, rj is the -position of each atom, fj are atomic scattering factors. + +Here, K is the location of the reciprocal lattice node, :math:`r_j` is the +position of each atom, :math:`f_j` are atomic scattering factors. Diffraction intensities are calculated on a three-dimensional mesh of reciprocal lattice nodes. The mesh spacing is defined either (a) by @@ -119,33 +119,117 @@ for each atom type (type1 type2 ... typeN) and angle of diffraction. The analytic approximation is computed using the formula :ref:`(Brown) `: -.. image:: Eqs/compute_saed3.jpg - :align: center +.. math:: + + f_j\left ( \frac{sin(\theta)}{\lambda} \right )=\sum_{i}^{5} + a_i exp\left ( -b_i \frac{sin^{2}(\theta)}{\lambda^{2}} \right ) + Coefficients parameterized by :ref:`(Fox) ` are assigned for each atom type designating the chemical symbol and charge of each atom type. Valid chemical symbols for compute saed are: -H: He: Li: Be: B: -C: N: O: F: Ne: -Na: Mg: Al: Si: P: -S: Cl: Ar: K: Ca: -Sc: Ti: V: Cr: Mn: -Fe: Co: Ni: Cu: Zn: -Ga: Ge: As: Se: Br: -Kr: Rb: Sr: Y: Zr: -Nb: Mo: Tc: Ru: Rh: -Pd: Ag: Cd: In: Sn: -Sb: Te: I: Xe: Cs: -Ba: La: Ce: Pr: Nd: -Pm: Sm: Eu: Gd: Tb: -Dy: Ho: Er: Tm: Yb: -Lu: Hf: Ta: W: Re: -Os: Ir: Pt: Au: Hg: -Tl: Pb: Bi: Po: At: -Rn: Fr: Ra: Ac: Th: -Pa: U: Np: Pu: Am: -Cm: Bk: Cf:tb(c=5,s=:) +.. table_from_list:: + :columns: 20 + + * H + * He + * Li + * Be + * B + * C + * N + * O + * F + * Ne + * Na + * Mg + * Al + * Si + * P + * S + * Cl + * Ar + * K + * Ca + * Sc + * Ti + * V + * Cr + * Mn + * Fe + * Co + * Ni + * Cu + * Zn + * Ga + * Ge + * As + * Se + * Br + * Kr + * Rb + * Sr + * Y + * Zr + * Nb + * Mo + * Tc + * Ru + * Rh + * Pd + * Ag + * Cd + * In + * Sn + * Sb + * Te + * I + * Xe + * Cs + * Ba + * La + * Ce + * Pr + * Nd + * Pm + * Sm + * Eu + * Gd + * Tb + * Dy + * Ho + * Er + * Tm + * Yb + * Lu + * Hf + * Ta + * W + * Re + * Os + * Ir + * Pt + * Au + * Hg + * Tl + * Pb + * Bi + * Po + * At + * Rn + * Fr + * Ra + * Ac + * Th + * Pa + * U + * Np + * Pu + * Am + * Cm + * Bk + * Cf If the *echo* keyword is specified, compute saed will provide extra reporting information to the screen. diff --git a/doc/src/compute_sna_atom.rst b/doc/src/compute_sna_atom.rst index be3deaf36a..6da3ab45ea 100644 --- a/doc/src/compute_sna_atom.rst +++ b/doc/src/compute_sna_atom.rst @@ -82,8 +82,10 @@ onto the 3-sphere, the surface of the unit ball in a four-dimensional space. The radial distance *r* within *R\_ii'* is mapped on to a third polar angle *theta0* defined by, -.. image:: Eqs/compute_sna_atom1.jpg - :align: center +.. math:: + + \theta_0 = {\tt rfac0} \frac{r-r_{min0}}{R_{ii'}-r_{min0}} \pi + In this way, all possible neighbor positions are mapped on to a subset of the 3-sphere. Points south of the latitude *theta0max=rfac0\*Pi* @@ -101,8 +103,10 @@ radial distance. Expanding this density function as a generalized Fourier series in the basis functions, we can write each Fourier coefficient as -.. image:: Eqs/compute_sna_atom2.jpg - :align: center +.. math:: + + u^j_{m,m'} = U^j_{m,m'}(0,0,0) + \sum_{r_{ii'} < R_{ii'}}{f_c(r_{ii'}) w_{i'} U^j_{m,m'}(\theta_0,\theta,\phi)} + The *w\_i'* neighbor weights are dimensionless numbers that are chosen to distinguish atoms of different types, while the central atom is @@ -110,8 +114,11 @@ arbitrarily assigned a unit weight. The function *fc(r)* ensures that the contribution of each neighbor atom goes smoothly to zero at *R\_ii'*: -.. image:: Eqs/compute_sna_atom4.jpg - :align: center +.. math:: + + f_c(r) = & \frac{1}{2}(\cos(\pi \frac{r-r_{min0}}{R_{ii'}-r_{min0}}) + 1), r \leq R_{ii'} \\ + = & 0, r > R_{ii'} + The expansion coefficients *u\^j\_m,m'* are complex-valued and they are not directly useful as descriptors, because they are not invariant @@ -119,8 +126,15 @@ under rotation of the polar coordinate frame. However, the following scalar triple products of expansion coefficients can be shown to be real-valued and invariant under rotation :ref:`(Bartok) `. -.. image:: Eqs/compute_sna_atom3.jpg - :align: center +.. math:: + + B_{j_1,j_2,j} = + \sum_{m_1,m'_1=-j_1}^{j_1}\sum_{m_2,m'_2=-j_2}^{j_2}\sum_{m,m'=-j}^{j} (u^j_{m,m'})^* + H {\scriptscriptstyle \begin{array}{l} {j} {m} {m'} \\ + {j_1} {m_1} {m'_1} \\ + {j_2} {m_2} {m'_2} \end{array}} + u^{j_1}_{m_1,m'_1} u^{j_2}_{m_2,m'_2} + The constants *H\^jmm'\_j1m1m1'\_j2m2m2'* are coupling coefficients, analogous to Clebsch-Gordan coefficients for rotations on the @@ -138,8 +152,10 @@ atom. Compute *snad/atom* calculates the derivative of the bispectrum components summed separately for each atom type: -.. image:: Eqs/compute_sna_atom5.jpg - :align: center +.. math:: + + -\sum_{i' \in I} \frac{\partial {B^{i'}_{j_1,j_2,j} }}{\partial {\bf r}_i} + The sum is over all atoms *i'* of atom type *I*\ . For each atom *i*\ , this compute evaluates the above expression for each direction, each @@ -149,8 +165,10 @@ for a detailed explanation. Compute *snav/atom* calculates the virial contribution due to the derivatives: -.. image:: Eqs/compute_sna_atom6.jpg - :align: center +.. math:: + + -{\bf r}_i \otimes \sum_{i' \in I} \frac{\partial {B^{i'}_{j_1,j_2,j}}}{\partial {\bf r}_i} + Again, the sum is over all atoms *i'* of atom type *I*\ . For each atom *i*\ , this compute evaluates the above expression for each of the six @@ -233,7 +251,7 @@ ordered in which they are listed. file. The rerun script can use a :doc:`special_bonds ` command that includes all pairs in the neighbor list. -;line +---------- **Output info:** diff --git a/doc/src/compute_xrd.rst b/doc/src/compute_xrd.rst index b7ed547572..d95fad79e4 100644 --- a/doc/src/compute_xrd.rst +++ b/doc/src/compute_xrd.rst @@ -57,21 +57,16 @@ of wavelength lambda. The x-ray diffraction intensity, I, at each reciprocal lattice point, k, is computed from the structure factor, F, using the equations: -.. image:: Eqs/compute_xrd1.jpg - :align: center +.. math:: -.. image:: Eqs/compute_xrd2.jpg - :align: center + I = & Lp(\theta)\frac{F^{*}F}{N} \\ + F(\mathbf{k}) = & \sum_{j=1}^{N}f_j(\theta)exp(2\pi i \mathbf{k}\cdot \mathbf{r}_j) \\ + Lp(\theta) = & \frac{1+cos^{2}(2\theta)}{cos(\theta)sin^{2}(\theta)} \\ + \frac{sin(\theta)}{\lambda} = & \frac{\left | \mathbf{k} \right |}{2} -.. image:: Eqs/compute_xrd3.jpg - :align: center - -.. image:: Eqs/compute_xrd4.jpg - :align: center - -Here, K is the location of the reciprocal lattice node, rj is the -position of each atom, fj are atomic scattering factors, LP is the -Lorentz-polarization factor, and theta is the scattering angle of +Here, K is the location of the reciprocal lattice node, :math:`r_j` is the +position of each atom, :math:`f_j` are atomic scattering factors, *Lp* is the +Lorentz-polarization factor, and :math:`\theta` is the scattering angle of diffraction. The Lorentz-polarization factor can be turned off using the optional *LP* keyword. @@ -114,8 +109,10 @@ for each atom type (type1 type2 ... typeN) and angle of diffraction. The analytic approximation is computed using the formula :ref:`(Colliex) `: -.. image:: Eqs/compute_xrd5.jpg - :align: center +.. math:: + + f_j\left ( \frac{sin(\theta)}{\lambda} \right )=\sum_{i}^{4} + a_i exp\left ( -b_i \frac{sin^{2}(\theta)}{\lambda^{2}} \right )+c Coefficients parameterized by :ref:`(Peng) ` are assigned for each atom type designating the chemical symbol and charge of each atom diff --git a/doc/src/fix_ave_correlate_long.rst b/doc/src/fix_ave_correlate_long.rst index 6c9d7c076b..dd84daaa75 100644 --- a/doc/src/fix_ave_correlate_long.rst +++ b/doc/src/fix_ave_correlate_long.rst @@ -70,11 +70,12 @@ Examples Description """"""""""" -This fix is similar in spirit and syntax to the :doc:`fix ave/correlate `. However, this fix allows the -efficient calculation of time correlation functions on the fly over -extremely long time windows without too much CPU overhead, using a -multiple-tau method :ref:`(Ramirez) ` that decreases the resolution -of the stored correlation function with time. +This fix is similar in spirit and syntax to the :doc:`fix ave/correlate `. +However, this fix allows the efficient calculation of time correlation +functions on-the-fly over extremely long time windows with little +additional CPU overhead, using a multiple-tau method +:ref:`(Ramirez) ` that decreases the resolution of the stored +correlation function with time. It is not a full drop-in replacement. The group specified with this command is ignored. However, note that specified values may represent calculations performed by computes and @@ -115,11 +116,13 @@ For the meaning of the additional optional keywords, see the :doc:`fix ave/corre **Restart, fix\_modify, output, run start/stop, minimize info:** -Since this fix in intended for the calculation of time correlation -functions over very long MD simulations, the information about this -fix is written automatically to binary restart files, so that the time -correlation calculation can continue in subsequent simulations. None -of the fix\_modify options are relevant to this fix. +Contrary to doc:`fix ave/correlate `_ this fix +does **not** provide access to its internal data to various output +options. Since this fix in intended for the calculation of time +correlation functions over very long MD simulations, the information +about this fix is written automatically to binary restart files, so +that the time correlation calculation can continue in subsequent +simulations. None of the fix\_modify options are relevant to this fix. No parameter of this fix can be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization. diff --git a/doc/src/fix_bond_react.rst b/doc/src/fix_bond_react.rst index ec431168b8..14d04009e7 100644 --- a/doc/src/fix_bond_react.rst +++ b/doc/src/fix_bond_react.rst @@ -374,8 +374,10 @@ reacting molecules. The constraint of type 'arrhenius' imposes an additional reaction probability according to the temperature-dependent Arrhenius equation: -.. image:: Eqs/fix_bond_react.jpg - :align: center +.. math:: + + k = AT^{n}e^{\frac{-E_{a}}{k_{B}T}} + The Arrhenius constraint has the following syntax: @@ -385,8 +387,8 @@ The Arrhenius constraint has the following syntax: arrhenius *A* *n* *E_a* *seed* where 'arrhenius' is the required keyword, *A* is the pre-exponential -factor, *n* is the exponent of the temperature dependence, *E\_a* is -the activation energy (:doc:`units ` of energy), and *seed* is a +factor, *n* is the exponent of the temperature dependence, :math:`E_a` +is the activation energy (:doc:`units ` of energy), and *seed* is a random number seed. The temperature is defined as the instantaneous temperature averaged over all atoms in the reaction site, and is calculated in the same manner as for example diff --git a/doc/src/fix_box_relax.rst b/doc/src/fix_box_relax.rst index d915d1a2a0..0c4cad7ad0 100644 --- a/doc/src/fix_box_relax.rst +++ b/doc/src/fix_box_relax.rst @@ -228,23 +228,28 @@ With this fix, the potential energy used by the minimizer is augmented by an additional energy provided by the fix. The overall objective function then is: -.. image:: Eqs/fix_box_relax1.jpg - :align: center +.. math:: -where *U* is the system potential energy, *P*\ \_t is the desired -hydrostatic pressure, *V* and *V*\ \_0 are the system and reference -volumes, respectively. *E*\ \_\ *strain* is the strain energy expression + E = U + P_t \left(V-V_0 \right) + E_{strain} + + +where *U* is the system potential energy, :math:`P_t` is the desired +hydrostatic pressure, :math:`V` and :math:`V_0` are the system and reference +volumes, respectively. :math:`E_{strain}` is the strain energy expression proposed by Parrinello and Rahman :ref:`(Parrinello1981) `. Taking derivatives of *E* w.r.t. the box dimensions, and setting these to zero, we find that at the minimum of the objective function, the global system stress tensor **P** will satisfy the relation: -.. image:: Eqs/fix_box_relax2.jpg - :align: center +.. math:: -where **I** is the identity matrix, **h**\ \_0 is the box dimension tensor of -the reference cell, and **h**\ \_0\ *d* is the diagonal part of -**h**\ \_0. **S**\ \_\ *t* is a symmetric stress tensor that is chosen by LAMMPS + \mathbf P = P_t \mathbf I + {\mathbf S_t} \left( \mathbf h_0^{-1} \right)^t \mathbf h_{0d} + + +where **I** is the identity matrix, :math:`\mathbf{h_0}` is the box +dimension tensor of the reference cell, and ::math:`\mathbf{h_{0d}}` +is the diagonal part of :math:`\mathbf{h_0}`. :math:`\mathbf{S_t}` +is a symmetric stress tensor that is chosen by LAMMPS so that the upper-triangular components of **P** equal the stress tensor specified by the user. diff --git a/doc/src/fix_controller.rst b/doc/src/fix_controller.rst index 7561df6856..839c01ef5f 100644 --- a/doc/src/fix_controller.rst +++ b/doc/src/fix_controller.rst @@ -97,43 +97,49 @@ The PID controller is invoked once each *Nevery* timesteps. The PID controller is implemented as a discretized version of the following dynamic equation: -.. image:: Eqs/fix_controller1.jpg - :align: center +.. math:: + \frac{dc}{dt} = \hat{E} -\alpha (K_p e + K_i \int_0^t e \, dt + K_d \frac{de}{dt} ) + where *c* is the continuous time analog of the control variable, *e* =\ *pvar*\ -\ *setpoint* is the error in the process variable, and -*alpha*\ , *Kp*\ , *Ki*\ , and *Kd* are constants set by the corresponding +:math:`\alpha`, :math:`K_p`, :math:`K_i` , and :math:`K_d` are constants +set by the corresponding keywords described above. The discretized version of this equation is: -.. image:: Eqs/fix_controller2.jpg - :align: center +.. math:: -where *tau* = *Nevery* \* *timestep* is the time interval between updates, + c_n = \hat{E} c_{n-1} -\alpha \left( K_p \tau e_n + K_i \tau^2 \sum_{i=1}^n e_i + K_d (e_n - e_{n-1}) \right) + + +where :math:`\tau = \mathtt{Nevery} \cdot \mathtt{timestep}` is the time +interval between updates, and the subscripted variables indicate the values of *c* and *e* at successive updates. From the first equation, it is clear that if the three gain values -*Kp*\ , *Ki*\ , *Kd* are dimensionless constants, then *alpha* must have +:math:`K_p`, :math:`K_i`, :math:`K_d` are dimensionless constants, +then :math:`\alpha` must have units of [unit *cvar*\ ]/[unit *pvar*\ ]/[unit time] e.g. [ eV/K/ps ]. The advantage of this unit scheme is that the value of the constants should be invariant under a change of either the MD timestep size or the value of *Nevery*\ . Similarly, if the LAMMPS :doc:`unit style ` is changed, it should only be necessary to change -the value of *alpha* to reflect this, while leaving *Kp*\ , *Ki*\ , and -*Kd* unaltered. +the value of :math:`\alpha` to reflect this, while leaving :math:`K_p`, +:math:`K_i`, and :math:`K_d` unaltered. When choosing the values of the four constants, it is best to first -pick a value and sign for *alpha* that is consistent with the -magnitudes and signs of *pvar* and *cvar*\ . The magnitude of *Kp* -should then be tested over a large positive range keeping *Ki* = *Kd* =0. -A good value for *Kp* will produce a fast response in *pvar*\ , without -overshooting the *setpoint*\ . For many applications, proportional -feedback is sufficient, and so *Ki* = *Kd* =0 can be used. In cases where -there is a substantial lag time in the response of *pvar* to a change -in *cvar*\ , this can be counteracted by increasing *Kd*\ . In situations +pick a value and sign for :math:`\alpha` that is consistent with the +magnitudes and signs of *pvar* and *cvar*\ . The magnitude of :math:`K_p` +should then be tested over a large positive range keeping :math:`K_i = K_d =0`. +A good value for :math:`K_p` will produce a fast response in *pvar*\ , +without overshooting the *setpoint*\ . For many applications, proportional +feedback is sufficient, and so :math:`K_i` = K_d =0` can be used. In cases +where there is a substantial lag time in the response of *pvar* to a change +in *cvar*\ , this can be counteracted by increasing :math:`K_d`. In situations where *pvar* plateaus without reaching *setpoint*\ , this can be -counteracted by increasing *Ki*\ . In the language of Charles Dickens, -*Kp* represents the error of the present, *Ki* the error of the past, -and *Kd* the error yet to come. +counteracted by increasing :math:`K_i`. In the language of Charles Dickens, +:math:`K_p` represents the error of the present, :math:`K_i` the error of +the past, and :math:`K_d` the error yet to come. Because this fix updates *cvar*\ , but does not initialize its value, the initial value is that assigned by the user in the input script via @@ -141,7 +147,7 @@ the :doc:`internal-style variable ` command. This value is used (by the other LAMMPS command that used the variable) until this fix performs its first update of *cvar* after *Nevery* timesteps. On the first update, the value of the derivative term is set to zero, -because the value of *e\_n-1* is not yet defined. +because the value of :math:`e_n-1` is not yet defined. ---------- diff --git a/doc/src/fix_ehex.rst b/doc/src/fix_ehex.rst index 34445fd284..9cc02261c7 100644 --- a/doc/src/fix_ehex.rst +++ b/doc/src/fix_ehex.rst @@ -78,13 +78,20 @@ additional thermostatting force to the equations of motion, such that the time evolution of coordinates and momenta of particle :math:`i` becomes :ref:`(Wirnsberger) ` -.. image:: Eqs/fix_ehex_eom.jpg - :align: center +.. math:: + + \dot{\mathbf r}_i &= \mathbf v_i, \\ + \dot{\mathbf v}_i &= \frac{\mathbf f_i}{m_i} + \frac{\mathbf g_i}{m_i}. The thermostatting force is given by -.. image:: Eqs/fix_ehex_f.jpg - :align: center +.. math:: + + \mathbf g_i = \begin{cases} + \frac{m_i}{2} \frac{ F_{\Gamma_{k(\mathbf r_i)}}}{ K_{\Gamma_{k(\mathbf r_i)}}} + \left(\mathbf v_i - \mathbf v_{\Gamma_{k(\mathbf r_i)}} \right) & \mbox{$k(\mathbf r_i)> 0$ (inside a reservoir),} \\ + 0 & \mbox{otherwise, } + \end{cases} where :math:`m_i` is the mass and :math:`k(\mathbf r_i)` maps the particle position to the respective reservoir. The quantity diff --git a/doc/src/fix_eos_cv.rst b/doc/src/fix_eos_cv.rst index b871429ffa..da1459970f 100644 --- a/doc/src/fix_eos_cv.rst +++ b/doc/src/fix_eos_cv.rst @@ -27,17 +27,19 @@ Description """"""""""" Fix *eos/cv* applies a mesoparticle equation of state to relate the -particle internal energy (u\_i) to the particle internal temperature -(dpdTheta\_i). The *eos/cv* mesoparticle equation of state requires +particle internal energy (:math:`u_i`) to the particle internal temperature +(:math:`\theta_i`). The *eos/cv* mesoparticle equation of state requires the constant-volume heat capacity, and is defined as follows: -.. image:: Eqs/fix_eos-cv.jpg - :align: center +.. math:: -where Cv is the constant-volume heat capacity, u\_cond is the internal -conductive energy, and u\_mech is the internal mechanical energy. Note -that alternative definitions of the mesoparticle equation of state are -possible. + u_{i} = u^{mech}_{i} + u^{cond}_{i} = C_{V} \theta_{i} + + +where :math:`C_V` is the constant-volume heat capacity, :math:`u^{cond}` +is the internal conductive energy, and :math:`u^{mech}` is the internal +mechanical energy. Note that alternative definitions of the mesoparticle +equation of state are possible. ---------- diff --git a/doc/src/fix_eos_table_rx.rst b/doc/src/fix_eos_table_rx.rst index a41ac404b7..681b656b53 100644 --- a/doc/src/fix_eos_table_rx.rst +++ b/doc/src/fix_eos_table_rx.rst @@ -40,30 +40,34 @@ Description Fix *eos/table/rx* applies a tabulated mesoparticle equation of state to relate the concentration-dependent particle internal -energy (u\_i) to the particle internal temperature (dpdTheta\_i). +energy (:math:`u_i`) to the particle internal temperature (:math:`\theta_i`). -The concentration-dependent particle internal energy (u\_i) is +The concentration-dependent particle internal energy (:math:`u_i`) is computed according to the following relation: -.. image:: Eqs/fix_eos_table_rx.jpg - :align: center +.. math:: -where *m* is the number of species, *c\_i,j* is the concentration of -species *j* in particle *i*\ , *u\_j* is the internal energy of species j, -*DeltaH\_f,j* is the heat of formation of species *j*\ , N is the number of -molecules represented by the coarse-grained particle, kb is the -Boltzmann constant, and T is the temperature of the system. Additionally, -it is possible to modify the concentration-dependent particle internal + U_{i} = \displaystyle\sum_{j=1}^{m} c_{i,j}(u_{j} + \Delta H_{f,j}) + \frac{3k_{b}T}{2} + Nk_{b}T \\ + + +where *m* is the number of species, :math:`c_{i,j}` is the +concentration of species *j* in particle *i*\ , :math:`u_j` is the +internal energy of species j, :math:`\Delta H_{f,j} is the heat of +formation of species *j*\ , N is the number of molecules represented +by the coarse-grained particle, :math:`k_b` is the Boltzmann constant, +and *T* is the temperature of the system. Additionally, it is +possible to modify the concentration-dependent particle internal energy relation by adding an energy correction, temperature-dependent -correction, and/or a molecule-dependent correction. An energy correction can -be specified as a constant (in energy units). A temperature correction can be -specified by multiplying a temperature correction coefficient by the -internal temperature. A molecular correction can be specified by -by multiplying a molecule correction coefficient by the average number of -product gas particles in the coarse-grain particle. +correction, and/or a molecule-dependent correction. An energy +correction can be specified as a constant (in energy units). A +temperature correction can be specified by multiplying a temperature +correction coefficient by the internal temperature. A molecular +correction can be specified by by multiplying a molecule correction +coefficient by the average number of product gas particles in the +coarse-grain particle. Fix *eos/table/rx* creates interpolation tables of length *N* from *m* -internal energy values of each species *u\_j* listed in a file as a +internal energy values of each species :math:`u_j` listed in a file as a function of internal temperature. During a simulation, these tables are used to interpolate internal energy or temperature values as needed. The interpolation is done with the *linear* style. For the *linear* style, @@ -72,20 +76,21 @@ which an internal energy is computed by linear interpolation. A secant solver is used to determine the internal temperature from the internal energy. The first filename specifies a file containing tabulated internal -temperature and *m* internal energy values for each species *u\_j*. +temperature and *m* internal energy values for each species :math:`u_j`. The keyword specifies a section of the file. The format of this file is described below. The second filename specifies a file containing heat of formation -*DeltaH\_f,j* for each species. +:math:`\Delta H_{f,j}` for each species. In cases where the coarse-grain particle represents a single molecular -species (i.e., no reactions occur and fix *rx* is not present in the input file), -fix *eos/table/rx* can be applied in a similar manner to fix *eos/table* -within a non-reactive DPD simulation. In this case, the heat of formation -filename is replaced with the heat of formation value for the single species. -Additionally, the energy correction and temperature correction coefficients may -also be specified as fix arguments. +species (i.e., no reactions occur and fix *rx* is not present in the +input file), fix *eos/table/rx* can be applied in a similar manner to +fix *eos/table* within a non-reactive DPD simulation. In this case, +the heat of formation filename is replaced with the heat of formation +value for the single species. Additionally, the energy correction and +temperature correction coefficients may also be specified as fix +arguments. ---------- diff --git a/doc/src/fix_gcmc.rst b/doc/src/fix_gcmc.rst index a0717dd6ae..dd06d074a4 100644 --- a/doc/src/fix_gcmc.rst +++ b/doc/src/fix_gcmc.rst @@ -248,8 +248,10 @@ two groups: the default group "all" and the fix group The chemical potential is a user-specified input parameter defined as: -.. image:: Eqs/fix_gcmc1.jpg - :align: center +.. math:: + + \mu = \mu^{id} + \mu^{ex} + The second term mu\_ex is the excess chemical potential due to energetic interactions and is formally zero for the fictitious gas @@ -260,31 +262,35 @@ quite different. The first term mu\_id is the ideal gas contribution to the chemical potential. mu\_id can be related to the density or pressure of the fictitious gas reservoir by: -.. image:: Eqs/fix_gcmc2.jpg - :align: center +.. math:: -where k is Boltzman's constant, -T is the user-specified temperature, rho is the number density, -P is the pressure, and phi is the fugacity coefficient. -The constant Lambda is required for dimensional consistency. -For all unit styles except *lj* it is defined as the thermal -de Broglie wavelength + \mu^{id} = & k T \ln{\rho \Lambda^3} \\ + = & k T \ln{\frac{\phi P \Lambda^3}{k T}} -.. image:: Eqs/fix_gcmc3.jpg - :align: center -where h is Planck's constant, and m is the mass of the exchanged atom -or molecule. For unit style *lj*\ , Lambda is simply set to the -unity. Note that prior to March 2017, lambda for unit style *lj* was -calculated using the above formula with h set to the rather specific +where *k* is Boltzman's constant, *T* is the user-specified +temperature, :math:`\rho` is the number density, *P* is the pressure, +and :math:`\phi` is the fugacity coefficient. The constant +:math:`\Lambda` is required for dimensional consistency. For all unit +styles except *lj* it is defined as the thermal de Broglie wavelength + +.. math:: + + \Lambda = \sqrt{ \frac{h^2}{2 \pi m k T}} + + +where *h* is Planck's constant, and *m* is the mass of the exchanged atom +or molecule. For unit style *lj*\ , :math:`\Lambda` is simply set to +unity. Note that prior to March 2017, :math:`\Lambda` for unit style *lj* +was calculated using the above formula with *h* set to the rather specific value of 0.18292026. Chemical potential under the old definition can be converted to an equivalent value under the new definition by -subtracting 3kTln(Lambda\_old). +subtracting :math:`3 k T \ln(\Lambda_{old})`. As an alternative to specifying mu directly, the ideal gas reservoir -can be defined by its pressure P using the *pressure* keyword, in +can be defined by its pressure *P* using the *pressure* keyword, in which case the user-specified chemical potential is ignored. The user -may also specify the fugacity coefficient phi using the +may also specify the fugacity coefficient :math:`\phi` using the *fugacity\_coeff* keyword, which defaults to unity. The *full\_energy* option means that the fix calculates the total @@ -322,7 +328,7 @@ this will ensure roughly the same behavior whether or not the *full\_energy* option is used. Inserted atoms and molecules are assigned random velocities based on -the specified temperature T. Because the relative velocity of all +the specified temperature *T*. Because the relative velocity of all atoms in the molecule is zero, this may result in inserted molecules that are systematically too cold. In addition, the intramolecular potential energy of the inserted molecule may cause the kinetic energy diff --git a/doc/src/fix_gld.rst b/doc/src/fix_gld.rst index fdc1bd3c6a..8dc2b9dd98 100644 --- a/doc/src/fix_gld.rst +++ b/doc/src/fix_gld.rst @@ -62,8 +62,12 @@ to be a Prony series. With this fix active, the force on the *j*\ th atom is given as -.. image:: Eqs/fix_gld1.jpg - :align: center +.. math:: + + {\bf F}_{j}(t) = & {\bf F}^C_j(t)-\int \limits_{0}^{t} \Gamma_j(t-s) {\bf v}_j(s)~\text{d}s + {\bf F}^R_j(t) \\ + \Gamma_j(t-s) = & \sum \limits_{k=1}^{N_k} \frac{c_k}{\tau_k} e^{-(t-s)/\tau_k} \\ + \langle{\bf F}^R_j(t),{\bf F}^R_j(s)\rangle = & \text{k$_\text{B}$T} ~\Gamma_j(t-s) + Here, the first term is representative of all conservative (pairwise, bonded, etc) forces external to this fix, the second is the temporally @@ -72,7 +76,7 @@ the colored Gaussian random force. The Prony series form of the memory kernel is chosen to enable an extended variable formalism, with a number of exemplary mathematical -features discussed in :ref:`(Baczewski) `. In particular, 3N\_k +features discussed in :ref:`(Baczewski) `. In particular, :math:`3N_k` extended variables are added to each atom, which effect the action of the memory kernel without having to explicitly evaluate the integral over time in the second term of the force. This also has the benefit diff --git a/doc/src/fix_grem.rst b/doc/src/fix_grem.rst index 4c2054e0c0..53b815ec36 100644 --- a/doc/src/fix_grem.rst +++ b/doc/src/fix_grem.rst @@ -38,17 +38,19 @@ which uses non-Boltzmann ensembles to sample over first order phase transitions. The is done by defining replicas with an enthalpy dependent effective temperature -.. image:: Eqs/fix_grem.jpg - :align: center +.. math:: -with *eta* negative and steep enough to only intersect the + T_{eff} = \lambda + \eta (H - H_0) + + +with :math:`\eta` negative and steep enough to only intersect the characteristic microcanonical temperature (Ts) of the system once, -ensuring a unimodal enthalpy distribution in that replica. *Lambda* is -the intercept and effects the generalized ensemble similar to how -temperature effects a Boltzmann ensemble. *H0* is a reference -enthalpy, and is typically set as the lowest desired sampled enthalpy. -Further explanation can be found in our recent papers -:ref:`(Malolepsza) `. +ensuring a unimodal enthalpy distribution in that replica. +:math:`\lambda` is the intercept and effects the generalized ensemble +similar to how temperature effects a Boltzmann ensemble. :math:`H_0` +is a reference enthalpy, and is typically set as the lowest desired +sampled enthalpy. Further explanation can be found in our recent +papers :ref:`(Malolepsza) `. This fix requires a Nose-Hoover thermostat fix reference passed to the grem as *thermostat-ID*\ . Two distinct temperatures exist in this @@ -59,13 +61,13 @@ algorithms can be used. The fix enforces a generalized ensemble in a single replica only. Typically, this ideology is combined with replica exchange with -replicas differing by *lambda* only for simplicity, but this is not +replicas differing by :math:`\lambda` only for simplicity, but this is not required. A multi-replica simulation can be run within the LAMMPS environment using the :doc:`temper/grem ` command. This utilizes LAMMPS partition mode and requires the number of available processors be on the order of the number of desired replicas. A 100-replica simulation would require at least 100 processors (1 per -world at minimum). If a many replicas are needed on a small number of +world at minimum). If many replicas are needed on a small number of processors, multi-replica runs can be run outside of LAMMPS. An example of this can be found in examples/USER/misc/grem and has no limit on the number of replicas per processor. However, this is very @@ -74,13 +76,13 @@ inefficient and error prone and should be avoided if possible. In general, defining the generalized ensembles is unique for every system. When starting a many-replica simulation without any knowledge of the underlying microcanonical temperature, there are several tricks -we have utilized to optimize the process. Choosing a less-steep *eta* -yields broader distributions, requiring fewer replicas to map the -microcanonical temperature. While this likely struggles from the same -sampling problems gREM was built to avoid, it provides quick insight -to Ts. Initially using an evenly-spaced *lambda* distribution -identifies regions where small changes in enthalpy lead to large -temperature changes. Replicas are easily added where needed. +we have utilized to optimize the process. Choosing a less-steep +:math:`\eta` yields broader distributions, requiring fewer replicas to +map the microcanonical temperature. While this likely struggles from +the same sampling problems gREM was built to avoid, it provides quick +insight to Ts. Initially using an evenly-spaced :math:`\lambda` +distribution identifies regions where small changes in enthalpy lead +to large temperature changes. Replicas are easily added where needed. ---------- diff --git a/doc/src/fix_hyper_global.rst b/doc/src/fix_hyper_global.rst index 809bd37981..2d0cda5970 100644 --- a/doc/src/fix_hyper_global.rst +++ b/doc/src/fix_hyper_global.rst @@ -58,65 +58,67 @@ Fichthorn as described in :ref:`(Miron) `. In LAMMPS we use a simplified version of bond-boost GHD where a single bond in the system is biased at any one timestep. -Bonds are defined between each pair of I,J atoms whose R0ij distance -is less than *cutbond*\ , when the system is in a quenched state +Bonds are defined between each pair of atoms *ij*\ , whose :math:`R^0_{ij}` +distance is less than *cutbond*\ , when the system is in a quenched state (minimum) energy. Note that these are not "bonds" in a covalent sense. A bond is simply any pair of atoms that meet the distance criterion. *Cutbond* is an argument to this fix; it is discussed -below. A bond is only formed if one or both of the I.J atoms are in +below. A bond is only formed if one or both of the *ij* atoms are in the specified group. -The current strain of bond IJ (when running dynamics) is defined as +The current strain of bond *ij* (when running dynamics) is defined as -.. parsed-literal:: +.. math:: - Eij = (Rij - R0ij) / R0ij + E_{ij} = \frac{R_{ij} - R^0_{ij}}{R^0_{ij}} -where Rij is the current distance between atoms I,J, and R0ij is the -equilibrium distance in the quenched state. +where :math:`R_{ij}` is the current distance between atoms *i* and *j*\ , +and :math:`R^0_{ij}` is the equilibrium distance in the quenched state. -The bias energy Vij of any bond IJ is defined as +The bias energy :math:`V_{ij}` of any bond between atoms *i* and *j* +is defined as -.. parsed-literal:: +.. math:: - Vij = Vmax \* (1 - (Eij/q)\^2) for abs(Eij) < qfactor - = 0 otherwise + V_{ij} = V^{max} \cdot \left( 1 - \left(\frac{E_{ij}}{q}\right)^2 \right) \textrm{ for } \left|E_{ij}\right| < qfactor \textrm{ or } 0 \textrm{ otherwise} -where the prefactor *Vmax* and the cutoff *qfactor* are arguments to +where the prefactor :math:`V^{max}` and the cutoff *qfactor* are arguments to this fix; they are discussed below. This functional form is an -inverse parabola centered at 0.0 with height Vmax and which goes to -0.0 at +/- qfactor. +inverse parabola centered at 0.0 with height :math:`V^{max}` and +which goes to 0.0 at +/- qfactor. -Let Emax = the maximum of abs(Eij) for all IJ bonds in the system on a -given timestep. On that step, Vij is added as a bias potential to -only the single bond with strain Emax, call it Vij(max). Note that -Vij(max) will be 0.0 if Emax >= qfactor on that timestep. Also note -that Vij(max) is added to the normal interatomic potential that is -computed between all atoms in the system at every step. +Let :math:`E^{max}` be the maximum of :math:`\left| E_{ij} \right|` +for all *ij* bonds in the system on a +given timestep. On that step, :math:`V_{ij}` is added as a bias potential +to only the single bond with strain :math:`E^{max}`, call it +:math:`V^{max}_{ij}`. Note that :math:`V^{max}_{ij}` will be 0.0 +if :math:`E^{max} >= \textrm{qfactor}` on that timestep. Also note +that :math:`V^{max}_{ij}` is added to the normal interatomic potential +that is computed between all atoms in the system at every step. -The derivative of Vij(max) with respect to the position of each atom -in the Emax bond gives a bias force Fij(max) acting on the bond as +The derivative of :math:`V^{max}_{ij}` with respect to the position of +each atom in the :math:`E^{max}` bond gives a bias force +:math:`F^{max}_{ij}` acting on the bond as -.. parsed-literal:: +.. math:: - Fij(max) = - dVij(max)/dEij = 2 Vmax Eij / qfactor\^2 for abs(Eij) < qfactor - = 0 otherwise + F^{max}_{ij} = - \frac{dV^{max}_{ij}}{dE_{ij}} = \frac{2 V^{max} E-{ij}}{\textrm{qfactor}^2} \textrm{ for } \left|E_{ij}\right| < \textrm{qfactor} \textrm{ or } 0 \textrm{ otherwise} which can be decomposed into an equal and opposite force acting on -only the two I,J atoms in the Emax bond. +only the two *ij* atoms in the :math:`E^{max}` bond. The time boost factor for the system is given each timestep I by -.. parsed-literal:: +.. math:: - Bi = exp(beta \* Vij(max)) + B_i = e^{\beta V^{max}_{ij}} -where beta = 1/kTequil, and *Tequil* is the temperature of the system -and an argument to this fix. Note that Bi >= 1 at every step. +where :math:`\beta = \frac{1}{kT_{equil}}`, and :math:`T_{equil}` is the temperature of the system +and an argument to this fix. Note that :math:`B_i >= 1` at every step. .. note:: @@ -125,21 +127,21 @@ and an argument to this fix. Note that Bi >= 1 at every step. constant-temperature (NVT) dynamics. LAMMPS does not check that this is done. -The elapsed time t\_hyper for a GHD simulation running for *N* +The elapsed time :math:`t_{hyper}` for a GHD simulation running for *N* timesteps is simply -.. parsed-literal:: +.. math:: - t_hyper = Sum (i = 1 to N) Bi \* dt + t_{hyper} = \sum_{i=1,N} B-i \cdot dt -where dt is the timestep size defined by the :doc:`timestep ` +where *dt* is the timestep size defined by the :doc:`timestep ` command. The effective time acceleration due to GHD is thus t\_hyper / N\*dt, where N\*dt is elapsed time for a normal MD run of N timesteps. Note that in GHD, the boost factor varies from timestep to timestep. -Likewise, which bond has Emax strain and thus which pair of atoms the -bias potential is added to, will also vary from timestep to timestep. +Likewise, which bond has :math:`E^{max}` strain and thus which pair of +atoms the bias potential is added to, will also vary from timestep to timestep. This is in contrast to local hyperdynamics (LHD) where the boost factor is an input parameter; see the :doc:`fix hyper/local ` doc page for details. @@ -150,9 +152,9 @@ factor is an input parameter; see the :doc:`fix hyper/local ` d Here is additional information on the input parameters for GHD. The *cutbond* argument is the cutoff distance for defining bonds -between pairs of nearby atoms. A pair of I,J atoms in their +between pairs of nearby atoms. A pair of *ij* atoms in their equilibrium, minimum-energy configuration, which are separated by a -distance Rij < *cutbond*\ , are flagged as a bonded pair. Setting +distance :math:`R_{ij} < cutbond`, are flagged as a bonded pair. Setting *cubond* to be ~25% larger than the nearest-neighbor distance in a crystalline lattice is a typical choice for solids, so that bonds exist only between nearest neighbor pairs. @@ -166,7 +168,7 @@ could still experience a non-zero bias force. If *qfactor* is set too large, then transitions from one energy basin to another are affected because the bias potential is non-zero at the transition state (e.g. saddle point). If *qfactor* is set too small -than little boost is achieved because the Eij strain of some bond in +than little boost is achieved because the :math:`E_{ij}` strain of some bond in the system will (nearly) always exceed *qfactor*\ . A value of 0.3 for *qfactor* is typically reasonable. @@ -220,7 +222,7 @@ scalar is the magnitude of the bias potential (energy units) applied on the current timestep. The vector stores the following quantities: * 1 = boost factor on this step (unitless) -* 2 = max strain Eij of any bond on this step (absolute value, unitless) +* 2 = max strain :math:`E_{ij}` of any bond on this step (absolute value, unitless) * 3 = ID of first atom in the max-strain bond * 4 = ID of second atom in the max-strain bond * 5 = average # of bonds/atom on this step diff --git a/doc/src/fix_hyper_local.rst b/doc/src/fix_hyper_local.rst index 335cd10f69..d7d0f012b6 100644 --- a/doc/src/fix_hyper_local.rst +++ b/doc/src/fix_hyper_local.rst @@ -77,66 +77,66 @@ To understand this description, you should first read the description of the GHD algorithm on the :doc:`fix hyper/global ` doc page. This description of LHD builds on the GHD description. -The definition of bonds and Eij are the same for GHD and LHD. The -formulas for Vij(max) and Fij(max) are also the same except for a -pre-factor Cij, explained below. +The definition of bonds and :math:`E_{ij}` are the same for GHD and LHD. +The formulas for :math:`V^{max}_{ij}` and :math:`F^{max}_{ij}` are also +the same except for a pre-factor :math:`C_{ij}`, explained below. -The bias energy Vij applied to a bond IJ with maximum strain is +The bias energy :math:`V_{ij}` applied to a bond *ij* with maximum strain is -.. parsed-literal:: +.. math:: - Vij(max) = Cij \* Vmax \* (1 - (Eij/q)\^2) for abs(Eij) < qfactor - = 0 otherwise + V^{max}_{ij} = C_{ij} \cdot V^{max} \cdot \left(1 - \left(\frac{E_{ij}}{q}\right)^2\right) \textrm{ for } \left|E_{ij}\right| < qfactor \textrm{ or } 0 \textrm{ otherwise} -The derivative of Vij(max) with respect to the position of each atom -in the IJ bond gives a bias force Fij(max) acting on the bond as +The derivative of :math:`V^{max}_{ij}` with respect to the position of +each atom in the *ij* bond gives a bias force :math:`F^{max}_{ij}` acting +on the bond as -.. parsed-literal:: +.. math:: - Fij(max) = - dVij(max)/dEij = 2 Cij Vmax Eij / qfactor\^2 for abs(Eij) < qfactor - = 0 otherwise + F^{max}_{ij} = - \frac{dV^{max}_{ij}}{dE_{ij}} = 2 C_{ij} V^{max} \frac{E_{ij}}{qfactor^2} \textrm{ for } \left|E_{ij}\right| < qfactor \textrm{ or } 0 \textrm{ otherwise} which can be decomposed into an equal and opposite force acting on -only the two I,J atoms in the IJ bond. +only the two atoms *i* and *j* in the *ij* bond. The key difference is that in GHD a bias energy and force is added (on a particular timestep) to only one bond (pair of atoms) in the system, -which is the bond with maximum strain Emax. +which is the bond with maximum strain :math:`E^{max}`. In LHD, a bias energy and force can be added to multiple bonds -separated by the specified *Dcut* distance or more. A bond IJ is +separated by the specified *Dcut* distance or more. A bond *ij* is biased if it is the maximum strain bond within its local -"neighborhood", which is defined as the bond IJ plus any neighbor -bonds within a distance *Dcut* from IJ. The "distance" between bond -IJ and bond KL is the minimum distance between any of the IK, IL, JK, -JL pairs of atoms. +"neighborhood", which is defined as the bond *ij* plus any neighbor +bonds within a distance *Dcut* from *ij*. The "distance" between bond +*ij* and bond *kl* is the minimum distance between any of the *ik*, *il*, +*jk*, and *jl* pairs of atoms. For a large system, multiple bonds will typically meet this -requirement, and thus a bias potential Vij(max) will be applied to -many bonds on the same timestep. +requirement, and thus a bias potential :math:`V^{max}_{ij}` will be +applied to many bonds on the same timestep. -In LHD, all bonds store a Cij prefactor which appears in the Vij(max) -and Fij(max) equations above. Note that the Cij factor scales the -strength of the bias energy and forces whenever bond IJ is the maximum -strain bond in its neighborhood. +In LHD, all bonds store a :math:`C_{ij}` prefactor which appears in +the :math:`V^{max}_{ij}` and :math:`F^{max}_{ij}equations above. Note +that the :math:`C_{ij}` factor scales the strength of the bias energy +and forces whenever bond *ij* is the maximum strain bond in its neighborhood. -Cij is initialized to 1.0 when a bond between the I,J atoms is first -defined. The specified *Btarget* factor is then used to adjust the -Cij prefactors for each bond every timestep in the following manner. +:math:`C_{ij}` is initialized to 1.0 when a bond between the *ij* atoms +is first defined. The specified *Btarget* factor is then used to adjust the +:math:`C_{ij}` prefactors for each bond every timestep in the following manner. -An instantaneous boost factor Bij is computed each timestep +An instantaneous boost factor :math:`B_{ij}` is computed each timestep for each bond, as -.. parsed-literal:: +.. math:: - Bij = exp(beta \* Vkl(max)) + B_{ij} = e^{\beta V^{max}_{kl}} -where Vkl(max) is the bias energy of the maxstrain bond KL within bond -IJ's neighborhood, beta = 1/kTequil, and *Tequil* is the temperature -of the system and an argument to this fix. +where :math:`V^{max}_{kl}` is the bias energy of the maxstrain bond *kl* +within bond *ij*\ 's neighborhood, :math:`\beta = \frac{1}{kT_{equil}}`, +and :math:`T_{equil}` is the temperature of the system and an argument +to this fix. .. note:: @@ -146,28 +146,32 @@ of the system and an argument to this fix. running constant-temperature (NVT) dynamics. LAMMPS does not check that this is done. -Note that if IJ = KL, then bond IJ is a biased bond on that timestep, -otherwise it is not. But regardless, the boost factor Bij can be -thought of an estimate of time boost currently being applied within a -local region centered on bond IJ. For LHD, we want this to be the -specified *Btarget* value everywhere in the simulation domain. +Note that if *ij*\ == *kl*\ , then bond *ij* is a biased bond on that +timestep, otherwise it is not. But regardless, the boost factor +:math:`B_{ij}` can be thought of an estimate of time boost currently +being applied within a local region centered on bond *ij*. For LHD, +we want this to be the specified *Btarget* value everywhere in the +simulation domain. -To accomplish this, if Bij < Btarget, the Cij prefactor for bond IJ is -incremented on the current timestep by an amount proportional to the -inverse of the specified *alpha* and the difference (Bij - Btarget). -Conversely if Bij > Btarget, Cij is decremented by the same amount. -This procedure is termed "boostostatting" in -:ref:`(Voter2013) `. It drives all of the individual Cij to -values such that when Vij\ *max* is applied as a bias to bond IJ, the -resulting boost factor Bij will be close to *Btarget* on average. +To accomplish this, if :math:`B_{ij} < B_{target}`, the :math:`C_{ij}` +prefactor for bond *ij* is incremented on the current timestep by an +amount proportional to the inverse of the specified *alpha* and the +difference (:math:`B_{ij} - B_{target}`). +Conversely if :math:`B_{ij} > B_{target}`, :math:`C_{ij}` is decremented +by the same amount. +This procedure is termed "boostostatting" in :ref:`(Voter2013) `. +It drives all of the individual :math:`C_{ij}` to +values such that when :math:`V^{max}_{ij}` is applied as a bias to +bond *ij*, the resulting boost factor :math:`B_{ij}` will be close +to :math:`B_{target}` on average. Thus the LHD time acceleration factor for the overall system is effectively *Btarget*\ . -Note that in LHD, the boost factor *Btarget* is specified by the user. +Note that in LHD, the boost factor :math:`B_{target}` is specified by the user. This is in contrast to global hyperdynamics (GHD) where the boost -factor varies each timestep and is computed as a function of *Vmax*\ , -Emax, and *Tequil*\ ; see the :doc:`fix hyper/global ` -doc page for details. +factor varies each timestep and is computed as a function of :math:`V_{max}`, +:math:`E_{max}`, and :math:`T_{equil}`; see the +:doc:`fix hyper/global ` doc page for details. ---------- @@ -182,7 +186,7 @@ The *Dcut*\ , *alpha*\ , and *Btarget* parameters are unique to LHD. The *cutbond* argument is the cutoff distance for defining bonds between pairs of nearby atoms. A pair of I,J atoms in their equilibrium, minimum-energy configuration, which are separated by a -distance Rij < *cutbond*\ , are flagged as a bonded pair. Setting +distance :math:`R_{ij} < cutbond`, are flagged as a bonded pair. Setting *cubond* to be ~25% larger than the nearest-neighbor distance in a crystalline lattice is a typical choice for solids, so that bonds exist only between nearest neighbor pairs. @@ -190,37 +194,40 @@ exist only between nearest neighbor pairs. The *qfactor* argument is the limiting strain at which the bias potential goes to 0.0. It is dimensionless, so a value of 0.3 means a bond distance can be up to 30% larger or 30% smaller than the -equilibrium (quenched) R0ij distance and the two atoms in the bond +equilibrium (quenched) :math:`R^0_{ij}` distance and the two atoms in the bond could still experience a non-zero bias force. If *qfactor* is set too large, then transitions from one energy basin to another are affected because the bias potential is non-zero at the transition state (e.g. saddle point). If *qfactor* is set too small -than little boost can be achieved because the Eij strain of some bond in +than little boost can be achieved because the :math:`E_{ij}` strain of +some bond in the system will (nearly) always exceed *qfactor*\ . A value of 0.3 for *qfactor* is typically a reasonable value. The *Vmax* argument is a fixed prefactor on the bias potential. There -is a also a dynamic prefactor Cij, driven by the choice of *Btarget* -as discussed above. The product of these should be a value less than +is a also a dynamic prefactor :math:`C_{ij}`, driven by the choice of +*Btarget* as discussed above. The product of these should be a value less than the smallest barrier height for an event to occur. Otherwise the applied bias potential may be large enough (when added to the interatomic potential) to produce a local energy basin with a maxima in the center. This can produce artificial energy minima in the same -basin that trap an atom. Or if Cij\*\ *Vmax* is even larger, it may +basin that trap an atom. Or if :math:`C_{ij} \cdot V^{max}` is even +larger, it may induce an atom(s) to rapidly transition to another energy basin. Both cases are "bad dynamics" which violate the assumptions of LHD that guarantee an accelerated time-accurate trajectory of the system. .. note:: - It may seem that *Vmax* can be set to any value, and Cij will - compensate to reduce the overall prefactor if necessary. However the - Cij are initialized to 1.0 and the boostostatting procedure typically - operates slowly enough that there can be a time period of bad dynamics - if *Vmax* is set too large. A better strategy is to set *Vmax* to the + It may seem that :math:`V^{max}` can be set to any value, and + :math:`C_{ij}` will compensate to reduce the overall prefactor + if necessary. However the :math:`C_{ij}` are initialized to 1.0 + and the boostostatting procedure typically operates slowly enough + that there can be a time period of bad dynamics if :math:`V^{max}` + is set too large. A better strategy is to set :math:`V^{max}` to the slightly smaller than the lowest barrier height for an event (the same - as for GHD), so that the Cij remain near unity. + as for GHD), so that the :math:`C_{ij}` remain near unity. The *Tequil* argument is the temperature at which the system is simulated; see the comment above about the :doc:`fix langevin ` thermostatting. It is also part of the @@ -262,11 +269,11 @@ half the *cutbond* parameter as an estimate to warn if the ghost cutoff is not long enough. As described above the *alpha* argument is a pre-factor in the -boostostat update equation for each bond's Cij prefactor. *Alpha* is -specified in time units, similar to other thermostat or barostat +boostostat update equation for each bond's :math:`C_{ij}` prefactor. +*Alpha* is specified in time units, similar to other thermostat or barostat damping parameters. It is roughly the physical time it will take the -boostostat to adjust a Cij value from a too high (or too low) value to -a correct one. An *alpha* setting of a few ps is typically good for +boostostat to adjust a :math:`C_{ij}` value from a too high (or too low) +value to a correct one. An *alpha* setting of a few ps is typically good for solid-state systems. Note that the *alpha* argument here is the inverse of the alpha parameter discussed in :ref:`(Voter2013) `. @@ -276,25 +283,26 @@ that all the atoms in the system will experience. The elapsed time t\_hyper for an LHD simulation running for *N* timesteps is simply -.. parsed-literal:: +.. math:: - t_hyper = Btarget \* N\*dt + t_{hyper} = B_{target} \cdot N \cdot dt -where dt is the timestep size defined by the :doc:`timestep ` -command. The effective time acceleration due to LHD is thus t\_hyper / -N\*dt = Btarget, where N\*dt is elapsed time for a normal MD run -of N timesteps. +where *dt* is the timestep size defined by the :doc:`timestep ` +command. The effective time acceleration due to LHD is thus +:math:`\frac{t_{hyper}}{N\cdot dt} = B_{target}`, where :math:`N\cdot dt` +is the elapsed time for a normal MD run of N timesteps. You cannot choose an arbitrarily large setting for *Btarget*\ . The maximum value you should choose is -.. parsed-literal:: +.. math:: - Btarget = exp(beta \* Vsmall) + B_{target} = e^{\beta V_{small}} -where Vsmall is the smallest event barrier height in your system, beta -= 1/kTequil, and *Tequil* is the specified temperature of the system +where :math:`V_{small}` is the smallest event barrier height in your +system, :math:`\beta = \frac{1}{kT_{equil}}`, and :math:`T_{equil}` +is the specified temperature of the system (both by this fix and the Langevin thermostat). Note that if *Btarget* is set smaller than this, the LHD simulation @@ -315,41 +323,42 @@ time (t\_hyper equation above) will be shorter. Here is additional information on the optional keywords for this fix. -The *bound* keyword turns on min/max bounds for bias coefficients Cij -for all bonds. Cij is a prefactor for each bond on the bias potential -of maximum strength Vmax. Depending on the choice of *alpha* and -*Btarget* and *Vmax*\ , the boostostatting can cause individual Cij -values to fluctuate. If the fluctuations are too large Cij\*Vmax can -exceed low barrier heights and induce bad event dynamics. Bounding -the Cij values is a way to prevent this. If *Bfrac* is set to -1 or -any negative value (the default) then no bounds are enforced on Cij -values (except they must always be >= 0.0). A *Bfrac* setting >= 0.0 -sets a lower bound of 1.0 - Bfrac and upper bound of 1.0 + Bfrac on -each Cij value. Note that all Cij values are initialized to 1.0 when -a bond is created for the first time. Thus *Bfrac* limits the bias -potential height to *Vmax* +/- *Bfrac*\ \*\ *Vmax*\ . +The *bound* keyword turns on min/max bounds for bias coefficients +:math:`C_{ij}` for all bonds. :math:`C_{ij}` is a prefactor for each bond on +the bias potential of maximum strength :math:`V^{max}`. Depending on the +choice of *alpha* and *Btarget* and *Vmax*\ , the boostostatting can cause +individual :math:`C_{ij}` values to fluctuate. If the fluctuations are too +large :math:`C_{ij} \cdot V^{max}` can exceed low barrier heights and induce +bad event dynamics. Bounding the :math:`C_{ij}` values is a way to prevent +this. If *Bfrac* is set to -1 or any negative value (the default) then no +bounds are enforced on :math:`C_{ij}` values (except they must always +be >= 0.0). A *Bfrac* setting >= 0.0 +sets a lower bound of 1.0 - Bfrac and upper bound of 1.0 + Bfrac on each +:math:`C_{ij}` value. Note that all :math:`C_{ij}` values are initialized +to 1.0 when a bond is created for the first time. Thus *Bfrac* limits the +bias potential height to *Vmax* +/- *Bfrac*\ \*\ *Vmax*\ . -The *reset* keyword allow *Vmax* to be adjusted dynamically depending -on the average value of all Cij prefactors. This can be useful if you +The *reset* keyword allow *Vmax* to be adjusted dynamically depending on the +average value of all :math:`C_{ij}` prefactors. This can be useful if you are unsure what value of *Vmax* will match the *Btarget* boost for the -system. The Cij values will then adjust in aggregate (up or down) so -that Cij\*Vmax produces a boost of *Btarget*\ , but this may conflict -with the *bound* keyword settings. By using *bound* and *reset* -together, *Vmax* itself can be reset, and desired bounds still applied -to the Cij values. +system. The :math:`C_{ij}` values will then adjust in aggregate (up or down) +so that :math:`C_{ij} \cdot V^{max}` produces a boost of *Btarget*\ , but this +may conflict with the *bound* keyword settings. By using *bound* and *reset* +together, :math:`V^{max}` itself can be reset, and desired bounds still applied +to the :math:`C_{ij}` values. A setting for *Rfreq* of -1 (the default) means *Vmax* never changes. -A setting of 0 means *Vmax* is adjusted every time an event occurs and +A setting of 0 means :math:`V^{max}` is adjusted every time an event occurs and bond pairs are recalculated. A setting of N > 0 timesteps means -*Vmax* is adjusted on the first time an event occurs on a timestep >= -N steps after the previous adjustment. The adjustment to *Vmax* is -computed as follows. The current average of all Cij\*Vmax values is -computed and the *Vmax* is reset to that value. All Cij values are -changed to new prefactors such the new Cij\*Vmax is the same as it was -previously. If the *bound* keyword was used, those bounds are -enforced on the new Cij values. Henceforth, new bonds are assigned a -Cij = 1.0, which means their bias potential magnitude is the new -*Vmax*\ . +:math:`V^{max}` is adjusted on the first time an event occurs on a timestep >= +N steps after the previous adjustment. The adjustment to :math:`V^{max}` is +computed as follows. The current average of all :math:`C_{ij} \cdot V^{max}` +values is computed and the :math:`V^{max}` is reset to that value. All +:math:`C_{ij}` values are changed to new prefactors such the new +:math:`C_{ij} \cdot V^{max}` is the same as it was previously. If the +*bound* keyword was used, those bounds are enforced on the new :math:`C_{ij}` +values. Henceforth, new bonds are assigned a :math:`C_{ij} = 1.0`, which +means their bias potential magnitude is the new :math:`V^{max}`. The *check/ghost* keyword turns on extra computation each timestep to compute statistics about ghost atoms used to determine which bonds to @@ -390,8 +399,8 @@ vector stores the following quantities: * 1 = average boost for all bonds on this step (unitless) * 2 = # of biased bonds on this step -* 3 = max strain Eij of any bond on this step (absolute value, unitless) -* 4 = value of Vmax on this step (energy units) +* 3 = max strain :math:`E_{ij}` of any bond on this step (absolute value, unitless) +* 4 = value of :math:`V^{max}` on this step (energy units) * 5 = average bias coeff for all bonds on this step (unitless) * 6 = min bias coeff for all bonds on this step (unitless) * 7 = max bias coeff for all bonds on this step (unitless) @@ -428,12 +437,12 @@ multiple runs (since the point in the input script the fix was defined). For value 10, each bond instantaneous boost factor is given by the -equation for Bij above. The total system boost (average across all +equation for :math:`B_{ij}` above. The total system boost (average across all bonds) fluctuates, but should average to a value close to the -specified Btarget. +specified :math:`B_{target}`. For value 12, the numerator is a count of all biased bonds on each -timestep whose bias energy = 0.0 due to Eij >= *qfactor*\ . The +timestep whose bias energy = 0.0 due to :math:`E_{ij} >= qfactor`. The denominator is the count of all biased bonds on all timesteps. For value 13, the numerator is a count of all biased bonds on each @@ -522,12 +531,12 @@ The scalar and vector values calculated by this fix are all "intensive". This fix also computes a local vector of length the number of bonds -currently in the system. The value for each bond is its Cij prefactor -(bias coefficient). These values can be can be accessed by various +currently in the system. The value for each bond is its :math:`C_{ij}` +prefactor (bias coefficient). These values can be can be accessed by various :doc:`output commands `. A particularly useful one is the :doc:`fix ave/histo ` command which can be used to histogram the Cij values to see if they are distributed reasonably -close to 1.0, which indicates a good choice of *Vmax*\ . +close to 1.0, which indicates a good choice of :math:`V^{max}`. The local values calculated by this fix are unitless. diff --git a/doc/src/fix_langevin_spin.rst b/doc/src/fix_langevin_spin.rst index bccedc8520..b229a2ae8d 100644 --- a/doc/src/fix_langevin_spin.rst +++ b/doc/src/fix_langevin_spin.rst @@ -36,16 +36,19 @@ Brownian dynamics (BD). A random torque and a transverse dissipation are applied to each spin i according to the following stochastic differential equation: -.. image:: Eqs/fix_langevin_spin_sLLG.jpg - :align: center +.. math:: -with lambda the transverse damping, and eta a random vector. + \frac{d \vec{s}_{i}}{dt} = \frac{1}{\left(1+\lambda^2 \right)} \left( \left( + \vec{\omega}_{i} +\vec{\eta} \right) \times \vec{s}_{i} + \lambda\, \vec{s}_{i} + \times\left( \vec{\omega}_{i} \times\vec{s}_{i} \right) \right) + +with :math:`\lambda` the transverse damping, and :math:`\eta` a random vector. This equation is referred to as the stochastic Landau-Lifshitz-Gilbert (sLLG) equation. -The components of eta are drawn from a Gaussian probability law. Their amplitude -is defined as a proportion of the temperature of the external thermostat T (in K -in metal units). +The components of :math:`\eta` are drawn from a Gaussian probability +law. Their amplitude is defined as a proportion of the temperature of +the external thermostat T (in K in metal units). More details about this implementation are reported in :ref:`(Tranchida) `. diff --git a/doc/src/fix_lb_fluid.rst b/doc/src/fix_lb_fluid.rst index b7ce7ffdc8..0c923d923b 100644 --- a/doc/src/fix_lb_fluid.rst +++ b/doc/src/fix_lb_fluid.rst @@ -69,33 +69,42 @@ dependent force to the fluid. The lattice-Boltzmann algorithm solves for the fluid motion governed by the Navier Stokes equations, -.. image:: Eqs/fix_lb_fluid_navierstokes.jpg - :align: center +.. math:: + + \partial_t \rho + \partial_{\beta}\left(\rho u_{\beta}\right)= & 0 \\ + \partial_t\left(\rho u_{\alpha}\right) + \partial_{\beta}\left(\rho u_{\alpha} u_{\beta}\right) = & \partial_{\beta}\sigma_{\alpha \beta} + F_{\alpha} + \partial_{\beta}\left(\eta_{\alpha \beta \gamma \nu}\partial_{\gamma} u_{\nu}\right) + with, -.. image:: Eqs/fix_lb_fluid_viscosity.jpg - :align: center +.. math:: -where rho is the fluid density, u is the local fluid velocity, sigma -is the stress tensor, F is a local external force, and eta and Lambda -are the shear and bulk viscosities respectively. Here, we have -implemented + \eta_{\alpha \beta \gamma \nu} = \eta\left[\delta_{\alpha \gamma}\delta_{\beta \nu} + \delta_{\alpha \nu}\delta_{\beta \gamma} - \frac{2}{3}\delta_{\alpha \beta}\delta_{\gamma \nu}\right] + \Lambda \delta_{\alpha \beta}\delta_{\gamma \nu} -.. image:: Eqs/fix_lb_fluid_stress.jpg - :align: center -with a\_0 set to 1/3 (dx/dt)\^2 by default. +where :math:`\rho` is the fluid density, *u* is the local +fluid velocity, :math:`\sigma` is the stress tensor, *F* is a local external +force, and :math:`\eta` and :math:`\Lambda` are the shear and bulk viscosities +respectively. Here, we have implemented + +.. math:: + + \sigma_{\alpha \beta} = -P_{\alpha \beta} = -\rho a_0 \delta_{\alpha \beta} + + +with :math:`a_0` set to :math:`\frac{1}{3} \frac{dx}{dt}^2` by default. The algorithm involves tracking the time evolution of a set of partial distribution functions which evolve according to a velocity discretized version of the Boltzmann equation, -.. image:: Eqs/fix_lb_fluid_boltzmann.jpg - :align: center +.. math:: + + \left(\partial_t + e_{i\alpha}\partial_{\alpha}\right)f_i = -\frac{1}{\tau}\left(f_i - f_i^{eq}\right) + W_i + where the first term on the right hand side represents a single time -relaxation towards the equilibrium distribution function, and tau is a +relaxation towards the equilibrium distribution function, and :math:`\tau` is a parameter physically related to the viscosity. On a technical note, we have implemented a 15 velocity model (D3Q15) as default; however, the user can switch to a 19 velocity model (D3Q19) through the use of @@ -108,8 +117,10 @@ finite difference LB integrator is used. If *LBtype* is set equal to Physical variables are then defined in terms of moments of the distribution functions, -.. image:: Eqs/fix_lb_fluid_properties.jpg - :align: center +.. math:: + + \rho = & \displaystyle\sum\limits_{i} f_i \\ + \rho u_{\alpha} = & \displaystyle\sum\limits_{i} f_i e_{i\alpha} Full details of the lattice-Boltzmann algorithm used can be found in :ref:`Mackay et al. `. @@ -119,12 +130,15 @@ through a velocity dependent force. The contribution to the fluid force on a given lattice mesh site j due to MD particle alpha is calculated as: -.. image:: Eqs/fix_lb_fluid_fluidforce.jpg - :align: center +.. math:: -where v\_n is the velocity of the MD particle, u\_f is the fluid + {\bf F}_{j \alpha} = \gamma \left({\bf v}_n - {\bf u}_f \right) \zeta_{j\alpha} + + +where :math:`\mathbf{v}_n` is the velocity of the MD particle, +:math:`\mathbf{u}_f` is the fluid velocity interpolated to the particle location, and gamma is the force -coupling constant. Zeta is a weight assigned to the grid point, +coupling constant. :math:`\zeta` is a weight assigned to the grid point, obtained by distributing the particle to the nearest lattice sites. For this, the user has the choice between a trilinear stencil, which provides a support of 8 lattice sites, or the immersed boundary method @@ -135,20 +149,25 @@ to walls, due to its smaller support. Therefore, by default, the Peskin stencil is used; however the user may switch to the trilinear stencil by specifying the keyword, *trilinear*\ . -By default, the force coupling constant, gamma, is calculated according to +By default, the force coupling constant, :math:`\gamma`, is calculated +according to -.. image:: Eqs/fix_lb_fluid_gammadefault.jpg - :align: center +.. math:: -Here, m\_v is the mass of the MD particle, m\_u is a representative -fluid mass at the particle location, and dt\_collision is a collision -time, chosen such that tau/dt\_collision = 1 (see :ref:`Mackay and Denniston ` for full details). In order to calculate m\_u, the -fluid density is interpolated to the MD particle location, and -multiplied by a volume, node\_area\*dx\_lb, where node\_area represents -the portion of the surface area of the composite object associated -with a given MD particle. By default, node\_area is set equal to -dx\_lb\*dx\_lb; however specific values for given atom types can be set -using the *setArea* keyword. + \gamma = \frac{2m_um_v}{m_u+m_v}\left(\frac{1}{\Delta t_{collision}}\right) + + +Here, :math:`m_v` is the mass of the MD particle, :math:`m_u` is a +representative fluid mass at the particle location, and :math:`\Delta +t_{collision}` is a collision time, chosen such that +:math:`\frac{\tau}{\Delta t_{collision}} = 1` (see :ref:`Mackay and +Denniston ` for full details). In order to calculate :math:`m_u`, +the fluid density is interpolated to the MD particle location, and +multiplied by a volume, node\_area\*dx\_lb, where node\_area +represents the portion of the surface area of the composite object +associated with a given MD particle. By default, node\_area is set +equal to dx\_lb\*dx\_lb; however specific values for given atom types +can be set using the *setArea* keyword. The user also has the option of specifying their own value for the force coupling constant, for all the MD particles associated with the @@ -364,8 +383,10 @@ Default By default, the force coupling constant is set according to -.. image:: Eqs/fix_lb_fluid_gammadefault.jpg - :align: center +.. math:: + + \gamma = \frac{2m_um_v}{m_u+m_v}\left(\frac{1}{\Delta t_{collision}}\right) + and an area of dx\_lb\^2 per node, used to calculate the fluid mass at the particle node location, is assumed. diff --git a/doc/src/fix_mvv_dpd.rst b/doc/src/fix_mvv_dpd.rst index 55066c8ce4..211642e7ec 100644 --- a/doc/src/fix_mvv_dpd.rst +++ b/doc/src/fix_mvv_dpd.rst @@ -50,10 +50,14 @@ The modified velocity-Verlet (MVV) algorithm aims to improve the stability of the time integrator by using an extrapolated version of the velocity for the force evaluation: -.. image:: Eqs/fix_mvv_dpd.jpg - :align: center +.. math:: -where the parameter λ depends on the + v(t+\frac{\Delta t}{2}) = & v(t) + \frac{\Delta t}{2}\cdot a(t) \\ + r(t+\Delta t) = & r(t) + \Delta t\cdot v(t+\frac{\Delta t}{2}) \\ + a(t+\Delta t) = & \frac{1}{m}\cdot F\left[ r(t+\Delta t), v(t) +\lambda \cdot \Delta t\cdot a(t)\right] \\ + v(t+\Delta t) = & v(t+\frac{\Delta t}{2}) + \frac{\Delta t}{2}\cdot a(t+\Delta t) + +where the parameter :math:`\lambda` depends on the specific choice of DPD parameters, and needs to be tuned on a case-by-case basis. Specification of a *lambda* value is optional. If specified, the setting must be from 0.0 to 1.0. If not specified, diff --git a/doc/src/fix_nh.rst b/doc/src/fix_nh.rst index 36f2d6c8f3..88ece95e95 100644 --- a/doc/src/fix_nh.rst +++ b/doc/src/fix_nh.rst @@ -511,9 +511,28 @@ with *respa*\ , LAMMPS uses an integrator constructed according to the following factorization of the Liouville propagator (for two rRESPA levels): -.. image:: Eqs/fix_nh1.jpg - :align: center +.. math:: + \exp \left(\mathrm{i} L \Delta t \right) = & \hat{E} + \exp \left(\mathrm{i} L_{\rm T\textrm{-}baro} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\rm T\textrm{-}part} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\epsilon , 2} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{2}^{(2)} \frac{\Delta t}{2} \right) \\ + &\times \left[ + \exp \left(\mathrm{i} L_{2}^{(1)} \frac{\Delta t}{2n} \right) + \exp \left(\mathrm{i} L_{\epsilon , 1} \frac{\Delta t}{2n} \right) + \exp \left(\mathrm{i} L_1 \frac{\Delta t}{n} \right) + \exp \left(\mathrm{i} L_{\epsilon , 1} \frac{\Delta t}{2n} \right) + \exp \left(\mathrm{i} L_{2}^{(1)} \frac{\Delta t}{2n} \right) + \right]^n \\ + &\times + \exp \left(\mathrm{i} L_{2}^{(2)} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\epsilon , 2} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\rm T\textrm{-}part} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\rm T\textrm{-}baro} \frac{\Delta t}{2} \right) \\ + &+ \mathcal{O} \left(\Delta t^3 \right) + + This factorization differs somewhat from that of Tuckerman et al, in that the barostat is only updated at the outermost rRESPA level, whereas Tuckerman's factorization requires splitting the pressure into diff --git a/doc/src/fix_nphug.rst b/doc/src/fix_nphug.rst index 2261600f93..1d946e5f83 100644 --- a/doc/src/fix_nphug.rst +++ b/doc/src/fix_nphug.rst @@ -88,21 +88,23 @@ Essentially, a Hugoniostat simulation is an NPT simulation in which the user-specified target temperature is replaced with a time-dependent target temperature Tt obtained from the following equation: -.. image:: Eqs/fix_nphug.jpg - :align: center +.. math:: -where T and Tt are the instantaneous and target temperatures, -P and P0 are the instantaneous and reference pressures or axial stresses, + T_t - T = \frac{\left(\frac{1}{2}\left(P + P_0\right)\left(V_0 - V\right) + E_0 - E\right)}{N_{dof} k_B } = \Delta + + +where *T* and :math:`T_t` are the instantaneous and target temperatures, +*P* and :math:`P_0` are the instantaneous and reference pressures or axial stresses, depending on whether hydrostatic or uniaxial compression is being -performed, V and V0 are the instantaneous and reference volumes, -E and E0 are the instantaneous and reference internal energy (potential -plus kinetic), Ndof is the number of degrees of freedom used in the -definition of temperature, and kB is the Boltzmann constant. Delta is the +performed, *V* and :math:`V_0` are the instantaneous and reference volumes, +*E* and :math:`E_0` are the instantaneous and reference internal energy (potential +plus kinetic), :math:`N_{dof}` is the number of degrees of freedom used in the +definition of temperature, and :math:`k_B` is the Boltzmann constant. :math:`\Delta` is the negative deviation of the instantaneous temperature from the target temperature. -When the system reaches a stable equilibrium, the value of Delta should +When the system reaches a stable equilibrium, the value of :math:`\Delta` should fluctuate about zero. -The values of E0, V0, and P0 are the instantaneous values at the start of +The values of :math:`E_0`, :math:`V_0`, and :math:`P_0` are the instantaneous values at the start of the simulation. These can be overridden using the fix\_modify keywords *e0*\ , *v0*\ , and *p0* described below. @@ -179,19 +181,20 @@ instructions on how to use the accelerated styles effectively. **Restart, fix\_modify, output, run start/stop, minimize info:** -This fix writes the values of E0, V0, and P0, as well as the -state of all the thermostat and barostat -variables to :doc:`binary restart files `. See the -:doc:`read_restart ` command for info on how to re-specify -a fix in an input script that reads a restart file, so that the -operation of the fix continues in an uninterrupted fashion. +This fix writes the values of :math:`E_0`, :math:`V_0`, and :math:`P_0`, +as well as the state of all the thermostat and barostat variables to +:doc:`binary restart files `. See the :doc:`read_restart +` command for info on how to re-specify a fix in an input +script that reads a restart file, so that the operation of the fix +continues in an uninterrupted fashion. -The :doc:`fix_modify ` *e0*\ , *v0* and *p0* keywords -can be used to define the values of E0, V0, and P0. Note the -the values for *e0* and *v0* are extensive, and so must correspond -to the total energy and volume of the entire system, not energy and -volume per atom. If any of these quantities are not specified, then the -instantaneous value in the system at the start of the simulation is used. +The :doc:`fix_modify ` *e0*\ , *v0* and *p0* keywords can be +used to define the values of :math:`E_0`, :math:`V_0`, and +:math:`P_0`. Note the the values for *e0* and *v0* are extensive, and so +must correspond to the total energy and volume of the entire system, not +energy and volume per atom. If any of these quantities are not +specified, then the instantaneous value in the system at the start of +the simulation is used. The :doc:`fix_modify ` *temp* and *press* options are supported by these fixes. You can use them to assign a @@ -216,7 +219,7 @@ values are "intensive". The scalar is the cumulative energy change due to the fix. -The vector stores three quantities unique to this fix (Delta, Us, and up), +The vector stores three quantities unique to this fix (:math:`\Delta`, Us, and up), followed by all the internal Nose/Hoover thermostat and barostat variables defined for :doc:`fix npt `. Delta is the deviation of the temperature from the target temperature, given by the above equation. diff --git a/doc/src/fix_npt_cauchy.rst b/doc/src/fix_npt_cauchy.rst index 133305f13c..e9a98b813f 100644 --- a/doc/src/fix_npt_cauchy.rst +++ b/doc/src/fix_npt_cauchy.rst @@ -444,8 +444,26 @@ with *respa*\ , LAMMPS uses an integrator constructed according to the following factorization of the Liouville propagator (for two rRESPA levels): -.. image:: Eqs/fix_nh1.jpg - :align: center +.. math:: + + \exp \left(\mathrm{i} L \Delta t \right) = & \hat{E} + \exp \left(\mathrm{i} L_{\rm T\textrm{-}baro} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\rm T\textrm{-}part} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\epsilon , 2} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{2}^{(2)} \frac{\Delta t}{2} \right) \\ + &\times \left[ + \exp \left(\mathrm{i} L_{2}^{(1)} \frac{\Delta t}{2n} \right) + \exp \left(\mathrm{i} L_{\epsilon , 1} \frac{\Delta t}{2n} \right) + \exp \left(\mathrm{i} L_1 \frac{\Delta t}{n} \right) + \exp \left(\mathrm{i} L_{\epsilon , 1} \frac{\Delta t}{2n} \right) + \exp \left(\mathrm{i} L_{2}^{(1)} \frac{\Delta t}{2n} \right) + \right]^n \\ + &\times + \exp \left(\mathrm{i} L_{2}^{(2)} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\epsilon , 2} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\rm T\textrm{-}part} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\rm T\textrm{-}baro} \frac{\Delta t}{2} \right) \\ + &+ \mathcal{O} \left(\Delta t^3 \right) This factorization differs somewhat from that of Tuckerman et al, in that the barostat is only updated at the outermost rRESPA level, diff --git a/doc/src/fix_nve_spin.rst b/doc/src/fix_nve_spin.rst index 6caa7cc8a6..c66d107089 100644 --- a/doc/src/fix_nve_spin.rst +++ b/doc/src/fix_nve_spin.rst @@ -47,7 +47,7 @@ By default a spin-lattice integration is performed (lattice = moving). The *nve/spin* fix applies a Suzuki-Trotter decomposition to the equations of motion of the spin lattice system, following the scheme: -.. image:: Eqs/fix_integration_spin_stdecomposition.jpg +.. image:: JPG/fix_integration_spin_stdecomposition.jpg :align: center according to the implementation reported in :ref:`(Omelyan) `. diff --git a/doc/src/fix_orient.rst b/doc/src/fix_orient.rst index 7100efc4e5..a23b98fbae 100644 --- a/doc/src/fix_orient.rst +++ b/doc/src/fix_orient.rst @@ -58,8 +58,22 @@ accounted for in measuring the grain boundary velocity. The potential energy added to atom I is given by these formulas -.. image:: Eqs/fix_orient_fcc.jpg - :align: center +.. math:: + + \xi_{i} = & \sum_{j=1}^{12} \left| \mathbf{r}_{j} - \mathbf{r}_{j}^{\rm I} \right| \qquad\qquad\left(1\right) \\ + \\ + \xi_{\rm IJ} = & \sum_{j=1}^{12} \left| \mathbf{r}_{j}^{\rm J} - \mathbf{r}_{j}^{\rm I} \right| \qquad\qquad\left(2\right)\\ + \\ + \xi_{\rm low} = & {\rm cutlo} \, \xi_{\rm IJ} \qquad\qquad\qquad\left(3\right)\\ + \xi_{\rm high} = & {\rm cuthi} \, \xi_{\rm IJ} \qquad\qquad\qquad\left(4\right) \\ + \\ + \omega_{i} = & \frac{\pi}{2} \frac{\xi_{i} - \xi_{\rm low}}{\xi_{\rm high} - \xi_{\rm low}} \qquad\qquad\left(5\right)\\ + \\ + u_{i} = & 0 \quad\quad\qquad\qquad\qquad \textrm{ for } \qquad \xi_{i} < \xi_{\rm low}\\ + = & {\rm dE}\,\frac{1 - \cos(2 \omega_{i})}{2} + \qquad \mathrm{ for }\qquad \xi_{\rm low} < \xi_{i} < \xi_{\rm high} \quad \left(6\right) \\ + = & {\rm dE} \quad\qquad\qquad\qquad\textrm{ for } \qquad \xi_{\rm high} < \xi_{i} + which are fully explained in :ref:`(Janssens) `. For fcc crystals this order parameter Xi for atom I in equation (1) is a sum over the diff --git a/doc/src/fix_pimd.rst b/doc/src/fix_pimd.rst index 436b13d9bc..d71c969acf 100644 --- a/doc/src/fix_pimd.rst +++ b/doc/src/fix_pimd.rst @@ -46,8 +46,11 @@ configurations from the canonical ensemble :ref:`(Feynman) `. The classical partition function and its components are given by the following equations: -.. image:: Eqs/fix_pimd.jpg - :align: center +.. math:: + + Z = & \int d{\bf q} d{\bf p} \cdot \textrm{exp} [ -\beta H_{eff} ] \\ + H_{eff} = & \bigg(\sum_{i=1}^P \frac{p_i^2}{2m_i}\bigg) + V_{eff} \\ + V_{eff} = & \sum_{i=1}^P \bigg[ \frac{mP}{2\beta^2 \hbar^2} (q_i - q_{i+1})^2 + \frac{1}{P} V(q_i)\bigg] The interested user is referred to any of the numerous references on this methodology, but briefly, each quantum particle in a path diff --git a/doc/src/fix_rhok.rst b/doc/src/fix_rhok.rst index ba381a37d3..9374f43798 100644 --- a/doc/src/fix_rhok.rst +++ b/doc/src/fix_rhok.rst @@ -29,8 +29,12 @@ Description The fix applies a force to atoms given by the potential -.. image:: Eqs/fix_rhok.jpg - :align: center +.. math:: + + U = & \frac{1}{2} K (|\rho_{\vec{k}}| - a)^2 \\ + \rho_{\vec{k}} = & \sum_j^N \exp(-i\vec{k} \cdot \vec{r}_j )/\sqrt{N} \\ + \vec{k} = & (2\pi n_x /L_x , 2\pi n_y /L_y , 2\pi n_z/L_z ) + as described in :ref:`(Pedersen) `. diff --git a/doc/src/fix_rx.rst b/doc/src/fix_rx.rst index ce40a58524..2f0df1ebd5 100644 --- a/doc/src/fix_rx.rst +++ b/doc/src/fix_rx.rst @@ -46,13 +46,17 @@ defined within the file associated with this command. For a general reaction such that -.. image:: Eqs/fix_rx_reaction.jpg - :align: center +.. math:: + + \nu_{A}A + \nu_{B}B \rightarrow \nu_{C}C + the reaction rate equation is defined to be of the form -.. image:: Eqs/fix_rx_reactionRate.jpg - :align: center +.. math:: + + r = k(T)[A]^{\nu_{A}}[B]^{\nu_{B}} + In the current implementation, the exponents are defined to be equal to the stoichiometric coefficients. A given reaction set consisting @@ -121,12 +125,14 @@ irreversible reaction. After specifying the reaction, the reaction rate constant is determined through the temperature dependent Arrhenius equation: -.. image:: Eqs/fix_rx.jpg - :align: center +.. math:: + + k = AT^{n}e^{\frac{-E_{a}}{k_{B}T}} + where *A* is the Arrhenius factor in time units or concentration/time units, *n* is the unitless exponent of the temperature dependence, and -*E\_a* is the activation energy in energy units. The temperature +:math:`E_a` is the activation energy in energy units. The temperature dependence can be removed by specifying the exponent as zero. The internal temperature of the coarse-grained particles can be used @@ -136,13 +142,17 @@ be specified to compute a local-average particle internal temperature for use in the reaction rate constant expressions. The local-average particle internal temperature is defined as: -.. image:: Eqs/fix_rx_localTemp.jpg - :align: center +.. math:: + + \theta_i^{-1} = \frac{\sum_{j=1}\omega_{Lucy}\left(r_{ij}\right)\theta_j^{-1}}{\sum_{j=1}\omega_{Lucy}\left(r_{ij}\right)} + where the Lucy function is expressed as: -.. image:: Eqs/fix_rx_localTemp2.jpg - :align: center +.. math:: + + \omega_{Lucy}\left(r_{ij}\right) = \left( 1 + \frac{3r_{ij}}{r_c} \right) \left( 1 - \frac{r_{ij}}{r_c} \right)^3 + The self-particle interaction is included in the above equation. diff --git a/doc/src/fix_shake.rst b/doc/src/fix_shake.rst index bca1a55d16..624d5cf455 100644 --- a/doc/src/fix_shake.rst +++ b/doc/src/fix_shake.rst @@ -75,13 +75,18 @@ be the position and velocity of atom *i* at time *n*\ , for *i* =1,...,\ *N*\ , where *N* is the number of sites of our reference molecule. The distance vector between sites *i* and *j* is given by -.. image:: Eqs/fix_rattle_rij.jpg - :align: center +.. math:: + + \mathbf r^{n+1}_{ij} = \mathbf r^n_j - \mathbf r^n_i + The constraints can then be formulated as -.. image:: Eqs/fix_rattle_constraints.jpg - :align: center +.. math:: + + \mathbf r^{n+1}_{ij} \cdot \mathbf r^{n+1}_{ij} &= d^2_{ij} \quad \text{and} \\ + \mathbf v^{n+1}_{ij} \cdot \mathbf r^{n+1}_{ij} &= 0 + The SHAKE algorithm satisfies the first condition, i.e. the sites at time *n+1* will have the desired separations Dij immediately after the diff --git a/doc/src/fix_spring_rg.rst b/doc/src/fix_spring_rg.rst index e1463dc4e3..fd3b09754b 100644 --- a/doc/src/fix_spring_rg.rst +++ b/doc/src/fix_spring_rg.rst @@ -44,15 +44,21 @@ energy of the constraint and associated force on each atom is given by the second and third formulas, when the group is at a different RG than the target value RG0. -.. image:: Eqs/fix_spring_rg.jpg - :align: center +.. math:: -The (xi - center-of-mass) term is computed taking into account -periodic boundary conditions, m\_i is the mass of the atom, and M is -the mass of the entire group. Note that K is thus a force constant + {R_G}^2 & = \frac{1}{M}\sum_{i}^{N}{m_{i}\left( x_{i} - + \frac{1}{M}\sum_{j}^{N}{m_{j}x_{j}} \right)^{2}} \\ + E & = K\left( R_G - R_{G0} \right)^{2} \\ + F_{i} & = 2K\frac{m_{i}}{M}\left( 1-\frac{R_{G0}}{R_G} + \right)\left( x_{i} - \frac{1}{M}\sum_{j}^{N}{m_{j}x_{j}} \right) + + +The (:math:`x_i` - center-of-mass) term is computed taking into account +periodic boundary conditions, :math:`m_i` is the mass of the atom, and +*M* is the mass of the entire group. Note that K is thus a force constant for the aggregate force on the group of atoms, not a per-atom force. -If RG0 is specified as NULL, then the RG of the group is computed at +If :math:`R_{G0}` is specified as NULL, then the RG of the group is computed at the time the fix is specified, and that value is used as the target. **Restart, fix\_modify, output, run start/stop, minimize info:** diff --git a/doc/src/fix_ti_spring.rst b/doc/src/fix_ti_spring.rst index ec4599b519..152e3fbcac 100644 --- a/doc/src/fix_ti_spring.rst +++ b/doc/src/fix_ti_spring.rst @@ -48,8 +48,10 @@ The thermodynamic integration procedure is performed by rescaling the force on each atom. Given an atomic configuration the force (F) on each atom is given by -.. image:: Eqs/fix_ti_spring_force.jpg - :align: center +.. math:: + + F = \left( 1-\lambda \right) F_{\text{solid}} + \lambda F_{\text{harm}} + where F\_solid is the force that acts on an atom due to an interatomic potential (\ *e.g.* EAM potential), F\_harm is the force due to the @@ -87,15 +89,19 @@ The *function* keyword allows the use of two different lambda paths. Option *1* results in a constant rate of change of lambda with time: -.. image:: Eqs/fix_ti_spring_function_1.jpg - :align: center +.. math:: + + \lambda(\tau) = \tau + where tau is the scaled time variable *t/t\_s*. The option *2* performs the lambda switching at a rate defined by the following switching function -.. image:: Eqs/fix_ti_spring_function_2.jpg - :align: center +.. math:: + + \lambda(\tau) = \tau^5 \left( 70 \tau^4 - 315 \tau^3 + 540 \tau^2 - 420 \tau + 126 \right) + This function has zero slope as lambda approaches its extreme values (0 and 1), according to :ref:`de Koning ` this results in diff --git a/doc/src/fix_ttm.rst b/doc/src/fix_ttm.rst index eeafd8bfe0..022afc67b5 100644 --- a/doc/src/fix_ttm.rst +++ b/doc/src/fix_ttm.rst @@ -109,8 +109,12 @@ Energy transport within the electronic subsystem is solved according to the heat diffusion equation with added source terms for heat transfer between the subsystems: -.. image:: Eqs/fix_ttm.jpg - :align: center +.. math:: + + C_e \rho_e \frac{\partial T_e}{\partial t} = + \bigtriangledown (\kappa_e \bigtriangledown T_e) - + g_p (T_e - T_a) + g_s T_a' + where C\_e is the specific heat, rho\_e is the density, kappa\_e is the thermal conductivity, T is temperature, the "e" and "a" subscripts @@ -194,8 +198,12 @@ temperature controlled by another fix - e.g. :doc:`fix nvt ` or Fix ttm/mod uses the heat diffusion equation with possible external heat sources (e.g. laser heating in ablation simulations): -.. image:: Eqs/fix_ttm_mod.jpg - :align: center +.. math:: + + C_e \rho_e \frac{\partial T_e}{\partial t} = + \bigtriangledown (\kappa_e \bigtriangledown T_e) - + g_p (T_e - T_a) + g_s T_a' + \theta (x-x_{surface})I_0 \exp(-x/l_{skin}) + where theta is the Heaviside step function, I\_0 is the (absorbed) laser pulse intensity for ablation simulations, l\_skin is the depth @@ -207,8 +215,10 @@ Fix ttm/mod also allows users to specify the dependencies of C\_e and kappa\_e on the electronic temperature. The specific heat is expressed as -.. image:: Eqs/fix_ttm_ce.jpg - :align: center +.. math:: + + C_e = C_0 + (a_0 + a_1 X + a_2 X^2 + a_3 X^3 + a_4 X^4) \exp (-(AX)^2) + where *X* = T\_e/1000, and the thermal conductivity is defined as kappa\_e = D\_e\*rho\_e\*C\_e, where D\_e is the thermal diffusion @@ -219,8 +229,10 @@ for the blast force acting on ions because of electronic pressure gradient (see :ref:`(Chen) `, :ref:`(Norman) `). The total force acting on an ion is: -.. image:: Eqs/fix_ttm_blast.jpg - :align: center +.. math:: + + {\vec F}_i = - \partial U / \partial {\vec r}_i + {\vec F}_{langevin} - \nabla P_e/n_{ion} + where F\_langevin is a force from Langevin thermostat simulating electron-phonon coupling, and nabla P\_e/n\_ion is the electron blast @@ -242,8 +254,10 @@ initial borders of vacuum can be set in the *init\_file* via *lsurface* and *rsurface* parameters. In this case, electronic pressure gradient is calculated as -.. image:: Eqs/fix_ttm_blast1.jpg - :align: center +.. math:: + + \nabla_x P_e = \left[\frac{C_e{}T_e(x)\lambda}{(x+\lambda)^2} + \frac{x}{x+\lambda}\frac{(C_e{}T_e)_{x+\Delta x}-(C_e{}T_e)_{x}}{\Delta x} \right] + where lambda is the electron mean free path (see :ref:`(Norman) `, :ref:`(Pisarev) `) diff --git a/doc/src/fix_wall.rst b/doc/src/fix_wall.rst index ba37b19205..600c880f20 100644 --- a/doc/src/fix_wall.rst +++ b/doc/src/fix_wall.rst @@ -104,35 +104,58 @@ wall-particle interactions depends on the style. For style *wall/lj93*\ , the energy E is given by the 9/3 potential: -.. image:: Eqs/fix_wall_lj93.jpg - :align: center +.. math:: + + E = \epsilon \left[ \frac{2}{15} \left(\frac{\sigma}{r}\right)^{9} - + \left(\frac{\sigma}{r}\right)^3 \right] + \qquad r < r_c + For style *wall/lj126*\ , the energy E is given by the 12/6 potential: -.. image:: Eqs/pair_lj.jpg - :align: center +.. math:: + + E = 4 \epsilon \left[ \left(\frac{\sigma}{r}\right)^{12} - + \left(\frac{\sigma}{r}\right)^6 \right] + \qquad r < r_c + For style *wall/lj1043*\ , the energy E is given by the 10/4/3 potential: -.. image:: Eqs/fix_wall_lj1043.jpg - :align: center +.. math:: + + E = 2 \pi \epsilon \left[ \frac{2}{5} \left(\frac{\sigma}{r}\right)^{10} - + \left(\frac{\sigma}{r}\right)^4 - + \frac{\sqrt(2)\sigma^3}{3\left(r+\left(0.61/\sqrt(2)\right)\sigma\right)^3}\right] + \qquad r < r_c + For style *wall/colloid*\ , the energy E is given by an integrated form of the :doc:`pair_style colloid ` potential: -.. image:: Eqs/fix_wall_colloid.jpg - :align: center +.. math:: + + E = & \epsilon \left[ \frac{\sigma^{6}}{7560} + \left(\frac{6R-D}{D^{7}} + \frac{D+8R}{(D+2R)^{7}} \right) \right. \\ + & \left. - \frac{1}{6} \left(\frac{2R(D+R) + D(D+2R) + \left[ \ln D - \ln (D+2R) \right]}{D(D+2R)} \right) \right] \qquad r < r_c + For style *wall/harmonic*\ , the energy E is given by a harmonic spring potential: -.. image:: Eqs/fix_wall_harmonic.jpg - :align: center +.. math:: + + E = \epsilon \quad (r - r_c)^2 \qquad r < r_c + For style *wall/morse*\ , the energy E is given by a Morse potential: -.. image:: Eqs/pair_morse.jpg - :align: center +.. math:: + + E = D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} \right] + \qquad r < r_c + In all cases, *r* is the distance from the particle to the wall at position *coord*\ , and Rc is the *cutoff* distance at which the diff --git a/doc/src/fix_wall_ees.rst b/doc/src/fix_wall_ees.rst index 6374109cc6..334228d85b 100644 --- a/doc/src/fix_wall_ees.rst +++ b/doc/src/fix_wall_ees.rst @@ -65,15 +65,16 @@ group by generating a force on the atom in a direction perpendicular to the wall and a torque parallel with the wall. The energy of wall-particle interactions E is given by: -.. image:: Eqs/fix_wall_ees.jpg - :align: center +.. math:: + + E = \epsilon \left[ \frac{2 \sigma_{LJ}^{12} \left(7 r^5+14 r^3 \sigma_{n}^2+3 r \sigma_{n}^4\right) }{945 \left(r^2-\sigma_{n}^2\right)^7} -\frac{ \sigma_{LJ}^6 \left(2 r \sigma_{n}^3+\sigma_{n}^2 \left(r^2-\sigma_{n}^2\right)\log{ \left[\frac{r-\sigma_{n}}{r+\sigma_{n}}\right]}\right) }{12 \sigma_{n}^5 \left(r^2-\sigma_{n}^2\right)} \right]\qquad \sigma_n < r < r_c + Introduced by Babadi and Ejtehadi in :ref:`(Babadi) `. Here, *r* is the distance from the particle to the wall at position *coord*\ , and Rc is the *cutoff* distance at which the particle and wall no -longer interact. Also, sigma\_n is the distance between center of -ellipsoid and the nearest point of its surface to the wall. The energy -of the wall is: +longer interact. Also, :math:`\sigma_n` is the distance between center of +ellipsoid and the nearest point of its surface to the wall as shown below. .. image:: JPG/fix_wall_ees_image.jpg :align: center @@ -82,24 +83,30 @@ Details of using this command and specifications are the same as fix/wall command. You can also find an example in USER/ees/ under examples/ directory. -The prefactor *epsilon* can be thought of as an +The prefactor :math:`\epsilon` can be thought of as an effective Hamaker constant with energy units for the strength of the -ellipsoid-wall interaction. More specifically, the *epsilon* pre-factor -= 8 \* pi\^2 \* rho\_wall \* rho\_ellipsoid \* epsilon -\* sigma\_a \* sigma\_b \* sigma\_c, where epsilon is the LJ parameters for -the constituent LJ particles and sigma\_a, sigma\_b, and sigma\_c are radii -of ellipsoidal particles. Rho\_wall and rho\_ellipsoid are the number -density of the constituent particles, in the wall and ellipsoid -respectively, in units of 1/volume. +ellipsoid-wall interaction. More specifically, the :math:`\epsilon` +pre-factor is + +.. math:: + + 8 \pi^2 \quad \rho_{wall} \quad \rho_{ellipsoid} \quad \epsilon \quad \sigma_a \quad \sigma_b \quad \sigma_c + + +where :math:`\epsilon` is the LJ energy parameter for the constituent LJ +particles and :math:`\sigma_a`, :math:`\sigma_b`, and :math:`\sigma_c` +are the radii of the ellipsoidal particles. :math:`\rho_{wall}` and +:math:`\rho_{ellipsoid}` are the number density of the constituent +particles, in the wall and ellipsoid respectively, in units of 1/volume. .. note:: - You must insure that r is always bigger than sigma\_n for + You must insure that r is always bigger than :math:`\sigma_n` for all particles in the group, or LAMMPS will generate an error. This means you cannot start your simulation with particles touching the wall - position *coord* (r = sigma\_n) or with particles penetrating the wall - (0 =< r < sigma\_n) or with particles on the wrong side of the - wall (r < 0). + position *coord* (:math:`r = \sigma_n`) or with particles penetrating + the wall (:math:`0 =< r < \sigma_n`) or with particles on the wrong + side of the wall (:math:`r < 0`). Fix *wall/region/ees* treats the surface of the geometric region defined by the *region-ID* as a bounding wall which interacts with nearby diff --git a/doc/src/fix_wall_region.rst b/doc/src/fix_wall_region.rst index 162b9d6994..a6f719e142 100644 --- a/doc/src/fix_wall_region.rst +++ b/doc/src/fix_wall_region.rst @@ -132,38 +132,62 @@ style. For style *lj93*\ , the energy E is given by the 9/3 potential: -.. image:: Eqs/fix_wall_lj93.jpg - :align: center +.. math:: + + E = \epsilon \left[ \frac{2}{15} \left(\frac{\sigma}{r}\right)^{9} - + \left(\frac{\sigma}{r}\right)^3 \right] + \qquad r < r_c + For style *lj126*\ , the energy E is given by the 12/6 potential: -.. image:: Eqs/pair_lj.jpg - :align: center +.. math:: + + E = 4 \epsilon \left[ \left(\frac{\sigma}{r}\right)^{12} - + \left(\frac{\sigma}{r}\right)^6 \right] + \qquad r < r_c + For style *wall/lj1043*\ , the energy E is given by the 10/4/3 potential: -.. image:: Eqs/fix_wall_lj1043.jpg - :align: center +.. math:: + + E = 2 \pi \epsilon \left[ \frac{2}{5} \left(\frac{\sigma}{r}\right)^{10} - + \left(\frac{\sigma}{r}\right)^4 - + \frac{\sqrt(2)\sigma^3}{3\left(r+\left(0.61/\sqrt(2)\right)\sigma\right)^3}\right] + \qquad r < r_c + For style *colloid*\ , the energy E is given by an integrated form of the :doc:`pair_style colloid ` potential: -.. image:: Eqs/fix_wall_colloid.jpg - :align: center +.. math:: + + E = & \epsilon \left[ \frac{\sigma^{6}}{7560} + \left(\frac{6R-D}{D^{7}} + \frac{D+8R}{(D+2R)^{7}} \right) \right. \\ + & \left. - \frac{1}{6} \left(\frac{2R(D+R) + D(D+2R) + \left[ \ln D - \ln (D+2R) \right]}{D(D+2R)} \right) \right] \qquad r < r_c + For style *wall/harmonic*\ , the energy E is given by a harmonic spring potential (the distance parameter is ignored): -.. image:: Eqs/fix_wall_harmonic.jpg - :align: center +.. math:: + + E = \epsilon \quad (r - r_c)^2 \qquad r < r_c + For style *wall/morse*\ , the energy E is given by the Morse potential: -.. image:: Eqs/pair_morse.jpg - :align: center +.. math:: -Unlike other styles, this requires three parameters (*D\_0*, *alpha*\ , *r\_0* -in this order) instead of two like for the other wall styles. + E = D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} \right] + \qquad r < r_c + + +Unlike other styles, this requires three parameters (:math:`D_0`, +:math:`\alpha`, and :math:`r_0` in this order) instead of two like +for the other wall styles. In all cases, *r* is the distance from the particle to the region surface, and Rc is the *cutoff* distance at which the particle and diff --git a/doc/src/min_style.rst b/doc/src/min_style.rst index 5de407b6a9..dffacab8a5 100644 --- a/doc/src/min_style.rst +++ b/doc/src/min_style.rst @@ -65,21 +65,21 @@ Style *fire* is a damped dynamics method described in :ref:`(Bitzek) and alters the projection operation to maintain components of the velocity non-parallel to the current force vector. The velocity of each atom is initialized to 0.0 by this style, at the beginning of a -minimization. This style correspond to an optimized version described +minimization. This style correspond to an optimized version described in :ref:`(Guenole) ` that include different time integration -schemes and defaults parameters. The default parameters can be +schemes and defaults parameters. The default parameters can be modified with the command :doc:`min_modify `. -Style *fire/old* is the original implementation of *fire* in Lammps, -conserved for backward compatibility. The main differences regarding +Style *fire/old* is the original implementation of *fire* in Lammps, +conserved for backward compatibility. The main differences regarding the current version *fire* are: time integration by Explicit Euler only, different sequence in maintaining velocity components non-parallel to the current force vector and hard-coded minimization parameters. -A complete description of the differences between *fire/old* and *fire* -can be found in :ref:`(Guenole) ` (where the current *fire* -in lammps is named *fire2.0*). By using an appropriate set of -parameters, *fire* can behave similarly than *fire/old*, as described +A complete description of the differences between *fire/old* and *fire* +can be found in :ref:`(Guenole) ` (where the current *fire* +in LAMMPS is called *fire2.0*). By using an appropriate set of +parameters, *fire* can behave similar to *fire/old*, as described in the :doc:`min_modify ` command. Style *spin* is a damped spin dynamics with an adaptive timestep. diff --git a/doc/src/pair_adp.rst b/doc/src/pair_adp.rst index 69051f545e..43a94933ad 100644 --- a/doc/src/pair_adp.rst +++ b/doc/src/pair_adp.rst @@ -1,16 +1,16 @@ -.. index:: pair\_style adp +.. index:: pair_style adp -pair\_style adp command -======================= +pair_style adp command +====================== -pair\_style adp/omp command -=========================== +pair_style adp/omp command +========================== Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style adp @@ -18,11 +18,11 @@ Examples """""""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style adp - pair_coeff \* \* Ta.adp Ta - pair_coeff \* \* ../potentials/AlCu.adp Al Al Cu + pair_coeff * * Ta.adp Ta + pair_coeff * * ../potentials/AlCu.adp Al Al Cu Description """"""""""" @@ -32,15 +32,21 @@ using the angular dependent potential (ADP) of :ref:`(Mishin) `, which is a generalization of the :doc:`embedded atom method (EAM) potential `. The LAMMPS implementation is discussed in :ref:`(Singh) `. The total energy Ei of an atom I is given by -.. image:: Eqs/pair_adp.jpg - :align: center +.. math:: -where F is the embedding energy which is a function of the atomic -electron density rho, phi is a pair potential interaction, alpha and -beta are the element types of atoms I and J, and s and t = 1,2,3 and -refer to the cartesian coordinates. The mu and lambda terms represent -the dipole and quadruple distortions of the local atomic environment -which extend the original EAM framework by introducing angular forces. + E_i & = F_\alpha \left( \sum_{j\neq i} \rho_\beta (r_{ij}) \right) + \frac{1}{2} \sum_{j\neq i}\phi_{\alpha\beta}(r_{ij})+ \frac{1}{2} \sum_s (\mu_i^s)^2 + \frac{1}{2} \sum_{s,t} (\lambda_i^{st})^2 - \frac{1}{6} \nu_i^2 \\ + \mu_i^s & = \sum_{j\neq i}u_{\alpha\beta}(r_{ij})r_{ij}^s\\ + \lambda_i^{st} & = \sum_{j\neq i}w_{\alpha\beta}(r_{ij})r_{ij}^sr_{ij}^t\\ + \nu_i & = \sum_s\lambda_i^{ss} + + +where :math:`F` is the embedding energy which is a function of the atomic +electron density :math:`\rho`, :math:`\phi` is a pair potential interaction, +:math:`\alpha` and :math:`\beta` are the element types of atoms :math:`I` and +:math:`J`, and :math:`s` and :math:`t = 1,2,3` and refer to the cartesian +coordinates. The :math:`\mu` and :math:`\lambda` terms represent the dipole +and quadruple distortions of the local atomic environment which extend the +original EAM framework by introducing angular forces. Note that unlike for other potentials, cutoffs for ADP potentials are not set in the pair\_style or pair\_coeff command; they are specified in @@ -61,12 +67,12 @@ command to specify them. Only a single pair\_coeff command is used with the *adp* style which specifies an extended DYNAMO *setfl* file, which contains information -for M elements. These are mapped to LAMMPS atom types by specifying N +for :math:`M` elements. These are mapped to LAMMPS atom types by specifying :math:`N` additional arguments after the filename in the pair\_coeff command, -where N is the number of LAMMPS atom types: +where :math:`N` is the number of LAMMPS atom types: * filename -* N element names = mapping of extended *setfl* elements to atom types +* :math:`N` element names = mapping of extended *setfl* elements to atom types See the :doc:`pair_coeff ` doc page for alternate ways to specify the path for the potential file. @@ -79,9 +85,9 @@ and you want the 1st 3 to be Al, and the 4th to be Cu, you would use the following pair\_coeff command: -.. parsed-literal:: +.. code-block:: LAMMPS - pair_coeff \* \* AlCu.adp Al Al Al Cu + pair_coeff * * AlCu.adp Al Al Al Cu The 1st 2 arguments must be \* \* so as to span all LAMMPS atom types. The first three Al arguments map LAMMPS atom types 1,2,3 to the Al @@ -103,29 +109,33 @@ the tabulated pair potentials. See the :doc:`pair_eam ` command for further details on the *setfl* format. * lines 1,2,3 = comments (ignored) -* line 4: Nelements Element1 Element2 ... ElementN -* line 5: Nrho, drho, Nr, dr, cutoff +* line 4: :math:`N_{\text{elements}}` Element1 Element2 ... ElementN +* line 5: :math:`N_\rho`, :math:`d_\rho`, :math:`N_r`, :math:`d_r`, cutoff -Following the 5 header lines are Nelements sections, one for each +Following the 5 header lines are :math:`N_{\text{elements}}` sections, one for each element, each with the following format: * line 1 = atomic number, mass, lattice constant, lattice type (e.g. FCC) -* embedding function F(rho) (Nrho values) -* density function rho(r) (Nr values) +* embedding function :math:`F(\rho)` (:math:`N_\rho` values) +* density function :math:`\rho(r)` (:math:`N_r` values) -Following the Nelements sections, Nr values for each pair potential -phi(r) array are listed for all i,j element pairs in the same format -as other arrays. Since these interactions are symmetric (i,j = j,i) -only phi arrays with i >= j are listed, in the following order: i,j = -(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (4,1), ..., (Nelements, -Nelements). The tabulated values for each phi function are listed as -r\*phi (in units of eV-Angstroms), since they are for atom pairs, the +Following the :math:`N_{\text{elements}}` sections, :math:`N_r` values for each pair potential +:math:`\phi(r)` array are listed for all :math:`i,j` element pairs in the same format +as other arrays. Since these interactions are symmetric (:math:`i,j = j,i`) +only :math:`\phi` arrays with :math:`i \geq j` are listed, in the following order: + +.. math:: + + i,j = (1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (4,1), ..., (N_{\text{elements}},N_{\text{elements}}). + +The tabulated values for each :math:`\phi` function are listed as +:math:`r*\phi` (in units of eV-Angstroms), since they are for atom pairs, the same as for :doc:`other EAM files `. -After the phi(r) arrays, each of the u(r) arrays are listed in the +After the :math:`\phi(r)` arrays, each of the :math:`u(r)` arrays are listed in the same order with the same assumptions of symmetry. Directly following -the u(r), the w(r) arrays are listed. Note that phi(r) is the only -array tabulated with a scaling by r. +the :math:`u(r)`, the :math:`w(r)` arrays are listed. Note that :math:`\phi(r)` is the only +array tabulated with a scaling by :math:`r`. ---------- diff --git a/doc/src/pair_agni.rst b/doc/src/pair_agni.rst index fc2b47b63d..bb7408f363 100644 --- a/doc/src/pair_agni.rst +++ b/doc/src/pair_agni.rst @@ -1,23 +1,26 @@ -.. index:: pair\_style agni +.. index:: pair_style agni -pair\_style agni command +pair_style agni command ======================== -pair\_style agni/omp command +pair_style agni/omp command ============================ Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style agni Examples """""""" -pair\_style agni -pair\_coeff \* \* Al.agni Al + +.. code-block:: LAMMPS + + pair_style agni + pair_coeff * * Al.agni Al Description """"""""""" @@ -25,14 +28,19 @@ Description Style *agni* style computes the many-body vectorial force components for an atom as -.. image:: Eqs/pair_agni.jpg - :align: center +.. math:: -*u* labels the individual components, i.e. x, y or z, and *V* is the -corresponding atomic fingerprint. *d* is the Euclidean distance between -any two atomic fingerprints. A total of N\_t reference atomic -environments are considered to construct the force field file. *alpha\_t* -and *l* are the weight coefficients and length scale parameter of the + F_i^u & = \sum_t^{N_t}\alpha_t \cdot \exp\left[-\frac{\left(d_{i,t}^u\right)^2}{2l^2}\right] \\ + d_{i,t}^u & = \left|\left| V_i^u(\eta) - V_t^u(\eta) \right|\right| \\ + V_i^u(\eta) & = \sum_{j \neq i}\frac{r^u_{ij}}{r_{ij}} \cdot e^{-\left(\frac{r_{ij}}{\eta} \right)^2} \cdot f_d\left(r_{ij}\right) \\ + f_d\left(r_{ij}\right) & = \frac{1}{2} \left[\cos\left(\frac{\pi r_{ij}}{R_c}\right) + 1 \right] + + +:math:`u` labels the individual components, i.e. :math:`x`, :math:`y` or :math:`z`, and :math:`V` is the +corresponding atomic fingerprint. :math:`d` is the Euclidean distance between +any two atomic fingerprints. A total of :math:`N_t` reference atomic +environments are considered to construct the force field file. :math:`\alpha_t` +and :math:`l` are the weight coefficients and length scale parameter of the non-linear regression model. The method implements the recently proposed machine learning access to @@ -45,11 +53,11 @@ vectorial atomic forces. Only a single pair\_coeff command is used with the *agni* style which specifies an AGNI potential file containing the parameters of the force field for the needed elements. These are mapped to LAMMPS atom -types by specifying N additional arguments after the filename in the -pair\_coeff command, where N is the number of LAMMPS atom types: +types by specifying :math:`N` additional arguments after the filename in the +pair\_coeff command, where :math:`N` is the number of LAMMPS atom types: * filename -* N element names = mapping of AGNI elements to atom types +* :math:`N` element names = mapping of AGNI elements to atom types See the :doc:`pair_coeff ` doc page for alternate ways to specify the path for the force field file. diff --git a/doc/src/pair_airebo.rst b/doc/src/pair_airebo.rst index 0cd2a79fe8..e2ef285f91 100644 --- a/doc/src/pair_airebo.rst +++ b/doc/src/pair_airebo.rst @@ -1,61 +1,61 @@ -.. index:: pair\_style airebo +.. index:: pair_style airebo -pair\_style airebo command -========================== +pair_style airebo command +========================= -pair\_style airebo/intel command -================================ +pair_style airebo/intel command +=============================== -pair\_style airebo/omp command -============================== +pair_style airebo/omp command +============================= -pair\_style airebo/morse command -================================ +pair_style airebo/morse command +=============================== -pair\_style airebo/morse/intel command -====================================== +pair_style airebo/morse/intel command +===================================== -pair\_style airebo/morse/omp command -==================================== +pair_style airebo/morse/omp command +=================================== -pair\_style rebo command -======================== +pair_style rebo command +======================= -pair\_style rebo/intel command -============================== +pair_style rebo/intel command +============================= -pair\_style rebo/omp command -============================ +pair_style rebo/omp command +=========================== Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style style cutoff LJ_flag TORSION_flag cutoff_min * style = *airebo* or *airebo/morse* or *rebo* -* cutoff = LJ or Morse cutoff (sigma scale factor) (AIREBO and AIREBO-M only) +* cutoff = LJ or Morse cutoff (:math:`\sigma` scale factor) (AIREBO and AIREBO-M only) * LJ\_flag = 0/1 to turn off/on the LJ or Morse term (AIREBO and AIREBO-M only, optional) * TORSION\_flag = 0/1 to turn off/on the torsion term (AIREBO and AIREBO-M only, optional) -* cutoff\_min = Start of the transition region of cutoff (sigma scale factor) (AIREBO and AIREBO-M only, optional) +* cutoff\_min = Start of the transition region of cutoff (:math:`\sigma` scale factor) (AIREBO and AIREBO-M only, optional) Examples """""""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style airebo 3.0 pair_style airebo 2.5 1 0 - pair_coeff \* \* ../potentials/CH.airebo H C + pair_coeff * * ../potentials/CH.airebo H C pair_style airebo/morse 3.0 - pair_coeff \* \* ../potentials/CH.airebo-m H C + pair_coeff * * ../potentials/CH.airebo-m H C pair_style rebo - pair_coeff \* \* ../potentials/CH.rebo H C + pair_coeff * * ../potentials/CH.rebo H C Description """"""""""" @@ -82,8 +82,11 @@ with a few slightly different parameters The AIREBO potential consists of three terms: -.. image:: Eqs/pair_airebo.jpg - :align: center +.. math:: + + E & = \frac{1}{2} \sum_i \sum_{j \neq i} + \left[ E^{\text{REBO}}_{ij} + E^{\text{LJ}}_{ij} + + \sum_{k \neq i,j} \sum_{l \neq i,j,k} E^{\text{TORSION}}_{kijl} \right] \\ By default, all three terms are included. For the *airebo* style, if the first two optional flag arguments to the pair\_style command are @@ -91,73 +94,73 @@ included, the LJ and torsional terms can be turned off. Note that both or neither of the flags must be included. If both of the LJ an torsional terms are turned off, it becomes the 2nd-generation REBO potential, with a small caveat on the spline fitting procedure -mentioned below. This can be specified directly as pair\_style *rebo* +mentioned below. This can be specified directly as pair_style *rebo* with no additional arguments. The detailed formulas for this potential are given in :ref:`(Stuart) `; here we provide only a brief description. -The E\_REBO term has the same functional form as the hydrocarbon REBO +The :math:`E^{\text{REBO}}` term has the same functional form as the hydrocarbon REBO potential developed in :ref:`(Brenner) `. The coefficients for -E\_REBO in AIREBO are essentially the same as Brenner's potential, but +:math:`E^{\text{REBO}}` in AIREBO are essentially the same as Brenner's potential, but a few fitted spline values are slightly different. For most cases the -E\_REBO term in AIREBO will produce the same energies, forces and +:math:`E^{\text{REBO}}` term in AIREBO will produce the same energies, forces and statistical averages as the original REBO potential from which it was -derived. The E\_REBO term in the AIREBO potential gives the model its +derived. The :math:`E^{\text{REBO}}` term in the AIREBO potential gives the model its reactive capabilities and only describes short-ranged C-C, C-H and H-H -interactions (r < 2 Angstroms). These interactions have strong +interactions (:math:`r < 2` Angstroms). These interactions have strong coordination-dependence through a bond order parameter, which adjusts the attraction between the I,J atoms based on the position of other nearby atoms and thus has 3- and 4-body dependence. -The E\_LJ term adds longer-ranged interactions (2 < r < cutoff) using a +The :math:`E^{\text{LJ}}` term adds longer-ranged interactions (:math:`2 < r < \text{cutoff}`) using a form similar to the standard :doc:`Lennard Jones potential `. -The E\_LJ term in AIREBO contains a series of switching functions so -that the short-ranged LJ repulsion (1/r\^12) does not interfere with -the energetics captured by the E\_REBO term. The extent of the E\_LJ -interactions is determined by the *cutoff* argument to the pair\_style +The :math:`E^{\text{LJ}}` term in AIREBO contains a series of switching functions so +that the short-ranged LJ repulsion (:math:`1/r^{12}`) does not interfere with +the energetics captured by the :math:`E^{\text{REBO}}` term. The extent of the :math:`E^{\text{LJ}}` +interactions is determined by the *cutoff* argument to the pair_style command which is a scale factor. For each type pair (C-C, C-H, H-H) the cutoff is obtained by multiplying the scale factor by the sigma value defined in the potential file for that type pair. In the -standard AIREBO potential, sigma\_CC = 3.4 Angstroms, so with a scale -factor of 3.0 (the argument in pair\_style), the resulting E\_LJ cutoff +standard AIREBO potential, :math:`\sigma_{CC} = 3.4` Angstroms, so with a scale +factor of 3.0 (the argument in pair_style), the resulting :math:`E^{\text{LJ}}` cutoff would be 10.2 Angstroms. By default, the longer-ranged interaction is smoothly switched off -between 2.16 and 3.0 sigma. By specifying *cutoff\_min* in addition +between 2.16 and 3.0 :math:`\sigma`. By specifying *cutoff\_min* in addition to *cutoff*\ , the switching can be configured to take place between *cutoff\_min* and *cutoff*\ . *cutoff\_min* can only be specified if all optional arguments are given. -The E\_TORSION term is an explicit 4-body potential that describes +The :math:`E^{\text{TORSION}}` term is an explicit 4-body potential that describes various dihedral angle preferences in hydrocarbon configurations. ---------- -Only a single pair\_coeff command is used with the *airebo*\ , *airebo* +Only a single pair_coeff command is used with the *airebo*\ , *airebo* or *rebo* style which specifies an AIREBO, REBO, or AIREBO-M potential file with parameters for C and H. Note that as of LAMMPS version 15 May 2019 the *rebo* style in LAMMPS uses its own potential file (CH.rebo). These are mapped to LAMMPS atom types by specifying -N additional arguments after the filename in the pair\_coeff command, +N additional arguments after the filename in the pair_coeff command, where N is the number of LAMMPS atom types: * filename -* N element names = mapping of AIREBO elements to atom types +* :math:`N` element names = mapping of AIREBO elements to atom types See the :doc:`pair_coeff ` doc page for alternate ways to specify the path for the potential file. As an example, if your LAMMPS simulation has 4 atom types and you want the 1st 3 to be C, and the 4th to be H, you would use the following -pair\_coeff command: +pair_coeff command: -.. parsed-literal:: +.. code-block:: LAMMPS - pair_coeff \* \* CH.airebo C C C H + pair_coeff * * CH.airebo C C C H The 1st 2 arguments must be \* \* so as to span all LAMMPS atom types. The first three C arguments map LAMMPS atom types 1,2,3 to the C @@ -178,21 +181,21 @@ listed in the CH.airebo-m file to agree with the :ref:`(O'Connor) ` paper. Thus the parameters are specific to this potential and the way it was fit, so modifying the file should be done cautiously. The AIREBO-M Morse potentials were parameterized using a cutoff of -3.0 (sigma). Modifying this cutoff may impact simulation accuracy. +3.0 (:math:`\sigma`). Modifying this cutoff may impact simulation accuracy. This pair style tallies a breakdown of the total AIREBO potential energy into sub-categories, which can be accessed via the :doc:`compute pair ` command as a vector of values of length 3. The 3 values correspond to the following sub-categories: -1. *E\_REBO* = REBO energy -2. *E\_LJ* = Lennard-Jones energy -3. *E\_TORSION* = Torsion energy +1. :math:`E_{\text{REBO}}` = REBO energy +2. :math:`E_{\text{LJ}}` = Lennard-Jones energy +3. :math:`E_{\text{TORSION}}` = Torsion energy To print these quantities to the log file (with descriptive column headings) the following commands could be included in an input script: -.. parsed-literal:: +.. code-block:: LAMMPS compute 0 all pair airebo variable REBO equal c_0[1] @@ -232,12 +235,12 @@ These pair styles do not support the :doc:`pair_modify ` mix, shift, table, and tail options. These pair styles do not write their information to :doc:`binary restart files `, since it is stored in potential files. Thus, you -need to re-specify the pair\_style and pair\_coeff commands in an input +need to re-specify the pair_style and pair_coeff commands in an input script that reads a restart file. These pair styles can only be used via the *pair* keyword of the :doc:`run_style respa ` command. They do not support the -*inner*\ , *middle*\ , *outer* keywords. +*inner* , *middle*, *outer* keywords. Restrictions """""""""""" diff --git a/doc/src/pair_atm.rst b/doc/src/pair_atm.rst index 6118b0943f..c8c4edeb54 100644 --- a/doc/src/pair_atm.rst +++ b/doc/src/pair_atm.rst @@ -1,13 +1,13 @@ -.. index:: pair\_style atm +.. index:: pair_style atm -pair\_style atm command -======================= +pair_style atm command +====================== Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style atm cutoff cutoff_triple @@ -18,13 +18,13 @@ Examples """""""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style atm 4.5 2.5 - pair_coeff \* \* \* 0.072 + pair_coeff * * * 0.072 pair_style hybrid/overlay lj/cut 6.5 atm 4.5 2.5 - pair_coeff \* \* lj/cut 1.0 1.0 + pair_coeff * * lj/cut 1.0 1.0 pair_coeff 1 1 atm 1 0.064 pair_coeff 1 1 atm 2 0.080 pair_coeff 1 2 atm 2 0.100 @@ -36,91 +36,95 @@ Description The *atm* style computes a 3-body :ref:`Axilrod-Teller-Muto ` potential for the energy E of a system of atoms as -.. image:: Eqs/pair_atm.jpg - :align: center +.. math:: -where nu is the three-body interaction strength. The distances -between pairs of atoms r12, r23, r31 and the angles gamma1, gamma2, -gamma3 are as shown in this diagram: + E & = \nu\frac{1+3\cos\gamma_1\cos\gamma_2\cos\gamma_3}{r_{12}^3r_{23}^3r_{31}^3} \\ + + +where :math:`\nu` is the three-body interaction strength. The distances +between pairs of atoms :math:`r_{12}`, :math:`r_{23}`, :math:`r_{31}` and the angles :math:`\gamma_1`, :math:`\gamma_2`, +:math:`\gamma_3` are as shown in this diagram: .. image:: JPG/pair_atm_dia.jpg :align: center -Note that for the interaction between a triplet of atoms I,J,K, there +Note that for the interaction between a triplet of atoms :math:`I,J,K`, there is no "central" atom. The interaction is symmetric with respect to -permutation of the three atoms. Thus the nu value is -the same for all those permutations of the atom types of I,J,K +permutation of the three atoms. Thus the :math:`\nu` value is +the same for all those permutations of the atom types of :math:`I,J,K` and needs to be specified only once, as discussed below. The *atm* potential is typically used in combination with a two-body potential using the :doc:`pair_style hybrid/overlay ` command as in the example above. -The potential for a triplet of atom is calculated only if all 3 -distances r12, r23, r31 between the 3 atoms satisfy rIJ < cutoff. -In addition, the product of the 3 distances r12\*r23\*r31 < -cutoff\_triple\^3 is required, which excludes from calculation the -triplets with small contribution to the interaction. +The potential for a triplet of atom is calculated only if all 3 distances +:math:`r_{12}`, :math:`r_{23}`, :math:`r_{31}` between the 3 atoms satisfy +:math:`r_{IJ} < \text{cutoff}`. In addition, the product of the 3 distances +:math:`r_{12} r_{23} r_{31}` < cutoff_triple :math:`^3` is required, which +excludes from calculation the triplets with small contribution to the +interaction. The following coefficients must be defined for each pair of atoms types via the :doc:`pair_coeff ` command as in the examples above, or in the restart files read by the :doc:`read_restart ` commands: -* K = atom type of the third atom (1 to Ntypes) -* nu = prefactor (energy/distance\^9 units) +* :math:`K` = atom type of the third atom (1 to :math:`N_{\text{types}}`) +* :math:`\nu` = prefactor (energy/distance\^9 units) -K can be specified in one of two ways. An explicit numeric value can -be used, as in the 2nd example above. J <= K is required. LAMMPS -sets the coefficients for the other 5 symmetric interactions to the -same values. E.g. if I = 1, J = 2, K = 3, then these 6 values are set -to the specified nu: nu123, nu132, nu213, nu231, nu312, nu321. This -enforces the symmetry discussed above. +:math:`K` can be specified in one of two ways. An explicit numeric value can +be used, as in the 2nd example above. :math:`J \leq K` is required. LAMMPS +sets the coefficients for the other 5 symmetric interactions to the same +values. E.g. if :math:`I = 1`, :math:`J = 2`, :math:`K = 3`, then these 6 +values are set to the specified :math:`\nu`: :math:`\nu_{123}`, +:math:`\nu_{132}`, :math:`\nu_{213}`, :math:`\nu_{231}`, :math:`\nu_{312}`, +:math:`\nu_{321}`. This enforces the symmetry discussed above. A wildcard asterisk can be used for K to set the coefficients for multiple triplets of atom types. This takes the form "\*" or "\*n" or -"n\*" or "m\*n". If N = the number of atom types, then an asterisk with -no numeric values means all types from 1 to N. A leading asterisk -means all types from 1 to n (inclusive). A trailing asterisk means -all types from n to N (inclusive). A middle asterisk means all types -from m to n (inclusive). Note that only type triplets with J <= K are -considered; if asterisks imply type triplets where K < J, they are +"n\*" or "m\*n". If :math:`N` equals the number of atom types, then an asterisk with +no numeric values means all types from 1 to :math:`N`. A leading asterisk +means all types from 1 to :math:`n` (inclusive). A trailing asterisk means +all types from :math:`n` to :math:`N` (inclusive). A middle asterisk means all types +from :math:`m` to :math:`n` (inclusive). Note that only type triplets with :math:`J \leq K` are +considered; if asterisks imply type triplets where :math:`K < J`, they are ignored. -Note that a pair\_coeff command can override a previous setting for the -same I,J,K triplet. For example, these commands set nu for all I,J.K -triplets, then overwrite nu for just the I,J,K = 2,3,4 triplet: +Note that a pair_coeff command can override a previous setting for the +same :math:`I,J,K` triplet. For example, these commands set :math:`\nu` for all :math:`I,J.K` +triplets, then overwrite nu for just the :math:`I,J,K = 2,3,4` triplet: -.. parsed-literal:: +.. code-block:: LAMMPS - pair_coeff \* \* \* 0.25 + pair_coeff * * * 0.25 pair_coeff 2 3 4 0.1 Note that for a simulation with a single atom type, only a single entry is required, e.g. -.. parsed-literal:: +.. code-block:: LAMMPS pair_coeff 1 1 1 0.25 -For a simulation with two atom types, four pair\_coeff commands will +For a simulation with two atom types, four pair_coeff commands will specify all possible nu values: -.. parsed-literal:: +.. code-block:: LAMMPS pair_coeff 1 1 1 nu1 pair_coeff 1 1 2 nu2 pair_coeff 1 2 2 nu3 pair_coeff 2 2 2 nu4 -For a simulation with three atom types, ten pair\_coeff commands will +For a simulation with three atom types, ten pair_coeff commands will specify all possible nu values: -.. parsed-literal:: +.. code-block:: LAMMPS pair_coeff 1 1 1 nu1 pair_coeff 1 1 2 nu2 @@ -133,12 +137,12 @@ specify all possible nu values: pair_coeff 2 3 3 nu9 pair_coeff 3 3 3 nu10 -By default the nu value for all triplets is set to 0.0. Thus it is -not required to provide pair\_coeff commands that enumerate triplet -interactions for all K types. If some I,J,K combination is not +By default the :math:`\nu` value for all triplets is set to 0.0. Thus it is +not required to provide pair_coeff commands that enumerate triplet +interactions for all :math:`K` types. If some :math:`I,J,K` combination is not specified, then there will be no 3-body ATM interactions for that combination and all its permutations. However, as with all pair -styles, it is required to specify a pair\_coeff command for all I,J +styles, it is required to specify a pair_coeff command for all :math:`I,J` combinations, else an error will result. @@ -150,16 +154,16 @@ combinations, else an error will result. This pair styles do not support the :doc:`pair_modify ` mix, shift, table, and tail options. -This pair style writes its information to :doc:`binary restart files `, so pair\_style and pair\_coeff commands do not need -to be specified in an input script that reads a restart file. -However, if the *atm* potential is used in combination with other -potentials using the :doc:`pair_style hybrid/overlay ` -command then pair\_coeff commands need to be re-specified -in the restart input script. +This pair style writes its information to :doc:`binary restart files +`, so pair_style and pair_coeff commands do not need to be specified +in an input script that reads a restart file. However, if the *atm* potential +is used in combination with other potentials using the :doc:`pair_style +hybrid/overlay ` command then pair_coeff commands need to be +re-specified in the restart input script. This pair style can only be used via the *pair* keyword of the :doc:`run_style respa ` command. It does not support the -*inner*\ , *middle*\ , *outer* keywords. +*inner* , *middle* , *outer* keywords. ---------- diff --git a/doc/src/pair_beck.rst b/doc/src/pair_beck.rst index 6a407e11a9..88abfe9798 100644 --- a/doc/src/pair_beck.rst +++ b/doc/src/pair_beck.rst @@ -1,19 +1,19 @@ -.. index:: pair\_style beck +.. index:: pair_style beck -pair\_style beck command -======================== +pair_style beck command +======================= -pair\_style beck/gpu command -============================ +pair_style beck/gpu command +=========================== -pair\_style beck/omp command -============================ +pair_style beck/omp command +=========================== Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style beck Rc @@ -23,10 +23,10 @@ Examples """""""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style beck 8.0 - pair_coeff \* \* 399.671876712 0.0000867636112694 0.675 4.390 0.0003746 + pair_coeff * * 399.671876712 0.0000867636112694 0.675 4.390 0.0003746 pair_coeff 1 1 399.671876712 0.0000867636112694 0.675 4.390 0.0003746 6.0 Description @@ -36,8 +36,10 @@ Style *beck* computes interactions based on the potential by :ref:`(Beck) `, originally designed for simulation of Helium. It includes truncation at a cutoff distance Rc. -.. image:: Eqs/pair_beck.jpg - :align: center +.. math:: + + E(r) &= A \exp\left[-\alpha r - \beta r^6\right] - \frac{B}{\left(r^2+a^2\right)^3} \left(1+\frac{2.709+3a^2}{r^2+a^2}\right) \qquad r < R_c \\ + The following coefficients must be defined for each pair of atoms types via the :doc:`pair_coeff ` command as in the examples @@ -45,15 +47,15 @@ above, or in the data file or restart files read by the :doc:`read_data ` or :doc:`read_restart ` commands. -* A (energy units) -* B (energy-distance\^6 units) -* a (distance units) -* alpha (1/distance units) -* beta (1/distance\^6 units) +* :math:`A` (energy units) +* :math:`B` (energy-distance\^6 units) +* :math:`a` (distance units) +* :math:`\alpha` (1/distance units) +* :math:`\beta` (1/distance\^6 units) * cutoff (distance units) The last coefficient is optional. If not specified, the global cutoff -Rc is used. +:math:`R_c` is used. ---------- @@ -108,7 +110,7 @@ This pair style can only be used via the *pair* keyword of the Restrictions """""""""""" - none +none Related commands """""""""""""""" diff --git a/doc/src/pair_body_nparticle.rst b/doc/src/pair_body_nparticle.rst index 1214890070..edfd4f3ab2 100644 --- a/doc/src/pair_body_nparticle.rst +++ b/doc/src/pair_body_nparticle.rst @@ -1,13 +1,13 @@ -.. index:: pair\_style body/nparticle +.. index:: pair_style body/nparticle -pair\_style body/nparticle command -================================== +pair_style body/nparticle command +================================= Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style body/nparticle cutoff @@ -17,10 +17,10 @@ Examples """""""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style body/nparticle 3.0 - pair_coeff \* \* 1.0 1.0 + pair_coeff * * 1.0 1.0 pair_coeff 1 1 1.0 1.5 2.5 Description @@ -67,11 +67,15 @@ The interaction between two sub-particles, or a sub-particle and point particle, or between two point particles is computed as a Lennard-Jones interaction, using the standard formula -.. image:: Eqs/pair_lj.jpg - :align: center +.. math:: -where Rc is the cutoff. As explained above, an interaction involving -one or two body sub-particles may be computed even for r > Rc. + E & = 4 \epsilon \left[ \left(\frac{\sigma}{r}\right)^{12} - + \left(\frac{\sigma}{r}\right)^6 \right] + \qquad r < R_c \\ + + +where :math:`R_c` is the cutoff. As explained above, an interaction involving +one or two body sub-particles may be computed even for :math:`r > R_c`. For style *body*\ , the following coefficients must be defined for each pair of atoms types via the :doc:`pair_coeff ` command as in @@ -79,8 +83,8 @@ the examples above, or in the data file or restart files read by the :doc:`read_data ` or :doc:`read_restart ` commands: -* epsilon (energy units) -* sigma (distance units) +* :math:`\epsilon` (energy units) +* :math:`\sigma` (distance units) * cutoff (distance units) The last coefficient is optional. If not specified, the global cutoff @@ -94,7 +98,7 @@ is used. For atom type pairs I,J and I != J, the epsilon and sigma coefficients and cutoff distance for all of this pair style can be mixed. The -default mix value is *geometric*\ . See the "pair\_modify" command for +default mix value is *geometric*\ . See the :doc:`pair_modify ` command for details. This pair style does not support the :doc:`pair_modify ` diff --git a/doc/src/pair_body_rounded_polygon.rst b/doc/src/pair_body_rounded_polygon.rst index 9a042b5b5a..652c618d4a 100644 --- a/doc/src/pair_body_rounded_polygon.rst +++ b/doc/src/pair_body_rounded_polygon.rst @@ -1,16 +1,19 @@ -.. index:: pair\_style body/rounded/polygon +.. index:: pair_style body/rounded/polygon -pair\_style body/rounded/polygon command -======================================== +pair_style body/rounded/polygon command +======================================= Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style body/rounded/polygon c_n c_t mu delta_ua cutoff + +.. parsed-literal:: + c_n = normal damping coefficient c_t = tangential damping coefficient mu = normal friction coefficient during gross sliding @@ -21,10 +24,10 @@ Examples """""""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style body/rounded/polygon 20.0 5.0 0.0 1.0 0.5 - pair_coeff \* \* 100.0 1.0 + pair_coeff * * 100.0 1.0 pair_coeff 1 1 100.0 1.0 Description @@ -33,7 +36,8 @@ Description Style *body/rounded/polygon* is for use with 2d models of body particles of style *rounded/polygon*\ . It calculates pairwise body/body interactions which can include body particles modeled as -1-vertex circular disks with a specified diameter. See the :doc:`Howto body ` doc page for more details on using body +1-vertex circular disks with a specified diameter. See the +:doc:`Howto body ` doc page for more details on using body rounded/polygon particles. This pairwise interaction between rounded polygons is described in @@ -54,34 +58,44 @@ their respective rounded surfaces, not by the separation of the vertices and edges themselves. This means that the specified cutoff in the pair\_style command is the -cutoff distance, r\_c, for the surface separation, \delta\_n (see figure +cutoff distance, :math:`r_c`, for the surface separation, :math:`\delta_n` (see figure below). This is the distance at which two particles no longer -interact. If r\_c is specified as 0.0, then it is a contact-only +interact. If :math:`r_c` is specified as 0.0, then it is a contact-only interaction. I.e. the two particles must overlap in order to exert a -repulsive force on each other. If r\_c > 0.0, then the force between +repulsive force on each other. If :math:`r_c > 0.0`, then the force between two particles will be attractive for surface separations from 0 to -r\_c, and repulsive once the particles overlap. +:math:`r_c`, and repulsive once the particles overlap. Note that unlike for other pair styles, the specified cutoff is not the distance between the centers of two particles at which they stop interacting. This center-to-center distance depends on the shape and size of the two particles and their relative orientation. LAMMPS takes that into account when computing the surface separation distance -and applying the r\_c cutoff. +and applying the :math:`r_c` cutoff. The forces between vertex-vertex, vertex-edge, and edge-edge overlaps are given by: -.. image:: Eqs/pair_body_rounded.jpg - :align: center +.. math:: + + F_n &= \begin{cases} + k_n \delta_n - c_n v_n & \delta_n \le 0 \\ + -k_{na} \delta_n - c_n v_n & 0 < \delta_n \le r_c \\ + 0 & \delta_n > r_c \\ + \end{cases} \\ + F_t &= \begin{cases} + \mu k_n \delta_n - c_t v_t & \delta_n \le 0 \\ + 0 & \delta_n > 0 + \end{cases} .. image:: JPG/pair_body_rounded.jpg :align: center -Note that F\_n and F\_t are functions of the surface separation \delta\_n -= d - (R\_i + R\_j). In this model, when (R\_i + R\_j) < d < (R\_i + R\_j) -+ r\_c, that is, 0 < \delta\_n < r\_c, the cohesive region of the two -surfaces overlap and the two surfaces are attractive to each other. +Note that :math:`F_n` and :math:`F_t` are functions of the surface separation +:math:`\delta_n = d - (R_i + R_j)`. In this model, when +:math:`(R_i + R_j) < d < (R_i + R_j) + r_c`, that is, :math:`0 < \delta_n < r_c`, +the cohesive region of the two surfaces overlap and the two surfaces are +attractive to each other. In :ref:`Fraige `, the tangential friction force between two particles that are in contact is modeled differently prior to gross @@ -98,12 +112,12 @@ The following coefficients must be defined for each pair of atom types via the :doc:`pair_coeff ` command as in the examples above, or in the data file read by the :doc:`read_data ` command: -* k\_n (energy/distance\^2 units) -* k\_na (energy/distance\^2 units) +* :math:`k_n` (energy/distance\^2 units) +* :math:`k_{na}` (energy/distance\^2 units) -Effectively, k\_n and k\_na are the slopes of the red lines in the plot -above for force versus surface separation, for \delta\_n < 0 and 0 < -\delta\_n < r\_c respectively. +Effectively, :math:`k_n` and :math:`k_{na}` are the slopes of the red lines in the plot +above for force versus surface separation, for :math:`\delta_n < 0` and +:math:`0 < \delta_n < r_c` respectively. **Mixing, shift, table, tail correction, restart, rRESPA info**\ : @@ -120,7 +134,6 @@ This pair style can only be used via the *pair* keyword of the Restrictions """""""""""" - These pair styles are part of the BODY package. They are only enabled if LAMMPS was built with that package. See the :doc:`Build package ` doc page for more info. diff --git a/doc/src/pair_body_rounded_polyhedron.rst b/doc/src/pair_body_rounded_polyhedron.rst index 23623a640e..20dbbafb13 100644 --- a/doc/src/pair_body_rounded_polyhedron.rst +++ b/doc/src/pair_body_rounded_polyhedron.rst @@ -1,16 +1,18 @@ -.. index:: pair\_style body/rounded/polyhedron +.. index:: pair_style body/rounded/polyhedron -pair\_style body/rounded/polyhedron command -=========================================== +pair_style body/rounded/polyhedron command +========================================== Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style body/rounded/polyhedron c_n c_t mu delta_ua cutoff +.. parsed-literal:: + c_n = normal damping coefficient c_t = tangential damping coefficient mu = normal friction coefficient during gross sliding @@ -21,10 +23,10 @@ Examples """""""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style body/rounded/polyhedron 20.0 5.0 0.0 1.0 0.5 - pair_coeff \* \* 100.0 1.0 + pair_coeff * * 100.0 1.0 pair_coeff 1 1 100.0 1.0 Description @@ -33,7 +35,8 @@ Description Style *body/rounded/polygon* is for use with 3d models of body particles of style *rounded/polyhedron*\ . It calculates pairwise body/body interactions which can include body particles modeled as -1-vertex spheres with a specified diameter. See the :doc:`Howto body ` doc page for more details on using body +1-vertex spheres with a specified diameter. See the +:doc:`Howto body ` doc page for more details on using body rounded/polyhedron particles. This pairwise interaction between the rounded polyhedra is described @@ -54,26 +57,35 @@ separation of their respective rounded surfaces, not by the separation of the vertices, edges, and faces themselves. This means that the specified cutoff in the pair\_style command is the -cutoff distance, r\_c, for the surface separation, \delta\_n (see figure +cutoff distance, :math:`r_c`, for the surface separation, :math:`\delta_n` (see figure below). This is the distance at which two particles no longer -interact. If r\_c is specified as 0.0, then it is a contact-only +interact. If :math:`r_c` is specified as 0.0, then it is a contact-only interaction. I.e. the two particles must overlap in order to exert a -repulsive force on each other. If r\_c > 0.0, then the force between +repulsive force on each other. If :math:`r_c > 0.0`, then the force between two particles will be attractive for surface separations from 0 to -r\_c, and repulsive once the particles overlap. +:math:`r_c`, and repulsive once the particles overlap. Note that unlike for other pair styles, the specified cutoff is not the distance between the centers of two particles at which they stop interacting. This center-to-center distance depends on the shape and size of the two particles and their relative orientation. LAMMPS takes that into account when computing the surface separation distance -and applying the r\_c cutoff. +and applying the :math:`r_c` cutoff. The forces between vertex-vertex, vertex-edge, vertex-face, edge-edge, and edge-face overlaps are given by: -.. image:: Eqs/pair_body_rounded.jpg - :align: center +.. math:: + + F_n &= \begin{cases} + k_n \delta_n - c_n v_n, & \delta_n \le 0 \\ + -k_{na} \delta_n - c_n v_n & 0 < \delta_n \le r_c \\ + 0 & \delta_n > r_c \\ + \end{cases} \\ + F_t &= \begin{cases} + \mu k_n \delta_n - c_t v_t & \delta_n \le 0 \\ + 0 & \delta_n > 0 + \end{cases} .. image:: JPG/pair_body_rounded.jpg :align: center @@ -93,20 +105,21 @@ The following coefficients must be defined for each pair of atom types via the :doc:`pair_coeff ` command as in the examples above, or in the data file read by the :doc:`read_data ` command: -* k\_n (energy/distance\^2 units) -* k\_na (energy/distance\^2 units) +* :math:`k_n` (energy/distance\^2 units) +* :math:`k_{na}` (energy/distance\^2 units) -Effectively, k\_n and k\_na are the slopes of the red lines in the plot -above for force versus surface separation, for \delta\_n < 0 and 0 < -\delta\_n < r\_c respectively. +Effectively, :math:`k_n` and :math:`k_{na}` are the slopes of the red lines in the plot +above for force versus surface separation, for :math:`\delta_n` < 0 and +:math:`0 < \delta_n < r_c` respectively. **Mixing, shift, table, tail correction, restart, rRESPA info**\ : This pair style does not support the :doc:`pair_modify ` mix, shift, table, and tail options. -This pair style does not write its information to :doc:`binary restart files `. Thus, you need to re-specify the pair\_style and -pair\_coeff commands in an input script that reads a restart file. +This pair style does not write its information to :doc:`binary restart files `. +Thus, you need to re-specify the pair\_style and pair\_coeff +commands in an input script that reads a restart file. This pair style can only be used via the *pair* keyword of the :doc:`run_style respa ` command. It does not support the diff --git a/doc/src/pair_fep_soft.rst b/doc/src/pair_fep_soft.rst index 20bd84a567..263b52cacf 100644 --- a/doc/src/pair_fep_soft.rst +++ b/doc/src/pair_fep_soft.rst @@ -187,8 +187,14 @@ are suited for "alchemical" free energy calculations using the :doc:`fix adapt/f The *lj/cut/soft* style and related sub-styles compute the 12-6 Lennard-Jones and Coulomb potentials modified by a soft core, with the functional form -.. image:: Eqs/pair_lj_soft.jpg - :align: center +.. math:: + + E = \lambda^n 4 \epsilon \left\{ + \frac{1}{ \left[ \alpha_{\mathrm{LJ}} (1-\lambda)^2 + + \left( \displaystyle\frac{r}{\sigma} \right)^6 \right]^2 } - + \frac{1}{ \alpha_{\mathrm{LJ}} (1-\lambda)^2 + + \left( \displaystyle\frac{r}{\sigma} \right)^6 } + \right\} \qquad r < r_c The *lj/class2/soft* style is a 9-6 potential with the exponent of the denominator of the first term in brackets taking the value 1.5 instead of 2 @@ -197,25 +203,30 @@ denominator of the first term in brackets taking the value 1.5 instead of 2 Coulomb interactions can also be damped with a soft core at short distance, -.. image:: Eqs/pair_coul_soft.jpg - :align: center +.. math:: -In the Coulomb part C is an energy-conversion constant, q\_i and q\_j -are the charges on the 2 atoms, and epsilon is the dielectric constant -which can be set by the :doc:`dielectric ` command. + E = \lambda^n \frac{ C q_i q_j}{\epsilon \left[ \alpha_{\mathrm{C}} + (1-\lambda)^2 + r^2 \right]^{1/2}} \qquad r < r_c -The coefficient lambda is an activation parameter. When lambda = 1 the pair -potential is identical to a Lennard-Jones term or a Coulomb term or a -combination of both. When lambda = 0 the interactions are deactivated. The -transition between these two extrema is smoothed by a soft repulsive core in -order to avoid singularities in potential energy and forces when sites are -created or annihilated and can overlap :ref:`(Beutler) `. +In the Coulomb part :math:`C` is an energy-conversion constant, :math:`q_i` and +:math:`q_j` are the charges on the 2 atoms, and epsilon is the dielectric +constant which can be set by the :doc:`dielectric ` command. -The parameters n, alpha\_LJ and alpha\_C are set in the -:doc:`pair_style ` command, before the cutoffs. Usual choices for the -exponent are n = 2 or n = 1. For the remaining coefficients alpha\_LJ = 0.5 and -alpha\_C = 10 Angstrom\^2 are appropriate choices. Plots of the 12/6 LJ and -Coulomb terms are shown below, for lambda ranging from 1 to 0 every 0.1. +The coefficient lambda is an activation parameter. When :math:`\lambda = 1` the +pair potential is identical to a Lennard-Jones term or a Coulomb term or a +combination of both. When :math:`\lambda = 0` the interactions are +deactivated. The transition between these two extrema is smoothed by a soft +repulsive core in order to avoid singularities in potential energy and forces +when sites are created or annihilated and can overlap :ref:`(Beutler) +`. + +The parameters :math:`n`, :math:`\alpha_\mathrm{LJ}` and +:math:`\alpha_\mathrm{C}` are set in the :doc:`pair_style ` command, +before the cutoffs. Usual choices for the exponent are :math:`n = 2` or +:math:`n = 1`. For the remaining coefficients :math:`\alpha_\mathrm{LJ} = 0.5` +and :math:`\alpha_\mathrm{C} = 10~\text{A}^2` are appropriate choices. Plots of +the 12-6 LJ and Coulomb terms are shown below, for lambda ranging from 1 to 0 +every 0.1. .. image:: JPG/lj_soft.jpg .. image:: JPG/coul_soft.jpg @@ -225,12 +236,12 @@ For the *lj/cut/coul/cut/soft* or *lj/cut/coul/long/soft* pair styles, as well as for the equivalent *class2* versions, the following coefficients must be defined for each pair of atoms types via the :doc:`pair_coeff ` command as in the examples above, or in the data file or restart files read by -the :doc:`read_data ` or :doc:`read_restart ` commands, or -by mixing as described below: +the :doc:`read_data ` or :doc:`read_restart ` commands, +or by mixing as described below: -* epsilon (energy units) -* sigma (distance units) -* lambda (activation parameter, between 0 and 1) +* :math:`\epsilon` (energy units) +* :math:`\sigma` (distance units) +* :math:`\lambda` (activation parameter, between 0 and 1) * cutoff1 (distance units) * cutoff2 (distance units) @@ -245,61 +256,62 @@ since it has no Coulombic terms. For the *coul/cut/soft* and specified. Style *lj/cut/tip4p/long/soft* implements a soft-core version of the TIP4P water -model. The usage of the TIP4P pair style is documented in the -:doc:`pair_lj ` styles. In the soft version the parameters n, alpha\_LJ -and alpha\_C are set in the :doc:`pair_style ` command, after the -specific parameters of the TIP4P water model and before the cutoffs. The -activation parameter lambda is supplied as an argument of the -:doc:`pair_coeff ` command, after epsilon and sigma and before the -optional cutoffs. +model. The usage of the TIP4P pair style is documented in the :doc:`pair_lj +` styles. In the soft version the parameters :math:`n`, +:math:`\alpha_\mathrm{LJ}` and :math:`\alpha_\mathrm {C}` are set in the +:doc:`pair_style ` command, after the specific parameters of the +TIP4P water model and before the cutoffs. The activation parameter lambda is +supplied as an argument of the :doc:`pair_coeff ` command, after +epsilon and sigma and before the optional cutoffs. Style *lj/charmm/coul/long/soft* implements a soft-core version of the modified -12-6 LJ potential used in CHARMM and documented in the -:doc:`pair_style lj/charmm/coul/long ` style. In the soft version the parameters n, -alpha\_LJ and alpha\_C are set in the :doc:`pair_style ` command, before -the global cutoffs. The activation parameter lambda is introduced as an argument -of the :doc:`pair_coeff ` command, after epsilon and sigma and -before the optional eps14 and sigma14. +12-6 LJ potential used in CHARMM and documented in the :doc:`pair_style +lj/charmm/coul/long ` style. In the soft version the parameters +:math:`n`, :math:`\alpha_\mathrm{LJ}` and :math:`\alpha_\mathrm{C}` are set in +the :doc:`pair_style ` command, before the global cutoffs. The +activation parameter lambda is introduced as an argument of the :doc:`pair_coeff +` command, after :math:`\epsilon` and :math:`\sigma` and before the +optional eps14 and sigma14. Style *lj/class2/soft* implements a soft-core version of the 9-6 potential in -:doc:`pair_style lj/class2 `. In the soft version the parameters n, alpha\_LJ -and alpha\_C are set in the :doc:`pair_style ` command, before the -global cutoffs. The activation parameter lambda is introduced as an argument of -the the :doc:`pair_coeff ` command, after epsilon and sigma and before -the optional cutoffs. +:doc:`pair_style lj/class2 `. In the soft version the parameters +:math:`n`, :math:`\alpha_\mathrm{LJ}` and :math:`\alpha_\mathrm{C}` are set in the +:doc:`pair_style ` command, before the global cutoffs. The +activation parameter lambda is introduced as an argument of the the +:doc:`pair_coeff ` command, after :math:`\epsilon` and +:math:`\sigma` and before the optional cutoffs. -The *coul/cut/soft*\ , *coul/long/soft* and *tip4p/long/soft* sub-styles -are designed to be combined with other pair potentials via the -:doc:`pair_style hybrid/overlay ` command. This is because -they have no repulsive core. Hence, if used by themselves, there will -be no repulsion to keep two oppositely charged particles from -overlapping each other. In this case, if lambda = 1, a singularity may -occur. These sub-styles are suitable to represent charges embedded in -the Lennard-Jones radius of another site (for example hydrogen atoms -in several water models). +The *coul/cut/soft*\ , *coul/long/soft* and *tip4p/long/soft* sub-styles are +designed to be combined with other pair potentials via the :doc:`pair_style +hybrid/overlay ` command. This is because they have no repulsive +core. Hence, if used by themselves, there will be no repulsion to keep two +oppositely charged particles from overlapping each other. In this case, if +:math:`\lambda = 1`, a singularity may occur. These sub-styles are suitable to +represent charges embedded in the Lennard-Jones radius of another site (for +example hydrogen atoms in several water models). .. note:: - When using the soft-core Coulomb potentials with long-range - solvers (\ *coul/long/soft*\ , *lj/cut/coul/long/soft*\ , etc.) in a free - energy calculation in which sites holding electrostatic charges are - being created or annihilated (using :doc:`fix adapt/fep ` - and :doc:`compute fep `) it is important to adapt both the - lambda activation parameter (from 0 to 1, or the reverse) and the - value of the charge (from 0 to its final value, or the reverse). This - ensures that long-range electrostatic terms (kspace) are correct. It - is not necessary to use soft-core Coulomb potentials if the van der - Waals site is present during the free-energy route, thus avoiding - overlap of the charges. Examples are provided in the LAMMPS source - directory tree, under examples/USER/fep. + When using the soft-core Coulomb potentials with long-range solvers (\ + *coul/long/soft*\ , *lj/cut/coul/long/soft*\ , etc.) in a free energy + calculation in which sites holding electrostatic charges are being created or + annihilated (using :doc:`fix adapt/fep ` and :doc:`compute fep + `) it is important to adapt both the :math:`\lambda` activation + parameter (from 0 to 1, or the reverse) and the value of the charge (from 0 + to its final value, or the reverse). This ensures that long-range + electrostatic terms (kspace) are correct. It is not necessary to use + soft-core Coulomb potentials if the van der Waals site is present during the + free-energy route, thus avoiding overlap of the charges. Examples are + provided in the LAMMPS source directory tree, under examples/USER/fep. .. note:: - To avoid division by zero do not set sigma = 0 in the *lj/cut/soft* and - related styles; use the lambda parameter instead to activate/deactivate - interactions, or use epsilon = 0 and sigma = 1. Alternatively, when sites do not - interact though the Lennard-Jones term the *coul/long/soft* or similar sub-style - can be used via the :doc:`pair_style hybrid/overlay ` command. + To avoid division by zero do not set :math:`\sigma = 0` in the *lj/cut/soft* + and related styles; use the lambda parameter instead to activate/deactivate + interactions, or use :math:`\epsilon = 0` and :math:`\sigma = 1`. + Alternatively, when sites do not interact though the Lennard-Jones term + the *coul/long/soft* or similar sub-style can be used via the + :doc:`pair_style hybrid/overlay ` command. ---------- @@ -309,15 +321,25 @@ The *morse/soft* variant modifies the :doc:`pair_morse ` style at short range to have a soft core. The functional form differs from that of the *lj/soft* styles, and is instead given by: -.. image:: Eqs/pair_morse_soft.jpg - :align: center +.. math:: + + \begin{split} + s(\lambda) =& (1 - \lambda) / (1 - \lambda_f), \qquad B = -2D e^{-2 \alpha + r_0} (e^{\alpha r_0} - 1) / 3 \\ + E =& D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} \right] + + s(\lambda) B e^{-3\alpha(r-r_0)}, \qquad \hspace{2.85em}\lambda \geq + \lambda_f,\quad r < r_c \\ + E =& \left( D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} + \right] + B e^{-3\alpha(r-r_0)} \right)(\lambda/\lambda_f)^n, \qquad \lambda + < \lambda_f,\quad r < r_c + \end{split} The *morse/soft* style requires the following pair coefficients: -* D0 (energy units) -* alpha (1/distance units) -* r0 (distance units) -* lambda (unitless, between 0.0 and 1.0) +* :math:`D_0` (energy units) +* :math:`\alpha` (1/distance units) +* :math:`r_0` (distance units) +* :math:`\lambda` (unitless, between 0.0 and 1.0) * cutoff (distance units) The last coefficient is optional. If not specified, the global morse cutoff is @@ -338,9 +360,10 @@ These accelerated styles are part of the GPU, USER-INTEL, KOKKOS, USER-OMP and OPT packages, respectively. They are only enabled if LAMMPS was built with those packages. See the :doc:`Build package ` doc page for more info. -You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the :doc:`-suffix command-line switch ` when you invoke LAMMPS, or you can use the -:doc:`suffix ` command in your input script. +You can specify the accelerated styles explicitly in your input script by +including their suffix, or you can use the :doc:`-suffix command-line switch +` when you invoke LAMMPS, or you can use the :doc:`suffix ` +command in your input script. See the :doc:`Speed packages ` doc page for more instructions on how to use the accelerated styles effectively. @@ -351,16 +374,16 @@ instructions on how to use the accelerated styles effectively. **Mixing, shift, tail correction, restart info**\ : -The different versions of the *lj/cut/soft* pair styles support mixing. For atom -type pairs I,J and I != J, the epsilon and sigma coefficients and cutoff -distance for these pair style can be mixed. The default mix value is -*geometric* for 12-6 styles. +The different versions of the *lj/cut/soft* pair styles support mixing. For +atom type pairs I,J and I != J, the :math:`\epsilon` and :math:`\sigma` +coefficients and cutoff distance for these pair style can be mixed. The default +mix value is *geometric* for 12-6 styles. -The mixing rule for epsilon and sigma for *lj/class2/soft* 9-6 potentials is to use the -*sixthpower* formulas. The :doc:`pair_modify mix ` setting is thus -ignored for class2 potentials for epsilon and sigma. However it is still -followed for mixing the cutoff distance. See the :doc:`pair_modify ` -command for details. +The mixing rule for epsilon and sigma for *lj/class2/soft* 9-6 potentials is to +use the *sixthpower* formulas. The :doc:`pair_modify mix ` setting +is thus ignored for class2 potentials for :math:`\epsilon` and +:math:`\sigma`. However it is still followed for mixing the cutoff distance. See +the :doc:`pair_modify ` command for details. The *morse/soft* pair style does not support mixing. Thus, coefficients for all LJ pairs must be specified explicitly. @@ -376,22 +399,25 @@ interaction. .. note:: - The analytical form of the tail corrections for energy and pressure used - in the *lj/cut/soft* potentials are approximate, being identical to that of the - corresponding non-soft potentials scaled by a factor lambda\^n. The errors due to - this approximation should be negligible. For example, for a cutoff of 2.5 sigma - this approximation leads to maximum relative errors in tail corrections of the - order of 1e-4 for energy and virial (alpha\_LJ = 0.5, n = 2). The error vanishes - when lambda approaches 0 or 1. Note that these are the errors affecting the - long-range tail (itself a correction to the interaction energy) which includes - other approximations, namely that the system is homogeneous (local density equal + The analytical form of the tail corrections for energy and pressure used in + the *lj/cut/soft* potentials are approximate, being identical to that of the + corresponding non-soft potentials scaled by a factor :math:`\lambda^n`. The + errors due to this approximation should be negligible. For example, for a + cutoff of :math:`2.5\sigma` this approximation leads to maximum relative + errors in tail corrections of the order of 1e-4 for energy and virial + (:math:`\alpha_\mathrm{LJ} = 0.5, n = 2`). The error vanishes when lambda + approaches 0 or 1. Note that these are the errors affecting the long-range + tail (itself a correction to the interaction energy) which includes other + approximations, namely that the system is homogeneous (local density equal the average density) beyond the cutoff. -The *morse/soft* pair style does not support the :doc:`pair_modify ` -tail option for adding long-range tail corrections to energy and pressure. +The *morse/soft* pair style does not support the :doc:`pair_modify +` tail option for adding long-range tail corrections to energy and +pressure. -All of these pair styles write information to :doc:`binary restart files `, so pair\_style and pair\_coeff commands do not need to be -specified in an input script that reads a restart file. +All of these pair styles write information to :doc:`binary restart files +`, so pair\_style and pair\_coeff commands do not need to be specified +in an input script that reads a restart file. ---------- diff --git a/doc/src/pair_nm.rst b/doc/src/pair_nm.rst index f8ae4f7a91..6d319c6d06 100644 --- a/doc/src/pair_nm.rst +++ b/doc/src/pair_nm.rst @@ -68,22 +68,25 @@ by :ref:`Clarke `, mainly used for ionic liquids. A site can represent a single atom or a united-atom site. The energy of an interaction has the following form: -.. image:: Eqs/pair_nm.jpg - :align: center +.. math:: -Rc is the cutoff. + E = \frac{E_0}{(n-m)} \left[ m \left(\frac{r_0}{r}\right)^n - n + \left(\frac{r_0}{r}\right)^m \right] \qquad r < r_c + +where :math:`r_c` is the cutoff. Style *nm/cut/coul/cut* adds a Coulombic pairwise interaction given by -.. image:: Eqs/pair_coulomb.jpg - :align: center +.. math:: -where C is an energy-conversion constant, Qi and Qj are the charges on -the 2 atoms, and epsilon is the dielectric constant which can be set -by the :doc:`dielectric ` command. If one cutoff is -specified in the pair\_style command, it is used for both the NM and -Coulombic terms. If two cutoffs are specified, they are used as -cutoffs for the NM and Coulombic terms respectively. + E = \frac{C q_i q_j}{\epsilon r} \qquad r < r_c + +where :math:`C` is an energy-conversion constant, :math:`q_i` and :math:`q_j` +are the charges on the 2 atoms, and epsilon is the dielectric constant which can +be set by the :doc:`dielectric ` command. If one cutoff is +specified in the pair\_style command, it is used for both the N-M and Coulombic +terms. If two cutoffs are specified, they are used as cutoffs for the N-M and +Coulombic terms respectively. Styles *nm/cut/coul/long* compute the same Coulombic interactions as style *nm/cut/coul/cut* except that an @@ -101,22 +104,22 @@ examples above, or in the data file or restart files read by the :doc:`read_data ` or :doc:`read_restart ` commands. -* E0 (energy units) -* r0 (distance units) -* n (unitless) -* m (unitless) +* :math:`E_0` (energy units) +* :math:`r_0` (distance units) +* :math:`n` (unitless) +* :math:`m` (unitless) * cutoff1 (distance units) * cutoff2 (distance units) The latter 2 coefficients are optional. If not specified, the global -NM and Coulombic cutoffs specified in the pair\_style command are used. -If only one cutoff is specified, it is used as the cutoff for both NM +N-M and Coulombic cutoffs specified in the pair\_style command are used. +If only one cutoff is specified, it is used as the cutoff for both N-M and Coulombic interactions for this type pair. If both coefficients -are specified, they are used as the NM and Coulombic cutoffs for this +are specified, they are used as the N-M and Coulombic cutoffs for this type pair. You cannot specify 2 cutoffs for style *nm*\ , since it has no Coulombic terms. -For *nm/cut/coul/long* only the NM cutoff can be specified since a +For *nm/cut/coul/long* only the N-M cutoff can be specified since a Coulombic cutoff cannot be specified for an individual I,J type pair. All type pairs use the same global Coulombic cutoff specified in the pair\_style command. @@ -140,7 +143,7 @@ the short-range portion of the long-range Coulombic interaction. All of the *nm* pair styles support the :doc:`pair_modify ` tail option for adding a long-range tail correction to the energy and -pressure for the NM portion of the pair interaction. +pressure for the N-M portion of the pair interaction. All of the *nm* pair styles write their information to :doc:`binary restart files `, so pair\_style and pair\_coeff commands do not need to be specified in an input script that reads a restart file. diff --git a/doc/src/pair_srp.rst b/doc/src/pair_srp.rst index a1138db382..822bd0dddb 100644 --- a/doc/src/pair_srp.rst +++ b/doc/src/pair_srp.rst @@ -56,19 +56,25 @@ Bonds of specified type *btype* interact with one another through a bond-pairwise potential, such that the force on bond *i* due to bond *j* is as follows -.. image:: Eqs/pair_srp1.jpg - :align: center +.. math:: -where *r* and *rij* are the distance and unit vector between the two -bonds. Note that *btype* can be specified as an asterisk "\*", which -case the interaction is applied to all bond types. The *mid* option -computes *r* and *rij* from the midpoint distance between bonds. The -*min* option computes *r* and *rij* from the minimum distance between -bonds. The force acting on a bond is mapped onto the two bond atoms -according to the lever rule, + F^{SRP}_{ij} & = C(1-r/r_c)\hat{r}_{ij} \qquad r < r_c + + +where *r* and :math:`\hat{r}_{ij}` are the distance and unit vector +between the two bonds. Note that *btype* can be specified as an +asterisk "\*", which case the interaction is applied to all bond types. +The *mid* option computes *r* and :math:`\hat{r}_{ij}` from the midpoint +distance between bonds. The *min* option computes *r* and +:math:`\hat{r}_{ij}` from the minimum distance between bonds. The force +acting on a bond is mapped onto the two bond atoms according to the +lever rule, + +.. math:: + + F_{i1}^{SRP} & = F^{SRP}_{ij}(L) \\ + F_{i2}^{SRP} & = F^{SRP}_{ij}(1-L) -.. image:: Eqs/pair_srp2.jpg - :align: center where *L* is the normalized distance from the atom to the point of closest approach of bond *i* and *j*\ . The *mid* option takes *L* as @@ -80,7 +86,7 @@ the data file or restart file read by the :doc:`read_data ` or :doc:`read_restart ` commands: * *C* (force units) -* *rc* (distance units) +* :math:`r_c` (distance units) The last coefficient is optional. If not specified, the global cutoff is used. @@ -114,7 +120,7 @@ Pair style *srp* turns off normalization of thermodynamic properties by particle number, as if the command :doc:`thermo_modify norm no ` had been issued. The pairwise energy associated with style *srp* is shifted to be zero -at the cutoff distance *rc*\ . +at the cutoff distance :math:`r_c`. ---------- @@ -127,7 +133,7 @@ This pair styles does not support mixing. This pair style does not support the :doc:`pair_modify ` shift option for the energy of the pair interaction. Note that as discussed above, the energy term is already shifted to be 0.0 at the -cutoff distance *rc*\ . +cutoff distance :math:`r_c`. The :doc:`pair_modify ` table option is not relevant for this pair style. diff --git a/doc/src/pair_sw.rst b/doc/src/pair_sw.rst index 425dcf1f16..2df9958ba1 100644 --- a/doc/src/pair_sw.rst +++ b/doc/src/pair_sw.rst @@ -39,12 +39,23 @@ Description The *sw* style computes a 3-body :ref:`Stillinger-Weber ` potential for the energy E of a system of atoms as -.. image:: Eqs/pair_sw.jpg - :align: center +.. math:: -where phi2 is a two-body term and phi3 is a three-body term. The -summations in the formula are over all neighbors J and K of atom I -within a cutoff distance = a\*sigma. + E & = \sum_i \sum_{j > i} \phi_2 (r_{ij}) + + \sum_i \sum_{j \neq i} \sum_{k > j} + \phi_3 (r_{ij}, r_{ik}, \theta_{ijk}) \\ + \phi_2(r_{ij}) & = A_{ij} \epsilon_{ij} \left[ B_{ij} (\frac{\sigma_{ij}}{r_{ij}})^{p_{ij}} - + (\frac{\sigma_{ij}}{r_{ij}})^{q_{ij}} \right] + \exp \left( \frac{\sigma_{ij}}{r_{ij} - a_{ij} \sigma_{ij}} \right) \\ + \phi_3(r_{ij},r_{ik},\theta_{ijk}) & = \lambda_{ijk} \epsilon_{ijk} \left[ \cos \theta_{ijk} - + \cos \theta_{0ijk} \right]^2 + \exp \left( \frac{\gamma_{ij} \sigma_{ij}}{r_{ij} - a_{ij} \sigma_{ij}} \right) + \exp \left( \frac{\gamma_{ik} \sigma_{ik}}{r_{ik} - a_{ik} \sigma_{ik}} \right) + + +where :math:`\phi_2` is a two-body term and :math:`\phi_3` is a +three-body term. The summations in the formula are over all neighbors J +and K of atom I within a cutoff distance :math:`a `\sigma`. Only a single pair\_coeff command is used with the *sw* style which specifies a Stillinger-Weber potential file with parameters for all @@ -86,24 +97,25 @@ and three-body coefficients in the formula above: * element 1 (the center atom in a 3-body interaction) * element 2 * element 3 -* epsilon (energy units) -* sigma (distance units) +* :math:`\epsilon` (energy units) +* :math:`\sigma` (distance units) * a -* lambda -* gamma -* costheta0 +* :math:`\lambda` +* :math:`\gamma` +* :math:`\cos\theta_0` * A * B * p * q * tol -The A, B, p, and q parameters are used only for two-body -interactions. The lambda and costheta0 parameters are used only for -three-body interactions. The epsilon, sigma and a parameters are used -for both two-body and three-body interactions. gamma is used only in the -three-body interactions, but is defined for pairs of atoms. -The non-annotated parameters are unitless. +The A, B, p, and q parameters are used only for two-body interactions. +The :math:`\lambda` and :math:`\cos\theta_0` parameters are used only +for three-body interactions. The :math:`\epsilon`, :math:`\sigma` and +*a* parameters are used for both two-body and three-body +interactions. :math:`\gamma` is used only in the three-body +interactions, but is defined for pairs of atoms. The non-annotated +parameters are unitless. LAMMPS introduces an additional performance-optimization parameter tol that is used for both two-body and three-body interactions. In the @@ -141,9 +153,9 @@ are usually defined by simple formulas involving two sets of pair-wise parameters, corresponding to the ij and ik pairs, where i is the center atom. The user must ensure that the correct combining rule is used to calculate the values of the three-body parameters for -alloys. Note also that the function phi3 contains two exponential +alloys. Note also that the function :math:`\phi_3` contains two exponential screening factors with parameter values from the ij pair and ik -pairs. So phi3 for a C atom bonded to a Si atom and a second C atom +pairs. So :math:`\phi_3` for a C atom bonded to a Si atom and a second C atom will depend on the three-body parameters for the CSiC entry, and also on the two-body parameters for the CCC and CSiSi entries. Since the order of the two neighbors is arbitrary, the three-body parameters for @@ -152,8 +164,8 @@ parameters for entries SiCC and CSiSi should also be the same. The parameters used only for two-body interactions (A, B, p, and q) in entries whose 2nd and 3rd element are different (e.g. SiCSi) are not used for anything and can be set to 0.0 if desired. -This is also true for the parameters in phi3 that are -taken from the ij and ik pairs (sigma, a, gamma) +This is also true for the parameters in :math:`\phi_3` that are +taken from the ij and ik pairs (:math:`\sigma`, *a*\ , :math:`\gamma`) ---------- diff --git a/doc/src/pair_tersoff.rst b/doc/src/pair_tersoff.rst index ab9d714499..f2e44d0362 100644 --- a/doc/src/pair_tersoff.rst +++ b/doc/src/pair_tersoff.rst @@ -50,12 +50,28 @@ Description The *tersoff* style computes a 3-body Tersoff potential :ref:`(Tersoff\_1) ` for the energy E of a system of atoms as -.. image:: Eqs/pair_tersoff_1.jpg - :align: center +.. math:: -where f\_R is a two-body term and f\_A includes three-body interactions. -The summations in the formula are over all neighbors J and K of atom I -within a cutoff distance = R + D. + E & = \frac{1}{2} \sum_i \sum_{j \neq i} V_{ij} \\ + V_{ij} & = f_C(r_{ij}) \left[ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) \right] \\ + f_C(r) & = \left\{ \begin{array} {r@{\quad:\quad}l} + 1 & r < R - D \\ + \frac{1}{2} - \frac{1}{2} \sin \left( \frac{\pi}{2} \frac{r-R}{D} \right) & + R-D < r < R + D \\ + 0 & r > R + D + \end{array} \right. \\ + f_R(r) & = A \exp (-\lambda_1 r) \\ + f_A(r) & = -B \exp (-\lambda_2 r) \\ + b_{ij} & = \left( 1 + \beta^n {\zeta_{ij}}^n \right)^{-\frac{1}{2n}} \\ + \zeta_{ij} & = \sum_{k \neq i,j} f_C(r_{ik}) g(\theta_{ijk}) + \exp \left[ {\lambda_3}^m (r_{ij} - r_{ik})^m \right] \\ + g(\theta) & = \gamma_{ijk} \left( 1 + \frac{c^2}{d^2} - + \frac{c^2}{\left[ d^2 + (\cos \theta - \cos \theta_0)^2\right]} \right) + + +where :math:`f_R` is a two-body term and :math:`f_A` includes three-body +interactions. The summations in the formula are over all neighbors +J and K of atom I within a cutoff distance = R + D. The *tersoff/table* style uses tabulated forms for the two-body, environment and angular functions. Linear interpolation is performed @@ -104,22 +120,24 @@ above: * element 2 (the atom bonded to the center atom) * element 3 (the atom influencing the 1-2 bond in a bond-order sense) * m -* gamma -* lambda3 (1/distance units) +* :math:`\gamma` +* :math:`\lambda_3` (1/distance units) * c * d -* costheta0 (can be a value < -1 or > 1) +* :math:`\cos\theta_0` (can be a value < -1 or > 1) * n -* beta -* lambda2 (1/distance units) +* :math:`\beta` +* :math:`\lambda_2` (1/distance units) * B (energy units) * R (distance units) * D (distance units) -* lambda1 (1/distance units) +* :math:`\lambda_1` (1/distance units) * A (energy units) -The n, beta, lambda2, B, lambda1, and A parameters are only used for -two-body interactions. The m, gamma, lambda3, c, d, and costheta0 +The n, :math:`\beta`, :math:`\lambda_2`, B, :math:`\lambda_1`, and A +parameters are only used for +two-body interactions. The m, :math:`\gamma`, :math:`\lambda_3`, c, d, +and :math:`\cos\theta_0` parameters are only used for three-body interactions. The R and D parameters are used for both two-body and three-body interactions. The non-annotated parameters are unitless. The value of m must be 3 or 1. @@ -149,7 +167,8 @@ SiCC entry. The parameters used for a particular three-body interaction come from the entry with the corresponding three elements. The parameters used only for two-body interactions -(n, beta, lambda2, B, lambda1, and A) in entries whose 2nd and 3rd +(n, :math:`\beta`, :math:`\lambda_2`, B, :math:`\lambda_1`, and A) +in entries whose 2nd and 3rd element are different (e.g. SiCSi) are not used for anything and can be set to 0.0 if desired. @@ -165,16 +184,24 @@ it reduces to the form of :ref:`Albe et al. ` when beta = 1 and m = 1. Note that in the current Tersoff implementation in LAMMPS, m must be specified as either 3 or 1. Tersoff used a slightly different but equivalent form for alloys, which we will refer to as Tersoff\_2 -potential :ref:`(Tersoff\_2) `. The *tersoff/table* style implements +potential :ref:`(Tersoff\_2) `. +The *tersoff/table* style implements Tersoff\_2 parameterization only. LAMMPS parameter values for Tersoff\_2 can be obtained as follows: -gamma\_ijk = omega\_ik, lambda3 = 0 and the value of +:math:`\gamma_{ijk} = \omega_{ik}`, :math:`\lambda_3 = 0` and the value of m has no effect. The parameters for species i and j can be calculated using the Tersoff\_2 mixing rules: -.. image:: Eqs/pair_tersoff_2.jpg - :align: center +.. math:: + + \lambda_1^{i,j} & = \frac{1}{2}(\lambda_1^i + \lambda_1^j)\\ + \lambda_2^{i,j} & = \frac{1}{2}(\lambda_2^i + \lambda_2^j)\\ + A_{i,j} & = (A_{i}A_{j})^{1/2}\\ + B_{i,j} & = \chi_{ij}(B_{i}B_{j})^{1/2}\\ + R_{i,j} & = (R_{i}R_{j})^{1/2}\\ + S_{i,j} & = (S_{i}S_{j})^{1/2} + Tersoff\_2 parameters R and S must be converted to the LAMMPS parameters R and D (R is different in both forms), using the following diff --git a/doc/src/pair_tersoff_mod.rst b/doc/src/pair_tersoff_mod.rst index dbe0b4d95b..94cc9300ed 100644 --- a/doc/src/pair_tersoff_mod.rst +++ b/doc/src/pair_tersoff_mod.rst @@ -49,21 +49,40 @@ potential :ref:`(Tersoff\_1) `, :ref:`(Tersoff\_2) ` wit modified cutoff function and angular-dependent term, giving the energy E of a system of atoms as -.. image:: Eqs/pair_tersoff_mod.jpg - :align: center +.. math:: -where f\_R is a two-body term and f\_A includes three-body interactions. + E & = \frac{1}{2} \sum_i \sum_{j \neq i} V_{ij} \\ + V_{ij} & = f_C(r_{ij}) \left[ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) \right] \\ + f_C(r) & = \left\{ \begin{array} {r@{\quad:\quad}l} + 1 & r < R - D \\ + \frac{1}{2} - \frac{9}{16} \sin \left( \frac{\pi}{2} \frac{r-R}{D} \right) - \frac{1}{16} \sin \left( \frac{3\pi}{2} \frac{r-R}{D} \right) & + R-D < r < R + D \\ + 0 & r > R + D + \end{array} \right. \\ + f_R(r) & = A \exp (-\lambda_1 r) \\ + f_A(r) & = -B \exp (-\lambda_2 r) \\ + b_{ij} & = \left( 1 + {\zeta_{ij}}^\eta \right)^{-\frac{1}{2n}} \\ + \zeta_{ij} & = \sum_{k \neq i,j} f_C(r_{ik}) g(\theta_{ijk}) + \exp \left[ \alpha (r_{ij} - r_{ik})^\beta \right] \\ + g(\theta) & = c_1 + g_o(\theta) g_a(\theta) \\ + g_o(\theta) & = \frac{c_2 (h - \cos \theta)^2}{c_3 + (h - \cos \theta)^2} \\ + g_a(\theta) & = 1 + c_4 \exp \left[ -c_5 (h - \cos \theta)^2 \right] \\ + + +where :math:`f_R` is a two-body term and :math:`f_A` includes three-body interactions. The summations in the formula are over all neighbors J and K of atom I within a cutoff distance = R + D. The *tersoff/mod/c* style differs from *tersoff/mod* only in the formulation of the V\_ij term, where it contains an additional c0 term. -.. image:: Eqs/pair_tersoff_mod_c.jpg - :align: center +.. math:: -The modified cutoff function f\_C proposed by :ref:`(Murty) ` and + V_{ij} & = f_C(r_{ij}) \left[ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) + c_0 \right] + + +The modified cutoff function :math:`f_C` proposed by :ref:`(Murty) ` and having a continuous second-order differential is employed. The -angular-dependent term g(theta) was modified to increase the +angular-dependent term :math:`g(\theta)` was modified to increase the flexibility of the potential. The *tersoff/mod* potential is fitted to both the elastic constants @@ -105,30 +124,30 @@ not blank or comments (starting with #) define parameters for a triplet of elements. The parameters in a single entry correspond to coefficients in the formulae above: -element 1 (the center atom in a 3-body interaction) -element 2 (the atom bonded to the center atom) -element 3 (the atom influencing the 1-2 bond in a bond-order sense) -beta -alpha -h -eta -beta\_ters = 1 (dummy parameter) -lambda2 (1/distance units) -B (energy units) -R (distance units) -D (distance units) -lambda1 (1/distance units) -A (energy units) -n -c1 -c2 -c3 -c4 -c5 -c0 (energy units, tersoff/mod/c only):ul +* element 1 (the center atom in a 3-body interaction) +* element 2 (the atom bonded to the center atom) +* element 3 (the atom influencing the 1-2 bond in a bond-order sense) +* :math:`\beta` +* :math:`\alpha` +* h +* :math:`\eta` +* :math:`\beta_{ters}` = 1 (dummy parameter) +* :math:`\lambda_2` (1/distance units) +* B (energy units) +* R (distance units) +* D (distance units) +* :math:`\lambda_1` (1/distance units) +* A (energy units) +* n +* c1 +* c2 +* c3 +* c4 +* c5 +* c0 (energy units, tersoff/mod/c only):ul -The n, eta, lambda2, B, lambda1, and A parameters are only used for -two-body interactions. The beta, alpha, c1, c2, c3, c4, c5, h +The n, :math:`\eta`, :math:`\lambda_2`, B, :math:`\lambda_1`, and A parameters are only used for +two-body interactions. The :math:`\beta`, :math:`\alpha`, c1, c2, c3, c4, c5, h parameters are only used for three-body interactions. The R and D parameters are used for both two-body and three-body interactions. The c0 term applies to *tersoff/mod/c* only. The non-annotated diff --git a/doc/src/pair_tersoff_zbl.rst b/doc/src/pair_tersoff_zbl.rst index 2ad3be9d7d..e60de64f28 100644 --- a/doc/src/pair_tersoff_zbl.rst +++ b/doc/src/pair_tersoff_zbl.rst @@ -38,26 +38,53 @@ based on a Coulomb potential and the Ziegler-Biersack-Littmark universal screening function :ref:`(ZBL) `, giving the energy E of a system of atoms as -.. image:: Eqs/pair_tersoff_zbl.jpg - :align: center +.. math:: -The f\_F term is a fermi-like function used to smoothly connect the ZBL + E & = \frac{1}{2} \sum_i \sum_{j \neq i} V_{ij} \\ + V_{ij} & = (1 - f_F(r_{ij})) V^{ZBL}_{ij} + f_F(r_{ij}) V^{Tersoff}_{ij} \\ + f_F(r_{ij}) & = \frac{1}{1 + e^{-A_F(r_{ij} - r_C)}}\\ + \\ + \\ + V^{ZBL}_{ij} & = \frac{1}{4\pi\epsilon_0} \frac{Z_1 Z_2 \,e^2}{r_{ij}} \phi(r_{ij}/a) \\ + a & = \frac{0.8854\,a_0}{Z_{1}^{0.23} + Z_{2}^{0.23}}\\ + \phi(x) & = 0.1818e^{-3.2x} + 0.5099e^{-0.9423x} + 0.2802e^{-0.4029x} + 0.02817e^{-0.2016x}\\ + \\ + \\ + V^{Tersoff}_{ij} & = f_C(r_{ij}) \left[ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) \right] \\ + f_C(r) & = \left\{ \begin{array} {r@{\quad:\quad}l} + 1 & r < R - D \\ + \frac{1}{2} - \frac{1}{2} \sin \left( \frac{\pi}{2} \frac{r-R}{D} \right) & + R-D < r < R + D \\ + 0 & r > R + D + \end{array} \right. \\ + f_R(r) & = A \exp (-\lambda_1 r) \\ + f_A(r) & = -B \exp (-\lambda_2 r) \\ + b_{ij} & = \left( 1 + \beta^n {\zeta_{ij}}^n \right)^{-\frac{1}{2n}} \\ + \zeta_{ij} & = \sum_{k \neq i,j} f_C(r_{ik}) g(\theta_{ijk}) + \exp \left[ {\lambda_3}^m (r_{ij} - r_{ik})^m \right] \\ + g(\theta) & = \gamma_{ijk} \left( 1 + \frac{c^2}{d^2} - + \frac{c^2}{\left[ d^2 + (\cos \theta - \cos \theta_0)^2\right]} \right) + + +The :math:`f_F` term is a fermi-like function used to smoothly connect the ZBL repulsive potential with the Tersoff potential. There are 2 -parameters used to adjust it: A\_F and r\_C. A\_F controls how "sharp" -the transition is between the two, and r\_C is essentially the cutoff +parameters used to adjust it: :math:`A_F` and :math:`r_C`. :math:`A_F` +controls how "sharp" +the transition is between the two, and :math:`r_C` is essentially the cutoff for the ZBL potential. For the ZBL portion, there are two terms. The first is the Coulomb repulsive term, with Z1, Z2 as the number of protons in each nucleus, -e as the electron charge (1 for metal and real units) and epsilon0 as -the permittivity of vacuum. The second part is the ZBL universal +e as the electron charge (1 for metal and real units) and :math:`\epsilon_0` +as the permittivity of vacuum. The second part is the ZBL universal screening function, with a0 being the Bohr radius (typically 0.529 Angstroms), and the remainder of the coefficients provided by the original paper. This screening function should be applicable to most systems. However, it is only accurate for small separations (i.e. less than 1 Angstrom). -For the Tersoff portion, f\_R is a two-body term and f\_A includes +For the Tersoff portion, :math:`f_R` is a two-body term and :math:`f_A` +includes three-body interactions. The summations in the formula are over all neighbors J and K of atom I within a cutoff distance = R + D. @@ -102,29 +129,32 @@ in the formula above: * element 2 (the atom bonded to the center atom) * element 3 (the atom influencing the 1-2 bond in a bond-order sense) * m -* gamma -* lambda3 (1/distance units) +* :math:`\gamma` +* :math:`\lambda_3` (1/distance units) * c * d -* costheta0 (can be a value < -1 or > 1) +* :math:`\cos\theta_0` (can be a value < -1 or > 1) * n -* beta -* lambda2 (1/distance units) +* :math:`\beta` +* :math:`\lambda_2` (1/distance units) * B (energy units) * R (distance units) * D (distance units) -* lambda1 (1/distance units) +* :math:`\lambda_1` (1/distance units) * A (energy units) -* Z\_i -* Z\_j +* :math:`Z_i` +* :math:`Z_j` * ZBLcut (distance units) * ZBLexpscale (1/distance units) -The n, beta, lambda2, B, lambda1, and A parameters are only used for -two-body interactions. The m, gamma, lambda3, c, d, and costheta0 +The n, :math:`\beta`, :math:`\lambda_2`, B, :math:`\lambda_1`, and A +parameters are only used for +two-body interactions. The m, :math:`\gamma`, :math:`\lambda_3`, c, d, +and :math:`\cos\theta_0` parameters are only used for three-body interactions. The R and D parameters are used for both two-body and three-body interactions. The -Z\_i,Z\_j, ZBLcut, ZBLexpscale parameters are used in the ZBL repulsive +:math:`Z_i`, :math:`Z_j`, ZBLcut, ZBLexpscale parameters are used in the +ZBL repulsive portion of the potential and in the Fermi-like function. The non-annotated parameters are unitless. The value of m must be 3 or 1. @@ -153,7 +183,8 @@ SiCC entry. The parameters used for a particular three-body interaction come from the entry with the corresponding three elements. The parameters used only for two-body interactions -(n, beta, lambda2, B, lambda1, and A) in entries whose 2nd and 3rd +(n, :math:`\beta`, :math:`\lambda_2`, B, :math:`\lambda_1`, and A) +in entries whose 2nd and 3rd element are different (e.g. SiCSi) are not used for anything and can be set to 0.0 if desired. @@ -172,12 +203,19 @@ different but equivalent form for alloys, which we will refer to as Tersoff\_2 potential :ref:`(Tersoff\_2) `. LAMMPS parameter values for Tersoff\_2 can be obtained as follows: -gamma = omega\_ijk, lambda3 = 0 and the value of +:math:`\gamma = \omega_{ijk}`, :math:`\lambda_3 = 0` and the value of m has no effect. The parameters for species i and j can be calculated using the Tersoff\_2 mixing rules: -.. image:: Eqs/pair_tersoff_2.jpg - :align: center +.. math:: + + \lambda_1^{i,j} & = \frac{1}{2}(\lambda_1^i + \lambda_1^j)\\ + \lambda_2^{i,j} & = \frac{1}{2}(\lambda_2^i + \lambda_2^j)\\ + A_{i,j} & = (A_{i}A_{j})^{1/2}\\ + B_{i,j} & = \chi_{ij}(B_{i}B_{j})^{1/2}\\ + R_{i,j} & = (R_{i}R_{j})^{1/2}\\ + S_{i,j} & = (S_{i}S_{j})^{1/2}\\ + Tersoff\_2 parameters R and S must be converted to the LAMMPS parameters R and D (R is different in both forms), using the following diff --git a/doc/src/pair_ufm.rst b/doc/src/pair_ufm.rst index 3bb4e83a0e..c8a7e42743 100644 --- a/doc/src/pair_ufm.rst +++ b/doc/src/pair_ufm.rst @@ -42,10 +42,16 @@ Description Style *ufm* computes pairwise interactions using the Uhlenbeck-Ford model (UFM) potential :ref:`(Paula Leite2016) ` which is given by -.. image:: Eqs/pair_ufm.jpg - :align: center +.. math:: -where rc is the cutoff, sigma is a distance-scale and epsilon is an energy-scale, i.e., a product of Boltzmann constant kB, temperature T and the Uhlenbeck-Ford p-parameter which is responsible + E & = -\varepsilon\, \ln{\left[1-\exp{\left(-r^{2}/\sigma^{2}\right)}\right]} \qquad r < r_c \\ + \varepsilon & = p\,k_B\,T + + +where :math:`r_c` is the cutoff, :math:`\sigma` is a distance-scale and +:math:`\epsilon` is an energy-scale, i.e., a product of Boltzmann constant +:math:`k_B`, temperature *T* and the Uhlenbeck-Ford p-parameter which +is responsible to control the softness of the interactions :ref:`(Paula Leite2017) `. This model is useful as a reference system for fluid-phase free-energy calculations :ref:`(Paula Leite2016) `. @@ -55,8 +61,8 @@ or in the data file or restart files read by the :doc:`read_data ` or :doc:`read_restart ` commands, or by mixing as described below: -* epsilon (energy units) -* sigma (distance units) +* :math:`\epsilon` (energy units) +* :math:`\sigma` (distance units) * cutoff (distance units) The last coefficient is optional. If not specified, the global *ufm* @@ -76,7 +82,13 @@ of a run: .. note:: - The thermodynamic integration procedure can be performed with this potential using :doc:`fix adapt `. This command will rescale the force on each atom by varying a scale variable, which always starts with value 1.0. The syntax is the same described above, however, changing epsilon to scale. A detailed explanation of how to use this command and perform nonequilibrium thermodynamic integration in LAMMPS is given in the paper by :ref:`(Freitas) `. + The thermodynamic integration procedure can be performed with this + potential using :doc:`fix adapt `. This command will + rescale the force on each atom by varying a scale variable, which + always starts with value 1.0. The syntax is the same described above, + however, changing epsilon to scale. A detailed explanation of how to + use this command and perform nonequilibrium thermodynamic integration + in LAMMPS is given in the paper by :ref:`(Freitas) `. ---------- diff --git a/doc/src/pair_vashishta.rst b/doc/src/pair_vashishta.rst index de29985f56..2dde0482be 100644 --- a/doc/src/pair_vashishta.rst +++ b/doc/src/pair_vashishta.rst @@ -63,16 +63,21 @@ including SiO2 :ref:`Vashishta1990 `, SiC The potential for the energy U of a system of atoms is -.. image:: Eqs/pair_vashishta.jpg - :align: center +.. math:: + + U & = \sum_i^N \sum_{j > i}^N U_{ij}^{(2)} (r_{ij}) + \sum_i^N \sum_{j \neq i}^N \sum_{k > j, k \neq i}^N U_{ijk}^{(3)} (r_{ij}, r_{ik}, \theta_{ijk}) \\ + U_{ij}^{(2)} (r) & = \frac{H_{ij}}{r^{\eta_{ij}}} + \frac{Z_i Z_j}{r}\exp(-r/\lambda_{1,ij}) - \frac{D_{ij}}{r^4}\exp(-r/\lambda_{4,ij}) - \frac{W_{ij}}{r^6}, r < r_{c,{ij}} \\ + U_{ijk}^{(3)}(r_{ij},r_{ik},\theta_{ijk}) & = B_{ijk} \frac{\left[ \cos \theta_{ijk} - \cos \theta_{0ijk} \right]^2} {1+C_{ijk}\left[ \cos \theta_{ijk} - \cos \theta_{0ijk} \right]^2} \times \\ + & \exp \left( \frac{\gamma_{ij}}{r_{ij} - r_{0,ij}} \right) \exp \left( \frac{\gamma_{ik}}{r_{ik} - r_{0,ik}} \right), r_{ij} < r_{0,ij}, r_{ik} < r_{0,ik} + where we follow the notation used in :ref:`Branicio2009 `. -U2 is a two-body term and U3 is a three-body term. The +:math:`U^2` is a two-body term and U3 is a three-body term. The summation over two-body terms is over all neighbors J within -a cutoff distance = *rc*\ . The twobody terms are shifted and +a cutoff distance = :math:`r_c`. The twobody terms are shifted and tilted by a linear function so that the energy and force are -both zero at *rc*\ . The summation over three-body terms -is over all neighbors J and K within a cut-off distance = *r0*\ , +both zero at :math:`r_c`. The summation over three-body terms +is over all neighbors *i* and *k* within a cut-off distance :math:`= r_0`, where the exponential screening function becomes zero. The *vashishta* style computes these formulas analytically. The @@ -126,20 +131,20 @@ and three-body coefficients in the formulae above: * element 1 (the center atom in a 3-body interaction) * element 2 * element 3 -* H (energy units) -* eta -* Zi (electron charge units) -* Zj (electron charge units) -* lambda1 (distance units) -* D (energy units) -* lambda4 (distance units) -* W (energy units) -* rc (distance units) -* B (energy units) -* gamma -* r0 (distance units) -* C -* costheta0 +* *H* (energy units) +* :math:`\eta` +* :math:`Z_i` (electron charge units) +* :math:`Z_j` (electron charge units) +* :math:`\lambda_1` (distance units) +* *D* (energy units) +* :math:`\lambda_4` (distance units) +* *W* (energy units) +* :math:`r_c` (distance units) +* *B* (energy units) +* :math:`\gamma` +* :math:`r_0` (distance units) +* *C* +* :math:`\cos\theta_0` The non-annotated parameters are unitless. The Vashishta potential file must contain entries for all the elements listed in the @@ -159,12 +164,14 @@ unambiguous, general, and simple to code, LAMMPS uses a slightly confusing method for specifying parameters. All parameters are divided into two classes: two-body and three-body. Two-body and three-body parameters are handled differently, as described below. -The two-body parameters are H, eta, lambda1, D, lambda4, W, rc, gamma, -and r0. They appear in the above formulae with two subscripts. The -parameters Zi and Zj are also classified as two-body parameters, even -though they only have 1 subscript. The three-body parameters are B, -C, costheta0. They appear in the above formulae with three -subscripts. Two-body and three-body parameters are handled +The two-body parameters are *H*\ , :math:`\eta`, :math:`\lambda_1`, +*D*\ , :math:`\lambda_4`, *W*, :math:`r_c`, :math:`\gamma`, +and :math:`r_0`. They appear in the above formulae with two subscripts. +The parameters :math:`Z_i` and :math:`Z_j` are also classified +as two-body parameters, even +though they only have 1 subscript. The three-body parameters are *B*\ , +*C*\ , :math:`\cos\theta_0`. They appear in the above formulae with +three subscripts. Two-body and three-body parameters are handled differently, as described below. The first element in each entry is the center atom in a three-body @@ -184,7 +191,8 @@ ensure that these values are equal. Two-body parameters appearing in entries where the 2nd and 3rd elements are different are stored but never used. It is good practice to enter zero for these values. Note that the three-body function U3 above contains the two-body parameters -gamma and r0. So U3 for a central C atom bonded to an Si atom and a +:math:`\gamma` and :math:`r_0`. So U3 for a central C atom bonded to +an Si atom and a second C atom will take three-body parameters from the CSiC entry, but two-body parameters from the CCC and CSiSi entries. diff --git a/doc/src/pair_yukawa.rst b/doc/src/pair_yukawa.rst index c3a8e9fc71..b7cb6818d2 100644 --- a/doc/src/pair_yukawa.rst +++ b/doc/src/pair_yukawa.rst @@ -38,10 +38,12 @@ Description Style *yukawa* computes pairwise interactions with the formula -.. image:: Eqs/pair_yukawa.jpg - :align: center +.. math:: -Rc is the cutoff. + E = A \frac{e^{- \kappa r}}{r} \qquad r < r_c + + +:math:`r_c` is the cutoff. The following coefficients must be defined for each pair of atoms types via the :doc:`pair_coeff ` command as in the examples diff --git a/doc/src/pair_yukawa_colloid.rst b/doc/src/pair_yukawa_colloid.rst index 76bf010fb9..2c337bdb94 100644 --- a/doc/src/pair_yukawa_colloid.rst +++ b/doc/src/pair_yukawa_colloid.rst @@ -35,11 +35,13 @@ Description Style *yukawa/colloid* computes pairwise interactions with the formula -.. image:: Eqs/pair_yukawa_colloid.jpg - :align: center +.. math:: -where Ri and Rj are the radii of the two particles and Rc is the -cutoff. + E = \frac{A}{\kappa} e^{- \kappa (r - (r_i + r_j))} \qquad r < r_c + + +where :math:`r_i` and :math:`r_j` are the radii of the two particles +and :math:`r_c` is the cutoff. In contrast to :doc:`pair_style yukawa `, this functional form arises from the Coulombic interaction between two colloid @@ -49,7 +51,7 @@ theory. :doc:`Pair\_style yukawa ` is a screened Coulombic potential between two point-charges and uses no such approximation. This potential applies to nearby particle pairs for which the Derjagin -approximation holds, meaning h << Ri + Rj, where h is the +approximation holds, meaning :math:`h << r_i + r_j`, where *h* is the surface-to-surface separation of the two particles. When used in combination with :doc:`pair_style colloid `, @@ -72,17 +74,17 @@ used in :doc:`pair_style yukawa `. For low surface potentials, i.e. less than about 25 mV, A can be written as: -.. parsed-literal:: +.. math:: - A = 2 \* PI \* R\*eps\*eps0 \* kappa \* psi\^2 + A = 2 \pi R\varepsilon\varepsilon_0 \kappa \psi^2 where -* R = colloid radius (distance units) -* eps0 = permittivity of free space (charge\^2/energy/distance units) -* eps = relative permittivity of fluid medium (dimensionless) -* kappa = inverse screening length (1/distance units) -* psi = surface potential (energy/charge units) +* *R* = colloid radius (distance units) +* :math:`\varepsilon_0` = permittivity of free space (charge\^2/energy/distance units) +* :math:`\varepsilon` = relative permittivity of fluid medium (dimensionless) +* :math:`\kappa` = inverse screening length (1/distance units) +* :math:`\psi` = surface potential (energy/charge units) The last coefficient is optional. If not specified, the global yukawa/colloid cutoff is used. diff --git a/doc/src/pair_zbl.rst b/doc/src/pair_zbl.rst index 8e34341172..bffcf9fbda 100644 --- a/doc/src/pair_zbl.rst +++ b/doc/src/pair_zbl.rst @@ -43,12 +43,16 @@ that ramps the energy, force, and curvature smoothly to zero between an inner and outer cutoff. The potential energy due to a pair of atoms at a distance r\_ij is given by: -.. image:: Eqs/pair_zbl.jpg - :align: center +.. math:: -where e is the electron charge, epsilon\_0 is the electrical -permittivity of vacuum, and Z\_i and Z\_j are the nuclear charges of the -two atoms. The switching function S(r) is identical to that used by + E^{ZBL}_{ij} & = \frac{1}{4\pi\epsilon_0} \frac{Z_i Z_j \,e^2}{r_{ij}} \phi(r_{ij}/a)+ S(r_{ij})\\ + a & = \frac{0.46850}{Z_{i}^{0.23} + Z_{j}^{0.23}}\\ + \phi(x) & = 0.18175e^{-3.19980x} + 0.50986e^{-0.94229x} + 0.28022e^{-0.40290x} + 0.02817e^{-0.20162x}\\ + +where *e* is the electron charge, :math:`\epsilon_0` is the electrical +permittivity of vacuum, and :math:`Z_i` and :math:`Z_j` are the nuclear +charges of the +two atoms. The switching function :math:`S(r)` is identical to that used by :doc:`pair_style lj/gromacs `. Here, the inner and outer cutoff are the same for all pairs of atom types. @@ -56,16 +60,17 @@ The following coefficients must be defined for each pair of atom types via the :doc:`pair_coeff ` command as in the examples above, or in the LAMMPS data file. -* Z\_i (atomic number for first atom type, e.g. 13.0 for aluminum) +* :math:`Z_i` (atomic number for first atom type, e.g. 13.0 for aluminum) -* Z\_j (ditto for second atom type) +* :math:`Z_j` (ditto for second atom type) -The values of Z\_i and Z\_j are normally equal to the atomic +The values of :math:`Z_i` and :math:`Z_j` are normally equal to the atomic numbers of the two atom types. Thus, the user may optionally -specify only the coefficients for each I==I pair, and rely +specify only the coefficients for each :math:`i==i` pair, and rely on the obvious mixing rule for cross interactions (see below). -Note that when I==I it is required that Z\_i == Z\_j. When used -with :doc:`hybrid/overlay ` and pairs are assigned +Note that when :math:`i==i` it is required that :math:`Z_i == Z_j`. +When used with :doc:`hybrid/overlay ` and pairs are +assigned to more than one sub-style, the mixing rule is not used and each pair of types interacting with the ZBL sub-style must be included in a pair\_coeff command. @@ -108,9 +113,11 @@ instructions on how to use the accelerated styles effectively. **Mixing, shift, table, tail correction, restart, rRESPA info**\ : -For atom type pairs I,J and I != J, the Z\_i and Z\_j coefficients -can be mixed by taking Z\_i and Z\_j from the values specified for -I == I and J == J cases. When used +For atom type pairs *i,j* and :math:`i \neq i`, the :math:`Z_i` and +:math:`Z_j` coefficients +can be mixed by taking :math:`Z_i` and :math:`Z_j` from the values +specified for +:math:`i == i` and :math:`j == j` cases. When used with :doc:`hybrid/overlay ` and pairs are assigned to more than one sub-style, the mixing rule is not used and each pair of types interacting with the ZBL sub-style diff --git a/doc/src/set.rst b/doc/src/set.rst index 8214ce8ba9..c633587b25 100644 --- a/doc/src/set.rst +++ b/doc/src/set.rst @@ -235,7 +235,7 @@ that a particular atom is changed or not changed, regardless of how many processors are being used. This keyword does not allow use of an atom-style variable. -Keywords *type/ratio* and *type/subset" also set the atom type for a +Keywords *type/ratio* and *type/subset* also set the atom type for a fraction of the selected atoms. The actual number of atoms changed will be exactly the requested number. For *type/ratio* the specified fraction (0 <= *fraction* <= 1) determines the number. For diff --git a/examples/USER/plumed/log.27Nov18.peptide-plumed.g++.1 b/examples/USER/plumed/log.4Feb20.peptide-plumed.g++.1 similarity index 82% rename from examples/USER/plumed/log.27Nov18.peptide-plumed.g++.1 rename to examples/USER/plumed/log.4Feb20.peptide-plumed.g++.1 index eb67b96fce..fb77bee0cc 100644 --- a/examples/USER/plumed/log.27Nov18.peptide-plumed.g++.1 +++ b/examples/USER/plumed/log.4Feb20.peptide-plumed.g++.1 @@ -1,5 +1,4 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task +LAMMPS (4 Feb 2020) # Solvated 5-mer peptide units real @@ -39,6 +38,8 @@ read_data data.peptide 7 = max # of 1-3 neighbors 14 = max # of 1-4 neighbors 18 = max # of special neighbors + special bonds CPU = 0.000809431 secs + read_data CPU = 0.0102327 secs neighbor 2.0 bin neigh_modify delay 5 @@ -66,6 +67,7 @@ fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 6 = # of size 3 clusters 3 = # of size 4 clusters 640 = # of frozen angles + find clusters CPU = 0.000631809 secs #dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz #dump_modify 1 sort id @@ -77,13 +79,13 @@ variable pe equal pe run 101 PPPM initialization ... - using 12-bit tables for long-range coulomb (src/kspace.cpp:321) + using 12-bit tables for long-range coulomb (src/kspace.cpp:332) G vector (1/distance) = 0.268725 grid = 15 15 15 stencil order = 5 estimated absolute RMS force accuracy = 0.0228209 estimated relative force accuracy = 6.87243e-05 - using double precision FFTs + using double precision FFTW3 3d grid and FFT values/proc = 10648 3375 Neighbor list info ... update every 1 steps, delay 5 steps, check yes @@ -106,7 +108,7 @@ SHAKE stats (type/ave/delta) on step 0 14 0.96 0 18 0.957206 4.37979e-05 31 104.519 0.00396029 -Per MPI rank memory allocation (min/avg/max) = 18.74 | 18.74 | 18.74 Mbytes +Per MPI rank memory allocation (min/avg/max) = 19.07 | 19.07 | 19.07 Mbytes Step Temp TotEng PotEng KinEng E_pair E_bond f_2 0 282.10052 -5237.458 -6372.3766 1134.9186 -6442.768 16.557152 0 10 276.9783 -5234.3057 -6348.6171 1114.3114 -6421.6171 17.024361 0.47785504 @@ -129,22 +131,22 @@ SHAKE stats (type/ave/delta) on step 100 31 104.52 0.000760401 100 270.40648 -5234.9604 -6322.8327 1087.8723 -6417.73 19.666404 0.0094784372 101 270.99811 -5235.8295 -6326.082 1090.2525 -6418.8974 17.285816 0.086681332 -Loop time of 2.73445 on 1 procs for 101 steps with 2004 atoms +Loop time of 2.69839 on 1 procs for 101 steps with 2004 atoms -Performance: 6.383 ns/day, 3.760 hours/ns, 36.936 timesteps/s -99.7% CPU use with 1 MPI tasks x 1 OpenMP threads +Performance: 6.468 ns/day, 3.711 hours/ns, 37.430 timesteps/s +99.7% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 2.2617 | 2.2617 | 2.2617 | 0.0 | 82.71 -Bond | 0.0044148 | 0.0044148 | 0.0044148 | 0.0 | 0.16 -Kspace | 0.17883 | 0.17883 | 0.17883 | 0.0 | 6.54 -Neigh | 0.23945 | 0.23945 | 0.23945 | 0.0 | 8.76 -Comm | 0.011672 | 0.011672 | 0.011672 | 0.0 | 0.43 -Output | 0.00028348 | 0.00028348 | 0.00028348 | 0.0 | 0.01 -Modify | 0.0365 | 0.0365 | 0.0365 | 0.0 | 1.33 -Other | | 0.001611 | | | 0.06 +Pair | 2.2853 | 2.2853 | 2.2853 | 0.0 | 84.69 +Bond | 0.0065637 | 0.0065637 | 0.0065637 | 0.0 | 0.24 +Kspace | 0.14949 | 0.14949 | 0.14949 | 0.0 | 5.54 +Neigh | 0.1938 | 0.1938 | 0.1938 | 0.0 | 7.18 +Comm | 0.0096588 | 0.0096588 | 0.0096588 | 0.0 | 0.36 +Output | 0.00039172 | 0.00039172 | 0.00039172 | 0.0 | 0.01 +Modify | 0.050643 | 0.050643 | 0.050643 | 0.0 | 1.88 +Other | | 0.00258 | | | 0.10 Nlocal: 2004 ave 2004 max 2004 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/USER/plumed/log.27Nov18.peptide-plumed.g++.4 b/examples/USER/plumed/log.4Feb20.peptide-plumed.g++.4 similarity index 82% rename from examples/USER/plumed/log.27Nov18.peptide-plumed.g++.4 rename to examples/USER/plumed/log.4Feb20.peptide-plumed.g++.4 index 72b851c2ff..1bbbed6cd8 100644 --- a/examples/USER/plumed/log.27Nov18.peptide-plumed.g++.4 +++ b/examples/USER/plumed/log.4Feb20.peptide-plumed.g++.4 @@ -1,5 +1,4 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task +LAMMPS (4 Feb 2020) # Solvated 5-mer peptide units real @@ -39,6 +38,8 @@ read_data data.peptide 7 = max # of 1-3 neighbors 14 = max # of 1-4 neighbors 18 = max # of special neighbors + special bonds CPU = 0.00095129 secs + read_data CPU = 0.0199838 secs neighbor 2.0 bin neigh_modify delay 5 @@ -66,6 +67,7 @@ fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 6 = # of size 3 clusters 3 = # of size 4 clusters 640 = # of frozen angles + find clusters CPU = 0.000829935 secs #dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz #dump_modify 1 sort id @@ -77,13 +79,13 @@ variable pe equal pe run 101 PPPM initialization ... - using 12-bit tables for long-range coulomb (src/kspace.cpp:321) + using 12-bit tables for long-range coulomb (src/kspace.cpp:332) G vector (1/distance) = 0.268725 grid = 15 15 15 stencil order = 5 estimated absolute RMS force accuracy = 0.0228209 estimated relative force accuracy = 6.87243e-05 - using double precision FFTs + using double precision FFTW3 3d grid and FFT values/proc = 4312 960 Neighbor list info ... update every 1 steps, delay 5 steps, check yes @@ -106,7 +108,7 @@ SHAKE stats (type/ave/delta) on step 0 14 0.96 0 18 0.957206 4.37979e-05 31 104.519 0.00396029 -Per MPI rank memory allocation (min/avg/max) = 15.66 | 15.87 | 16.06 Mbytes +Per MPI rank memory allocation (min/avg/max) = 16.02 | 16.23 | 16.42 Mbytes Step Temp TotEng PotEng KinEng E_pair E_bond f_2 0 282.10052 -5237.458 -6372.3766 1134.9186 -6442.768 16.557152 0 10 276.9783 -5234.3057 -6348.6171 1114.3114 -6421.6171 17.024361 0.47785504 @@ -129,22 +131,22 @@ SHAKE stats (type/ave/delta) on step 100 31 104.52 0.000760401 100 270.40648 -5234.9604 -6322.8327 1087.8723 -6417.73 19.666404 0.0094784372 101 270.99811 -5235.8295 -6326.082 1090.2525 -6418.8974 17.285816 0.086681332 -Loop time of 0.812799 on 4 procs for 101 steps with 2004 atoms +Loop time of 0.873215 on 4 procs for 101 steps with 2004 atoms -Performance: 21.472 ns/day, 1.118 hours/ns, 124.262 timesteps/s -97.5% CPU use with 4 MPI tasks x 1 OpenMP threads +Performance: 19.987 ns/day, 1.201 hours/ns, 115.664 timesteps/s +92.5% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.57957 | 0.59988 | 0.62504 | 2.6 | 73.80 -Bond | 0.00080013 | 0.0017412 | 0.0028315 | 2.1 | 0.21 -Kspace | 0.075724 | 0.10008 | 0.12023 | 6.4 | 12.31 -Neigh | 0.067733 | 0.067947 | 0.068168 | 0.1 | 8.36 -Comm | 0.01375 | 0.014175 | 0.014681 | 0.3 | 1.74 -Output | 0.00025511 | 0.00051183 | 0.001277 | 0.0 | 0.06 -Modify | 0.026406 | 0.026436 | 0.026462 | 0.0 | 3.25 -Other | | 0.002027 | | | 0.25 +Pair | 0.58191 | 0.61681 | 0.66371 | 3.8 | 70.64 +Bond | 0.00099587 | 0.0023546 | 0.0041356 | 2.8 | 0.27 +Kspace | 0.096162 | 0.14486 | 0.18119 | 8.1 | 16.59 +Neigh | 0.059843 | 0.059864 | 0.059876 | 0.0 | 6.86 +Comm | 0.013623 | 0.01368 | 0.013723 | 0.0 | 1.57 +Output | 0.00031137 | 0.0010193 | 0.0024326 | 2.6 | 0.12 +Modify | 0.031552 | 0.031697 | 0.032087 | 0.1 | 3.63 +Other | | 0.002938 | | | 0.34 Nlocal: 501 ave 512 max 492 min Histogram: 1 0 0 1 0 1 0 0 0 1 diff --git a/examples/USER/plumed/reference/p.log b/examples/USER/plumed/reference/p.log index 79d0bbd84c..29d99077e4 100644 --- a/examples/USER/plumed/reference/p.log +++ b/examples/USER/plumed/reference/p.log @@ -1,12 +1,12 @@ PLUMED: PLUMED is starting -PLUMED: Version: 2.4.2 (git: Unknown) compiled on Jul 11 2018 at 19:09:03 -PLUMED: Please cite this paper when using PLUMED [1] +PLUMED: Version: 2.6.0 (git: Unknown) compiled on Feb 13 2020 at 15:49:44 +PLUMED: Please cite these papers when using PLUMED [1][2] PLUMED: For further information see the PLUMED web page at http://www.plumed.org -PLUMED: Root: /Users/gareth/MD_code/lammps-permanent/lammps/lib/plumed/plumed2-2.4.2/ -PLUMED: For installed feature, see /Users/gareth/MD_code/lammps-permanent/lammps/lib/plumed/plumed2-2.4.2//src/config/config.txt +PLUMED: Root: /home/akohlmey/compile/lammps/build-gcc/plumed_build-prefix/lib/plumed +PLUMED: For installed feature, see /home/akohlmey/compile/lammps/build-gcc/plumed_build-prefix/lib/plumed/src/config/config.txt PLUMED: Molecular dynamics engine: LAMMPS PLUMED: Precision of reals: 8 -PLUMED: Running over 1 node +PLUMED: Running over 4 nodes PLUMED: Number of threads: 1 PLUMED: Cache line size: 512 PLUMED: Number of atoms: 2004 @@ -14,13 +14,13 @@ PLUMED: File suffix: PLUMED: FILE: plumed.dat PLUMED: Action UNITS PLUMED: with label @0 -PLUMED: length: A -PLUMED: energy: kcal/mol +PLUMED: length: A = 0.1 nm +PLUMED: energy: kcal/mol = 4.184 kj/mol PLUMED: time: ps PLUMED: charge: e PLUMED: mass: amu PLUMED: using physical units -PLUMED: inside PLUMED, Boltzmann constant is 0.001987 +PLUMED: inside PLUMED, Boltzmann constant is 0.0019872 PLUMED: Action DISTANCE PLUMED: with label dd PLUMED: between atoms 45 48 @@ -44,14 +44,15 @@ PLUMED: Timestep: 0.002000 PLUMED: KbT has not been set by the MD engine PLUMED: It should be set by hand where needed PLUMED: Relevant bibliography: -PLUMED: [1] Tribello, Bonomi, Branduardi, Camilloni, and Bussi, Comput. Phys. Commun. 185, 604 (2014) +PLUMED: [1] The PLUMED consortium, Nat. Methods 16, 670 (2019) +PLUMED: [2] Tribello, Bonomi, Branduardi, Camilloni, and Bussi, Comput. Phys. Commun. 185, 604 (2014) PLUMED: Please read and cite where appropriate! PLUMED: Finished setup PLUMED: Cycles Total Average Minumum Maximum -PLUMED: 1 0.020354 0.020354 0.020354 0.020354 -PLUMED: 1 Prepare dependencies 102 0.000256 0.000003 0.000001 0.000006 -PLUMED: 2 Sharing data 102 0.010002 0.000098 0.000078 0.000546 -PLUMED: 3 Waiting for data 102 0.001398 0.000014 0.000011 0.000072 -PLUMED: 4 Calculating (forward loop) 102 0.001797 0.000018 0.000013 0.000058 -PLUMED: 5 Applying (backward loop) 102 0.002666 0.000026 0.000022 0.000062 -PLUMED: 6 Update 102 0.001126 0.000011 0.000007 0.000055 +PLUMED: 1 0.010018 0.010018 0.010018 0.010018 +PLUMED: 1 Prepare dependencies 102 0.000241 0.000002 0.000001 0.000003 +PLUMED: 2 Sharing data 102 0.002132 0.000021 0.000006 0.000151 +PLUMED: 3 Waiting for data 102 0.001640 0.000016 0.000008 0.000067 +PLUMED: 4 Calculating (forward loop) 102 0.000825 0.000008 0.000005 0.000013 +PLUMED: 5 Applying (backward loop) 102 0.000522 0.000005 0.000002 0.000015 +PLUMED: 6 Update 102 0.001755 0.000017 0.000011 0.000067 diff --git a/lib/gpu/lal_lj_tip4p_long.cpp b/lib/gpu/lal_lj_tip4p_long.cpp index d44edc8cbd..f60f162d7b 100644 --- a/lib/gpu/lal_lj_tip4p_long.cpp +++ b/lib/gpu/lal_lj_tip4p_long.cpp @@ -74,11 +74,11 @@ int LJTIP4PLongT::init(const int ntypes, // If atom type constants fit in shared memory use fast kernel int lj_types=ntypes; shared_types=false; -// int max_shared_types=this->device->max_shared_types(); -// if (lj_types<=max_shared_types && this->_block_size>=max_shared_types) { -// lj_types=max_shared_types; -// shared_types=true; -// } + int max_shared_types=this->device->max_shared_types(); + if (lj_types<=max_shared_types && this->_block_size>=max_shared_types) { + lj_types=max_shared_types; + shared_types=true; + } _lj_types=lj_types; // Allocate a host write buffer for data initialization @@ -202,7 +202,6 @@ void LJTIP4PLongT::loop(const bool _eflag, const bool _vflag) { GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); - this->k_pair.set_size(GX,BX); if (vflag) { this->ansO.resize_ib(ainum*3); } else { @@ -210,13 +209,25 @@ void LJTIP4PLongT::loop(const bool _eflag, const bool _vflag) { } this->ansO.zero(); this->device->gpu->sync(); - this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, + if(shared_types) { + this->k_pair_fast.set_size(GX,BX); + this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom, &hneight, &m, &TypeO, &TypeH, &alpha, &this->atom->q, &cutsq, &_qqrd2e, &_g_ewald, &cut_coulsq, &cut_coulsqplus, &this->ansO); + } else { + this->k_pair.set_size(GX,BX); + this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &eflag, &vflag, + &ainum, &nbor_pitch, &this->_threads_per_atom, + &hneight, &m, &TypeO, &TypeH, &alpha, + &this->atom->q, &cutsq, &_qqrd2e, &_g_ewald, + &cut_coulsq, &cut_coulsqplus, &this->ansO); + } GX=static_cast(ceil(static_cast(this->ans->inum())/BX)); this->k_pair_distrib.set_size(GX,BX); this->k_pair_distrib.run(&this->atom->x, &this->ans->force, &this->ans->engv, diff --git a/lib/gpu/lal_lj_tip4p_long.cu b/lib/gpu/lal_lj_tip4p_long.cu index 147c460795..c101196433 100644 --- a/lib/gpu/lal_lj_tip4p_long.cu +++ b/lib/gpu/lal_lj_tip4p_long.cu @@ -572,4 +572,328 @@ __kernel void k_lj_tip4p_long(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_lj_tip4p_long_fast() {} +__kernel void k_lj_tip4p_long_fast(const __global numtyp4 *restrict x_, + const __global numtyp4 *restrict lj1_in, + const __global numtyp4 *restrict lj3_in, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, const int t_per_atom, + __global int *restrict hneigh, + __global numtyp4 *restrict m, + const int typeO, const int typeH, + const numtyp alpha, + const __global numtyp *restrict q_, + const __global numtyp *restrict cutsq, + const numtyp qqrd2e, const numtyp g_ewald, + const numtyp cut_coulsq, const numtyp cut_coulsqplus, + __global acctyp4 *restrict ansO) { + int tid, ii, offset; + atom_info(t_per_atom,ii,tid,offset); + + const numtyp eq_zero = 1e-6; + + __local numtyp4 lj1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp4 lj3[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp sp_lj[8]; + if (tid<8) + sp_lj[tid]=sp_lj_in[tid]; + if (tid0) + lj3[tid]=lj3_in[tid]; + } + acctyp energy = (acctyp)0; + acctyp e_coul = (acctyp)0; + acctyp4 f, fO; + f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; + fO.x=(acctyp)0; fO.y=(acctyp)0; fO.z=(acctyp)0; + acctyp virial[6],vO[6]; + for (int i=0; i<6; i++) { + virial[i]=(acctyp)0; + vO[i]=(acctyp)0; + } + + __syncthreads(); + if (ii= inum) { + non_local_oxy = 1; + } + } + + for ( ; nbor0) { + numtyp e = r6inv * (lj3[mtype].x*r6inv-lj3[mtype].y); + energy += factor_lj * (e - lj3[mtype].z); + } + if (vflag>0) { + virial[0] += delx*delx*forcelj; + virial[1] += dely*dely*forcelj; + virial[2] += delz*delz*forcelj; + virial[3] += delx*dely*forcelj; + virial[4] += delx*delz*forcelj; + virial[5] += dely*delz*forcelj; + } + } // if LJ + + if (rsq < cut_coulsqplus) { //cut_coulsqplus + int jH1, jH2, jO; + numtyp qj; fetch(qj,j,q_tex); + numtyp4 x2 = jx; + if(itype == typeO || jtype == typeO) { + if (jtype == typeO) { + jO = j; + jH1 = hneigh[j*4 ]; + jH2 = hneigh[j*4+1]; + x2 = m[j]; + } + delx = x1.x-x2.x; + dely = x1.y-x2.y; + delz = x1.z-x2.z; + rsq = delx*delx+dely*dely+delz*delz; + } + if (rsq < cut_coulsq) { + numtyp r2inv = ucl_recip(rsq); + numtyp r = ucl_rsqrt(r2inv); + numtyp grij = g_ewald * r; + numtyp expm2 = ucl_exp(-grij*grij); + numtyp t = ucl_recip((numtyp)1.0 + EWALD_P*grij); + numtyp _erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + + numtyp prefactor = qj; + prefactor *= qqrd2e*qtmp/r; + numtyp force_coul = r2inv*prefactor * (_erfc + EWALD_F*grij*expm2 - factor_coul); + + if (itype == typeH) { + f.x += delx * force_coul; + f.y += dely * force_coul; + f.z += delz * force_coul; + f.w += 0; + } else { + fO.x += delx * force_coul; + fO.y += dely * force_coul; + fO.z += delz * force_coul; + fO.w += 0; + } + if (eflag>0) { + e_coul += prefactor*(_erfc-factor_coul); + } + if (vflag>0) { + acctyp4 fd; + fd.x = delx*force_coul; + fd.y = dely*force_coul; + fd.z = delz*force_coul; + if (itype == typeH) { + if (jtype == typeH) { + virial[0] += delx*fd.x; + virial[1] += dely*fd.y; + virial[2] += delz*fd.z; + virial[3] += delx*fd.y; + virial[4] += delx*fd.z; + virial[5] += dely*fd.z; + } else { + numtyp cO = 1 - alpha, cH = 0.5*alpha; + numtyp4 vdj; + numtyp4 xjH1; fetch4(xjH1,jH1,pos_tex); + numtyp4 xjH2; fetch4(xjH2,jH2,pos_tex); + numtyp4 xjO; fetch4(xjO,jO,pos_tex); + vdj.x = xjO.x*cO + xjH1.x*cH + xjH2.x*cH; + vdj.y = xjO.y*cO + xjH1.y*cH + xjH2.y*cH; + vdj.z = xjO.z*cO + xjH1.z*cH + xjH2.z*cH; + //vdj.w = vdj.w; + virial[0] += (ix.x - vdj.x)*fd.x; + virial[1] += (ix.y - vdj.y)*fd.y; + virial[2] += (ix.z - vdj.z)*fd.z; + virial[3] += (ix.x - vdj.x)*fd.y; + virial[4] += (ix.x - vdj.x)*fd.z; + virial[5] += (ix.y - vdj.y)*fd.z; + } + } else { + numtyp cO = 1 - alpha, cH = 0.5*alpha; + numtyp4 vdi, vdj; + numtyp4 xH1; fetch4(xH1,iH1,pos_tex); + numtyp4 xH2; fetch4(xH2,iH2,pos_tex); + numtyp4 xO; fetch4(xO,iO,pos_tex); + vdi.x = xO.x*cO + xH1.x*cH + xH2.x*cH; + vdi.y = xO.y*cO + xH1.y*cH + xH2.y*cH; + vdi.z = xO.z*cO + xH1.z*cH + xH2.z*cH; + //vdi.w = vdi.w; + if (jtype != typeH) { + numtyp4 xjH1; fetch4(xjH1,jH1,pos_tex); + numtyp4 xjH2; fetch4(xjH2,jH2,pos_tex); + numtyp4 xjO; fetch4(xjO,jO,pos_tex); + vdj.x = xjO.x*cO + xjH1.x*cH + xjH2.x*cH; + vdj.y = xjO.y*cO + xjH1.y*cH + xjH2.y*cH; + vdj.z = xjO.z*cO + xjH1.z*cH + xjH2.z*cH; + //vdj.w = vdj.w; + } else vdj = jx; + vO[0] += 0.5*(vdi.x - vdj.x)*fd.x; + vO[1] += 0.5*(vdi.y - vdj.y)*fd.y; + vO[2] += 0.5*(vdi.z - vdj.z)*fd.z; + vO[3] += 0.5*(vdi.x - vdj.x)*fd.y; + vO[4] += 0.5*(vdi.x - vdj.x)*fd.z; + vO[5] += 0.5*(vdi.y - vdj.y)*fd.z; + } + } + } + if (non_local_oxy == 1) { + if (iO == j) { + x2 = ix; + qj = qtmp; + } + numtyp4 x1m = m[iO]; + delx = x1m.x-x2.x; + dely = x1m.y-x2.y; + delz = x1m.z-x2.z; + rsq = delx*delx+dely*dely+delz*delz; + if (rsq < cut_coulsq) { + numtyp r2inv = ucl_recip(rsq); + numtyp r = ucl_rsqrt(r2inv); + numtyp grij = g_ewald * r; + numtyp expm2 = ucl_exp(-grij*grij); + numtyp t = ucl_recip((numtyp)1.0 + EWALD_P*grij); + numtyp _erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + + numtyp prefactor = qj; + prefactor *= qqrd2e*x1m.w/r; + numtyp force_coul = r2inv*prefactor * (_erfc + EWALD_F*grij*expm2 - factor_coul); + + numtyp cO = 1 - alpha, cH = 0.5*alpha; + numtyp4 fd; + fd.x = delx * force_coul * cH; + fd.y = dely * force_coul * cH; + fd.z = delz * force_coul * cH; + + f.x += fd.x; + f.y += fd.y; + f.z += fd.z; + + if (eflag>0) { + e_coul += prefactor*(_erfc-factor_coul) * (acctyp)0.5 * alpha; + } + if (vflag>0) { + numtyp4 xH1; fetch4(xH1,iH1,pos_tex); + numtyp4 xH2; fetch4(xH2,iH2,pos_tex); + numtyp4 xO; fetch4(xO,iO,pos_tex); + + virial[0] += ((xO.x*cO + xH1.x*cH + xH2.x*cH) - x2.x) * fd.x; + virial[1] += ((xO.y*cO + xH1.y*cH + xH2.y*cH) - x2.y) * fd.y; + virial[2] += ((xO.z*cO + xH1.z*cH + xH2.z*cH) - x2.z) * fd.z; + virial[3] += ((xO.x*cO + xH1.x*cH + xH2.x*cH) - x2.x) * fd.y; + virial[4] += ((xO.x*cO + xH1.x*cH + xH2.x*cH) - x2.x) * fd.z; + virial[5] += ((xO.y*cO + xH1.y*cH + xH2.y*cH) - x2.y) * fd.z; + } + } + } + } // if cut_coulsqplus + } // for nbor + if (t_per_atom>1) { +#if (ARCH < 300) + __local acctyp red_acc[6][BLOCK_PAIR]; + red_acc[0][tid]=fO.x; + red_acc[1][tid]=fO.y; + red_acc[2][tid]=fO.z; + red_acc[3][tid]=fO.w; + for (unsigned int s=t_per_atom/2; s>0; s>>=1) { + if (offset < s) { + for (int r=0; r<4; r++) + red_acc[r][tid] += red_acc[r][tid+s]; + } + } + fO.x=red_acc[0][tid]; + fO.y=red_acc[1][tid]; + fO.z=red_acc[2][tid]; + fO.w=red_acc[3][tid]; + if (vflag>0) { + for (int r=0; r<6; r++) red_acc[r][tid]=vO[r]; + for (unsigned int s=t_per_atom/2; s>0; s>>=1) { + if (offset < s) { + for (int r=0; r<6; r++) + red_acc[r][tid] += red_acc[r][tid+s]; + } + } + for (int r=0; r<6; r++) vO[r]=red_acc[r][tid]; + } +#else + for (unsigned int s=t_per_atom/2; s>0; s>>=1) { + fO.x += shfl_xor(fO.x, s, t_per_atom); + fO.y += shfl_xor(fO.y, s, t_per_atom); + fO.z += shfl_xor(fO.z, s, t_per_atom); + fO.w += shfl_xor(fO.w, s, t_per_atom); + } + if (vflag>0) { + for (unsigned int s=t_per_atom/2; s>0; s>>=1) { + for (int r=0; r<6; r++) + vO[r] += shfl_xor(vO[r], s, t_per_atom); + } + } +#endif + } + if(offset == 0) { + ansO[i] = fO; + if (vflag>0) { + ansO[inum + i].x = vO[0]; + ansO[inum + i].y = vO[1]; + ansO[inum + i].z = vO[2]; + ansO[inum*2 + i].x = vO[3]; + ansO[inum*2 + i].y = vO[4]; + ansO[inum*2 + i].z = vO[5]; + } + } + store_answers_q(f,energy,e_coul,virial,ii,inum,tid,t_per_atom,offset,eflag, + vflag,ans,engv); + } // if ii +} diff --git a/lib/plumed/Install.py b/lib/plumed/Install.py index 668e681b3c..b6b00d1511 100644 --- a/lib/plumed/Install.py +++ b/lib/plumed/Install.py @@ -17,7 +17,7 @@ parser = ArgumentParser(prog='Install.py', # settings -version = "2.5.3" +version = "2.6.0" mode = "static" # help message @@ -46,6 +46,8 @@ checksums = { \ '2.5.1' : 'c2a7b519e32197a120cdf47e0f194f81', \ '2.5.2' : 'bd2f18346c788eb54e1e52f4f6acf41a', \ '2.5.3' : 'de30d6e7c2dcc0973298e24a6da24286', \ + '2.5.4' : 'f31b7d16a4be2e30aa7d5c19c3d37853', \ + '2.6.0' : '204d2edae58d9b10ba3ad460cad64191', \ } # parse and process arguments diff --git a/lib/qmmm/Makefile.gfortran b/lib/qmmm/Makefile.gfortran index 717922b4b6..9b43d2eaa0 100644 --- a/lib/qmmm/Makefile.gfortran +++ b/lib/qmmm/Makefile.gfortran @@ -7,9 +7,9 @@ EXTRAMAKE = Makefile.lammps.empty QETOPDIR=$(HOME)/compile/espresso # import compiler settings from Quantum ESPRESSO -sinclude $(QETOPDIR)/make.sys +sinclude $(QETOPDIR)/make.inc -# FLAGS for c++ OpenMPI 1.8.8 or later when QE was compiled with GNU Fortran 4.x +# FLAGS for c++ OpenMPI 3.x.x or later when QE was compiled with GNU Fortran 6.x or 7.x MPICXX=mpicxx MPICXXFLAGS=-DOMPI_SKIP_MPICXX=1 -O2 -Wall -g -fPIC\ -I../../src -I$(QETOPDIR)/COUPLE/include @@ -24,13 +24,21 @@ $(QETOPDIR)/Modules/libqemod.a # part 2: lo-level libraries for all of Q-E LIBOBJS = \ $(QETOPDIR)/FFTXlib/libqefft.a \ +$(QETOPDIR)/dft-d3/libdftd3qe.a \ +$(QETOPDIR)/KS_Solvers/PPCG/libppcg.a \ +$(QETOPDIR)/KS_Solvers/CG/libcg.a \ +$(QETOPDIR)/KS_Solvers/Davidson/libdavid.a \ +$(QETOPDIR)/UtilXlib/libutil.a \ $(QETOPDIR)/LAXlib/libqela.a \ $(QETOPDIR)/clib/clib.a \ $(QETOPDIR)/iotk/src/libiotk.a +# foxlibs + +LIBS += -L${QETOPDIR}/FoX/lib -lFoX_dom -lFoX_sax -lFoX_wxml -lFoX_common -lFoX_utils -lFoX_fsys -L${LAPACK_LIB} -L${BLAS_LIB} -llapack -lblas # part 3: add-on libraries and main library for LAMMPS sinclude ../../src/Makefile.package -LAMMPSCFG = openmpi-omp +LAMMPSCFG = mpi LAMMPSLIB = ../../src/liblammps_$(LAMMPSCFG).a # part 4: local QM/MM library and progams diff --git a/lib/qmmm/Makefile.ifort b/lib/qmmm/Makefile.ifort index d03e67b8a0..1a4f4b600e 100644 --- a/lib/qmmm/Makefile.ifort +++ b/lib/qmmm/Makefile.ifort @@ -3,17 +3,20 @@ # this file will be copied to Makefile.lammps EXTRAMAKE = Makefile.lammps.empty -# top level directory of Quantum ESPRESSO 5.4.1 or later +# top level directory of Quantum ESPRESSO 6.4 or later QETOPDIR=$(HOME)/compile/espresso # import compiler settings from Quantum ESPRESSO -sinclude $(QETOPDIR)/make.sys +sinclude $(QETOPDIR)/make.inc # FLAGS for c++ with IntelMPI when QE was compiled with Intel Fortran -MPICXX=icpc -MPICXXFLAGS=-DOMPI_SKIP_MPICXX=1 -O2 -Wall -g -fPIC\ - -I../../src -I$(QETOPDIR)/COUPLE/include -I${INTELMPI_HOME}/include64 -MPILIBS=-openmp -L${INTELMPI_HOME}/lib64 -lz -lifcore -L$(I_MPI_ROOT)/lib64 -lmpi -lmpiif + +MPICXX=mpiicpc +MPICXXFLAGS=-DOMPI_SKIP_MPICXX=1 -DFC_ABORT_ARG -O2 -Wall -g -fPIC -I${INTEL_HOME}/include -I${INTELMPI_HOME}/include64 \ + -I../../src -I$(QETOPDIR)/COUPLE/include -I$(QETOPDIR)/LAXlib -I$(QETOPDIR)/UtilXlib -I$(QETOPDIR)/FoX/finclude -tbb + +MPILIBS=-qopenmp -L${INTELMPI_HOME}/lib64 -lz -lifcore -lifport -L$(I_MPI_ROOT)/lib64 -lmpi -lmpifort + # location of required libraries # part 1: hi-level libraries for building pw.x @@ -24,13 +27,20 @@ $(QETOPDIR)/Modules/libqemod.a # part 2: lo-level libraries for all of Q-E LIBOBJS = \ $(QETOPDIR)/FFTXlib/libqefft.a \ +$(QETOPDIR)/dft-d3/libdftd3qe.a \ +$(QETOPDIR)/KS_Solvers/PPCG/libppcg.a \ +$(QETOPDIR)/KS_Solvers/CG/libcg.a \ +$(QETOPDIR)/KS_Solvers/Davidson/libdavid.a \ +$(QETOPDIR)/UtilXlib/libutil.a \ $(QETOPDIR)/LAXlib/libqela.a \ $(QETOPDIR)/clib/clib.a \ $(QETOPDIR)/iotk/src/libiotk.a +# foxlibs +LIBS += -L${QETOPDIR}/FoX/lib -lFoX_dom -lFoX_sax -lFoX_wxml -lFoX_common -lFoX_utils -lFoX_fsys -mkl -ltbbmalloc # part 3: add-on libraries and main library for LAMMPS sinclude ../../src/Makefile.package -LAMMPSCFG = galileo-omp +LAMMPSCFG =intel_cpu LAMMPSLIB = ../../src/liblammps_$(LAMMPSCFG).a # part 4: local QM/MM library and progams diff --git a/lib/qmmm/README b/lib/qmmm/README index 2746c9e86e..9046cf59de 100644 --- a/lib/qmmm/README +++ b/lib/qmmm/README @@ -4,7 +4,7 @@ Axel Kohlmeyer, akohlmey@gmail.com Temple University, Philadelphia and ICTP, Trieste with contributions by -Carlo Cavazzoni & Mariella Ippolito +Mariella Ippolito & Carlo Cavazzoni Cineca, Italy This library provides the basic glue code to combine LAMMPS with the @@ -32,9 +32,7 @@ and 4 manually, as outlined below. WARNING: This is experimental code under developement and is provided at this early stage to encourage others to write interfaces to other QM codes. Please test *very* carefully before using this software for -production calculations. At the time of the last update of this README -(July 2016) you have to download a QE snapshot (revision 12611) from -the QE subversion repository. +production calculations. At this point, both mechanical and multipole based electrostatic coupling have been successfully tested on a cluster of water @@ -70,12 +68,7 @@ to confirm that the classical part of the code is set up correctly. Step 3) Build a standalone pw.x executable in the Quantum ESPRESSO directory -and also make the "couple" target. At the time of this writing -(July 2016) you have to download a QE snapshot (revision 12611) -from the SVN repository, since no official release with the -completed QM/MM support code has been made available yet. The current -plan is to have a usable QM/MM interface released with the next -Quantum ESPRESSO release version 6.0. Building the standalone pw.x +and also make the "couple" target. Building the standalone pw.x binary is also needed to confirm that corresponding QM input is working correctly and to run test calculations on QM atoms only. diff --git a/src/GPU/pair_born_coul_long_gpu.cpp b/src/GPU/pair_born_coul_long_gpu.cpp index 39d34420a8..1b548edab6 100644 --- a/src/GPU/pair_born_coul_long_gpu.cpp +++ b/src/GPU/pair_born_coul_long_gpu.cpp @@ -177,6 +177,10 @@ void PairBornCoulLongGPU::init_style() error->all(FLERR,"Pair style requires a KSpace style"); g_ewald = force->kspace->g_ewald; + // setup force tables + + if (ncoultablebits) init_tables(cut_coul,cut_respa); + int maxspecial=0; if (atom->molecular) maxspecial=atom->maxspecial; diff --git a/src/GPU/pair_buck_coul_long_gpu.cpp b/src/GPU/pair_buck_coul_long_gpu.cpp index e30230d5a0..7e59562ebf 100644 --- a/src/GPU/pair_buck_coul_long_gpu.cpp +++ b/src/GPU/pair_buck_coul_long_gpu.cpp @@ -173,6 +173,10 @@ void PairBuckCoulLongGPU::init_style() error->all(FLERR,"Pair style requires a KSpace style"); g_ewald = force->kspace->g_ewald; + // setup force tables + + if (ncoultablebits) init_tables(cut_coul,cut_respa); + int maxspecial=0; if (atom->molecular) maxspecial=atom->maxspecial; diff --git a/src/GPU/pair_lj_class2_coul_long_gpu.cpp b/src/GPU/pair_lj_class2_coul_long_gpu.cpp index 4ee776b4ff..96ba4e0a09 100644 --- a/src/GPU/pair_lj_class2_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_class2_coul_long_gpu.cpp @@ -170,6 +170,10 @@ void PairLJClass2CoulLongGPU::init_style() error->all(FLERR,"Pair style requires a KSpace style"); g_ewald = force->kspace->g_ewald; + // setup force tables + + if (ncoultablebits) init_tables(cut_coul,cut_respa); + int maxspecial=0; if (atom->molecular) maxspecial=atom->maxspecial; diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index e0b1c92821..540389f599 100755 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -85,6 +85,8 @@ action comm_kokkos.cpp action comm_kokkos.h action comm_tiled_kokkos.cpp action comm_tiled_kokkos.h +action compute_orientorder_atom_kokkos.cpp +action compute_orientorder_atom_kokkos.h action compute_temp_kokkos.cpp action compute_temp_kokkos.h action dihedral_charmm_kokkos.cpp dihedral_charmm.cpp diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp new file mode 100644 index 0000000000..7915e4faa9 --- /dev/null +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -0,0 +1,698 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Stan Moore (SNL) +------------------------------------------------------------------------- */ + +#include "compute_orientorder_atom_kokkos.h" +#include +#include +#include +#include "atom_kokkos.h" +#include "update.h" +#include "modify.h" +#include "neighbor_kokkos.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "force.h" +#include "pair.h" +#include "comm.h" +#include "memory_kokkos.h" +#include "error.h" +#include "math_const.h" +#include "atom_masks.h" +#include "kokkos.h" + +using namespace LAMMPS_NS; +using namespace MathConst; +using namespace std; + +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + +#define QEPSILON 1.0e-6 + +/* ---------------------------------------------------------------------- */ + +template +ComputeOrientOrderAtomKokkos::ComputeOrientOrderAtomKokkos(LAMMPS *lmp, int narg, char **arg) : + ComputeOrientOrderAtom(lmp, narg, arg) +{ + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; +} + +/* ---------------------------------------------------------------------- */ + +template +ComputeOrientOrderAtomKokkos::~ComputeOrientOrderAtomKokkos() +{ + if (copymode) return; + + memoryKK->destroy_kokkos(k_qnarray,qnarray); +} + +/* ---------------------------------------------------------------------- */ + +template +void ComputeOrientOrderAtomKokkos::init() +{ + ComputeOrientOrderAtom::init(); + + d_qlist = t_sna_1i("orientorder/atom:qlist",nqlist); + auto h_qlist = Kokkos::create_mirror_view(d_qlist); + for (int i = 0; i < nqlist; i++) + h_qlist(i) = qlist[i]; + Kokkos::deep_copy(d_qlist,h_qlist); + + // need an occasional full neighbor list + + // irequest = neigh request made by parent class + + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; +} + +/* ---------------------------------------------------------------------- */ + +template +struct FindMaxNumNeighs { + typedef DeviceType device_type; + NeighListKokkos k_list; + + FindMaxNumNeighs(NeighListKokkos* nl): k_list(*nl) {} + ~FindMaxNumNeighs() {k_list.copymode = 1;} + + KOKKOS_INLINE_FUNCTION + void operator() (const int& ii, int& maxneigh) const { + const int i = k_list.d_ilist[ii]; + const int num_neighs = k_list.d_numneigh[i]; + if (maxneigh < num_neighs) maxneigh = num_neighs; + } +}; + +/* ---------------------------------------------------------------------- */ + +template +void ComputeOrientOrderAtomKokkos::compute_peratom() +{ + invoked_peratom = update->ntimestep; + + // invoke full neighbor list (will copy or build if necessary) + + neighbor->build_one(list); + + inum = list->inum; + NeighListKokkos* k_list = static_cast*>(list); + d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + + maxneigh = 0; + Kokkos::parallel_reduce("ComputeOrientOrderAtomKokkos::find_max_neighs",inum, FindMaxNumNeighs(k_list), Kokkos::Experimental::Max(maxneigh)); + + // grow order parameter array if necessary + + if (atom->nmax > nmax) { + memoryKK->destroy_kokkos(k_qnarray,qnarray); + nmax = atom->nmax; + memoryKK->create_kokkos(k_qnarray,qnarray,nmax,ncol,"orientorder/atom:qnarray"); + array_atom = qnarray; + d_qnarray = k_qnarray.template view(); + + d_qnm = t_sna_3c("orientorder/atom:qnm",nmax,nqlist,2*qmax+1); + d_ncount = t_sna_1i("orientorder/atom:ncount",nmax); + + // insure distsq and nearest arrays are long enough + + if (maxneigh > d_distsq.extent(1)) { + d_distsq = t_sna_2d_lr("orientorder/atom:distsq",nmax,maxneigh); + d_nearest = t_sna_2i_lr("orientorder/atom:nearest",nmax,maxneigh); + d_rlist = t_sna_3d_lr("orientorder/atom:rlist",nmax,maxneigh,3); + + d_distsq_um = d_distsq; + d_rlist_um = d_rlist; + d_nearest_um = d_nearest; + } + } + + // compute order parameter for each atom in group + // use full neighbor list to count atoms less than cutoff + + atomKK->sync(execution_space,X_MASK|MASK_MASK); + x = atomKK->k_x.view(); + mask = atomKK->k_mask.view(); + + Kokkos::deep_copy(d_qnm,{0.0,0.0}); + + int vector_length = 1; + int team_size = 1; + int team_size_max = Kokkos::TeamPolicy::team_size_max(*this); +#ifdef KOKKOS_ENABLE_CUDA + team_size = 32;//maxneigh; + if (team_size*vector_length > team_size_max) + team_size = team_size_max/vector_length; +#endif + + copymode = 1; + + //Neigh + typename Kokkos::TeamPolicy policy_neigh(inum,team_size,vector_length); + Kokkos::parallel_for("ComputeOrientOrderAtomNeigh",policy_neigh,*this); + + //Select3 + typename Kokkos::RangePolicy policy_select3(0,inum); + Kokkos::parallel_for("ComputeOrientOrderAtomSelect3",policy_select3,*this); + + //BOOP1 + typename Kokkos::TeamPolicy policy_boop1(((inum+team_size-1)/team_size)*maxneigh,team_size,vector_length); + Kokkos::parallel_for("ComputeOrientOrderAtomBOOP1",policy_boop1,*this); + + //BOOP2 + typename Kokkos::RangePolicy policy_boop2(0,inum); + Kokkos::parallel_for("ComputeOrientOrderAtomBOOP2",policy_boop2,*this); + + copymode = 0; + + k_qnarray.template modify(); + k_qnarray.template sync(); +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomNeigh,const typename Kokkos::TeamPolicy::member_type& team) const +{ + const int ii = team.league_rank(); + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + const X_FLOAT xtmp = x(i,0); + const X_FLOAT ytmp = x(i,1); + const X_FLOAT ztmp = x(i,2); + const int jnum = d_numneigh[i]; + + // loop over list of all neighbors within force cutoff + // distsq[] = distance sq to each + // rlist[] = distance vector to each + // nearest[] = atom indices of neighbors + + int ncount = 0; + Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team,jnum), + [&] (const int jj, int& count) { + Kokkos::single(Kokkos::PerThread(team), [&] (){ + int j = d_neighbors(i,jj); + j &= NEIGHMASK; + const F_FLOAT delx = x(j,0) - xtmp; + const F_FLOAT dely = x(j,1) - ytmp; + const F_FLOAT delz = x(j,2) - ztmp; + const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; + if (rsq < cutsq) + count++; + }); + },ncount); + + d_ncount(ii) = ncount; + + if (team.team_rank() == 0) + Kokkos::parallel_scan(Kokkos::ThreadVectorRange(team,jnum), + [&] (const int jj, int& offset, bool final) { + int j = d_neighbors(i,jj); + j &= NEIGHMASK; + const F_FLOAT delx = x(j,0) - xtmp; + const F_FLOAT dely = x(j,1) - ytmp; + const F_FLOAT delz = x(j,2) - ztmp; + const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; + if (rsq < cutsq) { + if (final) { + d_distsq(ii,offset) = rsq; + d_rlist(ii,offset,0) = delx; + d_rlist(ii,offset,1) = dely; + d_rlist(ii,offset,2) = delz; + d_nearest(ii,offset) = j; + } + offset++; + } + }); + } +} + +template +KOKKOS_INLINE_FUNCTION +void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomSelect3,const int& ii) const { + + const int i = d_ilist[ii]; + const int ncount = d_ncount(ii); + + // if not nnn neighbors, order parameter = 0; + + if ((ncount == 0) || (ncount < nnn)) { + for (int jj = 0; jj < ncol; jj++) + d_qnarray(i,jj) = 0.0; + return; + } + + // if nnn > 0, use only nearest nnn neighbors + + if (nnn > 0) { + select3(nnn, ncount, ii); + d_ncount(ii) = nnn; + } +} + +template +KOKKOS_INLINE_FUNCTION +void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomBOOP1,const typename Kokkos::TeamPolicy::member_type& team) const { + + // Extract the atom number + int ii = team.team_rank() + team.team_size() * (team.league_rank() % ((inum+team.team_size()-1)/team.team_size())); + if (ii >= inum) return; + + // Extract the neighbor number + const int jj = team.league_rank() / ((inum+team.team_size()-1)/team.team_size()); + const int ncount = d_ncount(ii); + if (jj >= ncount) return; + + // if not nnn neighbors, order parameter = 0; + + if ((ncount == 0) || (ncount < nnn)) + return; + + calc_boop1(ncount, ii, jj); +} + +template +KOKKOS_INLINE_FUNCTION +void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomBOOP2,const int& ii) const { + const int i = d_ilist[ii]; + const int ncount = d_ncount(ii); + calc_boop2(ncount, ii); +} + + +/* ---------------------------------------------------------------------- + select3 routine from Numerical Recipes (slightly modified) + find k smallest values in array of length n + sort auxiliary arrays at same time +------------------------------------------------------------------------- */ + +// Use no-op do while to create single statement + +#define SWAP(view,i,j) do { \ + tmp = view(i); view(i) = view(j); view(j) = tmp; \ + } while(0) + +#define ISWAP(view,i,j) do { \ + itmp = view(i); view(i) = view(j); view(j) = itmp; \ + } while(0) + +#define SWAP3(view,i,j) do { \ + tmp = view(i,0); view(i,0) = view(j,0); view(j,0) = tmp; \ + tmp = view(i,1); view(i,1) = view(j,1); view(j,1) = tmp; \ + tmp = view(i,2); view(i,2) = view(j,2); view(j,2) = tmp; \ + } while(0) + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void ComputeOrientOrderAtomKokkos::select3(int k, int n, int iatom) const +{ + int i,ir,j,l,mid,ia,itmp; + double a,tmp,a3[3]; + + auto arr = Kokkos::subview(d_distsq_um, iatom, Kokkos::ALL); + auto iarr = Kokkos::subview(d_nearest_um, iatom, Kokkos::ALL); + auto arr3 = Kokkos::subview(d_rlist_um, iatom, Kokkos::ALL, Kokkos::ALL); + + l = 0; + ir = n-1; + for (;;) { + if (ir <= l+1) { + if (ir == l+1 && arr[ir] < arr[l]) { + SWAP(arr,l,ir); + ISWAP(iarr,l,ir); + SWAP3(arr3,l,ir); + } + return; + } else { + mid=((l+ir+2) >> 1) - 1; + SWAP(arr,mid,l+1); + ISWAP(iarr,mid,l+1); + SWAP3(arr3,mid,l+1); + if (arr[l] > arr[ir]) { + SWAP(arr,l,ir); + ISWAP(iarr,l,ir); + SWAP3(arr3,l,ir); + } + if (arr[l+1] > arr[ir]) { + SWAP(arr,l+1,ir); + ISWAP(iarr,l+1,ir); + SWAP3(arr3,l+1,ir); + } + if (arr[l] > arr[l+1]) { + SWAP(arr,l,l+1); + ISWAP(iarr,l,l+1); + SWAP3(arr3,l,l+1); + } + i = l+1; + j = ir; + a = arr[l+1]; + ia = iarr[l+1]; + a3[0] = arr3(l+1,0); + a3[1] = arr3(l+1,1); + a3[2] = arr3(l+1,2); + for (;;) { + do i++; while (arr[i] < a); + do j--; while (arr[j] > a); + if (j < i) break; + SWAP(arr,i,j); + ISWAP(iarr,i,j); + SWAP3(arr3,i,j); + } + arr[l+1] = arr[j]; + arr[j] = a; + iarr[l+1] = iarr[j]; + iarr[j] = ia; + arr3(l+1,0) = arr3(j,0); + arr3(l+1,1) = arr3(j,1); + arr3(l+1,2) = arr3(j,2); + arr3(j,0) = a3[0]; + arr3(j,1) = a3[1]; + arr3(j,2) = a3[2]; + if (j+1 >= k) ir = j-1; + if (j+1 <= k) l = i; + } + } +} + +/* ---------------------------------------------------------------------- + calculate the bond orientational order parameters +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void ComputeOrientOrderAtomKokkos::calc_boop1(int ncount, int iatom, int ineigh) const +{ + const double r0 = d_rlist(iatom,ineigh,0); + const double r1 = d_rlist(iatom,ineigh,1); + const double r2 = d_rlist(iatom,ineigh,2); + const double rmag = sqrt(r0*r0 + r1*r1 + r2*r2); + if(rmag <= MY_EPSILON) { + return; + } + + const double costheta = r2 / rmag; + SNAcomplex expphi = {r0,r1}; + const double rxymag = sqrt(expphi.re*expphi.re+expphi.im*expphi.im); + if(rxymag <= MY_EPSILON) { + expphi.re = 1.0; + expphi.im = 0.0; + } else { + const double rxymaginv = 1.0/rxymag; + expphi.re *= rxymaginv; + expphi.im *= rxymaginv; + } + + for (int il = 0; il < nqlist; il++) { + const int l = d_qlist[il]; + + //d_qnm(iatom,il,l).re += polar_prefactor(l, 0, costheta); + const double polar_pf = polar_prefactor(l, 0, costheta); + Kokkos::atomic_add(&(d_qnm(iatom,il,l).re), polar_pf); + SNAcomplex expphim = {expphi.re,expphi.im}; + for(int m = 1; m <= +l; m++) { + const double prefactor = polar_prefactor(l, m, costheta); + SNAcomplex c = {prefactor * expphim.re, prefactor * expphim.im}; + //d_qnm(iatom,il,m+l).re += c.re; + //d_qnm(iatom,il,m+l).im += c.im; + Kokkos::atomic_add(&(d_qnm(iatom,il,m+l).re), c.re); + Kokkos::atomic_add(&(d_qnm(iatom,il,m+l).im), c.im); + if(m & 1) { + //d_qnm(iatom,il,-m+l).re -= c.re; + //d_qnm(iatom,il,-m+l).im += c.im; + Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).re), -c.re); + Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).im), c.im); + } else { + //d_qnm(iatom,il,-m+l).re += c.re; + //d_qnm(iatom,il,-m+l).im -= c.im; + Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).re), c.re); + Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).im), -c.im); + } + SNAcomplex tmp; + tmp.re = expphim.re*expphi.re - expphim.im*expphi.im; + tmp.im = expphim.re*expphi.im + expphim.im*expphi.re; + expphim.re = tmp.re; + expphim.im = tmp.im; + } + } +} + +/* ---------------------------------------------------------------------- + calculate the bond orientational order parameters +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int iatom) const +{ + // convert sums to averages + + double facn = 1.0 / ncount; + for (int il = 0; il < nqlist; il++) { + int l = d_qlist[il]; + for(int m = 0; m < 2*l+1; m++) { + d_qnm(iatom,il,m).re *= facn; + d_qnm(iatom,il,m).im *= facn; + } + } + + // calculate Q_l + // NOTE: optional W_l_hat and components of Q_qlcomp use these stored Q_l values + + int jj = 0; + for (int il = 0; il < nqlist; il++) { + int l = d_qlist[il]; + double qnormfac = sqrt(MY_4PI/(2*l+1)); + double qm_sum = 0.0; + for(int m = 0; m < 2*l+1; m++) + qm_sum += d_qnm(iatom,il,m).re*d_qnm(iatom,il,m).re + d_qnm(iatom,il,m).im*d_qnm(iatom,il,m).im; + d_qnarray(iatom,jj++) = qnormfac * sqrt(qm_sum); + } + + // calculate W_l + + if (wlflag) { + int idxcg_count = 0; + for (int il = 0; il < nqlist; il++) { + int l = d_qlist[il]; + double wlsum = 0.0; + for(int m1 = 0; m1 < 2*l+1; m1++) { + for(int m2 = MAX(0,l-m1); m2 < MIN(2*l+1,3*l-m1+1); m2++) { + int m = m1 + m2 - l; + SNAcomplex qm1qm2; + qm1qm2.re = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).re - d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).im; + qm1qm2.im = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).im + d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).re; + wlsum += (qm1qm2.re*d_qnm(iatom,il,m).re + qm1qm2.im*d_qnm(iatom,il,m).im)*d_cglist[idxcg_count]; + idxcg_count++; + } + } + d_qnarray(iatom,jj++) = wlsum/sqrt(2.0*l+1.0); + } + } + + // calculate W_l_hat + + if (wlhatflag) { + int idxcg_count = 0; + for (int il = 0; il < nqlist; il++) { + int l = d_qlist[il]; + double wlsum = 0.0; + for(int m1 = 0; m1 < 2*l+1; m1++) { + for(int m2 = MAX(0,l-m1); m2 < MIN(2*l+1,3*l-m1+1); m2++) { + const int m = m1 + m2 - l; + SNAcomplex qm1qm2; + qm1qm2.re = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).re - d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).im; + qm1qm2.im = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).im + d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).re; + wlsum += (qm1qm2.re*d_qnm(iatom,il,m).re + qm1qm2.im*d_qnm(iatom,il,m).im)*d_cglist[idxcg_count]; + idxcg_count++; + } + } + // Whats = [w/(q/np.sqrt(np.pi * 4 / (2 * l + 1)))**3 if abs(q) > 1.0e-6 else 0.0 for l,q,w in zip(range(1,max_l+1),Qs,Ws)] + if (d_qnarray(iatom,il) < QEPSILON) + d_qnarray(iatom,jj++) = 0.0; + else { + const double qnormfac = sqrt(MY_4PI/(2*l+1)); + const double qnfac = qnormfac/d_qnarray(iatom,il); + d_qnarray(iatom,jj++) = wlsum/sqrt(2.0*l+1.0)*(qnfac*qnfac*qnfac); + } + } + } + + // Calculate components of Q_l, for l=qlcomp + + if (qlcompflag) { + const int il = iqlcomp; + const int l = qlcomp; + if (d_qnarray(iatom,il) < QEPSILON) + for(int m = 0; m < 2*l+1; m++) { + d_qnarray(iatom,jj++) = 0.0; + d_qnarray(iatom,jj++) = 0.0; + } + else { + const double qnormfac = sqrt(MY_4PI/(2*l+1)); + const double qnfac = qnormfac/d_qnarray(iatom,il); + for(int m = 0; m < 2*l+1; m++) { + d_qnarray(iatom,jj++) = d_qnm(iatom,il,m).re * qnfac; + d_qnarray(iatom,jj++) = d_qnm(iatom,il,m).im * qnfac; + } + } + } + +} + +/* ---------------------------------------------------------------------- + polar prefactor for spherical harmonic Y_l^m, where + Y_l^m (theta, phi) = prefactor(l, m, cos(theta)) * exp(i*m*phi) +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +double ComputeOrientOrderAtomKokkos::polar_prefactor(int l, int m, double costheta) const +{ + const int mabs = abs(m); + + double prefactor = 1.0; + for (int i=l-mabs+1; i < l+mabs+1; ++i) + prefactor *= static_cast(i); + + prefactor = sqrt(static_cast(2*l+1)/(MY_4PI*prefactor)) + * associated_legendre(l,mabs,costheta); + + if ((m < 0) && (m % 2)) prefactor = -prefactor; + + return prefactor; +} + +/* ---------------------------------------------------------------------- + associated legendre polynomial +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +double ComputeOrientOrderAtomKokkos::associated_legendre(int l, int m, double x) const +{ + if (l < m) return 0.0; + + double p(1.0), pm1(0.0), pm2(0.0); + + if (m != 0) { + const double sqx = sqrt(1.0-x*x); + for (int i=1; i < m+1; ++i) + p *= static_cast(2*i-1) * sqx; + } + + for (int i=m+1; i < l+1; ++i) { + pm2 = pm1; + pm1 = p; + p = (static_cast(2*i-1)*x*pm1 + - static_cast(i+m-1)*pm2) / static_cast(i-m); + } + + return p; +} + +/* ---------------------------------------------------------------------- + assign Clebsch-Gordan coefficients + using the quasi-binomial formula VMK 8.2.1(3) + specialized for case j1=j2=j=l +------------------------------------------------------------------------- */ + +template +void ComputeOrientOrderAtomKokkos::init_clebsch_gordan() +{ + double sum,dcg,sfaccg, sfac1, sfac2; + int m, aa2, bb2, cc2; + int ifac, idxcg_count; + + idxcg_count = 0; + for (int il = 0; il < nqlist; il++) { + int l = qlist[il]; + for(int m1 = 0; m1 < 2*l+1; m1++) + for(int m2 = MAX(0,l-m1); m2 < MIN(2*l+1,3*l-m1+1); m2++) + idxcg_count++; + } + idxcg_max = idxcg_count; + d_cglist = t_sna_1d("orientorder/atom:d_cglist",idxcg_max); + auto h_cglist = Kokkos::create_mirror_view(d_cglist); + + idxcg_count = 0; + for (int il = 0; il < nqlist; il++) { + int l = qlist[il]; + for(int m1 = 0; m1 < 2*l+1; m1++) { + aa2 = m1 - l; + for(int m2 = MAX(0,l-m1); m2 < MIN(2*l+1,3*l-m1+1); m2++) { + bb2 = m2 - l; + m = aa2 + bb2 + l; + + sum = 0.0; + for (int z = MAX(0, MAX(-aa2, bb2)); + z <= MIN(l, MIN(l - aa2, l + bb2)); z++) { + ifac = z % 2 ? -1 : 1; + sum += ifac / + (factorial(z) * + factorial(l - z) * + factorial(l - aa2 - z) * + factorial(l + bb2 - z) * + factorial(aa2 + z) * + factorial(-bb2 + z)); + } + + cc2 = m - l; + sfaccg = sqrt(factorial(l + aa2) * + factorial(l - aa2) * + factorial(l + bb2) * + factorial(l - bb2) * + factorial(l + cc2) * + factorial(l - cc2) * + (2*l + 1)); + + sfac1 = factorial(3*l + 1); + sfac2 = factorial(l); + dcg = sqrt(sfac2*sfac2*sfac2 / sfac1); + + h_cglist[idxcg_count] = sum * dcg * sfaccg; + idxcg_count++; + } + } + } + Kokkos::deep_copy(d_cglist,h_cglist); +} + +namespace LAMMPS_NS { +template class ComputeOrientOrderAtomKokkos; +#ifdef KOKKOS_ENABLE_CUDA +template class ComputeOrientOrderAtomKokkos; +#endif +} diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.h b/src/KOKKOS/compute_orientorder_atom_kokkos.h new file mode 100644 index 0000000000..b0e96df0ec --- /dev/null +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.h @@ -0,0 +1,150 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS + +ComputeStyle(orientorder/atom/kk,ComputeOrientOrderAtomKokkos) +ComputeStyle(orientorder/atom/kk/device,ComputeOrientOrderAtomKokkos) +ComputeStyle(orientorder/atom/kk/host,ComputeOrientOrderAtomKokkos) + +#else + +#ifndef LMP_COMPUTE_ORIENTORDER_ATOM_KOKKOS_H +#define LMP_COMPUTE_ORIENTORDER_ATOM_KOKKOS_H + +#include "compute_orientorder_atom.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +typedef double SNAreal; + +struct alignas(2*sizeof(SNAreal)) SNAcomplex{ + SNAreal re, im; + + KOKKOS_INLINE_FUNCTION + SNAcomplex() : re(0),im(0) + {} + + KOKKOS_INLINE_FUNCTION + SNAcomplex(SNAreal real_in, SNAreal imag_in) + :re(real_in),im(imag_in) + {} +}; + +struct TagComputeOrientOrderAtomNeigh{}; +struct TagComputeOrientOrderAtomSelect3{}; +struct TagComputeOrientOrderAtomBOOP1{}; +struct TagComputeOrientOrderAtomBOOP2{}; + +template +class ComputeOrientOrderAtomKokkos : public ComputeOrientOrderAtom { + public: + typedef Kokkos::View t_sna_1i; + typedef Kokkos::View t_sna_1d; + typedef Kokkos::View > t_sna_1d_atomic; + typedef Kokkos::View t_sna_2i_lr; + typedef Kokkos::View > t_sna_2i_lr_um; + typedef Kokkos::View t_sna_2i; + typedef Kokkos::View t_sna_2d; + typedef Kokkos::View t_sna_2d_lr; + typedef Kokkos::DualView tdual_sna_2d_lr; + typedef Kokkos::View > t_sna_2d_lr_um; + typedef Kokkos::View t_sna_3d; + typedef Kokkos::View t_sna_3d_lr; + typedef Kokkos::View > t_sna_3d_lr_um; + typedef Kokkos::View t_sna_4d; + typedef Kokkos::View t_sna_3d3; + typedef Kokkos::View t_sna_5d; + + typedef Kokkos::View t_sna_1c; + typedef Kokkos::View > t_sna_1c_atomic; + typedef Kokkos::View t_sna_2c; + typedef Kokkos::View t_sna_2c_lr; + typedef Kokkos::View t_sna_3c; + typedef Kokkos::View t_sna_4c; + typedef Kokkos::View t_sna_3c3; + typedef Kokkos::View t_sna_5c; + + typedef DeviceType device_type; + typedef ArrayTypes AT; + typedef int value_type; + + ComputeOrientOrderAtomKokkos(class LAMMPS *, int, char **); + ~ComputeOrientOrderAtomKokkos(); + void init(); + void compute_peratom(); + t_sna_1i d_qlist; + + KOKKOS_INLINE_FUNCTION + void operator() (TagComputeOrientOrderAtomNeigh, const typename Kokkos::TeamPolicy::member_type& team) const; + + KOKKOS_INLINE_FUNCTION + void operator() (TagComputeOrientOrderAtomSelect3, const int& ii) const; + + KOKKOS_INLINE_FUNCTION + void operator() (TagComputeOrientOrderAtomBOOP1, const typename Kokkos::TeamPolicy::member_type& team) const; + + KOKKOS_INLINE_FUNCTION + void operator() (TagComputeOrientOrderAtomBOOP2, const int& ii) const; + + private: + int inum; + + typename AT::t_x_array_randomread x; + typename ArrayTypes::t_int_1d mask; + + typename AT::t_neighbors_2d d_neighbors; + typename AT::t_int_1d_randomread d_ilist; + typename AT::t_int_1d_randomread d_numneigh; + + t_sna_1i d_ncount; + t_sna_2d_lr d_distsq; + t_sna_2i_lr d_nearest; + t_sna_3d_lr d_rlist; + + t_sna_2d_lr_um d_distsq_um; + t_sna_2i_lr_um d_nearest_um; + t_sna_3d_lr_um d_rlist_um; + + tdual_sna_2d_lr k_qnarray; + t_sna_2d_lr d_qnarray; + t_sna_3c d_qnm; + + KOKKOS_INLINE_FUNCTION + void select3(int, int, int) const; + + KOKKOS_INLINE_FUNCTION + void calc_boop1(int, int, int) const; + + KOKKOS_INLINE_FUNCTION + void calc_boop2(int, int) const; + + KOKKOS_INLINE_FUNCTION + double polar_prefactor(int, int, double) const; + + KOKKOS_INLINE_FUNCTION + double associated_legendre(int, int, double) const; + + void init_clebsch_gordan(); + t_sna_1d d_cglist; // Clebsch-Gordan coeffs +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/KSPACE/pair_born_coul_long.cpp b/src/KSPACE/pair_born_coul_long.cpp index b5b3eda64f..b4d050412a 100644 --- a/src/KSPACE/pair_born_coul_long.cpp +++ b/src/KSPACE/pair_born_coul_long.cpp @@ -47,6 +47,7 @@ PairBornCoulLong::PairBornCoulLong(LAMMPS *lmp) : Pair(lmp) ewaldflag = pppmflag = 1; ftable = NULL; writedata = 1; + cut_respa = NULL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_buck_long_coul_long.cpp b/src/KSPACE/pair_buck_long_coul_long.cpp index 7f369045c3..6c731b73b3 100644 --- a/src/KSPACE/pair_buck_long_coul_long.cpp +++ b/src/KSPACE/pair_buck_long_coul_long.cpp @@ -52,6 +52,7 @@ PairBuckLongCoulLong::PairBuckLongCoulLong(LAMMPS *lmp) : Pair(lmp) writedata = 1; ftable = NULL; fdisptable = NULL; + cut_respa = NULL; } /* ---------------------------------------------------------------------- diff --git a/src/KSPACE/pair_coul_long.cpp b/src/KSPACE/pair_coul_long.cpp index 004835007d..9a9f2f3783 100644 --- a/src/KSPACE/pair_coul_long.cpp +++ b/src/KSPACE/pair_coul_long.cpp @@ -46,6 +46,7 @@ PairCoulLong::PairCoulLong(LAMMPS *lmp) : Pair(lmp) ewaldflag = pppmflag = 1; ftable = NULL; qdist = 0.0; + cut_respa = NULL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_lj_charmm_coul_long.cpp b/src/KSPACE/pair_lj_charmm_coul_long.cpp index 22ed923b49..390005d80e 100644 --- a/src/KSPACE/pair_lj_charmm_coul_long.cpp +++ b/src/KSPACE/pair_lj_charmm_coul_long.cpp @@ -51,6 +51,7 @@ PairLJCharmmCoulLong::PairLJCharmmCoulLong(LAMMPS *lmp) : Pair(lmp) implicit = 0; mix_flag = ARITHMETIC; writedata = 1; + cut_respa = NULL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp b/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp index ce7fda5f18..0371ac42c5 100644 --- a/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp +++ b/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp @@ -55,6 +55,7 @@ PairLJCharmmfswCoulLong::PairLJCharmmfswCoulLong(LAMMPS *lmp) : Pair(lmp) implicit = 0; mix_flag = ARITHMETIC; writedata = 1; + cut_respa = NULL; // short-range/long-range flag accessed by DihedralCharmmfsw diff --git a/src/KSPACE/pair_lj_cut_coul_long.cpp b/src/KSPACE/pair_lj_cut_coul_long.cpp index 23e182435d..ff20dc2570 100644 --- a/src/KSPACE/pair_lj_cut_coul_long.cpp +++ b/src/KSPACE/pair_lj_cut_coul_long.cpp @@ -53,6 +53,7 @@ PairLJCutCoulLong::PairLJCutCoulLong(LAMMPS *lmp) : Pair(lmp) writedata = 1; ftable = NULL; qdist = 0.0; + cut_respa = NULL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_lj_long_coul_long.cpp b/src/KSPACE/pair_lj_long_coul_long.cpp index 4af3cdeecd..94955d2d6d 100644 --- a/src/KSPACE/pair_lj_long_coul_long.cpp +++ b/src/KSPACE/pair_lj_long_coul_long.cpp @@ -55,6 +55,7 @@ PairLJLongCoulLong::PairLJLongCoulLong(LAMMPS *lmp) : Pair(lmp) ftable = NULL; fdisptable = NULL; qdist = 0.0; + cut_respa = NULL; } /* ---------------------------------------------------------------------- diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index b02de2af0d..e1f0ea0bfe 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -78,8 +78,9 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : int api_version; p->cmd("getApiVersion",&api_version); - if (api_version > 6) - error->all(FLERR,"Incompatible API version for PLUMED in fix plumed"); + if ((api_version < 5) || (api_version > 7)) + error->all(FLERR,"Incompatible API version for PLUMED in fix plumed. " + "Only Plumed 2.4.x, 2.5.x, and 2.6.x are tested and supported."); // If the -partition option is activated then enable // inter-partition communication diff --git a/src/compute_orientorder_atom.cpp b/src/compute_orientorder_atom.cpp index dcb104fc3a..2abe4e3bb3 100644 --- a/src/compute_orientorder_atom.cpp +++ b/src/compute_orientorder_atom.cpp @@ -162,6 +162,8 @@ ComputeOrientOrderAtom::ComputeOrientOrderAtom(LAMMPS *lmp, int narg, char **arg ComputeOrientOrderAtom::~ComputeOrientOrderAtom() { + if (copymode) return; + memory->destroy(qnarray); memory->destroy(distsq); memory->destroy(rlist); diff --git a/src/compute_orientorder_atom.h b/src/compute_orientorder_atom.h index 643875ccd0..46894db373 100644 --- a/src/compute_orientorder_atom.h +++ b/src/compute_orientorder_atom.h @@ -28,16 +28,16 @@ class ComputeOrientOrderAtom : public Compute { public: ComputeOrientOrderAtom(class LAMMPS *, int, char **); ~ComputeOrientOrderAtom(); - void init(); + virtual void init(); void init_list(int, class NeighList *); - void compute_peratom(); + virtual void compute_peratom(); double memory_usage(); double cutsq; int iqlcomp, qlcomp, qlcompflag, wlflag, wlhatflag; int *qlist; int nqlist; - private: + protected: int nmax,maxneigh,ncol,nnn; class NeighList *list; double *distsq; @@ -59,7 +59,7 @@ class ComputeOrientOrderAtom : public Compute { static const int nmaxfactorial = 167; static const double nfac_table[]; double factorial(int); - void init_clebsch_gordan(); + virtual void init_clebsch_gordan(); double *cglist; // Clebsch-Gordan coeffs int idxcg_max; }; diff --git a/src/lmptype.h b/src/lmptype.h index c1902e7ebe..65e46535fc 100644 --- a/src/lmptype.h +++ b/src/lmptype.h @@ -28,13 +28,6 @@ #ifndef LMP_LMPTYPE_H #define LMP_LMPTYPE_H -// C++11 check -#ifndef LAMMPS_CXX98 -#if __cplusplus <= 199711L - #error LAMMPS is planning to transition to C++11. To disable this error please use a C++11 compliant compiler, enable C++11 (or later) compliance, or define LAMMPS_CXX98 in your makefile -#endif -#endif - #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS #endif diff --git a/src/modify.cpp b/src/modify.cpp index 101540f786..864bc8f2b4 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -50,6 +50,7 @@ Modify::Modify(LAMMPS *lmp) : Pointers(lmp) n_pre_force_respa = n_post_force_respa = n_final_integrate_respa = 0; n_min_pre_exchange = n_min_pre_force = n_min_pre_reverse = 0; n_min_post_force = n_min_energy = 0; + n_timeflag = -1; fix = NULL; fmask = NULL; @@ -526,6 +527,11 @@ void Modify::thermo_energy_atom(int nlocal, double *energy) void Modify::post_run() { for (int i = 0; i < nfix; i++) fix[i]->post_run(); + + // must reset this to its default value, since computes may be added + // or removed between runs and with this change we will redirect any + // calls to addstep_compute() to addstep_compute_all() instead. + n_timeflag = -1; } /* ---------------------------------------------------------------------- @@ -1283,6 +1289,14 @@ void Modify::clearstep_compute() void Modify::addstep_compute(bigint newstep) { + // If we are called before the first run init, n_timeflag is not yet + // initialized, thus defer to addstep_compute_all() instead + + if (n_timeflag < 0) { + addstep_compute_all(newstep); + return; + } + for (int icompute = 0; icompute < n_timeflag; icompute++) if (compute[list_timeflag[icompute]]->invoked_flag) compute[list_timeflag[icompute]]->addstep(newstep); diff --git a/src/pair_coul_streitz.h b/src/pair_coul_streitz.h index c304365270..0f23c111c7 100644 --- a/src/pair_coul_streitz.h +++ b/src/pair_coul_streitz.h @@ -55,7 +55,6 @@ class PairCoulStreitz : public Pair { // Kspace parameters int kspacetype; double cut_coul, cut_coulsq; - double *cut_respa; double **scale; // Wolf diff --git a/src/pair_lj96_cut.cpp b/src/pair_lj96_cut.cpp index f554872965..8be6fefa44 100644 --- a/src/pair_lj96_cut.cpp +++ b/src/pair_lj96_cut.cpp @@ -41,6 +41,7 @@ PairLJ96Cut::PairLJ96Cut(LAMMPS *lmp) : Pair(lmp) { respa_enable = 1; writedata = 1; + cut_respa = NULL; } /* ---------------------------------------------------------------------- */ diff --git a/src/pair_mie_cut.cpp b/src/pair_mie_cut.cpp index 4ce82381f3..f031401a00 100644 --- a/src/pair_mie_cut.cpp +++ b/src/pair_mie_cut.cpp @@ -40,6 +40,7 @@ using namespace MathConst; PairMIECut::PairMIECut(LAMMPS *lmp) : Pair(lmp) { respa_enable = 1; + cut_respa = NULL; } /* ---------------------------------------------------------------------- */ diff --git a/src/reader_native.cpp b/src/reader_native.cpp index da2c97bbe5..26cb45a686 100644 --- a/src/reader_native.cpp +++ b/src/reader_native.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -56,12 +57,15 @@ int ReaderNative::read_time(bigint &ntimestep) char *eof = fgets(line,MAXLINE,fp); if (eof == NULL) return 1; - // skip over unit information, if present. + // skip over unit and time information, if present. - if (strstr(line,"ITEM: UNITS") == line) + if (utils::strmatch(line,"^\\s*ITEM: UNITS\\s*$")) read_lines(2); - if (strstr(line,"ITEM: TIMESTEP") != line) + if (utils::strmatch(line,"^\\s*ITEM: TIME\\s*$")) + read_lines(2); + + if (!utils::strmatch(line,"^\\s*ITEM: TIMESTEP\\s*$")) error->one(FLERR,"Dump file is incorrectly formatted"); read_lines(1); diff --git a/src/set.cpp b/src/set.cpp index 9807b07ea4..e3b1962d5d 100644 --- a/src/set.cpp +++ b/src/set.cpp @@ -1084,13 +1084,18 @@ void Set::setrandom(int keyword) ranmars->select_subset(nsubset,count,flag,work); // change types of selected atoms + // flag vector from select_subset() is only for eligible atoms count = 0; - for (i = 0; i < nlocal; i++) - if (select[i] && flag[i]) { + int eligible = 0; + for (i = 0; i < nlocal; i++) { + if (!select[i]) continue; + if (flag[eligible]) { atom->type[i] = newtype; count++; } + eligible++; + } // clean up diff --git a/src/suffix.h b/src/suffix.h index 88629aa796..177990eb68 100644 --- a/src/suffix.h +++ b/src/suffix.h @@ -16,15 +16,16 @@ namespace LAMMPS_NS { -enum Suffix { - NONE = 0, - OPT = 1<<0, - GPU = 1<<1, - OMP = 1<<2, - INTEL = 1<<3, - KOKKOS = 1<<4 -}; - +namespace Suffix { + enum { + NONE = 0, + OPT = 1<<0, + GPU = 1<<1, + OMP = 1<<2, + INTEL = 1<<3, + KOKKOS = 1<<4 + }; +} } #endif diff --git a/src/version.h b/src/version.h index e43844a567..352680380b 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define LAMMPS_VERSION "4 Feb 2020" +#define LAMMPS_VERSION "18 Feb 2020" From 796e1ac4e90d94bfdefb962af4b48c6eb659908e Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 24 Feb 2020 13:29:22 -0700 Subject: [PATCH 02/85] Update docs --- doc/src/compute_orientorder_atom.rst | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/doc/src/compute_orientorder_atom.rst b/doc/src/compute_orientorder_atom.rst index b864db82a7..7a294bed5e 100644 --- a/doc/src/compute_orientorder_atom.rst +++ b/doc/src/compute_orientorder_atom.rst @@ -3,6 +3,9 @@ compute orientorder/atom command ================================ +compute orientorder/atom/kk command +======================= + Syntax """""" @@ -132,6 +135,30 @@ too frequently. :doc:`special_bonds ` command that includes all pairs in the neighbor list. +---------- + + +Styles with a *gpu*\ , *intel*\ , *kk*\ , *omp*\ , or *opt* suffix are +functionally the same as the corresponding style without the suffix. +They have been optimized to run faster, depending on your available +hardware, as discussed on the :doc:`Speed packages ` doc +page. The accelerated styles take the same arguments and should +produce the same results, except for round-off and precision issues. + +These accelerated styles are part of the GPU, USER-INTEL, KOKKOS, +USER-OMP and OPT packages, respectively. They are only enabled if +LAMMPS was built with those packages. See the :doc:`Build package ` doc page for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the :doc:`-suffix command-line switch ` when you invoke LAMMPS, or you can use the +:doc:`suffix ` command in your input script. + +See the :doc:`Speed packages ` doc page for more +instructions on how to use the accelerated styles effectively. + + +---------- + **Output info:** This compute calculates a per-atom array with *nlvalues* columns, From 29075c8257b20a6bb6df2b9bd9e8f89f672ce9b9 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 24 Feb 2020 13:31:13 -0700 Subject: [PATCH 03/85] Fix compile issue --- src/KOKKOS/compute_orientorder_atom_kokkos.h | 15 ------------ src/KOKKOS/kokkos_type.h | 18 +++++++++++++++ src/KOKKOS/sna_kokkos.h | 24 -------------------- 3 files changed, 18 insertions(+), 39 deletions(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.h b/src/KOKKOS/compute_orientorder_atom_kokkos.h index b0e96df0ec..9caa17136b 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.h +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.h @@ -27,21 +27,6 @@ ComputeStyle(orientorder/atom/kk/host,ComputeOrientOrderAtomKokkos) namespace LAMMPS_NS { -typedef double SNAreal; - -struct alignas(2*sizeof(SNAreal)) SNAcomplex{ - SNAreal re, im; - - KOKKOS_INLINE_FUNCTION - SNAcomplex() : re(0),im(0) - {} - - KOKKOS_INLINE_FUNCTION - SNAcomplex(SNAreal real_in, SNAreal imag_in) - :re(real_in),im(imag_in) - {} -}; - struct TagComputeOrientOrderAtomNeigh{}; struct TagComputeOrientOrderAtomSelect3{}; struct TagComputeOrientOrderAtomBOOP1{}; diff --git a/src/KOKKOS/kokkos_type.h b/src/KOKKOS/kokkos_type.h index d21b9eecd2..7b6e86106d 100644 --- a/src/KOKKOS/kokkos_type.h +++ b/src/KOKKOS/kokkos_type.h @@ -1023,6 +1023,24 @@ struct params_lj_coul { F_FLOAT cut_ljsq,cut_coulsq,lj1,lj2,lj3,lj4,offset; }; +// Pair SNAP + +typedef double SNAreal; + +//typedef struct { SNAreal re, im; } SNAcomplex; +struct alignas(2*sizeof(SNAreal)) SNAcomplex{ + SNAreal re, im; + + KOKKOS_INLINE_FUNCTION + SNAcomplex() : re(0),im(0) + {} + + KOKKOS_INLINE_FUNCTION + SNAcomplex(SNAreal real_in, SNAreal imag_in) + :re(real_in),im(imag_in) + {} +}; + #if defined(KOKKOS_ENABLE_CXX11) #undef ISFINITE #define ISFINITE(x) std::isfinite(x) diff --git a/src/KOKKOS/sna_kokkos.h b/src/KOKKOS/sna_kokkos.h index 775c8eead4..12c986cc93 100644 --- a/src/KOKKOS/sna_kokkos.h +++ b/src/KOKKOS/sna_kokkos.h @@ -25,30 +25,6 @@ namespace LAMMPS_NS { -typedef double SNAreal; - -//typedef struct { SNAreal re, im; } SNAcomplex; -struct alignas(2*sizeof(SNAreal)) SNAcomplex{ - SNAreal re, im; - - KOKKOS_INLINE_FUNCTION - SNAcomplex() : re(0),im(0) - {} - - KOKKOS_INLINE_FUNCTION - SNAcomplex(SNAreal real_in, SNAreal imag_in) - :re(real_in),im(imag_in) - {} -}; - -//struct SNAKK_ZINDICES { -// int j1, j2, j, ma1min, ma2max, mb1min, mb2max, na, nb, jju; -//}; -// -//struct SNAKK_BINDICES { -// int j1, j2, j; -//}; - template class SNAKokkos { From c505058c5c7b9235e0d7e8e580d686974ddc0a96 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 24 Feb 2020 15:43:29 -0700 Subject: [PATCH 04/85] Add flag for Kokkos computes --- src/KOKKOS/compute_orientorder_atom_kokkos.cpp | 1 + src/KOKKOS/compute_temp_kokkos.cpp | 1 + src/compute.cpp | 1 + src/compute.h | 2 +- 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp index 7915e4faa9..65bb08b18d 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -52,6 +52,7 @@ template ComputeOrientOrderAtomKokkos::ComputeOrientOrderAtomKokkos(LAMMPS *lmp, int narg, char **arg) : ComputeOrientOrderAtom(lmp, narg, arg) { + kokkosable = 1; atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; datamask_read = EMPTY_MASK; diff --git a/src/KOKKOS/compute_temp_kokkos.cpp b/src/KOKKOS/compute_temp_kokkos.cpp index a2fcf63125..f5547d0200 100644 --- a/src/KOKKOS/compute_temp_kokkos.cpp +++ b/src/KOKKOS/compute_temp_kokkos.cpp @@ -31,6 +31,7 @@ template ComputeTempKokkos::ComputeTempKokkos(LAMMPS *lmp, int narg, char **arg) : ComputeTemp(lmp, narg, arg) { + kokkosable = 1; atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; diff --git a/src/compute.cpp b/src/compute.cpp index cc92d2b5d3..4009396eb0 100644 --- a/src/compute.cpp +++ b/src/compute.cpp @@ -102,6 +102,7 @@ Compute::Compute(LAMMPS *lmp, int narg, char **arg) : datamask_modify = ALL_MASK; copymode = 0; + kokkosable = 0; } /* ---------------------------------------------------------------------- */ diff --git a/src/compute.h b/src/compute.h index c28af32c26..66974bf106 100644 --- a/src/compute.h +++ b/src/compute.h @@ -91,7 +91,7 @@ class Compute : protected Pointers { ExecutionSpace execution_space; unsigned int datamask_read,datamask_modify; - int copymode; + int copymode,kokkosable; Compute(class LAMMPS *, int, char **); virtual ~Compute(); From 59370d797f46ae2bfb66cc3ace93173f646bdc20 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 25 Feb 2020 08:58:01 -0700 Subject: [PATCH 05/85] Use more generic type for k_qnarray --- src/KOKKOS/compute_orientorder_atom_kokkos.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.h b/src/KOKKOS/compute_orientorder_atom_kokkos.h index 9caa17136b..d99942533f 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.h +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.h @@ -102,8 +102,8 @@ class ComputeOrientOrderAtomKokkos : public ComputeOrientOrderAtom { t_sna_2i_lr_um d_nearest_um; t_sna_3d_lr_um d_rlist_um; - tdual_sna_2d_lr k_qnarray; - t_sna_2d_lr d_qnarray; + DAT::tdual_float_2d k_qnarray; + typename AT::t_float_2d d_qnarray; t_sna_3c d_qnm; KOKKOS_INLINE_FUNCTION From a3c5c49a6b8316fa4a4a9fcf2ca1513d2f42f6be Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 25 Feb 2020 10:20:21 -0700 Subject: [PATCH 06/85] Make k_qnarray public --- src/KOKKOS/compute_orientorder_atom_kokkos.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.h b/src/KOKKOS/compute_orientorder_atom_kokkos.h index d99942533f..01d9993af2 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.h +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.h @@ -83,6 +83,9 @@ class ComputeOrientOrderAtomKokkos : public ComputeOrientOrderAtom { KOKKOS_INLINE_FUNCTION void operator() (TagComputeOrientOrderAtomBOOP2, const int& ii) const; + DAT::tdual_float_2d k_qnarray; + typename AT::t_float_2d d_qnarray; + private: int inum; @@ -102,8 +105,6 @@ class ComputeOrientOrderAtomKokkos : public ComputeOrientOrderAtom { t_sna_2i_lr_um d_nearest_um; t_sna_3d_lr_um d_rlist_um; - DAT::tdual_float_2d k_qnarray; - typename AT::t_float_2d d_qnarray; t_sna_3c d_qnm; KOKKOS_INLINE_FUNCTION From 72a9ce0f323f00375cfaed51df0c868c2e21eaff Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 4 Mar 2020 12:31:37 -0700 Subject: [PATCH 07/85] Add loop chunking option to compute_orientorder_atom_kokkos --- .../compute_orientorder_atom_kokkos.cpp | 173 ++++++++++-------- src/KOKKOS/compute_orientorder_atom_kokkos.h | 2 +- src/compute_orientorder_atom.cpp | 8 + src/compute_orientorder_atom.h | 1 + 4 files changed, 105 insertions(+), 79 deletions(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp index 65bb08b18d..a4a4451197 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -130,9 +130,6 @@ void ComputeOrientOrderAtomKokkos::compute_peratom() d_neighbors = k_list->d_neighbors; d_ilist = k_list->d_ilist; - maxneigh = 0; - Kokkos::parallel_reduce("ComputeOrientOrderAtomKokkos::find_max_neighs",inum, FindMaxNumNeighs(k_list), Kokkos::Experimental::Max(maxneigh)); - // grow order parameter array if necessary if (atom->nmax > nmax) { @@ -141,21 +138,29 @@ void ComputeOrientOrderAtomKokkos::compute_peratom() memoryKK->create_kokkos(k_qnarray,qnarray,nmax,ncol,"orientorder/atom:qnarray"); array_atom = qnarray; d_qnarray = k_qnarray.template view(); + } - d_qnm = t_sna_3c("orientorder/atom:qnm",nmax,nqlist,2*qmax+1); - d_ncount = t_sna_1i("orientorder/atom:ncount",nmax); + chunk_size = MIN(chunksize,inum); // "chunksize" variable is set by user + chunk_offset = 0; - // insure distsq and nearest arrays are long enough - - if (maxneigh > d_distsq.extent(1)) { - d_distsq = t_sna_2d_lr("orientorder/atom:distsq",nmax,maxneigh); - d_nearest = t_sna_2i_lr("orientorder/atom:nearest",nmax,maxneigh); - d_rlist = t_sna_3d_lr("orientorder/atom:rlist",nmax,maxneigh,3); - - d_distsq_um = d_distsq; - d_rlist_um = d_rlist; - d_nearest_um = d_nearest; - } + if (chunk_size > d_ncount.extent(0)) { + d_qnm = t_sna_3c("orientorder/atom:qnm",chunk_size,nqlist,2*qmax+1); + d_ncount = t_sna_1i("orientorder/atom:ncount",chunk_size); + } + + // insure distsq and nearest arrays are long enough + + maxneigh = 0; + Kokkos::parallel_reduce("ComputeOrientOrderAtomKokkos::find_max_neighs",inum, FindMaxNumNeighs(k_list), Kokkos::Experimental::Max(maxneigh)); + + if (chunk_size > d_distsq.extent(0) || maxneigh > d_distsq.extent(1)) { + d_distsq = t_sna_2d_lr("orientorder/atom:distsq",nmax,maxneigh); + d_nearest = t_sna_2i_lr("orientorder/atom:nearest",nmax,maxneigh); + d_rlist = t_sna_3d_lr("orientorder/atom:rlist",nmax,maxneigh,3); + + d_distsq_um = d_distsq; + d_rlist_um = d_rlist; + d_nearest_um = d_nearest; } // compute order parameter for each atom in group @@ -178,21 +183,29 @@ void ComputeOrientOrderAtomKokkos::compute_peratom() copymode = 1; - //Neigh - typename Kokkos::TeamPolicy policy_neigh(inum,team_size,vector_length); - Kokkos::parallel_for("ComputeOrientOrderAtomNeigh",policy_neigh,*this); + while (chunk_offset < inum) { // chunk up loop to prevent running out of memory - //Select3 - typename Kokkos::RangePolicy policy_select3(0,inum); - Kokkos::parallel_for("ComputeOrientOrderAtomSelect3",policy_select3,*this); + if (chunk_size > inum - chunk_offset) + chunk_size = inum - chunk_offset; - //BOOP1 - typename Kokkos::TeamPolicy policy_boop1(((inum+team_size-1)/team_size)*maxneigh,team_size,vector_length); - Kokkos::parallel_for("ComputeOrientOrderAtomBOOP1",policy_boop1,*this); + //Neigh + typename Kokkos::TeamPolicy policy_neigh(chunk_size,team_size,vector_length); + Kokkos::parallel_for("ComputeOrientOrderAtomNeigh",policy_neigh,*this); + + //Select3 + typename Kokkos::RangePolicy policy_select3(0,chunk_size); + Kokkos::parallel_for("ComputeOrientOrderAtomSelect3",policy_select3,*this); + + //BOOP1 + typename Kokkos::TeamPolicy policy_boop1(((chunk_size+team_size-1)/team_size)*maxneigh,team_size,vector_length); + Kokkos::parallel_for("ComputeOrientOrderAtomBOOP1",policy_boop1,*this); + + //BOOP2 + typename Kokkos::RangePolicy policy_boop2(0,chunk_size); + Kokkos::parallel_for("ComputeOrientOrderAtomBOOP2",policy_boop2,*this); - //BOOP2 - typename Kokkos::RangePolicy policy_boop2(0,inum); - Kokkos::parallel_for("ComputeOrientOrderAtomBOOP2",policy_boop2,*this); + chunk_offset += chunk_size; + } // end while copymode = 0; @@ -207,7 +220,7 @@ KOKKOS_INLINE_FUNCTION void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomNeigh,const typename Kokkos::TeamPolicy::member_type& team) const { const int ii = team.league_rank(); - const int i = d_ilist[ii]; + const int i = d_ilist[ii + chunk_offset]; if (mask[i] & groupbit) { const X_FLOAT xtmp = x(i,0); const X_FLOAT ytmp = x(i,1); @@ -263,7 +276,7 @@ template KOKKOS_INLINE_FUNCTION void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomSelect3,const int& ii) const { - const int i = d_ilist[ii]; + const int i = d_ilist[ii + chunk_offset]; const int ncount = d_ncount(ii); // if not nnn neighbors, order parameter = 0; @@ -287,11 +300,12 @@ KOKKOS_INLINE_FUNCTION void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomBOOP1,const typename Kokkos::TeamPolicy::member_type& team) const { // Extract the atom number - int ii = team.team_rank() + team.team_size() * (team.league_rank() % ((inum+team.team_size()-1)/team.team_size())); - if (ii >= inum) return; + int ii = team.team_rank() + team.team_size() * (team.league_rank() % + ((chunk_size+team.team_size()-1)/team.team_size())); + if (ii >= chunk_size) return; // Extract the neighbor number - const int jj = team.league_rank() / ((inum+team.team_size()-1)/team.team_size()); + const int jj = team.league_rank() / ((chunk_size+team.team_size()-1)/team.team_size()); const int ncount = d_ncount(ii); if (jj >= ncount) return; @@ -306,7 +320,6 @@ void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrder template KOKKOS_INLINE_FUNCTION void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomBOOP2,const int& ii) const { - const int i = d_ilist[ii]; const int ncount = d_ncount(ii); calc_boop2(ncount, ii); } @@ -338,14 +351,14 @@ void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrder template KOKKOS_INLINE_FUNCTION -void ComputeOrientOrderAtomKokkos::select3(int k, int n, int iatom) const +void ComputeOrientOrderAtomKokkos::select3(int k, int n, int ii) const { int i,ir,j,l,mid,ia,itmp; double a,tmp,a3[3]; - auto arr = Kokkos::subview(d_distsq_um, iatom, Kokkos::ALL); - auto iarr = Kokkos::subview(d_nearest_um, iatom, Kokkos::ALL); - auto arr3 = Kokkos::subview(d_rlist_um, iatom, Kokkos::ALL, Kokkos::ALL); + auto arr = Kokkos::subview(d_distsq_um, ii, Kokkos::ALL); + auto iarr = Kokkos::subview(d_nearest_um, ii, Kokkos::ALL); + auto arr3 = Kokkos::subview(d_rlist_um, ii, Kokkos::ALL, Kokkos::ALL); l = 0; ir = n-1; @@ -414,11 +427,13 @@ void ComputeOrientOrderAtomKokkos::select3(int k, int n, int iatom) template KOKKOS_INLINE_FUNCTION -void ComputeOrientOrderAtomKokkos::calc_boop1(int ncount, int iatom, int ineigh) const +void ComputeOrientOrderAtomKokkos::calc_boop1(int ncount, int ii, int ineigh) const { - const double r0 = d_rlist(iatom,ineigh,0); - const double r1 = d_rlist(iatom,ineigh,1); - const double r2 = d_rlist(iatom,ineigh,2); + const int i = d_ilist[ii + chunk_offset]; + + const double r0 = d_rlist(ii,ineigh,0); + const double r1 = d_rlist(ii,ineigh,1); + const double r2 = d_rlist(ii,ineigh,2); const double rmag = sqrt(r0*r0 + r1*r1 + r2*r2); if(rmag <= MY_EPSILON) { return; @@ -439,27 +454,27 @@ void ComputeOrientOrderAtomKokkos::calc_boop1(int ncount, int iatom, for (int il = 0; il < nqlist; il++) { const int l = d_qlist[il]; - //d_qnm(iatom,il,l).re += polar_prefactor(l, 0, costheta); + //d_qnm(ii,il,l).re += polar_prefactor(l, 0, costheta); const double polar_pf = polar_prefactor(l, 0, costheta); - Kokkos::atomic_add(&(d_qnm(iatom,il,l).re), polar_pf); + Kokkos::atomic_add(&(d_qnm(ii,il,l).re), polar_pf); SNAcomplex expphim = {expphi.re,expphi.im}; for(int m = 1; m <= +l; m++) { const double prefactor = polar_prefactor(l, m, costheta); SNAcomplex c = {prefactor * expphim.re, prefactor * expphim.im}; - //d_qnm(iatom,il,m+l).re += c.re; - //d_qnm(iatom,il,m+l).im += c.im; - Kokkos::atomic_add(&(d_qnm(iatom,il,m+l).re), c.re); - Kokkos::atomic_add(&(d_qnm(iatom,il,m+l).im), c.im); + //d_qnm(ii,il,m+l).re += c.re; + //d_qnm(ii,il,m+l).im += c.im; + Kokkos::atomic_add(&(d_qnm(ii,il,m+l).re), c.re); + Kokkos::atomic_add(&(d_qnm(ii,il,m+l).im), c.im); if(m & 1) { - //d_qnm(iatom,il,-m+l).re -= c.re; - //d_qnm(iatom,il,-m+l).im += c.im; - Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).re), -c.re); - Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).im), c.im); + //d_qnm(ii,il,-m+l).re -= c.re; + //d_qnm(ii,il,-m+l).im += c.im; + Kokkos::atomic_add(&(d_qnm(ii,il,-m+l).re), -c.re); + Kokkos::atomic_add(&(d_qnm(ii,il,-m+l).im), c.im); } else { - //d_qnm(iatom,il,-m+l).re += c.re; - //d_qnm(iatom,il,-m+l).im -= c.im; - Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).re), c.re); - Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).im), -c.im); + //d_qnm(ii,il,-m+l).re += c.re; + //d_qnm(ii,il,-m+l).im -= c.im; + Kokkos::atomic_add(&(d_qnm(ii,il,-m+l).re), c.re); + Kokkos::atomic_add(&(d_qnm(ii,il,-m+l).im), -c.im); } SNAcomplex tmp; tmp.re = expphim.re*expphi.re - expphim.im*expphi.im; @@ -476,16 +491,18 @@ void ComputeOrientOrderAtomKokkos::calc_boop1(int ncount, int iatom, template KOKKOS_INLINE_FUNCTION -void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int iatom) const +void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int ii) const { + const int i = d_ilist[ii + chunk_offset]; + // convert sums to averages double facn = 1.0 / ncount; for (int il = 0; il < nqlist; il++) { int l = d_qlist[il]; for(int m = 0; m < 2*l+1; m++) { - d_qnm(iatom,il,m).re *= facn; - d_qnm(iatom,il,m).im *= facn; + d_qnm(ii,il,m).re *= facn; + d_qnm(ii,il,m).im *= facn; } } @@ -498,8 +515,8 @@ void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int iatom) double qnormfac = sqrt(MY_4PI/(2*l+1)); double qm_sum = 0.0; for(int m = 0; m < 2*l+1; m++) - qm_sum += d_qnm(iatom,il,m).re*d_qnm(iatom,il,m).re + d_qnm(iatom,il,m).im*d_qnm(iatom,il,m).im; - d_qnarray(iatom,jj++) = qnormfac * sqrt(qm_sum); + qm_sum += d_qnm(ii,il,m).re*d_qnm(ii,il,m).re + d_qnm(ii,il,m).im*d_qnm(ii,il,m).im; + d_qnarray(i,jj++) = qnormfac * sqrt(qm_sum); } // calculate W_l @@ -513,13 +530,13 @@ void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int iatom) for(int m2 = MAX(0,l-m1); m2 < MIN(2*l+1,3*l-m1+1); m2++) { int m = m1 + m2 - l; SNAcomplex qm1qm2; - qm1qm2.re = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).re - d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).im; - qm1qm2.im = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).im + d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).re; - wlsum += (qm1qm2.re*d_qnm(iatom,il,m).re + qm1qm2.im*d_qnm(iatom,il,m).im)*d_cglist[idxcg_count]; + qm1qm2.re = d_qnm(ii,il,m1).re*d_qnm(ii,il,m2).re - d_qnm(ii,il,m1).im*d_qnm(ii,il,m2).im; + qm1qm2.im = d_qnm(ii,il,m1).re*d_qnm(ii,il,m2).im + d_qnm(ii,il,m1).im*d_qnm(ii,il,m2).re; + wlsum += (qm1qm2.re*d_qnm(ii,il,m).re + qm1qm2.im*d_qnm(ii,il,m).im)*d_cglist[idxcg_count]; idxcg_count++; } } - d_qnarray(iatom,jj++) = wlsum/sqrt(2.0*l+1.0); + d_qnarray(i,jj++) = wlsum/sqrt(2.0*l+1.0); } } @@ -534,19 +551,19 @@ void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int iatom) for(int m2 = MAX(0,l-m1); m2 < MIN(2*l+1,3*l-m1+1); m2++) { const int m = m1 + m2 - l; SNAcomplex qm1qm2; - qm1qm2.re = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).re - d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).im; - qm1qm2.im = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).im + d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).re; - wlsum += (qm1qm2.re*d_qnm(iatom,il,m).re + qm1qm2.im*d_qnm(iatom,il,m).im)*d_cglist[idxcg_count]; + qm1qm2.re = d_qnm(ii,il,m1).re*d_qnm(ii,il,m2).re - d_qnm(ii,il,m1).im*d_qnm(ii,il,m2).im; + qm1qm2.im = d_qnm(ii,il,m1).re*d_qnm(ii,il,m2).im + d_qnm(ii,il,m1).im*d_qnm(ii,il,m2).re; + wlsum += (qm1qm2.re*d_qnm(ii,il,m).re + qm1qm2.im*d_qnm(ii,il,m).im)*d_cglist[idxcg_count]; idxcg_count++; } } // Whats = [w/(q/np.sqrt(np.pi * 4 / (2 * l + 1)))**3 if abs(q) > 1.0e-6 else 0.0 for l,q,w in zip(range(1,max_l+1),Qs,Ws)] - if (d_qnarray(iatom,il) < QEPSILON) - d_qnarray(iatom,jj++) = 0.0; + if (d_qnarray(i,il) < QEPSILON) + d_qnarray(i,jj++) = 0.0; else { const double qnormfac = sqrt(MY_4PI/(2*l+1)); - const double qnfac = qnormfac/d_qnarray(iatom,il); - d_qnarray(iatom,jj++) = wlsum/sqrt(2.0*l+1.0)*(qnfac*qnfac*qnfac); + const double qnfac = qnormfac/d_qnarray(i,il); + d_qnarray(i,jj++) = wlsum/sqrt(2.0*l+1.0)*(qnfac*qnfac*qnfac); } } } @@ -556,17 +573,17 @@ void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int iatom) if (qlcompflag) { const int il = iqlcomp; const int l = qlcomp; - if (d_qnarray(iatom,il) < QEPSILON) + if (d_qnarray(i,il) < QEPSILON) for(int m = 0; m < 2*l+1; m++) { - d_qnarray(iatom,jj++) = 0.0; - d_qnarray(iatom,jj++) = 0.0; + d_qnarray(i,jj++) = 0.0; + d_qnarray(i,jj++) = 0.0; } else { const double qnormfac = sqrt(MY_4PI/(2*l+1)); - const double qnfac = qnormfac/d_qnarray(iatom,il); + const double qnfac = qnormfac/d_qnarray(i,il); for(int m = 0; m < 2*l+1; m++) { - d_qnarray(iatom,jj++) = d_qnm(iatom,il,m).re * qnfac; - d_qnarray(iatom,jj++) = d_qnm(iatom,il,m).im * qnfac; + d_qnarray(i,jj++) = d_qnm(ii,il,m).re * qnfac; + d_qnarray(i,jj++) = d_qnm(ii,il,m).im * qnfac; } } } diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.h b/src/KOKKOS/compute_orientorder_atom_kokkos.h index 01d9993af2..4964df52d4 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.h +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.h @@ -87,7 +87,7 @@ class ComputeOrientOrderAtomKokkos : public ComputeOrientOrderAtom { typename AT::t_float_2d d_qnarray; private: - int inum; + int inum,chunk_size,chunk_offset; typename AT::t_x_array_randomread x; typename ArrayTypes::t_int_1d mask; diff --git a/src/compute_orientorder_atom.cpp b/src/compute_orientorder_atom.cpp index 2abe4e3bb3..c759d14030 100644 --- a/src/compute_orientorder_atom.cpp +++ b/src/compute_orientorder_atom.cpp @@ -61,6 +61,7 @@ ComputeOrientOrderAtom::ComputeOrientOrderAtom(LAMMPS *lmp, int narg, char **arg wlflag = 0; wlhatflag = 0; qlcompflag = 0; + chunksize = 16384; // specify which orders to request @@ -143,6 +144,13 @@ ComputeOrientOrderAtom::ComputeOrientOrderAtom(LAMMPS *lmp, int narg, char **arg error->all(FLERR,"Illegal compute orientorder/atom command"); cutsq = cutoff*cutoff; iarg += 2; + } else if (strcmp(arg[iarg],"chunksize") == 0) { + if (iarg+2 > narg) + error->all(FLERR,"Illegal compute orientorder/atom command"); + chunksize = force->numeric(FLERR,arg[iarg+1]); + if (chunksize <= 0) + error->all(FLERR,"Illegal compute orientorder/atom command"); + iarg += 2; } else error->all(FLERR,"Illegal compute orientorder/atom command"); } diff --git a/src/compute_orientorder_atom.h b/src/compute_orientorder_atom.h index 46894db373..4e5084bfcd 100644 --- a/src/compute_orientorder_atom.h +++ b/src/compute_orientorder_atom.h @@ -62,6 +62,7 @@ class ComputeOrientOrderAtom : public Compute { virtual void init_clebsch_gordan(); double *cglist; // Clebsch-Gordan coeffs int idxcg_max; + int chunksize; }; } From 60bba3e238d7adbc0f5705f9db112ab34c1df4a2 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 4 Mar 2020 13:08:55 -0700 Subject: [PATCH 08/85] Fix var name --- src/KOKKOS/compute_orientorder_atom_kokkos.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp index a4a4451197..0b32d10ace 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -154,9 +154,9 @@ void ComputeOrientOrderAtomKokkos::compute_peratom() Kokkos::parallel_reduce("ComputeOrientOrderAtomKokkos::find_max_neighs",inum, FindMaxNumNeighs(k_list), Kokkos::Experimental::Max(maxneigh)); if (chunk_size > d_distsq.extent(0) || maxneigh > d_distsq.extent(1)) { - d_distsq = t_sna_2d_lr("orientorder/atom:distsq",nmax,maxneigh); - d_nearest = t_sna_2i_lr("orientorder/atom:nearest",nmax,maxneigh); - d_rlist = t_sna_3d_lr("orientorder/atom:rlist",nmax,maxneigh,3); + d_distsq = t_sna_2d_lr("orientorder/atom:distsq",chunk_size,maxneigh); + d_nearest = t_sna_2i_lr("orientorder/atom:nearest",chunk_size,maxneigh); + d_rlist = t_sna_3d_lr("orientorder/atom:rlist",chunk_size,maxneigh,3); d_distsq_um = d_distsq; d_rlist_um = d_rlist; From ba8d043c7e7fc5babed707ae5271cca03fd2ff00 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 16 Apr 2020 09:06:08 -0600 Subject: [PATCH 09/85] Update Kokkos library in LAMMPS to v3.1 --- lib/kokkos/BUILD.md | 39 +- lib/kokkos/CHANGELOG.md | 58 +- lib/kokkos/CMakeLists.txt | 61 +- lib/kokkos/Copyright.txt | 8 +- lib/kokkos/Makefile.kokkos | 191 +- lib/kokkos/Makefile.targets | 24 +- lib/kokkos/README.md | 80 +- lib/kokkos/algorithms/src/Kokkos_Random.hpp | 733 +--- lib/kokkos/algorithms/src/Kokkos_Sort.hpp | 18 +- .../algorithms/unit_tests/CMakeLists.txt | 30 +- lib/kokkos/algorithms/unit_tests/Makefile | 2 +- lib/kokkos/algorithms/unit_tests/TestCuda.cpp | 8 +- lib/kokkos/algorithms/unit_tests/TestHIP.cpp | 83 + .../algorithms/unit_tests/TestOpenMP.cpp | 24 +- .../unit_tests/TestOpenMP_Random.cpp | 77 + .../unit_tests/TestOpenMP_Sort1D.cpp | 65 + .../unit_tests/TestOpenMP_Sort3D.cpp | 65 + .../unit_tests/TestOpenMP_SortDynamicView.cpp | 65 + .../algorithms/unit_tests/TestRandom.hpp | 2 +- lib/kokkos/algorithms/unit_tests/TestSort.hpp | 41 +- lib/kokkos/appveyor.yml | 10 + lib/kokkos/benchmarks/gups/gups-kokkos.cc | 2 +- lib/kokkos/benchmarks/stream/stream-kokkos.cc | 2 +- lib/kokkos/cm_generate_makefile.bash | 339 -- lib/kokkos/cmake/Dependencies.cmake | 1 - lib/kokkos/cmake/KokkosConfigCommon.cmake.in | 3 + lib/kokkos/cmake/KokkosCore_config.h.in | 9 + .../cmake/KokkosTrilinosConfig.cmake.in | 17 + lib/kokkos/cmake/Modules/FindTPLCUDA.cmake | 6 +- lib/kokkos/cmake/Modules/FindTPLPTHREAD.cmake | 21 +- lib/kokkos/cmake/README.md | 11 +- lib/kokkos/cmake/compile_tests/clang_omp.cpp | 2 +- lib/kokkos/cmake/compile_tests/pthread.cpp | 4 + lib/kokkos/cmake/fake_tribits.cmake | 39 +- lib/kokkos/cmake/kokkos_arch.cmake | 224 +- lib/kokkos/cmake/kokkos_check_env.cmake | 12 + lib/kokkos/cmake/kokkos_compiler_id.cmake | 26 +- lib/kokkos/cmake/kokkos_corner_cases.cmake | 28 +- lib/kokkos/cmake/kokkos_enable_devices.cmake | 37 + lib/kokkos/cmake/kokkos_enable_options.cmake | 30 +- lib/kokkos/cmake/kokkos_functions.cmake | 257 +- lib/kokkos/cmake/kokkos_install.cmake | 9 +- lib/kokkos/cmake/kokkos_test_cxx_std.cmake | 15 +- lib/kokkos/cmake/kokkos_tpls.cmake | 4 + lib/kokkos/cmake/kokkos_tribits.cmake | 93 +- lib/kokkos/cmake/msvc.cmake | 11 + lib/kokkos/cmake/tpls/FindTPLCUSPARSE.cmake | 14 +- lib/kokkos/config/test_all_sandia | 55 +- .../performance_tests/CMakeLists.txt | 32 +- lib/kokkos/containers/src/Kokkos_Bitset.hpp | 10 +- lib/kokkos/containers/src/Kokkos_DualView.hpp | 140 +- .../containers/src/Kokkos_DynRankView.hpp | 29 +- .../containers/src/Kokkos_DynamicView.hpp | 24 +- .../containers/src/Kokkos_ErrorReporter.hpp | 2 +- .../containers/src/Kokkos_OffsetView.hpp | 45 +- .../containers/src/Kokkos_ScatterView.hpp | 122 +- .../containers/src/Kokkos_StaticCrsGraph.hpp | 16 +- .../containers/src/Kokkos_UnorderedMap.hpp | 36 +- lib/kokkos/containers/src/Kokkos_Vector.hpp | 4 +- .../src/impl/Kokkos_Bitset_impl.hpp | 3 +- .../impl/Kokkos_StaticCrsGraph_factory.hpp | 16 +- .../src/impl/Kokkos_UnorderedMap_impl.hpp | 31 +- .../containers/unit_tests/CMakeLists.txt | 44 +- lib/kokkos/containers/unit_tests/Makefile | 79 +- .../containers/unit_tests/TestBitset.hpp | 4 +- .../{cuda => }/TestCuda_Category.hpp | 0 .../containers/unit_tests/TestDualView.hpp | 214 +- .../containers/unit_tests/TestDynViewAPI.hpp | 42 +- .../unit_tests/TestDynViewAPI_generic.hpp | 3 + .../unit_tests/TestDynViewAPI_rank12345.hpp | 3 + .../containers/unit_tests/TestDynamicView.hpp | 12 - .../unit_tests/TestErrorReporter.hpp | 14 +- ...ROCm_Category.hpp => TestHIP_Category.hpp} | 8 +- .../unit_tests/{hpx => }/TestHPX_Category.hpp | 0 .../containers/unit_tests/TestOffsetView.hpp | 23 +- .../{openmp => }/TestOpenMP_Category.hpp | 0 .../containers/unit_tests/TestScatterView.hpp | 130 +- .../{serial => }/TestSerial_Category.hpp | 0 .../{threads => }/TestThreads_Category.hpp | 0 .../unit_tests/TestUnorderedMap.hpp | 22 + .../cuda/TestCuda_DynRankViewAPI_rank67.cpp | 47 - .../unit_tests/cuda/TestCuda_ScatterView.cpp | 47 - .../cuda/TestCuda_StaticCrsGraph.cpp | 47 - .../unit_tests/cuda/TestCuda_UnorderedMap.cpp | 47 - .../cuda/TestCuda_ViewCtorPropEmbeddedDim.cpp | 47 - .../hpx/TestHPX_DynRankViewAPI_generic.cpp | 47 - .../hpx/TestHPX_DynRankViewAPI_rank12345.cpp | 47 - .../hpx/TestHPX_DynRankViewAPI_rank67.cpp | 47 - .../unit_tests/hpx/TestHPX_DynamicView.cpp | 47 - .../unit_tests/hpx/TestHPX_ErrorReporter.cpp | 47 - .../unit_tests/hpx/TestHPX_OffsetView.cpp | 47 - .../unit_tests/hpx/TestHPX_ScatterView.cpp | 47 - .../unit_tests/hpx/TestHPX_StaticCrsGraph.cpp | 47 - .../unit_tests/hpx/TestHPX_UnorderedMap.cpp | 47 - .../hpx/TestHPX_ViewCtorPropEmbeddedDim.cpp | 47 - .../TestOpenMP_DynRankViewAPI_generic.cpp | 47 - .../TestOpenMP_DynRankViewAPI_rank12345.cpp | 47 - .../TestOpenMP_DynRankViewAPI_rank67.cpp | 47 - .../openmp/TestOpenMP_DynamicView.cpp | 47 - .../openmp/TestOpenMP_ErrorReporter.cpp | 47 - .../openmp/TestOpenMP_OffsetView.cpp | 47 - .../openmp/TestOpenMP_ScatterView.cpp | 47 - .../openmp/TestOpenMP_StaticCrsGraph.cpp | 47 - .../openmp/TestOpenMP_UnorderedMap.cpp | 47 - .../unit_tests/openmp/TestOpenMP_Vector.cpp | 47 - .../TestOpenMP_ViewCtorPropEmbeddedDim.cpp | 47 - .../unit_tests/rocm/TestROCm_BitSet.cpp | 47 - .../unit_tests/rocm/TestROCm_DualView.cpp | 47 - .../rocm/TestROCm_DynRankViewAPI_generic.cpp | 47 - .../TestROCm_DynRankViewAPI_rank12345.cpp | 47 - .../rocm/TestROCm_DynRankViewAPI_rank67.cpp | 47 - .../unit_tests/rocm/TestROCm_DynamicView.cpp | 47 - .../rocm/TestROCm_ErrorReporter.cpp | 47 - .../unit_tests/rocm/TestROCm_ScatterView.cpp | 47 - .../rocm/TestROCm_StaticCrsGraph.cpp | 47 - .../unit_tests/rocm/TestROCm_UnorderedMap.cpp | 47 - .../unit_tests/rocm/TestROCm_Vector.cpp | 47 - .../rocm/TestROCm_ViewCtorPropEmbeddedDim.cpp | 47 - .../TestSerial_DynRankViewAPI_generic.cpp | 47 - .../TestSerial_DynRankViewAPI_rank12345.cpp | 47 - .../TestSerial_DynRankViewAPI_rank67.cpp | 47 - .../serial/TestSerial_DynamicView.cpp | 47 - .../serial/TestSerial_ErrorReporter.cpp | 47 - .../serial/TestSerial_OffsetView.cpp | 46 - .../serial/TestSerial_ScatterView.cpp | 47 - .../serial/TestSerial_StaticCrsGraph.cpp | 47 - .../serial/TestSerial_UnorderedMap.cpp | 47 - .../unit_tests/serial/TestSerial_Vector.cpp | 47 - .../TestSerial_ViewCtorPropEmbeddedDim.cpp | 47 - .../TestThreads_DynRankViewAPI_generic.cpp | 47 - .../TestThreads_DynRankViewAPI_rank12345.cpp | 47 - .../TestThreads_DynRankViewAPI_rank67.cpp | 47 - .../threads/TestThreads_DynamicView.cpp | 47 - .../threads/TestThreads_ErrorReporter.cpp | 47 - .../threads/TestThreads_OffsetView.cpp | 47 - .../threads/TestThreads_ScatterView.cpp | 47 - .../threads/TestThreads_StaticCrsGraph.cpp | 47 - .../threads/TestThreads_UnorderedMap.cpp | 47 - .../unit_tests/threads/TestThreads_Vector.cpp | 47 - .../TestThreads_ViewCtorPropEmbeddedDim.cpp | 47 - lib/kokkos/core/cmake/Dependencies.cmake | 2 +- lib/kokkos/core/cmake/KokkosCore_config.h.in | 5 + lib/kokkos/core/perf_test/CMakeLists.txt | 21 +- .../core/perf_test/PerfTestBlasKernels.hpp | 274 +- .../core/perf_test/PerfTestGramSchmidt.cpp | 5 +- lib/kokkos/core/perf_test/PerfTestMain.cpp | 6 +- .../core/perf_test/PerfTest_Category.hpp | 2 +- .../perf_test/PerfTest_CustomReduction.cpp | 8 +- lib/kokkos/core/src/CMakeLists.txt | 8 + lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp | 43 +- .../core/src/Cuda/Kokkos_Cuda_Error.hpp | 4 +- .../core/src/Cuda/Kokkos_Cuda_Instance.cpp | 33 +- .../core/src/Cuda/Kokkos_Cuda_Instance.hpp | 2 + .../src/Cuda/Kokkos_Cuda_KernelLaunch.hpp | 20 +- .../core/src/Cuda/Kokkos_Cuda_Parallel.hpp | 22 +- .../core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp | 19 +- lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp | 2 +- lib/kokkos/core/src/Cuda/Kokkos_Cuda_Team.hpp | 49 + .../core/src/Cuda/Kokkos_Cuda_UniqueToken.hpp | 32 +- .../src/Cuda/Kokkos_Cuda_Vectorization.hpp | 32 +- .../Kokkos_Cuda_Version_9_8_Compatibility.hpp | 30 +- lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp | 11 +- lib/kokkos/core/src/Cuda/Kokkos_Cuda_fwd.hpp | 67 + .../src/HIP/KokkosExp_HIP_IterateTile.hpp | 3296 +++++++++++++++++ lib/kokkos/core/src/HIP/Kokkos_HIP_Abort.hpp | 68 + lib/kokkos/core/src/HIP/Kokkos_HIP_Atomic.hpp | 576 +++ .../HIP/Kokkos_HIP_BlockSize_Deduction.hpp | 339 ++ .../HIP/Kokkos_HIP_Error.hpp} | 124 +- .../core/src/HIP/Kokkos_HIP_Instance.cpp | 373 ++ .../core/src/HIP/Kokkos_HIP_Instance.hpp | 141 + .../core/src/HIP/Kokkos_HIP_KernelLaunch.cpp | 72 + .../core/src/HIP/Kokkos_HIP_KernelLaunch.hpp | 212 ++ lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.cpp | 118 + lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.hpp | 174 + .../src/HIP/Kokkos_HIP_Parallel_MDRange.hpp | 411 ++ .../src/HIP/Kokkos_HIP_Parallel_Range.hpp | 655 ++++ .../core/src/HIP/Kokkos_HIP_Parallel_Team.hpp | 562 +++ .../core/src/HIP/Kokkos_HIP_ReduceScan.hpp | 420 +++ lib/kokkos/core/src/HIP/Kokkos_HIP_Space.cpp | 636 ++++ lib/kokkos/core/src/HIP/Kokkos_HIP_Team.hpp | 1106 ++++++ .../core/src/HIP/Kokkos_HIP_Vectorization.hpp | 160 + lib/kokkos/core/src/HPX/Kokkos_HPX.cpp | 4 + .../core/src/KokkosExp_MDRangePolicy.hpp | 63 +- lib/kokkos/core/src/Kokkos_Array.hpp | 52 +- lib/kokkos/core/src/Kokkos_Atomic.hpp | 31 +- lib/kokkos/core/src/Kokkos_Complex.hpp | 112 +- lib/kokkos/core/src/Kokkos_Concepts.hpp | 83 +- lib/kokkos/core/src/Kokkos_CopyViews.hpp | 560 ++- lib/kokkos/core/src/Kokkos_Core.hpp | 21 +- lib/kokkos/core/src/Kokkos_Core_fwd.hpp | 36 +- lib/kokkos/core/src/Kokkos_Crs.hpp | 16 +- lib/kokkos/core/src/Kokkos_Cuda.hpp | 14 +- lib/kokkos/core/src/Kokkos_CudaSpace.hpp | 126 +- lib/kokkos/core/src/Kokkos_ExecPolicy.hpp | 16 +- lib/kokkos/core/src/Kokkos_Extents.hpp | 39 +- lib/kokkos/core/src/Kokkos_Future.hpp | 17 +- lib/kokkos/core/src/Kokkos_HBWSpace.hpp | 13 +- lib/kokkos/core/src/Kokkos_HIP.hpp | 65 + lib/kokkos/core/src/Kokkos_HIP_Space.hpp | 758 ++++ lib/kokkos/core/src/Kokkos_HPX.hpp | 42 +- lib/kokkos/core/src/Kokkos_HostSpace.hpp | 16 +- lib/kokkos/core/src/Kokkos_Macros.hpp | 128 +- lib/kokkos/core/src/Kokkos_MemoryPool.hpp | 67 +- lib/kokkos/core/src/Kokkos_NumericTraits.hpp | 7 +- lib/kokkos/core/src/Kokkos_OpenMP.hpp | 12 +- lib/kokkos/core/src/Kokkos_OpenMPTarget.hpp | 92 +- .../core/src/Kokkos_OpenMPTargetSpace.hpp | 10 +- lib/kokkos/core/src/Kokkos_Pair.hpp | 18 +- lib/kokkos/core/src/Kokkos_Parallel.hpp | 79 +- .../core/src/Kokkos_Parallel_Reduce.hpp | 86 +- .../src/Kokkos_Profiling_ProfileSection.hpp | 80 +- lib/kokkos/core/src/Kokkos_Qthreads.hpp | 196 - lib/kokkos/core/src/Kokkos_ROCmSpace.hpp | 2 +- lib/kokkos/core/src/Kokkos_ScratchSpace.hpp | 20 +- lib/kokkos/core/src/Kokkos_Serial.hpp | 20 +- lib/kokkos/core/src/Kokkos_TaskScheduler.hpp | 14 +- lib/kokkos/core/src/Kokkos_Threads.hpp | 11 + lib/kokkos/core/src/Kokkos_Timer.hpp | 2 +- lib/kokkos/core/src/Kokkos_Vectorization.hpp | 2 + lib/kokkos/core/src/Kokkos_View.hpp | 208 +- .../core/src/Kokkos_WorkGraphPolicy.hpp | 2 + .../core/src/OpenMP/Kokkos_OpenMP_Exec.cpp | 8 +- .../core/src/OpenMP/Kokkos_OpenMP_Exec.hpp | 12 +- .../src/OpenMP/Kokkos_OpenMP_Parallel.hpp | 6 +- .../core/src/OpenMP/Kokkos_OpenMP_Task.hpp | 4 +- .../core/src/OpenMP/Kokkos_OpenMP_Team.hpp | 5 + .../OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp | 34 +- .../OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp | 158 +- .../OpenMPTarget/Kokkos_OpenMPTarget_Exec.hpp | 55 +- .../Kokkos_OpenMPTarget_Instance.cpp | 50 + .../Kokkos_OpenMPTarget_Instance.hpp | 40 + .../Kokkos_OpenMPTarget_Parallel.hpp | 539 ++- .../Kokkos_OpenMPTarget_Parallel_MDRange.hpp | 549 +++ .../OpenMPTarget/Kokkos_OpenMPTarget_Task.hpp | 2 +- .../core/src/Qthreads/Kokkos_QthreadsExec.cpp | 535 --- .../core/src/Qthreads/Kokkos_QthreadsExec.hpp | 687 ---- .../src/Qthreads/Kokkos_Qthreads_Parallel.hpp | 753 ---- .../src/Qthreads/Kokkos_Qthreads_Task.cpp | 308 -- .../src/Qthreads/Kokkos_Qthreads_Task.hpp | 149 - .../Kokkos_Qthreads_TaskPolicy.cpp.old | 493 --- .../Kokkos_Qthreads_TaskPolicy.hpp.old | 666 ---- .../Qthreads/Kokkos_Qthreads_TaskQueue.hpp | 321 -- .../Kokkos_Qthreads_TaskQueue_impl.hpp | 398 -- lib/kokkos/core/src/Qthreads/README | 24 - .../core/src/ROCm/Kokkos_ROCm_Parallel.hpp | 13 +- .../core/src/ROCm/Kokkos_ROCm_Space.cpp | 4 +- lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp | 7 +- .../src/ROCm/Kokkos_ROCm_Vectorization.hpp | 22 +- .../core/src/Threads/Kokkos_ThreadsExec.cpp | 57 +- .../src/Threads/Kokkos_ThreadsExec_base.cpp | 4 +- .../core/src/Threads/Kokkos_ThreadsTeam.hpp | 38 +- .../src/Threads/Kokkos_Threads_Parallel.hpp | 6 +- .../Kokkos_Threads_WorkGraphPolicy.hpp | 3 +- lib/kokkos/core/src/impl/CMakeLists.txt | 2 +- .../core/src/impl/Kokkos_AnalyzePolicy.hpp | 17 +- .../core/src/impl/Kokkos_Atomic_Assembly.hpp | 3 + .../Kokkos_Atomic_Compare_Exchange_Strong.hpp | 46 +- .../Kokkos_Atomic_Compare_Exchange_Weak.hpp | 33 +- .../core/src/impl/Kokkos_Atomic_Decrement.hpp | 2 +- .../core/src/impl/Kokkos_Atomic_Exchange.hpp | 82 +- .../core/src/impl/Kokkos_Atomic_Fetch_Add.hpp | 63 +- .../core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp | 41 +- .../core/src/impl/Kokkos_Atomic_Generic.hpp | 109 +- .../impl/Kokkos_Atomic_Generic_Secondary.hpp | 76 + .../core/src/impl/Kokkos_Atomic_Increment.hpp | 2 + .../core/src/impl/Kokkos_Atomic_Load.hpp | 15 +- .../core/src/impl/Kokkos_Atomic_MinMax.hpp | 223 ++ .../core/src/impl/Kokkos_Atomic_Store.hpp | 13 +- .../core/src/impl/Kokkos_Atomic_View.hpp | 2 +- .../core/src/impl/Kokkos_Atomic_Windows.hpp | 167 +- lib/kokkos/core/src/impl/Kokkos_ChaseLev.hpp | 27 +- lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp | 5 +- lib/kokkos/core/src/impl/Kokkos_Core.cpp | 548 ++- lib/kokkos/core/src/impl/Kokkos_EBO.hpp | 20 +- lib/kokkos/core/src/impl/Kokkos_Error.cpp | 2 + lib/kokkos/core/src/impl/Kokkos_Error.hpp | 15 +- .../src/impl/Kokkos_FixedBufferMemoryPool.hpp | 27 +- .../core/src/impl/Kokkos_FunctorAdapter.hpp | 45 +- .../core/src/impl/Kokkos_FunctorAnalysis.hpp | 2 +- lib/kokkos/core/src/impl/Kokkos_HBWSpace.cpp | 11 +- .../core/src/impl/Kokkos_HostBarrier.cpp | 2 +- .../core/src/impl/Kokkos_HostBarrier.hpp | 1 + lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp | 40 +- .../core/src/impl/Kokkos_HostThreadTeam.cpp | 9 +- .../core/src/impl/Kokkos_HostThreadTeam.hpp | 22 +- lib/kokkos/core/src/impl/Kokkos_LIFO.hpp | 7 +- .../core/src/impl/Kokkos_LinkedListNode.hpp | 3 +- .../src/impl/Kokkos_MemoryPoolAllocator.hpp | 12 +- .../core/src/impl/Kokkos_Memory_Fence.hpp | 2 + .../src/impl/Kokkos_MultipleTaskQueue.hpp | 50 +- lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp | 10 - .../core/src/impl/Kokkos_OptionalRef.hpp | 17 +- .../src/impl/Kokkos_Profiling_DeviceInfo.hpp | 78 +- .../src/impl/Kokkos_Profiling_Interface.cpp | 80 +- .../src/impl/Kokkos_Profiling_Interface.hpp | 110 +- lib/kokkos/core/src/impl/Kokkos_Serial.cpp | 2 +- .../core/src/impl/Kokkos_Serial_Task.hpp | 2 +- .../core/src/impl/Kokkos_SharedAlloc.cpp | 13 +- .../core/src/impl/Kokkos_SharedAlloc.hpp | 7 +- .../src/impl/Kokkos_SimpleTaskScheduler.hpp | 16 +- .../core/src/impl/Kokkos_SingleTaskQueue.hpp | 2 +- .../core/src/impl/Kokkos_Stacktrace.cpp | 2 +- lib/kokkos/core/src/impl/Kokkos_TaskBase.hpp | 47 +- lib/kokkos/core/src/impl/Kokkos_TaskNode.hpp | 6 +- .../core/src/impl/Kokkos_TaskPolicyData.hpp | 22 +- lib/kokkos/core/src/impl/Kokkos_TaskQueue.hpp | 4 +- .../core/src/impl/Kokkos_TaskQueueCommon.hpp | 23 +- .../core/src/impl/Kokkos_TaskQueue_impl.hpp | 20 +- .../core/src/impl/Kokkos_TaskResult.hpp | 8 +- .../core/src/impl/Kokkos_TaskTeamMember.hpp | 12 +- lib/kokkos/core/src/impl/Kokkos_Traits.hpp | 203 +- .../core/src/impl/Kokkos_VLAEmulation.hpp | 2 +- lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp | 5 +- lib/kokkos/core/src/impl/Kokkos_ViewCtor.hpp | 5 +- .../core/src/impl/Kokkos_ViewLayoutTiled.hpp | 37 +- .../core/src/impl/Kokkos_ViewMapping.hpp | 69 +- lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp | 20 +- lib/kokkos/core/src/kokkos.pc.in | 71 - lib/kokkos/core/unit_test/CMakeLists.txt | 234 +- .../core/unit_test/IncrementalTest.cpp.in | 58 + lib/kokkos/core/unit_test/Makefile | 62 +- lib/kokkos/core/unit_test/TestAtomic.hpp | 28 +- lib/kokkos/core/unit_test/TestAtomicViews.hpp | 292 +- lib/kokkos/core/unit_test/TestCTestDevice.cpp | 138 + lib/kokkos/core/unit_test/TestCXX11.hpp | 1 + .../core/unit_test/TestCompilerMacros.hpp | 5 +- lib/kokkos/core/unit_test/TestComplex.hpp | 52 +- lib/kokkos/core/unit_test/TestConcepts.hpp | 81 + lib/kokkos/core/unit_test/TestCrs.hpp | 10 +- lib/kokkos/core/unit_test/TestDeepCopy.hpp | 145 + .../core/unit_test/TestLocalDeepCopy.hpp | 71 +- lib/kokkos/core/unit_test/TestMDRange.hpp | 50 +- lib/kokkos/core/unit_test/TestMemoryPool.hpp | 14 +- lib/kokkos/core/unit_test/TestRange.hpp | 58 +- .../core/unit_test/TestRangeRequire.hpp | 518 +++ lib/kokkos/core/unit_test/TestReduce.hpp | 67 +- .../unit_test/TestReduceCombinatorical.hpp | 4 +- lib/kokkos/core/unit_test/TestResize.hpp | 16 +- lib/kokkos/core/unit_test/TestScan.hpp | 12 +- lib/kokkos/core/unit_test/TestSharedAlloc.hpp | 4 +- .../core/unit_test/TestTaskScheduler.hpp | 3 + lib/kokkos/core/unit_test/TestTeam.hpp | 318 +- .../core/unit_test/TestTeamTeamSize.hpp | 6 +- lib/kokkos/core/unit_test/TestTeamVector.hpp | 5 +- .../core/unit_test/TestTeamVectorRange.hpp | 2 +- .../unit_test/TestTemplateMetaFunctions.hpp | 8 +- lib/kokkos/core/unit_test/TestViewAPI.hpp | 68 +- lib/kokkos/core/unit_test/TestViewAPI_e.hpp | 12 +- lib/kokkos/core/unit_test/TestViewCopy.hpp | 538 ++- .../core/unit_test/TestViewIsAssignable.hpp | 145 + .../TestViewLayoutStrideAssignment.hpp | 8 +- .../core/unit_test/TestViewLayoutTiled.hpp | 20 +- .../core/unit_test/TestViewMapping_a.hpp | 47 +- lib/kokkos/core/unit_test/TestView_64bit.hpp | 2 +- lib/kokkos/core/unit_test/UnitTestConfig.make | 2 +- .../unit_test/config/cmaketest/CMakeLists.txt | 12 +- .../AMDAVX_Qthreads_KokkosCore_config.h | 17 - ...RMv8-ThunderX_Qthreads_KokkosCore_config.h | 18 - .../ARMv80_Qthreads_KokkosCore_config.h | 17 - .../ARMv81_Qthreads_KokkosCore_config.h | 17 - .../results/BDW_Qthreads_KokkosCore_config.h | 23 - .../results/BGQ_Qthreads_KokkosCore_config.h | 16 - .../results/HSW_Qthreads_KokkosCore_config.h | 20 - .../results/KNC_Qthreads_KokkosCore_config.h | 20 - .../results/KNL_Qthreads_KokkosCore_config.h | 20 - .../Kepler30_Qthreads_KokkosCore_config.h | 16 - .../Kepler32_Qthreads_KokkosCore_config.h | 16 - .../Kepler35_Qthreads_KokkosCore_config.h | 16 - .../Kepler37_Qthreads_KokkosCore_config.h | 16 - .../Kepler_Qthreads_KokkosCore_config.h | 16 - .../Maxwell50_Qthreads_KokkosCore_config.h | 16 - .../Maxwell52_Qthreads_KokkosCore_config.h | 16 - .../Maxwell53_Qthreads_KokkosCore_config.h | 16 - .../Maxwell_Qthreads_KokkosCore_config.h | 16 - .../results/None_Qthreads_KokkosCore_config.h | 16 - .../Pascal60_Qthreads_KokkosCore_config.h | 16 - .../Pascal61_Qthreads_KokkosCore_config.h | 16 - .../Power7_Qthreads_KokkosCore_config.h | 20 - .../Power8_Qthreads_KokkosCore_config.h | 20 - .../Power9_Qthreads_KokkosCore_config.h | 20 - .../results/SKX_Qthreads_KokkosCore_config.h | 23 - .../results/SNB_Qthreads_KokkosCore_config.h | 20 - .../results/WSM_Qthreads_KokkosCore_config.h | 20 - .../unit_test/cuda/TestCuda_Concepts.cpp} | 3 +- .../cuda/TestCuda_DeepCopyAlignment.cpp | 2 - .../cuda/TestCuda_RangePolicyRequire.cpp} | 2 +- .../core/unit_test/cuda/TestCuda_Spaces.cpp | 67 - .../core/unit_test/cuda/TestCuda_Team.cpp | 108 +- .../unit_test/cuda/TestCuda_TeamScratch.cpp | 2 - .../unit_test/cuda/TestCuda_ViewAPI_e.cpp | 1 + .../default/TestDefaultDeviceType_d.cpp | 2 +- .../TestHIPHostPinned_Category.hpp} | 9 +- .../TestHIPHostPinned_SharedAlloc.cpp} | 9 +- .../TestHIPHostPinned_ViewAPI_a.cpp} | 2 +- .../TestHIPHostPinned_ViewAPI_b.cpp} | 2 +- .../TestHIPHostPinned_ViewAPI_c.cpp} | 2 +- .../TestHIPHostPinned_ViewAPI_d.cpp} | 2 +- .../TestHIPHostPinned_ViewAPI_e.cpp} | 2 +- .../hip/TestHIPHostPinned_ViewCopy.cpp} | 5 +- .../hip/TestHIPHostPinned_ViewMapping_a.cpp} | 5 +- .../hip/TestHIPHostPinned_ViewMapping_b.cpp} | 5 +- .../TestHIPHostPinned_ViewMapping_subview.cpp | 46 + ...estHIP_AtomicOperations_complexdouble.cpp} | 2 +- ...TestHIP_AtomicOperations_complexfloat.cpp} | 2 +- .../TestHIP_AtomicOperations_double.cpp} | 2 +- .../TestHIP_AtomicOperations_float.cpp} | 2 +- .../TestHIP_AtomicOperations_int.cpp} | 2 +- .../TestHIP_AtomicOperations_longint.cpp} | 2 +- .../TestHIP_AtomicOperations_longlongint.cpp} | 2 +- .../TestHIP_AtomicOperations_unsignedint.cpp} | 2 +- ...tHIP_AtomicOperations_unsignedlongint.cpp} | 2 +- .../unit_test/hip/TestHIP_AtomicViews.cpp} | 4 +- .../core/unit_test/hip/TestHIP_Atomics.cpp | 46 + .../core/unit_test/hip/TestHIP_Category.hpp | 53 + .../unit_test/hip/TestHIP_Complex.cpp} | 4 +- .../core/unit_test/hip/TestHIP_Concepts.cpp | 46 + lib/kokkos/core/unit_test/hip/TestHIP_Crs.cpp | 46 + .../TestHIP_DeepCopyAlignment.cpp} | 2 +- .../hip/TestHIP_FunctorAnalysis.cpp} | 4 +- .../core/unit_test/hip/TestHIP_Init.cpp | 49 + .../unit_test/hip/TestHIP_InterOp_Init.cpp | 85 + .../unit_test/hip/TestHIP_LocalDeepCopy.cpp | 46 + .../TestHIP_MDRange_a.cpp} | 2 +- .../TestHIP_MDRange_b.cpp} | 2 +- .../TestHIP_MDRange_c.cpp} | 2 +- .../TestHIP_MDRange_d.cpp} | 2 +- .../TestHIP_MDRange_e.cpp} | 2 +- .../unit_test/hip/TestHIP_RangePolicy.cpp} | 4 +- .../hip/TestHIP_RangePolicyRequire.cpp | 47 + .../core/unit_test/hip/TestHIP_Reducers_a.cpp | 46 + .../core/unit_test/hip/TestHIP_Reducers_b.cpp | 46 + .../core/unit_test/hip/TestHIP_Reducers_c.cpp | 46 + .../core/unit_test/hip/TestHIP_Reducers_d.cpp | 46 + .../core/unit_test/hip/TestHIP_Reductions.cpp | 47 + .../core/unit_test/hip/TestHIP_Scan.cpp | 47 + .../TestHIP_ScanUnit.cpp} | 110 +- .../TestHIP_SharedAlloc.cpp} | 10 +- .../core/unit_test/hip/TestHIP_Spaces.cpp | 233 ++ .../core/unit_test/hip/TestHIP_SubView_a.cpp | 102 + .../TestHIP_SubView_b.cpp} | 27 +- .../TestHIP_SubView_c01.cpp} | 9 +- .../unit_test/hip/TestHIP_SubView_c02.cpp | 55 + .../unit_test/hip/TestHIP_SubView_c03.cpp | 55 + .../TestHIP_SubView_c04.cpp} | 9 +- .../unit_test/hip/TestHIP_SubView_c05.cpp | 55 + .../unit_test/hip/TestHIP_SubView_c06.cpp | 55 + .../TestHIP_SubView_c07.cpp} | 9 +- .../unit_test/hip/TestHIP_SubView_c08.cpp | 55 + .../unit_test/hip/TestHIP_SubView_c09.cpp | 55 + .../unit_test/hip/TestHIP_SubView_c10.cpp | 54 + .../unit_test/hip/TestHIP_SubView_c11.cpp | 55 + .../unit_test/hip/TestHIP_SubView_c12.cpp | 55 + .../TestHIP_SubView_c13.cpp} | 9 +- .../core/unit_test/hip/TestHIP_ViewAPI_c.cpp | 46 + .../core/unit_test/hip/TestHIP_ViewAPI_d.cpp | 46 + .../unit_test/hip/TestHIP_ViewMapping_a.cpp | 46 + .../unit_test/hip/TestHIP_ViewMapping_b.cpp | 46 + .../hip/TestHIP_ViewMapping_subview.cpp | 46 + .../unit_test/hip/TestHIP_ViewOfClass.cpp | 46 + .../core/unit_test/hip/TestHIP_ViewResize.cpp | 46 + .../core/unit_test/hip/TestHIP_View_64bit.cpp | 46 + .../unit_test/hpx/TestHPX_Concepts.cpp} | 3 +- .../hpx/TestHPX_RangePolicyRequire.cpp} | 2 +- .../unit_test/hpx/TestHPX_TeamScratch.cpp | 2 - .../incremental/Test01_execspace.hpp | 111 + .../incremental/Test02_atomic_host.hpp | 97 + .../Test03a_MemorySpace_malloc.hpp | 80 + .../incremental/Test03b_MemorySpace_free.hpp | 83 + .../Test04_ParallelFor_RangePolicy.hpp | 169 + .../Test05_ParallelReduce_RangePolicy.hpp | 154 + .../Test06_ParallelFor_MDRangePolicy.hpp | 263 ++ .../incremental/Test08_deep_copy.hpp | 207 ++ .../incremental/Test10_HierarchicalBasics.hpp | 101 + .../Test11a_ParallelFor_TeamThreadRange.hpp | 99 + .../Test11b_ParallelFor_TeamVectorRange.hpp | 99 + .../Test11c_ParallelFor_ThreadVectorRange.hpp | 105 + .../incremental/Test12a_ThreadScratch.hpp | 125 + .../incremental/Test12b_TeamScratch.hpp | 113 + .../Test13a_ParallelRed_TeamThreadRange.hpp | 105 + .../Test13b_ParallelRed_TeamVectorRange.hpp} | 95 +- .../Test13c_ParallelRed_ThreadVectorRange.hpp | 112 + .../unit_test/openmp/TestOpenMP_Concepts.cpp} | 3 +- .../unit_test/openmp/TestOpenMP_Other.cpp | 2 +- .../openmp/TestOpenMP_RangePolicyRequire.cpp} | 2 +- .../core/unit_test/openmp/TestOpenMP_Team.cpp | 32 +- .../openmp/TestOpenMP_TeamScratch.cpp | 2 - .../TestOpenMPTarget_Concepts.cpp | 46 + .../openmptarget/TestOpenMPTarget_Crs.cpp | 0 .../TestOpenMPTarget_FunctorAnalysis.cpp | 0 .../TestOpenMPTarget_LocalDeepCopy.cpp | 0 .../TestOpenMPTarget_RangePolicyRequire.cpp | 0 ...TestOpenMPTarget_Reductions_DeviceView.cpp | 0 .../TestOpenMPTarget_SharedAlloc.cpp | 2 +- .../TestOpenMPTarget_SubView_a.cpp | 24 +- .../TestOpenMPTarget_SubView_b.cpp | 4 +- .../TestOpenMPTarget_SubView_c01.cpp | 2 +- .../TestOpenMPTarget_SubView_c02.cpp | 2 +- .../TestOpenMPTarget_SubView_c03.cpp | 2 +- .../TestOpenMPTarget_SubView_c04.cpp | 2 +- .../TestOpenMPTarget_SubView_c05.cpp | 2 +- .../TestOpenMPTarget_SubView_c06.cpp | 2 +- .../TestOpenMPTarget_SubView_c07.cpp | 2 +- .../TestOpenMPTarget_SubView_c08.cpp | 2 +- .../TestOpenMPTarget_SubView_c09.cpp | 2 +- .../TestOpenMPTarget_SubView_c10.cpp | 2 +- .../TestOpenMPTarget_SubView_c11.cpp | 2 +- .../TestOpenMPTarget_SubView_c12.cpp | 2 +- .../TestOpenMPTarget_SubView_c13.cpp | 0 .../openmptarget/TestOpenMPTarget_Team.cpp | 4 +- .../TestOpenMPTarget_TeamReductionScan.cpp | 6 +- .../TestOpenMPTarget_TeamScratch.cpp | 10 +- .../TestOpenMPTarget_TeamTeamSize.cpp | 0 .../TestOpenMPTarget_TeamVectorRange.cpp | 0 .../TestOpenMPTarget_UniqueToken.cpp | 0 ...penMPTarget_ViewLayoutStrideAssignment.cpp | 0 .../TestOpenMPTarget_ViewResize.cpp | 0 .../TestOpenMPTarget_View_64bit.cpp | 0 .../TestOpenMPTarget_WorkGraph.cpp | 0 .../qthreads/TestQthreads_Atomics.cpp | 209 -- .../qthreads/TestQthreads_Complex.cpp | 2 - .../unit_test/qthreads/TestQthreads_Other.cpp | 196 - .../qthreads/TestQthreads_Reductions.cpp | 157 - .../qthreads/TestQthreads_SubView_c05.cpp | 55 - .../qthreads/TestQthreads_SubView_c06.cpp | 55 - .../qthreads/TestQthreads_SubView_c08.cpp | 55 - .../qthreads/TestQthreads_SubView_c09.cpp | 55 - .../qthreads/TestQthreads_SubView_c11.cpp | 55 - .../qthreads/TestQthreads_SubView_c12.cpp | 55 - .../qthreads/TestQthreads_SubView_c13.cpp | 55 - .../qthreads/TestQthreads_SubView_c_all.cpp | 13 - .../unit_test/qthreads/TestQthreads_Team.cpp | 136 - .../qthreads/TestQthreads_ViewAPI_a.cpp | 56 - .../unit_test/serial/TestSerial_Concepts.cpp} | 3 +- .../serial/TestSerial_RangePolicyRequire.cpp} | 2 +- .../core/unit_test/serial/TestSerial_Team.cpp | 95 +- .../serial/TestSerial_TeamScratch.cpp | 2 - lib/kokkos/core/unit_test/standalone/Makefile | 3 +- .../unit_test/standalone/UnitTestMainInit.cpp | 5 +- .../threads/TestThreads_Concepts.cpp} | 3 +- .../TestThreads_RangePolicyRequire.cpp} | 2 +- .../unit_test/threads/TestThreads_Team.cpp | 32 +- .../threads/TestThreads_TeamScratch.cpp | 2 - lib/kokkos/example/CMakeLists.txt | 20 +- lib/kokkos/example/README | 7 - .../build_cmake_in_tree/cmake_example.cpp | 2 +- .../build_cmake_installed/cmake_example.cpp | 2 +- lib/kokkos/example/cmake/Dependencies.cmake | 3 - .../example/query_device/query_device.cpp | 2 + lib/kokkos/example/tutorial/CMakeLists.txt | 8 +- lib/kokkos/example/tutorial/README | 13 +- lib/kokkos/example/virtual_functions/Makefile | 2 +- lib/kokkos/generate_makefile.bash | 618 ++-- lib/kokkos/gnu_generate_makefile.bash | 484 +++ lib/kokkos/master_history.txt | 1 + 554 files changed, 24628 insertions(+), 14871 deletions(-) create mode 100644 lib/kokkos/algorithms/unit_tests/TestHIP.cpp create mode 100644 lib/kokkos/algorithms/unit_tests/TestOpenMP_Random.cpp create mode 100644 lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort1D.cpp create mode 100644 lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort3D.cpp create mode 100644 lib/kokkos/algorithms/unit_tests/TestOpenMP_SortDynamicView.cpp create mode 100644 lib/kokkos/appveyor.yml delete mode 100755 lib/kokkos/cm_generate_makefile.bash create mode 100644 lib/kokkos/cmake/KokkosTrilinosConfig.cmake.in create mode 100644 lib/kokkos/cmake/kokkos_check_env.cmake create mode 100644 lib/kokkos/cmake/msvc.cmake rename lib/kokkos/containers/unit_tests/{cuda => }/TestCuda_Category.hpp (100%) rename lib/kokkos/containers/unit_tests/{rocm/TestROCm_Category.hpp => TestHIP_Category.hpp} (93%) rename lib/kokkos/containers/unit_tests/{hpx => }/TestHPX_Category.hpp (100%) rename lib/kokkos/containers/unit_tests/{openmp => }/TestOpenMP_Category.hpp (100%) rename lib/kokkos/containers/unit_tests/{serial => }/TestSerial_Category.hpp (100%) rename lib/kokkos/containers/unit_tests/{threads => }/TestThreads_Category.hpp (100%) delete mode 100644 lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank67.cpp delete mode 100644 lib/kokkos/containers/unit_tests/cuda/TestCuda_ScatterView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/cuda/TestCuda_StaticCrsGraph.cpp delete mode 100644 lib/kokkos/containers/unit_tests/cuda/TestCuda_UnorderedMap.cpp delete mode 100644 lib/kokkos/containers/unit_tests/cuda/TestCuda_ViewCtorPropEmbeddedDim.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_generic.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank12345.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank67.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_DynamicView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_ErrorReporter.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_OffsetView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_ScatterView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_StaticCrsGraph.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_UnorderedMap.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_ViewCtorPropEmbeddedDim.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_generic.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_rank12345.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_rank67.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynamicView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ErrorReporter.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_OffsetView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ScatterView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_StaticCrsGraph.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_UnorderedMap.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_Vector.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ViewCtorPropEmbeddedDim.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_BitSet.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_DualView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_generic.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_rank12345.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_rank67.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_DynamicView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_ErrorReporter.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_ScatterView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_StaticCrsGraph.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_UnorderedMap.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_Vector.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_ViewCtorPropEmbeddedDim.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_generic.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_rank12345.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_rank67.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_DynamicView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_ErrorReporter.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_OffsetView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_ScatterView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_StaticCrsGraph.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_UnorderedMap.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_Vector.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_ViewCtorPropEmbeddedDim.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_generic.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_rank12345.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_rank67.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_DynamicView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_ErrorReporter.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_OffsetView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_ScatterView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_StaticCrsGraph.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_UnorderedMap.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_Vector.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_ViewCtorPropEmbeddedDim.cpp create mode 100644 lib/kokkos/core/src/Cuda/Kokkos_Cuda_fwd.hpp create mode 100644 lib/kokkos/core/src/HIP/KokkosExp_HIP_IterateTile.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Abort.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Atomic.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_BlockSize_Deduction.hpp rename lib/kokkos/core/{unit_test/qthreads/TestQthreads_ViewAPI_b.cpp => src/HIP/Kokkos_HIP_Error.hpp} (50%) create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.cpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.cpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.cpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_MDRange.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Range.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Team.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_ReduceScan.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Space.cpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Team.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Vectorization.hpp create mode 100644 lib/kokkos/core/src/Kokkos_HIP.hpp create mode 100644 lib/kokkos/core/src/Kokkos_HIP_Space.hpp delete mode 100644 lib/kokkos/core/src/Kokkos_Qthreads.hpp create mode 100644 lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp create mode 100644 lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.hpp create mode 100644 lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_MDRange.hpp delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.cpp delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.hpp delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Parallel.hpp delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.cpp delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.hpp delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.cpp.old delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.hpp.old delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue.hpp delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue_impl.hpp delete mode 100644 lib/kokkos/core/src/Qthreads/README create mode 100644 lib/kokkos/core/src/impl/Kokkos_Atomic_Generic_Secondary.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_Atomic_MinMax.hpp delete mode 100644 lib/kokkos/core/src/kokkos.pc.in create mode 100644 lib/kokkos/core/unit_test/IncrementalTest.cpp.in create mode 100644 lib/kokkos/core/unit_test/TestCTestDevice.cpp create mode 100644 lib/kokkos/core/unit_test/TestConcepts.hpp create mode 100644 lib/kokkos/core/unit_test/TestRangeRequire.hpp create mode 100644 lib/kokkos/core/unit_test/TestViewIsAssignable.hpp delete mode 100644 lib/kokkos/core/unit_test/config/results/AMDAVX_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/ARMv8-ThunderX_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/ARMv80_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/ARMv81_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/BDW_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/BGQ_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/HSW_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/KNC_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/KNL_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Kepler30_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Kepler32_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Kepler35_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Kepler37_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Kepler_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Maxwell50_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Maxwell52_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Maxwell53_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Maxwell_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/None_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Pascal60_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Pascal61_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Power7_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Power8_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Power9_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/SKX_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/SNB_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/WSM_Qthreads_KokkosCore_config.h rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_BitSet.cpp => core/unit_test/cuda/TestCuda_Concepts.cpp} (98%) rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_OffsetView.cpp => core/unit_test/cuda/TestCuda_RangePolicyRequire.cpp} (98%) rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_Category.hpp => hip/TestHIPHostPinned_Category.hpp} (91%) rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_c10.cpp => hip/TestHIPHostPinned_SharedAlloc.cpp} (91%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_ViewAPI_a.cpp => hip/TestHIPHostPinned_ViewAPI_a.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_ViewAPI_b.cpp => hip/TestHIPHostPinned_ViewAPI_b.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_ViewAPI_c.cpp => hip/TestHIPHostPinned_ViewAPI_c.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_ViewAPI_d.cpp => hip/TestHIPHostPinned_ViewAPI_d.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_ViewAPI_e.cpp => hip/TestHIPHostPinned_ViewAPI_e.cpp} (97%) rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_DynamicView.cpp => core/unit_test/hip/TestHIPHostPinned_ViewCopy.cpp} (96%) rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank12345.cpp => core/unit_test/hip/TestHIPHostPinned_ViewMapping_a.cpp} (96%) rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_DynRankViewAPI_generic.cpp => core/unit_test/hip/TestHIPHostPinned_ViewMapping_b.cpp} (96%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_subview.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_complexdouble.cpp => hip/TestHIP_AtomicOperations_complexdouble.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_complexfloat.cpp => hip/TestHIP_AtomicOperations_complexfloat.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_double.cpp => hip/TestHIP_AtomicOperations_double.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_float.cpp => hip/TestHIP_AtomicOperations_float.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_int.cpp => hip/TestHIP_AtomicOperations_int.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_longint.cpp => hip/TestHIP_AtomicOperations_longint.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_longlongint.cpp => hip/TestHIP_AtomicOperations_longlongint.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_unsignedint.cpp => hip/TestHIP_AtomicOperations_unsignedint.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_unsignedlongint.cpp => hip/TestHIP_AtomicOperations_unsignedlongint.cpp} (97%) rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_DualView.cpp => core/unit_test/hip/TestHIP_AtomicViews.cpp} (96%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Atomics.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Category.hpp rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_Vector.cpp => core/unit_test/hip/TestHIP_Complex.cpp} (96%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Concepts.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Crs.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_DeepCopyAlignment.cpp => hip/TestHIP_DeepCopyAlignment.cpp} (97%) rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_ErrorReporter.cpp => core/unit_test/hip/TestHIP_FunctorAnalysis.cpp} (96%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Init.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_InterOp_Init.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_LocalDeepCopy.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_MDRange_a.cpp => hip/TestHIP_MDRange_a.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_MDRange_b.cpp => hip/TestHIP_MDRange_b.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_MDRange_c.cpp => hip/TestHIP_MDRange_c.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_MDRange_d.cpp => hip/TestHIP_MDRange_d.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_MDRange_e.cpp => hip/TestHIP_MDRange_e.cpp} (97%) rename lib/kokkos/{containers/unit_tests/hpx/TestHPX_Vector.cpp => core/unit_test/hip/TestHIP_RangePolicy.cpp} (96%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_RangePolicyRequire.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Reducers_a.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Reducers_b.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Reducers_c.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Reducers_d.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Reductions.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Scan.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_a.cpp => hip/TestHIP_ScanUnit.cpp} (56%) rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_c03.cpp => hip/TestHIP_SharedAlloc.cpp} (90%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Spaces.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_a.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_b.cpp => hip/TestHIP_SubView_b.cpp} (71%) rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_c07.cpp => hip/TestHIP_SubView_c01.cpp} (91%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c02.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c03.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_c04.cpp => hip/TestHIP_SubView_c04.cpp} (91%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c05.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c06.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_c01.cpp => hip/TestHIP_SubView_c07.cpp} (91%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c08.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c09.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c10.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c11.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c12.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_c02.cpp => hip/TestHIP_SubView_c13.cpp} (90%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_ViewAPI_c.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_ViewAPI_d.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_a.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_b.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_subview.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_ViewOfClass.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_ViewResize.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_View_64bit.cpp rename lib/kokkos/{containers/unit_tests/hpx/TestHPX_BitSet.cpp => core/unit_test/hpx/TestHPX_Concepts.cpp} (98%) rename lib/kokkos/{containers/unit_tests/hpx/TestHPX_DualView.cpp => core/unit_test/hpx/TestHPX_RangePolicyRequire.cpp} (98%) create mode 100644 lib/kokkos/core/unit_test/incremental/Test01_execspace.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test02_atomic_host.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test03a_MemorySpace_malloc.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test03b_MemorySpace_free.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test04_ParallelFor_RangePolicy.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test05_ParallelReduce_RangePolicy.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test06_ParallelFor_MDRangePolicy.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test08_deep_copy.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test10_HierarchicalBasics.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test11a_ParallelFor_TeamThreadRange.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test11b_ParallelFor_TeamVectorRange.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test11c_ParallelFor_ThreadVectorRange.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test12a_ThreadScratch.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test12b_TeamScratch.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test13a_ParallelRed_TeamThreadRange.hpp rename lib/kokkos/core/unit_test/{qthreads/TestQthreads.hpp => incremental/Test13b_ParallelRed_TeamVectorRange.hpp} (57%) create mode 100644 lib/kokkos/core/unit_test/incremental/Test13c_ParallelRed_ThreadVectorRange.hpp rename lib/kokkos/{containers/unit_tests/openmp/TestOpenMP_BitSet.cpp => core/unit_test/openmp/TestOpenMP_Concepts.cpp} (98%) rename lib/kokkos/{containers/unit_tests/openmp/TestOpenMP_DualView.cpp => core/unit_test/openmp/TestOpenMP_RangePolicyRequire.cpp} (98%) create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Concepts.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Crs.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_FunctorAnalysis.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_LocalDeepCopy.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_RangePolicyRequire.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Reductions_DeviceView.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c13.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_TeamTeamSize.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_TeamVectorRange.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_UniqueToken.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_ViewLayoutStrideAssignment.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_ViewResize.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_View_64bit.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_WorkGraph.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_Atomics.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_Complex.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_Other.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_Reductions.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c05.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c06.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c08.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c09.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c11.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c12.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c13.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c_all.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_Team.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_ViewAPI_a.cpp rename lib/kokkos/{containers/unit_tests/serial/TestSerial_BitSet.cpp => core/unit_test/serial/TestSerial_Concepts.cpp} (98%) rename lib/kokkos/{containers/unit_tests/serial/TestSerial_DualView.cpp => core/unit_test/serial/TestSerial_RangePolicyRequire.cpp} (98%) rename lib/kokkos/{containers/unit_tests/threads/TestThreads_BitSet.cpp => core/unit_test/threads/TestThreads_Concepts.cpp} (98%) rename lib/kokkos/{containers/unit_tests/threads/TestThreads_DualView.cpp => core/unit_test/threads/TestThreads_RangePolicyRequire.cpp} (98%) delete mode 100644 lib/kokkos/example/cmake/Dependencies.cmake create mode 100755 lib/kokkos/gnu_generate_makefile.bash diff --git a/lib/kokkos/BUILD.md b/lib/kokkos/BUILD.md index 84a1bc3b37..63dbf7fdb2 100644 --- a/lib/kokkos/BUILD.md +++ b/lib/kokkos/BUILD.md @@ -40,6 +40,13 @@ cmake ${srcdir} \ ```` which activates the OpenMP backend. All of the options controlling device backends, options, architectures, and third-party libraries (TPLs) are given below. +## Platform-specific Problems + +### Cray + +* The Cray compiler wrappers do static linking by default. This seems to break the Kokkos build. You will likely need to set the environment variable `CRAYPE_LINK_TYPE=dynamic` in order to link correctly. Kokkos warns during configure if this is missing. +* The Cray compiler identifies to CMake as Clang, but it sometimes has its own flags that differ from Clang. We try to include all exceptions, but flag errors may occur in which a Clang-specific flag is passed that the Cray compiler does not recognize. + ## Spack An alternative to manually building with the CMake is to use the Spack package manager. To do so, download the `kokkos-spack` git repo and add to the package list: @@ -63,6 +70,7 @@ For a complete list of Kokkos options, run: ```` spack info kokkos ```` +More details can be found in the kokkos-spack repository [README](https://github.com/kokkos/kokkos-spack/blob/master/README.md). #### Spack Development Spack currently installs packages to a location determined by a unique hash. This hash name is not really "human readable". @@ -73,32 +81,8 @@ spack find -p kokkos ... ```` where `...` is the unique spec identifying the particular Kokkos configuration and version. -A better way to use Spack for doing Kokkos development is the DIY feature of Spack. -If you wish to develop Kokkos itself, go to the Kokkos source folder: -```` -spack diy -u cmake kokkos@diy ... -```` -where `...` is a Spack spec identifying the exact Kokkos configuration. -This then creates a `spack-build` directory where you can run `make`. - -If doing development on a downstream project, you can do almost exactly the same thing. -```` -spack diy -u cmake ${myproject}@${myversion} ... ^kokkos... -```` -where the `...` are the specs for your project and the desired Kokkos configuration. -Again, a `spack-build` directory will be created where you can run `make`. - -Spack has a few idiosyncracies that make building outside of Spack annoying related to Spack forcing use of a compiler wrapper. This can be worked around by having a `-DSpack_WORKAROUND=On` given your CMake. Then add the block of code to your CMakeLists.txt: - -```` -if (Spack_WORKAROUND) - set(SPACK_CXX $ENV{SPACK_CXX}) - if(SPACK_CXX) - set(CMAKE_CXX_COMPILER ${SPACK_CXX} CACHE STRING "the C++ compiler" FORCE) - set(ENV{CXX} ${SPACK_CXX}) - endif() -endif() -```` +A better way to use Spack for doing Kokkos development is the dev-build feature of Spack. +For dev-build details, consult the kokkos-spack repository [README](https://github.com/kokkos/kokkos-spack/blob/master/README.md). # Kokkos Keyword Listing @@ -157,6 +141,9 @@ Options can be enabled by specifying `-DKokkos_ENABLE_X`. * Kokkos_ENABLE_DEPRECATED_CODE * Whether to enable deprecated code * BOOL Default: OFF +* Kokkos_ENABLE_EXAMPLES + * Whether to enable building examples + * BOOL Default: OFF * Kokkos_ENABLE_HPX_ASYNC_DISPATCH * Whether HPX supports asynchronous dispatch * BOOL Default: OFF diff --git a/lib/kokkos/CHANGELOG.md b/lib/kokkos/CHANGELOG.md index 1d54b4c21d..149e63ca91 100644 --- a/lib/kokkos/CHANGELOG.md +++ b/lib/kokkos/CHANGELOG.md @@ -1,5 +1,59 @@ # Change Log +## [3.1.00](https://github.com/kokkos/kokkos/tree/3.1.00) (2020-04-14) +[Full Changelog](https://github.com/kokkos/kokkos/compare/3.0.00...3.1.00) + +**Features:** + +- HIP Support for AMD +- OpenMPTarget Support with clang +- Windows VS19 (Serial) Support [\#1533](https://github.com/kokkos/kokkos/issues/1533) + +**Implemented enhancements:** + +- generate\_makefile.bash should allow tests to be disabled [\#2886](https://github.com/kokkos/kokkos/issues/2886) +- clang/7+cuda/9 build -Werror-unused parameter error in nightly test [\#2884](https://github.com/kokkos/kokkos/issues/2884) +- ScatterView memory space is not user settable [\#2826](https://github.com/kokkos/kokkos/issues/2826) +- clang/8+cuda/10.0 build error with c++17 [\#2809](https://github.com/kokkos/kokkos/issues/2809) +- warnings.... [\#2805](https://github.com/kokkos/kokkos/issues/2805) +- Kokkos version in cpp define [\#2787](https://github.com/kokkos/kokkos/issues/2787) +- Remove Defunct QThreads Backend [\#2751](https://github.com/kokkos/kokkos/issues/2751) +- Improve Kokkos::fence behavior with multiple execution spaces [\#2659](https://github.com/kokkos/kokkos/issues/2659) +- polylithic\(?\) initialization of Kokkos [\#2658](https://github.com/kokkos/kokkos/issues/2658) +- Unnecessary\(?\) check for host execution space initialization from Cuda initialization [\#2652](https://github.com/kokkos/kokkos/issues/2652) +- Kokkos error reporting failures with CUDA GPUs in exclusive mode [\#2471](https://github.com/kokkos/kokkos/issues/2471) +- atomicMax equivalent \(and other atomics\) [\#2401](https://github.com/kokkos/kokkos/issues/2401) +- Fix alignment for Kokkos::complex [\#2255](https://github.com/kokkos/kokkos/issues/2255) +- Warnings with Cuda 10.1 [\#2206](https://github.com/kokkos/kokkos/issues/2206) +- dual view with Kokkos::ViewAllocateWithoutInitializing [\#2188](https://github.com/kokkos/kokkos/issues/2188) +- Check error code from cudaOccupancyMaxActiveBlocksPerMultiprocessor [\#2172](https://github.com/kokkos/kokkos/issues/2172) +- Add non-member Kokkos::resize/realloc for DualView [\#2170](https://github.com/kokkos/kokkos/issues/2170) +- Construct DualView without initialization [\#2046](https://github.com/kokkos/kokkos/issues/2046) +- Expose is\_assignable to determine if one view can be assigned to another [\#1936](https://github.com/kokkos/kokkos/issues/1936) +- profiling label [\#1935](https://github.com/kokkos/kokkos/issues/1935) +- team\_broadcast of bool failed on CUDA backend [\#1908](https://github.com/kokkos/kokkos/issues/1908) +- View static\_extent [\#660](https://github.com/kokkos/kokkos/issues/660) +- Misleading Kokkos::Cuda::initialize ERROR message when compiled for wrong GPU architecture [\#1944](https://github.com/kokkos/kokkos/issues/1944) +- Cryptic Error When Malloc Fails [\#2164](https://github.com/kokkos/kokkos/issues/2164) +- Drop support for intermediate standards in CMake [\#2336](https://github.com/kokkos/kokkos/issues/2336) + +**Fixed bugs:** + +- DualView sync\_device with length zero creates cuda errors [\#2946](https://github.com/kokkos/kokkos/issues/2946) +- building with nvcc and clang \(or clang based XL\) as host compiler: "Kokkos::atomic\_fetch\_min\(volatile int \*, int\)" has already been defined [\#2903](https://github.com/kokkos/kokkos/issues/2903) +- Cuda 9.1,10.1 debug builds failing due to -Werror=unused-parameter [\#2880](https://github.com/kokkos/kokkos/issues/2880) +- clang -Werror: Kokkos\_FixedBufferMemoryPool.hpp:140:28: error: unused parameter 'alloc\_size' [\#2869](https://github.com/kokkos/kokkos/issues/2869) +- intel/16.0.1, intel/17.0.1 nightly build failures with debugging enabled [\#2867](https://github.com/kokkos/kokkos/issues/2867) +- intel/16.0.1 debug build errors [\#2863](https://github.com/kokkos/kokkos/issues/2863) +- xl/16.1.1 with cpp14, openmp build, nightly test failures [\#2856](https://github.com/kokkos/kokkos/issues/2856) +- Intel nightly test failures: team\_vector [\#2852](https://github.com/kokkos/kokkos/issues/2852) +- Kokkos Views with intmax/2\_ROOT variables") CMAKE_POLICY(SET CMP0074 NEW) ENDIF() -# Load either the real TriBITS or a TriBITS wrapper +# Load either the real TriBITS or a TriBITS wrapper # for certain utility functions that are universal (like GLOBAL_SET) INCLUDE(${KOKKOS_SRC_PATH}/cmake/fake_tribits.cmake) @@ -118,18 +129,14 @@ ENDIF() # These are the variables we will append to as we go # I really wish these were regular variables # but scoping issues can make it difficult -GLOBAL_RESET(KOKKOS_COMPILE_OPTIONS) -GLOBAL_RESET(KOKKOS_LINK_OPTIONS) -GLOBAL_RESET(KOKKOS_CUDA_OPTIONS) -GLOBAL_RESET(KOKKOS_CUDAFE_OPTIONS) -GLOBAL_RESET(KOKKOS_XCOMPILER_OPTIONS) +GLOBAL_SET(KOKKOS_COMPILE_OPTIONS) +GLOBAL_SET(KOKKOS_LINK_OPTIONS) +GLOBAL_SET(KOKKOS_CUDA_OPTIONS) +GLOBAL_SET(KOKKOS_CUDAFE_OPTIONS) +GLOBAL_SET(KOKKOS_XCOMPILER_OPTIONS) # We need to append text here for making sure TPLs # we import are available for an installed Kokkos -GLOBAL_RESET(KOKKOS_TPL_EXPORTS) -# We need these for controlling the exact -std flag -GLOBAL_RESET(KOKKOS_DONT_ALLOW_EXTENSIONS) -GLOBAL_RESET(KOKKOS_USE_CXX_EXTENSIONS) -GLOBAL_RESET(KOKKOS_CXX_STANDARD_FEATURE) +GLOBAL_SET(KOKKOS_TPL_EXPORTS) # Include a set of Kokkos-specific wrapper functions that # will either call raw CMake or TriBITS @@ -137,6 +144,9 @@ GLOBAL_RESET(KOKKOS_CXX_STANDARD_FEATURE) INCLUDE(${KOKKOS_SRC_PATH}/cmake/kokkos_tribits.cmake) +# Check the environment and set certain variables +# to allow platform-specific checks +INCLUDE(${KOKKOS_SRC_PATH}/cmake/kokkos_check_env.cmake) # The build environment setup goes in the following steps # 1) Check all the enable options. This includes checking Kokkos_DEVICES # 2) Check the compiler ID (type and version) @@ -187,14 +197,21 @@ IF (KOKKOS_HAS_TRILINOS) # Because Tribits doesn't use lists, it uses spaces for the list of CXX flags # we have to match the annoying behavior STRING(REPLACE ";" " " KOKKOSCORE_COMPILE_OPTIONS "${KOKKOS_COMPILE_OPTIONS}") - STRING(REPLACE ";" " " KOKKOSCORE_CUDA_OPTIONS "${KOKKOS_CUDA_OPTIONS}") - FOREACH(CUDAFE_FLAG ${KOKKOS_CUDAFE_OPTIONS}) - SET(KOKKOSCORE_CUDAFE_OPTIONS "${KOKKOSCORE_CUDAFE_OPTIONS} -Xcudafe ${CUDAFE_FLAG}") - ENDFOREACH() + LIST(APPEND KOKKOS_ALL_COMPILE_OPTIONS ${KOKKOS_COMPILE_OPTIONS}) + LIST(APPEND KOKKOS_ALL_COMPILE_OPTIONS ${KOKKOS_CUDA_OPTIONS}) FOREACH(XCOMP_FLAG ${KOKKOS_XCOMPILER_OPTIONS}) SET(KOKKOSCORE_XCOMPILER_OPTIONS "${KOKKOSCORE_XCOMPILER_OPTIONS} -Xcompiler ${XCOMP_FLAG}") + LIST(APPEND KOKKOS_ALL_COMPILE_OPTIONS -Xcompiler ${XCOMP_FLAG}) ENDFOREACH() - SET(KOKKOSCORE_CXX_FLAGS "${KOKKOSCORE_COMPILE_OPTIONS} ${CMAKE_CXX${KOKKOS_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ${KOKKOSCORE_CUDA_OPTIONS} ${KOKKOSCORE_CUDAFE_OPTIONS} ${KOKKOSCORE_XCOMPILER_OPTIONS}") + SET(KOKKOSCORE_CXX_FLAGS "${KOKKOSCORE_COMPILE_OPTIONS} ${CMAKE_CXX${KOKKOS_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ${KOKKOSCORE_XCOMPILER_OPTIONS}") + IF (KOKKOS_ENABLE_CUDA) + STRING(REPLACE ";" " " KOKKOSCORE_CUDA_OPTIONS "${KOKKOS_CUDA_OPTIONS}") + FOREACH(CUDAFE_FLAG ${KOKKOS_CUDAFE_OPTIONS}) + SET(KOKKOSCORE_CUDAFE_OPTIONS "${KOKKOSCORE_CUDAFE_OPTIONS} -Xcudafe ${CUDAFE_FLAG}") + LIST(APPEND KOKKOS_ALL_COMPILE_OPTIONS -Xcudafe ${CUDAFE_FLAG}) + ENDFOREACH() + SET(KOKKOSCORE_CXX_FLAGS "${KOKKOSCORE_CXX_FLAGS} ${KOKKOSCORE_CUDA_OPTIONS} ${KOKKOSCORE_CUDAFE_OPTIONS}") + ENDIF() # Both parent scope and this package # In ProjectCompilerPostConfig.cmake, we capture the "global" flags Trilinos wants in # TRILINOS_TOPLEVEL_CXX_FLAGS @@ -203,6 +220,8 @@ IF (KOKKOS_HAS_TRILINOS) #CMAKE_CXX_FLAGS will get added to Kokkos and Kokkos dependencies automatically here #These flags get set up in KOKKOS_PACKAGE_DECL, which means they #must be configured before KOKKOS_PACKAGE_DECL + SET(KOKKOS_ALL_COMPILE_OPTIONS + $<$:${KOKKOS_ALL_COMPILE_OPTIONS}>) ENDIF() KOKKOS_PACKAGE_DECL() @@ -250,7 +269,7 @@ INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/KokkosCore_config.h" DESTINATION ${CM IF (HAS_PARENT) FOREACH(DEV Kokkos_ENABLED_DEVICES) #I would much rather not make these cache variables or global properties, but I can't - #make any guarantees on whether PARENT_SCOPE is good enough to make + #make any guarantees on whether PARENT_SCOPE is good enough to make #these variables visible where I need them SET(Kokkos_ENABLE_${DEV} ON PARENT_SCOPE) SET_PROPERTY(GLOBAL PROPERTY Kokkos_ENABLE_${DEV} ON) diff --git a/lib/kokkos/Copyright.txt b/lib/kokkos/Copyright.txt index 06184796b2..5e2f8d8647 100644 --- a/lib/kokkos/Copyright.txt +++ b/lib/kokkos/Copyright.txt @@ -1,13 +1,13 @@ //@HEADER // ************************************************************************ -// +// // Kokkos v. 3.0 // Copyright (2020) National Technology & Engineering // Solutions of Sandia, LLC (NTESS). -// +// // Under the terms of Contract DE-NA0003525 with NTESS, // the U.S. Government retains certain rights in this software. -// +// // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -36,6 +36,6 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // // Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// +// // ************************************************************************ //@HEADER diff --git a/lib/kokkos/Makefile.kokkos b/lib/kokkos/Makefile.kokkos index e2b34fb453..e1fdd0620e 100644 --- a/lib/kokkos/Makefile.kokkos +++ b/lib/kokkos/Makefile.kokkos @@ -6,15 +6,20 @@ ifndef KOKKOS_PATH endif CXXFLAGS=$(CCFLAGS) -# Options: Cuda,ROCm,OpenMP,Pthreads,Qthreads,Serial +KOKKOS_VERSION_MAJOR = 3 +KOKKOS_VERSION_MINOR = 1 +KOKKOS_VERSION_PATCH = 0 +KOKKOS_VERSION = $(shell echo $(KOKKOS_VERSION_MAJOR)*10000+$(KOKKOS_VERSION_MINOR)*100+$(KOKKOS_VERSION_PATCH) | bc) + +# Options: Cuda,HIP,ROCm,OpenMP,Pthread,Serial KOKKOS_DEVICES ?= "OpenMP" -#KOKKOS_DEVICES ?= "Pthreads" +#KOKKOS_DEVICES ?= "Pthread" # Options: # Intel: KNC,KNL,SNB,HSW,BDW,SKX # NVIDIA: Kepler,Kepler30,Kepler32,Kepler35,Kepler37,Maxwell,Maxwell50,Maxwell52,Maxwell53,Pascal60,Pascal61,Volta70,Volta72,Turing75 # ARM: ARMv80,ARMv81,ARMv8-ThunderX,ARMv8-TX2 # IBM: BGQ,Power7,Power8,Power9 -# AMD-GPUS: Kaveri,Carrizo,Fiji,Vega +# AMD-GPUS: Vega900,Vega906 # AMD-CPUS: AMDAVX,Ryzen,EPYC KOKKOS_ARCH ?= "" # Options: yes,no @@ -35,6 +40,9 @@ KOKKOS_STANDALONE_CMAKE ?= "no" # Options: force_uvm,use_ldg,rdc,enable_lambda,enable_constexpr KOKKOS_CUDA_OPTIONS ?= "enable_lambda" +# Options: rdc +KOKKOS_HIP_OPTIONS ?= "" + # Default settings specific options. # Options: enable_async_dispatch KOKKOS_HPX_OPTIONS ?= "" @@ -82,29 +90,50 @@ KOKKOS_INTERNAL_CUDA_USE_CONSTEXPR := $(call kokkos_has_string,$(KOKKOS_CUDA_OPT KOKKOS_INTERNAL_HPX_ENABLE_ASYNC_DISPATCH := $(call kokkos_has_string,$(KOKKOS_HPX_OPTIONS),enable_async_dispatch) KOKKOS_INTERNAL_ENABLE_ETI := $(call kokkos_has_string,$(KOKKOS_OPTIONS),enable_eti) +KOKKOS_INTERNAL_HIP_USE_RELOC := $(call kokkos_has_string,$(KOKKOS_HIP_OPTIONS),rdc) # Check for Kokkos Host Execution Spaces one of which must be on. KOKKOS_INTERNAL_USE_OPENMP := $(call kokkos_has_string,$(subst OpenMPTarget,,$(KOKKOS_DEVICES)),OpenMP) KOKKOS_INTERNAL_USE_PTHREADS := $(call kokkos_has_string,$(KOKKOS_DEVICES),Pthread) -KOKKOS_INTERNAL_USE_QTHREADS := $(call kokkos_has_string,$(KOKKOS_DEVICES),Qthreads) KOKKOS_INTERNAL_USE_HPX := $(call kokkos_has_string,$(KOKKOS_DEVICES),HPX) KOKKOS_INTERNAL_USE_SERIAL := $(call kokkos_has_string,$(KOKKOS_DEVICES),Serial) ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 0) ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 0) - ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 0) - ifeq ($(KOKKOS_INTERNAL_USE_HPX), 0) - KOKKOS_INTERNAL_USE_SERIAL := 1 - endif + ifeq ($(KOKKOS_INTERNAL_USE_HPX), 0) + KOKKOS_INTERNAL_USE_SERIAL := 1 endif endif endif # Check for other Execution Spaces. KOKKOS_INTERNAL_USE_CUDA := $(call kokkos_has_string,$(KOKKOS_DEVICES),Cuda) -KOKKOS_INTERNAL_USE_ROCM := $(call kokkos_has_string,$(KOKKOS_DEVICES),ROCm) +KOKKOS_INTERNAL_USE_HIP := $(call kokkos_has_string,$(KOKKOS_DEVICES),HIP) KOKKOS_INTERNAL_USE_OPENMPTARGET := $(call kokkos_has_string,$(KOKKOS_DEVICES),OpenMPTarget) +KOKKOS_DEVICELIST = +ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) + KOKKOS_DEVICELIST += Serial +endif +ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) + KOKKOS_DEVICELIST += OpenMP +endif +ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) + KOKKOS_DEVICELIST += Threads +endif +ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) + KOKKOS_DEVICELIST += HPX +endif +ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) + KOKKOS_DEVICELIST += Cuda +endif +ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) + KOKKOS_DEVICELIST += HIP +endif +ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) + KOKKOS_DEVICELIST += OPENMPTARGET +endif + ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) KOKKOS_INTERNAL_NVCC_PATH := $(shell which nvcc) ifeq ($(origin CUDA_PATH), undefined) @@ -132,6 +161,7 @@ KOKKOS_INTERNAL_COMPILER_NVCC := $(strip $(shell echo "$(shell export OMP KOKKOS_INTERNAL_COMPILER_CLANG := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),clang) KOKKOS_INTERNAL_COMPILER_APPLE_CLANG := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),Apple LLVM) KOKKOS_INTERNAL_COMPILER_HCC := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),HCC) +KOKKOS_INTERNAL_COMPILER_GCC := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),GCC) # Check Host Compiler if using NVCC through nvcc_wrapper ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1) @@ -180,20 +210,20 @@ ifeq ($(KOKKOS_INTERNAL_ENABLE_COMPILER_WARNINGS), 1) KOKKOS_INTERNAL_COMPILER_WARNINGS = else ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) - KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wuninitialized + KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wunused-parameter -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wuninitialized else ifeq ($(KOKKOS_INTERNAL_COMPILER_APPLE_CLANG), 1) - KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wuninitialized + KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wunused-parameter -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wuninitialized else ifeq ($(KOKKOS_INTERNAL_COMPILER_XL), 1) - KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wuninitialized + KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wunused-parameter -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wuninitialized else ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1) # TODO check if cray accepts GNU style warnings KOKKOS_INTERNAL_COMPILER_WARNINGS = else #gcc - KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wignored-qualifiers -Wempty-body -Wclobbered -Wuninitialized + KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wunused-parameter -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wignored-qualifiers -Wempty-body -Wclobbered -Wuninitialized endif endif endif @@ -230,7 +260,12 @@ ifeq ($(KOKKOS_INTERNAL_COMPILER_XL), 1) KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -DKOKKOS_IBM_XL_OMP45_WORKAROUND -qsmp=omp -qoffload -qnoeh else ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) - KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -DKOKKOS_BUG_WORKAROUND_IBM_CLANG_OMP45_VIEW_INIT -fopenmp-implicit-declare-target -fopenmp-targets=nvptx64-nvidia-cuda -fopenmp -fopenmp=libomp + #KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -DKOKKOS_BUG_WORKAROUND_IBM_CLANG_OMP45_VIEW_INIT -fopenmp-implicit-declare-target -fopenmp-targets=nvptx64-nvidia-cuda -fopenmp -fopenmp=libomp + KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -DKOKKOS_WORKAROUND_OPENMPTARGET_CLANG -fopenmp -fopenmp=libomp + KOKKOS_INTERNAL_OPENMPTARGET_LIB := -lomptarget + else + #Assume GCC + KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -fopenmp -foffload=nvptx-none endif endif @@ -353,11 +388,8 @@ KOKKOS_INTERNAL_USE_ARCH_IBM := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_ KOKKOS_INTERNAL_USE_ARCH_AMDAVX := $(call kokkos_has_string,$(KOKKOS_ARCH),AMDAVX) KOKKOS_INTERNAL_USE_ARCH_RYZEN := $(call kokkos_has_string,$(KOKKOS_ARCH),Ryzen) KOKKOS_INTERNAL_USE_ARCH_EPYC := $(call kokkos_has_string,$(KOKKOS_ARCH),EPYC) -KOKKOS_INTERNAL_USE_ARCH_KAVERI := $(call kokkos_has_string,$(KOKKOS_ARCH),Kaveri) -KOKKOS_INTERNAL_USE_ARCH_CARRIZO := $(call kokkos_has_string,$(KOKKOS_ARCH),Carrizo) -KOKKOS_INTERNAL_USE_ARCH_FIJI := $(call kokkos_has_string,$(KOKKOS_ARCH),Fiji) -KOKKOS_INTERNAL_USE_ARCH_VEGA := $(call kokkos_has_string,$(KOKKOS_ARCH),Vega) -KOKKOS_INTERNAL_USE_ARCH_GFX901 := $(call kokkos_has_string,$(KOKKOS_ARCH),gfx901) +KOKKOS_INTERNAL_USE_ARCH_VEGA900 := $(call kokkos_has_string,$(KOKKOS_ARCH),Vega900) +KOKKOS_INTERNAL_USE_ARCH_VEGA906 := $(call kokkos_has_string,$(KOKKOS_ARCH),Vega906) # Any AVX? KOKKOS_INTERNAL_USE_ARCH_SSE42 := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_WSM)) @@ -430,6 +462,10 @@ tmp := $(call kokkos_append_header,'\#error "Do not include $(KOKKOS_CONFIG_HEAD tmp := $(call kokkos_append_header,'\#else') tmp := $(call kokkos_append_header,'\#define KOKKOS_CORE_CONFIG_H') tmp := $(call kokkos_append_header,'\#endif') + +tmp := $(call kokkos_append_header,"") +tmp := $(call kokkos_append_header,"\#define KOKKOS_VERSION $(KOKKOS_VERSION)") +tmp := $(call kokkos_append_header,"") tmp := $(call kokkos_append_header,"/* Execution Spaces */") @@ -442,9 +478,15 @@ ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) tmp := $(call kokkos_append_header,'\#define KOKKOS_ENABLE_ROCM') tmp := $(call kokkos_append_header,'\#define KOKKOS_IMPL_ROCM_CLANG_WORKAROUND 1') endif +ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) + tmp := $(call kokkos_append_header,'\#define KOKKOS_ENABLE_HIP') +endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) tmp := $(call kokkos_append_header,'\#define KOKKOS_ENABLE_OPENMPTARGET') + ifeq ($(KOKKOS_INTERNAL_COMPILER_GCC), 1) + tmp := $(call kokkos_append_header,"\#define KOKKOS_WORKAROUND_OPENMPTARGET_GCC") + endif endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) @@ -455,10 +497,6 @@ ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_THREADS") endif -ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_QTHREADS") -endif - ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_HPX") endif @@ -966,6 +1004,14 @@ endif # Figure out the architecture flag for Cuda. ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) + KOKKOS_INTERNAL_USE_CUDA_ARCH=1 +endif +ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) + ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1) + KOKKOS_INTERNAL_USE_CUDA_ARCH=1 + endif +endif +ifeq ($(KOKKOS_INTERNAL_USE_CUDA_ARCH), 1) ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1) KOKKOS_INTERNAL_CUDA_ARCH_FLAG=-arch else ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) @@ -974,7 +1020,17 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) else $(error Makefile.kokkos: CUDA is enabled but the compiler is neither NVCC nor Clang (got version string $(KOKKOS_CXX_VERSION)) ) endif + KOKKOS_INTERNAL_USE_CUDA_ARCH = 1 +endif +ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) + ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) + KOKKOS_INTERNAL_CUDA_ARCH_FLAG=-fopenmp-targets=nvptx64-nvidia-cuda -Xopenmp-target -march + endif + KOKKOS_INTERNAL_USE_CUDA_ARCH = 1 +endif + +ifeq ($(KOKKOS_INTERNAL_USE_CUDA_ARCH), 1) ifeq ($(KOKKOS_INTERNAL_USE_ARCH_KEPLER30), 1) tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_KEPLER") tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_KEPLER30") @@ -1042,55 +1098,49 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1) KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_CUDA_ARCH_FLAG) endif + ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) + ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) + KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_CUDA_ARCH_FLAG) + endif + endif + endif + ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) + KOKKOS_CXXFLAGS += --expt-extended-lambda endif endif + # Figure out the architecture flag for ROCm. -ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) +ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) # Lets start with adding architecture defines - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_KAVERI), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_ROCM 701") - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_KAVERI") - KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx701 + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_VEGA900), 1) + tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_HIP 900") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_VEGA900") + KOKKOS_INTERNAL_HIP_ARCH_FLAG := --amdgpu-target=gfx900 endif - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_CARRIZO), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_ROCM 801") - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_CARRIZO") - KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx801 + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_VEGA906), 1) + tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_HIP 906") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_VEGA906") + KOKKOS_INTERNAL_HIP_ARCH_FLAG := --amdgpu-target=gfx906 endif - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_FIJI), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_ROCM 803") - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_FIJI") - KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx803 - endif - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_VEGA), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_ROCM 900") - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_VEGA") - KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx900 - endif - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_GFX901), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_ROCM 901") - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_GFX901") - KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx901 - endif - - - KOKKOS_INTERNAL_HCC_PATH := $(shell which $(CXX)) - ROCM_HCC_PATH ?= $(KOKKOS_INTERNAL_HCC_PATH:/bin/clang++=) - KOKKOS_CXXFLAGS += $(shell $(ROCM_HCC_PATH)/bin/hcc-config --cxxflags) - KOKKOS_LDFLAGS += $(shell $(ROCM_HCC_PATH)/bin/hcc-config --ldflags) -lhc_am -lm - KOKKOS_CXXLDFLAGS += $(shell $(ROCM_HCC_PATH)/bin/hcc-config --ldflags) -lhc_am -lm - KOKKOS_TPL_LIBRARY_NAMES += hc_am m - KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_ROCM_ARCH_FLAG) + KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/HIP/*.cpp) + KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/HIP/*.hpp) - KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/ROCm/*.cpp) -ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) - KOKKOS_SRC += $(wildcard $(KOKKOS_ETI_PATH)/ROCm/*.cpp) -endif - KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/ROCm/*.hpp) + KOKKOS_CXXFLAGS+=$(KOKKOS_INTERNAL_HIP_ARCH_FLAG) + KOKKOS_LDFLAGS+=$(KOKKOS_INTERNAL_HIP_ARCH_FLAG) + + ifeq ($(KOKKOS_INTERNAL_HIP_USE_RELOC), 1) + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE") + KOKKOS_CXXFLAGS+=-fgpu-rdc + KOKKOS_LDFLAGS+=-fgpu-rdc + else + KOKKOS_CXXFLAGS+=-fno-gpu-rdc + KOKKOS_LDFLAGS+=-fno-gpu-rdc + endif endif + KOKKOS_INTERNAL_LS_CONFIG := $(shell ls KokkosCore_config.h 2>&1) ifeq ($(KOKKOS_INTERNAL_LS_CONFIG), KokkosCore_config.h) @@ -1141,7 +1191,7 @@ endif endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) - KOKKOS_SRC += $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp + KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/OpenMPTarget/*.cpp) KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/OpenMPTarget/*.hpp) ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) KOKKOS_CXXFLAGS += -Xcompiler $(KOKKOS_INTERNAL_OPENMPTARGET_FLAG) @@ -1149,6 +1199,7 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_OPENMPTARGET_FLAG) endif KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_OPENMPTARGET_FLAG) + KOKKOS_LIBS += $(KOKKOS_INTERNAL_OPENMPTARGET_LIB) endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) @@ -1178,22 +1229,6 @@ endif KOKKOS_TPL_LIBRARY_NAMES += pthread endif -ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 1) - KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/Qthreads/*.cpp) - KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/Qthreads/*.hpp) - ifneq ($(KOKKOS_CMAKE), yes) - ifneq ($(QTHREADS_PATH),) - KOKKOS_CPPFLAGS += -I$(QTHREADS_PATH)/include - KOKKOS_LIBDIRS += -L$(QTHREADS_PATH)/lib - KOKKOS_CXXLDFLAGS += -L$(QTHREADS_PATH)/lib - KOKKOS_TPL_INCLUDE_DIRS += $(QTHREADS_PATH)/include - KOKKOS_TPL_LIBRARY_DIRS += $(QTHREADS_PATH)/lib64 - endif - KOKKOS_LIBS += -lqthread - KOKKOS_TPL_LIBRARY_NAMES += qthread - endif -endif - ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/HPX/*.cpp) KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/HPX/*.hpp) diff --git a/lib/kokkos/Makefile.targets b/lib/kokkos/Makefile.targets index 0a1f522016..18e37a71f7 100644 --- a/lib/kokkos/Makefile.targets +++ b/lib/kokkos/Makefile.targets @@ -55,6 +55,17 @@ ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) endif endif +ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) +Kokkos_HIP_Space.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_Space.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_Space.cpp +Kokkos_HIP_Instance.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_Instance.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_Instance.cpp +Kokkos_HIP_KernelLaunch.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_KernelLaunch.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_KernelLaunch.cpp +Kokkos_HIP_Locks.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_Locks.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_Locks.cpp +endif + ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) Kokkos_ROCm_Exec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Exec.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Exec.cpp @@ -79,13 +90,6 @@ ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) endif endif -ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 1) -Kokkos_QthreadsExec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Qthreads/Kokkos_QthreadsExec.cpp - $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Qthreads/Kokkos_QthreadsExec.cpp -Kokkos_Qthreads_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Qthreads/Kokkos_Qthreads_Task.cpp - $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Qthreads/Kokkos_Qthreads_Task.cpp -endif - ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) Kokkos_OpenMP_Exec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp @@ -106,10 +110,12 @@ endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) Kokkos_OpenMPTarget_Exec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp +Kokkos_OpenMPTarget_Instance.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp Kokkos_OpenMPTargetSpace.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp -#Kokkos_OpenMPTarget_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.cpp -# $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.cpp +Kokkos_OpenMPTarget_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.cpp endif Kokkos_HBWSpace.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_HBWSpace.cpp diff --git a/lib/kokkos/README.md b/lib/kokkos/README.md index 322dabfdab..a04df9eb9b 100644 --- a/lib/kokkos/README.md +++ b/lib/kokkos/README.md @@ -11,8 +11,8 @@ CUDA, HPX, OpenMP and Pthreads as backend programming models with several other backends in development. Kokkos Core is part of the Kokkos C++ Performance Portability Programming EcoSystem, -which also provides math kernels (https://github.com/kokkos/kokkos-kernels), as well as -profiling and debugging tools (https://github.com/kokkos/kokkos-tools). +which also provides math kernels (https://github.com/kokkos/kokkos-kernels), as well as +profiling and debugging tools (https://github.com/kokkos/kokkos-tools). # Learning about Kokkos @@ -23,7 +23,7 @@ For questions find us on Slack: https://kokkosteam.slack.com or open a github is For non-public questions send an email to crtrott(at)sandia.gov -A separate repository with extensive tutorial material can be found under +A separate repository with extensive tutorial material can be found under https://github.com/kokkos/kokkos-tutorials. Furthermore, the 'example/tutorial' directory provides step by step tutorial @@ -41,12 +41,12 @@ To learn more about Kokkos consider watching one of our presentations: # Contributing to Kokkos -We are open and try to encourage contributions from external developers. +We are open and try to encourage contributions from external developers. To do so please first open an issue describing the contribution and then issue a pull request against the develop branch. For larger features it may be good -to get guidance from the core development team first through the github issue. +to get guidance from the core development team first through the github issue. -Note that Kokkos Core is licensed under standard 3-clause BSD terms of use. +Note that Kokkos Core is licensed under standard 3-clause BSD terms of use. Which means contributing to Kokkos allows anyone else to use your contributions not just for public purposes but also for closed source commercial projects. For specifics see the LICENSE file contained in the repository or distribution. @@ -94,9 +94,9 @@ For specifics see the LICENSE file contained in the repository or distribution. * Intel 18.2.199 (with gcc 4.9.3) ### Primary tested compilers on ARM (Cavium ThunderX2) -* GCC 7.2.0 +* GCC 7.2.0 * ARM/Clang 18.4.0 - + ### Other compilers working: * X86: * Cygwin 2.1.0 64bit with gcc 4.9.3 @@ -110,47 +110,47 @@ For specifics see the LICENSE file contained in the repository or distribution. Primary tested compiler are passing in release mode -with warnings as errors. They also are tested with a comprehensive set of +with warnings as errors. They also are tested with a comprehensive set of backend combinations (i.e. OpenMP, Pthreads, Serial, OpenMP+Serial, ...). We are using the following set of flags: -* GCC: +* GCC: ```` - -Wall -Wshadow -pedantic + -Wall -Wunused-parameter -Wshadow -pedantic -Werror -Wsign-compare -Wtype-limits - -Wignored-qualifiers -Wempty-body + -Wignored-qualifiers -Wempty-body -Wclobbered -Wuninitialized ```` -* Intel: +* Intel: ```` - -Wall -Wshadow -pedantic - -Werror -Wsign-compare -Wtype-limits + -Wall -Wunused-parameter -Wshadow -pedantic + -Werror -Wsign-compare -Wtype-limits -Wuninitialized ```` -* Clang: +* Clang: ```` - -Wall -Wshadow -pedantic - -Werror -Wsign-compare -Wtype-limits + -Wall -Wunused-parameter -Wshadow -pedantic + -Werror -Wsign-compare -Wtype-limits -Wuninitialized - ```` + ```` -* NVCC: +* NVCC: ```` - -Wall -Wshadow -pedantic - -Werror -Wsign-compare -Wtype-limits + -Wall -Wunused-parameter -Wshadow -pedantic + -Werror -Wsign-compare -Wtype-limits -Wuninitialized ```` -Other compilers are tested occasionally, in particular when pushing from develop to +Other compilers are tested occasionally, in particular when pushing from develop to master branch. These are tested less rigorously without `-Werror` and only for a select set of backends. # Building and Installing Kokkos -Kokkos provide a CMake build system and a raw Makefile build system. +Kokkos provide a CMake build system and a raw Makefile build system. The CMake build system is strongly encouraged and will be the most rigorously supported in future releases. Full details are given in the [build instructions](BUILD.md). Basic setups are shown here: ## CMake -The best way to install Kokkos is using the CMake build system. Assuming Kokkos lives in `$srcdir`: +The best way to install Kokkos is using the CMake build system. Assuming Kokkos lives in `$srcdir`: ```` cmake $srcdir \ -DCMAKE_CXX_COMPILER=$path_to_compiler \ @@ -162,9 +162,9 @@ cmake $srcdir \ ```` then simply type `make install`. The Kokkos CMake package will then be installed in `$path_to_install` to be used by downstream packages. -To validate the Kokkos build, configure with +To validate the Kokkos build, configure with ```` - -DKokkos_ENABLE_TESTS=On + -DKokkos_ENABLE_TESTS=On ```` and run `make test` after completing the build. @@ -209,7 +209,7 @@ For a complete list of Kokkos options, run: spack info kokkos ```` Spack currently installs packages to a location determined by a unique hash. This hash name is not really "human readable". -Generally, Spack usage should never really require you to reference the computer-generated unique install folder. +Generally, Spack usage should never really require you to reference the computer-generated unique install folder. More details are given in the [build instructions](BUILD.md). If you must know, you can locate Spack Kokkos installations with: ```` spack find -p kokkos ... @@ -217,7 +217,7 @@ spack find -p kokkos ... where `...` is the unique spec identifying the particular Kokkos configuration and version. -## Raw Makefile +## Raw Makefile A bash script is provided to generate raw makefiles. To install Kokkos as a library create a build directory and run the following ```` @@ -240,33 +240,33 @@ changing the device type for which to build. For individual projects, it may be preferable to build Kokkos inline rather than link to an installed package. The main reason is that you may otherwise need many different configurations of Kokkos installed depending on the required compile time -features an application needs. For example there is only one default +features an application needs. For example there is only one default execution space, which means you need different installations to have OpenMP or Pthreads as the default space. Also for the CUDA backend there are certain -choices, such as allowing relocatable device code, which must be made at +choices, such as allowing relocatable device code, which must be made at installation time. Building Kokkos inline uses largely the same process -as compiling an application against an installed Kokkos library. +as compiling an application against an installed Kokkos library. For CMake, this means copying over the Kokkos source code into your project and adding `add_subdirectory(kokkos)` to your CMakeLists.txt. -For raw Makefiles, see the example benchmarks/bytes_and_flops/Makefile which can be used with an installed library and or an inline build. +For raw Makefiles, see the example benchmarks/bytes_and_flops/Makefile which can be used with an installed library and or an inline build. # Kokkos and CUDA UVM -Kokkos does support UVM as a specific memory space called CudaUVMSpace. -Allocations made with that space are accessible from host and device. +Kokkos does support UVM as a specific memory space called CudaUVMSpace. +Allocations made with that space are accessible from host and device. You can tell Kokkos to use that as the default space for Cuda allocations. In either case UVM comes with a number of restrictions: -* You can't access allocations on the host while a kernel is potentially -running. This will lead to segfaults. To avoid that you either need to +* You can't access allocations on the host while a kernel is potentially +running. This will lead to segfaults. To avoid that you either need to call Kokkos::Cuda::fence() (or just Kokkos::fence()), after kernels, or you can set the environment variable CUDA_LAUNCH_BLOCKING=1. -* In multi socket multi GPU machines without NVLINK, UVM defaults +* In multi socket multi GPU machines without NVLINK, UVM defaults to using zero copy allocations for technical reasons related to using multiple GPUs from the same process. If an executable doesn't do that (e.g. each -MPI rank of an application uses a single GPU [can be the same GPU for +MPI rank of an application uses a single GPU [can be the same GPU for multiple MPI ranks]) you can set CUDA_MANAGED_FORCE_DEVICE_ALLOC=1. -This will enforce proper UVM allocations, but can lead to errors if +This will enforce proper UVM allocations, but can lead to errors if more than a single GPU is used by a single process. diff --git a/lib/kokkos/algorithms/src/Kokkos_Random.hpp b/lib/kokkos/algorithms/src/Kokkos_Random.hpp index 078db18edd..0a79675236 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Random.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Random.hpp @@ -537,6 +537,145 @@ struct rand > { } }; +template +class Random_XorShift1024_Pool; + +namespace Impl { + +template +struct Random_XorShift1024_State { + uint64_t state_[16]; + KOKKOS_DEFAULTED_FUNCTION + Random_XorShift1024_State() = default; + + template + KOKKOS_FUNCTION Random_XorShift1024_State(const StateViewType& v, + int state_idx) { + for (int i = 0; i < 16; i++) state_[i] = v(state_idx, i); + } + + KOKKOS_FUNCTION + uint64_t operator[](const int i) const { return state_[i]; } + + KOKKOS_FUNCTION + uint64_t& operator[](const int i) { return state_[i]; } +}; + +template <> +struct Random_XorShift1024_State { + uint64_t* state_; + const int stride_; + KOKKOS_FUNCTION + Random_XorShift1024_State() : state_(nullptr), stride_(1){}; + + template + KOKKOS_FUNCTION Random_XorShift1024_State(const StateViewType& v, + int state_idx) + : state_(&v(state_idx, 0)), stride_(v.stride_1()) {} + + KOKKOS_FUNCTION + uint64_t operator[](const int i) const { return state_[i * stride_]; } + + KOKKOS_FUNCTION + uint64_t& operator[](const int i) { return state_[i * stride_]; } +}; + +template +struct Random_XorShift1024_UseCArrayState : std::true_type {}; + +#ifdef KOKKOS_ENABLE_CUDA +template <> +struct Random_XorShift1024_UseCArrayState : std::false_type {}; +#endif +#ifdef KOKKOS_ENABLE_HIP +template <> +struct Random_XorShift1024_UseCArrayState + : std::false_type {}; +#endif +#ifdef KOKKOS_ENABLE_OPENMPTARGET +template <> +struct Random_XorShift1024_UseCArrayState + : std::false_type {}; +#endif + +template +struct Random_UniqueIndex { + using locks_view_type = View; + KOKKOS_FUNCTION + static int get_state_idx(const locks_view_type) { +#ifdef KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + const int i = ExecutionSpace::hardware_thread_id(); +#else + const int i = ExecutionSpace::impl_hardware_thread_id(); +#endif + return i; +#else + return 0; +#endif + } +}; + +#ifdef KOKKOS_ENABLE_CUDA +template <> +struct Random_UniqueIndex { + using locks_view_type = View; + KOKKOS_FUNCTION + static int get_state_idx(const locks_view_type& locks_) { +#ifdef __CUDA_ARCH__ + const int i_offset = + (threadIdx.x * blockDim.y + threadIdx.y) * blockDim.z + threadIdx.z; + int i = (((blockIdx.x * gridDim.y + blockIdx.y) * gridDim.z + blockIdx.z) * + blockDim.x * blockDim.y * blockDim.z + + i_offset) % + locks_.extent(0); + while (Kokkos::atomic_compare_exchange(&locks_(i), 0, 1)) { + i += blockDim.x * blockDim.y * blockDim.z; + if (i >= static_cast(locks_.extent(0))) { + i = i_offset; + } + } + return i; +#else + (void)locks_; + return 0; +#endif + } +}; +#endif + +#ifdef KOKKOS_ENABLE_HIP +template <> +struct Random_UniqueIndex { + using locks_view_type = View; + KOKKOS_FUNCTION + static int get_state_idx(const locks_view_type& locks_) { +#ifdef __HIP_DEVICE_COMPILE__ + const int i_offset = + (hipThreadIdx_x * hipBlockDim_y + hipThreadIdx_y) * hipBlockDim_z + + hipThreadIdx_z; + int i = (((hipBlockIdx_x * hipGridDim_y + hipBlockIdx_y) * hipGridDim_z + + hipBlockIdx_z) * + hipBlockDim_x * hipBlockDim_y * hipBlockDim_z + + i_offset) % + locks_.extent(0); + while (Kokkos::atomic_compare_exchange(&locks_(i), 0, 1)) { + i += hipBlockDim_x * hipBlockDim_y * hipBlockDim_z; + if (i >= static_cast(locks_.extent(0))) { + i = i_offset; + } + } + return i; +#else + (void)locks_; + return 0; +#endif + } +}; +#endif + +} // namespace Impl + template class Random_XorShift64_Pool; @@ -550,10 +689,10 @@ class Random_XorShift64 { public: typedef DeviceType device_type; - enum { MAX_URAND = 0xffffffffU }; - enum { MAX_URAND64 = 0xffffffffffffffffULL - 1 }; - enum { MAX_RAND = static_cast(0xffffffff / 2) }; - enum { MAX_RAND64 = static_cast(0xffffffffffffffffLL / 2 - 1) }; + constexpr static uint32_t MAX_URAND = std::numeric_limits::max(); + constexpr static uint64_t MAX_URAND64 = std::numeric_limits::max(); + constexpr static int32_t MAX_RAND = std::numeric_limits::max(); + constexpr static int64_t MAX_RAND64 = std::numeric_limits::max(); KOKKOS_INLINE_FUNCTION Random_XorShift64(uint64_t state, int state_idx = 0) @@ -637,10 +776,12 @@ class Random_XorShift64 { } KOKKOS_INLINE_FUNCTION - float frand() { return 1.0f * urand64() / MAX_URAND64; } + float frand() { return urand64() / static_cast(MAX_URAND64); } KOKKOS_INLINE_FUNCTION - float frand(const float& range) { return range * urand64() / MAX_URAND64; } + float frand(const float& range) { + return range * urand64() / static_cast(MAX_URAND64); + } KOKKOS_INLINE_FUNCTION float frand(const float& start, const float& end) { @@ -648,10 +789,12 @@ class Random_XorShift64 { } KOKKOS_INLINE_FUNCTION - double drand() { return 1.0 * urand64() / MAX_URAND64; } + double drand() { return urand64() / static_cast(MAX_URAND64); } KOKKOS_INLINE_FUNCTION - double drand(const double& range) { return range * urand64() / MAX_URAND64; } + double drand(const double& range) { + return range * urand64() / static_cast(MAX_URAND64); + } KOKKOS_INLINE_FUNCTION double drand(const double& start, const double& end) { @@ -662,6 +805,11 @@ class Random_XorShift64 { // number KOKKOS_INLINE_FUNCTION double normal() { +#ifndef __HIP_DEVICE_COMPILE__ // FIXME_HIP + using std::sqrt; +#else + using ::sqrt; +#endif double S = 2.0; double U; while (S >= 1.0) { @@ -669,7 +817,7 @@ class Random_XorShift64 { const double V = 2.0 * drand() - 1.0; S = U * U + V * V; } - return U * std::sqrt(-2.0 * log(S) / S); + return U * sqrt(-2.0 * log(S) / S); } KOKKOS_INLINE_FUNCTION @@ -681,9 +829,10 @@ class Random_XorShift64 { template class Random_XorShift64_Pool { private: - typedef View lock_type; + using execution_space = typename DeviceType::execution_space; + typedef View locks_type; typedef View state_data_type; - lock_type locks_; + locks_type locks_; state_data_type state_; int num_states_; @@ -695,11 +844,8 @@ class Random_XorShift64_Pool { Random_XorShift64_Pool() { num_states_ = 0; } Random_XorShift64_Pool(uint64_t seed) { num_states_ = 0; -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE - init(seed, DeviceType::max_hardware_threads()); -#else - init(seed, DeviceType::impl_max_hardware_threads()); -#endif + + init(seed, execution_space().concurrency()); } KOKKOS_INLINE_FUNCTION @@ -719,11 +865,11 @@ class Random_XorShift64_Pool { num_states_ = num_states; - locks_ = lock_type("Kokkos::Random_XorShift64::locks", num_states_); + locks_ = locks_type("Kokkos::Random_XorShift64::locks", num_states_); state_ = state_data_type("Kokkos::Random_XorShift64::state", num_states_); typename state_data_type::HostMirror h_state = create_mirror_view(state_); - typename lock_type::HostMirror h_lock = create_mirror_view(locks_); + typename locks_type::HostMirror h_lock = create_mirror_view(locks_); // Execute on the HostMirror's default execution space. Random_XorShift64 @@ -746,13 +892,8 @@ class Random_XorShift64_Pool { KOKKOS_INLINE_FUNCTION Random_XorShift64 get_state() const { -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE - const int i = DeviceType::hardware_thread_id(); - ; -#else - const int i = DeviceType::impl_hardware_thread_id(); - ; -#endif + const int i = + Impl::Random_UniqueIndex::get_state_idx(locks_); return Random_XorShift64(state_(i), i); } @@ -765,35 +906,35 @@ class Random_XorShift64_Pool { KOKKOS_INLINE_FUNCTION void free_state(const Random_XorShift64& state) const { state_(state.state_idx_) = state.state_; + locks_(state.state_idx_) = 0; } }; -template -class Random_XorShift1024_Pool; - template class Random_XorShift1024 { + using execution_space = typename DeviceType::execution_space; + private: int p_; const int state_idx_; - uint64_t state_[16]; + Impl::Random_XorShift1024_State< + Impl::Random_XorShift1024_UseCArrayState::value> + state_; friend class Random_XorShift1024_Pool; public: typedef Random_XorShift1024_Pool pool_type; typedef DeviceType device_type; - enum { MAX_URAND = 0xffffffffU }; - enum { MAX_URAND64 = 0xffffffffffffffffULL - 1 }; - enum { MAX_RAND = static_cast(0xffffffffU / 2) }; - enum { MAX_RAND64 = static_cast(0xffffffffffffffffULL / 2 - 1) }; + constexpr static uint32_t MAX_URAND = std::numeric_limits::max(); + constexpr static uint64_t MAX_URAND64 = std::numeric_limits::max(); + constexpr static int32_t MAX_RAND = std::numeric_limits::max(); + constexpr static int64_t MAX_RAND64 = std::numeric_limits::max(); KOKKOS_INLINE_FUNCTION Random_XorShift1024(const typename pool_type::state_data_type& state, int p, int state_idx = 0) - : p_(p), state_idx_(state_idx) { - for (int i = 0; i < 16; i++) state_[i] = state(state_idx, i); - } + : p_(p), state_idx_(state_idx), state_(state, state_idx) {} KOKKOS_INLINE_FUNCTION uint32_t urand() { @@ -876,10 +1017,12 @@ class Random_XorShift1024 { } KOKKOS_INLINE_FUNCTION - float frand() { return 1.0f * urand64() / MAX_URAND64; } + float frand() { return urand64() / static_cast(MAX_URAND64); } KOKKOS_INLINE_FUNCTION - float frand(const float& range) { return range * urand64() / MAX_URAND64; } + float frand(const float& range) { + return range * urand64() / static_cast(MAX_URAND64); + } KOKKOS_INLINE_FUNCTION float frand(const float& start, const float& end) { @@ -887,10 +1030,12 @@ class Random_XorShift1024 { } KOKKOS_INLINE_FUNCTION - double drand() { return 1.0 * urand64() / MAX_URAND64; } + double drand() { return urand64() / static_cast(MAX_URAND64); } KOKKOS_INLINE_FUNCTION - double drand(const double& range) { return range * urand64() / MAX_URAND64; } + double drand(const double& range) { + return range * urand64() / static_cast(MAX_URAND64); + } KOKKOS_INLINE_FUNCTION double drand(const double& start, const double& end) { @@ -901,6 +1046,11 @@ class Random_XorShift1024 { // number KOKKOS_INLINE_FUNCTION double normal() { +#ifndef KOKKOS_ENABLE_HIP // FIXME_HIP + using std::sqrt; +#else + using ::sqrt; +#endif double S = 2.0; double U; while (S >= 1.0) { @@ -908,7 +1058,7 @@ class Random_XorShift1024 { const double V = 2.0 * drand() - 1.0; S = U * U + V * V; } - return U * std::sqrt(-2.0 * log(S) / S); + return U * sqrt(-2.0 * log(S) / S); } KOKKOS_INLINE_FUNCTION @@ -920,10 +1070,12 @@ class Random_XorShift1024 { template class Random_XorShift1024_Pool { private: + using execution_space = typename DeviceType::execution_space; + typedef View locks_type; typedef View int_view_type; typedef View state_data_type; - int_view_type locks_; + locks_type locks_; state_data_type state_; int_view_type p_; int num_states_; @@ -939,11 +1091,8 @@ class Random_XorShift1024_Pool { inline Random_XorShift1024_Pool(uint64_t seed) { num_states_ = 0; -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE - init(seed, DeviceType::max_hardware_threads()); -#else - init(seed, DeviceType::impl_max_hardware_threads()); -#endif + + init(seed, execution_space().concurrency()); } KOKKOS_INLINE_FUNCTION @@ -965,12 +1114,12 @@ class Random_XorShift1024_Pool { inline void init(uint64_t seed, int num_states) { if (seed == 0) seed = uint64_t(1318319); num_states_ = num_states; - locks_ = int_view_type("Kokkos::Random_XorShift1024::locks", num_states_); + locks_ = locks_type("Kokkos::Random_XorShift1024::locks", num_states_); state_ = state_data_type("Kokkos::Random_XorShift1024::state", num_states_); p_ = int_view_type("Kokkos::Random_XorShift1024::p", num_states_); typename state_data_type::HostMirror h_state = create_mirror_view(state_); - typename int_view_type::HostMirror h_lock = create_mirror_view(locks_); + typename locks_type::HostMirror h_lock = create_mirror_view(locks_); typename int_view_type::HostMirror h_p = create_mirror_view(p_); // Execute on the HostMirror's default execution space. @@ -997,11 +1146,8 @@ class Random_XorShift1024_Pool { KOKKOS_INLINE_FUNCTION Random_XorShift1024 get_state() const { -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE - const int i = DeviceType::hardware_thread_id(); -#else - const int i = DeviceType::impl_hardware_thread_id(); -#endif + const int i = + Impl::Random_UniqueIndex::get_state_idx(locks_); return Random_XorShift1024(state_, p_(i), i); }; @@ -1014,482 +1160,11 @@ class Random_XorShift1024_Pool { KOKKOS_INLINE_FUNCTION void free_state(const Random_XorShift1024& state) const { for (int i = 0; i < 16; i++) state_(state.state_idx_, i) = state.state_[i]; - p_(state.state_idx_) = state.p_; + p_(state.state_idx_) = state.p_; + locks_(state.state_idx_) = 0; } }; -#if defined(KOKKOS_ENABLE_CUDA) && defined(__CUDACC__) - -template <> -class Random_XorShift1024 { - private: - int p_; - const int state_idx_; - uint64_t* state_; - const int stride_; - friend class Random_XorShift1024_Pool; - - public: - typedef Kokkos::Cuda device_type; - typedef Random_XorShift1024_Pool pool_type; - - enum { MAX_URAND = 0xffffffffU }; - enum { MAX_URAND64 = 0xffffffffffffffffULL - 1 }; - enum { MAX_RAND = static_cast(0xffffffffU / 2) }; - enum { MAX_RAND64 = static_cast(0xffffffffffffffffULL / 2 - 1) }; - - KOKKOS_INLINE_FUNCTION - Random_XorShift1024(const typename pool_type::state_data_type& state, int p, - int state_idx = 0) - : p_(p), - state_idx_(state_idx), - state_(&state(state_idx, 0)), - stride_(state.stride_1()) {} - - KOKKOS_INLINE_FUNCTION - uint32_t urand() { - uint64_t state_0 = state_[p_ * stride_]; - uint64_t state_1 = state_[(p_ = (p_ + 1) & 15) * stride_]; - state_1 ^= state_1 << 31; - state_1 ^= state_1 >> 11; - state_0 ^= state_0 >> 30; - uint64_t tmp = - (state_[p_ * stride_] = state_0 ^ state_1) * 1181783497276652981ULL; - tmp = tmp >> 16; - return static_cast(tmp & MAX_URAND); - } - - KOKKOS_INLINE_FUNCTION - uint64_t urand64() { - uint64_t state_0 = state_[p_ * stride_]; - uint64_t state_1 = state_[(p_ = (p_ + 1) & 15) * stride_]; - state_1 ^= state_1 << 31; - state_1 ^= state_1 >> 11; - state_0 ^= state_0 >> 30; - return ((state_[p_ * stride_] = state_0 ^ state_1) * - 1181783497276652981LL) - - 1; - } - - KOKKOS_INLINE_FUNCTION - uint32_t urand(const uint32_t& range) { - const uint32_t max_val = (MAX_URAND / range) * range; - uint32_t tmp = urand(); - while (tmp >= max_val) urand(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - uint32_t urand(const uint32_t& start, const uint32_t& end) { - return urand(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - uint64_t urand64(const uint64_t& range) { - const uint64_t max_val = (MAX_URAND64 / range) * range; - uint64_t tmp = urand64(); - while (tmp >= max_val) urand64(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - uint64_t urand64(const uint64_t& start, const uint64_t& end) { - return urand64(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - int rand() { return static_cast(urand() / 2); } - - KOKKOS_INLINE_FUNCTION - int rand(const int& range) { - const int max_val = (MAX_RAND / range) * range; - int tmp = rand(); - while (tmp >= max_val) rand(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - int rand(const int& start, const int& end) { - return rand(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - int64_t rand64() { return static_cast(urand64() / 2); } - - KOKKOS_INLINE_FUNCTION - int64_t rand64(const int64_t& range) { - const int64_t max_val = (MAX_RAND64 / range) * range; - int64_t tmp = rand64(); - while (tmp >= max_val) rand64(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - int64_t rand64(const int64_t& start, const int64_t& end) { - return rand64(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - float frand() { return 1.0f * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - float frand(const float& range) { return range * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - float frand(const float& start, const float& end) { - return frand(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - double drand() { return 1.0 * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - double drand(const double& range) { return range * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - double drand(const double& start, const double& end) { - return frand(end - start) + start; - } - - // Marsaglia polar method for drawing a standard normal distributed random - // number - KOKKOS_INLINE_FUNCTION - double normal() { - double S = 2.0; - double U; - while (S >= 1.0) { - U = 2.0 * drand() - 1.0; - const double V = 2.0 * drand() - 1.0; - S = U * U + V * V; - } - return U * std::sqrt(-2.0 * log(S) / S); - } - - KOKKOS_INLINE_FUNCTION - double normal(const double& mean, const double& std_dev = 1.0) { - return mean + normal() * std_dev; - } -}; - -template <> -inline Random_XorShift64_Pool::Random_XorShift64_Pool( - uint64_t seed) { - num_states_ = 0; - init(seed, 4 * 32768); -} - -template <> -KOKKOS_INLINE_FUNCTION Random_XorShift64 -Random_XorShift64_Pool::get_state() const { -#ifdef __CUDA_ARCH__ - const int i_offset = - (threadIdx.x * blockDim.y + threadIdx.y) * blockDim.z + threadIdx.z; - int i = (((blockIdx.x * gridDim.y + blockIdx.y) * gridDim.z + blockIdx.z) * - blockDim.x * blockDim.y * blockDim.z + - i_offset) % - num_states_; - while (Kokkos::atomic_compare_exchange(&locks_(i), 0, 1)) { - i += blockDim.x * blockDim.y * blockDim.z; - if (i >= num_states_) { - i = i_offset; - } - } - - return Random_XorShift64(state_(i), i); -#else - return Random_XorShift64(state_(0), 0); -#endif -} - -template <> -KOKKOS_INLINE_FUNCTION void Random_XorShift64_Pool::free_state( - const Random_XorShift64& state) const { - state_(state.state_idx_) = state.state_; -#ifdef __CUDA_ARCH__ - locks_(state.state_idx_) = 0; - return; -#endif -} - -template <> -inline Random_XorShift1024_Pool::Random_XorShift1024_Pool( - uint64_t seed) { - num_states_ = 0; - init(seed, 4 * 32768); -} - -template <> -KOKKOS_INLINE_FUNCTION Random_XorShift1024 -Random_XorShift1024_Pool::get_state() const { -#ifdef __CUDA_ARCH__ - const int i_offset = - (threadIdx.x * blockDim.y + threadIdx.y) * blockDim.z + threadIdx.z; - int i = (((blockIdx.x * gridDim.y + blockIdx.y) * gridDim.z + blockIdx.z) * - blockDim.x * blockDim.y * blockDim.z + - i_offset) % - num_states_; - while (Kokkos::atomic_compare_exchange(&locks_(i), 0, 1)) { - i += blockDim.x * blockDim.y * blockDim.z; - if (i >= num_states_) { - i = i_offset; - } - } - - return Random_XorShift1024(state_, p_(i), i); -#else - return Random_XorShift1024(state_, p_(0), 0); -#endif -} - -template <> -KOKKOS_INLINE_FUNCTION void Random_XorShift1024_Pool::free_state( - const Random_XorShift1024& state) const { - for (int i = 0; i < 16; i++) state_(state.state_idx_, i) = state.state_[i]; -#ifdef __CUDA_ARCH__ - locks_(state.state_idx_) = 0; - return; -#endif -} - -#endif - -#if defined(KOKKOS_ENABLE_ROCM) - -template <> -class Random_XorShift1024 { - private: - int p_; - const int state_idx_; - uint64_t* state_; - const int stride_; - friend class Random_XorShift1024_Pool; - - public: - typedef Kokkos::Experimental::ROCm device_type; - typedef Random_XorShift1024_Pool pool_type; - - enum { MAX_URAND = 0xffffffffU }; - enum { MAX_URAND64 = 0xffffffffffffffffULL - 1 }; - enum { MAX_RAND = static_cast(0xffffffffU / 2) }; - enum { MAX_RAND64 = static_cast(0xffffffffffffffffULL / 2 - 1) }; - - KOKKOS_INLINE_FUNCTION - Random_XorShift1024(const typename pool_type::state_data_type& state, int p, - int state_idx = 0) - : p_(p), - state_idx_(state_idx), - state_(&state(state_idx, 0)), - stride_(state.stride_1()) {} - - KOKKOS_INLINE_FUNCTION - uint32_t urand() { - uint64_t state_0 = state_[p_ * stride_]; - uint64_t state_1 = state_[(p_ = (p_ + 1) & 15) * stride_]; - state_1 ^= state_1 << 31; - state_1 ^= state_1 >> 11; - state_0 ^= state_0 >> 30; - uint64_t tmp = - (state_[p_ * stride_] = state_0 ^ state_1) * 1181783497276652981ULL; - tmp = tmp >> 16; - return static_cast(tmp & MAX_URAND); - } - - KOKKOS_INLINE_FUNCTION - uint64_t urand64() { - uint64_t state_0 = state_[p_ * stride_]; - uint64_t state_1 = state_[(p_ = (p_ + 1) & 15) * stride_]; - state_1 ^= state_1 << 31; - state_1 ^= state_1 >> 11; - state_0 ^= state_0 >> 30; - return ((state_[p_ * stride_] = state_0 ^ state_1) * - 1181783497276652981LL) - - 1; - } - - KOKKOS_INLINE_FUNCTION - uint32_t urand(const uint32_t& range) { - const uint32_t max_val = (MAX_URAND / range) * range; - uint32_t tmp = urand(); - while (tmp >= max_val) urand(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - uint32_t urand(const uint32_t& start, const uint32_t& end) { - return urand(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - uint64_t urand64(const uint64_t& range) { - const uint64_t max_val = (MAX_URAND64 / range) * range; - uint64_t tmp = urand64(); - while (tmp >= max_val) urand64(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - uint64_t urand64(const uint64_t& start, const uint64_t& end) { - return urand64(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - int rand() { return static_cast(urand() / 2); } - - KOKKOS_INLINE_FUNCTION - int rand(const int& range) { - const int max_val = (MAX_RAND / range) * range; - int tmp = rand(); - while (tmp >= max_val) rand(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - int rand(const int& start, const int& end) { - return rand(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - int64_t rand64() { return static_cast(urand64() / 2); } - - KOKKOS_INLINE_FUNCTION - int64_t rand64(const int64_t& range) { - const int64_t max_val = (MAX_RAND64 / range) * range; - int64_t tmp = rand64(); - while (tmp >= max_val) rand64(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - int64_t rand64(const int64_t& start, const int64_t& end) { - return rand64(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - float frand() { return 1.0f * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - float frand(const float& range) { return range * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - float frand(const float& start, const float& end) { - return frand(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - double drand() { return 1.0 * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - double drand(const double& range) { return range * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - double drand(const double& start, const double& end) { - return frand(end - start) + start; - } - - // Marsaglia polar method for drawing a standard normal distributed random - // number - KOKKOS_INLINE_FUNCTION - double normal() { - double S = 2.0; - double U; - while (S >= 1.0) { - U = 2.0 * drand() - 1.0; - const double V = 2.0 * drand() - 1.0; - S = U * U + V * V; - } - return U * std::sqrt(-2.0 * log(S) / S); - } - - KOKKOS_INLINE_FUNCTION - double normal(const double& mean, const double& std_dev = 1.0) { - return mean + normal() * std_dev; - } -}; - -template <> -inline Random_XorShift64_Pool< - Kokkos::Experimental::ROCm>::Random_XorShift64_Pool(uint64_t seed) { - num_states_ = 0; - init(seed, 4 * 32768); -} - -template <> -KOKKOS_INLINE_FUNCTION Random_XorShift64 -Random_XorShift64_Pool::get_state() const { -#ifdef __HCC_ACCELERATOR__ - const int i_offset = - (threadIdx_x * blockDim_y + threadIdx_y) * blockDim_z + threadIdx_z; - int i = (((blockIdx_x * gridDim_y + blockIdx_y) * gridDim_z + blockIdx_z) * - blockDim_x * blockDim_y * blockDim_z + - i_offset) % - num_states_; - while (Kokkos::atomic_compare_exchange(&locks_(i), 0, 1)) { - i += blockDim_x * blockDim_y * blockDim_z; - if (i >= num_states_) { - i = i_offset; - } - } - - return Random_XorShift64(state_(i), i); -#else - return Random_XorShift64(state_(0), 0); -#endif -} - -template <> -KOKKOS_INLINE_FUNCTION void -Random_XorShift64_Pool::free_state( - const Random_XorShift64& state) const { -#ifdef __HCC_ACCELERATOR__ - state_(state.state_idx_) = state.state_; - locks_(state.state_idx_) = 0; - return; -#endif -} - -template <> -inline Random_XorShift1024_Pool< - Kokkos::Experimental::ROCm>::Random_XorShift1024_Pool(uint64_t seed) { - num_states_ = 0; - init(seed, 4 * 32768); -} - -template <> -KOKKOS_INLINE_FUNCTION Random_XorShift1024 -Random_XorShift1024_Pool::get_state() const { -#ifdef __HCC_ACCELERATOR__ - const int i_offset = - (threadIdx_x * blockDim_y + threadIdx_y) * blockDim_z + threadIdx_z; - int i = (((blockIdx_x * gridDim_y + blockIdx_y) * gridDim_z + blockIdx_z) * - blockDim_x * blockDim_y * blockDim_z + - i_offset) % - num_states_; - while (Kokkos::atomic_compare_exchange(&locks_(i), 0, 1)) { - i += blockDim_x * blockDim_y * blockDim_z; - if (i >= num_states_) { - i = i_offset; - } - } - - return Random_XorShift1024(state_, p_(i), i); -#else - return Random_XorShift1024(state_, p_(0), 0); -#endif -} - -template <> -KOKKOS_INLINE_FUNCTION void -Random_XorShift1024_Pool::free_state( - const Random_XorShift1024& state) const { -#ifdef __HCC_ACCELERATOR__ - for (int i = 0; i < 16; i++) state_(state.state_idx_, i) = state.state_[i]; - locks_(state.state_idx_) = 0; - return; -#endif -} - -#endif - namespace Impl { template 0) - parallel_for((LDA + 127) / 128, + parallel_for("Kokkos::fill_random", (LDA + 127) / 128, Impl::fill_random_functor_range( a, g, range)); @@ -2055,7 +1730,7 @@ void fill_random(ViewType a, RandomPool g, typename ViewType::const_value_type end) { int64_t LDA = a.extent(0); if (LDA > 0) - parallel_for((LDA + 127) / 128, + parallel_for("Kokkos::fill_random", (LDA + 127) / 128, Impl::fill_random_functor_begin_end( a, g, begin, end)); diff --git a/lib/kokkos/algorithms/src/Kokkos_Sort.hpp b/lib/kokkos/algorithms/src/Kokkos_Sort.hpp index b7a988361f..1c79a505bb 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Sort.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Sort.hpp @@ -201,7 +201,7 @@ class BinSort { bool sort_within_bins; public: - BinSort() {} + BinSort() = default; //---------------------------------------- // Constructor: takes the keys, the binning_operator and optionally whether to @@ -327,7 +327,7 @@ class BinSort { Kokkos::RangePolicy(0, len), functor); } - Kokkos::fence(); + execution_space().fence(); } template @@ -349,14 +349,14 @@ class BinSort { public: KOKKOS_INLINE_FUNCTION - void operator()(const bin_count_tag& tag, const int& i) const { + void operator()(const bin_count_tag& /*tag*/, const int i) const { const int j = range_begin + i; bin_count_atomic(bin_op.bin(keys, j))++; } KOKKOS_INLINE_FUNCTION - void operator()(const bin_offset_tag& tag, const int& i, value_type& offset, - const bool& final) const { + void operator()(const bin_offset_tag& /*tag*/, const int i, + value_type& offset, const bool& final) const { if (final) { bin_offsets(i) = offset; } @@ -364,7 +364,7 @@ class BinSort { } KOKKOS_INLINE_FUNCTION - void operator()(const bin_binning_tag& tag, const int& i) const { + void operator()(const bin_binning_tag& /*tag*/, const int i) const { const int j = range_begin + i; const int bin = bin_op.bin(keys, j); const int count = bin_count_atomic(bin)++; @@ -373,7 +373,7 @@ class BinSort { } KOKKOS_INLINE_FUNCTION - void operator()(const bin_sort_bins_tag& tag, const int& i) const { + void operator()(const bin_sort_bins_tag& /*tag*/, const int i) const { auto bin_size = bin_count_const(i); if (bin_size <= 1) return; int upper_bound = bin_offsets(i) + bin_size; @@ -381,7 +381,7 @@ class BinSort { while (!sorted) { sorted = true; int old_idx = sort_order(bin_offsets(i)); - int new_idx; + int new_idx = 0; for (int k = bin_offsets(i) + 1; k < upper_bound; k++) { new_idx = sort_order(k); @@ -446,7 +446,7 @@ struct BinOp3D { typename KeyViewType::non_const_value_type range_[3]; typename KeyViewType::non_const_value_type min_[3]; - BinOp3D() {} + BinOp3D() = default; BinOp3D(int max_bins__[], typename KeyViewType::const_value_type min[], typename KeyViewType::const_value_type max[]) { diff --git a/lib/kokkos/algorithms/unit_tests/CMakeLists.txt b/lib/kokkos/algorithms/unit_tests/CMakeLists.txt index 6fb08ce2ed..e3563a8b98 100644 --- a/lib/kokkos/algorithms/unit_tests/CMakeLists.txt +++ b/lib/kokkos/algorithms/unit_tests/CMakeLists.txt @@ -20,16 +20,38 @@ KOKKOS_ADD_TEST_LIBRARY( HEADERS ${GTEST_SOURCE_DIR}/gtest/gtest.h SOURCES ${GTEST_SOURCE_DIR}/gtest/gtest-all.cc ) -KOKKOS_TARGET_COMPILE_DEFINITIONS(kokkosalgorithms_gtest PUBLIC "-DGTEST_HAS_PTHREAD=0") +# WORKAROUND FOR HIPCC +IF(Kokkos_ENABLE_HIP) + TARGET_COMPILE_DEFINITIONS(kokkosalgorithms_gtest PUBLIC "-DGTEST_HAS_PTHREAD=0 --amdgpu-target=gfx906") +ELSE() + TARGET_COMPILE_DEFINITIONS(kokkosalgorithms_gtest PUBLIC "-DGTEST_HAS_PTHREAD=0") +ENDIF() + +TARGET_COMPILE_FEATURES(kokkosalgorithms_gtest PUBLIC cxx_std_11) SET(SOURCES - UnitTestMain.cpp - TestCuda.cpp - ) + UnitTestMain.cpp +) IF(Kokkos_ENABLE_OPENMP) LIST( APPEND SOURCES TestOpenMP.cpp + TestOpenMP_Sort1D.cpp + TestOpenMP_Sort3D.cpp + TestOpenMP_SortDynamicView.cpp + TestOpenMP_Random.cpp + ) +ENDIF() + +IF(Kokkos_ENABLE_HIP) + LIST( APPEND SOURCES + TestHIP.cpp + ) +ENDIF() + +IF(Kokkos_ENABLE_CUDA) + LIST( APPEND SOURCES + TestCuda.cpp ) ENDIF() diff --git a/lib/kokkos/algorithms/unit_tests/Makefile b/lib/kokkos/algorithms/unit_tests/Makefile index 3c862d03dc..4a192b08ec 100644 --- a/lib/kokkos/algorithms/unit_tests/Makefile +++ b/lib/kokkos/algorithms/unit_tests/Makefile @@ -44,7 +44,7 @@ ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) - OBJ_OPENMP = TestOpenMP.o UnitTestMain.o gtest-all.o + OBJ_OPENMP = TestOpenMP.o TestOpenMP_Random.o TestOpenMP_Sort1D.o TestOpenMP_Sort3D.o TestOpenMP_SortDynamicView.o UnitTestMain.o gtest-all.o TARGETS += KokkosAlgorithms_UnitTest_OpenMP TEST_TARGETS += test-openmp endif diff --git a/lib/kokkos/algorithms/unit_tests/TestCuda.cpp b/lib/kokkos/algorithms/unit_tests/TestCuda.cpp index ab727b0326..86cee61f64 100644 --- a/lib/kokkos/algorithms/unit_tests/TestCuda.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestCuda.cpp @@ -59,11 +59,15 @@ namespace Test { void cuda_test_random_xorshift64(int num_draws) { - Impl::test_random >(num_draws); + Impl::test_random>(num_draws); + Impl::test_random>>(num_draws); } void cuda_test_random_xorshift1024(int num_draws) { - Impl::test_random >(num_draws); + Impl::test_random>(num_draws); + Impl::test_random>>(num_draws); } #define CUDA_RANDOM_XORSHIFT64(num_draws) \ diff --git a/lib/kokkos/algorithms/unit_tests/TestHIP.cpp b/lib/kokkos/algorithms/unit_tests/TestHIP.cpp new file mode 100644 index 0000000000..5e5ccb6a2e --- /dev/null +++ b/lib/kokkos/algorithms/unit_tests/TestHIP.cpp @@ -0,0 +1,83 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#ifdef KOKKOS_ENABLE_HIP + +#include +#include +#include + +#include + +#include + +#include +#include + +namespace Test { + +void hip_test_random_xorshift64(size_t num_draws) { + Impl::test_random>( + num_draws); + Impl::test_random>>(num_draws); +} + +void hip_test_random_xorshift1024(size_t num_draws) { + Impl::test_random< + Kokkos::Random_XorShift1024_Pool>(num_draws); + Impl::test_random>>(num_draws); +} + +TEST(hip, Random_XorShift64) { hip_test_random_xorshift64(132141141); } +TEST(hip, Random_XorShift1024_0) { hip_test_random_xorshift1024(52428813); } +TEST(hip, SortUnsigned) { + Impl::test_sort(171); +} +} // namespace Test +#else +void KOKKOS_ALGORITHMS_UNITTESTS_TESTHIP_PREVENT_LINK_ERROR() {} +#endif /* #ifdef KOKKOS_ENABLE_HIP */ diff --git a/lib/kokkos/algorithms/unit_tests/TestOpenMP.cpp b/lib/kokkos/algorithms/unit_tests/TestOpenMP.cpp index 3a9e306014..5ded3ce390 100644 --- a/lib/kokkos/algorithms/unit_tests/TestOpenMP.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestOpenMP.cpp @@ -55,30 +55,8 @@ namespace Test { -#define OPENMP_RANDOM_XORSHIFT64(num_draws) \ - TEST(openmp, Random_XorShift64) { \ - Impl::test_random >( \ - num_draws); \ - } +TEST(openmp, SortIssue1160) { Impl::test_issue_1160_sort(); } -#define OPENMP_RANDOM_XORSHIFT1024(num_draws) \ - TEST(openmp, Random_XorShift1024) { \ - Impl::test_random >( \ - num_draws); \ - } - -#define OPENMP_SORT_UNSIGNED(size) \ - TEST(openmp, SortUnsigned) { \ - Impl::test_sort(size); \ - } - -OPENMP_RANDOM_XORSHIFT64(10240000) -OPENMP_RANDOM_XORSHIFT1024(10130144) -OPENMP_SORT_UNSIGNED(171) - -#undef OPENMP_RANDOM_XORSHIFT64 -#undef OPENMP_RANDOM_XORSHIFT1024 -#undef OPENMP_SORT_UNSIGNED } // namespace Test #else void KOKKOS_ALGORITHMS_UNITTESTS_TESTOPENMP_PREVENT_LINK_ERROR() {} diff --git a/lib/kokkos/algorithms/unit_tests/TestOpenMP_Random.cpp b/lib/kokkos/algorithms/unit_tests/TestOpenMP_Random.cpp new file mode 100644 index 0000000000..1ca8e0a828 --- /dev/null +++ b/lib/kokkos/algorithms/unit_tests/TestOpenMP_Random.cpp @@ -0,0 +1,77 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#ifdef KOKKOS_ENABLE_OPENMP + +#include +#include + +//---------------------------------------------------------------------------- +#include +#include + +namespace Test { + +#define OPENMP_RANDOM_XORSHIFT64(num_draws) \ + TEST(openmp, Random_XorShift64) { \ + Impl::test_random >( \ + num_draws); \ + } + +#define OPENMP_RANDOM_XORSHIFT1024(num_draws) \ + TEST(openmp, Random_XorShift1024) { \ + Impl::test_random >( \ + num_draws); \ + } + +OPENMP_RANDOM_XORSHIFT64(10240000) +OPENMP_RANDOM_XORSHIFT1024(10130144) + +#undef OPENMP_RANDOM_XORSHIFT64 +#undef OPENMP_RANDOM_XORSHIFT1024 +} // namespace Test +#else +void KOKKOS_ALGORITHMS_UNITTESTS_TESTOPENMP_PREVENT_LINK_ERROR() {} +#endif diff --git a/lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort1D.cpp b/lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort1D.cpp new file mode 100644 index 0000000000..a9b2010ad0 --- /dev/null +++ b/lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort1D.cpp @@ -0,0 +1,65 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#ifdef KOKKOS_ENABLE_OPENMP + +#include +#include + +//---------------------------------------------------------------------------- +#include +#include +#include + +namespace Test { + +TEST(openmp, SortUnsigned1D) { + Impl::test_1D_sort(171); +} + +} // namespace Test +#else +void KOKKOS_ALGORITHMS_UNITTESTS_TESTOPENMP_PREVENT_LINK_ERROR() {} +#endif diff --git a/lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort3D.cpp b/lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort3D.cpp new file mode 100644 index 0000000000..127d911d7c --- /dev/null +++ b/lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort3D.cpp @@ -0,0 +1,65 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#ifdef KOKKOS_ENABLE_OPENMP + +#include +#include + +//---------------------------------------------------------------------------- +#include +#include +#include + +namespace Test { + +TEST(openmp, SortUnsigned3D) { + Impl::test_3D_sort(171); +} + +} // namespace Test +#else +void KOKKOS_ALGORITHMS_UNITTESTS_TESTOPENMP_PREVENT_LINK_ERROR() {} +#endif diff --git a/lib/kokkos/algorithms/unit_tests/TestOpenMP_SortDynamicView.cpp b/lib/kokkos/algorithms/unit_tests/TestOpenMP_SortDynamicView.cpp new file mode 100644 index 0000000000..3dc8854044 --- /dev/null +++ b/lib/kokkos/algorithms/unit_tests/TestOpenMP_SortDynamicView.cpp @@ -0,0 +1,65 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#ifdef KOKKOS_ENABLE_OPENMP + +#include +#include + +//---------------------------------------------------------------------------- +#include +#include +#include + +namespace Test { + +TEST(openmp, SortUnsignedDynamicView) { + Impl::test_dynamic_view_sort(171); +} + +} // namespace Test +#else +void KOKKOS_ALGORITHMS_UNITTESTS_TESTOPENMP_PREVENT_LINK_ERROR() {} +#endif diff --git a/lib/kokkos/algorithms/unit_tests/TestRandom.hpp b/lib/kokkos/algorithms/unit_tests/TestRandom.hpp index bc55ebfad3..10a496242b 100644 --- a/lib/kokkos/algorithms/unit_tests/TestRandom.hpp +++ b/lib/kokkos/algorithms/unit_tests/TestRandom.hpp @@ -140,7 +140,7 @@ struct test_random_functor { density_3d(d3d) {} KOKKOS_INLINE_FUNCTION - void operator()(int i, RandomProperties& prop) const { + void operator()(int /*i*/, RandomProperties& prop) const { using Kokkos::atomic_fetch_add; rnd_type rand_gen = rand_pool.get_state(); diff --git a/lib/kokkos/algorithms/unit_tests/TestSort.hpp b/lib/kokkos/algorithms/unit_tests/TestSort.hpp index 310a93c93d..b6ff91c25f 100644 --- a/lib/kokkos/algorithms/unit_tests/TestSort.hpp +++ b/lib/kokkos/algorithms/unit_tests/TestSort.hpp @@ -130,7 +130,7 @@ struct sum3D { }; template -void test_1D_sort(unsigned int n, bool force_kokkos) { +void test_1D_sort_impl(unsigned int n, bool force_kokkos) { typedef Kokkos::View KeyViewType; KeyViewType keys("Keys", n); @@ -165,7 +165,7 @@ void test_1D_sort(unsigned int n, bool force_kokkos) { } template -void test_3D_sort(unsigned int n) { +void test_3D_sort_impl(unsigned int n) { typedef Kokkos::View KeyViewType; KeyViewType keys("Keys", n * n * n); @@ -214,7 +214,7 @@ void test_3D_sort(unsigned int n) { //---------------------------------------------------------------------------- template -void test_dynamic_view_sort(unsigned int n) { +void test_dynamic_view_sort_impl(unsigned int n) { typedef Kokkos::Experimental::DynamicView KeyDynamicViewType; typedef Kokkos::View KeyViewType; @@ -278,7 +278,7 @@ void test_dynamic_view_sort(unsigned int n) { //---------------------------------------------------------------------------- template -void test_issue_1160() { +void test_issue_1160_impl() { Kokkos::View element_("element", 10); Kokkos::View x_("x", 10); Kokkos::View v_("y", 10); @@ -346,16 +346,33 @@ void test_issue_1160() { //---------------------------------------------------------------------------- template -void test_sort(unsigned int N) { - test_1D_sort(N * N * N, true); - test_1D_sort(N * N * N, false); -#if !defined(KOKKOS_ENABLE_ROCM) - test_3D_sort(N); - test_dynamic_view_sort(N * N); -#endif - test_issue_1160(); +void test_1D_sort(unsigned int N) { + test_1D_sort_impl(N * N * N, true); + test_1D_sort_impl(N * N * N, false); } +template +void test_3D_sort(unsigned int N) { + test_3D_sort_impl(N); +} + +template +void test_dynamic_view_sort(unsigned int N) { + test_dynamic_view_sort_impl(N * N); +} + +template +void test_issue_1160_sort() { + test_issue_1160_impl(); +} + +template +void test_sort(unsigned int N) { + test_1D_sort(N); + test_3D_sort(N); + test_dynamic_view_sort(N); + test_issue_1160_sort(); +} } // namespace Impl } // namespace Test #endif /* KOKKOS_ALGORITHMS_UNITTESTS_TESTSORT_HPP */ diff --git a/lib/kokkos/appveyor.yml b/lib/kokkos/appveyor.yml new file mode 100644 index 0000000000..8f139ba6ab --- /dev/null +++ b/lib/kokkos/appveyor.yml @@ -0,0 +1,10 @@ +image: + - Visual Studio 2019 +clone_folder: c:\projects\source +build_script: +- cmd: >- + mkdir build && + cd build && + cmake c:\projects\source -DKokkos_ENABLE_TESTS=ON -DKokkos_ENABLE_LIBDL=OFF -DKokkos_ENABLE_PROFILING=OFF && + cmake --build . --target install && + ctest -C Debug -V diff --git a/lib/kokkos/benchmarks/gups/gups-kokkos.cc b/lib/kokkos/benchmarks/gups/gups-kokkos.cc index 9ac59be4a6..36fc36925b 100644 --- a/lib/kokkos/benchmarks/gups/gups-kokkos.cc +++ b/lib/kokkos/benchmarks/gups/gups-kokkos.cc @@ -61,7 +61,7 @@ typedef int GUPSIndex; double now() { struct timeval now; - gettimeofday(&now, NULL); + gettimeofday(&now, nullptr); return (double) now.tv_sec + ((double) now.tv_usec * 1.0e-6); } diff --git a/lib/kokkos/benchmarks/stream/stream-kokkos.cc b/lib/kokkos/benchmarks/stream/stream-kokkos.cc index 6ce789dd82..8d604079d4 100644 --- a/lib/kokkos/benchmarks/stream/stream-kokkos.cc +++ b/lib/kokkos/benchmarks/stream/stream-kokkos.cc @@ -64,7 +64,7 @@ typedef int StreamIndex; double now() { struct timeval now; - gettimeofday(&now, NULL); + gettimeofday(&now, nullptr); return (double) now.tv_sec + ((double) now.tv_usec * 1.0e-6); } diff --git a/lib/kokkos/cm_generate_makefile.bash b/lib/kokkos/cm_generate_makefile.bash deleted file mode 100755 index fd7cfe2d32..0000000000 --- a/lib/kokkos/cm_generate_makefile.bash +++ /dev/null @@ -1,339 +0,0 @@ -#!/bin/bash - -update_kokkos_devices() { - SEARCH_TEXT="*$1*" - if [[ $KOKKOS_DEVICES == $SEARCH_TEXT ]]; then - echo kokkos devices already includes $SEARCH_TEXT - else - if [ "$KOKKOS_DEVICES" = "" ]; then - KOKKOS_DEVICES="$1" - echo reseting kokkos devices to $KOKKOS_DEVICES - else - KOKKOS_DEVICES="${KOKKOS_DEVICES},$1" - echo appending to kokkos devices $KOKKOS_DEVICES - fi - fi -} - -get_kokkos_device_list() { - KOKKOS_DEVICE_CMD= - PARSE_DEVICES_LST=$(echo $KOKKOS_DEVICES | tr "," "\n") - for DEVICE_ in $PARSE_DEVICES_LST - do - UC_DEVICE=$(echo $DEVICE_ | tr "[:lower:]" "[:upper:]") - KOKKOS_DEVICE_CMD="-DKokkos_ENABLE_${UC_DEVICE}=ON ${KOKKOS_DEVICE_CMD}" - done -} - -get_kokkos_arch_list() { - KOKKOS_ARCH_CMD= - PARSE_ARCH_LST=$(echo $KOKKOS_ARCH | tr "," "\n") - for ARCH_ in $PARSE_ARCH_LST - do - UC_ARCH=$(echo $ARCH_ | tr "[:lower:]" "[:upper:]") - KOKKOS_ARCH_CMD="-DKokkos_ARCH_${UC_ARCH}=ON ${KOKKOS_ARCH_CMD}" - done -} - -get_kokkos_cuda_option_list() { - echo parsing KOKKOS_CUDA_OPTIONS=$KOKKOS_CUDA_OPTIONS - KOKKOS_CUDA_OPTION_CMD= - PARSE_CUDA_LST=$(echo $KOKKOS_CUDA_OPTIONS | tr "," "\n") - for CUDA_ in $PARSE_CUDA_LST - do - CUDA_OPT_NAME= - if [ "${CUDA_}" == "enable_lambda" ]; then - CUDA_OPT_NAME=CUDA_LAMBDA - elif [ "${CUDA_}" == "rdc" ]; then - CUDA_OPT_NAME=CUDA_RELOCATABLE_DEVICE_CODE - elif [ "${CUDA_}" == "force_uvm" ]; then - CUDA_OPT_NAME=CUDA_UVM - elif [ "${CUDA_}" == "use_ldg" ]; then - CUDA_OPT_NAME=CUDA_LDG_INTRINSIC - else - echo "${CUDA_} is not a valid cuda options..." - fi - if [ "${CUDA_OPT_NAME}" != "" ]; then - KOKKOS_CUDA_OPTION_CMD="-DKokkos_ENABLE_${CUDA_OPT_NAME}=ON ${KOKKOS_CUDA_OPTION_CMD}" - fi - done -} - -get_kokkos_option_list() { - echo parsing KOKKOS_OPTIONS=$KOKKOS_OPTIONS - KOKKOS_OPTION_CMD= - PARSE_OPTIONS_LST=$(echo $KOKKOS_OPTIONS | tr "," "\n") - for OPT_ in $PARSE_OPTIONS_LST - do - UC_OPT_=$(echo $OPT_ | tr "[:lower:]" "[:upper:]") - if [[ "$UC_OPT_" == *DISABLE* ]]; then - FLIP_OPT_=${UC_OPT_/DISABLE/ENABLE} - KOKKOS_OPTION_CMD="-DKokkos_${FLIP_OPT_}=OFF ${KOKKOS_OPTION_CMD}" - elif [[ "$UC_OPT_" == *ENABLE* ]]; then - KOKKOS_OPTION_CMD="-DKokkos_${UC_OPT_}=ON ${KOKKOS_OPTION_CMD}" - else - KOKKOS_OPTION_CMD="-DKokkos_ENABLE_${UC_OPT_}=ON ${KOKKOS_OPTION_CMD}" - fi - done -} - -display_help_text() { - - echo "Kokkos configure options:" - echo "" - echo "--kokkos-path=/Path/To/Kokkos: Path to the Kokkos root directory." - echo "--prefix=/Install/Path: Path to install the Kokkos library." - echo "" - echo "--with-cuda[=/Path/To/Cuda]: Enable Cuda and set path to Cuda Toolkit." - echo "--with-openmp: Enable OpenMP backend." - echo "--with-pthread: Enable Pthreads backend." - echo "--with-serial: Enable Serial backend." - echo "--with-devices: Explicitly add a set of backends." - echo "" - echo "--arch=[OPT]: Set target architectures. Options are:" - echo " [AMD]" - echo " AMDAVX = AMD CPU" - echo " EPYC = AMD EPYC Zen-Core CPU" - echo " [ARM]" - echo " ARMv80 = ARMv8.0 Compatible CPU" - echo " ARMv81 = ARMv8.1 Compatible CPU" - echo " ARMv8-ThunderX = ARMv8 Cavium ThunderX CPU" - echo " ARMv8-TX2 = ARMv8 Cavium ThunderX2 CPU" - echo " [IBM]" - echo " BGQ = IBM Blue Gene Q" - echo " Power7 = IBM POWER7 and POWER7+ CPUs" - echo " Power8 = IBM POWER8 CPUs" - echo " Power9 = IBM POWER9 CPUs" - echo " [Intel]" - echo " WSM = Intel Westmere CPUs" - echo " SNB = Intel Sandy/Ivy Bridge CPUs" - echo " HSW = Intel Haswell CPUs" - echo " BDW = Intel Broadwell Xeon E-class CPUs" - echo " SKX = Intel Sky Lake Xeon E-class HPC CPUs (AVX512)" - echo " [Intel Xeon Phi]" - echo " KNC = Intel Knights Corner Xeon Phi" - echo " KNL = Intel Knights Landing Xeon Phi" - echo " [NVIDIA]" - echo " Kepler30 = NVIDIA Kepler generation CC 3.0" - echo " Kepler32 = NVIDIA Kepler generation CC 3.2" - echo " Kepler35 = NVIDIA Kepler generation CC 3.5" - echo " Kepler37 = NVIDIA Kepler generation CC 3.7" - echo " Maxwell50 = NVIDIA Maxwell generation CC 5.0" - echo " Maxwell52 = NVIDIA Maxwell generation CC 5.2" - echo " Maxwell53 = NVIDIA Maxwell generation CC 5.3" - echo " Pascal60 = NVIDIA Pascal generation CC 6.0" - echo " Pascal61 = NVIDIA Pascal generation CC 6.1" - echo " Volta70 = NVIDIA Volta generation CC 7.0" - echo " Volta72 = NVIDIA Volta generation CC 7.2" - echo "" - echo "--compiler=/Path/To/Compiler Set the compiler." - echo "--debug,-dbg: Enable Debugging." - echo "--cxxflags=[FLAGS] Overwrite CXXFLAGS for library build and test" - echo " build. This will still set certain required" - echo " flags via KOKKOS_CXXFLAGS (such as -fopenmp," - echo " --std=c++11, etc.)." - echo "--cxxstandard=[FLAGS] Overwrite KOKKOS_CXX_STANDARD for library build and test" - echo " c++11 (default), c++14, c++17, c++1y, c++1z, c++2a" - echo "--ldflags=[FLAGS] Overwrite LDFLAGS for library build and test" - echo " build. This will still set certain required" - echo " flags via KOKKOS_LDFLAGS (such as -fopenmp," - echo " -lpthread, etc.)." - echo "--with-gtest=/Path/To/Gtest: Set path to gtest. (Used in unit and performance" - echo " tests.)" - echo "--with-hwloc=/Path/To/Hwloc: Set path to hwloc library." - echo "--with-memkind=/Path/To/MemKind: Set path to memkind library." - echo "--with-options=[OPT]: Additional options to Kokkos:" - echo " compiler_warnings" - echo " aggressive_vectorization = add ivdep on loops" - echo " disable_profiling = do not compile with profiling hooks" - echo " " - echo "--with-cuda-options=[OPT]: Additional options to CUDA:" - echo " force_uvm, use_ldg, enable_lambda, rdc" - echo "--with-hpx-options=[OPT]: Additional options to HPX:" - echo " enable_async_dispatch" - echo "--gcc-toolchain=/Path/To/GccRoot: Set the gcc toolchain to use with clang (e.g. /usr)" - echo "--make-j=[NUM]: DEPRECATED: call make with appropriate" - echo " -j flag" - -} - -while [[ $# > 0 ]] -do - key="$1" - - case $key in - --kokkos-path*) - KOKKOS_PATH="${key#*=}" - ;; - --hpx-path*) - HPX_PATH="${key#*=}" - ;; - --prefix*) - PREFIX="${key#*=}" - ;; - --with-cuda) - update_kokkos_devices Cuda - CUDA_PATH_NVCC=$(command -v nvcc) - CUDA_PATH=${CUDA_PATH_NVCC%/bin/nvcc} - ;; - # Catch this before '--with-cuda*' - --with-cuda-options*) - KOKKOS_CUDA_OPTIONS="${key#*=}" - ;; - --with-cuda*) - update_kokkos_devices Cuda - CUDA_PATH="${key#*=}" - ;; - --with-openmp) - update_kokkos_devices OpenMP - ;; - --with-pthread) - update_kokkos_devices Pthread - ;; - --with-serial) - update_kokkos_devices Serial - ;; - --with-hpx-options*) - KOKKOS_HPX_OPT="${key#*=}" - ;; - --with-hpx*) - update_kokkos_devices HPX - if [ -z "$HPX_PATH" ]; then - HPX_PATH="${key#*=}" - fi - ;; - --with-devices*) - DEVICES="${key#*=}" - PARSE_DEVICES=$(echo $DEVICES | tr "," "\n") - for DEVICE_ in $PARSE_DEVICES - do - update_kokkos_devices $DEVICE_ - done - ;; - --with-gtest*) - GTEST_PATH="${key#*=}" - ;; - --with-hwloc*) - HWLOC_PATH="${key#*=}" - ;; - --with-memkind*) - MEMKIND_PATH="${key#*=}" - ;; - --arch*) - KOKKOS_ARCH="${key#*=}" - ;; - --cxxflags*) - KOKKOS_CXXFLAGS="${key#*=}" - KOKKOS_CXXFLAGS=${KOKKOS_CXXFLAGS//,/ } - ;; - --cxxstandard*) - KOKKOS_CXX_STANDARD="${key#*=}" - ;; - --ldflags*) - KOKKOS_LDFLAGS="${key#*=}" - ;; - --debug|-dbg) - KOKKOS_DEBUG=yes - ;; - --make-j*) - echo "Warning: ${key} is deprecated" - echo "Call make with appropriate -j flag" - ;; - --compiler*) - COMPILER="${key#*=}" - CNUM=$(command -v ${COMPILER} 2>&1 >/dev/null | grep "no ${COMPILER}" | wc -l) - if [ ${CNUM} -gt 0 ]; then - echo "Invalid compiler by --compiler command: '${COMPILER}'" - exit - fi - if [[ ! -n ${COMPILER} ]]; then - echo "Empty compiler specified by --compiler command." - exit - fi - CNUM=$(command -v ${COMPILER} | grep ${COMPILER} | wc -l) - if [ ${CNUM} -eq 0 ]; then - echo "Invalid compiler by --compiler command: '${COMPILER}'" - exit - fi - # ... valid compiler, ensure absolute path set - WCOMPATH=$(command -v $COMPILER) - COMPDIR=$(dirname $WCOMPATH) - COMPNAME=$(basename $WCOMPATH) - COMPILER=${COMPDIR}/${COMPNAME} - ;; - --with-options*) - KOKKOS_OPTIONS="${key#*=}" - ;; - --gcc-toolchain*) - KOKKOS_GCC_TOOLCHAIN="${key#*=}" - ;; - --help) - display_help_text - exit 0 - ;; - *) - echo "warning: ignoring unknown option $key" - ;; - esac - - shift -done - - -if [ "$COMPILER" == "" ]; then - COMPILER_CMD= -else - COMPILER_CMD=-DCMAKE_CXX_COMPILER=$COMPILER -fi - -if [ "$KOKKOS_DEBUG" == "" ]; then - KOKKOS_DEBUG_CMD=-DCMAKE_BUILD_TYPE=RELEASE -else - KOKKOS_DEBUG_CMD=-DCMAKE_BUILD_TYPE=DEBUG -fi - -if [ ! -e ${KOKKOS_PATH}/CMakeLists.txt ]; then - if [ "${KOKKOS_PATH}" == "" ]; then - CM_SCRIPT=$0 - KOKKOS_PATH=`dirname $CM_SCRIPT` - if [ ! -e ${KOKKOS_PATH}/CMakeLists.txt ]; then - echo "${KOKKOS_PATH} repository appears to not be complete. please verify and try again" - exit 0 - fi - else - echo "KOKKOS_PATH does not appear to be set properly. please specify in location of CMakeLists.txt" - display_help_text - exit 0 - fi -fi - -get_kokkos_device_list -get_kokkos_option_list -get_kokkos_arch_list -get_kokkos_cuda_option_list - -## if HPX is enabled, we need to enforce cxx standard = 14 -if [[ ${KOKKOS_DEVICE_CMD} == *Kokkos_ENABLE_HPX* ]]; then - if [ "${KOKKOS_CXX_STANDARD}" == "" ] || [ ${#KOKKOS_CXX_STANDARD} -lt 14 ]; then - echo CXX Standard must be 14 or higher for HPX to work. - KOKKOS_CXX_STANDARD=14 - fi -fi - -if [ "$KOKKOS_CXX_STANDARD" == "" ]; then - STANDARD_CMD= -else - STANDARD_CMD=-DKokkos_CXX_STANDARD=${KOKKOS_CXX_STANDARD} -fi - -if [[ ${COMPILER} == *clang* ]]; then - gcc_path=$(which g++ | awk --field-separator='/bin/g++' '{printf $1}' ) - KOKKOS_CXXFLAGS="${KOKKOS_CXXFLAGS} --gcc-toolchain=${gcc_path}" - - if [ ! "${CUDA_PATH}" == "" ]; then - KOKKOS_CXXFLAGS="${KOKKOS_CXXFLAGS} --cuda-path=${CUDA_PATH}" - fi -fi - -echo cmake $COMPILER_CMD -DCMAKE_CXX_FLAGS="${KOKKOS_CXXFLAGS}" -DCMAKE_EXE_LINKER_FLAGS="${KOKKOS_LDFLAGS}" -DCMAKE_INSTALL_PREFIX=${PREFIX} ${KOKKOS_DEVICE_CMD} ${KOKKOS_ARCH_CMD} -DKokkos_ENABLE_TESTS=ON ${KOKKOS_OPTION_CMD} ${KOKKOS_CUDA_OPTION_CMD} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_CXX_EXTENSIONS=OFF ${STANDARD_CMD} ${KOKKOS_DEBUG_CMD} ${KOKKOS_PATH} -cmake $COMPILER_CMD -DCMAKE_CXX_FLAGS="${KOKKOS_CXXFLAGS//\"}" -DCMAKE_EXE_LINKER_FLAGS="${KOKKOS_LDFLAGS//\"}" -DCMAKE_INSTALL_PREFIX=${PREFIX} ${KOKKOS_DEVICE_CMD} ${KOKKOS_ARCH_CMD} -DKokkos_ENABLE_TESTS=ON ${KOKKOS_OPTION_CMD} ${KOKKOS_CUDA_OPTION_CMD} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_CXX_EXTENSIONS=OFF ${STANDARD_CMD} ${KOKKOS_DEBUG_CMD} ${KOKKOS_PATH} diff --git a/lib/kokkos/cmake/Dependencies.cmake b/lib/kokkos/cmake/Dependencies.cmake index 8c51eab4d7..c0be9f5641 100644 --- a/lib/kokkos/cmake/Dependencies.cmake +++ b/lib/kokkos/cmake/Dependencies.cmake @@ -6,5 +6,4 @@ TRIBITS_PACKAGE_DEFINE_DEPENDENCIES( Core core PS REQUIRED Containers containers PS OPTIONAL Algorithms algorithms PS OPTIONAL - Example example EX OPTIONAL ) diff --git a/lib/kokkos/cmake/KokkosConfigCommon.cmake.in b/lib/kokkos/cmake/KokkosConfigCommon.cmake.in index da9c61976c..8c663d01c1 100644 --- a/lib/kokkos/cmake/KokkosConfigCommon.cmake.in +++ b/lib/kokkos/cmake/KokkosConfigCommon.cmake.in @@ -73,6 +73,9 @@ function(kokkos_check) # use it to check that there are variables defined for all required # arguments. Success or failure messages will be displayed but we are # responsible for signaling failure and skip the build system generation. + if (KOKKOS_CHECK_RETURN_VALUE) + set(Kokkos_${arg}_FIND_QUIETLY ON) + endif() find_package_handle_standard_args("Kokkos_${arg}" DEFAULT_MSG ${KOKKOS_CHECK_${arg}}) if(NOT Kokkos_${arg}_FOUND) diff --git a/lib/kokkos/cmake/KokkosCore_config.h.in b/lib/kokkos/cmake/KokkosCore_config.h.in index 084afba8a8..1d0b58fe02 100644 --- a/lib/kokkos/cmake/KokkosCore_config.h.in +++ b/lib/kokkos/cmake/KokkosCore_config.h.in @@ -5,11 +5,19 @@ #define KOKKOS_CORE_CONFIG_H #endif +// KOKKOS_VERSION % 100 is the patch level +// KOKKOS_VERSION / 100 % 100 is the minor version +// KOKKOS_VERSION / 10000 is the major version +#cmakedefine KOKKOS_VERSION @KOKKOS_VERSION@ + + /* Execution Spaces */ #cmakedefine KOKKOS_ENABLE_SERIAL #cmakedefine KOKKOS_ENABLE_OPENMP +#cmakedefine KOKKOS_ENABLE_OPENMPTARGET #cmakedefine KOKKOS_ENABLE_THREADS #cmakedefine KOKKOS_ENABLE_CUDA +#cmakedefine KOKKOS_ENABLE_HIP #cmakedefine KOKKOS_ENABLE_HPX #cmakedefine KOKKOS_ENABLE_MEMKIND #cmakedefine KOKKOS_ENABLE_LIBRT @@ -33,6 +41,7 @@ #cmakedefine KOKKOS_ENABLE_CUDA_LAMBDA #cmakedefine KOKKOS_ENABLE_CUDA_CONSTEXPR #cmakedefine KOKKOS_ENABLE_CUDA_LDG_INTRINSIC +#cmakedefine KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE #cmakedefine KOKKOS_ENABLE_HPX_ASYNC_DISPATCH #cmakedefine KOKKOS_ENABLE_DEBUG #cmakedefine KOKKOS_ENABLE_DEBUG_DUALVIEW_MODIFY_CHECK diff --git a/lib/kokkos/cmake/KokkosTrilinosConfig.cmake.in b/lib/kokkos/cmake/KokkosTrilinosConfig.cmake.in new file mode 100644 index 0000000000..626ef5a8eb --- /dev/null +++ b/lib/kokkos/cmake/KokkosTrilinosConfig.cmake.in @@ -0,0 +1,17 @@ +IF (NOT TARGET Kokkos::kokkos) + # Compute the installation prefix relative to this file. + get_filename_component(KOKKOS_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) + get_filename_component(KOKKOS_IMPORT_PREFIX "${KOKKOS_IMPORT_PREFIX}" PATH) + get_filename_component(KOKKOS_IMPORT_PREFIX "${KOKKOS_IMPORT_PREFIX}" PATH) + get_filename_component(KOKKOS_IMPORT_PREFIX "${KOKKOS_IMPORT_PREFIX}" PATH) + if(KOKKOS_IMPORT_PREFIX STREQUAL "/") + set(KOKKOS_IMPORT_PREFIX "") + endif() + add_library(Kokkos::kokkos INTERFACE IMPORTED) + set_target_properties(Kokkos::kokkos PROPERTIES + INTERFACE_LINK_LIBRARIES "@Kokkos_LIBRARIES@;@KOKKOS_LINK_OPTIONS@" + INTERFACE_COMPILE_FEATURES "@KOKKOS_CXX_STANDARD_FEATURE@" + INTERFACE_COMPILE_OPTIONS "@KOKKOS_ALL_COMPILE_OPTIONS@" + INTERFACE_INCLUDE_DIRECTORIES "${KOKKOS_IMPORT_PREFIX}/include" + ) +ENDIF() diff --git a/lib/kokkos/cmake/Modules/FindTPLCUDA.cmake b/lib/kokkos/cmake/Modules/FindTPLCUDA.cmake index 36aefcdb44..1b36ab819f 100644 --- a/lib/kokkos/cmake/Modules/FindTPLCUDA.cmake +++ b/lib/kokkos/cmake/Modules/FindTPLCUDA.cmake @@ -1,8 +1,12 @@ IF (KOKKOS_CXX_COMPILER_ID STREQUAL Clang) + # Note: "stubs" suffix allows CMake to find the dummy + # libcuda.so provided by the NVIDIA CUDA Toolkit for + # cross-compiling CUDA on a host without a GPU. KOKKOS_FIND_IMPORTED(CUDA INTERFACE LIBRARIES cudart cuda - LIBRARY_PATHS ENV LD_LIBRARY_PATH ENV CUDA_PATH + LIBRARY_PATHS ENV LD_LIBRARY_PATH ENV CUDA_PATH /usr/local/cuda + LIBRARY_SUFFIXES lib lib64 lib/stubs lib64/stubs ALLOW_SYSTEM_PATH_FALLBACK ) ELSE() diff --git a/lib/kokkos/cmake/Modules/FindTPLPTHREAD.cmake b/lib/kokkos/cmake/Modules/FindTPLPTHREAD.cmake index b4b8c34122..1d154e29af 100644 --- a/lib/kokkos/cmake/Modules/FindTPLPTHREAD.cmake +++ b/lib/kokkos/cmake/Modules/FindTPLPTHREAD.cmake @@ -3,15 +3,18 @@ TRY_COMPILE(KOKKOS_HAS_PTHREAD_ARG ${KOKKOS_TOP_BUILD_DIR}/tpl_tests ${KOKKOS_SOURCE_DIR}/cmake/compile_tests/pthread.cpp LINK_LIBRARIES -pthread - COMPILE_DEFINITIONS -pthread) + COMPILE_DEFINITIONS -pthread +) +# The test no longer requires C++11 +# if we did needed C++ standard support, then we should add option +# ${CMAKE_CXX${KOKKOS_CXX_STANDARD}_STANDARD_COMPILE_OPTION} INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(PTHREAD DEFAULT_MSG KOKKOS_HAS_PTHREAD_ARG) - -KOKKOS_CREATE_IMPORTED_TPL(PTHREAD - INTERFACE #this is not a real library with a real location - COMPILE_OPTIONS -pthread - LINK_OPTIONS -pthread) - - - +#Only create the TPL if we succeed +IF (KOKKOS_HAS_PTHREAD_ARG) + KOKKOS_CREATE_IMPORTED_TPL(PTHREAD + INTERFACE #this is not a real library with a real location + COMPILE_OPTIONS -pthread + LINK_OPTIONS -pthread) +ENDIF() diff --git a/lib/kokkos/cmake/README.md b/lib/kokkos/cmake/README.md index 0543a18e89..6d0cc2daf1 100644 --- a/lib/kokkos/cmake/README.md +++ b/lib/kokkos/cmake/README.md @@ -67,7 +67,7 @@ Note that all of these use `PUBLIC`! Almost every Kokkos flag is not private to ### Compiler Features and Compiler Options -Compiler options are flags like `-fopenmp` that do not need to be "resolved." +Compiler options are flags like `-fopenmp` that do not need to be "resolved." The flag is either on or off. Compiler features are more fine-grained and require conflicting requests to be resolved. Suppose I have @@ -145,11 +145,11 @@ If Kokkos depends on, e.g. `hwloc` the downstream project will also need to link There are three stages in adding a new third-party library (TPL): * Finding: find the desired library on the system and verify the installation is correct * Importing: create a CMake target, if necessary, that is compatible with `target_link_libraries`. This is mostly relevant for TPLs not installed with CMake. -* Exporting: make the desired library visible to downstream projects +* Exporting: make the desired library visible to downstream projects TPLs are somewhat complicated by whether the library was installed with CMake or some other build system. If CMake, our lives are greatly simplified. We simply use `find_package` to locate the installed CMake project then call `target_link_libraries(kokkoscore PUBLIC/PRIVATE TPL)`. For libaries not installed with CMake, the process is a bit more complex. -It is up to the Kokkos developers to "convert" the library into a CMake target as if it had been installed as a valid modern CMake target with properties. +It is up to the Kokkos developers to "convert" the library into a CMake target as if it had been installed as a valid modern CMake target with properties. There are helper functions for simplifying the process of importing TPLs in Kokkos, but we walk through the process in detail to clearly illustrate the steps involved. #### TPL Search Order @@ -166,8 +166,9 @@ There are 3 possibilities that could be used: The following is the search order that Kokkos follows. Note: This differs from the default search order used by CMake `find_library` and `find_header`. CMake prefers default system paths over user-provided paths. For Kokkos (and package managers in general), it is better to prefer user-provided paths since this usually indicates a specific version we want. -1. `_ROOT` -1. `Kokkos__DIR` +1. `_ROOT` command line option +1. `_ROOT` environment variable +1. `Kokkos__DIR` command line option 1. Paths added by Kokkos CMake logic 1. Default system paths (if allowed) diff --git a/lib/kokkos/cmake/compile_tests/clang_omp.cpp b/lib/kokkos/cmake/compile_tests/clang_omp.cpp index ce3bbfb262..60a5c52282 100644 --- a/lib/kokkos/cmake/compile_tests/clang_omp.cpp +++ b/lib/kokkos/cmake/compile_tests/clang_omp.cpp @@ -1,6 +1,6 @@ #include -int main(int argc, char** argv) { +int main(int, char**) { int thr = omp_get_num_threads(); if (thr > 0) return thr; diff --git a/lib/kokkos/cmake/compile_tests/pthread.cpp b/lib/kokkos/cmake/compile_tests/pthread.cpp index 3b13f7ba35..92310da029 100644 --- a/lib/kokkos/cmake/compile_tests/pthread.cpp +++ b/lib/kokkos/cmake/compile_tests/pthread.cpp @@ -4,6 +4,10 @@ void* kokkos_test(void* args) { return args; } int main(void) { pthread_t thread; + /* Use NULL to avoid C++11. Some compilers + do not have C++11 by default. Forcing C++11 + in the compile tests can be done, but is unnecessary + */ pthread_create(&thread, NULL, kokkos_test, NULL); pthread_join(thread, NULL); return 0; diff --git a/lib/kokkos/cmake/fake_tribits.cmake b/lib/kokkos/cmake/fake_tribits.cmake index 26948d2cfb..acee4a249d 100644 --- a/lib/kokkos/cmake/fake_tribits.cmake +++ b/lib/kokkos/cmake/fake_tribits.cmake @@ -24,10 +24,6 @@ IF(NOT ${MACRO_DEFINE_NAME} STREQUAL "") ENDIF() ENDMACRO() -MACRO(GLOBAL_RESET VARNAME) - SET(${VARNAME} "" CACHE INTERNAL "" FORCE) -ENDMACRO() - MACRO(GLOBAL_OVERWRITE VARNAME VALUE TYPE) SET(${VARNAME} ${VALUE} CACHE ${TYPE} "" FORCE) ENDMACRO() @@ -88,13 +84,9 @@ MACRO(ADD_INTERFACE_LIBRARY LIB_NAME) SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES INTERFACE TRUE) ENDMACRO() -IF(NOT TARGET check) - ADD_CUSTOM_TARGET(check COMMAND ${CMAKE_CTEST_COMMAND} -VV -C ${CMAKE_CFG_INTDIR}) -ENDIF() - FUNCTION(KOKKOS_ADD_TEST) if (KOKKOS_HAS_TRILINOS) - CMAKE_PARSE_ARGUMENTS(TEST + CMAKE_PARSE_ARGUMENTS(TEST "" "EXE;NAME" "" @@ -108,22 +100,27 @@ FUNCTION(KOKKOS_ADD_TEST) TRIBITS_ADD_TEST( ${EXE_ROOT} NAME ${TEST_NAME} - ${ARGN} COMM serial mpi NUM_MPI_PROCS 1 ${TEST_UNPARSED_ARGUMENTS} ) else() - CMAKE_PARSE_ARGUMENTS(TEST + CMAKE_PARSE_ARGUMENTS(TEST "WILL_FAIL" "FAIL_REGULAR_EXPRESSION;PASS_REGULAR_EXPRESSION;EXE;NAME" "CATEGORIES;CMD_ARGS" ${ARGN}) + # To match Tribits, we should always be receiving + # the root names of exes/libs IF(TEST_EXE) - SET(EXE ${TEST_EXE}) + SET(EXE_ROOT ${TEST_EXE}) ELSE() - SET(EXE ${TEST_NAME}) + SET(EXE_ROOT ${TEST_NAME}) ENDIF() + # Prepend package name to the test name + # These should be the full target name + SET(TEST_NAME ${PACKAGE_NAME}_${TEST_NAME}) + SET(EXE ${PACKAGE_NAME}_${EXE_ROOT}) IF(WIN32) ADD_TEST(NAME ${TEST_NAME} WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH} COMMAND ${EXE}${CMAKE_EXECUTABLE_SUFFIX} ${TEST_CMD_ARGS}) ELSE() @@ -160,7 +157,7 @@ FUNCTION(KOKKOS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES TPL_NAME) if (KOKKOS_HAS_TRILINOS) TRIBITS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES(${TPL_NAME} ${ARGN}) else() - CMAKE_PARSE_ARGUMENTS(PARSE + CMAKE_PARSE_ARGUMENTS(PARSE "" "" "REQUIRED_HEADERS;REQUIRED_LIBS_NAMES" @@ -214,13 +211,13 @@ ENDFUNCTION() FUNCTION(KOKKOS_TARGET_INCLUDE_DIRECTORIES TARGET) IF(KOKKOS_HAS_TRILINOS) - KOKKOS_LIB_TYPE(${TARGET} INCTYPE) + KOKKOS_LIB_TYPE(${TARGET} INCTYPE) #don't trust tribits to do this correctly - but need to add package name TARGET_INCLUDE_DIRECTORIES(${TARGET} ${INCTYPE} ${ARGN}) -ELSEIF(TARGET ${TARGET}) +ELSEIF(TARGET ${TARGET}) #the target actually exists - this means we are doing separate libs #or this a test library - KOKKOS_LIB_TYPE(${TARGET} INCTYPE) + KOKKOS_LIB_TYPE(${TARGET} INCTYPE) TARGET_INCLUDE_DIRECTORIES(${TARGET} ${INCTYPE} ${ARGN}) ELSE() GET_PROPERTY(LIBS GLOBAL PROPERTY KOKKOS_LIBRARIES_NAMES) @@ -239,7 +236,7 @@ ELSE() SET(options INTERFACE) SET(oneValueArgs) SET(multiValueArgs) - CMAKE_PARSE_ARGUMENTS(PARSE + CMAKE_PARSE_ARGUMENTS(PARSE "INTERFACE" "" "" @@ -264,7 +261,7 @@ ELSE() SET(oneValueArgs) SET(multiValueArgs HEADERS SOURCES) - CMAKE_PARSE_ARGUMENTS(PARSE + CMAKE_PARSE_ARGUMENTS(PARSE "STATIC;SHARED" "" "HEADERS;SOURCES" @@ -277,10 +274,6 @@ ELSE() LIST(REMOVE_DUPLICATES PARSE_SOURCES) ENDIF() ADD_LIBRARY(${NAME} ${PARSE_SOURCES}) - target_link_libraries( - ${NAME} - PUBLIC kokkos - ) ENDIF() ENDFUNCTION() diff --git a/lib/kokkos/cmake/kokkos_arch.cmake b/lib/kokkos/cmake/kokkos_arch.cmake index c33247c955..d73a353981 100644 --- a/lib/kokkos/cmake/kokkos_arch.cmake +++ b/lib/kokkos/cmake/kokkos_arch.cmake @@ -9,52 +9,6 @@ FUNCTION(KOKKOS_ARCH_OPTION SUFFIX DEV_TYPE DESCRIPTION) SET(KOKKOS_ARCH_${SUFFIX} ${KOKKOS_ARCH_${SUFFIX}} PARENT_SCOPE) ENDFUNCTION() -FUNCTION(ARCH_FLAGS) - SET(COMPILERS NVIDIA PGI XL DEFAULT Cray Intel Clang AppleClang GNU) - CMAKE_PARSE_ARGUMENTS( - PARSE - "LINK_ONLY;COMPILE_ONLY" - "" - "${COMPILERS}" - ${ARGN}) - - SET(COMPILER ${KOKKOS_CXX_COMPILER_ID}) - - SET(FLAGS) - SET(NEW_COMPILE_OPTIONS) - SET(NEW_XCOMPILER_OPTIONS) - SET(NEW_LINK_OPTIONS) - LIST(APPEND NEW_XCOMPILER_OPTIONS ${KOKKOS_XCOMPILER_OPTIONS}) - LIST(APPEND NEW_COMPILE_OPTIONS ${KOKKOS_COMPILE_OPTIONS}) - LIST(APPEND NEW_LINK_OPTIONS ${KOKKOS_LINK_OPTIONS}) - FOREACH(COMP ${COMPILERS}) - IF (COMPILER STREQUAL "${COMP}") - IF (PARSE_${COMPILER}) - IF (NOT "${PARSE_${COMPILER}}" STREQUAL "NO-VALUE-SPECIFIED") - SET(FLAGS ${PARSE_${COMPILER}}) - ENDIF() - ELSEIF(PARSE_DEFAULT) - SET(FLAGS ${PARSE_DEFAULT}) - ENDIF() - ENDIF() - ENDFOREACH() - - IF (NOT LINK_ONLY) - # The funky logic here is for future handling of argument deduplication - # If we naively pass multiple -Xcompiler flags to target_compile_options - # -Xcompiler will get deduplicated and break the build - IF ("-Xcompiler" IN_LIST FLAGS) - LIST(REMOVE_ITEM FLAGS "-Xcompiler") - GLOBAL_APPEND(KOKKOS_XCOMPILER_OPTIONS ${FLAGS}) - ELSE() - GLOBAL_APPEND(KOKKOS_COMPILE_OPTIONS ${FLAGS}) - ENDIF() - ENDIF() - - IF (NOT COMPILE_ONLY) - GLOBAL_APPEND(KOKKOS_LINK_OPTIONS ${FLAGS}) - ENDIF() -ENDFUNCTION() # Make sure devices and compiler ID are done KOKKOS_CFG_DEPENDS(ARCH COMPILER_ID) @@ -98,14 +52,15 @@ KOKKOS_ARCH_OPTION(VOLTA70 GPU "NVIDIA Volta generation CC 7.0") KOKKOS_ARCH_OPTION(VOLTA72 GPU "NVIDIA Volta generation CC 7.2") KOKKOS_ARCH_OPTION(TURING75 GPU "NVIDIA Turing generation CC 7.5") KOKKOS_ARCH_OPTION(EPYC HOST "AMD Epyc architecture") - +KOKKOS_ARCH_OPTION(VEGA900 GPU "AMD GPU MI25 GFX900") +KOKKOS_ARCH_OPTION(VEGA906 GPU "AMD GPU MI50/MI60 GFX906") IF (KOKKOS_ENABLE_CUDA) #Regardless of version, make sure we define the general architecture name IF (KOKKOS_ARCH_KEPLER30 OR KOKKOS_ARCH_KEPLER32 OR KOKKOS_ARCH_KEPLER35 OR KOKKOS_ARCH_KEPLER37) SET(KOKKOS_ARCH_KEPLER ON) ENDIF() - + #Regardless of version, make sure we define the general architecture name IF (KOKKOS_ARCH_MAXWELL50 OR KOKKOS_ARCH_MAXWELL52 OR KOKKOS_ARCH_MAXWELL53) SET(KOKKOS_ARCH_MAXWELL ON) @@ -126,13 +81,13 @@ ENDIF() IF(KOKKOS_ENABLE_COMPILER_WARNINGS) SET(COMMON_WARNINGS - "-Wall" "-Wshadow" "-pedantic" + "-Wall" "-Wunused-parameter" "-Wshadow" "-pedantic" "-Wsign-compare" "-Wtype-limits" "-Wuninitialized") SET(GNU_WARNINGS "-Wempty-body" "-Wclobbered" "-Wignored-qualifiers" ${COMMON_WARNINGS}) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( PGI NO-VALUE-SPECIFIED GNU ${GNU_WARNINGS} DEFAULT ${COMMON_WARNINGS} @@ -141,7 +96,8 @@ ENDIF() #------------------------------- KOKKOS_CUDA_OPTIONS --------------------------- -GLOBAL_RESET(KOKKOS_CUDA_OPTIONS) +#clear anything that might be in the cache +GLOBAL_SET(KOKKOS_CUDA_OPTIONS) # Construct the Makefile options IF (KOKKOS_ENABLE_CUDA_LAMBDA) IF(KOKKOS_CXX_COMPILER_ID STREQUAL NVIDIA) @@ -157,6 +113,7 @@ ENDIF() IF (KOKKOS_CXX_COMPILER_ID STREQUAL Clang) SET(CUDA_ARCH_FLAG "--cuda-gpu-arch") + SET(AMDGPU_ARCH_FLAG "--amdgpu-target") GLOBAL_APPEND(KOKKOS_CUDA_OPTIONS -x cuda) IF (KOKKOS_ENABLE_CUDA) SET(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND ON CACHE BOOL "enable CUDA Clang workarounds" FORCE) @@ -171,27 +128,13 @@ IF (KOKKOS_CXX_COMPILER_ID STREQUAL NVIDIA) GLOBAL_APPEND(KOKKOS_CUDA_OPTIONS -lineinfo) ENDIF() UNSET(_UPPERCASE_CMAKE_BUILD_TYPE) - IF (KOKKOS_CXX_COMPILER_VERSION VERSION_GREATER 9.0 OR KOKKOS_CXX_COMPILER_VERSION VERSION_EQUAL 9.0) - GLOBAL_APPEND(KOKKOS_CUDAFE_OPTIONS --diag_suppress=esa_on_defaulted_function_ignored) + IF (KOKKOS_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0 AND KOKKOS_CXX_COMPILER_VERSION VERSION_LESS 10.0) + GLOBAL_APPEND(KOKKOS_CUDAFE_OPTIONS --diag_suppress=esa_on_defaulted_function_ignored) ENDIF() ENDIF() -IF(KOKKOS_ENABLE_OPENMP) - IF (KOKKOS_CXX_COMPILER_ID STREQUAL AppleClang) - MESSAGE(FATAL_ERROR "Apple Clang does not support OpenMP. Use native Clang instead") - ENDIF() - ARCH_FLAGS( - Clang -fopenmp=libomp - PGI -mp - NVIDIA -Xcompiler -fopenmp - Cray NO-VALUE-SPECIFIED - XL -qsmp=omp - DEFAULT -fopenmp - ) -ENDIF() - IF (KOKKOS_ARCH_ARMV80) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Cray NO-VALUE-SPECIFIED PGI NO-VALUE-SPECIFIED DEFAULT -march=armv8-a @@ -199,7 +142,7 @@ IF (KOKKOS_ARCH_ARMV80) ENDIF() IF (KOKKOS_ARCH_ARMV81) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Cray NO-VALUE-SPECIFIED PGI NO-VALUE-SPECIFIED DEFAULT -march=armv8.1-a @@ -208,7 +151,7 @@ ENDIF() IF (KOKKOS_ARCH_ARMV8_THUNDERX) SET(KOKKOS_ARCH_ARMV80 ON) #Not a cache variable - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Cray NO-VALUE-SPECIFIED PGI NO-VALUE-SPECIFIED DEFAULT -march=armv8-a -mtune=thunderx @@ -217,7 +160,7 @@ ENDIF() IF (KOKKOS_ARCH_ARMV8_THUNDERX2) SET(KOKKOS_ARCH_ARMV81 ON) #Not a cache variable - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Cray NO-VALUE-SPECIFIED PGI NO-VALUE-SPECIFIED DEFAULT -mcpu=thunderx2t99 -mtune=thunderx2t99 @@ -225,7 +168,7 @@ IF (KOKKOS_ARCH_ARMV8_THUNDERX2) ENDIF() IF (KOKKOS_ARCH_EPYC) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -mavx2 DEFAULT -march=znver1 -mtune=znver1 ) @@ -234,7 +177,7 @@ IF (KOKKOS_ARCH_EPYC) ENDIF() IF (KOKKOS_ARCH_WSM) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -xSSE4.2 PGI -tp=nehalem Cray NO-VALUE-SPECIFIED @@ -245,7 +188,7 @@ ENDIF() IF (KOKKOS_ARCH_SNB OR KOKKOS_ARCH_AMDAVX) SET(KOKKOS_ARCH_AVX ON) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -mavx PGI -tp=sandybridge Cray NO-VALUE-SPECIFIED @@ -255,7 +198,7 @@ ENDIF() IF (KOKKOS_ARCH_HSW) SET(KOKKOS_ARCH_AVX2 ON) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -xCORE-AVX2 PGI -tp=haswell Cray NO-VALUE-SPECIFIED @@ -265,7 +208,7 @@ ENDIF() IF (KOKKOS_ARCH_BDW) SET(KOKKOS_ARCH_AVX2 ON) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -xCORE-AVX2 PGI -tp=haswell Cray NO-VALUE-SPECIFIED @@ -275,7 +218,7 @@ ENDIF() IF (KOKKOS_ARCH_EPYC) SET(KOKKOS_ARCH_AMD_AVX2 ON) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -mvax2 DEFAULT -march=znver1 -mtune=znver1 ) @@ -284,7 +227,7 @@ ENDIF() IF (KOKKOS_ARCH_KNL) #avx512-mic SET(KOKKOS_ARCH_AVX512MIC ON) #not a cache variable - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -xMIC-AVX512 PGI NO-VALUE-SPECIFIED Cray NO-VALUE-SPECIFIED @@ -294,7 +237,7 @@ ENDIF() IF (KOKKOS_ARCH_KNC) SET(KOKKOS_USE_ISA_KNC ON) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( DEFAULT -mmic ) ENDIF() @@ -302,7 +245,7 @@ ENDIF() IF (KOKKOS_ARCH_SKX) #avx512-xeon SET(KOKKOS_ARCH_AVX512XEON ON) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -xCORE-AVX512 PGI NO-VALUE-SPECIFIED Cray NO-VALUE-SPECIFIED @@ -319,7 +262,7 @@ IF (KOKKOS_ARCH_BDW OR KOKKOS_ARCH_SKX) ENDIF() IF (KOKKOS_ARCH_POWER7) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( PGI NO-VALUE-SPECIFIED DEFAULT -mcpu=power7 -mtune=power7 ) @@ -327,7 +270,7 @@ IF (KOKKOS_ARCH_POWER7) ENDIF() IF (KOKKOS_ARCH_POWER8) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( PGI NO-VALUE-SPECIFIED NVIDIA NO-VALUE-SPECIFIED DEFAULT -mcpu=power8 -mtune=power8 @@ -335,7 +278,7 @@ IF (KOKKOS_ARCH_POWER8) ENDIF() IF (KOKKOS_ARCH_POWER9) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( PGI NO-VALUE-SPECIFIED NVIDIA NO-VALUE-SPECIFIED DEFAULT -mcpu=power9 -mtune=power9 @@ -347,33 +290,50 @@ IF (KOKKOS_ARCH_POWER8 OR KOKKOS_ARCH_POWER9) ENDIF() IF (Kokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Clang -fcuda-rdc NVIDIA --relocatable-device-code=true ) ENDIF() +#Right now we cannot get the compiler ID when cross-compiling, so just check +#that HIP is enabled +IF (Kokkos_ENABLE_HIP) + IF (Kokkos_ENABLE_HIP_RELOCATABLE_DEVICE_CODE) + COMPILER_SPECIFIC_FLAGS( + DEFAULT -fgpu-rdc + ) + ELSE() + COMPILER_SPECIFIC_FLAGS( + DEFAULT -fno-gpu-rdc + ) + ENDIF() +ENDIF() + SET(CUDA_ARCH_ALREADY_SPECIFIED "") FUNCTION(CHECK_CUDA_ARCH ARCH FLAG) -IF(KOKKOS_ARCH_${ARCH}) - IF(CUDA_ARCH_ALREADY_SPECIFIED) - MESSAGE(FATAL_ERROR "Multiple GPU architectures given! Already have ${CUDA_ARCH_ALREADY_SPECIFIED}, but trying to add ${ARCH}. If you are re-running CMake, try clearing the cache and running again.") - ENDIF() - SET(CUDA_ARCH_ALREADY_SPECIFIED ${ARCH} PARENT_SCOPE) - IF (NOT KOKKOS_ENABLE_CUDA) - MESSAGE(WARNING "Given CUDA arch ${ARCH}, but Kokkos_ENABLE_CUDA is OFF. Option will be ignored.") - UNSET(KOKKOS_ARCH_${ARCH} PARENT_SCOPE) - ELSE() - GLOBAL_APPEND(KOKKOS_CUDA_OPTIONS "${CUDA_ARCH_FLAG}=${FLAG}") - IF(KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE) - GLOBAL_APPEND(KOKKOS_LINK_OPTIONS "${CUDA_ARCH_FLAG}=${FLAG}") + IF(KOKKOS_ARCH_${ARCH}) + IF(CUDA_ARCH_ALREADY_SPECIFIED) + MESSAGE(FATAL_ERROR "Multiple GPU architectures given! Already have ${CUDA_ARCH_ALREADY_SPECIFIED}, but trying to add ${ARCH}. If you are re-running CMake, try clearing the cache and running again.") + ENDIF() + SET(CUDA_ARCH_ALREADY_SPECIFIED ${ARCH} PARENT_SCOPE) + IF (NOT KOKKOS_ENABLE_CUDA AND NOT KOKKOS_ENABLE_OPENMPTARGET) + MESSAGE(WARNING "Given CUDA arch ${ARCH}, but Kokkos_ENABLE_CUDA and Kokkos_ENABLE_OPENMPTARGET are OFF. Option will be ignored.") + UNSET(KOKKOS_ARCH_${ARCH} PARENT_SCOPE) + ELSE() + SET(KOKKOS_CUDA_ARCH_FLAG ${FLAG} PARENT_SCOPE) + GLOBAL_APPEND(KOKKOS_CUDA_OPTIONS "${CUDA_ARCH_FLAG}=${FLAG}") + IF(KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE) + GLOBAL_APPEND(KOKKOS_LINK_OPTIONS "${CUDA_ARCH_FLAG}=${FLAG}") + ENDIF() ENDIF() ENDIF() -ENDIF() ENDFUNCTION() +#These will define KOKKOS_CUDA_ARCH_FLAG +#to the corresponding flag name if ON CHECK_CUDA_ARCH(KEPLER30 sm_30) CHECK_CUDA_ARCH(KEPLER32 sm_32) CHECK_CUDA_ARCH(KEPLER35 sm_35) @@ -383,18 +343,76 @@ CHECK_CUDA_ARCH(MAXWELL52 sm_52) CHECK_CUDA_ARCH(MAXWELL53 sm_53) CHECK_CUDA_ARCH(PASCAL60 sm_60) CHECK_CUDA_ARCH(PASCAL61 sm_61) -CHECK_CUDA_ARCH(VOLTA70 sm_70) -CHECK_CUDA_ARCH(VOLTA72 sm_72) +CHECK_CUDA_ARCH(VOLTA70 sm_70) +CHECK_CUDA_ARCH(VOLTA72 sm_72) CHECK_CUDA_ARCH(TURING75 sm_75) +SET(AMDGPU_ARCH_ALREADY_SPECIFIED "") +FUNCTION(CHECK_AMDGPU_ARCH ARCH FLAG) + IF(KOKKOS_ARCH_${ARCH}) + IF(AMDGPU_ARCH_ALREADY_SPECIFIED) + MESSAGE(FATAL_ERROR "Multiple GPU architectures given! Already have ${AMDGPU_ARCH_ALREADY_SPECIFIED}, but trying to add ${ARCH}. If you are re-running CMake, try clearing the cache and running again.") + ENDIF() + SET(AMDGPU_ARCH_ALREADY_SPECIFIED ${ARCH} PARENT_SCOPE) + IF (NOT KOKKOS_ENABLE_HIP AND NOT KOKKOS_ENABLE_OPENMPTARGET) + MESSAGE(WARNING "Given HIP arch ${ARCH}, but Kokkos_ENABLE_AMDGPU and Kokkos_ENABLE_OPENMPTARGET are OFF. Option will be ignored.") + UNSET(KOKKOS_ARCH_${ARCH} PARENT_SCOPE) + ELSE() + SET(KOKKOS_AMDGPU_ARCH_FLAG ${FLAG} PARENT_SCOPE) + GLOBAL_APPEND(KOKKOS_AMDGPU_OPTIONS "${AMDGPU_ARCH_FLAG}=${FLAG}") + IF(KOKKOS_ENABLE_HIP) + GLOBAL_APPEND(KOKKOS_LINK_OPTIONS "${AMDGPU_ARCH_FLAG}=${FLAG}") + ENDIF() + ENDIF() + ENDIF() +ENDFUNCTION() + +#These will define KOKKOS_AMDGPU_ARCH_FLAG +#to the corresponding flag name if ON +CHECK_AMDGPU_ARCH(VEGA900 gfx900) # Radeon Instinct MI25 +CHECK_AMDGPU_ARCH(VEGA906 gfx906) # Radeon Instinct MI50 and MI60 + +IF (KOKKOS_ENABLE_OPENMPTARGET) + SET(CLANG_CUDA_ARCH ${KOKKOS_CUDA_ARCH_FLAG}) + IF (CLANG_CUDA_ARCH) + COMPILER_SPECIFIC_FLAGS( + Clang -Xopenmp-target -march=${CLANG_CUDA_ARCH} -fopenmp-targets=nvptx64-nvidia-cuda + XL -qtgtarch=${KOKKOS_CUDA_ARCH_FLAG} + ) + ENDIF() + SET(CLANG_AMDGPU_ARCH ${KOKKOS_AMDGPU_ARCH_FLAG}) + IF (CLANG_AMDGPU_ARCH) + COMPILER_SPECIFIC_FLAGS( + Clang -Xopenmp-target=amdgcn-amd-amdhsa -march=${CLANG_AMDGPU_ARCH} -fopenmp-targets=amdgcn-amd-amdhsa + ) + ENDIF() +ENDIF() + +IF(KOKKOS_ENABLE_CUDA AND NOT CUDA_ARCH_ALREADY_SPECIFIED) + MESSAGE(SEND_ERROR "CUDA enabled but no NVIDIA GPU architecture currently enabled. Please give one -DKokkos_ARCH_{..}=ON' to enable an NVIDIA GPU architecture.") +ENDIF() + #CMake verbose is kind of pointless #Let's just always print things MESSAGE(STATUS "Execution Spaces:") -IF(KOKKOS_ENABLE_CUDA) - MESSAGE(STATUS " Device Parallel: CUDA") -ELSE() - MESSAGE(STATUS " Device Parallel: NONE") + +FOREACH (_BACKEND CUDA OPENMPTARGET HIP) + IF(KOKKOS_ENABLE_${_BACKEND}) + IF(_DEVICE_PARALLEL) + MESSAGE(FATAL_ERROR "Multiple device parallel execution spaces are not allowed! " + "Trying to enable execution space ${_BACKEND}, " + "but execution space ${_DEVICE_PARALLEL} is already enabled. " + "Remove the CMakeCache.txt file and re-configure.") + ENDIF() + SET(_DEVICE_PARALLEL ${_BACKEND}) + ENDIF() +ENDFOREACH() +IF(NOT _DEVICE_PARALLEL) + SET(_DEVICE_PARALLEL "NONE") ENDIF() +MESSAGE(STATUS " Device Parallel: ${_DEVICE_PARALLEL}") +UNSET(_DEVICE_PARALLEL) + FOREACH (_BACKEND OPENMP PTHREAD HPX) IF(KOKKOS_ENABLE_${_BACKEND}) diff --git a/lib/kokkos/cmake/kokkos_check_env.cmake b/lib/kokkos/cmake/kokkos_check_env.cmake new file mode 100644 index 0000000000..a455a403b9 --- /dev/null +++ b/lib/kokkos/cmake/kokkos_check_env.cmake @@ -0,0 +1,12 @@ +SET(CRAYPE_VERSION $ENV{CRAYPE_VERSION}) +IF (CRAYPE_VERSION) + SET(KOKKOS_IS_CRAYPE TRUE) + SET(CRAYPE_LINK_TYPE $ENV{CRAYPE_LINK_TYPE}) + IF (CRAYPE_LINK_TYPE) + IF (NOT CRAYPE_LINK_TYPE STREQUAL "dynamic") + MESSAGE(WARNING "CRAYPE_LINK_TYPE is set to ${CRAYPE_LINK_TYPE}. Linking is likely to fail unless this is set to 'dynamic'") + ENDIF() + ELSE() + MESSAGE(WARNING "CRAYPE_LINK_TYPE is not set. Linking is likely to fail unless this is set to 'dynamic'") + ENDIF() +ENDIF() diff --git a/lib/kokkos/cmake/kokkos_compiler_id.cmake b/lib/kokkos/cmake/kokkos_compiler_id.cmake index d239c3b32e..cd5e7c9e4e 100644 --- a/lib/kokkos/cmake/kokkos_compiler_id.cmake +++ b/lib/kokkos/cmake/kokkos_compiler_id.cmake @@ -13,7 +13,7 @@ EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} --version STRING(REGEX REPLACE "^ +" "" - INTERNAL_HAVE_COMPILER_NVCC ${INTERNAL_HAVE_COMPILER_NVCC}) + INTERNAL_HAVE_COMPILER_NVCC "${INTERNAL_HAVE_COMPILER_NVCC}") IF(INTERNAL_HAVE_COMPILER_NVCC) @@ -31,16 +31,32 @@ IF(INTERNAL_HAVE_COMPILER_NVCC) SET(KOKKOS_CXX_COMPILER_VERSION ${TEMP_CXX_COMPILER_VERSION} CACHE STRING INTERNAL FORCE) ENDIF() -IF(KOKKOS_CXX_COMPILER_ID STREQUAL Cray) - # SET nvcc's compiler version. +IF(KOKKOS_CXX_COMPILER_ID STREQUAL Clang) + # The Cray compiler reports as Clang to most versions of CMake + EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} --version + COMMAND grep Cray + COMMAND wc -l + OUTPUT_VARIABLE INTERNAL_HAVE_CRAY_COMPILER + OUTPUT_STRIP_TRAILING_WHITESPACE) + IF (INTERNAL_HAVE_CRAY_COMPILER) #not actually Clang + SET(KOKKOS_CLANG_IS_CRAY TRUE) + ENDIF() +ENDIF() + +IF(KOKKOS_CXX_COMPILER_ID STREQUAL Cray OR KOKKOS_CLANG_IS_CRAY) + # SET Cray's compiler version. EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} --version OUTPUT_VARIABLE INTERNAL_CXX_COMPILER_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) - STRING(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+$" + STRING(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" TEMP_CXX_COMPILER_VERSION ${INTERNAL_CXX_COMPILER_VERSION}) - SET(KOKKOS_CXX_COMPILER_VERSION ${TEMP_CXX_COMPILER_VERSION} CACHE STRING INTERNAL FORCE) + IF (KOKKOS_CLANG_IS_CRAY) + SET(KOKKOS_CLANG_CRAY_COMPILER_VERSION ${TEMP_CXX_COMPILER_VERSION}) + ELSE() + SET(KOKKOS_CXX_COMPILER_VERSION ${TEMP_CXX_COMPILER_VERSION} CACHE STRING INTERNAL FORCE) + ENDIF() ENDIF() # Enforce the minimum compilers supported by Kokkos. diff --git a/lib/kokkos/cmake/kokkos_corner_cases.cmake b/lib/kokkos/cmake/kokkos_corner_cases.cmake index c03c385faf..e30be3c841 100644 --- a/lib/kokkos/cmake/kokkos_corner_cases.cmake +++ b/lib/kokkos/cmake/kokkos_corner_cases.cmake @@ -1,4 +1,4 @@ -IF(KOKKOS_CXX_COMPILER_ID STREQUAL Clang AND KOKKOS_ENABLE_OPENMP) +IF(KOKKOS_CXX_COMPILER_ID STREQUAL Clang AND KOKKOS_ENABLE_OPENMP AND NOT KOKKOS_CLANG_IS_CRAY) # The clang "version" doesn't actually tell you what runtimes and tools # were built into Clang. We should therefore make sure that libomp # was actually built into Clang. Otherwise the user will get nonsensical @@ -11,7 +11,7 @@ IF(KOKKOS_CXX_COMPILER_ID STREQUAL Clang AND KOKKOS_ENABLE_OPENMP) #also - this is easier to use than CMakeCheckCXXSourceCompiles TRY_COMPILE(CLANG_HAS_OMP ${KOKKOS_TOP_BUILD_DIR}/corner_cases - ${KOKKOS_SOURCE_DIR}/cmake/compile_tests/clang_omp.cpp + ${KOKKOS_SOURCE_DIR}/cmake/compile_tests/clang_omp.cpp COMPILE_DEFINITIONS -fopenmp=libomp LINK_LIBRARIES -fopenmp=libomp ) @@ -22,6 +22,30 @@ IF(KOKKOS_CXX_COMPILER_ID STREQUAL Clang AND KOKKOS_ENABLE_OPENMP) UNSET(CLANG_HAS_OMP CACHE) #make sure CMake always re-runs this ENDIF() +IF(KOKKOS_CXX_COMPILER_ID STREQUAL AppleClang AND KOKKOS_ENABLE_OPENMP) + # The clang "version" doesn't actually tell you what runtimes and tools + # were built into Clang. We should therefore make sure that libomp + # was actually built into Clang. Otherwise the user will get nonsensical + # errors when they try to build. + + #Try compile is the height of CMake nonsense + #I can't just give it compiler and link flags + #I have to hackily pretend that compiler flags are compiler definitions + #and that linker flags are libraries + #also - this is easier to use than CMakeCheckCXXSourceCompiles + TRY_COMPILE(APPLECLANG_HAS_OMP + ${KOKKOS_TOP_BUILD_DIR}/corner_cases + ${KOKKOS_SOURCE_DIR}/cmake/compile_tests/clang_omp.cpp + COMPILE_DEFINITIONS -Xpreprocessor -fopenmp + LINK_LIBRARIES -lomp + ) + IF (NOT APPLECLANG_HAS_OMP) + UNSET(APPLECLANG_HAS_OMP CACHE) #make sure CMake always re-runs this + MESSAGE(FATAL_ERROR "AppleClang failed OpenMP check. You have requested -DKokkos_ENABLE_OPENMP=ON, but the AppleClang compiler does not appear to have been built with OpenMP support") + ENDIF() + UNSET(APPLECLANG_HAS_OMP CACHE) #make sure CMake always re-runs this +ENDIF() + IF (KOKKOS_CXX_STANDARD STREQUAL 17) IF (KOKKOS_CXX_COMPILER_ID STREQUAL GNU AND KOKKOS_CXX_COMPILER_VERSION VERSION_LESS 7) diff --git a/lib/kokkos/cmake/kokkos_enable_devices.cmake b/lib/kokkos/cmake/kokkos_enable_devices.cmake index ff09876673..7b50cfe458 100644 --- a/lib/kokkos/cmake/kokkos_enable_devices.cmake +++ b/lib/kokkos/cmake/kokkos_enable_devices.cmake @@ -31,6 +31,41 @@ ELSE() SET(OMP_DEFAULT OFF) ENDIF() KOKKOS_DEVICE_OPTION(OPENMP ${OMP_DEFAULT} HOST "Whether to build OpenMP backend") +IF(KOKKOS_ENABLE_OPENMP) + SET(ClangOpenMPFlag -fopenmp=libomp) + IF(KOKKOS_CLANG_IS_CRAY) + SET(ClangOpenMPFlag -fopenmp) + ENDIF() + COMPILER_SPECIFIC_FLAGS( + Clang ${ClangOpenMPFlag} + AppleClang -Xpreprocessor -fopenmp + PGI -mp + NVIDIA -Xcompiler -fopenmp + Cray NO-VALUE-SPECIFIED + XL -qsmp=omp + DEFAULT -fopenmp + ) + COMPILER_SPECIFIC_LIBS( + AppleClang -lomp + ) +ENDIF() + +KOKKOS_DEVICE_OPTION(OPENMPTARGET OFF DEVICE "Whether to build the OpenMP target backend") +IF (KOKKOS_ENABLE_OPENMPTARGET) + COMPILER_SPECIFIC_FLAGS( + Clang -fopenmp -fopenmp=libomp + XL -qsmp=omp -qoffload -qnoeh + DEFAULT -fopenmp + ) + COMPILER_SPECIFIC_DEFS( + XL KOKKOS_IBM_XL_OMP45_WORKAROUND + Clang KOKKOS_WORKAROUND_OPENMPTARGET_CLANG + ) +# Are there compilers which identify as Clang and need this library? +# COMPILER_SPECIFIC_LIBS( +# Clang -lopenmptarget +# ) +ENDIF() IF(Trilinos_ENABLE_Kokkos AND TPL_ENABLE_CUDA) SET(CUDA_DEFAULT ON) @@ -59,3 +94,5 @@ ENDIF() KOKKOS_DEVICE_OPTION(SERIAL ${SERIAL_DEFAULT} HOST "Whether to build serial backend") KOKKOS_DEVICE_OPTION(HPX OFF HOST "Whether to build HPX backend (experimental)") + +KOKKOS_DEVICE_OPTION(HIP OFF DEVICE "Whether to build HIP backend") diff --git a/lib/kokkos/cmake/kokkos_enable_options.cmake b/lib/kokkos/cmake/kokkos_enable_options.cmake index c0e49482b6..4560c3df8f 100644 --- a/lib/kokkos/cmake/kokkos_enable_options.cmake +++ b/lib/kokkos/cmake/kokkos_enable_options.cmake @@ -21,6 +21,7 @@ ENDFUNCTION() # Certain defaults will depend on knowing the enabled devices KOKKOS_CFG_DEPENDS(OPTIONS DEVICES) +KOKKOS_CFG_DEPENDS(OPTIONS COMPILER_ID) # Put a check in just in case people are using this option KOKKOS_DEPRECATED_LIST(OPTIONS ENABLE) @@ -28,8 +29,10 @@ KOKKOS_DEPRECATED_LIST(OPTIONS ENABLE) KOKKOS_ENABLE_OPTION(CUDA_RELOCATABLE_DEVICE_CODE OFF "Whether to enable relocatable device code (RDC) for CUDA") KOKKOS_ENABLE_OPTION(CUDA_UVM OFF "Whether to use unified memory (UM) for CUDA by default") KOKKOS_ENABLE_OPTION(CUDA_LDG_INTRINSIC OFF "Whether to use CUDA LDG intrinsics") +KOKKOS_ENABLE_OPTION(HIP_RELOCATABLE_DEVICE_CODE OFF "Whether to enable relocatable device code (RDC) for HIP") KOKKOS_ENABLE_OPTION(HPX_ASYNC_DISPATCH OFF "Whether HPX supports asynchronous dispatch") KOKKOS_ENABLE_OPTION(TESTS OFF "Whether to build the unit tests") +KOKKOS_ENABLE_OPTION(EXAMPLES OFF "Whether to build the examples") STRING(TOUPPER "${CMAKE_BUILD_TYPE}" UPPERCASE_CMAKE_BUILD_TYPE) IF(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL "DEBUG") KOKKOS_ENABLE_OPTION(DEBUG ON "Whether to activate extra debug features - may increase compile times") @@ -51,12 +54,14 @@ IF (KOKKOS_ENABLE_CUDA) SET(KOKKOS_COMPILER_CUDA_VERSION "${KOKKOS_COMPILER_VERSION_MAJOR}${KOKKOS_COMPILER_VERSION_MINOR}") ENDIF() -IF (Trilinos_ENABLE_Kokkos AND TPL_ENABLE_CUDA AND DEFINED KOKKOS_COMPILER_CUDA_VERSION AND KOKKOS_COMPILER_CUDA_VERSION GREATER 70) - SET(LAMBDA_DEFAULT ON) +IF (Trilinos_ENABLE_Kokkos AND TPL_ENABLE_CUDA) + SET(CUDA_LAMBDA_DEFAULT ON) +ELSEIF (KOKKOS_ENABLE_CUDA AND (KOKKOS_CXX_COMPILER_ID STREQUAL Clang)) + SET(CUDA_LAMBDA_DEFAULT ON) ELSE() - SET(LAMBDA_DEFAULT OFF) + SET(CUDA_LAMBDA_DEFAULT OFF) ENDIF() -KOKKOS_ENABLE_OPTION(CUDA_LAMBDA ${LAMBDA_DEFAULT} "Whether to activate experimental lambda features") +KOKKOS_ENABLE_OPTION(CUDA_LAMBDA ${CUDA_LAMBDA_DEFAULT} "Whether to activate experimental lambda features") IF (Trilinos_ENABLE_Kokkos) SET(COMPLEX_ALIGN_DEFAULT OFF) ELSE() @@ -64,7 +69,13 @@ ELSE() ENDIF() KOKKOS_ENABLE_OPTION(COMPLEX_ALIGN ${COMPLEX_ALIGN_DEFAULT} "Whether to align Kokkos::complex to 2*alignof(RealType)") -KOKKOS_ENABLE_OPTION(CUDA_CONSTEXPR OFF "Whether to activate experimental relaxed constexpr functions") + +IF (KOKKOS_ENABLE_CUDA AND (KOKKOS_CXX_COMPILER_ID STREQUAL Clang)) + SET(CUDA_CONSTEXPR_DEFAULT ON) +ELSE() + SET(CUDA_CONSTEXPR_DEFAULT OFF) +ENDIF() +KOKKOS_ENABLE_OPTION(CUDA_CONSTEXPR ${CUDA_CONSTEXPR_DEFAULT} "Whether to activate experimental relaxed constexpr functions") FUNCTION(check_device_specific_options) CMAKE_PARSE_ARGUMENTS(SOME "" "DEVICE" "OPTIONS" ${ARGN}) @@ -84,9 +95,18 @@ FUNCTION(check_device_specific_options) ENDFUNCTION() CHECK_DEVICE_SPECIFIC_OPTIONS(DEVICE CUDA OPTIONS CUDA_UVM CUDA_RELOCATABLE_DEVICE_CODE CUDA_LAMBDA CUDA_CONSTEXPR CUDA_LDG_INTRINSIC) +CHECK_DEVICE_SPECIFIC_OPTIONS(DEVICE HIP OPTIONS HIP_RELOCATABLE_DEVICE_CODE) CHECK_DEVICE_SPECIFIC_OPTIONS(DEVICE HPX OPTIONS HPX_ASYNC_DISPATCH) # Needed due to change from deprecated name to new header define name IF (KOKKOS_ENABLE_AGGRESSIVE_VECTORIZATION) SET(KOKKOS_OPT_RANGE_AGGRESSIVE_VECTORIZATION ON) ENDIF() + +# This is known to occur with Clang 9. We would need to use nvcc as the linker +# http://lists.llvm.org/pipermail/cfe-dev/2018-June/058296.html +# TODO: Through great effort we can use a different linker by hacking +# CMAKE_CXX_LINK_EXECUTABLE in a future release +IF (KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE AND KOKKOS_CXX_COMPILER_ID STREQUAL Clang) + MESSAGE(FATAL_ERROR "Relocatable device code is currently not supported with Clang - must use nvcc_wrapper or turn off RDC") +ENDIF() diff --git a/lib/kokkos/cmake/kokkos_functions.cmake b/lib/kokkos/cmake/kokkos_functions.cmake index 3644c48ddd..fd04966baf 100644 --- a/lib/kokkos/cmake/kokkos_functions.cmake +++ b/lib/kokkos/cmake/kokkos_functions.cmake @@ -3,9 +3,9 @@ # kokkos_option # Validate options are given with correct case and define an internal -# upper-case version for use within +# upper-case version for use within -# +# # # @FUNCTION: kokkos_deprecated_list # @@ -62,7 +62,7 @@ FUNCTION(kokkos_option CAMEL_SUFFIX DEFAULT TYPE DOCSTRING) UNSET(${opt} CACHE) ELSE() MESSAGE(FATAL_ERROR "Matching option found for ${CAMEL_NAME} with the wrong case ${opt}. Please delete your CMakeCache.txt and change option to -D${CAMEL_NAME}=${${opt}}. This is now enforced to avoid hard-to-debug CMake cache inconsistencies.") - ENDIF() + ENDIF() ENDIF() ENDIF() ENDFOREACH() @@ -125,7 +125,7 @@ MACRO(kokkos_export_imported_tpl NAME) KOKKOS_APPEND_CONFIG_LINE("IF(NOT TARGET ${NAME})") KOKKOS_APPEND_CONFIG_LINE("ADD_LIBRARY(${NAME} UNKNOWN IMPORTED)") KOKKOS_APPEND_CONFIG_LINE("SET_TARGET_PROPERTIES(${NAME} PROPERTIES") - + GET_TARGET_PROPERTY(TPL_LIBRARY ${NAME} IMPORTED_LOCATION) IF(TPL_LIBRARY) KOKKOS_APPEND_CONFIG_LINE("IMPORTED_LOCATION ${TPL_LIBRARY}") @@ -198,7 +198,7 @@ MACRO(kokkos_import_tpl NAME) # I have still been getting errors about ROOT variables being ignored # I'm not sure if this is a scope issue - but make sure # the policy is set before we do any find_package calls - IF(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12.0") + IF(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12.0") CMAKE_POLICY(SET CMP0074 NEW) ENDIF() @@ -341,11 +341,12 @@ ENDMACRO() # default, custom paths are prioritized over system paths. The searched # order is: # 1. _ROOT variable -# 2. Kokkos__DIR variable -# 3. Locations in the PATHS option -# 4. Default system paths, if allowed. +# 2. _ROOT environment variable +# 3. Kokkos__DIR variable +# 4. Locations in the PATHS option +# 5. Default system paths, if allowed. # -# Default system paths are allowed if none of options (1)-(3) are specified +# Default system paths are allowed if none of options (1)-(4) are specified # or if default paths are specifically allowed via ALLOW_SYSTEM_PATH_FALLBACK # # Usage:: @@ -387,33 +388,29 @@ MACRO(kokkos_find_header VAR_NAME HEADER TPL_NAME) "PATHS" ${ARGN}) - SET(${HEADER}_FOUND FALSE) + SET(${VAR_NAME} "${VARNAME}-NOTFOUND") SET(HAVE_CUSTOM_PATHS FALSE) - IF(NOT ${HEADER}_FOUND AND DEFINED ${TPL_NAME}_ROOT) - #ONLY look in the root directory - FIND_PATH(${VAR_NAME} ${HEADER} PATHS ${${TPL_NAME}_ROOT}/include NO_DEFAULT_PATH) + + IF(DEFINED ${TPL_NAME}_ROOT OR + DEFINED ENV{${TPL_NAME}_ROOT} OR + DEFINED KOKKOS_${TPL_NAME}_DIR OR + TPL_PATHS) + FIND_PATH(${VAR_NAME} ${HEADER} + PATHS + ${${TPL_NAME}_ROOT} + $ENV{${TPL_NAME}_ROOT} + ${KOKKOS_${TPL_NAME}_DIR} + ${TPL_PATHS} + PATH_SUFFIXES include + NO_DEFAULT_PATH) SET(HAVE_CUSTOM_PATHS TRUE) ENDIF() - IF(NOT ${HEADER}_FOUND AND DEFINED KOKKOS_${TPL_NAME}_DIR) - #ONLY look in the root directory - FIND_PATH(${VAR_NAME} ${HEADER} PATHS ${KOKKOS_${TPL_NAME}_DIR}/include NO_DEFAULT_PATH) - SET(HAVE_CUSTOM_PATHS TRUE) + IF(NOT HAVE_CUSTOM_PATHS OR TPL_ALLOW_SYSTEM_PATH_FALLBACK) + #No-op if ${VAR_NAME} set by previous call + FIND_PATH(${VAR_NAME} ${HEADER}) ENDIF() - IF (NOT ${HEADER}_FOUND AND TPL_PATHS) - #we got custom paths - #ONLY look in these paths and nowhere else - FIND_PATH(${VAR_NAME} ${HEADER} PATHS ${TPL_PATHS} NO_DEFAULT_PATH) - SET(HAVE_CUSTOM_PATHS TRUE) - ENDIF() - - IF (NOT HAVE_CUSTOM_PATHS OR TPL_ALLOW_SYSTEM_PATH_FALLBACK) - #Now go ahead and look in system paths - IF (NOT ${HEADER}_FOUND) - FIND_PATH(${VAR_NAME} ${HEADER}) - ENDIF() - ENDIF() ENDMACRO() # @@ -424,9 +421,10 @@ ENDMACRO() # default, custom paths are prioritized over system paths. The search # order is: # 1. _ROOT variable -# 2. Kokkos__DIR variable -# 3. Locations in the PATHS option -# 4. Default system paths, if allowed. +# 2. _ROOT environment variable +# 3. Kokkos__DIR variable +# 4. Locations in the PATHS option +# 5. Default system paths, if allowed. # # Default system paths are allowed if none of options (1)-(3) are specified # or if default paths are specifically allowed via ALLOW_SYSTEM_PATH_FALLBACK @@ -439,6 +437,7 @@ ENDMACRO() # # [ALLOW_SYSTEM_PATH_FALLBACK] # [PATHS path1 [path2 ...]] +# [SUFFIXES suffix1 [suffix2 ...]] # ) # # ```` @@ -463,39 +462,46 @@ ENDMACRO() # # Custom paths to search for the library # +# ``SUFFIXES`` +# +# Suffixes appended to PATHS when attempting to locate +# the library. Defaults to {lib, lib64}. +# MACRO(kokkos_find_library VAR_NAME LIB TPL_NAME) CMAKE_PARSE_ARGUMENTS(TPL "ALLOW_SYSTEM_PATH_FALLBACK" "" - "PATHS" + "PATHS;SUFFIXES" ${ARGN}) - SET(${LIB}_FOUND FALSE) + IF(NOT TPL_SUFFIXES) + SET(TPL_SUFFIXES lib lib64) + ENDIF() + + SET(${VAR_NAME} "${VARNAME}-NOTFOUND") SET(HAVE_CUSTOM_PATHS FALSE) - IF(NOT ${LIB}_FOUND AND DEFINED ${TPL_NAME}_ROOT) - FIND_LIBRARY(${VAR_NAME} ${LIB} PATHS ${${TPL_NAME}_ROOT}/lib ${${TPL_NAME}_ROOT}/lib64 NO_DEFAULT_PATH) + + IF(DEFINED ${TPL_NAME}_ROOT OR + DEFINED ENV{${TPL_NAME}_ROOT} OR + DEFINED KOKKOS_${TPL_NAME}_DIR OR + TPL_PATHS) + FIND_LIBRARY(${VAR_NAME} ${LIB} + PATHS + ${${TPL_NAME}_ROOT} + $ENV{${TPL_NAME}_ROOT} + ${KOKKOS_${TPL_NAME}_DIR} + ${TPL_PATHS} + PATH_SUFFIXES + ${TPL_SUFFIXES} + NO_DEFAULT_PATH) SET(HAVE_CUSTOM_PATHS TRUE) ENDIF() - IF(NOT ${LIB}_FOUND AND DEFINED KOKKOS_${TPL_NAME}_DIR) - #we got root paths, only look in these paths and nowhere else - FIND_LIBRARY(${VAR_NAME} ${LIB} PATHS ${KOKKOS_${TPL_NAME}_DIR}/lib ${KOKKOS_${TPL_NAME}_DIR}/lib64 NO_DEFAULT_PATH) - SET(HAVE_CUSTOM_PATHS TRUE) + IF(NOT HAVE_CUSTOM_PATHS OR TPL_ALLOW_SYSTEM_PATH_FALLBACK) + #No-op if ${VAR_NAME} set by previous call + FIND_LIBRARY(${VAR_NAME} ${LIB} PATH_SUFFIXES ${TPL_SUFFIXES}) ENDIF() - IF (NOT ${LIB}_FOUND AND TPL_PATHS) - #we got custom paths, only look in these paths and nowhere else - FIND_LIBRARY(${VAR_NAME} ${LIB} PATHS ${TPL_PATHS} NO_DEFAULT_PATH) - SET(HAVE_CUSTOM_PATHS TRUE) - ENDIF() - - - IF (NOT HAVE_CUSTOM_PATHS OR TPL_ALLOW_SYSTEM_PATH_FALLBACK) - IF (NOT ${LIB}_FOUND) - #Now go ahead and look in system paths - FIND_LIBRARY(${VAR_NAME} ${LIB}) - ENDIF() - ENDIF() ENDMACRO() # @@ -510,26 +516,28 @@ ENDMACRO() # # INTERFACE # ALLOW_SYSTEM_PATH_FALLBACK -# LIBRARY -# LINK_LIBRARIES ... -# COMPILE_OPTIONS ... -# LINK_OPTIONS ... +# MODULE_NAME +# IMPORTED_NAME +# LIBRARY +# LIBRARIES ... +# LIBRARY_PATHS ... +# LIBRARY_SUFFIXES ... +# HEADER +# HEADERS ... +# HEADER_PATHS ... +# ) # # ``INTERFACE`` # # If specified, this TPL will build an INTERFACE library rather than an # IMPORTED target # -# ``ALLOW_SYSTEM_PATH_FALLBACK" +# ``ALLOW_SYSTEM_PATH_FALLBACK`` # # If custom paths are given and the library is not found # should we be allowed to search default system paths # or error out if not found in given paths. # -# ``LIBRARY `` -# -# If specified, this gives the name of the library to look for -# # ``MODULE_NAME `` # # If specified, the name of the enclosing module passed to @@ -541,29 +549,42 @@ ENDMACRO() # If specified, this gives the name of the target to build. # Defaults to Kokkos:: # +# ``LIBRARY `` +# +# If specified, this gives the name of the library to look for +# +# ``LIBRARIES ...`` +# +# If specified, this gives a list of libraries to find for the package +# # ``LIBRARY_PATHS ...`` # -# If specified, this gives a list of paths to search for the library -# If not given, _ROOT/lib and _ROOT/lib64 will be searched. +# If specified, this gives a list of paths to search for the library. +# If not given, _ROOT will be searched. +# +# ``LIBRARY_SUFFIXES ...`` +# +# Suffixes appended to LIBRARY_PATHS when attempting to locate +# libraries. If not given, defaults to {lib, lib64}. +# +# ``HEADER `` +# +# If specified, this gives the name of a header to to look for +# +# ``HEADERS ...`` +# +# If specified, this gives a list of headers to find for the package # # ``HEADER_PATHS ...`` # # If specified, this gives a list of paths to search for the headers # If not given, _ROOT/include and _ROOT/include will be searched. # -# ``HEADERS ...`` -# -# If specified, this gives a list of headers to find for the package -# -# ``LIBRARIES ...`` -# -# If specified, this gives a list of libraries to find for the package -# MACRO(kokkos_find_imported NAME) CMAKE_PARSE_ARGUMENTS(TPL "INTERFACE;ALLOW_SYSTEM_PATH_FALLBACK" - "HEADER;LIBRARY;IMPORTED_NAME;MODULE_NAME" - "HEADER_PATHS;LIBRARY_PATHS;HEADERS;LIBRARIES" + "IMPORTED_NAME;MODULE_NAME;LIBRARY;HEADER" + "LIBRARIES;LIBRARY_PATHS;LIBRARY_SUFFIXES;HEADERS;HEADER_PATHS" ${ARGN}) IF(NOT TPL_MODULE_NAME) @@ -584,6 +605,10 @@ MACRO(kokkos_find_imported NAME) ENDIF() ENDIF() + IF (NOT TPL_LIBRARY_SUFFIXES) + SET(TPL_LIBRARY_SUFFIXES lib lib64) + ENDIF() + SET(${NAME}_INCLUDE_DIRS) IF (TPL_HEADER) KOKKOS_FIND_HEADER(${NAME}_INCLUDE_DIRS ${TPL_HEADER} ${NAME} ${ALLOW_PATH_FALLBACK_OPT} PATHS ${TPL_HEADER_PATHS}) @@ -598,16 +623,22 @@ MACRO(kokkos_find_imported NAME) SET(${NAME}_LIBRARY) IF(TPL_LIBRARY) - KOKKOS_FIND_LIBRARY(${NAME}_LIBRARY ${TPL_LIBRARY} ${NAME} ${ALLOW_PATH_FALLBACK_OPT} PATHS ${TPL_LIBRARY_PATHS}) + KOKKOS_FIND_LIBRARY(${NAME}_LIBRARY ${TPL_LIBRARY} ${NAME} + ${ALLOW_PATH_FALLBACK_OPT} + PATHS ${TPL_LIBRARY_PATHS} + SUFFIXES ${TPL_LIBRARY_SUFFIXES}) ENDIF() SET(${NAME}_FOUND_LIBRARIES) FOREACH(LIB ${TPL_LIBRARIES}) - KOKKOS_FIND_LIBRARY(${LIB}_LOCATION ${LIB} ${NAME} ${ALLOW_PATH_FALLBACK_OPT} PATHS ${TPL_LIBRARY_PATHS}) + KOKKOS_FIND_LIBRARY(${LIB}_LOCATION ${LIB} ${NAME} + ${ALLOW_PATH_FALLBACK_OPT} + PATHS ${TPL_LIBRARY_PATHS} + SUFFIXES ${TPL_LIBRARY_SUFFIXES}) IF(${LIB}_LOCATION) LIST(APPEND ${NAME}_FOUND_LIBRARIES ${${LIB}_LOCATION}) ELSE() - SET(${NAME}_FOUND_LIBRARIES ${${LIB}_LOCATION}) + SET(${NAME}_FOUND_LIBRARIES ${${LIB}_LOCATION}) BREAK() ENDIF() ENDFOREACH() @@ -629,6 +660,13 @@ MACRO(kokkos_find_imported NAME) MARK_AS_ADVANCED(${NAME}_INCLUDE_DIRS ${NAME}_FOUND_LIBRARIES ${NAME}_LIBRARY) + #this is so much fun on a Cray system + #/usr/include should never be added as a -isystem include + #this freaks out the compiler include search order + IF (KOKKOS_IS_CRAYPE) + LIST(REMOVE_ITEM ${NAME}_INCLUDE_DIRS "/usr/include") + ENDIF() + IF (${TPL_MODULE_NAME}_FOUND) SET(IMPORT_TYPE) IF (TPL_INTERFACE) @@ -698,3 +736,66 @@ FUNCTION(kokkos_link_tpl TARGET) ENDIF() ENDFUNCTION() +FUNCTION(COMPILER_SPECIFIC_OPTIONS_HELPER) + SET(COMPILERS NVIDIA PGI XL DEFAULT Cray Intel Clang AppleClang GNU) + CMAKE_PARSE_ARGUMENTS( + PARSE + "LINK_OPTIONS;COMPILE_OPTIONS;COMPILE_DEFINITIONS;LINK_LIBRARIES" + "" + "${COMPILERS}" + ${ARGN}) + IF(PARSE_UNPARSED_ARGUMENTS) + MESSAGE(SEND_ERROR "'${PARSE_UNPARSED_ARGUMENTS}' argument(s) not recognized when providing compiler specific options") + ENDIF() + + SET(COMPILER ${KOKKOS_CXX_COMPILER_ID}) + + SET(COMPILER_SPECIFIC_FLAGS_TMP) + FOREACH(COMP ${COMPILERS}) + IF (COMPILER STREQUAL "${COMP}") + IF (PARSE_${COMPILER}) + IF (NOT "${PARSE_${COMPILER}}" STREQUAL "NO-VALUE-SPECIFIED") + SET(COMPILER_SPECIFIC_FLAGS_TMP ${PARSE_${COMPILER}}) + ENDIF() + ELSEIF(PARSE_DEFAULT) + SET(COMPILER_SPECIFIC_FLAGS_TMP ${PARSE_DEFAULT}) + ENDIF() + ENDIF() + ENDFOREACH() + + IF (PARSE_COMPILE_OPTIONS) + # The funky logic here is for future handling of argument deduplication + # If we naively pass multiple -Xcompiler flags to target_compile_options + # -Xcompiler will get deduplicated and break the build + IF ("-Xcompiler" IN_LIST COMPILER_SPECIFIC_FLAGS_TMP) + LIST(REMOVE_ITEM COMPILER_SPECIFIC_FLAGS_TMP "-Xcompiler") + GLOBAL_APPEND(KOKKOS_XCOMPILER_OPTIONS ${COMPILER_SPECIFIC_FLAGS_TMP}) + ELSE() + GLOBAL_APPEND(KOKKOS_COMPILE_OPTIONS ${COMPILER_SPECIFIC_FLAGS_TMP}) + ENDIF() + ENDIF() + + IF (PARSE_LINK_OPTIONS) + GLOBAL_APPEND(KOKKOS_LINK_OPTIONS ${COMPILER_SPECIFIC_FLAGS_TMP}) + ENDIF() + + IF (PARSE_COMPILE_DEFINITIONS) + GLOBAL_APPEND(KOKKOS_COMPILE_DEFINITIONS ${COMPILER_SPECIFIC_FLAGS_TMP}) + ENDIF() + + IF (PARSE_LINK_LIBRARIES) + GLOBAL_APPEND(KOKKOS_LINK_LIBRARIES ${COMPILER_SPECIFIC_FLAGS_TMP}) + ENDIF() +ENDFUNCTION(COMPILER_SPECIFIC_OPTIONS_HELPER) + +FUNCTION(COMPILER_SPECIFIC_FLAGS) + COMPILER_SPECIFIC_OPTIONS_HELPER(${ARGN} COMPILE_OPTIONS LINK_OPTIONS) +ENDFUNCTION(COMPILER_SPECIFIC_FLAGS) + +FUNCTION(COMPILER_SPECIFIC_DEFS) + COMPILER_SPECIFIC_OPTIONS_HELPER(${ARGN} COMPILE_DEFINITIONS) +ENDFUNCTION(COMPILER_SPECIFIC_DEFS) + +FUNCTION(COMPILER_SPECIFIC_LIBS) + COMPILER_SPECIFIC_OPTIONS_HELPER(${ARGN} LINK_LIBRARIES) +ENDFUNCTION(COMPILER_SPECIFIC_LIBS) diff --git a/lib/kokkos/cmake/kokkos_install.cmake b/lib/kokkos/cmake/kokkos_install.cmake index 1e4a5a2aad..6a39590f03 100644 --- a/lib/kokkos/cmake/kokkos_install.cmake +++ b/lib/kokkos/cmake/kokkos_install.cmake @@ -31,12 +31,11 @@ IF (NOT KOKKOS_HAS_TRILINOS) ELSE() CONFIGURE_FILE(cmake/KokkosConfigCommon.cmake.in ${Kokkos_BINARY_DIR}/KokkosConfigCommon.cmake @ONLY) file(READ ${Kokkos_BINARY_DIR}/KokkosConfigCommon.cmake KOKKOS_CONFIG_COMMON) - file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/KokkosConfig_install.cmake" ${KOKKOS_CONFIG_COMMON}) + file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/KokkosConfig_install.cmake" "${KOKKOS_CONFIG_COMMON}") + CONFIGURE_FILE(cmake/KokkosTrilinosConfig.cmake.in ${Kokkos_BINARY_DIR}/KokkosTrilinosConfig.cmake @ONLY) + file(READ ${Kokkos_BINARY_DIR}/KokkosTrilinosConfig.cmake KOKKOS_TRILINOS_CONFIG) + file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/KokkosConfig_install.cmake" "${KOKKOS_TRILINOS_CONFIG}") ENDIF() -# build and install pkgconfig file -CONFIGURE_FILE(core/src/kokkos.pc.in kokkos.pc @ONLY) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/kokkos.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/KokkosCore_config.h DESTINATION ${KOKKOS_HEADER_DIR}) diff --git a/lib/kokkos/cmake/kokkos_test_cxx_std.cmake b/lib/kokkos/cmake/kokkos_test_cxx_std.cmake index c264517abe..603b4b3d7a 100644 --- a/lib/kokkos/cmake/kokkos_test_cxx_std.cmake +++ b/lib/kokkos/cmake/kokkos_test_cxx_std.cmake @@ -14,12 +14,12 @@ FUNCTION(kokkos_set_cxx_standard_feature standard) ENDIF() ELSEIF(CMAKE_CXX_EXTENSIONS) IF(KOKKOS_DONT_ALLOW_EXTENSIONS) - MESSAGE(FATAL_ERROR "The chosen configuration does not support CXX extensions flags: ${KOKKOS_DONT_ALLOW_EXTENSIONS}. Must set CMAKE_CXX_EXTENSIONS=OFF to continue") + MESSAGE(FATAL_ERROR "The chosen configuration does not support CXX extensions flags: ${KOKKOS_DONT_ALLOW_EXTENSIONS}. Must set CMAKE_CXX_EXTENSIONS=OFF to continue") ELSE() GLOBAL_SET(KOKKOS_USE_CXX_EXTENSIONS ON) ENDIF() ELSE() - #For trilinos, we need to make sure downstream projects + #For trilinos, we need to make sure downstream projects GLOBAL_SET(KOKKOS_USE_CXX_EXTENSIONS OFF) ENDIF() @@ -29,6 +29,10 @@ FUNCTION(kokkos_set_cxx_standard_feature standard) ELSEIF(NOT KOKKOS_USE_CXX_EXTENSIONS AND ${STANDARD_NAME}) MESSAGE(STATUS "Using ${${STANDARD_NAME}} for C++${standard} standard as feature") GLOBAL_SET(KOKKOS_CXX_STANDARD_FEATURE ${FEATURE_NAME}) + ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL "MSVC") + #MSVC doesn't need a command line flag, that doesn't mean it has no support + MESSAGE(STATUS "Using no flag for C++${standard} standard as feature") + GLOBAL_SET(KOKKOS_CXX_STANDARD_FEATURE ${FEATURE_NAME}) ELSE() #nope, we can't do anything here MESSAGE(WARNING "C++${standard} is not supported as a compiler feature. We will choose custom flags for now, but this behavior has been deprecated. Please open an issue at https://github.com/kokkos/kokkos/issues reporting that ${KOKKOS_CXX_COMPILER_ID} ${KOKKOS_CXX_COMPILER_VERSION} failed for ${KOKKOS_CXX_STANDARD}, preferrably including your CMake command.") @@ -119,6 +123,9 @@ IF (NOT KOKKOS_CXX_STANDARD_FEATURE) ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL Intel) INCLUDE(${KOKKOS_SRC_PATH}/cmake/intel.cmake) kokkos_set_intel_flags(${KOKKOS_CXX_STANDARD} ${KOKKOS_CXX_INTERMEDIATE_STANDARD}) + ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL "MSVC") + INCLUDE(${KOKKOS_SRC_PATH}/cmake/msvc.cmake) + kokkos_set_msvc_flags(${KOKKOS_CXX_STANDARD} ${KOKKOS_CXX_INTERMEDIATE_STANDARD}) ELSE() INCLUDE(${KOKKOS_SRC_PATH}/cmake/gnu.cmake) kokkos_set_gnu_flags(${KOKKOS_CXX_STANDARD} ${KOKKOS_CXX_INTERMEDIATE_STANDARD}) @@ -128,9 +135,9 @@ IF (NOT KOKKOS_CXX_STANDARD_FEATURE) IF (DEFINED CXX_STD_FLAGS_ACCEPTED) UNSET(CXX_STD_FLAGS_ACCEPTED CACHE) ENDIF() - CHECK_CXX_COMPILER_FLAG(${KOKKOS_CXX_STANDARD_FLAG} CXX_STD_FLAGS_ACCEPTED) + CHECK_CXX_COMPILER_FLAG("${KOKKOS_CXX_STANDARD_FLAG}" CXX_STD_FLAGS_ACCEPTED) IF (NOT CXX_STD_FLAGS_ACCEPTED) - CHECK_CXX_COMPILER_FLAG(${KOKKOS_CXX_INTERMEDIATE_STANDARD_FLAG} CXX_INT_STD_FLAGS_ACCEPTED) + CHECK_CXX_COMPILER_FLAG("${KOKKOS_CXX_INTERMEDIATE_STANDARD_FLAG}" CXX_INT_STD_FLAGS_ACCEPTED) IF (NOT CXX_INT_STD_FLAGS_ACCEPTED) MESSAGE(FATAL_ERROR "${KOKKOS_CXX_COMPILER_ID} did not accept ${KOKKOS_CXX_STANDARD_FLAG} or ${KOKKOS_CXX_INTERMEDIATE_STANDARD_FLAG}. You likely need to reduce the level of the C++ standard from ${KOKKOS_CXX_STANDARD}") ENDIF() diff --git a/lib/kokkos/cmake/kokkos_tpls.cmake b/lib/kokkos/cmake/kokkos_tpls.cmake index 181a497d52..76efd42847 100644 --- a/lib/kokkos/cmake/kokkos_tpls.cmake +++ b/lib/kokkos/cmake/kokkos_tpls.cmake @@ -15,6 +15,10 @@ KOKKOS_TPL_OPTION(CUDA Off) KOKKOS_TPL_OPTION(LIBRT Off) KOKKOS_TPL_OPTION(LIBDL On) +IF(KOKKOS_ENABLE_PROFILING AND NOT KOKKOS_ENABLE_LIBDL) + MESSAGE(SEND_ERROR "Kokkos_ENABLE_PROFILING requires Kokkos_ENABLE_LIBDL=ON") +ENDIF() + IF(Trilinos_ENABLE_Kokkos AND TPL_ENABLE_HPX) SET(HPX_DEFAULT ON) ELSE() diff --git a/lib/kokkos/cmake/kokkos_tribits.cmake b/lib/kokkos/cmake/kokkos_tribits.cmake index d2317d2446..1c3b704ada 100644 --- a/lib/kokkos/cmake/kokkos_tribits.cmake +++ b/lib/kokkos/cmake/kokkos_tribits.cmake @@ -43,6 +43,8 @@ MACRO(KOKKOS_SUBPACKAGE NAME) SET(PACKAGE_NAME ${PACKAGE_NAME}${NAME}) STRING(TOUPPER ${PACKAGE_NAME} PACKAGE_NAME_UC) SET(${PACKAGE_NAME}_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + #ADD_INTERFACE_LIBRARY(PACKAGE_${PACKAGE_NAME}) + #GLOBAL_SET(${PACKAGE_NAME}_LIBS "") endif() ENDMACRO() @@ -114,57 +116,63 @@ MACRO(KOKKOS_INTERNAL_ADD_LIBRARY_INSTALL LIBRARY_NAME) VERIFY_EMPTY(KOKKOS_ADD_LIBRARY ${PARSE_UNPARSED_ARGUMENTS}) ENDMACRO() -FUNCTION(KOKKOS_ADD_EXECUTABLE EXE_NAME) +FUNCTION(KOKKOS_ADD_EXECUTABLE ROOT_NAME) if (KOKKOS_HAS_TRILINOS) - TRIBITS_ADD_EXECUTABLE(${EXE_NAME} ${ARGN}) + TRIBITS_ADD_EXECUTABLE(${ROOT_NAME} ${ARGN}) else() - CMAKE_PARSE_ARGUMENTS(PARSE + CMAKE_PARSE_ARGUMENTS(PARSE "TESTONLY" "" "SOURCES;TESTONLYLIBS" ${ARGN}) + SET(EXE_NAME ${PACKAGE_NAME}_${ROOT_NAME}) ADD_EXECUTABLE(${EXE_NAME} ${PARSE_SOURCES}) IF (PARSE_TESTONLYLIBS) - TARGET_LINK_LIBRARIES(${EXE_NAME} ${PARSE_TESTONLYLIBS}) + TARGET_LINK_LIBRARIES(${EXE_NAME} PRIVATE ${PARSE_TESTONLYLIBS}) ENDIF() VERIFY_EMPTY(KOKKOS_ADD_EXECUTABLE ${PARSE_UNPARSED_ARGUMENTS}) + #All executables must link to all the kokkos targets + #This is just private linkage because exe is final + TARGET_LINK_LIBRARIES(${EXE_NAME} PRIVATE kokkos) endif() ENDFUNCTION() -IF(NOT TARGET check) - ADD_CUSTOM_TARGET(check COMMAND ${CMAKE_CTEST_COMMAND} -VV -C ${CMAKE_CFG_INTDIR}) -ENDIF() - - FUNCTION(KOKKOS_ADD_EXECUTABLE_AND_TEST ROOT_NAME) IF (KOKKOS_HAS_TRILINOS) TRIBITS_ADD_EXECUTABLE_AND_TEST( - ${ROOT_NAME} - TESTONLYLIBS kokkos_gtest + ${ROOT_NAME} + TESTONLYLIBS kokkos_gtest ${ARGN} NUM_MPI_PROCS 1 COMM serial mpi FAIL_REGULAR_EXPRESSION " FAILED " ) ELSE() - CMAKE_PARSE_ARGUMENTS(PARSE + CMAKE_PARSE_ARGUMENTS(PARSE "" "" "SOURCES;CATEGORIES" ${ARGN}) VERIFY_EMPTY(KOKKOS_ADD_EXECUTABLE_AND_TEST ${PARSE_UNPARSED_ARGUMENTS}) - SET(EXE_NAME ${PACKAGE_NAME}_${ROOT_NAME}) - KOKKOS_ADD_TEST_EXECUTABLE(${EXE_NAME} + KOKKOS_ADD_TEST_EXECUTABLE(${ROOT_NAME} SOURCES ${PARSE_SOURCES} ) - KOKKOS_ADD_TEST(NAME ${ROOT_NAME} - EXE ${EXE_NAME} + KOKKOS_ADD_TEST(NAME ${ROOT_NAME} + EXE ${ROOT_NAME} FAIL_REGULAR_EXPRESSION " FAILED " ) ENDIF() ENDFUNCTION() +FUNCTION(KOKKOS_SET_EXE_PROPERTY ROOT_NAME) + SET(TARGET_NAME ${PACKAGE_NAME}_${ROOT_NAME}) + IF (NOT TARGET ${TARGET_NAME}) + MESSAGE(SEND_ERROR "No target ${TARGET_NAME} exists - cannot set target properties") + ENDIF() + SET_PROPERTY(TARGET ${TARGET_PROPERTY} PROPERTY ${ARGN}) +ENDFUNCTION() + MACRO(KOKKOS_SETUP_BUILD_ENVIRONMENT) INCLUDE(${KOKKOS_SRC_PATH}/cmake/kokkos_compiler_id.cmake) INCLUDE(${KOKKOS_SRC_PATH}/cmake/kokkos_enable_devices.cmake) @@ -178,20 +186,17 @@ MACRO(KOKKOS_SETUP_BUILD_ENVIRONMENT) INCLUDE(${KOKKOS_SRC_PATH}/cmake/kokkos_corner_cases.cmake) ENDMACRO() -MACRO(KOKKOS_ADD_TEST_EXECUTABLE EXE_NAME) - CMAKE_PARSE_ARGUMENTS(PARSE +MACRO(KOKKOS_ADD_TEST_EXECUTABLE ROOT_NAME) + CMAKE_PARSE_ARGUMENTS(PARSE "" "" "SOURCES" ${ARGN}) - KOKKOS_ADD_EXECUTABLE(${EXE_NAME} + KOKKOS_ADD_EXECUTABLE(${ROOT_NAME} SOURCES ${PARSE_SOURCES} ${PARSE_UNPARSED_ARGUMENTS} TESTONLYLIBS kokkos_gtest ) - IF (NOT KOKKOS_HAS_TRILINOS) - ADD_DEPENDENCIES(check ${EXE_NAME}) - ENDIF() ENDMACRO() MACRO(KOKKOS_PACKAGE_POSTPROCESS) @@ -201,7 +206,7 @@ MACRO(KOKKOS_PACKAGE_POSTPROCESS) ENDMACRO() FUNCTION(KOKKOS_SET_LIBRARY_PROPERTIES LIBRARY_NAME) - CMAKE_PARSE_ARGUMENTS(PARSE + CMAKE_PARSE_ARGUMENTS(PARSE "PLAIN_STYLE" "" "" @@ -230,6 +235,15 @@ FUNCTION(KOKKOS_SET_LIBRARY_PROPERTIES LIBRARY_NAME) $<$:${KOKKOS_COMPILE_OPTIONS}> ) + TARGET_COMPILE_DEFINITIONS( + ${LIBRARY_NAME} PUBLIC + $<$:${KOKKOS_COMPILE_DEFINITIONS}> + ) + + TARGET_LINK_LIBRARIES( + ${LIBRARY_NAME} PUBLIC ${KOKKOS_LINK_LIBRARIES} + ) + IF (KOKKOS_ENABLE_CUDA) TARGET_COMPILE_OPTIONS( ${LIBRARY_NAME} @@ -240,11 +254,18 @@ FUNCTION(KOKKOS_SET_LIBRARY_PROPERTIES LIBRARY_NAME) LIST(APPEND NODEDUP_CUDAFE_OPTIONS -Xcudafe ${OPT}) ENDFOREACH() TARGET_COMPILE_OPTIONS( - ${LIBRARY_NAME} + ${LIBRARY_NAME} PUBLIC $<$:${NODEDUP_CUDAFE_OPTIONS}> ) ENDIF() + IF (KOKKOS_ENABLE_HIP) + TARGET_COMPILE_OPTIONS( + ${LIBRARY_NAME} + PUBLIC $<$:${KOKKOS_AMDGPU_OPTIONS}> + ) + ENDIF() + LIST(LENGTH KOKKOS_XCOMPILER_OPTIONS XOPT_LENGTH) IF (XOPT_LENGTH GREATER 1) MESSAGE(FATAL_ERROR "CMake deduplication does not allow multiple -Xcompiler flags (${KOKKOS_XCOMPILER_OPTIONS}): will require Kokkos to upgrade to minimum 3.12") @@ -253,12 +274,12 @@ FUNCTION(KOKKOS_SET_LIBRARY_PROPERTIES LIBRARY_NAME) SET(NODEDUP_XCOMPILER_OPTIONS) FOREACH(OPT ${KOKKOS_XCOMPILER_OPTIONS}) #I have to do this for now because we can't guarantee 3.12 support - #I really should do this with the shell option - LIST(APPEND NODEDUP_XCOMPILER_OPTIONS -Xcompiler) - LIST(APPEND NODEDUP_XCOMPILER_OPTIONS ${OPT}) + #I really should do this with the shell option + LIST(APPEND NODEDUP_XCOMPILER_OPTIONS -Xcompiler) + LIST(APPEND NODEDUP_XCOMPILER_OPTIONS ${OPT}) ENDFOREACH() TARGET_COMPILE_OPTIONS( - ${LIBRARY_NAME} + ${LIBRARY_NAME} PUBLIC $<$:${NODEDUP_XCOMPILER_OPTIONS}> ) ENDIF() @@ -276,7 +297,7 @@ FUNCTION(KOKKOS_SET_LIBRARY_PROPERTIES LIBRARY_NAME) ENDFUNCTION() FUNCTION(KOKKOS_INTERNAL_ADD_LIBRARY LIBRARY_NAME) - CMAKE_PARSE_ARGUMENTS(PARSE + CMAKE_PARSE_ARGUMENTS(PARSE "STATIC;SHARED" "" "HEADERS;SOURCES" @@ -362,7 +383,7 @@ FUNCTION(KOKKOS_LIB_INCLUDE_DIRECTORIES TARGET) #ignore the target, tribits doesn't do anything directly with targets TRIBITS_INCLUDE_DIRECTORIES(${ARGN}) ELSE() #append to a list for later - KOKKOS_LIB_TYPE(${TARGET} INCTYPE) + KOKKOS_LIB_TYPE(${TARGET} INCTYPE) FOREACH(DIR ${ARGN}) TARGET_INCLUDE_DIRECTORIES(${TARGET} ${INCTYPE} $) ENDFOREACH() @@ -390,3 +411,15 @@ MACRO(KOKKOS_ADD_TEST_DIRECTORIES) ENDIF() ENDIF() ENDMACRO() + +MACRO(KOKKOS_ADD_EXAMPLE_DIRECTORIES) + if (KOKKOS_HAS_TRILINOS) + TRIBITS_ADD_EXAMPLE_DIRECTORIES(${ARGN}) + else() + IF(KOKKOS_ENABLE_EXAMPLES) + FOREACH(EXAMPLE_DIR ${ARGN}) + ADD_SUBDIRECTORY(${EXAMPLE_DIR}) + ENDFOREACH() + ENDIF() + endif() +ENDMACRO() diff --git a/lib/kokkos/cmake/msvc.cmake b/lib/kokkos/cmake/msvc.cmake new file mode 100644 index 0000000000..85421bdbaa --- /dev/null +++ b/lib/kokkos/cmake/msvc.cmake @@ -0,0 +1,11 @@ + +FUNCTION(kokkos_set_msvc_flags full_standard int_standard) + IF (CMAKE_CXX_EXTENSIONS) + SET(KOKKOS_CXX_STANDARD_FLAG "" PARENT_SCOPE) + SET(KOKKOS_CXX_INTERMEDIATE_STANDARD_FLAG "" PARENT_SCOPE) + ELSE() + SET(KOKKOS_CXX_STANDARD_FLAG "" PARENT_SCOPE) + SET(KOKKOS_CXX_INTERMEDIATE_STANDARD_FLAG "" PARENT_SCOPE) + ENDIF() +ENDFUNCTION() + diff --git a/lib/kokkos/cmake/tpls/FindTPLCUSPARSE.cmake b/lib/kokkos/cmake/tpls/FindTPLCUSPARSE.cmake index b8cee04804..a59868b73b 100644 --- a/lib/kokkos/cmake/tpls/FindTPLCUSPARSE.cmake +++ b/lib/kokkos/cmake/tpls/FindTPLCUSPARSE.cmake @@ -55,19 +55,9 @@ # Check for CUDA support -IF (NOT TPL_ENABLE_CUDA OR CUDA_VERSION VERSION_LESS "4.1") - MESSAGE(FATAL_ERROR "\nCUSPARSE: did not find acceptable version of CUDA libraries (4.1 or greater)") +IF (NOT TPL_ENABLE_CUDA) + MESSAGE(FATAL_ERROR "\nCUSPARSE requires CUDA") ELSE() - IF(CMAKE_VERSION VERSION_LESS "2.8.8") - # FindCUDA before CMake 2.8.8 does not find cusparse library; therefore, we must - find_library(CUDA_cusparse_LIBRARY - cusparse - HINTS ${CUDA_TOOLKIT_ROOT_DIR}/lib - ) - IF(CUDA_cusparse_LIBRARY STREQUAL "CUDA_cusparse_LIBRARY-NOTFOUND") - MESSAGE(FATAL_ERROR "\nCUSPARSE: could not find cuspasre library.") - ENDIF() - ENDIF() GLOBAL_SET(TPL_CUSPARSE_LIBRARY_DIRS) GLOBAL_SET(TPL_CUSPARSE_INCLUDE_DIRS ${TPL_CUDA_INCLUDE_DIRS}) GLOBAL_SET(TPL_CUSPARSE_LIBRARIES ${CUDA_cusparse_LIBRARY}) diff --git a/lib/kokkos/config/test_all_sandia b/lib/kokkos/config/test_all_sandia index d94c38cbc6..193a162a4e 100755 --- a/lib/kokkos/config/test_all_sandia +++ b/lib/kokkos/config/test_all_sandia @@ -76,19 +76,18 @@ CLANG_BUILD_LIST="Pthread,Serial,Pthread_Serial" CUDA_BUILD_LIST="Cuda_OpenMP,Cuda_Pthread,Cuda_Serial" CUDA_IBM_BUILD_LIST="Cuda_OpenMP,Cuda_Serial" -GCC_WARNING_FLAGS="-Wall,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wignored-qualifiers,-Wempty-body,-Wclobbered,-Wuninitialized" -IBM_WARNING_FLAGS="-Wall,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" -CLANG_WARNING_FLAGS="-Wall,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" -INTEL_WARNING_FLAGS="-Wall,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" -#CUDA_WARNING_FLAGS="-Wall,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" -CUDA_WARNING_FLAGS="-Wall,-Wshadow,-pedantic,-Wsign-compare,-Wtype-limits,-Wuninitialized" +GCC_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wignored-qualifiers,-Wempty-body,-Wclobbered,-Wuninitialized" +IBM_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" +CLANG_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" +INTEL_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" +#CUDA_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" +CUDA_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Wsign-compare,-Wtype-limits,-Wuninitialized" PGI_WARNING_FLAGS="" # Default. Machine specific can override. DEBUG=False ARGS="" CUSTOM_BUILD_LIST="" -QTHREADS_PATH="" DRYRUN=False BUILD_ONLY=False declare -i NUM_JOBS_TO_RUN_IN_PARALLEL=1 @@ -114,9 +113,6 @@ do --kokkos-path*) KOKKOS_PATH="${key#*=}" ;; - --qthreads-path*) - QTHREADS_PATH="${key#*=}" - ;; --build-list*) CUSTOM_BUILD_LIST="${key#*=}" ;; @@ -417,8 +413,8 @@ if [ "$PRINT_HELP" = "True" ]; then echo "--build-list=BUILD,BUILD,BUILD..." echo " Provide a comma-separated list of builds instead of running all builds" echo " Valid items:" - echo " OpenMP, Pthread, Qthreads, Serial, OpenMP_Serial, Pthread_Serial" - echo " Qthreads_Serial, Cuda_OpenMP, Cuda_Pthread, Cuda_Serial" + echo " OpenMP, Pthread, Serial, OpenMP_Serial, Pthread_Serial" + echo " Cuda_OpenMP, Cuda_Pthread, Cuda_Serial" echo "" echo "ARGS: list of expressions matching compilers to test" @@ -483,33 +479,6 @@ for ARG in $ARGS; do done done -# Check if Qthreads build requested. -HAVE_QTHREADS_BUILD="False" -if [ -n "$CUSTOM_BUILD_LIST" ]; then - if [[ "$CUSTOM_BUILD_LIST" = *Qthreads* ]]; then - HAVE_QTHREADS_BUILD="True" - fi -else - for COMPILER_DATA in "${COMPILERS[@]}"; do - ARR=($COMPILER_DATA) - BUILD_LIST=${ARR[2]} - if [[ "$BUILD_LIST" = *Qthreads* ]]; then - HAVE_QTHREADS_BUILD="True" - fi - done -fi - -# Ensure Qthreads path is set if Qthreads build is requested. -if [ "$HAVE_QTHREADS_BUILD" = "True" ]; then - if [ -z "$QTHREADS_PATH" ]; then - echo "Need to supply Qthreads path (--qthreads-path) when testing Qthreads backend." >&2 - exit 1 - else - # Strip trailing slashes from path. - QTHREADS_PATH=$(echo $QTHREADS_PATH | sed 's/\/*$//') - fi -fi - # # Functions. # @@ -627,14 +596,6 @@ single_build_and_test() { local extra_args=--with-hwloc=$(dirname $(dirname $(which hwloc-info))) fi - if [[ "$build" = *Qthreads* ]]; then - if [[ "$build_type" = hwloc* ]]; then - local extra_args="$extra_args --qthreads-path=${QTHREADS_PATH}_hwloc" - else - local extra_args="$extra_args --qthreads-path=$QTHREADS_PATH" - fi - fi - if [[ "$OPT_FLAG" = "" ]]; then OPT_FLAG="-O3" fi diff --git a/lib/kokkos/containers/performance_tests/CMakeLists.txt b/lib/kokkos/containers/performance_tests/CMakeLists.txt index ca76808190..1011cb8fd1 100644 --- a/lib/kokkos/containers/performance_tests/CMakeLists.txt +++ b/lib/kokkos/containers/performance_tests/CMakeLists.txt @@ -5,58 +5,42 @@ KOKKOS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../src ) IF(Kokkos_ENABLE_CUDA) SET(SOURCES - TestMain.cpp + TestMain.cpp TestCuda.cpp ) - KOKKOS_ADD_TEST_EXECUTABLE( PerfTestExec_Cuda + KOKKOS_ADD_EXECUTABLE_AND_TEST( PerformanceTest_Cuda SOURCES ${SOURCES} ) - - KOKKOS_ADD_TEST( NAME PerformanceTest_Cuda - EXE PerfTestExec_Cuda - ) ENDIF() IF(Kokkos_ENABLE_PTHREAD) SET(SOURCES - TestMain.cpp + TestMain.cpp TestThreads.cpp ) - KOKKOS_ADD_TEST_EXECUTABLE( PerfTestExec_Threads + KOKKOS_ADD_EXECUTABLE_AND_TEST( PerformanceTest_Threads SOURCES ${SOURCES} ) - - KOKKOS_ADD_TEST( NAME PerformanceTest_Threads - EXE PerfTestExec_Threads - ) ENDIF() IF(Kokkos_ENABLE_OPENMP) SET(SOURCES - TestMain.cpp + TestMain.cpp TestOpenMP.cpp ) - KOKKOS_ADD_TEST_EXECUTABLE( PerfTestExec_OpenMP + KOKKOS_ADD_EXECUTABLE_AND_TEST( PerformanceTest_OpenMP SOURCES ${SOURCES} ) - - KOKKOS_ADD_TEST( NAME PerformanceTest_OpenMP - EXE PerfTestExec_OpenMP - ) ENDIF() IF(Kokkos_ENABLE_HPX) SET(SOURCES - TestMain.cpp + TestMain.cpp TestHPX.cpp ) - KOKKOS_ADD_TEST_EXECUTABLE( PerfTestExec_HPX + KOKKOS_ADD_EXECUTABLE_AND_TEST( PerformanceTest_HPX SOURCES ${SOURCES} ) - - KOKKOS_ADD_TEST( NAME PerformanceTest_HPX - EXE PerfTestExec_HPX - ) ENDIF() diff --git a/lib/kokkos/containers/src/Kokkos_Bitset.hpp b/lib/kokkos/containers/src/Kokkos_Bitset.hpp index 3596c7653a..ab75fc1e1d 100644 --- a/lib/kokkos/containers/src/Kokkos_Bitset.hpp +++ b/lib/kokkos/containers/src/Kokkos_Bitset.hpp @@ -103,19 +103,19 @@ class Bitset { } } - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION Bitset(const Bitset&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION Bitset& operator=(const Bitset&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION Bitset(Bitset&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION Bitset& operator=(Bitset&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~Bitset() = default; /// number of bits in the set diff --git a/lib/kokkos/containers/src/Kokkos_DualView.hpp b/lib/kokkos/containers/src/Kokkos_DualView.hpp index d8a3ebc1ae..ede7d9a31f 100644 --- a/lib/kokkos/containers/src/Kokkos_DualView.hpp +++ b/lib/kokkos/containers/src/Kokkos_DualView.hpp @@ -238,6 +238,53 @@ class DualView : public ViewTraits { #endif } + /// \brief Constructor that allocates View objects on both host and device. + /// + /// This constructor works like the analogous constructor of View. + /// The first arguments are wrapped up in a ViewCtor class, this allows + /// for a label, without initializing, and all of the other things that can + /// be wrapped up in a Ctor class. + /// The arguments that follow are the dimensions of the + /// View objects. For example, if the View has three dimensions, + /// the first three integer arguments will be nonzero, and you may + /// omit the integer arguments that follow. + template + DualView(const Impl::ViewCtorProp& arg_prop, + typename std::enable_if::has_pointer, + size_t>::type const n0 = + KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n1 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n2 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n3 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n4 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n5 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n6 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n7 = KOKKOS_IMPL_CTOR_DEFAULT_ARG) + : d_view(arg_prop, n0, n1, n2, n3, n4, n5, n6, n7), + h_view(create_mirror_view(d_view)) // without UVM, host View mirrors + , + modified_flags(t_modified_flags("DualView::modified_flags")) { +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + modified_host = t_modified_flag(modified_flags, 0); + modified_device = t_modified_flag(modified_flags, 1); +#endif + } + + explicit inline DualView(const ViewAllocateWithoutInitializing& arg_prop, + const size_t arg_N0 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t arg_N1 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t arg_N2 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t arg_N3 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t arg_N4 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t arg_N5 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t arg_N6 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t arg_N7 = KOKKOS_IMPL_CTOR_DEFAULT_ARG) + : DualView(Impl::ViewCtorProp( + arg_prop.label, Kokkos::WithoutInitializing), + arg_N0, arg_N1, arg_N2, arg_N3, arg_N4, arg_N5, arg_N6, + arg_N7) {} + //! Copy constructor (shallow copy) template DualView(const DualView& src) @@ -470,23 +517,43 @@ class DualView : public ViewTraits { /// as modified, by calling the modify() method with the /// appropriate template parameter. template - void sync(const typename Impl::enable_if< + void sync(const typename std::enable_if< (std::is_same::value) || (std::is_same::value), int>::type& = 0) { - if (modified_flags.data() == NULL) return; + if (modified_flags.data() == nullptr) return; int dev = get_device_side(); if (dev == 1) { // if Device is the same as DualView's device type if ((modified_flags(0) > 0) && (modified_flags(0) >= modified_flags(1))) { +#ifdef KOKKOS_ENABLE_CUDA + if (std::is_same::value) { + if (d_view.data() == h_view.data()) + Kokkos::Impl::cuda_prefetch_pointer( + Kokkos::Cuda(), d_view.data(), + sizeof(typename t_dev::value_type) * d_view.span(), true); + } +#endif + deep_copy(d_view, h_view); modified_flags(0) = modified_flags(1) = 0; } } if (dev == 0) { // hopefully Device is the same as DualView's host type if ((modified_flags(1) > 0) && (modified_flags(1) >= modified_flags(0))) { +#ifdef KOKKOS_ENABLE_CUDA + if (std::is_same::value) { + if (d_view.data() == h_view.data()) + Kokkos::Impl::cuda_prefetch_pointer( + Kokkos::Cuda(), d_view.data(), + sizeof(typename t_dev::value_type) * d_view.span(), false); + } +#endif + deep_copy(h_view, d_view); modified_flags(0) = modified_flags(1) = 0; } @@ -499,12 +566,12 @@ class DualView : public ViewTraits { } template - void sync(const typename Impl::enable_if< + void sync(const typename std::enable_if< (!std::is_same::value) || (std::is_same::value), int>::type& = 0) { - if (modified_flags.data() == NULL) return; + if (modified_flags.data() == nullptr) return; int dev = get_device_side(); @@ -527,8 +594,18 @@ class DualView : public ViewTraits { typename traits::non_const_data_type>::value) Impl::throw_runtime_exception( "Calling sync_host on a DualView with a const datatype."); - if (modified_flags.data() == NULL) return; + if (modified_flags.data() == nullptr) return; if (modified_flags(1) > modified_flags(0)) { +#ifdef KOKKOS_ENABLE_CUDA + if (std::is_same::value) { + if (d_view.data() == h_view.data()) + Kokkos::Impl::cuda_prefetch_pointer( + Kokkos::Cuda(), d_view.data(), + sizeof(typename t_dev::value_type) * d_view.span(), false); + } +#endif + deep_copy(h_view, d_view); modified_flags(1) = modified_flags(0) = 0; } @@ -539,8 +616,18 @@ class DualView : public ViewTraits { typename traits::non_const_data_type>::value) Impl::throw_runtime_exception( "Calling sync_device on a DualView with a const datatype."); - if (modified_flags.data() == NULL) return; + if (modified_flags.data() == nullptr) return; if (modified_flags(0) > modified_flags(1)) { +#ifdef KOKKOS_ENABLE_CUDA + if (std::is_same::value) { + if (d_view.data() == h_view.data()) + Kokkos::Impl::cuda_prefetch_pointer( + Kokkos::Cuda(), d_view.data(), + sizeof(typename t_dev::value_type) * d_view.span(), true); + } +#endif + deep_copy(d_view, h_view); modified_flags(1) = modified_flags(0) = 0; } @@ -548,7 +635,7 @@ class DualView : public ViewTraits { template bool need_sync() const { - if (modified_flags.data() == NULL) return false; + if (modified_flags.data() == nullptr) return false; int dev = get_device_side(); if (dev == 1) { // if Device is the same as DualView's device type @@ -565,12 +652,12 @@ class DualView : public ViewTraits { } inline bool need_sync_host() const { - if (modified_flags.data() == NULL) return false; + if (modified_flags.data() == nullptr) return false; return modified_flags(0) < modified_flags(1); } inline bool need_sync_device() const { - if (modified_flags.data() == NULL) return false; + if (modified_flags.data() == nullptr) return false; return modified_flags(1) < modified_flags(0); } @@ -581,7 +668,7 @@ class DualView : public ViewTraits { /// data as modified. template void modify() { - if (modified_flags.data() == NULL) return; + if (modified_flags.data() == nullptr) return; int dev = get_device_side(); if (dev == 1) { // if Device is the same as DualView's device type @@ -612,7 +699,7 @@ class DualView : public ViewTraits { } inline void modify_host() { - if (modified_flags.data() != NULL) { + if (modified_flags.data() != nullptr) { modified_flags(0) = (modified_flags(1) > modified_flags(0) ? modified_flags(1) : modified_flags(0)) + @@ -631,7 +718,7 @@ class DualView : public ViewTraits { } inline void modify_device() { - if (modified_flags.data() != NULL) { + if (modified_flags.data() != nullptr) { modified_flags(1) = (modified_flags(1) > modified_flags(0) ? modified_flags(1) : modified_flags(0)) + @@ -650,7 +737,7 @@ class DualView : public ViewTraits { } inline void clear_sync_state() { - if (modified_flags.data() != NULL) + if (modified_flags.data() != nullptr) modified_flags(1) = modified_flags(0) = 0; } @@ -675,7 +762,7 @@ class DualView : public ViewTraits { h_view = create_mirror_view(d_view); /* Reset dirty flags */ - if (modified_flags.data() == NULL) { + if (modified_flags.data() == nullptr) { modified_flags = t_modified_flags("DualView::modified_flags"); } else modified_flags(1) = modified_flags(0) = 0; @@ -693,7 +780,7 @@ class DualView : public ViewTraits { const size_t n5 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, const size_t n6 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, const size_t n7 = KOKKOS_IMPL_CTOR_DEFAULT_ARG) { - if (modified_flags.data() == NULL) { + if (modified_flags.data() == nullptr) { modified_flags = t_modified_flags("DualView::modified_flags"); } if (modified_flags(1) >= modified_flags(0)) { @@ -866,4 +953,27 @@ void deep_copy( } // namespace Kokkos +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { + +// +// Non-member resize and realloc +// + +template +void resize(DualView& dv, Args&&... args) noexcept( + noexcept(dv.resize(std::forward(args)...))) { + dv.resize(std::forward(args)...); +} + +template +void realloc(DualView& dv, Args&&... args) noexcept( + noexcept(dv.realloc(std::forward(args)...))) { + dv.realloc(std::forward(args)...); +} + +} // end namespace Kokkos + #endif diff --git a/lib/kokkos/containers/src/Kokkos_DynRankView.hpp b/lib/kokkos/containers/src/Kokkos_DynRankView.hpp index 0ceb9d5d39..4ab212d7b9 100644 --- a/lib/kokkos/containers/src/Kokkos_DynRankView.hpp +++ b/lib/kokkos/containers/src/Kokkos_DynRankView.hpp @@ -293,6 +293,7 @@ KOKKOS_INLINE_FUNCTION void dyn_rank_view_verify_operator_bounds( dyn_rank_view_error_operator_bounds<0>(buffer + n, LEN - n, map, args...); Kokkos::Impl::throw_runtime_exception(std::string(buffer)); #else + (void)tracker; Kokkos::abort("DynRankView bounds error"); #endif } @@ -1065,8 +1066,8 @@ class DynRankView : public ViewTraits { //---------------------------------------- // Standard constructor, destructor, and assignment operators... - KOKKOS_INLINE_FUNCTION - ~DynRankView() {} + KOKKOS_DEFAULTED_FUNCTION + ~DynRankView() = default; KOKKOS_INLINE_FUNCTION DynRankView() : m_track(), m_map(), m_rank() {} // Default ctor @@ -1773,7 +1774,7 @@ struct DynRankViewRemap { const Kokkos::Impl::ParallelFor closure( *this, Policy(0, n0)); closure.execute(); - // Kokkos::fence(); // ?? + // ExecSpace().fence(); // ?? } KOKKOS_INLINE_FUNCTION @@ -1806,7 +1807,8 @@ inline void deep_copy( const DynRankView& dst, typename ViewTraits::const_value_type& value, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { static_assert( std::is_same::non_const_value_type, typename ViewTraits::value_type>::value, @@ -1843,7 +1845,7 @@ inline void deep_copy( (std::is_same::value && std::is_same::value && (Kokkos::is_dyn_rank_view::value || - Kokkos::is_dyn_rank_view::value))>::type* = 0) { + Kokkos::is_dyn_rank_view::value))>::type* = nullptr) { static_assert( std::is_same::value, @@ -2009,7 +2011,7 @@ inline typename DynRankView::HostMirror create_mirror( typename std::enable_if< std::is_same::specialize, void>::value && !std::is_same::array_layout, - Kokkos::LayoutStride>::value>::type* = 0) { + Kokkos::LayoutStride>::value>::type* = nullptr) { typedef DynRankView src_type; typedef typename src_type::HostMirror dst_type; @@ -2036,7 +2038,8 @@ template typename Impl::MirrorDRVType::view_type create_mirror( const Space&, const Kokkos::DynRankView& src, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { return typename Impl::MirrorDRVType::view_type( src.label(), Impl::reconstructLayout(src.layout(), src.rank())); } @@ -2050,7 +2053,7 @@ inline typename DynRankView::HostMirror create_mirror_view( typename DynRankView::HostMirror::memory_space>::value && std::is_same::data_type, typename DynRankView::HostMirror::data_type>:: - value)>::type* = 0) { + value)>::type* = nullptr) { return src; } @@ -2072,7 +2075,8 @@ template typename Impl::MirrorDRViewType::view_type create_mirror_view( const Space&, const Kokkos::DynRankView& src, typename std::enable_if< - Impl::MirrorDRViewType::is_same_memspace>::type* = 0) { + Impl::MirrorDRViewType::is_same_memspace>::type* = + nullptr) { return src; } @@ -2094,7 +2098,8 @@ create_mirror_view_and_copy( const Space&, const Kokkos::DynRankView& src, std::string const& name = "", typename std::enable_if< - Impl::MirrorDRViewType::is_same_memspace>::type* = 0) { + Impl::MirrorDRViewType::is_same_memspace>::type* = + nullptr) { (void)name; return src; } @@ -2139,7 +2144,7 @@ inline void resize(DynRankView& v, static_assert(Kokkos::ViewTraits::is_managed, "Can only resize managed views"); - drview_type v_resized(v.label(), n0, n1, n2, n3, n4, n5, n6); + drview_type v_resized(v.label(), n0, n1, n2, n3, n4, n5, n6, n7); Kokkos::Impl::DynRankViewRemap(v_resized, v); @@ -2166,7 +2171,7 @@ inline void realloc(DynRankView& v, const std::string label = v.label(); v = drview_type(); // Deallocate first, if the only view to allocation - v = drview_type(label, n0, n1, n2, n3, n4, n5, n6); + v = drview_type(label, n0, n1, n2, n3, n4, n5, n6, n7); } } // namespace Kokkos diff --git a/lib/kokkos/containers/src/Kokkos_DynamicView.hpp b/lib/kokkos/containers/src/Kokkos_DynamicView.hpp index 35a64d164f..ebbbcc5e8c 100644 --- a/lib/kokkos/containers/src/Kokkos_DynamicView.hpp +++ b/lib/kokkos/containers/src/Kokkos_DynamicView.hpp @@ -70,10 +70,10 @@ struct ChunkArraySpace { using memory_space = typename Kokkos::CudaUVMSpace; }; #endif -#ifdef KOKKOS_ENABLE_ROCM +#ifdef KOKKOS_ENABLE_HIP template <> -struct ChunkArraySpace { - using memory_space = typename Kokkos::Experimental::ROCmHostPinnedSpace; +struct ChunkArraySpace { + using memory_space = typename Kokkos::Experimental::HIPHostPinnedSpace; }; #endif } // end namespace Impl @@ -248,8 +248,8 @@ class DynamicView : public Kokkos::ViewTraits { //---------------------------------------- template - KOKKOS_INLINE_FUNCTION reference_type operator()(const I0& i0, - const Args&... args) const { + KOKKOS_INLINE_FUNCTION reference_type + operator()(const I0& i0, const Args&... /*args*/) const { static_assert(Kokkos::Impl::are_integral::value, "Indices must be integral type"); @@ -265,7 +265,7 @@ class DynamicView : public Kokkos::ViewTraits { // If not bounds checking then we assume a non-zero pointer is valid. #if !defined(KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK) - if (0 == *ch) + if (nullptr == *ch) #endif { // Verify that allocation of the requested chunk in in progress. @@ -280,7 +280,7 @@ class DynamicView : public Kokkos::ViewTraits { // Allocation of this chunk is in progress // so wait for allocation to complete. - while (0 == *ch) + while (nullptr == *ch) ; } @@ -325,7 +325,7 @@ class DynamicView : public Kokkos::ViewTraits { --*pc; typename traits::memory_space().deallocate( m_chunks[*pc], sizeof(local_value_type) << m_chunk_shift); - m_chunks[*pc] = 0; + m_chunks[*pc] = nullptr; } } // *m_chunks[m_chunk_max+1] stores the 'extent' requested by resize @@ -366,10 +366,10 @@ class DynamicView : public Kokkos::ViewTraits { // Initialize or destroy array of chunk pointers. // Two entries beyond the max chunks are allocation counters. inline void operator()(unsigned i) const { - if (m_destroy && i < m_chunk_max && 0 != m_chunks[i]) { + if (m_destroy && i < m_chunk_max && nullptr != m_chunks[i]) { typename traits::memory_space().deallocate(m_chunks[i], m_chunk_size); } - m_chunks[i] = 0; + m_chunks[i] = nullptr; } void execute(bool arg_destroy) { @@ -419,7 +419,7 @@ class DynamicView : public Kokkos::ViewTraits { const unsigned min_chunk_size, const unsigned max_extent) : m_track(), - m_chunks(0) + m_chunks(nullptr) // The chunk size is guaranteed to be a power of two , m_chunk_shift(Kokkos::Impl::integral_power_of_two_that_contains( @@ -528,7 +528,7 @@ struct CommonSubview, typedef SrcType src_subview_type; dst_subview_type dst_sub; src_subview_type src_sub; - CommonSubview(const DstType& dst, const SrcType& src, const Arg0& arg0) + CommonSubview(const DstType& dst, const SrcType& src, const Arg0& /*arg0*/) : dst_sub(dst), src_sub(src) {} }; diff --git a/lib/kokkos/containers/src/Kokkos_ErrorReporter.hpp b/lib/kokkos/containers/src/Kokkos_ErrorReporter.hpp index 25335771e4..e07c386b7d 100644 --- a/lib/kokkos/containers/src/Kokkos_ErrorReporter.hpp +++ b/lib/kokkos/containers/src/Kokkos_ErrorReporter.hpp @@ -187,7 +187,7 @@ template void ErrorReporter::resize(const size_t new_size) { m_reports.resize(new_size); m_reporters.resize(new_size); - Kokkos::fence(); + typename DeviceType::execution_space().fence(); } } // namespace Experimental diff --git a/lib/kokkos/containers/src/Kokkos_OffsetView.hpp b/lib/kokkos/containers/src/Kokkos_OffsetView.hpp index a1fe793cc5..c3c66f0d7f 100644 --- a/lib/kokkos/containers/src/Kokkos_OffsetView.hpp +++ b/lib/kokkos/containers/src/Kokkos_OffsetView.hpp @@ -362,19 +362,18 @@ class OffsetView : public ViewTraits { //---------------------------------------- private: - enum { - is_layout_left = - std::is_same::value, + static constexpr bool is_layout_left = + std::is_same::value; - is_layout_right = - std::is_same::value, + static constexpr bool is_layout_right = + std::is_same::value; - is_layout_stride = std::is_same::value, + static constexpr bool is_layout_stride = + std::is_same::value; - is_default_map = std::is_same::value && - (is_layout_left || is_layout_right || is_layout_stride) - }; + static constexpr bool is_default_map = + std::is_same::value && + (is_layout_left || is_layout_right || is_layout_stride); template ::accessible> @@ -804,8 +803,8 @@ class OffsetView : public ViewTraits { //---------------------------------------- // Standard destructor, constructors, and assignment operators - KOKKOS_INLINE_FUNCTION - ~OffsetView() {} + KOKKOS_DEFAULTED_FUNCTION + ~OffsetView() = default; KOKKOS_INLINE_FUNCTION OffsetView() : m_track(), m_map() { @@ -1317,7 +1316,7 @@ KOKKOS_INLINE_FUNCTION KOKKOS_INLINE_FUNCTION Kokkos::Impl::ALL_t shift_input(const Kokkos::Impl::ALL_t arg, - const int64_t offset) { + const int64_t /*offset*/) { return arg; } @@ -1347,9 +1346,9 @@ KOKKOS_INLINE_FUNCTION void map_arg_to_new_begin( template KOKKOS_INLINE_FUNCTION void map_arg_to_new_begin( - const size_t i, Kokkos::Array& subviewBegins, - typename std::enable_if::type shiftedArg, const Arg arg, - const A viewBegins, size_t& counter) {} + const size_t /*i*/, Kokkos::Array& /*subviewBegins*/, + typename std::enable_if::type /*shiftedArg*/, + const Arg /*arg*/, const A /*viewBegins*/, size_t& /*counter*/) {} template KOKKOS_INLINE_FUNCTION @@ -1832,7 +1831,8 @@ inline void deep_copy( const OffsetView& dst, typename ViewTraits::const_value_type& value, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { static_assert( std::is_same::non_const_value_type, typename ViewTraits::value_type>::value, @@ -1846,7 +1846,8 @@ template inline void deep_copy( const OffsetView& dst, const OffsetView& value, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { static_assert( std::is_same::value_type, typename ViewTraits::non_const_value_type>::value, @@ -1859,7 +1860,8 @@ template inline void deep_copy( const OffsetView& dst, const View& value, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { static_assert( std::is_same::value_type, typename ViewTraits::non_const_value_type>::value, @@ -1873,7 +1875,8 @@ template inline void deep_copy( const View& dst, const OffsetView& value, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { static_assert( std::is_same::value_type, typename ViewTraits::non_const_value_type>::value, @@ -2011,7 +2014,7 @@ create_mirror_view( std::is_same< typename Kokkos::Experimental::OffsetView::data_type, typename Kokkos::Experimental::OffsetView< - T, P...>::HostMirror::data_type>::value)>::type* = 0) { + T, P...>::HostMirror::data_type>::value)>::type* = nullptr) { return src; } diff --git a/lib/kokkos/containers/src/Kokkos_ScatterView.hpp b/lib/kokkos/containers/src/Kokkos_ScatterView.hpp index ec3a966325..eb3bc1f2bc 100644 --- a/lib/kokkos/containers/src/Kokkos_ScatterView.hpp +++ b/lib/kokkos/containers/src/Kokkos_ScatterView.hpp @@ -171,24 +171,41 @@ struct DefaultContribution +struct DefaultDuplication { + enum : int { value = Kokkos::Experimental::ScatterNonDuplicated }; +}; +template <> +struct DefaultContribution { + enum : int { value = Kokkos::Experimental::ScatterAtomic }; +}; +template <> +struct DefaultContribution { + enum : int { value = Kokkos::Experimental::ScatterAtomic }; +}; +#endif + /* ScatterValue is the object returned by the access operator() of ScatterAccess, This class inherits from the Sum<> reducer and it wraps join(dest, src) with convenient operator+=, etc. Note the addition of update(ValueType const& rhs) and reset() so that all reducers can have common functions See ReduceDuplicates and ResetDuplicates ) */ -template +template struct ScatterValue; -template -struct ScatterValue +struct ScatterValue - : Sum { + : Sum { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Sum(value_in) {} + : Sum(value_in) {} KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ScatterValue&& other) - : Sum(other.reference()) {} + : Sum(other.reference()) {} KOKKOS_FORCEINLINE_FUNCTION void operator+=(ValueType const& rhs) { this->join(this->reference(), rhs); } @@ -206,13 +223,13 @@ struct ScatterValue -struct ScatterValue +struct ScatterValue - : Sum { + : Sum { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Sum(value_in) {} + : Sum(value_in) {} KOKKOS_FORCEINLINE_FUNCTION void operator+=(ValueType const& rhs) { this->join(this->reference(), rhs); @@ -244,15 +261,15 @@ struct ScatterValue -struct ScatterValue +struct ScatterValue - : Prod { + : Prod { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Prod(value_in) {} + : Prod(value_in) {} KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ScatterValue&& other) - : Prod(other.reference()) {} + : Prod(other.reference()) {} KOKKOS_FORCEINLINE_FUNCTION void operator*=(ValueType const& rhs) { this->join(this->reference(), rhs); } @@ -271,13 +288,13 @@ struct ScatterValue -struct ScatterValue +struct ScatterValue - : Prod { + : Prod { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Prod(value_in) {} + : Prod(value_in) {} KOKKOS_FORCEINLINE_FUNCTION void operator*=(ValueType const& rhs) { this->join(this->reference(), rhs); @@ -320,15 +337,15 @@ struct ScatterValue -struct ScatterValue +struct ScatterValue - : Min { + : Min { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Min(value_in) {} + : Min(value_in) {} KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ScatterValue&& other) - : Min(other.reference()) {} + : Min(other.reference()) {} KOKKOS_FORCEINLINE_FUNCTION void update(ValueType const& rhs) { this->join(this->reference(), rhs); } @@ -340,13 +357,13 @@ struct ScatterValue -struct ScatterValue +struct ScatterValue - : Min { + : Min { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Min(value_in) {} + : Min(value_in) {} KOKKOS_FORCEINLINE_FUNCTION void atomic_min(ValueType& dest, const ValueType& src) const { @@ -382,15 +399,15 @@ struct ScatterValue -struct ScatterValue +struct ScatterValue - : Max { + : Max { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Max(value_in) {} + : Max(value_in) {} KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ScatterValue&& other) - : Max(other.reference()) {} + : Max(other.reference()) {} KOKKOS_FORCEINLINE_FUNCTION void update(ValueType const& rhs) { this->join(this->reference(), rhs); } @@ -402,13 +419,13 @@ struct ScatterValue -struct ScatterValue +struct ScatterValue - : Max { + : Max { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Max(value_in) {} + : Max(value_in) {} KOKKOS_FORCEINLINE_FUNCTION void atomic_max(ValueType& dest, const ValueType& src) const { @@ -558,6 +575,8 @@ struct ReduceDuplicatesBase { Kokkos::Profiling::beginParallelFor(std::string("reduce_") + name, 0, &kpID); } +#else + (void)name; #endif typedef RangePolicy policy_type; typedef Kokkos::Impl::ParallelFor closure_type; @@ -584,8 +603,9 @@ struct ReduceDuplicates : Base(src_in, dst_in, stride_in, start_in, n_in, name) {} KOKKOS_FORCEINLINE_FUNCTION void operator()(size_t i) const { for (size_t j = Base::start; j < Base::n; ++j) { - ScatterValue sv( - Base::dst[i]); + ScatterValue + sv(Base::dst[i]); sv.update(Base::src[i + Base::stride * j]); } } @@ -607,6 +627,8 @@ struct ResetDuplicatesBase { Kokkos::Profiling::beginParallelFor(std::string("reduce_") + name, 0, &kpID); } +#else + (void)name; #endif typedef RangePolicy policy_type; typedef Kokkos::Impl::ParallelFor closure_type; @@ -630,8 +652,9 @@ struct ResetDuplicates : public ResetDuplicatesBase { ResetDuplicates(ValueType* data_in, size_t size_in, std::string const& name) : Base(data_in, size_in, name) {} KOKKOS_FORCEINLINE_FUNCTION void operator()(size_t i) const { - ScatterValue sv( - Base::data[i]); + ScatterValue + sv(Base::data[i]); sv.reset(); } }; @@ -768,8 +791,8 @@ class ScatterAccess view_type; typedef typename view_type::original_value_type original_value_type; - typedef Kokkos::Impl::Experimental::ScatterValue + typedef Kokkos::Impl::Experimental::ScatterValue< + original_value_type, Op, DeviceType, override_contribution> value_type; KOKKOS_INLINE_FUNCTION @@ -777,13 +800,8 @@ class ScatterAccess KOKKOS_FORCEINLINE_FUNCTION value_type operator()(Args... args) const { @@ -1190,8 +1208,8 @@ class ScatterAccess view_type; typedef typename view_type::original_value_type original_value_type; - typedef Kokkos::Impl::Experimental::ScatterValue + typedef Kokkos::Impl::Experimental::ScatterValue< + original_value_type, Op, DeviceType, override_contribution> value_type; KOKKOS_FORCEINLINE_FUNCTION diff --git a/lib/kokkos/containers/src/Kokkos_StaticCrsGraph.hpp b/lib/kokkos/containers/src/Kokkos_StaticCrsGraph.hpp index 26c16c4e00..c11413d627 100644 --- a/lib/kokkos/containers/src/Kokkos_StaticCrsGraph.hpp +++ b/lib/kokkos/containers/src/Kokkos_StaticCrsGraph.hpp @@ -112,7 +112,7 @@ struct StaticCrsGraphBalancerFunctor { } } else { if ((count >= (current_block + 1) * cost_per_workset) || - (iRow + 2 == row_offsets.extent(0))) { + (iRow + 2 == int_type(row_offsets.extent(0)))) { if (end_block > current_block + 1) { int_type num_block = end_block - current_block; row_block_offsets(current_block + 1) = iRow; @@ -358,8 +358,8 @@ class StaticCrsGraph { /** \brief Destroy this view of the array. * If the last view then allocated memory is deallocated. */ - KOKKOS_INLINE_FUNCTION - ~StaticCrsGraph() {} + KOKKOS_DEFAULTED_FUNCTION + ~StaticCrsGraph() = default; /** \brief Return number of rows in the graph */ @@ -396,7 +396,7 @@ class StaticCrsGraph { const data_type count = static_cast(row_map(i + 1) - start); if (count == 0) { - return GraphRowViewConst(NULL, 1, 0); + return GraphRowViewConst(nullptr, 1, 0); } else { return GraphRowViewConst(entries, 1, count, start); } @@ -414,9 +414,10 @@ class StaticCrsGraph { row_map_type, View > partitioner(row_map, block_offsets, fix_cost_per_row, num_blocks); - Kokkos::parallel_for(Kokkos::RangePolicy(0, numRows()), + Kokkos::parallel_for("Kokkos::StaticCrsGraph::create_block_partitioning", + Kokkos::RangePolicy(0, numRows()), partitioner); - Kokkos::fence(); + typename device_type::execution_space().fence(); row_block_offsets = block_offsets; } @@ -522,7 +523,8 @@ DataType maximum_entry(const StaticCrsGraph FunctorType; DataType result = 0; - Kokkos::parallel_reduce(graph.entries.extent(0), FunctorType(graph), result); + Kokkos::parallel_reduce("Kokkos::maximum_entry", graph.entries.extent(0), + FunctorType(graph), result); return result; } diff --git a/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp b/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp index 32c04996bb..6f0434dd04 100644 --- a/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp +++ b/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp @@ -201,9 +201,9 @@ class UnorderedMapInsertResult { /// template ::type>, + typename Hasher = pod_hash::type>, typename EqualTo = - pod_equal_to::type> > + pod_equal_to::type> > class UnorderedMap { private: typedef typename ViewTraits::host_mirror_space @@ -215,13 +215,13 @@ class UnorderedMap { // key_types typedef Key declared_key_type; - typedef typename Impl::remove_const::type key_type; - typedef typename Impl::add_const::type const_key_type; + typedef typename std::remove_const::type key_type; + typedef typename std::add_const::type const_key_type; // value_types typedef Value declared_value_type; - typedef typename Impl::remove_const::type value_type; - typedef typename Impl::add_const::type const_value_type; + typedef typename std::remove_const::type value_type; + typedef typename std::add_const::type const_value_type; typedef Device device_type; typedef typename Device::execution_space execution_space; @@ -296,25 +296,13 @@ class UnorderedMap { //! \name Public member functions //@{ - UnorderedMap() - : m_bounded_insert(), - m_hasher(), - m_equal_to(), - m_size(), - m_available_indexes(), - m_hash_lists(), - m_next_index(), - m_keys(), - m_values(), - m_scalars() {} - /// \brief Constructor /// /// \param capacity_hint [in] Initial guess of how many unique keys will be /// inserted into the map \param hash [in] Hasher function for \c Key /// instances. The /// default value usually suffices. - UnorderedMap(size_type capacity_hint, hasher_type hasher = hasher_type(), + UnorderedMap(size_type capacity_hint = 0, hasher_type hasher = hasher_type(), equal_to_type equal_to = equal_to_type()) : m_bounded_insert(true), m_hasher(hasher), @@ -689,7 +677,7 @@ class UnorderedMap { template UnorderedMap( UnorderedMap const &src, - typename Impl::enable_if< + typename std::enable_if< Impl::UnorderedMapCanAssign::value, int>::type = 0) @@ -705,7 +693,7 @@ class UnorderedMap { m_scalars(src.m_scalars) {} template - typename Impl::enable_if< + typename std::enable_if< Impl::UnorderedMapCanAssign::value, declared_map_type &>::type @@ -724,9 +712,9 @@ class UnorderedMap { } template - typename Impl::enable_if< - std::is_same::type, key_type>::value && - std::is_same::type, + typename std::enable_if< + std::is_same::type, key_type>::value && + std::is_same::type, value_type>::value>::type create_copy_view( UnorderedMap const &src) { diff --git a/lib/kokkos/containers/src/Kokkos_Vector.hpp b/lib/kokkos/containers/src/Kokkos_Vector.hpp index 0641eeba82..02c3e44fc4 100644 --- a/lib/kokkos/containers/src/Kokkos_Vector.hpp +++ b/lib/kokkos/containers/src/Kokkos_Vector.hpp @@ -118,12 +118,12 @@ class vector : public DualView { if (DV::template need_sync()) { set_functor_host f(DV::h_view, val); - parallel_for(n, f); + parallel_for("Kokkos::vector::assign", n, f); typename DV::t_host::execution_space().fence(); DV::template modify(); } else { set_functor f(DV::d_view, val); - parallel_for(n, f); + parallel_for("Kokkos::vector::assign", n, f); typename DV::t_dev::execution_space().fence(); DV::template modify(); } diff --git a/lib/kokkos/containers/src/impl/Kokkos_Bitset_impl.hpp b/lib/kokkos/containers/src/impl/Kokkos_Bitset_impl.hpp index f5fa4d518a..6fd4319a82 100644 --- a/lib/kokkos/containers/src/impl/Kokkos_Bitset_impl.hpp +++ b/lib/kokkos/containers/src/impl/Kokkos_Bitset_impl.hpp @@ -77,7 +77,8 @@ struct BitsetCount { size_type apply() const { size_type count = 0u; - parallel_reduce(m_bitset.m_blocks.extent(0), *this, count); + parallel_reduce("Kokkos::Impl::BitsetCount::apply", + m_bitset.m_blocks.extent(0), *this, count); return count; } diff --git a/lib/kokkos/containers/src/impl/Kokkos_StaticCrsGraph_factory.hpp b/lib/kokkos/containers/src/impl/Kokkos_StaticCrsGraph_factory.hpp index d644c57c0a..a5fb9990f6 100644 --- a/lib/kokkos/containers/src/impl/Kokkos_StaticCrsGraph_factory.hpp +++ b/lib/kokkos/containers/src/impl/Kokkos_StaticCrsGraph_factory.hpp @@ -58,8 +58,8 @@ inline typename StaticCrsGraph& view, - typename Impl::enable_if::is_hostspace>::type* = 0) { + typename std::enable_if::is_hostspace>::type* = 0) { return view; } #else @@ -70,8 +70,8 @@ inline typename StaticCrsGraph& view, - typename Impl::enable_if::is_hostspace>::type* = 0) { + typename std::enable_if::is_hostspace>::type* = 0) { return view; } #endif @@ -128,8 +128,8 @@ inline typename StaticCrsGraph& view, - typename Impl::enable_if::is_hostspace>::type* = 0) + typename std::enable_if::is_hostspace>::type* = 0) #else template @@ -138,8 +138,8 @@ inline typename StaticCrsGraph& view, - typename Impl::enable_if::is_hostspace>::type* = 0) + typename std::enable_if::is_hostspace>::type* = 0) #endif { return create_mirror(view); diff --git a/lib/kokkos/containers/src/impl/Kokkos_UnorderedMap_impl.hpp b/lib/kokkos/containers/src/impl/Kokkos_UnorderedMap_impl.hpp index 55e76c424d..813936575c 100644 --- a/lib/kokkos/containers/src/impl/Kokkos_UnorderedMap_impl.hpp +++ b/lib/kokkos/containers/src/impl/Kokkos_UnorderedMap_impl.hpp @@ -71,7 +71,10 @@ struct UnorderedMapRehash { UnorderedMapRehash(map_type const& dst, const_map_type const& src) : m_dst(dst), m_src(src) {} - void apply() const { parallel_for(m_src.capacity(), *this); } + void apply() const { + parallel_for("Kokkos::Impl::UnorderedMapRehash::apply", m_src.capacity(), + *this); + } KOKKOS_INLINE_FUNCTION void operator()(size_type i) const { @@ -91,7 +94,10 @@ struct UnorderedMapErase { UnorderedMapErase(map_type const& map) : m_map(map) {} - void apply() const { parallel_for(m_map.m_hash_lists.extent(0), *this); } + void apply() const { + parallel_for("Kokkos::Impl::UnorderedMapErase::apply", + m_map.m_hash_lists.extent(0), *this); + } KOKKOS_INLINE_FUNCTION void operator()(size_type i) const { @@ -152,7 +158,10 @@ struct UnorderedMapHistogram { m_distance("UnorderedMap Histogram"), m_block_distance("UnorderedMap Histogram") {} - void calculate() { parallel_for(m_map.m_hash_lists.extent(0), *this); } + void calculate() { + parallel_for("Kokkos::Impl::UnorderedMapHistogram::calculate", + m_map.m_hash_lists.extent(0), *this); + } void clear() { Kokkos::deep_copy(m_length, 0); @@ -229,7 +238,10 @@ struct UnorderedMapPrint { UnorderedMapPrint(map_type const& map) : m_map(map) {} - void apply() { parallel_for(m_map.m_hash_lists.extent(0), *this); } + void apply() { + parallel_for("Kokkos::Impl::UnorderedMapPrint::apply", + m_map.m_hash_lists.extent(0), *this); + } KOKKOS_INLINE_FUNCTION void operator()(size_type i) const { @@ -245,21 +257,22 @@ struct UnorderedMapPrint { }; template -struct UnorderedMapCanAssign : public false_ {}; +struct UnorderedMapCanAssign : public std::false_type {}; template -struct UnorderedMapCanAssign : public true_ {}; +struct UnorderedMapCanAssign : public std::true_type {}; template -struct UnorderedMapCanAssign : public true_ {}; +struct UnorderedMapCanAssign + : public std::true_type {}; template struct UnorderedMapCanAssign - : public true_ {}; + : public std::true_type {}; template struct UnorderedMapCanAssign - : public true_ {}; + : public std::true_type {}; } // namespace Impl } // namespace Kokkos diff --git a/lib/kokkos/containers/unit_tests/CMakeLists.txt b/lib/kokkos/containers/unit_tests/CMakeLists.txt index a83ab1293c..448cdf4386 100644 --- a/lib/kokkos/containers/unit_tests/CMakeLists.txt +++ b/lib/kokkos/containers/unit_tests/CMakeLists.txt @@ -3,7 +3,7 @@ KOKKOS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) KOKKOS_INCLUDE_DIRECTORIES(REQUIRED_DURING_INSTALLATION_TESTING ${CMAKE_CURRENT_SOURCE_DIR}) KOKKOS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../src ) -foreach(Tag Threads;Serial;OpenMP;HPX;Cuda) +foreach(Tag Threads;Serial;OpenMP;HPX;Cuda;HIP) # Because there is always an exception to the rule if(Tag STREQUAL "Threads") set(DEVICE "PTHREAD") @@ -13,23 +13,31 @@ foreach(Tag Threads;Serial;OpenMP;HPX;Cuda) string(TOLOWER ${Tag} dir) # Add test for that backend if it is enabled if(Kokkos_ENABLE_${DEVICE}) - KOKKOS_ADD_EXECUTABLE_AND_TEST( - UnitTest_${Tag} - SOURCES - UnitTestMain.cpp - ${dir}/Test${Tag}_BitSet.cpp - ${dir}/Test${Tag}_DualView.cpp - ${dir}/Test${Tag}_DynamicView.cpp - ${dir}/Test${Tag}_DynRankViewAPI_generic.cpp - ${dir}/Test${Tag}_DynRankViewAPI_rank12345.cpp - ${dir}/Test${Tag}_DynRankViewAPI_rank67.cpp - ${dir}/Test${Tag}_ErrorReporter.cpp - ${dir}/Test${Tag}_OffsetView.cpp - ${dir}/Test${Tag}_ScatterView.cpp - ${dir}/Test${Tag}_StaticCrsGraph.cpp - ${dir}/Test${Tag}_UnorderedMap.cpp - ${dir}/Test${Tag}_Vector.cpp - ${dir}/Test${Tag}_ViewCtorPropEmbeddedDim.cpp + set(UnitTestSources UnitTestMain.cpp) + set(dir ${CMAKE_CURRENT_BINARY_DIR}/${dir}) + file(MAKE_DIRECTORY ${dir}) + foreach(Name + Bitset + DualView + DynamicView + DynViewAPI_generic + DynViewAPI_rank12345 + DynViewAPI_rank67 + ErrorReporter + OffsetView + ScatterView + StaticCrsGraph + UnorderedMap + Vector + ViewCtorPropEmbeddedDim + ) + set(file ${dir}/Test${Tag}_${Name}.cpp) + file(WRITE ${file} + "#include \n" + "#include \n" ) + list(APPEND UnitTestSources ${file}) + endforeach() + KOKKOS_ADD_EXECUTABLE_AND_TEST(UnitTest_${Tag} SOURCES ${UnitTestSources}) endif() endforeach() diff --git a/lib/kokkos/containers/unit_tests/Makefile b/lib/kokkos/containers/unit_tests/Makefile index a7e0233f8a..308b5aa8b5 100644 --- a/lib/kokkos/containers/unit_tests/Makefile +++ b/lib/kokkos/containers/unit_tests/Makefile @@ -9,7 +9,7 @@ vpath %.cpp ${KOKKOS_PATH}/containers/unit_tests/serial vpath %.cpp ${KOKKOS_PATH}/containers/unit_tests/threads vpath %.cpp ${KOKKOS_PATH}/containers/unit_tests/rocm vpath %.cpp ${KOKKOS_PATH}/containers/unit_tests/cuda - +vpath %.cpp ${CURDIR} default: build_all echo "End Build" @@ -31,14 +31,24 @@ KOKKOS_CXXFLAGS += -I$(GTEST_PATH) -I${KOKKOS_PATH}/containers/unit_tests TEST_TARGETS = TARGETS = +TESTS = Bitset DualView DynamicView DynViewAPI_generic DynViewAPI_rank12345 DynViewAPI_rank67 ErrorReporter OffsetView ScatterView StaticCrsGraph UnorderedMap Vector ViewCtorPropEmbeddedDim +tmp := $(foreach device, $(KOKKOS_DEVICELIST), \ + tmp2 := $(foreach test, $(TESTS), \ + $(if $(filter Test$(device)_$(test).cpp, $(shell ls Test$(device)_$(test).cpp 2>/dev/null)),,\ + $(shell echo "\#include" > Test$(device)_$(test).cpp); \ + $(shell echo "\#include" >> Test$(device)_$(test).cpp); \ + )\ + ) \ +) + ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) OBJ_CUDA = UnitTestMain.o gtest-all.o - OBJ_CUDA += TestCuda_BitSet.o + OBJ_CUDA += TestCuda_Bitset.o OBJ_CUDA += TestCuda_DualView.o OBJ_CUDA += TestCuda_DynamicView.o - OBJ_CUDA += TestCuda_DynRankViewAPI_generic.o - OBJ_CUDA += TestCuda_DynRankViewAPI_rank12345.o - OBJ_CUDA += TestCuda_DynRankViewAPI_rank67.o + OBJ_CUDA += TestCuda_DynViewAPI_generic.o + OBJ_CUDA += TestCuda_DynViewAPI_rank12345.o + OBJ_CUDA += TestCuda_DynViewAPI_rank67.o OBJ_CUDA += TestCuda_ErrorReporter.o OBJ_CUDA += TestCuda_OffsetView.o OBJ_CUDA += TestCuda_ScatterView.o @@ -50,33 +60,14 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) TEST_TARGETS += test-cuda endif -ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) - OBJ_ROCM = UnitTestMain.o gtest-all.o - OBJ_ROCM += TestROCm_BitSet.o - OBJ_ROCM += TestROCm_DualView.o - OBJ_ROCM += TestROCm_DynamicView.o - OBJ_ROCM += TestROCm_DynRankViewAPI_generic.o - OBJ_ROCM += TestROCm_DynRankViewAPI_rank12345.o - OBJ_ROCM += TestROCm_DynRankViewAPI_rank67.o - OBJ_ROCM += TestROCm_ErrorReporter.o - OBJ_ROCM += TestROCm_OffsetView.o - OBJ_ROCM += TestROCm_ScatterView.o - OBJ_ROCM += TestROCm_StaticCrsGraph.o - OBJ_ROCM += TestROCm_UnorderedMap.o - OBJ_ROCM += TestROCm_Vector.o - OBJ_ROCM += TestROCm_ViewCtorPropEmbeddedDim.o - TARGETS += KokkosContainers_UnitTest_ROCm - TEST_TARGETS += test-rocm -endif - ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) OBJ_THREADS = UnitTestMain.o gtest-all.o - OBJ_THREADS += TestThreads_BitSet.o + OBJ_THREADS += TestThreads_Bitset.o OBJ_THREADS += TestThreads_DualView.o OBJ_THREADS += TestThreads_DynamicView.o - OBJ_THREADS += TestThreads_DynRankViewAPI_generic.o - OBJ_THREADS += TestThreads_DynRankViewAPI_rank12345.o - OBJ_THREADS += TestThreads_DynRankViewAPI_rank67.o + OBJ_THREADS += TestThreads_DynViewAPI_generic.o + OBJ_THREADS += TestThreads_DynViewAPI_rank12345.o + OBJ_THREADS += TestThreads_DynViewAPI_rank67.o OBJ_THREADS += TestThreads_ErrorReporter.o OBJ_THREADS += TestThreads_OffsetView.o OBJ_THREADS += TestThreads_ScatterView.o @@ -90,12 +81,12 @@ endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) OBJ_OPENMP = UnitTestMain.o gtest-all.o - OBJ_OPENMP += TestOpenMP_BitSet.o + OBJ_OPENMP += TestOpenMP_Bitset.o OBJ_OPENMP += TestOpenMP_DualView.o OBJ_OPENMP += TestOpenMP_DynamicView.o - OBJ_OPENMP += TestOpenMP_DynRankViewAPI_generic.o - OBJ_OPENMP += TestOpenMP_DynRankViewAPI_rank12345.o - OBJ_OPENMP += TestOpenMP_DynRankViewAPI_rank67.o + OBJ_OPENMP += TestOpenMP_DynViewAPI_generic.o + OBJ_OPENMP += TestOpenMP_DynViewAPI_rank12345.o + OBJ_OPENMP += TestOpenMP_DynViewAPI_rank67.o OBJ_OPENMP += TestOpenMP_ErrorReporter.o OBJ_OPENMP += TestOpenMP_OffsetView.o OBJ_OPENMP += TestOpenMP_ScatterView.o @@ -109,12 +100,12 @@ endif ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) OBJ_HPX = UnitTestMain.o gtest-all.o - OBJ_HPX += TestHPX_BitSet.o + OBJ_HPX += TestHPX_Bitset.o OBJ_HPX += TestHPX_DualView.o OBJ_HPX += TestHPX_DynamicView.o - OBJ_HPX += TestHPX_DynRankViewAPI_generic.o - OBJ_HPX += TestHPX_DynRankViewAPI_rank12345.o - OBJ_HPX += TestHPX_DynRankViewAPI_rank67.o + OBJ_HPX += TestHPX_DynViewAPI_generic.o + OBJ_HPX += TestHPX_DynViewAPI_rank12345.o + OBJ_HPX += TestHPX_DynViewAPI_rank67.o OBJ_HPX += TestHPX_ErrorReporter.o OBJ_HPX += TestHPX_OffsetView.o OBJ_HPX += TestHPX_ScatterView.o @@ -128,12 +119,12 @@ endif ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) OBJ_SERIAL = UnitTestMain.o gtest-all.o - OBJ_SERIAL += TestSerial_BitSet.o + OBJ_SERIAL += TestSerial_Bitset.o OBJ_SERIAL += TestSerial_DualView.o OBJ_SERIAL += TestSerial_DynamicView.o - OBJ_SERIAL += TestSerial_DynRankViewAPI_generic.o - OBJ_SERIAL += TestSerial_DynRankViewAPI_rank12345.o - OBJ_SERIAL += TestSerial_DynRankViewAPI_rank67.o + OBJ_SERIAL += TestSerial_DynViewAPI_generic.o + OBJ_SERIAL += TestSerial_DynViewAPI_rank12345.o + OBJ_SERIAL += TestSerial_DynViewAPI_rank67.o OBJ_SERIAL += TestSerial_ErrorReporter.o OBJ_SERIAL += TestSerial_OffsetView.o OBJ_SERIAL += TestSerial_ScatterView.o @@ -148,9 +139,6 @@ endif KokkosContainers_UnitTest_Cuda: $(OBJ_CUDA) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_CUDA) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosContainers_UnitTest_Cuda -KokkosContainers_UnitTest_ROCm: $(OBJ_ROCM) $(KOKKOS_LINK_DEPENDS) - $(LINK) $(EXTRA_PATH) $(OBJ_ROCM) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosContainers_UnitTest_ROCm - KokkosContainers_UnitTest_Threads: $(OBJ_THREADS) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_THREADS) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosContainers_UnitTest_Threads @@ -166,9 +154,6 @@ KokkosContainers_UnitTest_Serial: $(OBJ_SERIAL) $(KOKKOS_LINK_DEPENDS) test-cuda: KokkosContainers_UnitTest_Cuda ./KokkosContainers_UnitTest_Cuda -test-rocm: KokkosContainers_UnitTest_ROCm - ./KokkosContainers_UnitTest_ROCm - test-threads: KokkosContainers_UnitTest_Threads ./KokkosContainers_UnitTest_Threads @@ -186,7 +171,7 @@ build_all: $(TARGETS) test: $(TEST_TARGETS) clean: kokkos-clean - rm -f *.o $(TARGETS) + rm -f *.o $(TARGETS) *.cpp # Compilation rules diff --git a/lib/kokkos/containers/unit_tests/TestBitset.hpp b/lib/kokkos/containers/unit_tests/TestBitset.hpp index ebd35d3ae7..661a1365cb 100644 --- a/lib/kokkos/containers/unit_tests/TestBitset.hpp +++ b/lib/kokkos/containers/unit_tests/TestBitset.hpp @@ -253,8 +253,10 @@ void test_bitset() { } } +// FIXME_HIP deadlock +#ifndef KOKKOS_ENABLE_HIP TEST(TEST_CATEGORY, bitset) { test_bitset(); } - +#endif } // namespace Test #endif // KOKKOS_TEST_BITSET_HPP diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_Category.hpp b/lib/kokkos/containers/unit_tests/TestCuda_Category.hpp similarity index 100% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_Category.hpp rename to lib/kokkos/containers/unit_tests/TestCuda_Category.hpp diff --git a/lib/kokkos/containers/unit_tests/TestDualView.hpp b/lib/kokkos/containers/unit_tests/TestDualView.hpp index 572ef48839..665f251158 100644 --- a/lib/kokkos/containers/unit_tests/TestDualView.hpp +++ b/lib/kokkos/containers/unit_tests/TestDualView.hpp @@ -67,11 +67,17 @@ struct test_dualview_combinations { Scalar result; template - Scalar run_me(unsigned int n, unsigned int m) { + Scalar run_me(unsigned int n, unsigned int m, bool with_init) { if (n < 10) n = 10; if (m < 3) m = 3; - ViewType a("A", n, m); + ViewType a; + + if (with_init) { + a = ViewType("A", n, m); + } else { + a = ViewType(Kokkos::ViewAllocateWithoutInitializing("A"), n, m); + } Kokkos::deep_copy(a.d_view, 1); a.template modify(); @@ -96,9 +102,9 @@ struct test_dualview_combinations { return count - a.d_view.extent(0) * a.d_view.extent(1) - 2 - 4 - 3 * 2; } - test_dualview_combinations(unsigned int size) { + test_dualview_combinations(unsigned int size, bool with_init) { result = run_me >( - size, 3); + size, 3, with_init); } }; @@ -124,18 +130,25 @@ struct test_dual_view_deep_copy { typedef Device execution_space; template - void run_me() { - const unsigned int n = 10; - const unsigned int m = 5; - const unsigned int sum_total = n * m; - - ViewType a("A", n, m); - ViewType b("B", n, m); + void run_me(int n, const int m, const bool use_templ_sync) { + ViewType a, b; + if (n >= 0) { + a = ViewType("A", n, m); + b = ViewType("B", n, m); + } else { + n = 0; + } + const scalar_type sum_total = scalar_type(n * m); Kokkos::deep_copy(a.d_view, 1); - a.template modify(); - a.template sync(); + if (use_templ_sync) { + a.template modify(); + a.template sync(); + } else { + a.modify_device(); + a.sync_host(); + } // Check device view is initialized as expected scalar_type a_d_sum = 0; @@ -159,7 +172,11 @@ struct test_dual_view_deep_copy { // Test deep_copy Kokkos::deep_copy(b, a); - b.template sync(); + if (use_templ_sync) { + b.template sync(); + } else { + b.sync_host(); + } // Perform same checks on b as done on a // Check device view is initialized as expected @@ -183,6 +200,145 @@ struct test_dual_view_deep_copy { } // end run_me test_dual_view_deep_copy() { + run_me >(10, 5, + true); + run_me >(10, 5, + false); + // Test zero length but allocated (a.d_view.data!=nullptr but + // a.d_view.span()==0) + run_me >(0, 5, true); + run_me >(0, 5, + false); + + // Test default constructed view + run_me >(-1, 5, + true); + run_me >(-1, 5, + false); + } +}; + +template +struct test_dualview_resize { + typedef Scalar scalar_type; + typedef Device execution_space; + + template + void run_me() { + const unsigned int n = 10; + const unsigned int m = 5; + const unsigned int factor = 2; + + ViewType a("A", n, m); + Kokkos::deep_copy(a.d_view, 1); + + /* Covers case "Resize on Device" */ + a.modify_device(); + Kokkos::resize(a, factor * n, factor * m); + ASSERT_EQ(a.extent(0), n * factor); + ASSERT_EQ(a.extent(1), m * factor); + + Kokkos::deep_copy(a.d_view, 1); + a.sync_host(); + + // Check device view is initialized as expected + scalar_type a_d_sum = 0; + // Execute on the execution_space associated with t_dev's memory space + typedef typename ViewType::t_dev::memory_space::execution_space + t_dev_exec_space; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(0, a.d_view.extent(0)), + SumViewEntriesFunctor(a.d_view), + a_d_sum); + + // Check host view is synced as expected + scalar_type a_h_sum = 0; + for (size_t i = 0; i < a.h_view.extent(0); ++i) + for (size_t j = 0; j < a.h_view.extent(1); ++j) { + a_h_sum += a.h_view(i, j); + } + + // Check + ASSERT_EQ(a_h_sum, a_d_sum); + ASSERT_EQ(a_h_sum, a.extent(0) * a.extent(1)); + + /* Covers case "Resize on Host" */ + a.modify_host(); + + Kokkos::resize(a, n / factor, m / factor); + ASSERT_EQ(a.extent(0), n / factor); + ASSERT_EQ(a.extent(1), m / factor); + + a.sync_device(); + + // Check device view is initialized as expected + a_d_sum = 0; + // Execute on the execution_space associated with t_dev's memory space + typedef typename ViewType::t_dev::memory_space::execution_space + t_dev_exec_space; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(0, a.d_view.extent(0)), + SumViewEntriesFunctor(a.d_view), + a_d_sum); + + // Check host view is synced as expected + a_h_sum = 0; + for (size_t i = 0; i < a.h_view.extent(0); ++i) + for (size_t j = 0; j < a.h_view.extent(1); ++j) { + a_h_sum += a.h_view(i, j); + } + + // Check + ASSERT_EQ(a_h_sum, a.extent(0) * a.extent(1)); + ASSERT_EQ(a_h_sum, a_d_sum); + + } // end run_me + + test_dualview_resize() { + run_me >(); + } +}; + +template +struct test_dualview_realloc { + typedef Scalar scalar_type; + typedef Device execution_space; + + template + void run_me() { + const unsigned int n = 10; + const unsigned int m = 5; + + ViewType a("A", n, m); + Kokkos::realloc(a, n, m); + + Kokkos::deep_copy(a.d_view, 1); + a.modify_device(); + a.sync_host(); + + // Check device view is initialized as expected + scalar_type a_d_sum = 0; + // Execute on the execution_space associated with t_dev's memory space + typedef typename ViewType::t_dev::memory_space::execution_space + t_dev_exec_space; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(0, a.d_view.extent(0)), + SumViewEntriesFunctor(a.d_view), + a_d_sum); + + // Check host view is synced as expected + scalar_type a_h_sum = 0; + for (size_t i = 0; i < a.h_view.extent(0); ++i) + for (size_t j = 0; j < a.h_view.extent(1); ++j) { + a_h_sum += a.h_view(i, j); + } + + // Check + ASSERT_EQ(a_h_sum, a.extent(0) * a.extent(1)); + ASSERT_EQ(a_h_sum, a_d_sum); + } // end run_me + + test_dualview_realloc() { run_me >(); } }; @@ -190,8 +346,8 @@ struct test_dual_view_deep_copy { } // namespace Impl template -void test_dualview_combinations(unsigned int size) { - Impl::test_dualview_combinations test(size); +void test_dualview_combinations(unsigned int size, bool with_init) { + Impl::test_dualview_combinations test(size, with_init); ASSERT_EQ(test.result, 0); } @@ -200,8 +356,22 @@ void test_dualview_deep_copy() { Impl::test_dual_view_deep_copy(); } +template +void test_dualview_realloc() { + Impl::test_dualview_realloc(); +} + +template +void test_dualview_resize() { + Impl::test_dualview_resize(); +} + TEST(TEST_CATEGORY, dualview_combination) { - test_dualview_combinations(10); + test_dualview_combinations(10, true); +} + +TEST(TEST_CATEGORY, dualview_combinations_without_init) { + test_dualview_combinations(10, false); } TEST(TEST_CATEGORY, dualview_deep_copy) { @@ -209,6 +379,14 @@ TEST(TEST_CATEGORY, dualview_deep_copy) { test_dualview_deep_copy(); } +TEST(TEST_CATEGORY, dualview_realloc) { + test_dualview_realloc(); +} + +TEST(TEST_CATEGORY, dualview_resize) { + test_dualview_resize(); +} + } // namespace Test -#endif // KOKKOS_TEST_UNORDERED_MAP_HPP +#endif // KOKKOS_TEST_DUALVIEW_HPP diff --git a/lib/kokkos/containers/unit_tests/TestDynViewAPI.hpp b/lib/kokkos/containers/unit_tests/TestDynViewAPI.hpp index 3692aa8a12..5c1d0229cb 100644 --- a/lib/kokkos/containers/unit_tests/TestDynViewAPI.hpp +++ b/lib/kokkos/containers/unit_tests/TestDynViewAPI.hpp @@ -706,8 +706,6 @@ class TestDynViewAPI { typedef typename View0::host_mirror_space host_view_space; - TestDynViewAPI() {} - static void run_tests() { run_test_resize_realloc(); run_test_mirror(); @@ -1078,12 +1076,12 @@ class TestDynViewAPI { ASSERT_TRUE(Kokkos::is_dyn_rank_view::value); ASSERT_FALSE(Kokkos::is_dyn_rank_view >::value); - ASSERT_TRUE(dx.data() == 0); // Okay with UVM - ASSERT_TRUE(dy.data() == 0); // Okay with UVM - ASSERT_TRUE(dz.data() == 0); // Okay with UVM - ASSERT_TRUE(hx.data() == 0); - ASSERT_TRUE(hy.data() == 0); - ASSERT_TRUE(hz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); // Okay with UVM + ASSERT_TRUE(dy.data() == nullptr); // Okay with UVM + ASSERT_TRUE(dz.data() == nullptr); // Okay with UVM + ASSERT_TRUE(hx.data() == nullptr); + ASSERT_TRUE(hy.data() == nullptr); + ASSERT_TRUE(hz.data() == nullptr); ASSERT_EQ(dx.extent(0), 0u); // Okay with UVM ASSERT_EQ(dy.extent(0), 0u); // Okay with UVM ASSERT_EQ(dz.extent(0), 0u); // Okay with UVM @@ -1154,11 +1152,11 @@ class TestDynViewAPI { ASSERT_EQ(dx.use_count(), size_t(2)); - ASSERT_FALSE(dx.data() == 0); - ASSERT_FALSE(const_dx.data() == 0); - ASSERT_FALSE(unmanaged_dx.data() == 0); - ASSERT_FALSE(unmanaged_from_ptr_dx.data() == 0); - ASSERT_FALSE(dy.data() == 0); + ASSERT_FALSE(dx.data() == nullptr); + ASSERT_FALSE(const_dx.data() == nullptr); + ASSERT_FALSE(unmanaged_dx.data() == nullptr); + ASSERT_FALSE(unmanaged_from_ptr_dx.data() == nullptr); + ASSERT_FALSE(dy.data() == nullptr); ASSERT_NE(dx, dy); ASSERT_EQ(dx.extent(0), unsigned(N0)); @@ -1318,17 +1316,17 @@ class TestDynViewAPI { ASSERT_NE(dx, dz); dx = dView0(); - ASSERT_TRUE(dx.data() == 0); - ASSERT_FALSE(dy.data() == 0); - ASSERT_FALSE(dz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); + ASSERT_FALSE(dy.data() == nullptr); + ASSERT_FALSE(dz.data() == nullptr); dy = dView0(); - ASSERT_TRUE(dx.data() == 0); - ASSERT_TRUE(dy.data() == 0); - ASSERT_FALSE(dz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); + ASSERT_TRUE(dy.data() == nullptr); + ASSERT_FALSE(dz.data() == nullptr); dz = dView0(); - ASSERT_TRUE(dx.data() == 0); - ASSERT_TRUE(dy.data() == 0); - ASSERT_TRUE(dz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); + ASSERT_TRUE(dy.data() == nullptr); + ASSERT_TRUE(dz.data() == nullptr); // View - DynRankView Interoperability tests // deep_copy from view to dynrankview diff --git a/lib/kokkos/containers/unit_tests/TestDynViewAPI_generic.hpp b/lib/kokkos/containers/unit_tests/TestDynViewAPI_generic.hpp index 90ca5df194..b3e2812b44 100644 --- a/lib/kokkos/containers/unit_tests/TestDynViewAPI_generic.hpp +++ b/lib/kokkos/containers/unit_tests/TestDynViewAPI_generic.hpp @@ -44,7 +44,10 @@ #include namespace Test { +// FIXME_HIP attempt to access inaccessible memory space +#ifndef KOKKOS_ENABLE_HIP TEST(TEST_CATEGORY, dyn_rank_view_api_generic) { TestDynViewAPI::run_tests(); } +#endif } // namespace Test diff --git a/lib/kokkos/containers/unit_tests/TestDynViewAPI_rank12345.hpp b/lib/kokkos/containers/unit_tests/TestDynViewAPI_rank12345.hpp index 050ebbe35c..86a2e4e954 100644 --- a/lib/kokkos/containers/unit_tests/TestDynViewAPI_rank12345.hpp +++ b/lib/kokkos/containers/unit_tests/TestDynViewAPI_rank12345.hpp @@ -45,7 +45,10 @@ #include namespace Test { +// FIXME_HIP failing with wrong value +#ifndef KOKKOS_ENABLE_HIP TEST(TEST_CATEGORY, dyn_rank_view_api_operator_rank12345) { TestDynViewAPI::run_operator_test_rank12345(); } +#endif } // namespace Test diff --git a/lib/kokkos/containers/unit_tests/TestDynamicView.hpp b/lib/kokkos/containers/unit_tests/TestDynamicView.hpp index 235464ef07..8eabbcb371 100644 --- a/lib/kokkos/containers/unit_tests/TestDynamicView.hpp +++ b/lib/kokkos/containers/unit_tests/TestDynamicView.hpp @@ -79,7 +79,6 @@ struct TestDynamicView { ASSERT_EQ(da.size(), da_size); #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) Kokkos::parallel_for( Kokkos::RangePolicy(0, da_size), KOKKOS_LAMBDA(const int i) { da(i) = Scalar(i); }); @@ -93,7 +92,6 @@ struct TestDynamicView { result_sum); ASSERT_EQ(result_sum, (value_type)(da_size * (da_size - 1) / 2)); -#endif #endif // add 3x more entries i.e. 4x larger than previous size @@ -103,7 +101,6 @@ struct TestDynamicView { ASSERT_EQ(da.size(), da_resize); #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) Kokkos::parallel_for( Kokkos::RangePolicy(da_size, da_resize), KOKKOS_LAMBDA(const int i) { da(i) = Scalar(i); }); @@ -118,7 +115,6 @@ struct TestDynamicView { ASSERT_EQ(new_result_sum + result_sum, (value_type)(da_resize * (da_resize - 1) / 2)); -#endif #endif } // end scope @@ -135,7 +131,6 @@ struct TestDynamicView { ASSERT_EQ(da.size(), da_size); #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) Kokkos::parallel_for( Kokkos::RangePolicy(0, da_size), KOKKOS_LAMBDA(const int i) { da(i) = Scalar(i); }); @@ -149,7 +144,6 @@ struct TestDynamicView { result_sum); ASSERT_EQ(result_sum, (value_type)(da_size * (da_size - 1) / 2)); -#endif #endif // add 3x more entries i.e. 4x larger than previous size @@ -159,7 +153,6 @@ struct TestDynamicView { ASSERT_EQ(da.size(), da_resize); #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) Kokkos::parallel_for( Kokkos::RangePolicy(da_size, da_resize), KOKKOS_LAMBDA(const int i) { da(i) = Scalar(i); }); @@ -174,7 +167,6 @@ struct TestDynamicView { ASSERT_EQ(new_result_sum + result_sum, (value_type)(da_resize * (da_resize - 1) / 2)); -#endif #endif } // end scope @@ -191,7 +183,6 @@ struct TestDynamicView { ASSERT_EQ(da.size(), da_size); #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) Kokkos::parallel_for( Kokkos::RangePolicy(0, da_size), KOKKOS_LAMBDA(const int i) { da(i) = Scalar(i); }); @@ -205,7 +196,6 @@ struct TestDynamicView { result_sum); ASSERT_EQ(result_sum, (value_type)(da_size * (da_size - 1) / 2)); -#endif #endif // remove the final 3/4 entries i.e. first 1/4 remain @@ -214,7 +204,6 @@ struct TestDynamicView { ASSERT_EQ(da.size(), da_resize); #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) Kokkos::parallel_for( Kokkos::RangePolicy(0, da_resize), KOKKOS_LAMBDA(const int i) { da(i) = Scalar(i); }); @@ -228,7 +217,6 @@ struct TestDynamicView { new_result_sum); ASSERT_EQ(new_result_sum, (value_type)(da_resize * (da_resize - 1) / 2)); -#endif #endif } // end scope } diff --git a/lib/kokkos/containers/unit_tests/TestErrorReporter.hpp b/lib/kokkos/containers/unit_tests/TestErrorReporter.hpp index 49b71cdea7..318132500c 100644 --- a/lib/kokkos/containers/unit_tests/TestErrorReporter.hpp +++ b/lib/kokkos/containers/unit_tests/TestErrorReporter.hpp @@ -50,9 +50,13 @@ #include #include +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + namespace Test { -// Just save the data in the report. Informative text goies in the +// Just save the data in the report. Informative text goes in the // operator<<(..). template struct ThreeValReport { @@ -85,7 +89,7 @@ struct ErrorReporterDriverBase { error_reporter_type; error_reporter_type m_errorReporter; - ErrorReporterDriverBase(int reporter_capacity, int test_size) + ErrorReporterDriverBase(int reporter_capacity, int /*test_size*/) : m_errorReporter(reporter_capacity) {} KOKKOS_INLINE_FUNCTION bool error_condition(const int work_idx) const { @@ -176,7 +180,8 @@ struct ErrorReporterDriver : public ErrorReporterDriverBase { } }; -#if defined(KOKKOS_CLASS_LAMBDA) +#if defined(KOKKOS_CLASS_LAMBDA) && \ + (!defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_CUDA_LAMBDA)) template struct ErrorReporterDriverUseLambda : public ErrorReporterDriverBase { @@ -225,7 +230,8 @@ struct ErrorReporterDriverNativeOpenMP }; #endif -#if defined(KOKKOS_CLASS_LAMBDA) +#if defined(KOKKOS_CLASS_LAMBDA) && \ + (!defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_CUDA_LAMBDA)) TEST(TEST_CATEGORY, ErrorReporterViaLambda) { TestErrorReporter>(); } diff --git a/lib/kokkos/containers/unit_tests/rocm/TestROCm_Category.hpp b/lib/kokkos/containers/unit_tests/TestHIP_Category.hpp similarity index 93% rename from lib/kokkos/containers/unit_tests/rocm/TestROCm_Category.hpp rename to lib/kokkos/containers/unit_tests/TestHIP_Category.hpp index d37cd05db6..c2d60d1814 100644 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_Category.hpp +++ b/lib/kokkos/containers/unit_tests/TestHIP_Category.hpp @@ -42,10 +42,10 @@ //@HEADER */ -#ifndef KOKKOS_TEST_ROCM_HPP -#define KOKKOS_TEST_ROCM_HPP +#ifndef KOKKOS_TEST_HIP_HPP +#define KOKKOS_TEST_HIP_HPP -#define TEST_CATEGORY rocm -#define TEST_EXECSPACE Kokkos::Experimental::ROCm +#define TEST_CATEGORY hip +#define TEST_EXECSPACE Kokkos::Experimental::HIP #endif diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_Category.hpp b/lib/kokkos/containers/unit_tests/TestHPX_Category.hpp similarity index 100% rename from lib/kokkos/containers/unit_tests/hpx/TestHPX_Category.hpp rename to lib/kokkos/containers/unit_tests/TestHPX_Category.hpp diff --git a/lib/kokkos/containers/unit_tests/TestOffsetView.hpp b/lib/kokkos/containers/unit_tests/TestOffsetView.hpp index 12bcda9524..5114b8022f 100644 --- a/lib/kokkos/containers/unit_tests/TestOffsetView.hpp +++ b/lib/kokkos/containers/unit_tests/TestOffsetView.hpp @@ -60,7 +60,7 @@ using std::endl; namespace Test { template -void test_offsetview_construction(unsigned int size) { +void test_offsetview_construction() { typedef Kokkos::Experimental::OffsetView offset_view_type; typedef Kokkos::View view_type; @@ -185,15 +185,17 @@ void test_offsetview_construction(unsigned int size) { Kokkos::deep_copy(view3D, 1); - Kokkos::Array begins = {{-10, -20, -30}}; - Kokkos::Experimental::OffsetView offsetView3D(view3D, - begins); - typedef Kokkos::MDRangePolicy, Kokkos::IndexType > range3_type; typedef typename range3_type::point_type point3_type; + typename point3_type::value_type begins0 = -10, begins1 = -20, + begins2 = -30; + Kokkos::Array begins = {{begins0, begins1, begins2}}; + Kokkos::Experimental::OffsetView offsetView3D(view3D, + begins); + range3_type rangePolicy3DZero(point3_type{{0, 0, 0}}, point3_type{{extent0, extent1, extent2}}); @@ -207,9 +209,8 @@ void test_offsetview_construction(unsigned int size) { view3DSum); range3_type rangePolicy3D( - point3_type{{begins[0], begins[1], begins[2]}}, - point3_type{ - {begins[0] + extent0, begins[1] + extent1, begins[2] + extent2}}); + point3_type{{begins0, begins1, begins2}}, + point3_type{{begins0 + extent0, begins1 + extent1, begins2 + extent2}}); int offsetView3DSum = 0; Kokkos::parallel_reduce( @@ -388,7 +389,7 @@ void test_offsetview_unmanaged_construction() { } template -void test_offsetview_subview(unsigned int size) { +void test_offsetview_subview() { { // test subview 1 Kokkos::Experimental::OffsetView sliceMe("offsetToSlice", {-10, 20}); @@ -675,7 +676,7 @@ void test_offsetview_offsets_rank3() { #endif TEST(TEST_CATEGORY, offsetview_construction) { - test_offsetview_construction(10); + test_offsetview_construction(); } TEST(TEST_CATEGORY, offsetview_unmanaged_construction) { @@ -683,7 +684,7 @@ TEST(TEST_CATEGORY, offsetview_unmanaged_construction) { } TEST(TEST_CATEGORY, offsetview_subview) { - test_offsetview_subview(10); + test_offsetview_subview(); } #if defined(KOKKOS_ENABLE_CUDA_LAMBDA) || !defined(KOKKOS_ENABLE_CUDA) diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_Category.hpp b/lib/kokkos/containers/unit_tests/TestOpenMP_Category.hpp similarity index 100% rename from lib/kokkos/containers/unit_tests/openmp/TestOpenMP_Category.hpp rename to lib/kokkos/containers/unit_tests/TestOpenMP_Category.hpp diff --git a/lib/kokkos/containers/unit_tests/TestScatterView.hpp b/lib/kokkos/containers/unit_tests/TestScatterView.hpp index 93b69cc769..915d96d321 100644 --- a/lib/kokkos/containers/unit_tests/TestScatterView.hpp +++ b/lib/kokkos/containers/unit_tests/TestScatterView.hpp @@ -50,21 +50,21 @@ namespace Test { -template struct test_scatter_view_impl_cls; -template -struct test_scatter_view_impl_cls { public: - typedef Kokkos::Experimental::ScatterView scatter_view_type; - typedef Kokkos::View orig_view_type; + typedef Kokkos::View orig_view_type; scatter_view_type scatter_view; int scatterSize; @@ -90,7 +90,8 @@ struct test_scatter_view_impl_cls(0, n); + auto policy = + Kokkos::RangePolicy(0, n); Kokkos::parallel_for(policy, *this, "scatter_view_test: Sum"); } @@ -123,17 +124,17 @@ struct test_scatter_view_impl_cls -struct test_scatter_view_impl_cls { public: - typedef Kokkos::Experimental::ScatterView scatter_view_type; - typedef Kokkos::View orig_view_type; + typedef Kokkos::View orig_view_type; scatter_view_type scatter_view; int scatterSize; @@ -159,7 +160,8 @@ struct test_scatter_view_impl_cls(0, n); + auto policy = + Kokkos::RangePolicy(0, n); Kokkos::parallel_for(policy, *this, "scatter_view_test: Prod"); } @@ -192,17 +194,17 @@ struct test_scatter_view_impl_cls -struct test_scatter_view_impl_cls { public: - typedef Kokkos::Experimental::ScatterView scatter_view_type; - typedef Kokkos::View orig_view_type; + typedef Kokkos::View orig_view_type; scatter_view_type scatter_view; int scatterSize; @@ -228,7 +230,8 @@ struct test_scatter_view_impl_cls(0, n); + auto policy = + Kokkos::RangePolicy(0, n); Kokkos::parallel_for(policy, *this, "scatter_view_test: Prod"); } @@ -261,17 +264,17 @@ struct test_scatter_view_impl_cls -struct test_scatter_view_impl_cls { public: - typedef Kokkos::Experimental::ScatterView scatter_view_type; - typedef Kokkos::View orig_view_type; + typedef Kokkos::View orig_view_type; scatter_view_type scatter_view; int scatterSize; @@ -297,7 +300,7 @@ struct test_scatter_view_impl_cls(0, n); + Kokkos::RangePolicy policy(0, n); Kokkos::parallel_for(policy, *this, "scatter_view_test: Prod"); } @@ -330,20 +333,18 @@ struct test_scatter_view_impl_cls struct test_scatter_view_config { public: typedef - typename test_scatter_view_impl_cls::scatter_view_type scatter_view_def; - typedef typename test_scatter_view_impl_cls::orig_view_type orig_view_def; - test_scatter_view_config() {} - void run_test(int n) { // Test creation via create_scatter_view { @@ -351,7 +352,7 @@ struct test_scatter_view_config { scatter_view_def scatter_view = Kokkos::Experimental::create_scatter_view< op, duplication, contribution>(original_view); - test_scatter_view_impl_cls scatter_view_test_impl(scatter_view); scatter_view_test_impl.initialize(original_view); @@ -379,7 +380,7 @@ struct test_scatter_view_config { orig_view_def original_view("original_view", n); scatter_view_def scatter_view(original_view); - test_scatter_view_impl_cls scatter_view_test_impl(scatter_view); scatter_view_test_impl.initialize(original_view); @@ -405,17 +406,18 @@ struct test_scatter_view_config { } }; -template +template struct TestDuplicatedScatterView { TestDuplicatedScatterView(int n) { // ScatterSum test - test_scatter_view_config< - ExecSpace, Kokkos::LayoutRight, Kokkos::Experimental::ScatterDuplicated, - Kokkos::Experimental::ScatterNonAtomic, ScatterType> + test_scatter_view_config test_sv_right_config; test_sv_right_config.run_test(n); test_scatter_view_config< - ExecSpace, Kokkos::LayoutLeft, Kokkos::Experimental::ScatterDuplicated, + DeviceType, Kokkos::LayoutLeft, Kokkos::Experimental::ScatterDuplicated, Kokkos::Experimental::ScatterNonAtomic, ScatterType> test_sv_left_config; test_sv_left_config.run_test(n); @@ -429,6 +431,16 @@ template struct TestDuplicatedScatterView { TestDuplicatedScatterView(int) {} }; +template +struct TestDuplicatedScatterView< + Kokkos::Device, ScatterType> { + TestDuplicatedScatterView(int) {} +}; +template +struct TestDuplicatedScatterView< + Kokkos::Device, ScatterType> { + TestDuplicatedScatterView(int) {} +}; #endif #ifdef KOKKOS_ENABLE_ROCM @@ -440,17 +452,15 @@ struct TestDuplicatedScatterView { }; #endif -template +template void test_scatter_view(int n) { - // all of these configurations should compile okay, but only some of them are - // correct and/or sensible in terms of memory use - Kokkos::Experimental::UniqueToken unique_token{ExecSpace()}; + using execution_space = typename DeviceType::execution_space; // no atomics or duplication is only sensible if the execution space // is running essentially in serial (doesn't have to be Serial though, // we also test OpenMP with one thread: LAMMPS cares about that) - if (unique_token.size() == 1) { - test_scatter_view_config @@ -458,9 +468,9 @@ void test_scatter_view(int n) { test_sv_config.run_test(n); } #ifdef KOKKOS_ENABLE_SERIAL - if (!std::is_same::value) { + if (!std::is_same::value) { #endif - test_scatter_view_config test_sv_config; @@ -473,16 +483,18 @@ void test_scatter_view(int n) { constexpr std::size_t maximum_allowed_total_bytes = 8ull * 1024ull * 1024ull * 1024ull; std::size_t const maximum_allowed_copy_bytes = - maximum_allowed_total_bytes / std::size_t(unique_token.size()); + maximum_allowed_total_bytes / + std::size_t(execution_space().concurrency()); constexpr std::size_t bytes_per_value = sizeof(double) * 3; std::size_t const maximum_allowed_copy_values = maximum_allowed_copy_bytes / bytes_per_value; n = std::min(n, int(maximum_allowed_copy_values)); - TestDuplicatedScatterView duptest(n); + TestDuplicatedScatterView duptest(n); } +// FIXME_HIP ScatterView requires UniqueToken +#ifndef KOKKOS_ENABLE_HIP TEST(TEST_CATEGORY, scatterview) { -#ifndef KOKKOS_ENABLE_ROCM test_scatter_view(10); test_scatter_view(10); test_scatter_view(10); @@ -504,8 +516,38 @@ TEST(TEST_CATEGORY, scatterview) { test_scatter_view(big_n); test_scatter_view(big_n); test_scatter_view(big_n); +} + +TEST(TEST_CATEGORY, scatterview_devicetype) { + using device_type = + Kokkos::Device; + + test_scatter_view(10); + test_scatter_view(10); + test_scatter_view(10); + test_scatter_view(10); + +#ifdef KOKKOS_ENABLE_CUDA + if (std::is_same::value) { + using cuda_device_type = Kokkos::Device; + test_scatter_view(10); + test_scatter_view(10); + test_scatter_view(10); + test_scatter_view(10); + using cudauvm_device_type = + Kokkos::Device; + test_scatter_view( + 10); + test_scatter_view( + 10); + test_scatter_view( + 10); + test_scatter_view( + 10); + } #endif } +#endif } // namespace Test diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_Category.hpp b/lib/kokkos/containers/unit_tests/TestSerial_Category.hpp similarity index 100% rename from lib/kokkos/containers/unit_tests/serial/TestSerial_Category.hpp rename to lib/kokkos/containers/unit_tests/TestSerial_Category.hpp diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_Category.hpp b/lib/kokkos/containers/unit_tests/TestThreads_Category.hpp similarity index 100% rename from lib/kokkos/containers/unit_tests/threads/TestThreads_Category.hpp rename to lib/kokkos/containers/unit_tests/TestThreads_Category.hpp diff --git a/lib/kokkos/containers/unit_tests/TestUnorderedMap.hpp b/lib/kokkos/containers/unit_tests/TestUnorderedMap.hpp index 82782d3bf4..3ec3a4e5ec 100644 --- a/lib/kokkos/containers/unit_tests/TestUnorderedMap.hpp +++ b/lib/kokkos/containers/unit_tests/TestUnorderedMap.hpp @@ -174,6 +174,9 @@ struct TestFind { } // namespace Impl +// MSVC reports a syntax error for this test. +// WORKAROUND MSVC +#ifndef _WIN32 template void test_insert(uint32_t num_nodes, uint32_t num_inserts, uint32_t num_duplicates, bool near) { @@ -225,6 +228,7 @@ void test_insert(uint32_t num_nodes, uint32_t num_inserts, EXPECT_EQ(0u, map.size()); } } +#endif template void test_failed_insert(uint32_t num_nodes) { @@ -291,12 +295,17 @@ void test_deep_copy(uint32_t num_nodes) { } } +// FIXME_HIP deadlock +#ifndef KOKKOS_ENABLE_HIP +// WORKAROUND MSVC +#ifndef _WIN32 TEST(TEST_CATEGORY, UnorderedMap_insert) { for (int i = 0; i < 500; ++i) { test_insert(100000, 90000, 100, true); test_insert(100000, 90000, 100, false); } } +#endif TEST(TEST_CATEGORY, UnorderedMap_failed_insert) { for (int i = 0; i < 1000; ++i) test_failed_insert(10000); @@ -305,6 +314,19 @@ TEST(TEST_CATEGORY, UnorderedMap_failed_insert) { TEST(TEST_CATEGORY, UnorderedMap_deep_copy) { for (int i = 0; i < 2; ++i) test_deep_copy(10000); } +#endif + +TEST(TEST_CATEGORY, UnorderedMap_valid_empty) { + using Key = int; + using Value = int; + using Map = Kokkos::UnorderedMap; + + Map m{}; + Map n{}; + n = Map{m.capacity()}; + n.rehash(m.capacity()); + Kokkos::deep_copy(n, m); +} } // namespace Test diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank67.cpp b/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank67.cpp deleted file mode 100644 index 19e248dd93..0000000000 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank67.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_ScatterView.cpp b/lib/kokkos/containers/unit_tests/cuda/TestCuda_ScatterView.cpp deleted file mode 100644 index 10b63d037d..0000000000 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_ScatterView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_StaticCrsGraph.cpp b/lib/kokkos/containers/unit_tests/cuda/TestCuda_StaticCrsGraph.cpp deleted file mode 100644 index 9c93da9c50..0000000000 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_StaticCrsGraph.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_UnorderedMap.cpp b/lib/kokkos/containers/unit_tests/cuda/TestCuda_UnorderedMap.cpp deleted file mode 100644 index b204e68977..0000000000 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_UnorderedMap.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_ViewCtorPropEmbeddedDim.cpp b/lib/kokkos/containers/unit_tests/cuda/TestCuda_ViewCtorPropEmbeddedDim.cpp deleted file mode 100644 index c865deb0b2..0000000000 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_ViewCtorPropEmbeddedDim.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_generic.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_generic.cpp deleted file mode 100644 index 778bd891d6..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_generic.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank12345.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank12345.cpp deleted file mode 100644 index 0bb77a266d..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank12345.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank67.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank67.cpp deleted file mode 100644 index 6594cb3213..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank67.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynamicView.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynamicView.cpp deleted file mode 100644 index c1efc778a6..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynamicView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_ErrorReporter.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_ErrorReporter.cpp deleted file mode 100644 index 3f68c6d07f..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_ErrorReporter.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_OffsetView.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_OffsetView.cpp deleted file mode 100644 index 1719300228..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_OffsetView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_ScatterView.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_ScatterView.cpp deleted file mode 100644 index 8f9eb05918..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_ScatterView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_StaticCrsGraph.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_StaticCrsGraph.cpp deleted file mode 100644 index 4f513efb0f..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_StaticCrsGraph.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_UnorderedMap.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_UnorderedMap.cpp deleted file mode 100644 index 517135290a..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_UnorderedMap.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_ViewCtorPropEmbeddedDim.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_ViewCtorPropEmbeddedDim.cpp deleted file mode 100644 index de2e96be73..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_ViewCtorPropEmbeddedDim.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_generic.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_generic.cpp deleted file mode 100644 index 637be64dfa..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_generic.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_rank12345.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_rank12345.cpp deleted file mode 100644 index 01b57a1690..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_rank12345.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_rank67.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_rank67.cpp deleted file mode 100644 index 7d742eaeed..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_rank67.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynamicView.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynamicView.cpp deleted file mode 100644 index 75b616f168..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynamicView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ErrorReporter.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ErrorReporter.cpp deleted file mode 100644 index 1f00f18532..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ErrorReporter.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_OffsetView.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_OffsetView.cpp deleted file mode 100644 index 98531ff212..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_OffsetView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ScatterView.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ScatterView.cpp deleted file mode 100644 index c49577f75d..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ScatterView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_StaticCrsGraph.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_StaticCrsGraph.cpp deleted file mode 100644 index d8ab7b6b21..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_StaticCrsGraph.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_UnorderedMap.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_UnorderedMap.cpp deleted file mode 100644 index c3db0c0d88..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_UnorderedMap.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_Vector.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_Vector.cpp deleted file mode 100644 index 7ac49f24fb..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_Vector.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ViewCtorPropEmbeddedDim.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ViewCtorPropEmbeddedDim.cpp deleted file mode 100644 index b9ae5d80ed..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ViewCtorPropEmbeddedDim.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/rocm/TestROCm_BitSet.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_BitSet.cpp deleted file mode 100644 index c72077eb4c..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_BitSet.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/rocm/TestROCm_DualView.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_DualView.cpp deleted file mode 100644 index e9820395ba..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_DualView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_generic.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_generic.cpp deleted file mode 100644 index 7a3dd65f0e..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_generic.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_rank12345.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_rank12345.cpp deleted file mode 100644 index 3963dd9c9c..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_rank12345.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_rank67.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_rank67.cpp deleted file mode 100644 index b9a4582622..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_rank67.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynamicView.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynamicView.cpp deleted file mode 100644 index 285ed916c4..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynamicView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/rocm/TestROCm_ErrorReporter.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_ErrorReporter.cpp deleted file mode 100644 index 2af2f79a16..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_ErrorReporter.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/rocm/TestROCm_ScatterView.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_ScatterView.cpp deleted file mode 100644 index f7000bc99e..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_ScatterView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/rocm/TestROCm_StaticCrsGraph.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_StaticCrsGraph.cpp deleted file mode 100644 index bb1e04c536..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_StaticCrsGraph.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/rocm/TestROCm_UnorderedMap.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_UnorderedMap.cpp deleted file mode 100644 index 7b8172fabd..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_UnorderedMap.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/rocm/TestROCm_Vector.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_Vector.cpp deleted file mode 100644 index 1759797487..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_Vector.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/rocm/TestROCm_ViewCtorPropEmbeddedDim.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_ViewCtorPropEmbeddedDim.cpp deleted file mode 100644 index e95680445b..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_ViewCtorPropEmbeddedDim.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_generic.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_generic.cpp deleted file mode 100644 index e8f577c6ac..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_generic.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_rank12345.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_rank12345.cpp deleted file mode 100644 index 7db8983c1b..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_rank12345.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_rank67.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_rank67.cpp deleted file mode 100644 index a3a745efb5..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_rank67.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_DynamicView.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_DynamicView.cpp deleted file mode 100644 index 6624e3aa07..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_DynamicView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_ErrorReporter.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_ErrorReporter.cpp deleted file mode 100644 index 280302275f..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_ErrorReporter.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_OffsetView.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_OffsetView.cpp deleted file mode 100644 index 5f8caf7c3f..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_OffsetView.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_ScatterView.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_ScatterView.cpp deleted file mode 100644 index 3f102e5cbc..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_ScatterView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_StaticCrsGraph.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_StaticCrsGraph.cpp deleted file mode 100644 index 64f09e76e5..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_StaticCrsGraph.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_UnorderedMap.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_UnorderedMap.cpp deleted file mode 100644 index a72be8e2fc..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_UnorderedMap.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_Vector.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_Vector.cpp deleted file mode 100644 index 3826dab1d7..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_Vector.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_ViewCtorPropEmbeddedDim.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_ViewCtorPropEmbeddedDim.cpp deleted file mode 100644 index 1251808bed..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_ViewCtorPropEmbeddedDim.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_generic.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_generic.cpp deleted file mode 100644 index b015683bb9..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_generic.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_rank12345.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_rank12345.cpp deleted file mode 100644 index dea56c408b..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_rank12345.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_rank67.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_rank67.cpp deleted file mode 100644 index 17a289b506..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_rank67.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_DynamicView.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_DynamicView.cpp deleted file mode 100644 index 499321dbbe..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_DynamicView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_ErrorReporter.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_ErrorReporter.cpp deleted file mode 100644 index 513fdc4af6..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_ErrorReporter.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_OffsetView.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_OffsetView.cpp deleted file mode 100644 index 717967b2ef..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_OffsetView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_ScatterView.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_ScatterView.cpp deleted file mode 100644 index fbb37606ea..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_ScatterView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_StaticCrsGraph.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_StaticCrsGraph.cpp deleted file mode 100644 index 29117c4ef6..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_StaticCrsGraph.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_UnorderedMap.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_UnorderedMap.cpp deleted file mode 100644 index 9a06288de4..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_UnorderedMap.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_Vector.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_Vector.cpp deleted file mode 100644 index 33e8b26c8e..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_Vector.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_ViewCtorPropEmbeddedDim.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_ViewCtorPropEmbeddedDim.cpp deleted file mode 100644 index 567b224195..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_ViewCtorPropEmbeddedDim.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#include diff --git a/lib/kokkos/core/cmake/Dependencies.cmake b/lib/kokkos/core/cmake/Dependencies.cmake index 9ad7660bdf..cc901a4ede 100644 --- a/lib/kokkos/core/cmake/Dependencies.cmake +++ b/lib/kokkos/core/cmake/Dependencies.cmake @@ -1,5 +1,5 @@ TRIBITS_PACKAGE_DEFINE_DEPENDENCIES( - LIB_OPTIONAL_TPLS Pthread CUDA HWLOC QTHREADS DLlib HPX + LIB_OPTIONAL_TPLS Pthread CUDA HWLOC DLlib HPX TEST_OPTIONAL_TPLS CUSPARSE ) diff --git a/lib/kokkos/core/cmake/KokkosCore_config.h.in b/lib/kokkos/core/cmake/KokkosCore_config.h.in index f430c2b5f6..095c869a32 100644 --- a/lib/kokkos/core/cmake/KokkosCore_config.h.in +++ b/lib/kokkos/core/cmake/KokkosCore_config.h.in @@ -12,6 +12,7 @@ #endif #cmakedefine KOKKOS_ENABLE_CUDA +#cmakedefine KOKKOS_ENABLE_HIP #cmakedefine KOKKOS_ENABLE_OPENMP #cmakedefine KOKKOS_ENABLE_THREADS #cmakedefine KOKKOS_ENABLE_SERIAL @@ -63,6 +64,10 @@ #cmakedefine KOKKOS_ENABLE_ISA_POWERPCLE #endif +#ifdef KOKKOS_ENABLE_HIP +#cmakedefine KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE +#endif + #cmakedefine KOKKOS_ARCH_ARMV80 1 #cmakedefine KOKKOS_ARCH_ARMV81 1 #cmakedefine KOKKOS_ARCH_ARMV8_THUNDERX 1 diff --git a/lib/kokkos/core/perf_test/CMakeLists.txt b/lib/kokkos/core/perf_test/CMakeLists.txt index 79567835ee..ca695e2700 100644 --- a/lib/kokkos/core/perf_test/CMakeLists.txt +++ b/lib/kokkos/core/perf_test/CMakeLists.txt @@ -48,6 +48,14 @@ SET(SOURCES PerfTest_ViewResize_8.cpp ) +IF(Kokkos_ENABLE_HIP) +# FIXME requires TeamPolicy + LIST(REMOVE_ITEM SOURCES + PerfTest_CustomReduction.cpp + PerfTest_ExecSpacePartitioning.cpp + ) +ENDIF() + # Per #374, we always want to build this test, but we only want to run # it as a PERFORMANCE test. That's why we separate building the test # from running the test. @@ -58,11 +66,14 @@ KOKKOS_INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/../../algorithms/src") KOKKOS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) KOKKOS_INCLUDE_DIRECTORIES(REQUIRED_DURING_INSTALLATION_TESTING ${CMAKE_CURRENT_SOURCE_DIR}) -KOKKOS_ADD_EXECUTABLE_AND_TEST( - PerfTestExec - SOURCES ${SOURCES} - CATEGORIES PERFORMANCE -) +# This test currently times out for MSVC +IF(NOT KOKKOS_CXX_COMPILER_ID STREQUAL "MSVC") + KOKKOS_ADD_EXECUTABLE_AND_TEST( + PerfTestExec + SOURCES ${SOURCES} + CATEGORIES PERFORMANCE + ) +ENDIF() KOKKOS_ADD_EXECUTABLE_AND_TEST( PerformanceTest_TaskDag diff --git a/lib/kokkos/core/perf_test/PerfTestBlasKernels.hpp b/lib/kokkos/core/perf_test/PerfTestBlasKernels.hpp index a5a376565d..2717b133bd 100644 --- a/lib/kokkos/core/perf_test/PerfTestBlasKernels.hpp +++ b/lib/kokkos/core/perf_test/PerfTestBlasKernels.hpp @@ -49,22 +49,138 @@ namespace Kokkos { -template -struct Dot; +template +struct Dot { + typedef typename Type::execution_space execution_space; -template -struct DotSingle; + static_assert(static_cast(Type::Rank) == static_cast(1), + "Dot static_assert Fail: Rank != 1"); -template -struct Scale; + typedef double value_type; -template -struct AXPBY; +#if 1 + typename Type::const_type X; + typename Type::const_type Y; +#else + Type X; + Type Y; +#endif + Dot(const Type& arg_x, const Type& arg_y) : X(arg_x), Y(arg_y) {} + + KOKKOS_INLINE_FUNCTION + void operator()(int i, value_type& update) const { update += X[i] * Y[i]; } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& update, + const volatile value_type& source) { + update += source; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& update) { update = 0; } +}; + +template +struct DotSingle { + typedef typename Type::execution_space execution_space; + + static_assert(static_cast(Type::Rank) == static_cast(1), + "DotSingle static_assert Fail: Rank != 1"); + + typedef double value_type; + +#if 1 + typename Type::const_type X; +#else + Type X; +#endif + + DotSingle(const Type& arg_x) : X(arg_x) {} + + KOKKOS_INLINE_FUNCTION + void operator()(int i, value_type& update) const { + const typename Type::value_type& x = X[i]; + update += x * x; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& update, + const volatile value_type& source) { + update += source; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& update) { update = 0; } +}; + +template +struct Scale { + typedef typename VectorType::execution_space execution_space; + + static_assert(static_cast(ScalarType::Rank) == + static_cast(0), + "Scale static_assert Fail: ScalarType::Rank != 0"); + + static_assert(static_cast(VectorType::Rank) == + static_cast(1), + "Scale static_assert Fail: VectorType::Rank != 1"); + +#if 1 + typename ScalarType::const_type alpha; +#else + ScalarType alpha; +#endif + + VectorType Y; + + Scale(const ScalarType& arg_alpha, const VectorType& arg_Y) + : alpha(arg_alpha), Y(arg_Y) {} + + KOKKOS_INLINE_FUNCTION + void operator()(int i) const { Y[i] *= alpha(); } +}; + +template +struct AXPBY { + typedef typename VectorType::execution_space execution_space; + + static_assert(static_cast(ScalarType::Rank) == + static_cast(0), + "AXPBY static_assert Fail: ScalarType::Rank != 0"); + + static_assert(static_cast(ConstVectorType::Rank) == + static_cast(1), + "AXPBY static_assert Fail: ConstVectorType::Rank != 1"); + + static_assert(static_cast(VectorType::Rank) == + static_cast(1), + "AXPBY static_assert Fail: VectorType::Rank != 1"); + +#if 1 + typename ScalarType::const_type alpha, beta; + typename ConstVectorType::const_type X; +#else + ScalarType alpha, beta; + ConstVectorType X; +#endif + + VectorType Y; + + AXPBY(const ScalarType& arg_alpha, const ConstVectorType& arg_X, + const ScalarType& arg_beta, const VectorType& arg_Y) + : alpha(arg_alpha), beta(arg_beta), X(arg_X), Y(arg_Y) {} + + KOKKOS_INLINE_FUNCTION + void operator()(int i) const { Y[i] = alpha() * X[i] + beta() * Y[i]; } +}; + +} /* namespace Kokkos */ + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { /** \brief Y = alpha * X + beta * Y */ template void axpby(const ConstScalarType& alpha, const ConstVectorType& X, @@ -99,138 +215,4 @@ void dot(const ConstVectorType& X, const Finalize& finalize) { } /* namespace Kokkos */ -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { - -template -struct Dot { - typedef typename Device::execution_space execution_space; - - static_assert(static_cast(Type::Rank) == static_cast(1), - "Dot static_assert Fail: Rank != 1"); - - typedef double value_type; - -#if 1 - typename Type::const_type X; - typename Type::const_type Y; -#else - Type X; - Type Y; -#endif - - Dot(const Type& arg_x, const Type& arg_y) : X(arg_x), Y(arg_y) {} - - KOKKOS_INLINE_FUNCTION - void operator()(int i, value_type& update) const { update += X[i] * Y[i]; } - - KOKKOS_INLINE_FUNCTION - static void join(volatile value_type& update, - const volatile value_type& source) { - update += source; - } - - KOKKOS_INLINE_FUNCTION - static void init(value_type& update) { update = 0; } -}; - -template -struct DotSingle { - typedef typename Device::execution_space execution_space; - - static_assert(static_cast(Type::Rank) == static_cast(1), - "DotSingle static_assert Fail: Rank != 1"); - - typedef double value_type; - -#if 1 - typename Type::const_type X; -#else - Type X; -#endif - - DotSingle(const Type& arg_x) : X(arg_x) {} - - KOKKOS_INLINE_FUNCTION - void operator()(int i, value_type& update) const { - const typename Type::value_type& x = X[i]; - update += x * x; - } - - KOKKOS_INLINE_FUNCTION - static void join(volatile value_type& update, - const volatile value_type& source) { - update += source; - } - - KOKKOS_INLINE_FUNCTION - static void init(value_type& update) { update = 0; } -}; - -template -struct Scale { - typedef typename Device::execution_space execution_space; - - static_assert(static_cast(ScalarType::Rank) == - static_cast(0), - "Scale static_assert Fail: ScalarType::Rank != 0"); - - static_assert(static_cast(VectorType::Rank) == - static_cast(1), - "Scale static_assert Fail: VectorType::Rank != 1"); - -#if 1 - typename ScalarType::const_type alpha; -#else - ScalarType alpha; -#endif - - VectorType Y; - - Scale(const ScalarType& arg_alpha, const VectorType& arg_Y) - : alpha(arg_alpha), Y(arg_Y) {} - - KOKKOS_INLINE_FUNCTION - void operator()(int i) const { Y[i] *= alpha(); } -}; - -template -struct AXPBY { - typedef typename Device::execution_space execution_space; - - static_assert(static_cast(ScalarType::Rank) == - static_cast(0), - "AXPBY static_assert Fail: ScalarType::Rank != 0"); - - static_assert(static_cast(ConstVectorType::Rank) == - static_cast(1), - "AXPBY static_assert Fail: ConstVectorType::Rank != 1"); - - static_assert(static_cast(VectorType::Rank) == - static_cast(1), - "AXPBY static_assert Fail: VectorType::Rank != 1"); - -#if 1 - typename ScalarType::const_type alpha, beta; - typename ConstVectorType::const_type X; -#else - ScalarType alpha, beta; - ConstVectorType X; -#endif - - VectorType Y; - - AXPBY(const ScalarType& arg_alpha, const ConstVectorType& arg_X, - const ScalarType& arg_beta, const VectorType& arg_Y) - : alpha(arg_alpha), beta(arg_beta), X(arg_X), Y(arg_Y) {} - - KOKKOS_INLINE_FUNCTION - void operator()(int i) const { Y[i] = alpha() * X[i] + beta() * Y[i]; } -}; - -} /* namespace Kokkos */ - #endif /* #ifndef KOKKOS_BLAS_KERNELS_HPP */ diff --git a/lib/kokkos/core/perf_test/PerfTestGramSchmidt.cpp b/lib/kokkos/core/perf_test/PerfTestGramSchmidt.cpp index 5e85163acf..0916b230ec 100644 --- a/lib/kokkos/core/perf_test/PerfTestGramSchmidt.cpp +++ b/lib/kokkos/core/perf_test/PerfTestGramSchmidt.cpp @@ -69,7 +69,10 @@ struct InvNorm2 : public Kokkos::DotSingle { KOKKOS_INLINE_FUNCTION void final(value_type& result) const { - result = std::sqrt(result); +#ifndef KOKKOS_ENABLE_HIP // FIXME_HIP + using std::sqrt; +#endif + result = sqrt(result); Rjj() = result; inv() = (0 < result) ? 1.0 / result : 0; } diff --git a/lib/kokkos/core/perf_test/PerfTestMain.cpp b/lib/kokkos/core/perf_test/PerfTestMain.cpp index 8cd015fbe8..8f4d48d57b 100644 --- a/lib/kokkos/core/perf_test/PerfTestMain.cpp +++ b/lib/kokkos/core/perf_test/PerfTestMain.cpp @@ -54,13 +54,13 @@ int command_line_num_args(int n = 0) { return n_args; } -const char* command_line_arg(int k, char** input_args = NULL) { +const char* command_line_arg(int k, char** input_args = nullptr) { static char** args; - if (input_args != NULL) args = input_args; + if (input_args != nullptr) args = input_args; if (command_line_num_args() > k) return args[k]; else - return NULL; + return nullptr; } } // namespace Test diff --git a/lib/kokkos/core/perf_test/PerfTest_Category.hpp b/lib/kokkos/core/perf_test/PerfTest_Category.hpp index c2cff22502..0f24490bfe 100644 --- a/lib/kokkos/core/perf_test/PerfTest_Category.hpp +++ b/lib/kokkos/core/perf_test/PerfTest_Category.hpp @@ -50,7 +50,7 @@ namespace Test { extern int command_line_num_args(int n = 0); -extern const char* command_line_arg(int k, char** input_args = NULL); +extern const char* command_line_arg(int k, char** input_args = nullptr); } // namespace Test diff --git a/lib/kokkos/core/perf_test/PerfTest_CustomReduction.cpp b/lib/kokkos/core/perf_test/PerfTest_CustomReduction.cpp index d06851ec9b..75ca4a0d5a 100644 --- a/lib/kokkos/core/perf_test/PerfTest_CustomReduction.cpp +++ b/lib/kokkos/core/perf_test/PerfTest_CustomReduction.cpp @@ -76,8 +76,8 @@ void custom_reduction_test(int N, int R, int num_trials) { Kokkos::ThreadVectorRange(team, 32), [&](const int& k, Scalar& max_) { const Scalar val = a((i * 32 + j) * 32 + k); - if (val > lmax) lmax = val; - if ((k == 11) && (j == 17) && (i == 2)) lmax = 11.5; + if (val > max_) max_ = val; + if ((k == 11) && (j == 17) && (i == 2)) max_ = 11.5; }, Kokkos::Max(t_max)); if (t_max > thread_max) thread_max = t_max; @@ -106,8 +106,8 @@ void custom_reduction_test(int N, int R, int num_trials) { Kokkos::ThreadVectorRange(team, 32), [&](const int& k, Scalar& max_) { const Scalar val = a((i * 32 + j) * 32 + k); - if (val > lmax) lmax = val; - if ((k == 11) && (j == 17) && (i == 2)) lmax = 11.5; + if (val > max_) max_ = val; + if ((k == 11) && (j == 17) && (i == 2)) max_ = 11.5; }, Kokkos::Max(t_max)); if (t_max > thread_max) thread_max = t_max; diff --git a/lib/kokkos/core/src/CMakeLists.txt b/lib/kokkos/core/src/CMakeLists.txt index eb058a982e..5b91b30787 100644 --- a/lib/kokkos/core/src/CMakeLists.txt +++ b/lib/kokkos/core/src/CMakeLists.txt @@ -35,6 +35,10 @@ IF (KOKKOS_ENABLE_OPENMP) ENDIF() ENDIF() +IF (KOKKOS_ENABLE_OPENMPTARGET) + APPEND_GLOB(KOKKOS_CORE_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/OpenMPTarget/*.cpp) +ENDIF() + IF (KOKKOS_ENABLE_PTHREAD) APPEND_GLOB(KOKKOS_CORE_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/Threads/*.cpp) IF (KOKKOS_ENABLE_ETI) @@ -42,6 +46,10 @@ IF (KOKKOS_ENABLE_PTHREAD) ENDIF() ENDIF() +IF (KOKKOS_ENABLE_HIP) + APPEND_GLOB(KOKKOS_CORE_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/HIP/*.cpp) +ENDIF() + IF (KOKKOS_ENABLE_HPX) APPEND_GLOB(KOKKOS_CORE_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/HPX/*.cpp) ENDIF() diff --git a/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp b/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp index 24be022d24..e11961d763 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp @@ -147,7 +147,7 @@ void CudaSpace::access_error(const void *const) { /*--------------------------------------------------------------------------*/ bool CudaUVMSpace::available() { -#if defined(CUDA_VERSION) && (6000 <= CUDA_VERSION) && !defined(__APPLE__) +#if defined(CUDA_VERSION) && !defined(__APPLE__) enum { UVM_available = true }; #else enum { UVM_available = false }; @@ -219,19 +219,10 @@ void *CudaSpace::allocate(const size_t arg_alloc_size) const { void *CudaUVMSpace::allocate(const size_t arg_alloc_size) const { void *ptr = nullptr; - enum { max_uvm_allocations = 65536 }; - Cuda::impl_static_fence(); if (arg_alloc_size > 0) { Kokkos::Impl::num_uvm_allocations++; - if (Kokkos::Impl::num_uvm_allocations.load() > max_uvm_allocations) { - throw Experimental::CudaRawMemoryAllocationFailure( - arg_alloc_size, 1, - Experimental::RawMemoryAllocationFailure::FailureMode:: - MaximumCudaUVMAllocationsExceeded); - } - auto error_code = cudaMallocManaged(&ptr, arg_alloc_size, cudaMemAttachGlobal); @@ -360,7 +351,8 @@ SharedAllocationRecord::attach_texture_object( resDesc.res.linear.sizeInBytes = alloc_size; resDesc.res.linear.devPtr = alloc_ptr; - CUDA_SAFE_CALL(cudaCreateTextureObject(&tex_obj, &resDesc, &texDesc, NULL)); + CUDA_SAFE_CALL( + cudaCreateTextureObject(&tex_obj, &resDesc, &texDesc, nullptr)); return tex_obj; } @@ -797,6 +789,8 @@ SharedAllocationRecord // Iterate records to print orphaned memory ... void SharedAllocationRecord::print_records( std::ostream &s, const Kokkos::CudaSpace &, bool detail) { + (void)s; + (void)detail; #ifdef KOKKOS_DEBUG SharedAllocationRecord *r = &s_root_record; @@ -869,6 +863,8 @@ void SharedAllocationRecord::print_records( void SharedAllocationRecord::print_records( std::ostream &s, const Kokkos::CudaUVMSpace &, bool detail) { + (void)s; + (void)detail; #ifdef KOKKOS_DEBUG SharedAllocationRecord::print_host_accessible_records( s, "CudaUVM", &s_root_record, detail); @@ -881,6 +877,8 @@ void SharedAllocationRecord::print_records( void SharedAllocationRecord::print_records( std::ostream &s, const Kokkos::CudaHostPinnedSpace &, bool detail) { + (void)s; + (void)detail; #ifdef KOKKOS_DEBUG SharedAllocationRecord::print_host_accessible_records( s, "CudaHostPinned", &s_root_record, detail); @@ -895,7 +893,7 @@ void SharedAllocationRecord::print_records( //============================================================================== void *cuda_resize_scratch_space(std::int64_t bytes, bool force_shrink) { - static void *ptr = NULL; + static void *ptr = nullptr; static std::int64_t current_size = 0; if (current_size == 0) { current_size = bytes; @@ -917,6 +915,27 @@ void *cuda_resize_scratch_space(std::int64_t bytes, bool force_shrink) { return ptr; } +void cuda_prefetch_pointer(const Cuda &space, const void *ptr, size_t bytes, + bool to_device) { + if ((ptr == nullptr) || (bytes == 0)) return; + cudaPointerAttributes attr; + CUDA_SAFE_CALL(cudaPointerGetAttributes(&attr, ptr)); + // I measured this and it turns out prefetching towards the host slows + // DualView syncs down. Probably because the latency is not too bad in the + // first place for the pull down. If we want to change that provde + // cudaCpuDeviceId as the device if to_device is false +#if CUDA_VERSION < 10000 + bool is_managed = attr.isManaged; +#else + bool is_managed = attr.type == cudaMemoryTypeManaged; +#endif + if (to_device && is_managed && + space.cuda_device_prop().concurrentManagedAccess) { + CUDA_SAFE_CALL(cudaMemPrefetchAsync(ptr, bytes, space.cuda_device(), + space.cuda_stream())); + } +} + } // namespace Impl } // namespace Kokkos #else diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Error.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Error.hpp index 3b674bbb30..01e60315ee 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Error.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Error.hpp @@ -58,10 +58,10 @@ namespace Impl { void cuda_device_synchronize(); void cuda_internal_error_throw(cudaError e, const char* name, - const char* file = NULL, const int line = 0); + const char* file = nullptr, const int line = 0); inline void cuda_internal_safe_call(cudaError e, const char* name, - const char* file = NULL, + const char* file = nullptr, const int line = 0) { if (cudaSuccess != e) { cuda_internal_error_throw(e, name, file, line); diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.cpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.cpp index b3c7edf67c..37d0ffb687 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.cpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.cpp @@ -115,10 +115,14 @@ __global__ void query_cuda_kernel_arch(int *d_arch) { /** Query what compute capability is actually launched to the device: */ int cuda_kernel_arch() { - int *d_arch = 0; + int arch = 0; + int *d_arch = nullptr; + cudaMalloc((void **)&d_arch, sizeof(int)); + cudaMemcpy(d_arch, &arch, sizeof(int), cudaMemcpyDefault); + query_cuda_kernel_arch<<<1, 1>>>(d_arch); - int arch = 0; + cudaMemcpy(&arch, d_arch, sizeof(int), cudaMemcpyDefault); cudaFree(d_arch); return arch; @@ -313,6 +317,7 @@ void CudaInternal::initialize(int cuda_device_id, cudaStream_t stream) { enum { WordSize = sizeof(size_type) }; +#ifndef KOKKOS_IMPL_TURN_OFF_CUDA_HOST_INIT_CHECK #ifdef KOKKOS_ENABLE_DEPRECATED_CODE if (!HostSpace::execution_space::is_initialized()) { #else @@ -323,6 +328,7 @@ void CudaInternal::initialize(int cuda_device_id, cudaStream_t stream) { "initialized"); throw_runtime_exception(msg); } +#endif const CudaInternalDevices &dev_info = CudaInternalDevices::singleton(); @@ -340,7 +346,8 @@ void CudaInternal::initialize(int cuda_device_id, cudaStream_t stream) { if (ok_init && ok_dev) { const struct cudaDeviceProp &cudaProp = dev_info.m_cudaProp[cuda_device_id]; - m_cudaDev = cuda_device_id; + m_cudaDev = cuda_device_id; + m_deviceProp = cudaProp; CUDA_SAFE_CALL(cudaSetDevice(m_cudaDev)); Kokkos::Impl::cuda_device_synchronize(); @@ -348,17 +355,24 @@ void CudaInternal::initialize(int cuda_device_id, cudaStream_t stream) { // Query what compute capability architecture a kernel executes: m_cudaArch = cuda_kernel_arch(); + if (m_cudaArch == 0) { + std::stringstream ss; + ss << "Kokkos::Cuda::initialize ERROR: likely mismatch of architecture" + << std::endl; + std::string msg = ss.str(); + Kokkos::abort(msg.c_str()); + } + int compiled_major = m_cudaArch / 100; int compiled_minor = (m_cudaArch % 100) / 10; - if (compiled_major < 5 && cudaProp.major >= 5) { + if (compiled_major != cudaProp.major || compiled_minor < cudaProp.minor) { std::stringstream ss; ss << "Kokkos::Cuda::initialize ERROR: running kernels compiled for " "compute capability " << compiled_major << "." << compiled_minor - << " (< 5.0) on device with compute capability " << cudaProp.major - << "." << cudaProp.minor - << " (>=5.0), this would give incorrect results!" << std::endl; + << " on device with compute capability " << cudaProp.major << "." + << cudaProp.minor << " is not supported by CUDA!" << std::endl; std::string msg = ss.str(); Kokkos::abort(msg.c_str()); } @@ -742,7 +756,7 @@ int Cuda::impl_is_initialized() void Cuda::initialize(const Cuda::SelectDevice config, size_t num_instances) #else void Cuda::impl_initialize(const Cuda::SelectDevice config, - size_t num_instances) + size_t /*num_instances*/) #endif { Impl::CudaInternal::singleton().initialize(config.cuda_device_id, 0); @@ -826,6 +840,9 @@ const char *Cuda::name() { return "Cuda"; } cudaStream_t Cuda::cuda_stream() const { return m_space_instance->m_stream; } int Cuda::cuda_device() const { return m_space_instance->m_cudaDev; } +const cudaDeviceProp &Cuda::cuda_device_prop() const { + return m_space_instance->m_deviceProp; +} } // namespace Kokkos diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp index 9d2c939af8..2158f03dd5 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp @@ -97,6 +97,8 @@ class CudaInternal { int m_maxThreadsPerSM; int m_maxThreadsPerBlock; + cudaDeviceProp m_deviceProp; + mutable size_type m_scratchSpaceCount; mutable size_type m_scratchFlagsCount; mutable size_type m_scratchUnifiedCount; diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp index 590fa7a784..ca72b3b302 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp @@ -150,7 +150,7 @@ template __global__ static void cuda_parallel_launch_constant_or_global_memory( const DriverType* driver_ptr) { const DriverType& driver = - driver_ptr != NULL + driver_ptr != nullptr ? *driver_ptr : *((const DriverType*)kokkos_impl_cuda_constant_memory_buffer); @@ -162,7 +162,7 @@ __global__ __launch_bounds__(maxTperB, minBperSM) static void cuda_parallel_launch_constant_or_global_memory( const DriverType* driver_ptr) { const DriverType& driver = - driver_ptr != NULL + driver_ptr != nullptr ? *driver_ptr : *((const DriverType*)kokkos_impl_cuda_constant_memory_buffer); @@ -260,6 +260,8 @@ struct CudaParallelLaunch< (prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1))); } +#else + (void)prefer_shmem; #endif // Copy functor to constant memory on the device @@ -317,6 +319,8 @@ struct CudaParallelLaunch, (prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1))); } +#else + (void)prefer_shmem; #endif // Copy functor to constant memory on the device @@ -371,6 +375,8 @@ struct CudaParallelLaunch< (prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1))); } +#else + (void)prefer_shmem; #endif KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); @@ -419,6 +425,8 @@ struct CudaParallelLaunch, (prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1))); } +#else + (void)prefer_shmem; #endif KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); @@ -465,11 +473,13 @@ struct CudaParallelLaunch< (prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1))); } +#else + (void)prefer_shmem; #endif KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); - DriverType* driver_ptr = NULL; + DriverType* driver_ptr = nullptr; driver_ptr = reinterpret_cast( cuda_instance->scratch_functor(sizeof(DriverType))); cudaMemcpyAsync(driver_ptr, &driver, sizeof(DriverType), @@ -516,11 +526,13 @@ struct CudaParallelLaunch, (prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1))); } +#else + (void)prefer_shmem; #endif KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); - DriverType* driver_ptr = NULL; + DriverType* driver_ptr = nullptr; driver_ptr = reinterpret_cast( cuda_instance->scratch_functor(sizeof(DriverType))); cudaMemcpyAsync(driver_ptr, &driver, sizeof(DriverType), diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel.hpp index 78db807478..71ddadf74e 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel.hpp @@ -192,7 +192,7 @@ class TeamPolicyInternal } template - inline int team_size_max(const FunctorType& f, const ReducerType& r, + inline int team_size_max(const FunctorType& f, const ReducerType& /*r*/, const ParallelReduceTag&) const { using closure_type = Impl::ParallelReduce, @@ -304,7 +304,7 @@ class TeamPolicyInternal return m_thread_scratch_size[level]; } - inline typename traits::execution_space space() const { return m_space; } + const typename traits::execution_space& space() const { return m_space; } TeamPolicyInternal() : m_space(typename traits::execution_space()), @@ -895,10 +895,10 @@ class ParallelFor, // Functor's reduce memory, team scan memory, and team shared memory depend // upon team size. - m_scratch_ptr[0] = NULL; + m_scratch_ptr[0] = nullptr; m_scratch_ptr[1] = m_team_size <= 0 - ? NULL + ? nullptr : cuda_resize_scratch_space( static_cast(m_scratch_size[1]) * static_cast(Cuda::concurrency() / @@ -1207,7 +1207,7 @@ class ParallelReduce, ReducerType, ParallelReduce(const FunctorType& arg_functor, const Policy& arg_policy, const ViewType& arg_result, typename std::enable_if::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), @@ -1499,7 +1499,7 @@ class ParallelReduce, ReducerType, ParallelReduce(const FunctorType& arg_functor, const Policy& arg_policy, const ViewType& arg_result, typename std::enable_if::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), @@ -1810,7 +1810,7 @@ class ParallelReduce, ParallelReduce(const FunctorType& arg_functor, const Policy& arg_policy, const ViewType& arg_result, typename std::enable_if::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), @@ -1824,7 +1824,7 @@ class ParallelReduce, m_team_begin(0), m_shmem_begin(0), m_shmem_size(0), - m_scratch_ptr{NULL, NULL}, + m_scratch_ptr{nullptr, nullptr}, m_league_size(arg_policy.league_size()), m_team_size(arg_policy.team_size()), m_vector_size(arg_policy.vector_length()) { @@ -1861,7 +1861,7 @@ class ParallelReduce, m_scratch_size[1] = m_policy.scratch_size(1, m_team_size); m_scratch_ptr[1] = m_team_size <= 0 - ? NULL + ? nullptr : cuda_resize_scratch_space( static_cast(m_scratch_size[1]) * (static_cast(Cuda::concurrency() / @@ -1923,7 +1923,7 @@ class ParallelReduce, m_team_begin(0), m_shmem_begin(0), m_shmem_size(0), - m_scratch_ptr{NULL, NULL}, + m_scratch_ptr{nullptr, nullptr}, m_league_size(arg_policy.league_size()), m_team_size(arg_policy.team_size()), m_vector_size(arg_policy.vector_length()) { @@ -1960,7 +1960,7 @@ class ParallelReduce, m_scratch_size[1] = m_policy.scratch_size(1, m_team_size); m_scratch_ptr[1] = m_team_size <= 0 - ? NULL + ? nullptr : cuda_resize_scratch_space( static_cast(m_scratch_size[1]) * static_cast(Cuda::concurrency() / diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp index 41431bfb8d..7d996fba04 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp @@ -133,7 +133,8 @@ __device__ bool cuda_inter_block_reduction( typename FunctorValueTraits::reference_type value, typename FunctorValueTraits::reference_type neutral, const JoinOp& join, Cuda::size_type* const m_scratch_space, - typename FunctorValueTraits::pointer_type const result, + typename FunctorValueTraits::pointer_type const /*result*/, Cuda::size_type* const m_scratch_flags, const int max_active_thread = blockDim.y) { #ifdef __CUDA_ARCH__ @@ -236,6 +237,12 @@ __device__ bool cuda_inter_block_reduction( // "value" return last_block; #else + (void)value; + (void)neutral; + (void)join; + (void)m_scratch_space; + (void)m_scratch_flags; + (void)max_active_thread; return true; #endif } @@ -426,6 +433,10 @@ __device__ inline // "value" return last_block; #else + (void)reducer; + (void)m_scratch_space; + (void)m_scratch_flags; + (void)max_active_thread; return true; #endif } @@ -500,7 +511,7 @@ struct CudaReductionsFunctor { } __device__ static inline bool scalar_inter_block_reduction( - const FunctorType& functor, const Cuda::size_type block_id, + const FunctorType& functor, const Cuda::size_type /*block_id*/, const Cuda::size_type block_count, Cuda::size_type* const shared_data, Cuda::size_type* const global_data, Cuda::size_type* const global_flags) { Scalar* const global_team_buffer_element = ((Scalar*)global_data); @@ -577,7 +588,7 @@ struct CudaReductionsFunctor { __device__ static inline void scalar_intra_block_reduction( const FunctorType& functor, Scalar value, const bool skip, Scalar* result, - const int shared_elements, Scalar* shared_team_buffer_element) { + const int /*shared_elements*/, Scalar* shared_team_buffer_element) { const int warp_id = (threadIdx.y * blockDim.x) / 32; Scalar* const my_shared_team_buffer_element = shared_team_buffer_element + threadIdx.y * blockDim.x + threadIdx.x; @@ -601,7 +612,7 @@ struct CudaReductionsFunctor { } __device__ static inline bool scalar_inter_block_reduction( - const FunctorType& functor, const Cuda::size_type block_id, + const FunctorType& functor, const Cuda::size_type /*block_id*/, const Cuda::size_type block_count, Cuda::size_type* const shared_data, Cuda::size_type* const global_data, Cuda::size_type* const global_flags) { Scalar* const global_team_buffer_element = ((Scalar*)global_data); diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp index 237d2430d6..decbecc5e6 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp @@ -128,7 +128,7 @@ class TaskQueueSpecialization> { auto current_task = OptionalRef(); // Loop until all queues are empty and no tasks in flight - while (not queue.is_done()) { + while (!queue.is_done()) { if (warp_lane == 0) { // should be (?) same as team_exec.team_rank() == 0 // pop off a task current_task = diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Team.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Team.hpp index ac9ab9660c..d9d5ed0bf3 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Team.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Team.hpp @@ -164,6 +164,8 @@ class CudaTeamMember { template KOKKOS_INLINE_FUNCTION void team_broadcast(ValueType& val, const int& thread_id) const { + (void)val; + (void)thread_id; #ifdef __CUDA_ARCH__ if (1 == blockDim.z) { // team == block __syncthreads(); @@ -184,6 +186,9 @@ class CudaTeamMember { template KOKKOS_INLINE_FUNCTION void team_broadcast(Closure const& f, ValueType& val, const int& thread_id) const { + (void)f; + (void)val; + (void)thread_id; #ifdef __CUDA_ARCH__ f(val); @@ -230,6 +235,8 @@ class CudaTeamMember { typename std::enable_if::value>::type team_reduce(ReducerType const& reducer, typename ReducerType::value_type& value) const noexcept { + (void)reducer; + (void)value; #ifdef __CUDA_ARCH__ cuda_intra_block_reduction(reducer, value, blockDim.y); #endif /* #ifdef __CUDA_ARCH__ */ @@ -274,6 +281,8 @@ class CudaTeamMember { return base_data[threadIdx.y]; #else + (void)value; + (void)global_accum; return Type(); #endif } @@ -302,6 +311,8 @@ class CudaTeamMember { typename std::enable_if::value>::type vector_reduce(ReducerType const& reducer, typename ReducerType::value_type& value) { + (void)reducer; + (void)value; #ifdef __CUDA_ARCH__ if (blockDim.x == 1) return; @@ -509,6 +520,11 @@ class CudaTeamMember { return 0; #else + (void)reducer; + (void)global_scratch_flags; + (void)global_scratch_space; + (void)shmem; + (void)shmem_size; return 0; #endif } @@ -683,6 +699,8 @@ KOKKOS_INLINE_FUNCTION void parallel_for( const Impl::TeamThreadRangeBoundariesStruct& loop_boundaries, const Closure& closure) { + (void)loop_boundaries; + (void)closure; #ifdef __CUDA_ARCH__ for (iType i = loop_boundaries.start + threadIdx.y; i < loop_boundaries.end; i += blockDim.y) @@ -706,6 +724,9 @@ KOKKOS_INLINE_FUNCTION parallel_reduce(const Impl::TeamThreadRangeBoundariesStruct< iType, Impl::CudaTeamMember>& loop_boundaries, const Closure& closure, const ReducerType& reducer) { + (void)loop_boundaries; + (void)closure; + (void)reducer; #ifdef __CUDA_ARCH__ typename ReducerType::value_type value; reducer.init(value); @@ -734,6 +755,9 @@ KOKKOS_INLINE_FUNCTION parallel_reduce(const Impl::TeamThreadRangeBoundariesStruct< iType, Impl::CudaTeamMember>& loop_boundaries, const Closure& closure, ValueType& result) { + (void)loop_boundaries; + (void)closure; + (void)result; #ifdef __CUDA_ARCH__ ValueType val; Kokkos::Sum reducer(val); @@ -755,6 +779,8 @@ KOKKOS_INLINE_FUNCTION void parallel_for( const Impl::TeamVectorRangeBoundariesStruct& loop_boundaries, const Closure& closure) { + (void)loop_boundaries; + (void)closure; #ifdef __CUDA_ARCH__ for (iType i = loop_boundaries.start + threadIdx.y * blockDim.x + threadIdx.x; i < loop_boundaries.end; i += blockDim.y * blockDim.x) @@ -768,6 +794,9 @@ KOKKOS_INLINE_FUNCTION parallel_reduce(const Impl::TeamVectorRangeBoundariesStruct< iType, Impl::CudaTeamMember>& loop_boundaries, const Closure& closure, const ReducerType& reducer) { + (void)loop_boundaries; + (void)closure; + (void)reducer; #ifdef __CUDA_ARCH__ typename ReducerType::value_type value; reducer.init(value); @@ -788,6 +817,9 @@ KOKKOS_INLINE_FUNCTION parallel_reduce(const Impl::TeamVectorRangeBoundariesStruct< iType, Impl::CudaTeamMember>& loop_boundaries, const Closure& closure, ValueType& result) { + (void)loop_boundaries; + (void)closure; + (void)result; #ifdef __CUDA_ARCH__ ValueType val; Kokkos::Sum reducer(val); @@ -818,6 +850,8 @@ KOKKOS_INLINE_FUNCTION void parallel_for( const Impl::ThreadVectorRangeBoundariesStruct& loop_boundaries, const Closure& closure) { + (void)loop_boundaries; + (void)closure; #ifdef __CUDA_ARCH__ for (iType i = loop_boundaries.start + threadIdx.x; i < loop_boundaries.end; i += blockDim.x) { @@ -853,6 +887,9 @@ KOKKOS_INLINE_FUNCTION parallel_reduce(Impl::ThreadVectorRangeBoundariesStruct< iType, Impl::CudaTeamMember> const& loop_boundaries, Closure const& closure, ReducerType const& reducer) { + (void)loop_boundaries; + (void)closure; + (void)reducer; #ifdef __CUDA_ARCH__ reducer.init(reducer.reference()); @@ -884,6 +921,9 @@ KOKKOS_INLINE_FUNCTION parallel_reduce(Impl::ThreadVectorRangeBoundariesStruct< iType, Impl::CudaTeamMember> const& loop_boundaries, Closure const& closure, ValueType& result) { + (void)loop_boundaries; + (void)closure; + (void)result; #ifdef __CUDA_ARCH__ result = ValueType(); @@ -912,6 +952,8 @@ KOKKOS_INLINE_FUNCTION void parallel_scan( const Impl::ThreadVectorRangeBoundariesStruct& loop_boundaries, const Closure& closure) { + (void)loop_boundaries; + (void)closure; #ifdef __CUDA_ARCH__ // Extract value_type from closure @@ -986,6 +1028,7 @@ template KOKKOS_INLINE_FUNCTION void single( const Impl::VectorSingleStruct&, const FunctorType& lambda) { + (void)lambda; #ifdef __CUDA_ARCH__ if (threadIdx.x == 0) lambda(); #ifdef KOKKOS_IMPL_CUDA_SYNCWARP_NEEDS_MASK @@ -1003,6 +1046,7 @@ template KOKKOS_INLINE_FUNCTION void single( const Impl::ThreadSingleStruct&, const FunctorType& lambda) { + (void)lambda; #ifdef __CUDA_ARCH__ if (threadIdx.x == 0 && threadIdx.y == 0) lambda(); #ifdef KOKKOS_IMPL_CUDA_SYNCWARP_NEEDS_MASK @@ -1020,6 +1064,8 @@ template KOKKOS_INLINE_FUNCTION void single( const Impl::VectorSingleStruct&, const FunctorType& lambda, ValueType& val) { + (void)lambda; + (void)val; #ifdef __CUDA_ARCH__ if (threadIdx.x == 0) lambda(val); unsigned mask = blockDim.x == 32 @@ -1034,6 +1080,9 @@ template KOKKOS_INLINE_FUNCTION void single( const Impl::ThreadSingleStruct& single_struct, const FunctorType& lambda, ValueType& val) { + (void)single_struct; + (void)lambda; + (void)val; #ifdef __CUDA_ARCH__ if (threadIdx.x == 0 && threadIdx.y == 0) { lambda(val); diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_UniqueToken.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_UniqueToken.hpp index a0de4eaa7f..3b470edbc3 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_UniqueToken.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_UniqueToken.hpp @@ -76,41 +76,17 @@ class UniqueToken { explicit UniqueToken(execution_space const& = execution_space()); #endif -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION - UniqueToken(const UniqueToken& rhs) - : m_buffer(rhs.m_buffer), m_count(rhs.m_count) {} - - KOKKOS_INLINE_FUNCTION - UniqueToken(UniqueToken&& rhs) - : m_buffer(std::move(rhs.m_buffer)), m_count(std::move(rhs.m_count)) {} - - KOKKOS_INLINE_FUNCTION - UniqueToken& operator=(const UniqueToken& rhs) { - m_buffer = rhs.m_buffer; - m_count = rhs.m_count; - return *this; - } - - KOKKOS_INLINE_FUNCTION - UniqueToken& operator=(UniqueToken&& rhs) { - m_buffer = std::move(rhs.m_buffer); - m_count = std::move(rhs.m_count); - return *this; - } -#else - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION UniqueToken(const UniqueToken&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION UniqueToken(UniqueToken&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION UniqueToken& operator=(const UniqueToken&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION UniqueToken& operator=(UniqueToken&&) = default; -#endif /// \brief upper bound for acquired values, i.e. 0 <= value < size() KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Vectorization.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Vectorization.hpp index 085262b804..f75d2e56f7 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Vectorization.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Vectorization.hpp @@ -55,7 +55,7 @@ namespace Kokkos { namespace Impl { // Include all lanes -constexpr unsigned shfl_all_mask = 0xffffffff; +constexpr unsigned shfl_all_mask = 0xffffffffu; //---------------------------------------------------------------------------- // Shuffle operations require input to be a register (stack) variable @@ -71,20 +71,32 @@ struct in_place_shfl_op { return *static_cast(this); } - // sizeof(Scalar) == sizeof(int) case + // sizeof(Scalar) <= sizeof(int) case template // requires _assignable_from_bits - __device__ inline typename std::enable_if::type + __device__ inline typename std::enable_if::type operator()(Scalar& out, Scalar const& in, int lane_or_delta, int width, unsigned mask = shfl_all_mask) const noexcept { + using shfl_type = int; + union conv_type { + Scalar orig; + shfl_type conv; + }; + conv_type tmp_in; + tmp_in.orig = in; + conv_type tmp_out; + tmp_out.conv = tmp_in.conv; + conv_type res; //------------------------------------------------ - reinterpret_cast(out) = self().do_shfl_op( - mask, reinterpret_cast(in), lane_or_delta, width); + res.conv = self().do_shfl_op( + mask, reinterpret_cast(tmp_out.conv), lane_or_delta, + width); //------------------------------------------------ + out = res.orig; } // TODO: figure out why 64-bit shfl fails in Clang -#if (CUDA_VERSION >= 9000) && (!defined(KOKKOS_COMPILER_CLANG)) +#if !defined(KOKKOS_COMPILER_CLANG) // sizeof(Scalar) == sizeof(double) case // requires _assignable_from_bits template @@ -140,6 +152,10 @@ struct in_place_shfl_fn : in_place_shfl_op { __device__ KOKKOS_IMPL_FORCEINLINE T do_shfl_op(unsigned mask, T& val, int lane, int width) const noexcept { + (void)mask; + (void)val; + (void)lane; + (void)width; return KOKKOS_IMPL_CUDA_SHFL_MASK(mask, val, lane, width); } }; @@ -167,6 +183,10 @@ struct in_place_shfl_down_fn : in_place_shfl_op { __device__ KOKKOS_IMPL_FORCEINLINE T do_shfl_op(unsigned mask, T& val, int lane, int width) const noexcept { + (void)mask; + (void)val; + (void)lane; + (void)width; return KOKKOS_IMPL_CUDA_SHFL_DOWN_MASK(mask, val, lane, width); } }; diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Version_9_8_Compatibility.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Version_9_8_Compatibility.hpp index 66231e55f9..0cdd84ce27 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Version_9_8_Compatibility.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Version_9_8_Compatibility.hpp @@ -1,20 +1,6 @@ #include #if defined(__CUDA_ARCH__) -#if (CUDA_VERSION < 9000) -#define KOKKOS_IMPL_CUDA_ACTIVEMASK 0 -#define KOKKOS_IMPL_CUDA_SYNCWARP __threadfence_block() -#define KOKKOS_IMPL_CUDA_SYNCWARP_MASK(m) \ - if (m) __threadfence_block() -#define KOKKOS_IMPL_CUDA_BALLOT(x) __ballot(x) -#define KOKKOS_IMPL_CUDA_BALLOT_MASK(m, x) __ballot(x) -#define KOKKOS_IMPL_CUDA_SHFL(x, y, z) __shfl(x, y, z) -#define KOKKOS_IMPL_CUDA_SHFL_MASK(m, x, y, z) __shfl(x, y, z) -#define KOKKOS_IMPL_CUDA_SHFL_UP(x, y, z) __shfl_up(x, y, z) -#define KOKKOS_IMPL_CUDA_SHFL_UP_MASK(m, x, y, z) __shfl_up(x, y, z) -#define KOKKOS_IMPL_CUDA_SHFL_DOWN(x, y, z) __shfl_down(x, y, z) -#define KOKKOS_IMPL_CUDA_SHFL_DOWN_MASK(m, x, y, z) __shfl_down(x, y, z) -#else #define KOKKOS_IMPL_CUDA_ACTIVEMASK __activemask() #define KOKKOS_IMPL_CUDA_SYNCWARP __syncwarp(0xffffffff) #define KOKKOS_IMPL_CUDA_SYNCWARP_MASK(m) __syncwarp(m) @@ -27,7 +13,6 @@ #define KOKKOS_IMPL_CUDA_SHFL_DOWN(x, y, z) \ __shfl_down_sync(0xffffffff, x, y, z) #define KOKKOS_IMPL_CUDA_SHFL_DOWN_MASK(m, x, y, z) __shfl_down_sync(m, x, y, z) -#endif #else #define KOKKOS_IMPL_CUDA_ACTIVEMASK 0 #define KOKKOS_IMPL_CUDA_SYNCWARP @@ -41,25 +26,13 @@ #define KOKKOS_IMPL_CUDA_SHFL_DOWN_MASK(m, x, y, z) 0 #endif -#if (CUDA_VERSION >= 9000) && (!defined(KOKKOS_COMPILER_CLANG)) +#if !defined(KOKKOS_COMPILER_CLANG) #define KOKKOS_IMPL_CUDA_MAX_SHFL_SIZEOF sizeof(long long) #else #define KOKKOS_IMPL_CUDA_MAX_SHFL_SIZEOF sizeof(int) #endif #if defined(__CUDA_ARCH__) -#if (CUDA_VERSION < 9000) -#define KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN(MSG) \ - { \ - const unsigned b = __ballot(1); \ - if (b != 0xffffffff) { \ - printf(" SYNCWARP AT %s (%d,%d,%d) (%d,%d,%d) failed %x\n", MSG, \ - blockIdx.x, blockIdx.y, blockIdx.z, threadIdx.x, threadIdx.y, \ - threadIdx.z, b); \ - return; \ - } \ - } -#else #define KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN(MSG) \ { \ __syncwarp(); \ @@ -71,7 +44,6 @@ return; \ } \ } -#endif #else #define KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN(MSG) #endif diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp index 08fdbea387..364f334a4c 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp @@ -84,8 +84,8 @@ struct CudaTextureFetch { KOKKOS_INLINE_FUNCTION CudaTextureFetch() : m_obj(), m_ptr(), m_offset() {} - KOKKOS_INLINE_FUNCTION - ~CudaTextureFetch() {} + KOKKOS_DEFAULTED_FUNCTION + ~CudaTextureFetch() = default; KOKKOS_INLINE_FUNCTION CudaTextureFetch(const CudaTextureFetch& rhs) @@ -153,8 +153,8 @@ struct CudaLDGFetch { KOKKOS_INLINE_FUNCTION CudaLDGFetch() : m_ptr() {} - KOKKOS_INLINE_FUNCTION - ~CudaLDGFetch() {} + KOKKOS_DEFAULTED_FUNCTION + ~CudaLDGFetch() = default; KOKKOS_INLINE_FUNCTION CudaLDGFetch(const CudaLDGFetch& rhs) : m_ptr(rhs.m_ptr) {} @@ -250,7 +250,7 @@ class ViewDataHandle< KOKKOS_INLINE_FUNCTION static handle_type assign(value_type* arg_data_ptr, track_type const& arg_tracker) { - if (arg_data_ptr == NULL) return handle_type(); + if (arg_data_ptr == nullptr) return handle_type(); #if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) // Assignment of texture = non-texture requires creation of a texture object @@ -273,6 +273,7 @@ class ViewDataHandle< return handle_type(arg_data_ptr, r); #else + (void)arg_tracker; Kokkos::Impl::cuda_abort( "Cannot create Cuda texture object from within a Cuda kernel"); return handle_type(); diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_fwd.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_fwd.hpp new file mode 100644 index 0000000000..4bda5e9411 --- /dev/null +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_fwd.hpp @@ -0,0 +1,67 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_CUDA_FWD_HPP_ +#define KOKKOS_CUDA_FWD_HPP_ +#if defined(KOKKOS_ENABLE_CUDA) +namespace Kokkos { + +class CudaSpace; ///< Memory space on Cuda GPU +class CudaUVMSpace; ///< Memory space on Cuda GPU with UVM +class CudaHostPinnedSpace; ///< Memory space on Host accessible to Cuda GPU +class Cuda; ///< Execution space for Cuda GPU + +namespace Impl { + +template +void cuda_prefetch_pointer(const ExecSpace& /*space*/, const void* /*ptr*/, + size_t /*bytes*/, bool /*to_device*/) {} + +void cuda_prefetch_pointer(const Cuda& space, const void* ptr, size_t bytes, + bool to_device); + +} // namespace Impl +} // namespace Kokkos +#endif +#endif diff --git a/lib/kokkos/core/src/HIP/KokkosExp_HIP_IterateTile.hpp b/lib/kokkos/core/src/HIP/KokkosExp_HIP_IterateTile.hpp new file mode 100644 index 0000000000..e2525d70c1 --- /dev/null +++ b/lib/kokkos/core/src/HIP/KokkosExp_HIP_IterateTile.hpp @@ -0,0 +1,3296 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HIP_EXP_ITERATE_TILE_REFACTOR_HPP +#define KOKKOS_HIP_EXP_ITERATE_TILE_REFACTOR_HPP + +#include +#if defined(__HIPCC__) + +#include +#include +#include + +#include + +#if defined(KOKKOS_ENABLE_PROFILING) +#include +#include +#endif + +namespace Kokkos { +namespace Impl { + +// ------------------------------------------------------------------ // +// ParallelFor iteration pattern +template +struct DeviceIterateTile; + +// Rank 2 +// Specializations for void tag type +template +struct DeviceIterateTile<2, PolicyType, Functor, void> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < m_policy.m_tile[0]) { + m_func(offset_0, offset_1); + } + } + } + } + } + // LR + else { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < m_policy.m_tile[0]) { + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + m_func(offset_0, offset_1); + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Specializations for tag type +template +struct DeviceIterateTile<2, PolicyType, Functor, Tag> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (PolicyType::inner_direction == PolicyType::Left) { + // Loop over size maxnumblocks until full range covered + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < m_policy.m_tile[0]) { + m_func(Tag(), offset_0, offset_1); + } + } + } + } + } else { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < m_policy.m_tile[0]) { + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + m_func(Tag(), offset_0, offset_1); + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Rank 3 +// Specializations for void tag type +template +struct DeviceIterateTile<3, PolicyType, Functor, void> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (index_type tile_id2 = static_cast(hipBlockIdx_z); + tile_id2 < m_policy.m_tile_end[2]; tile_id2 += hipGridDim_z) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_z) < m_policy.m_tile[2]) { + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; + tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < + m_policy.m_tile[0]) { + m_func(offset_0, offset_1, offset_2); + } + } + } + } + } + } + } + // LR + else { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < m_policy.m_tile[0]) { + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + for (index_type tile_id2 = static_cast(hipBlockIdx_z); + tile_id2 < m_policy.m_tile_end[2]; + tile_id2 += hipGridDim_z) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_z) < + m_policy.m_tile[2]) { + m_func(offset_0, offset_1, offset_2); + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Specializations for void tag type +template +struct DeviceIterateTile<3, PolicyType, Functor, Tag> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (PolicyType::inner_direction == PolicyType::Left) { + for (index_type tile_id2 = static_cast(hipBlockIdx_z); + tile_id2 < m_policy.m_tile_end[2]; tile_id2 += hipGridDim_z) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_z) < m_policy.m_tile[2]) { + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; + tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < + m_policy.m_tile[0]) { + m_func(Tag(), offset_0, offset_1, offset_2); + } + } + } + } + } + } + } else { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < m_policy.m_tile[0]) { + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + for (index_type tile_id2 = static_cast(hipBlockIdx_z); + tile_id2 < m_policy.m_tile_end[2]; + tile_id2 += hipGridDim_z) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_z) < + m_policy.m_tile[2]) { + m_func(Tag(), offset_0, offset_1, offset_2); + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Rank 4 +// Specializations for void tag type +template +struct DeviceIterateTile<4, PolicyType, Functor, void> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + const index_type temp0 = m_policy.m_tile_end[0]; + const index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl0 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl1 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl0) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) % numbl0; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) / numbl0; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[0]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[0]; + + for (index_type tile_id3 = static_cast(hipBlockIdx_z); + tile_id3 < m_policy.m_tile_end[3]; tile_id3 += hipGridDim_z) { + const index_type offset_3 = + tile_id3 * m_policy.m_tile[3] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + static_cast(hipThreadIdx_z) < m_policy.m_tile[3]) { + for (index_type tile_id2 = static_cast(hipBlockIdx_y); + tile_id2 < m_policy.m_tile_end[2]; tile_id2 += hipGridDim_y) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[2]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; + i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + thr_id0 < m_policy.m_tile[0]) { + m_func(offset_0, offset_1, offset_2, offset_3); + } + } + } + } + } + } + } + } + } + // LR + else { + const index_type temp0 = m_policy.m_tile_end[0]; + const index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl1 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl0 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl1) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) / numbl1; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) % numbl1; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[1]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[1]; + + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && thr_id0 < m_policy.m_tile[0]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type tile_id2 = static_cast(hipBlockIdx_y); + tile_id2 < m_policy.m_tile_end[2]; + tile_id2 += hipGridDim_y) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_y) < + m_policy.m_tile[2]) { + for (index_type tile_id3 = + static_cast(hipBlockIdx_z); + tile_id3 < m_policy.m_tile_end[3]; + tile_id3 += hipGridDim_z) { + const index_type offset_3 = + tile_id3 * m_policy.m_tile[3] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + static_cast(hipThreadIdx_z) < + m_policy.m_tile[3]) { + m_func(offset_0, offset_1, offset_2, offset_3); + } + } + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Specializations for void tag type +template +struct DeviceIterateTile<4, PolicyType, Functor, Tag> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (PolicyType::inner_direction == PolicyType::Left) { + const index_type temp0 = m_policy.m_tile_end[0]; + const index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl0 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl1 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl0) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) % numbl0; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) / numbl0; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[0]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[0]; + + for (index_type tile_id3 = static_cast(hipBlockIdx_z); + tile_id3 < m_policy.m_tile_end[3]; tile_id3 += hipGridDim_z) { + const index_type offset_3 = + tile_id3 * m_policy.m_tile[3] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + static_cast(hipThreadIdx_z) < m_policy.m_tile[3]) { + for (index_type tile_id2 = static_cast(hipBlockIdx_y); + tile_id2 < m_policy.m_tile_end[2]; tile_id2 += hipGridDim_y) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[2]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; + i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + thr_id0 < m_policy.m_tile[0]) { + m_func(Tag(), offset_0, offset_1, offset_2, offset_3); + } + } + } + } + } + } + } + } + } else { + const index_type temp0 = m_policy.m_tile_end[0]; + const index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl1 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl0 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl1) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) / numbl1; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) % numbl1; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[1]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[1]; + + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && thr_id0 < m_policy.m_tile[0]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type tile_id2 = static_cast(hipBlockIdx_y); + tile_id2 < m_policy.m_tile_end[2]; + tile_id2 += hipGridDim_y) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_y) < + m_policy.m_tile[2]) { + for (index_type tile_id3 = + static_cast(hipBlockIdx_z); + tile_id3 < m_policy.m_tile_end[3]; + tile_id3 += hipGridDim_z) { + const index_type offset_3 = + tile_id3 * m_policy.m_tile[3] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + static_cast(hipThreadIdx_z) < + m_policy.m_tile[3]) { + m_func(Tag(), offset_0, offset_1, offset_2, offset_3); + } + } + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Rank 5 +// Specializations for void tag type +template +struct DeviceIterateTile<5, PolicyType, Functor, void> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl0 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl1 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl0) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) % numbl0; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) / numbl0; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[0]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[0]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl2 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl3 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl2) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) % numbl2; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) / numbl2; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[2]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[2]; + + for (index_type tile_id4 = static_cast(hipBlockIdx_z); + tile_id4 < m_policy.m_tile_end[4]; tile_id4 += hipGridDim_z) { + const index_type offset_4 = + tile_id4 * m_policy.m_tile[4] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + static_cast(hipThreadIdx_z) < m_policy.m_tile[4]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; + i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + thr_id0 < m_policy.m_tile[0]) { + m_func(offset_0, offset_1, offset_2, offset_3, + offset_4); + } + } + } + } + } + } + } + } + } + } + } + // LR + else { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl1 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl0 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl1) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) / numbl1; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) % numbl1; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[1]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[1]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl3 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl2 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl3) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) / numbl3; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) % numbl3; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[3]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[3]; + + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && thr_id0 < m_policy.m_tile[0]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type tile_id4 = + static_cast(hipBlockIdx_z); + tile_id4 < m_policy.m_tile_end[4]; + tile_id4 += hipGridDim_z) { + const index_type offset_4 = + tile_id4 * m_policy.m_tile[4] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + static_cast(hipThreadIdx_z) < + m_policy.m_tile[4]) { + m_func(offset_0, offset_1, offset_2, offset_3, + offset_4); + } + } + } + } + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Specializations for tag type +template +struct DeviceIterateTile<5, PolicyType, Functor, Tag> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl0 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl1 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl0) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) % numbl0; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) / numbl0; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[0]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[0]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl2 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl3 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl2) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) % numbl2; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) / numbl2; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[2]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[2]; + + for (index_type tile_id4 = static_cast(hipBlockIdx_z); + tile_id4 < m_policy.m_tile_end[4]; tile_id4 += hipGridDim_z) { + const index_type offset_4 = + tile_id4 * m_policy.m_tile[4] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + static_cast(hipThreadIdx_z) < m_policy.m_tile[4]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; + i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + thr_id0 < m_policy.m_tile[0]) { + m_func(Tag(), offset_0, offset_1, offset_2, offset_3, + offset_4); + } + } + } + } + } + } + } + } + } + } + } + // LR + else { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl1 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl0 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl1) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) / numbl1; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) % numbl1; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[1]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[1]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl3 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl2 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl3) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) / numbl3; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) % numbl3; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[3]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[3]; + + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && thr_id0 < m_policy.m_tile[0]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type tile_id4 = + static_cast(hipBlockIdx_z); + tile_id4 < m_policy.m_tile_end[4]; + tile_id4 += hipGridDim_z) { + const index_type offset_4 = + tile_id4 * m_policy.m_tile[4] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + static_cast(hipThreadIdx_z) < + m_policy.m_tile[4]) { + m_func(Tag(), offset_0, offset_1, offset_2, offset_3, + offset_4); + } + } + } + } + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Rank 6 +// Specializations for void tag type +template +struct DeviceIterateTile<6, PolicyType, Functor, void> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& rp_, const Functor& f_) + : m_policy(rp_), m_func(f_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl0 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl1 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl0) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) % numbl0; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) / numbl0; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[0]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[0]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl2 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl3 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl2) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) % numbl2; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) / numbl2; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[2]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[2]; + + temp0 = m_policy.m_tile_end[4]; + temp1 = m_policy.m_tile_end[5]; + const index_type numbl4 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl5 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl4) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id4 = + static_cast(hipBlockIdx_z) % numbl4; + const index_type tile_id5 = + static_cast(hipBlockIdx_z) / numbl4; + const index_type thr_id4 = + static_cast(hipThreadIdx_z) % m_policy.m_tile[4]; + const index_type thr_id5 = + static_cast(hipThreadIdx_z) / m_policy.m_tile[4]; + + for (index_type n = tile_id5; n < m_policy.m_tile_end[5]; n += numbl5) { + const index_type offset_5 = + n * m_policy.m_tile[5] + thr_id5 + + static_cast(m_policy.m_lower[5]); + if (offset_5 < m_policy.m_upper[5] && thr_id5 < m_policy.m_tile[5]) { + for (index_type m = tile_id4; m < m_policy.m_tile_end[4]; + m += numbl4) { + const index_type offset_4 = + m * m_policy.m_tile[4] + thr_id4 + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + thr_id4 < m_policy.m_tile[4]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type i = tile_id0; + i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + thr_id0 < m_policy.m_tile[0]) { + m_func(offset_0, offset_1, offset_2, offset_3, + offset_4, offset_5); + } + } + } + } + } + } + } + } + } + } + } + } + } + // LR + else { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl1 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl0 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl1) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) / numbl1; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) % numbl1; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[1]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[1]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl3 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl2 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl3) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) / numbl3; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) % numbl3; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[3]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[3]; + + temp0 = m_policy.m_tile_end[4]; + temp1 = m_policy.m_tile_end[5]; + const index_type numbl5 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl4 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl5) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id4 = + static_cast(hipBlockIdx_z) / numbl5; + const index_type tile_id5 = + static_cast(hipBlockIdx_z) % numbl5; + const index_type thr_id4 = + static_cast(hipThreadIdx_z) / m_policy.m_tile[5]; + const index_type thr_id5 = + static_cast(hipThreadIdx_z) % m_policy.m_tile[5]; + + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && thr_id0 < m_policy.m_tile[0]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type m = tile_id4; m < m_policy.m_tile_end[4]; + m += numbl4) { + const index_type offset_4 = + m * m_policy.m_tile[4] + thr_id4 + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + thr_id4 < m_policy.m_tile[4]) { + for (index_type n = tile_id5; + n < m_policy.m_tile_end[5]; n += numbl5) { + const index_type offset_5 = + n * m_policy.m_tile[5] + thr_id5 + + static_cast(m_policy.m_lower[5]); + if (offset_5 < m_policy.m_upper[5] && + thr_id5 < m_policy.m_tile[5]) { + m_func(offset_0, offset_1, offset_2, offset_3, + offset_4, offset_5); + } + } + } + } + } + } + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Specializations for tag type +template +struct DeviceIterateTile<6, PolicyType, Functor, Tag> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl0 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl1 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl0) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) % numbl0; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) / numbl0; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[0]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[0]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl2 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl3 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl2) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) % numbl2; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) / numbl2; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[2]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[2]; + + temp0 = m_policy.m_tile_end[4]; + temp1 = m_policy.m_tile_end[5]; + const index_type numbl4 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl5 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl4) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id4 = + static_cast(hipBlockIdx_z) % numbl4; + const index_type tile_id5 = + static_cast(hipBlockIdx_z) / numbl4; + const index_type thr_id4 = + static_cast(hipThreadIdx_z) % m_policy.m_tile[4]; + const index_type thr_id5 = + static_cast(hipThreadIdx_z) / m_policy.m_tile[4]; + + for (index_type n = tile_id5; n < m_policy.m_tile_end[5]; n += numbl5) { + const index_type offset_5 = + n * m_policy.m_tile[5] + thr_id5 + + static_cast(m_policy.m_lower[5]); + if (offset_5 < m_policy.m_upper[5] && thr_id5 < m_policy.m_tile[5]) { + for (index_type m = tile_id4; m < m_policy.m_tile_end[4]; + m += numbl4) { + const index_type offset_4 = + m * m_policy.m_tile[4] + thr_id4 + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + thr_id4 < m_policy.m_tile[4]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type i = tile_id0; + i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + thr_id0 < m_policy.m_tile[0]) { + m_func(Tag(), offset_0, offset_1, offset_2, + offset_3, offset_4, offset_5); + } + } + } + } + } + } + } + } + } + } + } + } + } + // LR + else { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl1 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl0 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl1) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) / numbl1; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) % numbl1; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[1]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[1]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl3 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl2 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl3) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) / numbl3; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) % numbl3; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[3]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[3]; + + temp0 = m_policy.m_tile_end[4]; + temp1 = m_policy.m_tile_end[5]; + const index_type numbl5 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl4 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl5) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id4 = + static_cast(hipBlockIdx_z) / numbl5; + const index_type tile_id5 = + static_cast(hipBlockIdx_z) % numbl5; + const index_type thr_id4 = + static_cast(hipThreadIdx_z) / m_policy.m_tile[5]; + const index_type thr_id5 = + static_cast(hipThreadIdx_z) % m_policy.m_tile[5]; + + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && thr_id0 < m_policy.m_tile[0]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type m = tile_id4; m < m_policy.m_tile_end[4]; + m += numbl4) { + const index_type offset_4 = + m * m_policy.m_tile[4] + thr_id4 + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + thr_id4 < m_policy.m_tile[4]) { + for (index_type n = tile_id5; + n < m_policy.m_tile_end[5]; n += numbl5) { + const index_type offset_5 = + n * m_policy.m_tile[5] + thr_id5 + + static_cast(m_policy.m_lower[5]); + if (offset_5 < m_policy.m_upper[5] && + thr_id5 < m_policy.m_tile[5]) { + m_func(Tag(), offset_0, offset_1, offset_2, + offset_3, offset_4, offset_5); + } + } + } + } + } + } + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// ---------------------------------------------------------------------------------- + +namespace Reduce { + +template +using is_void = std::is_same; + +template +struct is_array_type : std::false_type { + using value_type = T; +}; + +template +struct is_array_type : std::true_type { + using value_type = T; +}; + +template +struct is_array_type : std::true_type { + using value_type = T; +}; + +// ------------------------------------------------------------------ // +template +struct DeviceIterateTile; + +// ParallelReduce iteration pattern +// Scalar reductions + +// num_blocks = min( num_tiles, max_num_blocks ); //i.e. determined by number of +// tiles and reduction algorithm constraints extract n-dim tile offsets (i.e. +// tile's global starting mulit-index) from the tileid = blockid using tile +// dimensions local indices within a tile extracted from (index_type)threadIdx_x +// using tile dims, constrained by blocksize combine tile and local id info for +// multi-dim global ids + +// Pattern: +// Each block+thread is responsible for a tile+local_id combo (additional when +// striding by num_blocks) +// 1. create offset arrays +// 2. loop over number of tiles, striding by griddim (equal to num tiles, or max +// num blocks) +// 3. temps set for tile_idx and thrd_idx, which will be modified +// 4. if LL vs LR: +// determine tile starting point offsets (multidim) +// determine local index offsets (multidim) +// concatentate tile offset + local offset for global multi-dim index +// if offset withinin range bounds AND local offset within tile bounds, call +// functor + +// ValueType = T +// Rank 2 +// Specializations for void tag type +template +struct DeviceIterateTile< + 2, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& rp_, const Functor& f_, + ValueType& v_) + : m_policy(rp_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + // Deduce this blocks tile_id + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_v); + } + } + } + } + + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Specializations for tag type +template +struct DeviceIterateTile< + 2, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& rp_, const Functor& f_, ValueType& v_) + : m_policy(rp_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = + (thrd_idx % + m_policy.m_tile[i]); // Move this to first computation, + // add to m_offset right away + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Rank 3 +// Specializations for void tag type +template +struct DeviceIterateTile< + 3, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + ValueType& v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = + (thrd_idx % + m_policy.m_tile[i]); // Move this to first computation, + // add to m_offset right away + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Specializations for void tag type +template +struct DeviceIterateTile< + 3, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, ValueType& v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = + (thrd_idx % + m_policy.m_tile[i]); // Move this to first computation, + // add to m_offset right away + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Rank 4 +// Specializations for void tag type +template +struct DeviceIterateTile< + 4, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + ValueType& v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Specializations for void tag type +template +struct DeviceIterateTile< + 4, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, ValueType& v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Rank 5 +// Specializations for void tag type +template +struct DeviceIterateTile< + 5, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + ValueType& v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Specializations for tag type +template +struct DeviceIterateTile< + 5, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + ValueType& v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Rank 6 +// Specializations for void tag type +template +struct DeviceIterateTile< + 6, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + ValueType& v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Specializations for tag type +template +struct DeviceIterateTile< + 6, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& rp_, const Functor& f_, + ValueType& v_) + : m_policy(rp_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// ValueType = T[], T* +// Rank 2 +// Specializations for void tag type +template +struct DeviceIterateTile< + 2, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = + (thrd_idx % + m_policy.m_tile[i]); // Move this to first computation, + // add to m_offset right away + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Specializations for tag type +template +struct DeviceIterateTile< + 2, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& rp_, const Functor& f_, value_type* v_) + : m_policy(rp_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_v); + } + } + } // end for loop over num_tiles - product of tiles in each direction + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Rank 3 +// Specializations for void tag type +template +struct DeviceIterateTile< + 3, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = + (thrd_idx % + m_policy.m_tile[i]); // Move this to first computation, + // add to m_offset right away + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = + (thrd_idx % + m_policy.m_tile[i]); // Move this to first computation, + // add to m_offset right away + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Specializations for void tag type +template +struct DeviceIterateTile< + 3, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Rank 4 +// Specializations for void tag type +template +struct DeviceIterateTile< + 4, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Specializations for void tag type +template +struct DeviceIterateTile< + 4, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Rank 5 +// Specializations for void tag type +template +struct DeviceIterateTile< + 5, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Specializations for tag type +template +struct DeviceIterateTile< + 5, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Rank 6 +// Specializations for void tag type +template +struct DeviceIterateTile< + 6, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Specializations for tag type +template +struct DeviceIterateTile< + 6, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +} // namespace Reduce +} // namespace Impl +} // namespace Kokkos +#endif +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Abort.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Abort.hpp new file mode 100644 index 0000000000..1eaae38302 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Abort.hpp @@ -0,0 +1,68 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HIP_ABORT_HPP +#define KOKKOS_HIP_ABORT_HPP + +#include +#if defined(KOKKOS_ENABLE_HIP) + +#include + +namespace Kokkos { +namespace Impl { + +__device__ inline void hip_abort(char const *msg) { + printf("%s", msg); + // FIXME_HIP both abort and the __assertfail system call are currently + // implemented with __builtin_trap which causes the program to exit abnormally + // without printing the error message. + // abort(); +} + +} // namespace Impl +} // namespace Kokkos + +#endif +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Atomic.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Atomic.hpp new file mode 100644 index 0000000000..c09e09f500 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Atomic.hpp @@ -0,0 +1,576 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HIP_ATOMIC_HPP +#define KOKKOS_HIP_ATOMIC_HPP + +#ifdef KOKKOS_ENABLE_HIP_ATOMICS + +namespace Kokkos { +// HIP can do: +// Types int/unsigned int +// variants: +// atomic_exchange/compare_exchange/fetch_add/fetch_sub/fetch_max/fetch_min/fetch_and/fetch_or/fetch_xor/fetch_inc/fetch_dec + +// atomic_exchange ------------------------------------------------------------- + +__inline__ __device__ int atomic_exchange(volatile int *const dest, + const int val) { + return atomicExch(const_cast(dest), val); +} + +__inline__ __device__ unsigned int atomic_exchange( + volatile unsigned int *const dest, const unsigned int val) { + return atomicExch(const_cast(dest), val); +} + +__inline__ __device__ unsigned long long int atomic_exchange( + volatile unsigned long long int *const dest, + const unsigned long long int val) { + return atomicExch(const_cast(dest), val); +} + +__inline__ __device__ float atomic_exchange(volatile float *const dest, + const float val) { + return atomicExch(const_cast(dest), val); +} + +template +__inline__ __device__ T atomic_exchange( + volatile T *const dest, + typename std::enable_if::type val) { + int tmp = atomicExch(reinterpret_cast(const_cast(dest)), + *reinterpret_cast(const_cast(&val))); + return reinterpret_cast(tmp); +} + +template +__inline__ __device__ T atomic_exchange( + volatile T *const dest, + typename std::enable_if::type val) { + typedef unsigned long long int type; + + type tmp = atomicExch(reinterpret_cast(const_cast(dest)), + *reinterpret_cast(const_cast(&val))); + return reinterpret_cast(tmp); +} + +template +__inline__ __device__ T +atomic_exchange(volatile T *const dest, + typename std::enable_if::type &val) { + // FIXME_HIP + Kokkos::abort("atomic_exchange not implemented for large types.\n"); + T return_val; + int done = 0; + unsigned int active = __ballot(1); + unsigned int done_active = 0; + while (active != done_active) { + if (!done) { + // if (Impl::lock_address_hip_space((void*)dest)) + { + return_val = *dest; + *dest = val; + // Impl::unlock_address_hip_space((void*)dest); + done = 1; + } + } + done_active = __ballot(done); + } + return return_val; +} + +// atomic_assign --------------------------------------------------------------- + +template +__inline__ __device__ void atomic_assign( + volatile T *const dest, + typename std::enable_if::type val) { + atomicExch(reinterpret_cast(const_cast(dest)), + *reinterpret_cast(const_cast(&val))); +} + +template +__inline__ __device__ void atomic_assign( + volatile T *const dest, + typename std::enable_if::type val) { + typedef unsigned long long int type; + atomicExch(reinterpret_cast(const_cast(dest)), + *reinterpret_cast(const_cast(&val))); +} + +template +__inline__ __device__ void atomic_assign( + volatile T *const dest, + typename std::enable_if::type val) { + atomic_exchange(dest, val); +} + +// atomic_compare_exchange ----------------------------------------------------- + +inline __device__ int atomic_compare_exchange(volatile int *dest, int compare, + const int &val) { + return atomicCAS(const_cast(dest), compare, val); +} + +inline __device__ unsigned int atomic_compare_exchange( + volatile unsigned int *dest, unsigned int compare, + const unsigned int &val) { + return atomicCAS(const_cast(dest), compare, val); +} + +inline __device__ unsigned long long int atomic_compare_exchange( + volatile unsigned long long int *dest, unsigned long long int compare, + const unsigned long long int &val) { + return atomicCAS(const_cast(dest), compare, val); +} + +template +__inline__ __device__ T atomic_compare_exchange( + volatile T *dest, T compare, + typename std::enable_if::type val) { + // FIXME_HIP UB + union U { + int i; + T f; + __inline__ __device__ U() {} + } idest, icompare, ival; + icompare.f = compare; + ival.f = val; + idest.i = atomicCAS(reinterpret_cast(const_cast(dest)), + icompare.i, ival.i); + return idest.f; +} + +template +__inline__ __device__ T atomic_compare_exchange( + volatile T *dest, T compare, + typename std::enable_if::type val) { + // FIXME_HIP UB + union U { + unsigned long long int i; + T f; + __inline__ __device__ U() {} + } idest, icompare, ival; + icompare.f = compare; + ival.f = val; + idest.i = atomicCAS( + reinterpret_cast(const_cast(dest)), + icompare.i, ival.i); + return idest.f; +} + +template +__inline__ __device__ T atomic_compare_exchange( + volatile T *const dest, const T &compare, + typename std::enable_if::type &val) { + // FIXME_HIP + Kokkos::abort("atomic_compare_exchange not implemented for large types.\n"); + T return_val; + int done = 0; + unsigned int active = __ballot(1); + unsigned int done_active = 0; + while (active != done_active) { + if (!done) { + // if (Impl::lock_address_hip_space((void*)dest)) + { + return_val = *dest; + if (return_val == compare) *dest = val; + // Impl::unlock_address_hip_space((void*)dest); + done = 1; + } + } + done_active = __ballot(done); + } + return return_val; +} + +// atomic_fetch_add ------------------------------------------------------------ + +inline __device__ int atomic_fetch_add(volatile int *dest, const int &val) { + return atomicAdd(const_cast(dest), val); +} + +inline __device__ unsigned int atomic_fetch_add(volatile unsigned int *dest, + const unsigned int &val) { + return atomicAdd(const_cast(dest), val); +} + +inline __device__ unsigned long long atomic_fetch_add( + volatile unsigned long long *dest, const unsigned long long &val) { + return atomicAdd(const_cast(dest), val); +} + +inline __device__ float atomic_fetch_add(volatile float *dest, + const float &val) { + return atomicAdd(const_cast(dest), val); +} + +template +inline __device__ T atomic_fetch_add( + volatile T *const dest, + typename std::enable_if::type val) { + // FIXME_HIP UB + union U { + int i; + T t; + __inline__ __device__ U() {} + } assume, oldval, newval; + + oldval.t = *dest; + + do { + assume.i = oldval.i; + newval.t = assume.t + val; + oldval.i = atomicCAS(reinterpret_cast(const_cast(dest)), + assume.i, newval.i); + } while (assume.i != oldval.i); + + return oldval.t; +} + +template +inline __device__ T atomic_fetch_add( + volatile T *const dest, + typename std::enable_if::type + val) { + // FIXME_HIP UB + union U { + unsigned long long i; + T t; + __inline__ __device__ U() {} + } assume, oldval, newval; + + oldval.t = *dest; + + do { + assume.i = oldval.i; + newval.t = assume.t + val; + oldval.i = atomic_compare_exchange( + reinterpret_cast(dest), assume.i, + newval.i); + } while (assume.i != oldval.i); + + return oldval.t; +} + +__inline__ __device__ char atomic_fetch_add(volatile char *dest, + const char &val) { + unsigned int oldval, newval, assume; + oldval = *reinterpret_cast(&dest); + + do { + assume = oldval; + newval = assume & 0x7fffff00 + ((assume & 0xff) + val) & 0xff; + oldval = + atomicCAS(reinterpret_cast(const_cast(dest)), + assume, newval); + } while (assume != oldval); + + return oldval; +} + +__inline__ __device__ short atomic_fetch_add(volatile short *dest, + const short &val) { + unsigned int oldval, newval, assume; + oldval = *reinterpret_cast(&dest); + + do { + assume = oldval; + newval = assume & 0x7fff0000 + ((assume & 0xffff) + val) & 0xffff; + oldval = + atomicCAS(reinterpret_cast(const_cast(dest)), + assume, newval); + } while (assume != oldval); + + return oldval; +} + +__inline__ __device__ long long atomic_fetch_add(volatile long long *dest, + const long long &val) { + return atomicAdd( + reinterpret_cast(const_cast(dest)), + val); +} + +template +__inline__ __device__ T +atomic_fetch_add(volatile T *dest, + typename std::enable_if::type val) { + // FIXME_HIP + Kokkos::abort("atomic_fetch_add not implemented for large types.\n"); + T return_val; + int done = 0; + unsigned int active = __ballot(1); + unsigned int done_active = 0; + while (active != done_active) { + if (!done) { + // if(Kokkos::Impl::lock_address_hip_space((void *)dest)) + { + return_val = *dest; + *dest = return_val + val; + // Kokkos::Impl::unlock_address_hip_space((void *)dest); + done = 1; + } + } + done_active = __ballot(done); + } + return return_val; +} + +// atmic_fetch_sub ------------------------------------------------------------- + +__inline__ __device__ int atomic_fetch_sub(volatile int *dest, int const &val) { + return atomicSub(const_cast(dest), val); +} + +__inline__ __device__ unsigned int atomic_fetch_sub(volatile unsigned int *dest, + unsigned int const &val) { + return atomicSub(const_cast(dest), val); +} + +__inline__ __device__ unsigned long long atomic_fetch_sub( + unsigned long long *dest, int64_t const &val) { + return atomicAdd(reinterpret_cast(dest), + -reinterpret_cast(val)); +} + +__inline__ __device__ char atomic_fetch_sub(volatile char *dest, + const char &val) { + unsigned int oldval, newval, assume; + oldval = *reinterpret_cast(dest); + + do { + assume = oldval; + newval = assume & 0x7fffff00 + ((assume & 0xff) - val) & 0xff; + oldval = + atomicCAS(reinterpret_cast(const_cast(dest)), + assume, newval); + } while (assume != oldval); + + return oldval; +} + +__inline__ __device__ short atomic_fetch_sub(volatile short *dest, + const short &val) { + unsigned int oldval, newval, assume; + oldval = *reinterpret_cast(dest); + + do { + assume = oldval; + newval = assume & 0x7fff0000 + ((assume & 0xffff) - val) & 0xffff; + oldval = + atomicCAS(reinterpret_cast(const_cast(dest)), + assume, newval); + } while (assume != oldval); + + return oldval; +} + +__inline__ __device__ long long atomic_fetch_sub(volatile long long *dest, + const long long &val) { + return static_cast(atomicAdd( + reinterpret_cast(const_cast(dest)), + -reinterpret_cast(val))); +} + +template +__inline__ __device__ T atomic_fetch_sub( + volatile T *dest, + typename std::enable_if::type val) { + // FIXME_HIP UB + union U { + int i; + T t; + __inline__ __device__ U() {} + } assume, oldval, newval; + + oldval.t = *dest; + + do { + assume.i = oldval.i; + newval.t = assume.t - val; + oldval.i = atomic_compare_exchange(reinterpret_cast(dest), + assume.i, newval.i); + } while (assume.i != oldval.i); + + return oldval.t; +} + +template +inline __device__ T atomic_fetch_sub( + volatile T *const dest, + typename std::enable_if::type + val) { + // FIXME_HIP UB + union U { + unsigned long long i; + T t; + __inline__ __device__ U() {} + } assume, oldval, newval; + + oldval.t = *dest; + + do { + assume.i = oldval.i; + newval.t = assume.t - val; + oldval.i = atomic_compare_exchange( + reinterpret_cast(dest), assume.i, + newval.i); + } while (assume.i != oldval.i); + + return oldval.t; +} + +template +__inline__ __device__ T atomic_fetch_sub( + volatile T *dest, + typename std::enable_if::type val) { + unsigned int oldval, newval, assume; + oldval = *reinterpret_cast(dest); + + do { + assume = oldval; + newval = assume & 0x7fffff00 + ((assume & 0xff) - val) & 0xff; + oldval = atomicCAS(reinterpret_cast(dest), assume, newval); + } while (assume != oldval); + + return reinterpret_cast(oldval) & 0xff; +} + +template +__inline__ __device__ T atomic_fetch_sub( + volatile T *dest, + typename std::enable_if::type val) { + unsigned int oldval, newval, assume; + oldval = *reinterpret_cast(dest); + + do { + assume = oldval; + newval = assume & 0x7fff0000 + ((assume & 0xffff) - val) & 0xffff; + oldval = atomicCAS(reinterpret_cast(dest), assume, newval); + } while (assume != oldval); + + return reinterpret_cast(oldval) & 0xffff; +} + +template +__inline__ __device__ T +atomic_fetch_sub(volatile T *const dest, + typename std::enable_if::type &val) { + // FIXME_HIP + Kokkos::abort("atomic_fetch_sub not implemented for large types.\n"); + T return_val; + int done = 0; + unsigned int active = __ballot(1); + unsigned int done_active = 0; + while (active != done_active) { + if (!done) { + /*if (Impl::lock_address_hip_space((void*)dest)) */ + { + return_val = *dest; + *dest = return_val - val; + // Impl::unlock_address_hip_space((void*)dest); + done = 1; + } + } + done_active = __ballot(done); + } + return return_val; +} + +// atomic_fetch_or ------------------------------------------------------------- + +__inline__ __device__ int atomic_fetch_or(volatile int *const dest, + int const val) { + return atomicOr(const_cast(dest), val); +} + +__inline__ __device__ unsigned int atomic_fetch_or( + volatile unsigned int *const dest, unsigned int const val) { + return atomicOr(const_cast(dest), val); +} + +__inline__ __device__ unsigned long long int atomic_fetch_or( + volatile unsigned long long int *const dest, + unsigned long long int const val) { + return atomicOr(const_cast(dest), val); +} + +// atomic_fetch_and ------------------------------------------------------------ + +__inline__ __device__ int atomic_fetch_and(volatile int *const dest, + int const val) { + return atomicAnd(const_cast(dest), val); +} + +__inline__ __device__ unsigned int atomic_fetch_and( + volatile unsigned int *const dest, unsigned int const val) { + return atomicAnd(const_cast(dest), val); +} + +__inline__ __device__ unsigned long long int atomic_fetch_and( + volatile unsigned long long int *const dest, + unsigned long long int const val) { + return atomicAnd(const_cast(dest), val); +} +} // namespace Kokkos +#endif + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_BlockSize_Deduction.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_BlockSize_Deduction.hpp new file mode 100644 index 0000000000..8799d359ff --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_BlockSize_Deduction.hpp @@ -0,0 +1,339 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HIP_BLOCKSIZE_DEDUCTION_HPP +#define KOKKOS_HIP_BLOCKSIZE_DEDUCTION_HPP + +#include + +#if defined(__HIPCC__) + +#include +#include + +namespace Kokkos { +namespace Experimental { +namespace Impl { +template +struct HIPGetMaxBlockSize; + +template +int hip_get_max_block_size(typename DriverType::functor_type const &f, + size_t const vector_length, + size_t const shmem_extra_block, + size_t const shmem_extra_thread) { + return HIPGetMaxBlockSize::get_block_size( + f, vector_length, shmem_extra_block, shmem_extra_thread); +} + +template +int hip_get_max_block_size(const HIPInternal * /*hip_instance*/, + const hipFuncAttributes &attr, + const FunctorType & /*f*/, + const size_t /*vector_length*/, + const size_t /*shmem_block*/, + const size_t /*shmem_thread*/) { + // FIXME_HIP find a better algorithm. Be aware that + // maxThreadsPerMultiProcessor, regsPerBlock, and l2CacheSize are bugged and + // always return zero + // https://github.com/ROCm-Developer-Tools/HIP/blob/6c5fa32815650cc20a4f783d09b013610348a4d5/include/hip/hcc_detail/hip_runtime_api.h#L438-L440 + // and we don't have access to the same information than we do for CUDA + + int const max_threads_per_block_mi60 = 1024; + int const max_threads_per_block = LaunchBounds::maxTperB == 0 + ? max_threads_per_block_mi60 + : LaunchBounds::maxTperB; + return std::min(attr.maxThreadsPerBlock, max_threads_per_block); +} + +template +struct HIPGetMaxBlockSize, true> { + static int get_block_size(typename DriverType::functor_type const &f, + size_t const vector_length, + size_t const shmem_extra_block, + size_t const shmem_extra_thread) { + unsigned int numBlocks = 0; + int blockSize = 1024; + int sharedmem = + shmem_extra_block + shmem_extra_thread * (blockSize / vector_length) + + ::Kokkos::Impl::FunctorTeamShmemSize< + typename DriverType::functor_type>::value(f, blockSize / + vector_length); + hipOccupancyMaxActiveBlocksPerMultiprocessor( + &numBlocks, hip_parallel_launch_constant_memory, blockSize, + sharedmem); + + if (numBlocks > 0) return blockSize; + while (blockSize > HIPTraits::WarpSize && numBlocks == 0) { + blockSize /= 2; + sharedmem = + shmem_extra_block + shmem_extra_thread * (blockSize / vector_length) + + ::Kokkos::Impl::FunctorTeamShmemSize< + typename DriverType::functor_type>::value(f, blockSize / + vector_length); + + hipOccupancyMaxActiveBlocksPerMultiprocessor( + &numBlocks, hip_parallel_launch_constant_memory, + blockSize, sharedmem); + } + int blockSizeUpperBound = blockSize * 2; + while (blockSize < blockSizeUpperBound && numBlocks > 0) { + blockSize += HIPTraits::WarpSize; + sharedmem = + shmem_extra_block + shmem_extra_thread * (blockSize / vector_length) + + ::Kokkos::Impl::FunctorTeamShmemSize< + typename DriverType::functor_type>::value(f, blockSize / + vector_length); + + hipOccupancyMaxActiveBlocksPerMultiprocessor( + &numBlocks, hip_parallel_launch_constant_memory, + blockSize, sharedmem); + } + return blockSize - HIPTraits::WarpSize; + } +}; + +template +struct HIPGetOptBlockSize; + +template +int hip_get_opt_block_size(typename DriverType::functor_type const &f, + size_t const vector_length, + size_t const shmem_extra_block, + size_t const shmem_extra_thread) { + return HIPGetOptBlockSize< + DriverType, LaunchBounds, + (HIPTraits::ConstantMemoryUseThreshold < + sizeof(DriverType))>::get_block_size(f, vector_length, shmem_extra_block, + shmem_extra_thread); +} + +template +int hip_get_opt_block_size(HIPInternal const * /*hip_instance*/, + hipFuncAttributes const &attr, + FunctorType const & /*f*/, + size_t const /*vector_length*/, + size_t const /*shmem_block*/, + size_t const /*shmem_thread*/) { + // FIXME_HIP find a better algorithm. Be aware that + // maxThreadsPerMultiProcessor, regsPerBlock, and l2CacheSize are bugged and + // always return zero + // https://github.com/ROCm-Developer-Tools/HIP/blob/6c5fa32815650cc20a4f783d09b013610348a4d5/include/hip/hcc_detail/hip_runtime_api.h#L438-L440 + // and we don't have access to the same information than we do for CUDA + + int const max_threads_per_block_mi60 = 1024; + int const max_threads_per_block = LaunchBounds::maxTperB == 0 + ? max_threads_per_block_mi60 + : LaunchBounds::maxTperB; + return std::min(attr.maxThreadsPerBlock, max_threads_per_block); +} + +// FIXME_HIP the code is identical to the false struct except for +// hip_parallel_launch_constant_memory +template +struct HIPGetOptBlockSize, true> { + static int get_block_size(typename DriverType::functor_type const &f, + size_t const vector_length, + size_t const shmem_extra_block, + size_t const shmem_extra_thread) { + int blockSize = HIPTraits::WarpSize / 2; + int numBlocks; + int sharedmem; + int maxOccupancy = 0; + int bestBlockSize = 0; + + while (blockSize < 1024) { + blockSize *= 2; + + // calculate the occupancy with that optBlockSize and check whether its + // larger than the largest one found so far + sharedmem = + shmem_extra_block + shmem_extra_thread * (blockSize / vector_length) + + ::Kokkos::Impl::FunctorTeamShmemSize< + typename DriverType::functor_type>::value(f, blockSize / + vector_length); + hipOccupancyMaxActiveBlocksPerMultiprocessor( + &numBlocks, hip_parallel_launch_constant_memory, + blockSize, sharedmem); + if (maxOccupancy < numBlocks * blockSize) { + maxOccupancy = numBlocks * blockSize; + bestBlockSize = blockSize; + } + } + return bestBlockSize; + } +}; + +template +struct HIPGetOptBlockSize, false> { + static int get_block_size(const typename DriverType::functor_type &f, + const size_t vector_length, + const size_t shmem_extra_block, + const size_t shmem_extra_thread) { + int blockSize = HIPTraits::WarpSize / 2; + int numBlocks; + int sharedmem; + int maxOccupancy = 0; + int bestBlockSize = 0; + + while (blockSize < 1024) { + blockSize *= 2; + sharedmem = + shmem_extra_block + shmem_extra_thread * (blockSize / vector_length) + + ::Kokkos::Impl::FunctorTeamShmemSize< + typename DriverType::functor_type>::value(f, blockSize / + vector_length); + + hipOccupancyMaxActiveBlocksPerMultiprocessor( + &numBlocks, hip_parallel_launch_local_memory, blockSize, + sharedmem); + + if (maxOccupancy < numBlocks * blockSize) { + maxOccupancy = numBlocks * blockSize; + bestBlockSize = blockSize; + } + } + return bestBlockSize; + } +}; + +// FIXME_HIP the code is identical to the false struct except for +// hip_parallel_launch_constant_memory +template +struct HIPGetOptBlockSize< + DriverType, Kokkos::LaunchBounds, + true> { + static int get_block_size(const typename DriverType::functor_type &f, + const size_t vector_length, + const size_t shmem_extra_block, + const size_t shmem_extra_thread) { + int blockSize = HIPTraits::WarpSize / 2; + int numBlocks; + int sharedmem; + int maxOccupancy = 0; + int bestBlockSize = 0; + int max_threads_per_block = + std::min(MaxThreadsPerBlock, + hip_internal_maximum_warp_count() * HIPTraits::WarpSize); + + while (blockSize < max_threads_per_block) { + blockSize *= 2; + + // calculate the occupancy with that optBlockSize and check whether its + // larger than the largest one found so far + sharedmem = + shmem_extra_block + shmem_extra_thread * (blockSize / vector_length) + + ::Kokkos::Impl::FunctorTeamShmemSize< + typename DriverType::functor_type>::value(f, blockSize / + vector_length); + hipOccupancyMaxActiveBlocksPerMultiprocessor( + &numBlocks, + hip_parallel_launch_constant_memory, + blockSize, sharedmem); + if (numBlocks >= static_cast(MinBlocksPerSM) && + blockSize <= static_cast(MaxThreadsPerBlock)) { + if (maxOccupancy < numBlocks * blockSize) { + maxOccupancy = numBlocks * blockSize; + bestBlockSize = blockSize; + } + } + } + if (maxOccupancy > 0) return bestBlockSize; + return -1; + } +}; + +template +struct HIPGetOptBlockSize< + DriverType, Kokkos::LaunchBounds, + false> { + static int get_block_size(const typename DriverType::functor_type &f, + const size_t vector_length, + const size_t shmem_extra_block, + const size_t shmem_extra_thread) { + int blockSize = HIPTraits::WarpSize / 2; + int numBlocks; + int sharedmem; + int maxOccupancy = 0; + int bestBlockSize = 0; + int max_threads_per_block = + std::min(MaxThreadsPerBlock, + hip_internal_maximum_warp_count() * HIPTraits::WarpSize); + + while (blockSize < max_threads_per_block) { + blockSize *= 2; + sharedmem = + shmem_extra_block + shmem_extra_thread * (blockSize / vector_length) + + ::Kokkos::Impl::FunctorTeamShmemSize< + typename DriverType::functor_type>::value(f, blockSize / + vector_length); + + hipOccupancyMaxActiveBlocksPerMultiprocessor( + &numBlocks, + hip_parallel_launch_local_memory, + blockSize, sharedmem); + if (numBlocks >= int(MinBlocksPerSM) && + blockSize <= int(MaxThreadsPerBlock)) { + if (maxOccupancy < numBlocks * blockSize) { + maxOccupancy = numBlocks * blockSize; + bestBlockSize = blockSize; + } + } + } + if (maxOccupancy > 0) return bestBlockSize; + return -1; + } +}; + +} // namespace Impl +} // namespace Experimental +} // namespace Kokkos + +#endif + +#endif diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_ViewAPI_b.cpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Error.hpp similarity index 50% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_ViewAPI_b.cpp rename to lib/kokkos/core/src/HIP/Kokkos_HIP_Error.hpp index b37937369a..2abded0e99 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_ViewAPI_b.cpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Error.hpp @@ -42,91 +42,69 @@ //@HEADER */ -#include +#ifndef KOKKOS_HIP_ERROR_HPP +#define KOKKOS_HIP_ERROR_HPP -namespace Test { +#include +#include -TEST_F(qthreads, impl_shared_alloc) { -#if 0 - test_shared_alloc< Kokkos::HostSpace, Kokkos::Qthreads >(); -#endif +#include + +#include + +namespace Kokkos { +namespace Impl { + +void hip_internal_error_throw(hipError_t e, const char* name, + const char* file = NULL, const int line = 0); + +inline void hip_internal_safe_call(hipError_t e, const char* name, + const char* file = NULL, + const int line = 0) { + if (hipSuccess != e) { + hip_internal_error_throw(e, name, file, line); + } } -TEST_F(qthreads, impl_view_mapping_b) { -#if 0 - test_view_mapping_subview< Kokkos::Qthreads >(); - TestViewMappingAtomic< Kokkos::Qthreads >::run(); -#endif -} +} // namespace Impl +} // namespace Kokkos -TEST_F(qthreads, view_api) { -#if 0 - TestViewAPI< double, Kokkos::Qthreads >(); -#endif -} +#define HIP_SAFE_CALL(call) \ + Kokkos::Impl::hip_internal_safe_call(call, #call, __FILE__, __LINE__) -TEST_F(qthreads, view_nested_view) { -#if 0 - ::Test::view_nested_view< Kokkos::Qthreads >(); -#endif -} +namespace Kokkos { +namespace Experimental { -TEST_F(qthreads, view_remap) { -#if 0 - enum { N0 = 3, N1 = 2, N2 = 8, N3 = 9 }; +class HIPRawMemoryAllocationFailure : public RawMemoryAllocationFailure { + private: + hipError_t m_error_code = hipSuccess; - typedef Kokkos::View< double*[N1][N2][N3], - Kokkos::LayoutRight, - Kokkos::Qthreads > output_type; - - typedef Kokkos::View< int**[N2][N3], - Kokkos::LayoutLeft, - Kokkos::Qthreads > input_type; - - typedef Kokkos::View< int*[N0][N2][N3], - Kokkos::LayoutLeft, - Kokkos::Qthreads > diff_type; - - output_type output( "output", N0 ); - input_type input ( "input", N0, N1 ); - diff_type diff ( "diff", N0 ); - - int value = 0; - - for ( size_t i3 = 0; i3 < N3; ++i3 ) - for ( size_t i2 = 0; i2 < N2; ++i2 ) - for ( size_t i1 = 0; i1 < N1; ++i1 ) - for ( size_t i0 = 0; i0 < N0; ++i0 ) - { - input( i0, i1, i2, i3 ) = ++value; + static FailureMode get_failure_mode(hipError_t error_code) { + switch (error_code) { + case hipErrorMemoryAllocation: return FailureMode::OutOfMemoryError; + case hipErrorInvalidValue: return FailureMode::InvalidAllocationSize; + default: return FailureMode::Unknown; + } } - // Kokkos::deep_copy( diff, input ); // Throw with incompatible shape. - Kokkos::deep_copy( output, input ); + public: + HIPRawMemoryAllocationFailure(size_t arg_attempted_size, + hipError_t arg_error_code, + AllocationMechanism arg_mechanism) noexcept + : RawMemoryAllocationFailure( + arg_attempted_size, /* HIPSpace doesn't handle alignment? */ 1, + get_failure_mode(arg_error_code), arg_mechanism), + m_error_code(arg_error_code) {} - value = 0; - - for ( size_t i3 = 0; i3 < N3; ++i3 ) - for ( size_t i2 = 0; i2 < N2; ++i2 ) - for ( size_t i1 = 0; i1 < N1; ++i1 ) - for ( size_t i0 = 0; i0 < N0; ++i0 ) - { - ++value; - ASSERT_EQ( value, ( (int) output( i0, i1, i2, i3 ) ) ); + void append_additional_error_information(std::ostream& o) const override { + if (m_error_code != hipSuccess) { + o << " The HIP allocation returned the error code \"\"" + << hipGetErrorName(m_error_code) << "\"."; + } } -#endif -} +}; -TEST_F(qthreads, view_aggregate) { -#if 0 - TestViewAggregate< Kokkos::Qthreads >(); -#endif -} +} // namespace Experimental +} // namespace Kokkos -TEST_F(qthreads, template_meta_functions) { -#if 0 - TestTemplateMetaFunctions< int, Kokkos::Qthreads >(); #endif -} - -} // namespace Test diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.cpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.cpp new file mode 100644 index 0000000000..1dcba0ff3e --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.cpp @@ -0,0 +1,373 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +/*--------------------------------------------------------------------------*/ +/* Kokkos interfaces */ + +#include + +#include +#include +#include +#include + +/*--------------------------------------------------------------------------*/ +/* Standard 'C' libraries */ +#include + +/* Standard 'C++' libraries */ +#include +#include +#include +#include + +namespace Kokkos { +namespace Experimental { +namespace { +class HIPInternalDevices { + public: + enum { MAXIMUM_DEVICE_COUNT = 64 }; + struct hipDeviceProp_t m_hipProp[MAXIMUM_DEVICE_COUNT]; + int m_hipDevCount; + + HIPInternalDevices(); + + static HIPInternalDevices const &singleton(); +}; + +HIPInternalDevices::HIPInternalDevices() { + HIP_SAFE_CALL(hipGetDeviceCount(&m_hipDevCount)); + + if (m_hipDevCount > MAXIMUM_DEVICE_COUNT) { + Kokkos::abort( + "Sorry, you have more GPUs per node than we thought anybody would ever " + "have. Please report this to github.com/kokkos/kokkos."); + } + for (int i = 0; i < m_hipDevCount; ++i) { + HIP_SAFE_CALL(hipGetDeviceProperties(m_hipProp + i, i)); + } +} + +const HIPInternalDevices &HIPInternalDevices::singleton() { + static HIPInternalDevices self; + return self; +} +} // namespace + +namespace Impl { + +int HIPInternal::was_initialized = 0; +int HIPInternal::was_finalized = 0; +//---------------------------------------------------------------------------- + +void HIPInternal::print_configuration(std::ostream & /*s*/) const { + // FIXME_HIP + Kokkos::abort("print_configuration not implemented!\n"); + /*const HIPInternalDevices & dev_info = HIPInternalDevices::singleton(); + +#if defined( KOKKOS_ENABLE_HIP ) + s << "macro KOKKOS_ENABLE_HIP : defined" << std::endl ; +#endif +#if defined( __hcc_version__ ) + s << "macro __hcc_version__ = " << __hcc_version__ + << std::endl ; +#endif + + for ( int i = 0 ; i < dev_info.m_hipDevCount ; ++i ) { + s << "Kokkos::Experimental::HIP[ " << i << " ] " + << dev_info.m_hipProp[i].name + << " version " << (dev_info.m_hipProp[i].major) << "." << +dev_info.m_hipProp[i].minor + << ", Total Global Memory: " << +human_memory_size(dev_info.m_hipProp[i].totalGlobalMem) + << ", Shared Memory per Wavefront: " << +human_memory_size(dev_info.m_hipProp[i].sharedMemPerWavefront); if ( m_hipDev == +i ) s << " : Selected" ; s << std::endl ; + }*/ +} + +//---------------------------------------------------------------------------- + +HIPInternal::~HIPInternal() { + if (m_scratchSpace || m_scratchFlags) { + std::cerr << "Kokkos::Experimental::HIP ERROR: Failed to call " + "Kokkos::Experimental::HIP::finalize()" + << std::endl; + std::cerr.flush(); + } + + m_hipDev = -1; + m_hipArch = -1; + m_multiProcCount = 0; + m_maxWarpCount = 0; + m_maxSharedWords = 0; + m_maxShmemPerBlock = 0; + m_scratchSpaceCount = 0; + m_scratchFlagsCount = 0; + m_scratchSpace = 0; + m_scratchFlags = 0; +} + +int HIPInternal::verify_is_initialized(const char *const label) const { + if (m_hipDev < 0) { + std::cerr << "Kokkos::Experimental::HIP::" << label + << " : ERROR device not initialized" << std::endl; + } + return 0 <= m_hipDev; +} + +HIPInternal &HIPInternal::singleton() { + static HIPInternal *self = nullptr; + if (!self) { + self = new HIPInternal(); + } + return *self; +} + +void HIPInternal::initialize(int hip_device_id) { + if (was_finalized) + Kokkos::abort("Calling HIP::initialize after HIP::finalize is illegal\n"); + + if (is_initialized()) return; + + enum { WordSize = sizeof(size_type) }; + + if (!HostSpace::execution_space::impl_is_initialized()) { + const std::string msg( + "HIP::initialize ERROR : HostSpace::execution_space " + "is not initialized"); + Kokkos::Impl::throw_runtime_exception(msg); + } + + const HIPInternalDevices &dev_info = HIPInternalDevices::singleton(); + + const bool ok_init = 0 == m_scratchSpace || 0 == m_scratchFlags; + + // Need at least a GPU device + const bool ok_id = + 0 <= hip_device_id && hip_device_id < dev_info.m_hipDevCount; + + if (ok_init && ok_id) { + const struct hipDeviceProp_t &hipProp = dev_info.m_hipProp[hip_device_id]; + + m_hipDev = hip_device_id; + + hipSetDevice(m_hipDev); + + // FIXME_HIP for now always uses default stream + m_stream = 0; + + // number of multiprocessors + m_multiProcCount = hipProp.multiProcessorCount; + + //---------------------------------- + // Maximum number of warps, + // at most one warp per thread in a warp for reduction. + m_maxWarpCount = hipProp.maxThreadsPerBlock / Impl::HIPTraits::WarpSize; + if (HIPTraits::WarpSize < m_maxWarpCount) { + m_maxWarpCount = Impl::HIPTraits::WarpSize; + } + m_maxSharedWords = hipProp.sharedMemPerBlock / WordSize; + + //---------------------------------- + // Maximum number of blocks + m_maxBlock = hipProp.maxGridSize[0]; + + m_shmemPerSM = hipProp.maxSharedMemoryPerMultiProcessor; + m_maxShmemPerBlock = hipProp.sharedMemPerBlock; + m_maxThreadsPerSM = hipProp.maxThreadsPerMultiProcessor; + m_maxThreadsPerBlock = hipProp.maxThreadsPerBlock; + + //---------------------------------- + // Multiblock reduction uses scratch flags for counters + // and scratch space for partial reduction values. + // Allocate some initial space. This will grow as needed. + { + const unsigned reduce_block_count = + m_maxWarpCount * Impl::HIPTraits::WarpSize; + + (void)scratch_flags(reduce_block_count * 2 * sizeof(size_type)); + (void)scratch_space(reduce_block_count * 16 * sizeof(size_type)); + } + //---------------------------------- + } else { + std::ostringstream msg; + msg << "Kokkos::Experimental::HIP::initialize(" << hip_device_id + << ") FAILED"; + + if (!ok_init) { + msg << " : Already initialized"; + } + if (!ok_id) { + msg << " : Device identifier out of range " + << "[0.." << dev_info.m_hipDevCount - 1 << "]"; + } + Kokkos::Impl::throw_runtime_exception(msg.str()); + } + + // Init the array for used for arbitrarily sized atomics + // FIXME_HIP uncomment this when global variable works + // if (m_stream == 0) ::Kokkos::Impl::initialize_host_hip_lock_arrays(); +} + +//---------------------------------------------------------------------------- + +typedef Kokkos::Experimental::HIP::size_type + ScratchGrain[Impl::HIPTraits::WarpSize]; +enum { sizeScratchGrain = sizeof(ScratchGrain) }; + +Kokkos::Experimental::HIP::size_type *HIPInternal::scratch_space( + const Kokkos::Experimental::HIP::size_type size) { + if (verify_is_initialized("scratch_space") && + m_scratchSpaceCount * sizeScratchGrain < size) { + m_scratchSpaceCount = (size + sizeScratchGrain - 1) / sizeScratchGrain; + + typedef Kokkos::Impl::SharedAllocationRecord + Record; + + static Record *const r = Record::allocate( + Kokkos::Experimental::HIPSpace(), "InternalScratchSpace", + (sizeScratchGrain * m_scratchSpaceCount)); + + Record::increment(r); + + m_scratchSpace = reinterpret_cast(r->data()); + } + + return m_scratchSpace; +} + +Kokkos::Experimental::HIP::size_type *HIPInternal::scratch_flags( + const Kokkos::Experimental::HIP::size_type size) { + if (verify_is_initialized("scratch_flags") && + m_scratchFlagsCount * sizeScratchGrain < size) { + m_scratchFlagsCount = (size + sizeScratchGrain - 1) / sizeScratchGrain; + + typedef Kokkos::Impl::SharedAllocationRecord + Record; + + Record *const r = Record::allocate( + Kokkos::Experimental::HIPSpace(), "InternalScratchFlags", + (sizeScratchGrain * m_scratchFlagsCount)); + + Record::increment(r); + + m_scratchFlags = reinterpret_cast(r->data()); + + hipMemset(m_scratchFlags, 0, m_scratchFlagsCount * sizeScratchGrain); + } + + return m_scratchFlags; +} + +//---------------------------------------------------------------------------- + +void HIPInternal::finalize() { + HIP().fence(); + was_finalized = 1; + if (0 != m_scratchSpace || 0 != m_scratchFlags) { + typedef Kokkos::Impl::SharedAllocationRecord + RecordHIP; + + RecordHIP::decrement(RecordHIP::get_record(m_scratchFlags)); + RecordHIP::decrement(RecordHIP::get_record(m_scratchSpace)); + + m_hipDev = -1; + m_hipArch = -1; + m_multiProcCount = 0; + m_maxWarpCount = 0; + m_maxBlock = 0; + m_maxSharedWords = 0; + m_maxShmemPerBlock = 0; + m_scratchSpaceCount = 0; + m_scratchFlagsCount = 0; + m_scratchSpace = 0; + m_scratchFlags = 0; + } +} + +//---------------------------------------------------------------------------- + +Kokkos::Experimental::HIP::size_type hip_internal_maximum_warp_count() { + return HIPInternal::singleton().m_maxWarpCount; +} + +Kokkos::Experimental::HIP::size_type hip_internal_maximum_grid_count() { + return HIPInternal::singleton().m_maxBlock; +} + +Kokkos::Experimental::HIP::size_type *hip_internal_scratch_space( + const Kokkos::Experimental::HIP::size_type size) { + return HIPInternal::singleton().scratch_space(size); +} + +Kokkos::Experimental::HIP::size_type *hip_internal_scratch_flags( + const Kokkos::Experimental::HIP::size_type size) { + return HIPInternal::singleton().scratch_flags(size); +} + +} // namespace Impl +} // namespace Experimental +} // namespace Kokkos + +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { +void hip_device_synchronize() { HIP_SAFE_CALL(hipDeviceSynchronize()); } + +void hip_internal_error_throw(hipError_t e, const char *name, const char *file, + const int line) { + std::ostringstream out; + out << name << " error( " << hipGetErrorName(e) + << "): " << hipGetErrorString(e); + if (file) { + out << " " << file << ":" << line; + } + throw_runtime_exception(out.str()); +} +} // namespace Impl +} // namespace Kokkos diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.hpp new file mode 100644 index 0000000000..c66fb2776f --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.hpp @@ -0,0 +1,141 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +/*--------------------------------------------------------------------------*/ + +#ifndef KOKKOS_HIP_INSTANCE_HPP +#define KOKKOS_HIP_INSTANCE_HPP + +#include + +namespace Kokkos { +namespace Experimental { +namespace Impl { + +struct HIPTraits { + static int constexpr WarpSize = 64; + static int constexpr WarpIndexShift = 6; /* WarpSize == 1 << WarpShift*/ + + static int constexpr ConstantMemoryUsage = 0x008000; /* 32k bytes */ + static int constexpr ConstantMemoryUseThreshold = 0x000200; /* 512 bytes */ +}; + +//---------------------------------------------------------------------------- + +HIP::size_type hip_internal_maximum_warp_count(); +HIP::size_type hip_internal_maximum_grid_count(); + +HIP::size_type *hip_internal_scratch_space(const HIP::size_type size); +HIP::size_type *hip_internal_scratch_flags(const HIP::size_type size); + +//---------------------------------------------------------------------------- + +class HIPInternal { + private: + HIPInternal(const HIPInternal &); + HIPInternal &operator=(const HIPInternal &); + + public: + using size_type = ::Kokkos::Experimental::HIP::size_type; + + int m_hipDev; + int m_hipArch; + unsigned m_multiProcCount; + unsigned m_maxWarpCount; + unsigned m_maxBlock; + unsigned m_maxSharedWords; + int m_shmemPerSM; + int m_maxShmemPerBlock; + int m_maxThreadsPerSM; + int m_maxThreadsPerBlock; + size_type m_scratchSpaceCount; + size_type m_scratchFlagsCount; + size_type *m_scratchSpace; + size_type *m_scratchFlags; + + hipStream_t m_stream; + + static int was_initialized; + static int was_finalized; + + static HIPInternal &singleton(); + + int verify_is_initialized(const char *const label) const; + + int is_initialized() const { + return m_hipDev >= 0; + } // 0 != m_scratchSpace && 0 != m_scratchFlags ; } + + void initialize(int hip_device_id); + void finalize(); + + void print_configuration(std::ostream &) const; + + ~HIPInternal(); + + HIPInternal() + : m_hipDev(-1), + m_hipArch(-1), + m_multiProcCount(0), + m_maxWarpCount(0), + m_maxBlock(0), + m_maxSharedWords(0), + m_shmemPerSM(0), + m_maxShmemPerBlock(0), + m_maxThreadsPerSM(0), + m_maxThreadsPerBlock(0), + m_scratchSpaceCount(0), + m_scratchFlagsCount(0), + m_scratchSpace(0), + m_scratchFlags(0) {} + + size_type *scratch_space(const size_type size); + size_type *scratch_flags(const size_type size); +}; + +} // namespace Impl +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.cpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.cpp new file mode 100644 index 0000000000..7c8582ef0e --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.cpp @@ -0,0 +1,72 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include + +namespace Kokkos { +namespace Experimental { +namespace Impl { + +void *hip_resize_scratch_space(std::int64_t bytes, bool force_shrink) { + static void *ptr = nullptr; + static std::int64_t current_size = 0; + if (bytes > current_size) { + current_size = bytes; + if (ptr) Kokkos::kokkos_free<::Kokkos::Experimental::HIPSpace>(ptr); + ptr = Kokkos::kokkos_malloc( + "HIPSpace::ScratchMemory", current_size); + } + if ((bytes < current_size) && (force_shrink)) { + current_size = bytes; + Kokkos::kokkos_free<::Kokkos::Experimental::HIPSpace>(ptr); + ptr = Kokkos::kokkos_malloc( + "HIPSpace::ScratchMemory", current_size); + } + return ptr; +} +} // namespace Impl +} // namespace Experimental +} // namespace Kokkos diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.hpp new file mode 100644 index 0000000000..5c19a3e0da --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.hpp @@ -0,0 +1,212 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HIP_KERNEL_LAUNCH_HPP +#define KOKKOS_HIP_KERNEL_LAUNCH_HPP + +#include + +#if defined(__HIPCC__) + +#include +#include +#include + +// FIXME_HIP cannot use global variable on the device with ROCm 2.9 +//__device__ __constant__ unsigned long kokkos_impl_hip_constant_memory_buffer +// [Kokkos::Experimental::Impl::HIPTraits::ConstantMemoryUsage / +// sizeof(unsigned long)]; + +namespace Kokkos { +namespace Experimental { +template +inline __device__ T *kokkos_impl_hip_shared_memory() { + extern __shared__ HIPSpace::size_type sh[]; + return (T *)sh; +} +} // namespace Experimental +} // namespace Kokkos + +namespace Kokkos { +namespace Experimental { +namespace Impl { + +void *hip_resize_scratch_space(std::int64_t bytes, bool force_shrink = false); + +template +__global__ static void hip_parallel_launch_constant_memory() { + __device__ __constant__ unsigned long kokkos_impl_hip_constant_memory_buffer + [Kokkos::Experimental::Impl::HIPTraits::ConstantMemoryUsage / + sizeof(unsigned long)]; + + const DriverType &driver = *(reinterpret_cast( + kokkos_impl_hip_constant_memory_buffer)); + + driver(); +} + +template +__global__ static void hip_parallel_launch_local_memory( + const DriverType driver) { + driver(); +} + +template +__global__ __launch_bounds__( + maxTperB, + minBperSM) static void hip_parallel_launch_local_memory(const DriverType + driver) { + driver(); +} + +enum class HIPLaunchMechanism : unsigned { + Default = 0, + ConstantMemory = 1, + GlobalMemory = 2, + LocalMemory = 4 +}; + +constexpr inline HIPLaunchMechanism operator|(HIPLaunchMechanism p1, + HIPLaunchMechanism p2) { + return static_cast(static_cast(p1) | + static_cast(p2)); +} +constexpr inline HIPLaunchMechanism operator&(HIPLaunchMechanism p1, + HIPLaunchMechanism p2) { + return static_cast(static_cast(p1) & + static_cast(p2)); +} + +template +struct HIPDispatchProperties { + HIPLaunchMechanism launch_mechanism = l; +}; + +template , + HIPLaunchMechanism LaunchMechanism = HIPLaunchMechanism::LocalMemory> +struct HIPParallelLaunch; + +template +struct HIPParallelLaunch< + DriverType, Kokkos::LaunchBounds, + HIPLaunchMechanism::LocalMemory> { + inline HIPParallelLaunch(const DriverType &driver, const dim3 &grid, + const dim3 &block, const int shmem, + const HIPInternal *hip_instance, + const bool /*prefer_shmem*/) { + if ((grid.x != 0) && ((block.x * block.y * block.z) != 0)) { + if (hip_instance->m_maxShmemPerBlock < shmem) { + Kokkos::Impl::throw_runtime_exception( + "HIPParallelLaunch FAILED: shared memory request is too large"); + } + + // Invoke the driver function on the device + printf("%i %i %i | %i %i %i | %i\n", grid.x, grid.y, grid.z, block.x, + block.y, block.z, shmem); + printf("Pre Launch Error: %s\n", hipGetErrorName(hipGetLastError())); + + hipLaunchKernelGGL( + (hip_parallel_launch_local_memory), + grid, block, shmem, hip_instance->m_stream, driver); + + Kokkos::Experimental::HIP().fence(); + printf("Post Launch Error: %s\n", hipGetErrorName(hipGetLastError())); +#if defined(KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK) + HIP_SAFE_CALL(hipGetLastError()); + Kokkos::Experimental::HIP().fence(); +#endif + } + } + + static hipFuncAttributes get_hip_func_attributes() { + hipFuncAttributes attr; + hipFuncGetAttributes( + &attr, hip_parallel_launch_local_memory); + return attr; + } +}; + +template +struct HIPParallelLaunch, + HIPLaunchMechanism::LocalMemory> { + inline HIPParallelLaunch(const DriverType &driver, const dim3 &grid, + const dim3 &block, const int shmem, + const HIPInternal *hip_instance, + const bool /*prefer_shmem*/) { + if ((grid.x != 0) && ((block.x * block.y * block.z) != 0)) { + if (hip_instance->m_maxShmemPerBlock < shmem) { + Kokkos::Impl::throw_runtime_exception(std::string( + "HIPParallelLaunch FAILED: shared memory request is too large")); + } + + // Invoke the driver function on the device + hipLaunchKernelGGL(hip_parallel_launch_local_memory, grid, + block, shmem, hip_instance->m_stream, driver); + + Kokkos::Experimental::HIP().fence(); +#if defined(KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK) + HIP_SAFE_CALL(hipGetLastError()); + Kokkos::Experimental::HIP().fence(); +#endif + } + } + + static hipFuncAttributes get_hip_func_attributes() { + hipFuncAttributes attr; + hipFuncGetAttributes(&attr, + reinterpret_cast( + &hip_parallel_launch_local_memory)); + return attr; + } +}; +} // namespace Impl +} // namespace Experimental +} // namespace Kokkos + +#endif + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.cpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.cpp new file mode 100644 index 0000000000..0a34ed505b --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.cpp @@ -0,0 +1,118 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include + +#include +#include +#include + +#include + +#include + +#ifdef KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE +__device__ __constant__ HIPLockArrays g_device_hip_lock_arrays = {nullptr, + nullptr, 0}; +#endif + +namespace Kokkos { + +namespace { + +__global__ void init_lock_array_kernel_atomic() { + unsigned i = hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x; + if (i < KOKKOS_IMPL_HIP_SPACE_ATOMIC_MASK + 1) { + g_device_hip_lock_arrays.atomic[i] = 0; + } +} + +__global__ void init_lock_array_kernel_threadid(int N) { + unsigned i = hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x; + if (i < static_cast(N)) { + g_device_hip_lock_arrays.scratch[i] = 0; + } +} + +} // namespace + +namespace Impl { + +HIPLockArrays g_host_hip_lock_arrays = {nullptr, nullptr, 0}; + +void initialize_host_hip_lock_arrays() { + if (g_host_hip_lock_arrays.atomic != nullptr) return; + HIP_SAFE_CALL(hipMalloc( + &g_host_hip_lock_arrays.atomic, + sizeof(std::int32_t) * (KOKKOS_IMPL_HIP_SPACE_ATOMIC_MASK + 1))); + HIP_SAFE_CALL(hipMalloc( + &g_host_hip_lock_arrays.scratch, + sizeof(std::int32_t) * (::Kokkos::Experimental::HIP::concurrency()))); + + g_host_hip_lock_arrays.n = ::Kokkos::Experimental::HIP::concurrency(); + + KOKKOS_COPY_HIP_LOCK_ARRAYS_TO_DEVICE(); + hipLaunchKernelGGL(init_lock_array_kernel_atomic, + (KOKKOS_IMPL_HIP_SPACE_ATOMIC_MASK + 1 + 255) / 256, 256, + 0, 0); + hipLaunchKernelGGL(init_lock_array_kernel_threadid, + (::Kokkos::Experimental::HIP::concurrency() + 255) / 256, + 256, 0, 0, ::Kokkos::Experimental::HIP::concurrency()); +} + +void finalize_host_hip_lock_arrays() { + if (g_host_hip_lock_arrays.atomic == nullptr) return; + hipFree(g_host_hip_lock_arrays.atomic); + g_host_hip_lock_arrays.atomic = nullptr; + hipFree(g_host_hip_lock_arrays.scratch); + g_host_hip_lock_arrays.scratch = nullptr; + g_host_hip_lock_arrays.n = 0; +#ifdef KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE + KOKKOS_COPY_HIP_LOCK_ARRAYS_TO_DEVICE(); +#endif +} + +} // namespace Impl + +} // namespace Kokkos diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.hpp new file mode 100644 index 0000000000..fb6728ea14 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.hpp @@ -0,0 +1,174 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HIP_LOCKS_HPP +#define KOKKOS_HIP_LOCKS_HPP + +#include + +#include + +#include + +// FIXME_HIP We cannot use global variables defined in a namespace + +struct HIPLockArrays { + std::int32_t* atomic; + std::int32_t* scratch; + std::int32_t n; +}; + +/// \brief This global variable in Host space is the central definition +/// of these arrays. +extern HIPLockArrays g_host_hip_lock_arrays; + +namespace Kokkos { +namespace Impl { + +/// \brief After this call, the g_host_hip_lock_arrays variable has +/// valid, initialized arrays. +/// +/// This call is idempotent. +void initialize_host_hip_lock_arrays(); + +/// \brief After this call, the g_host_hip_lock_arrays variable has +/// all null pointers, and all array memory has been freed. +/// +/// This call is idempotent. +void finalize_host_hip_lock_arrays(); + +} // namespace Impl +} // namespace Kokkos + +#if defined(__HIPCC__) + +/// \brief This global variable in HIP space is what kernels use +/// to get access to the lock arrays. +/// +/// When relocatable device code is enabled, there can be one single +/// instance of this global variable for the entire executable, +/// whose definition will be in Kokkos_HIP_Locks.cpp (and whose declaration +/// here must then be extern). +/// This one instance will be initialized by initialize_host_HIP_lock_arrays +/// and need not be modified afterwards. +/// +/// When relocatable device code is disabled, an instance of this variable +/// will be created in every translation unit that sees this header file. +/// Since the Kokkos_HIP_Locks.cpp translation unit cannot initialize the +/// instances in other translation units, we must update this HIP global +/// variable based on the Host global variable prior to running any kernels +/// that will use it. +/// That is the purpose of the KOKKOS_ENSURE_HIP_LOCK_ARRAYS_ON_DEVICE macro. +__device__ +#ifdef KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE + __constant__ extern +#endif + HIPLockArrays g_device_hip_lock_arrays; + +#define KOKKOS_IMPL_HIP_SPACE_ATOMIC_MASK 0x1FFFF + +namespace Kokkos { +namespace Impl { + +/// \brief Acquire a lock for the address +/// +/// This function tries to acquire the lock for the hash value derived +/// from the provided ptr. If the lock is successfully acquired the +/// function returns true. Otherwise it returns false. +__device__ inline bool lock_address_hip_space(void* ptr) { + auto offset = reinterpret_cast(ptr); + offset = offset >> 2; + offset = offset & KOKKOS_IMPL_HIP_SPACE_ATOMIC_MASK; + return (0 == atomicCAS(&g_device_hip_lock_arrays.atomic[offset], 0, 1)); +} + +/// \brief Release lock for the address +/// +/// This function releases the lock for the hash value derived +/// from the provided ptr. This function should only be called +/// after previously successfully aquiring a lock with +/// lock_address. +__device__ inline void unlock_address_hip_space(void* ptr) { + auto offset = reinterpret_cast(ptr); + offset = offset >> 2; + offset = offset & KOKKOS_IMPL_HIP_SPACE_ATOMIC_MASK; + atomicExch(&g_device_hip_lock_arrays.atomic[offset], 0); +} + +} // namespace Impl +} // namespace Kokkos + +// Make lock_array_copied an explicit translation unit scope thingy +namespace Kokkos { +namespace Impl { +namespace { +static int lock_array_copied = 0; +inline int eliminate_warning_for_lock_array() { return lock_array_copied; } +} // namespace +} // namespace Impl +} // namespace Kokkos + +/* Dan Ibanez: it is critical that this code be a macro, so that it will + capture the right address for g_device_hip_lock_arrays! + putting this in an inline function will NOT do the right thing! */ +#define KOKKOS_COPY_HIP_LOCK_ARRAYS_TO_DEVICE() \ + { \ + if (::Kokkos::Impl::lock_array_copied == 0) { \ + HIP_SAFE_CALL(hipMemcpyToSymbol(HIP_SYMBOL(g_device_hip_lock_arrays), \ + &g_host_hip_lock_arrays, \ + sizeof(HIPLockArrays))); \ + } \ + lock_array_copied = 1; \ + } + +#ifdef KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE +#define KOKKOS_ENSURE_HIP_LOCK_ARRAYS_ON_DEVICE() +#else +#define KOKKOS_ENSURE_HIP_LOCK_ARRAYS_ON_DEVICE() \ + KOKKOS_COPY_HIP_LOCK_ARRAYS_TO_DEVICE() +#endif + +#endif /* defined( __HIPCC__ ) */ + +#endif /* #ifndef KOKKOS_HIP_LOCKS_HPP */ diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_MDRange.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_MDRange.hpp new file mode 100644 index 0000000000..7a6161346c --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_MDRange.hpp @@ -0,0 +1,411 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HIP_PARALLEL_MDRANGE_HPP +#define KOKKOS_HIP_PARALLEL_MDRANGE_HPP + +#include +#include +#include +#include +#include + +namespace Kokkos { +namespace Impl { +// ParallelFor +template +class ParallelFor, + Kokkos::Experimental::HIP> { + public: + using Policy = Kokkos::MDRangePolicy; + + private: + using array_index_type = typename Policy::array_index_type; + using index_type = typename Policy::index_type; + using LaunchBounds = typename Policy::launch_bounds; + + const FunctorType m_functor; + const Policy m_policy; + + ParallelFor() = delete; + ParallelFor& operator=(ParallelFor const&) = delete; + + public: + inline __device__ void operator()(void) const { + Kokkos::Impl::DeviceIterateTile(m_policy, + m_functor) + .exec_range(); + } + + inline void execute() const { + if (m_policy.m_num_tiles == 0) return; + array_index_type const maxblocks = static_cast( + m_policy.space().impl_internal_space_instance()->m_maxBlock); + if (Policy::rank == 2) { + dim3 const block(m_policy.m_tile[0], m_policy.m_tile[1], 1); + dim3 const grid( + std::min((m_policy.m_upper[0] - m_policy.m_lower[0] + block.x - 1) / + block.x, + maxblocks), + std::min((m_policy.m_upper[1] - m_policy.m_lower[1] + block.y - 1) / + block.y, + maxblocks), + 1); + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, 0, + m_policy.space().impl_internal_space_instance(), false); + } else if (Policy::rank == 3) { + dim3 const block(m_policy.m_tile[0], m_policy.m_tile[1], + m_policy.m_tile[2]); + dim3 const grid( + std::min((m_policy.m_upper[0] - m_policy.m_lower[0] + block.x - 1) / + block.x, + maxblocks), + std::min((m_policy.m_upper[1] - m_policy.m_lower[1] + block.y - 1) / + block.y, + maxblocks), + std::min((m_policy.m_upper[2] - m_policy.m_lower[2] + block.z - 1) / + block.z, + maxblocks)); + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, 0, + m_policy.space().impl_internal_space_instance(), false); + } else if (Policy::rank == 4) { + // id0,id1 encoded within hipThreadIdx_x; id2 to hipThreadIdx_y; id3 to + // hipThreadIdx_z + dim3 const block(m_policy.m_tile[0] * m_policy.m_tile[1], + m_policy.m_tile[2], m_policy.m_tile[3]); + dim3 const grid( + std::min(static_cast(m_policy.m_tile_end[0] * + m_policy.m_tile_end[1]), + static_cast(maxblocks)), + std::min((m_policy.m_upper[2] - m_policy.m_lower[2] + block.y - 1) / + block.y, + maxblocks), + std::min((m_policy.m_upper[3] - m_policy.m_lower[3] + block.z - 1) / + block.z, + maxblocks)); + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, 0, + m_policy.space().impl_internal_space_instance(), false); + } else if (Policy::rank == 5) { + // id0,id1 encoded within hipThreadIdx_x; id2,id3 to hipThreadIdx_y; id4 + // to hipThreadIdx_z + dim3 const block(m_policy.m_tile[0] * m_policy.m_tile[1], + m_policy.m_tile[2] * m_policy.m_tile[3], + m_policy.m_tile[4]); + dim3 const grid( + std::min(static_cast(m_policy.m_tile_end[0] * + m_policy.m_tile_end[1]), + static_cast(maxblocks)), + std::min(static_cast(m_policy.m_tile_end[2] * + m_policy.m_tile_end[3]), + static_cast(maxblocks)), + std::min((m_policy.m_upper[4] - m_policy.m_lower[4] + block.z - 1) / + block.z, + maxblocks)); + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, 0, + m_policy.space().impl_internal_space_instance(), false); + } else if (Policy::rank == 6) { + // id0,id1 encoded within hipThreadIdx_x; id2,id3 to hipThreadIdx_y; + // id4,id5 to hipThreadIdx_z + dim3 const block(m_policy.m_tile[0] * m_policy.m_tile[1], + m_policy.m_tile[2] * m_policy.m_tile[3], + m_policy.m_tile[4] * m_policy.m_tile[5]); + dim3 const grid(std::min(static_cast(m_policy.m_tile_end[0] * + m_policy.m_tile_end[1]), + static_cast(maxblocks)), + std::min(static_cast(m_policy.m_tile_end[2] * + m_policy.m_tile_end[3]), + static_cast(maxblocks)), + std::min(static_cast(m_policy.m_tile_end[4] * + m_policy.m_tile_end[5]), + static_cast(maxblocks))); + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, 0, + m_policy.space().impl_internal_space_instance(), false); + } else { + printf("Kokkos::MDRange Error: Exceeded rank bounds with HIP\n"); + Kokkos::abort("Aborting"); + } + + } // end execute + + ParallelFor(FunctorType const& arg_functor, Policy const& arg_policy) + : m_functor(arg_functor), m_policy(arg_policy) {} +}; + +// ParallelReduce +template +class ParallelReduce, ReducerType, + Kokkos::Experimental::HIP> { + public: + using Policy = Kokkos::MDRangePolicy; + + private: + using array_index_type = typename Policy::array_index_type; + using index_type = typename Policy::index_type; + + using WorkTag = typename Policy::work_tag; + using Member = typename Policy::member_type; + using LaunchBounds = typename Policy::launch_bounds; + + using ReducerConditional = + Kokkos::Impl::if_c::value, + FunctorType, ReducerType>; + using ReducerTypeFwd = typename ReducerConditional::type; + using WorkTagFwd = + typename Kokkos::Impl::if_c::value, + WorkTag, void>::type; + + using ValueTraits = + Kokkos::Impl::FunctorValueTraits; + using ValueInit = Kokkos::Impl::FunctorValueInit; + using ValueJoin = Kokkos::Impl::FunctorValueJoin; + + public: + using pointer_type = typename ValueTraits::pointer_type; + using value_type = typename ValueTraits::value_type; + using reference_type = typename ValueTraits::reference_type; + using functor_type = FunctorType; + using size_type = Experimental::HIP::size_type; + + // Algorithmic constraints: blockSize is a power of two AND hipBlockDim_y == + // hipBlockDim_z == 1 + + const FunctorType m_functor; + const Policy m_policy; // used for workrange and nwork + const ReducerType m_reducer; + const pointer_type m_result_ptr; + const bool m_result_ptr_device_accessible; + size_type* m_scratch_space; + size_type* m_scratch_flags; + + using DeviceIteratePattern = typename Kokkos::Impl::Reduce::DeviceIterateTile< + Policy::rank, Policy, FunctorType, WorkTag, reference_type>; + + // Shall we use the shfl based reduction or not (only use it for static sized + // types of more than 128bit + enum { + UseShflReduction = ((sizeof(value_type) > 2 * sizeof(double)) && + (ValueTraits::StaticValueSize != 0)) + }; + // Some crutch to do function overloading + private: + using DummyShflReductionType = double; + using DummySHMEMReductionType = int; + + public: + inline __device__ void exec_range(reference_type update) const { + DeviceIteratePattern(m_policy, m_functor, update).exec_range(); + } + + inline __device__ void operator()(void) const { + const integral_nonzero_constant + word_count(ValueTraits::value_size( + ReducerConditional::select(m_functor, m_reducer)) / + sizeof(size_type)); + + { + reference_type value = ValueInit::init( + ReducerConditional::select(m_functor, m_reducer), + Experimental::kokkos_impl_hip_shared_memory() + + hipThreadIdx_y * word_count.value); + + // Number of blocks is bounded so that the reduction can be limited to two + // passes. Each thread block is given an approximately equal amount of + // work to perform. Accumulate the values for this block. The accumulation + // ordering does not match the final pass, but is arithmatically + // equivalent. + + this->exec_range(value); + } + + // Reduce with final value at hipBlockDim_y - 1 location. + // Problem: non power-of-two blockDim + if (::Kokkos::Impl::hip_single_inter_block_reduce_scan< + false, ReducerTypeFwd, WorkTagFwd>( + ReducerConditional::select(m_functor, m_reducer), hipBlockIdx_x, + hipGridDim_x, + Experimental::kokkos_impl_hip_shared_memory(), + m_scratch_space, m_scratch_flags)) { + // This is the final block with the final result at the final threads' + // location + size_type* const shared = + Experimental::kokkos_impl_hip_shared_memory() + + (hipBlockDim_y - 1) * word_count.value; + size_type* const global = m_result_ptr_device_accessible + ? reinterpret_cast(m_result_ptr) + : m_scratch_space; + + if (hipThreadIdx_y == 0) { + Kokkos::Impl::FunctorFinal::final( + ReducerConditional::select(m_functor, m_reducer), shared); + } + + if (Experimental::Impl::HIPTraits::WarpSize < word_count.value) { + __syncthreads(); + } + + for (unsigned i = hipThreadIdx_y; i < word_count.value; + i += hipBlockDim_y) { + global[i] = shared[i]; + } + } + } + + // Determine block size constrained by shared memory: + // This is copy/paste from Kokkos_HIP_Parallel_Range + inline unsigned local_block_size(const FunctorType& f) { + unsigned n = Experimental::Impl::HIPTraits::WarpSize * 8; + int shmem_size = ::Kokkos::Impl::hip_single_inter_block_reduce_scan_shmem< + false, FunctorType, WorkTag>(f, n); + while ( + (n && + (m_policy.space().impl_internal_space_instance()->m_maxShmemPerBlock < + shmem_size)) || + (n > static_cast( + ::Kokkos::Experimental::Impl::hip_get_max_block_size< + ParallelReduce, LaunchBounds>(f, 1, shmem_size, 0)))) { + n >>= 1; + shmem_size = ::Kokkos::Impl::hip_single_inter_block_reduce_scan_shmem< + false, FunctorType, WorkTag>(f, n); + } + return n; + } + + inline void execute() { + const int nwork = m_policy.m_num_tiles; + if (nwork) { + int block_size = m_policy.m_prod_tile_dims; + // CONSTRAINT: Algorithm requires block_size >= product of tile dimensions + // Nearest power of two + int exponent_pow_two = std::ceil(std::log2(block_size)); + block_size = std::pow(2, exponent_pow_two); + int suggested_blocksize = local_block_size(m_functor); + + block_size = (block_size > suggested_blocksize) + ? block_size + : suggested_blocksize; // Note: block_size must be less + // than or equal to 512 + + m_scratch_space = + ::Kokkos::Experimental::Impl::hip_internal_scratch_space( + ValueTraits::value_size( + ReducerConditional::select(m_functor, m_reducer)) * + block_size /* block_size == max block_count */); + m_scratch_flags = + ::Kokkos::Experimental::Impl::hip_internal_scratch_flags( + sizeof(size_type)); + + // REQUIRED ( 1 , N , 1 ) + const dim3 block(1, block_size, 1); + // Required grid.x <= block.y + const dim3 grid(std::min(int(block.y), int(nwork)), 1, 1); + + const int shmem = + UseShflReduction + ? 0 + : ::Kokkos::Impl::hip_single_inter_block_reduce_scan_shmem< + false, FunctorType, WorkTag>(m_functor, block.y); + + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, shmem, + m_policy.space().impl_internal_space_instance(), + false); // copy to device and execute + + if (!m_result_ptr_device_accessible) { + Experimental::HIP().fence(); + + if (m_result_ptr) { + const int size = ValueTraits::value_size( + ReducerConditional::select(m_functor, m_reducer)); + DeepCopy(m_result_ptr, + m_scratch_space, size); + } + } + } else { + if (m_result_ptr) { + ValueInit::init(ReducerConditional::select(m_functor, m_reducer), + m_result_ptr); + } + } + } + + template + ParallelReduce(const FunctorType& arg_functor, const Policy& arg_policy, + const ViewType& arg_result, + typename std::enable_if::value, + void*>::type = NULL) + : m_functor(arg_functor), + m_policy(arg_policy), + m_reducer(InvalidType()), + m_result_ptr(arg_result.data()), + m_result_ptr_device_accessible( + MemorySpaceAccess::accessible), + m_scratch_space(0), + m_scratch_flags(0) {} + + ParallelReduce(const FunctorType& arg_functor, const Policy& arg_policy, + const ReducerType& reducer) + : m_functor(arg_functor), + m_policy(arg_policy), + m_reducer(reducer), + m_result_ptr(reducer.view().data()), + m_result_ptr_device_accessible( + MemorySpaceAccess::accessible), + m_scratch_space(0), + m_scratch_flags(0) {} +}; +} // namespace Impl +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Range.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Range.hpp new file mode 100644 index 0000000000..a9c44606e4 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Range.hpp @@ -0,0 +1,655 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKO_HIP_PARALLEL_RANGE_HPP +#define KOKKO_HIP_PARALLEL_RANGE_HPP + +#include + +#if defined(__HIPCC__) + +#include +#include +#include + +namespace Kokkos { +namespace Impl { + +template +class ParallelFor, + Kokkos::Experimental::HIP> { + public: + using Policy = Kokkos::RangePolicy; + + private: + using Member = typename Policy::member_type; + using WorkTag = typename Policy::work_tag; + using LaunchBounds = typename Policy::launch_bounds; + + const FunctorType m_functor; + const Policy m_policy; + + ParallelFor() = delete; + ParallelFor& operator=(const ParallelFor&) = delete; + + template + inline __device__ + typename std::enable_if::value>::type + exec_range(const Member i) const { + m_functor(i); + } + + template + inline __device__ + typename std::enable_if::value>::type + exec_range(const Member i) const { + m_functor(TagType(), i); + } + + public: + using functor_type = FunctorType; + + inline __device__ void operator()(void) const { + const Member work_stride = hipBlockDim_y * hipGridDim_x; + const Member work_end = m_policy.end(); + + for (Member iwork = + m_policy.begin() + hipThreadIdx_y + hipBlockDim_y * hipBlockIdx_x; + iwork < work_end; + iwork = iwork < work_end - work_stride ? iwork + work_stride + : work_end) { + this->template exec_range(iwork); + } + } + + inline void execute() const { + const typename Policy::index_type nwork = m_policy.end() - m_policy.begin(); + + const int block_size = 256; // FIXME_HIP Choose block_size better + const dim3 block(1, block_size, 1); + const dim3 grid( + typename Policy::index_type((nwork + block.y - 1) / block.y), 1, 1); + + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, 0, m_policy.space().impl_internal_space_instance(), + false); + } + + ParallelFor(const FunctorType& arg_functor, const Policy& arg_policy) + : m_functor(arg_functor), m_policy(arg_policy) {} +}; + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +template +class ParallelReduce, ReducerType, + Kokkos::Experimental::HIP> { + public: + using Policy = Kokkos::RangePolicy; + + private: + using WorkRange = typename Policy::WorkRange; + using WorkTag = typename Policy::work_tag; + using Member = typename Policy::member_type; + using LaunchBounds = typename Policy::launch_bounds; + + using ReducerConditional = + Kokkos::Impl::if_c::value, + FunctorType, ReducerType>; + using ReducerTypeFwd = typename ReducerConditional::type; + using WorkTagFwd = + typename Kokkos::Impl::if_c::value, + WorkTag, void>::type; + + using ValueTraits = + Kokkos::Impl::FunctorValueTraits; + using ValueInit = Kokkos::Impl::FunctorValueInit; + using ValueJoin = Kokkos::Impl::FunctorValueJoin; + + public: + using pointer_type = typename ValueTraits::pointer_type; + using value_type = typename ValueTraits::value_type; + using reference_type = typename ValueTraits::reference_type; + using functor_type = FunctorType; + using size_type = Kokkos::Experimental::HIP::size_type; + using index_type = typename Policy::index_type; + + // Algorithmic constraints: blockSize is a power of two AND hipBlockDim_y == + // hipBlockDim_z == 1 + + const FunctorType m_functor; + const Policy m_policy; + const ReducerType m_reducer; + const pointer_type m_result_ptr; + const bool m_result_ptr_device_accessible; + size_type* m_scratch_space = nullptr; + size_type* m_scratch_flags = nullptr; + + // Shall we use the shfl based reduction or not (only use it for static sized + // types of more than 128bit) + enum { + UseShflReduction = false + }; //((sizeof(value_type)>2*sizeof(double)) && ValueTraits::StaticValueSize) + //}; + // Some crutch to do function overloading + private: + using DummyShflReductionType = double; + using DummySHMEMReductionType = int; + + public: + // Make the exec_range calls call to Reduce::DeviceIterateTile + template + __device__ inline + typename std::enable_if::value>::type + exec_range(const Member& i, reference_type update) const { + m_functor(i, update); + } + + template + __device__ inline + typename std::enable_if::value>::type + exec_range(const Member& i, reference_type update) const { + m_functor(TagType(), i, update); + } + + __device__ inline void operator()() const { + const integral_nonzero_constant + word_count(ValueTraits::value_size( + ReducerConditional::select(m_functor, m_reducer)) / + sizeof(size_type)); + + { + reference_type value = ValueInit::init( + ReducerConditional::select(m_functor, m_reducer), + ::Kokkos::Experimental::kokkos_impl_hip_shared_memory() + + hipThreadIdx_y * word_count.value); + + // Number of blocks is bounded so that the reduction can be limited to two + // passes. Each thread block is given an approximately equal amount of + // work to perform. Accumulate the values for this block. The accumulation + // ordering does not match the final pass, but is arithmetically + // equivalent. + + const WorkRange range(m_policy, hipBlockIdx_x, hipGridDim_x); + + for (Member iwork = range.begin() + hipThreadIdx_y, + iwork_end = range.end(); + iwork < iwork_end; iwork += hipBlockDim_y) { + this->template exec_range(iwork, value); + } + } + + // Reduce with final value at hipBlockDim_y - 1 location. + if (hip_single_inter_block_reduce_scan( + ReducerConditional::select(m_functor, m_reducer), hipBlockIdx_x, + hipGridDim_x, + ::Kokkos::Experimental::kokkos_impl_hip_shared_memory(), + m_scratch_space, m_scratch_flags)) { + // This is the final block with the final result at the final threads' + // location + + size_type* const shared = + ::Kokkos::Experimental::kokkos_impl_hip_shared_memory() + + (hipBlockDim_y - 1) * word_count.value; + size_type* const global = m_result_ptr_device_accessible + ? reinterpret_cast(m_result_ptr) + : m_scratch_space; + + if (hipThreadIdx_y == 0) { + Kokkos::Impl::FunctorFinal::final( + ReducerConditional::select(m_functor, m_reducer), shared); + } + + if (::Kokkos::Experimental::Impl::HIPTraits::WarpSize < + word_count.value) { + __syncthreads(); + } + + for (unsigned i = hipThreadIdx_y; i < word_count.value; + i += hipBlockDim_y) { + global[i] = shared[i]; + } + } + } + + // Determine block size constrained by shared memory: + inline unsigned local_block_size(const FunctorType& f) { + // FIXME_HIP I don't know where 8 comes from + unsigned int n = ::Kokkos::Experimental::Impl::HIPTraits::WarpSize * 8; + int shmem_size = + hip_single_inter_block_reduce_scan_shmem( + f, n); + while ( + (n && + (m_policy.space().impl_internal_space_instance()->m_maxShmemPerBlock < + shmem_size)) || + (n > static_cast( + Kokkos::Experimental::Impl::hip_get_max_block_size< + ParallelReduce, LaunchBounds>(f, 1, shmem_size, 0)))) { + n >>= 1; + shmem_size = + hip_single_inter_block_reduce_scan_shmem( + f, n); + } + return n; + } + + inline void execute() { + const index_type nwork = m_policy.end() - m_policy.begin(); + if (nwork) { + const int block_size = local_block_size(m_functor); + + m_scratch_space = + ::Kokkos::Experimental::Impl::hip_internal_scratch_space( + ValueTraits::value_size( + ReducerConditional::select(m_functor, m_reducer)) * + block_size /* block_size == max block_count */); + m_scratch_flags = + ::Kokkos::Experimental::Impl::hip_internal_scratch_flags( + sizeof(size_type)); + + // REQUIRED ( 1 , N , 1 ) + const dim3 block(1, block_size, 1); + // Required grid.x <= block.y + const dim3 grid( + std::min(int(block.y), int((nwork + block.y - 1) / block.y)), 1, 1); + + const int shmem = + UseShflReduction + ? 0 + : hip_single_inter_block_reduce_scan_shmem(m_functor, + block.y); + + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, shmem, + m_policy.space().impl_internal_space_instance(), + false); // copy to device and execute + + if (!m_result_ptr_device_accessible) { + ::Kokkos::Experimental::HIP().fence(); + + if (m_result_ptr) { + const int size = ValueTraits::value_size( + ReducerConditional::select(m_functor, m_reducer)); + DeepCopy( + m_result_ptr, m_scratch_space, size); + } + } + } else { + if (m_result_ptr) { + ValueInit::init(ReducerConditional::select(m_functor, m_reducer), + m_result_ptr); + } + } + } + + template + ParallelReduce(const FunctorType& arg_functor, const Policy& arg_policy, + const ViewType& arg_result, + typename std::enable_if::value, + void*>::type = NULL) + : m_functor(arg_functor), + m_policy(arg_policy), + m_reducer(InvalidType()), + m_result_ptr(arg_result.data()), + m_result_ptr_device_accessible( + MemorySpaceAccess::accessible) {} + + ParallelReduce(const FunctorType& arg_functor, const Policy& arg_policy, + const ReducerType& reducer) + : m_functor(arg_functor), + m_policy(arg_policy), + m_reducer(reducer), + m_result_ptr(reducer.view().data()), + m_result_ptr_device_accessible( + MemorySpaceAccess::accessible) {} +}; + +template +class ParallelScanHIPBase { + public: + using Policy = Kokkos::RangePolicy; + + protected: + using Member = typename Policy::member_type; + using WorkTag = typename Policy::work_tag; + using WorkRange = typename Policy::WorkRange; + using LaunchBounds = typename Policy::launch_bounds; + + using ValueTraits = Kokkos::Impl::FunctorValueTraits; + using ValueInit = Kokkos::Impl::FunctorValueInit; + using ValueOps = Kokkos::Impl::FunctorValueOps; + + public: + using pointer_type = typename ValueTraits::pointer_type; + using reference_type = typename ValueTraits::reference_type; + using functor_type = FunctorType; + using size_type = Kokkos::Experimental::HIP::size_type; + using index_type = typename Policy::index_type; + + protected: + // Algorithmic constraints: + // (a) hipBlockDim_y is a power of two + // (b) hipBlockDim_x == hipBlockDim_z == 1 + // (c) hipGridDim_x <= hipBlockDim_y * hipBlockDim_y + // (d) hipGridDim_y == hipGridDim_z == 1 + + const FunctorType m_functor; + const Policy m_policy; + size_type* m_scratch_space = nullptr; + size_type* m_scratch_flags = nullptr; + size_type m_final = false; + int m_grid_x = 0; + + private: + template + __device__ inline + typename std::enable_if::value>::type + exec_range(const Member& i, reference_type update, + const bool final_result) const { + m_functor(i, update, final_result); + } + + template + __device__ inline + typename std::enable_if::value>::type + exec_range(const Member& i, reference_type update, + const bool final_result) const { + m_functor(TagType(), i, update, final_result); + } + + //---------------------------------------- + + __device__ inline void initial(void) const { + const integral_nonzero_constant + word_count(ValueTraits::value_size(m_functor) / sizeof(size_type)); + + size_type* const shared_value = + Kokkos::Experimental::kokkos_impl_hip_shared_memory() + + word_count.value * hipThreadIdx_y; + + ValueInit::init(m_functor, shared_value); + + // Number of blocks is bounded so that the reduction can be limited to two + // passes. Each thread block is given an approximately equal amount of work + // to perform. Accumulate the values for this block. The accumulation + // ordering does not match the final pass, but is arithmetically equivalent. + + const WorkRange range(m_policy, hipBlockIdx_x, hipGridDim_x); + + for (Member iwork = range.begin() + hipThreadIdx_y, iwork_end = range.end(); + iwork < iwork_end; iwork += hipBlockDim_y) { + this->template exec_range( + iwork, ValueOps::reference(shared_value), false); + } + + // Reduce and scan, writing out scan of blocks' totals and block-groups' + // totals. Blocks' scan values are written to 'hipBlockIdx_x' location. + // Block-groups' scan values are at: i = ( j * hipBlockDim_y - 1 ) for i < + // hipGridDim_x + hip_single_inter_block_reduce_scan( + m_functor, hipBlockIdx_x, hipGridDim_x, + Kokkos::Experimental::kokkos_impl_hip_shared_memory(), + m_scratch_space, m_scratch_flags); + } + + //---------------------------------------- + + __device__ inline void final(void) const { + const integral_nonzero_constant + word_count(ValueTraits::value_size(m_functor) / sizeof(size_type)); + + // Use shared memory as an exclusive scan: { 0 , value[0] , value[1] , + // value[2] , ... } + size_type* const shared_data = + Kokkos::Experimental::kokkos_impl_hip_shared_memory(); + size_type* const shared_prefix = + shared_data + word_count.value * hipThreadIdx_y; + size_type* const shared_accum = + shared_data + word_count.value * (hipBlockDim_y + 1); + + // Starting value for this thread block is the previous block's total. + if (hipBlockIdx_x) { + size_type* const block_total = + m_scratch_space + word_count.value * (hipBlockIdx_x - 1); + for (unsigned i = hipThreadIdx_y; i < word_count.value; ++i) { + shared_accum[i] = block_total[i]; + } + } else if (0 == hipThreadIdx_y) { + ValueInit::init(m_functor, shared_accum); + } + + const WorkRange range(m_policy, hipBlockIdx_x, hipGridDim_x); + + for (typename Policy::member_type iwork_base = range.begin(); + iwork_base < range.end(); iwork_base += hipBlockDim_y) { + const typename Policy::member_type iwork = iwork_base + hipThreadIdx_y; + + __syncthreads(); // Don't overwrite previous iteration values until they + // are used + + ValueInit::init(m_functor, shared_prefix + word_count.value); + + // Copy previous block's accumulation total into thread[0] prefix and + // inclusive scan value of this block + for (unsigned i = hipThreadIdx_y; i < word_count.value; ++i) { + shared_data[i + word_count.value] = shared_data[i] = shared_accum[i]; + } + + // Make sure the write is seen by all threads + __threadfence_block(); + + // Call functor to accumulate inclusive scan value for this work item + const bool doWork = (iwork < range.end()); + if (doWork) { + this->template exec_range( + iwork, ValueOps::reference(shared_prefix + word_count.value), + false); + } + + // Scan block values into locations shared_data[1..hipBlockDim_y] + hip_intra_block_reduce_scan( + m_functor, + typename ValueTraits::pointer_type(shared_data + word_count.value)); + + { + size_type* const block_total = + shared_data + word_count.value * hipBlockDim_y; + for (unsigned i = hipThreadIdx_y; i < word_count.value; ++i) { + shared_accum[i] = block_total[i]; + } + } + + // Call functor with exclusive scan value + if (doWork) { + this->template exec_range( + iwork, ValueOps::reference(shared_prefix), true); + } + } + } + + public: + //---------------------------------------- + + __device__ inline void operator()(void) const { + if (!m_final) { + initial(); + } else { + final(); + } + } + + // Determine block size constrained by shared memory: + inline unsigned local_block_size(const FunctorType& f) { + // hipBlockDim_y must be power of two = 128 (2 warps) or 256 (4 warps) or + // 512 (8 warps) hipGridDim_x <= hipBlockDim_y * hipBlockDim_y + // + // TODO check best option + + unsigned n = Experimental::Impl::HIPTraits::WarpSize * 4; + while (n && static_cast(m_policy.space() + .impl_internal_space_instance() + ->m_maxShmemPerBlock) < + hip_single_inter_block_reduce_scan_shmem(f, n)) { + n >>= 1; + } + return n; + } + + inline void impl_execute() { + const index_type nwork = m_policy.end() - m_policy.begin(); + if (nwork) { + // FIXME_HIP we cannot choose it larger for large work sizes to work + // correctly, the unit tests fail with wrong results + const int gridMaxComputeCapability_2x = 0x01fff; + + // FIXME_HIP block sizes greater than 256 don't work correctly, + // the unit tests fail with wrong results + const int block_size = + std::min(static_cast(local_block_size(m_functor)), 256); + + const int grid_max = + std::min(block_size * block_size, gridMaxComputeCapability_2x); + + // At most 'max_grid' blocks: + const int max_grid = + std::min(grid_max, (nwork + block_size - 1) / block_size); + + // How much work per block: + const int work_per_block = (nwork + max_grid - 1) / max_grid; + + // How many block are really needed for this much work: + m_grid_x = (nwork + work_per_block - 1) / work_per_block; + + m_scratch_space = Kokkos::Experimental::Impl::hip_internal_scratch_space( + ValueTraits::value_size(m_functor) * m_grid_x); + m_scratch_flags = Kokkos::Experimental::Impl::hip_internal_scratch_flags( + sizeof(size_type) * 1); + + dim3 grid(m_grid_x, 1, 1); + dim3 block(1, block_size, 1); // REQUIRED DIMENSIONS ( 1 , N , 1 ) + const int shmem = ValueTraits::value_size(m_functor) * (block_size + 2); + + m_final = false; + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, shmem, + m_policy.space().impl_internal_space_instance(), + false); // copy to device and execute + + m_final = true; + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, shmem, + m_policy.space().impl_internal_space_instance(), + false); // copy to device and execute + } + } + + ParallelScanHIPBase(const FunctorType& arg_functor, const Policy& arg_policy) + : m_functor(arg_functor), m_policy(arg_policy) {} +}; + +template +class ParallelScan, + Kokkos::Experimental::HIP> + : private ParallelScanHIPBase { + public: + using Base = ParallelScanHIPBase; + using Base::operator(); + + inline void execute() { Base::impl_execute(); } + + ParallelScan(const FunctorType& arg_functor, + const typename Base::Policy& arg_policy) + : Base(arg_functor, arg_policy) {} +}; + +//---------------------------------------------------------------------------- + +template +class ParallelScanWithTotal, + ReturnType, Kokkos::Experimental::HIP> + : private ParallelScanHIPBase { + public: + using Base = ParallelScanHIPBase; + using Base::operator(); + + ReturnType& m_returnvalue; + + inline void execute() { + Base::impl_execute(); + + const auto nwork = Base::m_policy.end() - Base::m_policy.begin(); + if (nwork) { + const int size = Base::ValueTraits::value_size(Base::m_functor); + DeepCopy( + &m_returnvalue, + Base::m_scratch_space + (Base::m_grid_x - 1) * size / sizeof(int), + size); + } + } + + ParallelScanWithTotal(const FunctorType& arg_functor, + const typename Base::Policy& arg_policy, + ReturnType& arg_returnvalue) + : Base(arg_functor, arg_policy), m_returnvalue(arg_returnvalue) {} +}; + +} // namespace Impl +} // namespace Kokkos + +#endif + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Team.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Team.hpp new file mode 100644 index 0000000000..53097f3643 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Team.hpp @@ -0,0 +1,562 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKO_HIP_PARALLEL_TEAM_HPP +#define KOKKO_HIP_PARALLEL_TEAM_HPP + +#include + +#if defined(__HIPCC__) + +#include +#include +#include +#include + +namespace Kokkos { +namespace Impl { +template +class TeamPolicyInternal + : public PolicyTraits { + public: + using execution_policy = TeamPolicyInternal; + + using traits = PolicyTraits; + + template + friend class TeamPolicyInternal; + + private: + static int constexpr MAX_WARP = 8; + + typename traits::execution_space m_space; + int m_league_size; + int m_team_size; + int m_vector_length; + int m_team_scratch_size[2]; + int m_thread_scratch_size[2]; + int m_chunk_size; + + public: + using execution_space = Kokkos::Experimental::HIP; + + template + TeamPolicyInternal(TeamPolicyInternal const& p) { + m_league_size = p.m_league_size; + m_team_size = p.m_team_size; + m_vector_length = p.m_vector_length; + m_team_scratch_size[0] = p.m_team_scratch_size[0]; + m_team_scratch_size[1] = p.m_team_scratch_size[1]; + m_thread_scratch_size[0] = p.m_thread_scratch_size[0]; + m_thread_scratch_size[1] = p.m_thread_scratch_size[1]; + m_chunk_size = p.m_chunk_size; + m_space = p.m_space; + } + + TeamPolicyInternal& operator=(TeamPolicyInternal const& p) { + m_league_size = p.m_league_size; + m_team_size = p.m_team_size; + m_vector_length = p.m_vector_length; + m_team_scratch_size[0] = p.m_team_scratch_size[0]; + m_team_scratch_size[1] = p.m_team_scratch_size[1]; + m_thread_scratch_size[0] = p.m_thread_scratch_size[0]; + m_thread_scratch_size[1] = p.m_thread_scratch_size[1]; + m_chunk_size = p.m_chunk_size; + m_space = p.m_space; + return *this; + } + + template + int team_size_max(FunctorType const& f, ParallelForTag const&) const { + using closure_type = + Impl::ParallelFor >; + hipFuncAttributes attr = ::Kokkos::Experimental::Impl::HIPParallelLaunch< + closure_type, + typename traits::launch_bounds>::get_hip_func_attributes(); + int const block_size = ::Kokkos::Experimental::Impl::hip_get_max_block_size< + FunctorType, typename traits::launch_bounds>( + space().impl_internal_space_instance(), attr, f, + static_cast(vector_length()), + static_cast(team_scratch_size(0)) + 2 * sizeof(double), + static_cast(thread_scratch_size(0)) + sizeof(double)); + return block_size / vector_length(); + } + + template + int team_size_recommended(FunctorType const& f, ParallelForTag const&) const { + typedef Impl::ParallelFor > + closure_type; + hipFuncAttributes attr = ::Kokkos::Experimental::Impl::HIPParallelLaunch< + closure_type, + typename traits::launch_bounds>::get_hip_func_attributes(); + int const block_size = ::Kokkos::Experimental::Impl::hip_get_opt_block_size< + FunctorType, typename traits::launch_bounds>( + space().impl_internal_space_instance(), attr, f, + static_cast(vector_length()), + static_cast(team_scratch_size(0)) + 2 * sizeof(double), + static_cast(thread_scratch_size(0)) + sizeof(double)); + return block_size / vector_length(); + } + + static int vector_length_max() { + return ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + } + + static int verify_requested_vector_length(int requested_vector_length) { + int test_vector_length = + std::min(requested_vector_length, vector_length_max()); + + // Allow only power-of-two vector_length + if (!(is_integral_power_of_two(test_vector_length))) { + int test_pow2 = 1; + for (int i = 0; i < 5; i++) { + test_pow2 = test_pow2 << 1; + if (test_pow2 > test_vector_length) { + break; + } + } + test_vector_length = test_pow2 >> 1; + } + + return test_vector_length; + } + + static int scratch_size_max(int level) { + return ( + level == 0 ? 1024 * 40 : // FIXME_HIP arbitrarily setting this to 48kB + 20 * 1024 * 1024); // FIXME_HIP arbitrarily setting this to 20MB + } + + int vector_length() const { return m_vector_length; } + + int team_size() const { return m_team_size; } + + int league_size() const { return m_league_size; } + + int scratch_size(int level, int team_size_ = -1) const { + if (team_size_ < 0) team_size_ = m_team_size; + return m_team_scratch_size[level] + + team_size_ * m_thread_scratch_size[level]; + } + + int team_scratch_size(int level) const { return m_team_scratch_size[level]; } + + int thread_scratch_size(int level) const { + return m_thread_scratch_size[level]; + } + + typename traits::execution_space space() const { return m_space; } + + TeamPolicyInternal() + : m_space(typename traits::execution_space()), + m_league_size(0), + m_team_size(-1), + m_vector_length(0), + m_team_scratch_size{0, 0}, + m_thread_scratch_size{0, 0}, + m_chunk_size(::Kokkos::Experimental::Impl::HIPTraits::WarpSize) {} + + /** \brief Specify league size, request team size */ + TeamPolicyInternal(const execution_space space_, int league_size_, + int team_size_request, int vector_length_request = 1) + : m_space(space_), + m_league_size(league_size_), + m_team_size(team_size_request), + m_vector_length(verify_requested_vector_length(vector_length_request)), + m_team_scratch_size{0, 0}, + m_thread_scratch_size{0, 0}, + m_chunk_size(::Kokkos::Experimental::Impl::HIPTraits::WarpSize) { + // Make sure league size is permissable + if (league_size_ >= + static_cast( + ::Kokkos::Experimental::Impl::hip_internal_maximum_grid_count())) + Impl::throw_runtime_exception( + "Requested too large league_size for TeamPolicy on HIP execution " + "space."); + + // Make sure total block size is permissable + if (m_team_size * m_vector_length > 1024) { + Impl::throw_runtime_exception( + std::string("Kokkos::TeamPolicy< HIP > the team size is too large. " + "Team size x vector length must be smaller than 1024.")); + } + } + + /** \brief Specify league size, request team size */ + TeamPolicyInternal(const execution_space space_, int league_size_, + const Kokkos::AUTO_t& /* team_size_request */, + int vector_length_request = 1) + : m_space(space_), + m_league_size(league_size_), + m_team_size(-1), + m_vector_length(verify_requested_vector_length(vector_length_request)), + m_team_scratch_size{0, 0}, + m_thread_scratch_size{0, 0}, + m_chunk_size(::Kokkos::Experimental::Impl::HIPTraits::WarpSize) { + // Make sure league size is permissable + if (league_size_ >= + static_cast( + ::Kokkos::Experimental::Impl::hip_internal_maximum_grid_count())) + Impl::throw_runtime_exception( + "Requested too large league_size for TeamPolicy on HIP execution " + "space."); + } + + TeamPolicyInternal(int league_size_, int team_size_request, + int vector_length_request = 1) + : m_space(typename traits::execution_space()), + m_league_size(league_size_), + m_team_size(team_size_request), + m_vector_length(verify_requested_vector_length(vector_length_request)), + m_team_scratch_size{0, 0}, + m_thread_scratch_size{0, 0}, + m_chunk_size(::Kokkos::Experimental::Impl::HIPTraits::WarpSize) { + // Make sure league size is permissable + if (league_size_ >= + static_cast( + ::Kokkos::Experimental::Impl::hip_internal_maximum_grid_count())) + Impl::throw_runtime_exception( + "Requested too large league_size for TeamPolicy on HIP execution " + "space."); + + // Make sure total block size is permissable + if (m_team_size * m_vector_length > 1024) { + Impl::throw_runtime_exception( + std::string("Kokkos::TeamPolicy< HIP > the team size is too large. " + "Team size x vector length must be smaller than 1024.")); + } + } + + TeamPolicyInternal(int league_size_, + const Kokkos::AUTO_t& /* team_size_request */, + int vector_length_request = 1) + : m_space(typename traits::execution_space()), + m_league_size(league_size_), + m_team_size(-1), + m_vector_length(verify_requested_vector_length(vector_length_request)), + m_team_scratch_size{0, 0}, + m_thread_scratch_size{0, 0}, + m_chunk_size(::Kokkos::Experimental::Impl::HIPTraits::WarpSize) { + // Make sure league size is permissable + if (league_size_ >= + static_cast( + ::Kokkos::Experimental::Impl::hip_internal_maximum_grid_count())) + Impl::throw_runtime_exception( + "Requested too large league_size for TeamPolicy on HIP execution " + "space."); + } + + int chunk_size() const { return m_chunk_size; } + + TeamPolicyInternal& set_chunk_size(typename traits::index_type chunk_size_) { + m_chunk_size = chunk_size_; + return *this; + } + + /** \brief set per team scratch size for a specific level of the scratch + * hierarchy */ + TeamPolicyInternal& set_scratch_size(int level, + PerTeamValue const& per_team) { + m_team_scratch_size[level] = per_team.value; + return *this; + } + + /** \brief set per thread scratch size for a specific level of the scratch + * hierarchy */ + TeamPolicyInternal& set_scratch_size(int level, + PerThreadValue const& per_thread) { + m_thread_scratch_size[level] = per_thread.value; + return *this; + } + + /** \brief set per thread and per team scratch size for a specific level of + * the scratch hierarchy */ + TeamPolicyInternal& set_scratch_size(int level, PerTeamValue const& per_team, + PerThreadValue const& per_thread) { + m_team_scratch_size[level] = per_team.value; + m_thread_scratch_size[level] = per_thread.value; + return *this; + } + + using member_type = Kokkos::Impl::HIPTeamMember; + + protected: + template + int internal_team_size_common(const FunctorType& f, + BlockSizeCallable&& block_size_callable) const { + using closure_type = ClosureType; + using functor_value_traits = + Impl::FunctorValueTraits; + + hipFuncAttributes attr = ::Kokkos::Experimental::Impl::HIPParallelLaunch< + closure_type, + typename traits::launch_bounds>::get_hip_func_attributes(); + const int block_size = std::forward(block_size_callable)( + space().impl_internal_space_instance(), attr, f, + static_cast(vector_length()), + static_cast(team_scratch_size(0)) + 2 * sizeof(double), + static_cast(thread_scratch_size(0)) + sizeof(double) + + ((functor_value_traits::StaticValueSize != 0) + ? 0 + : functor_value_traits::value_size(f))); + KOKKOS_ASSERT(block_size > 0); + + // Currently we require Power-of-2 team size for reductions. + int p2 = 1; + while (p2 <= block_size) p2 *= 2; + p2 /= 2; + return p2 / vector_length(); + } + + template + int internal_team_size_max(const FunctorType& f) const { + return internal_team_size_common( + f, ::Kokkos::Experimental::Impl::hip_get_max_block_size< + FunctorType, typename traits::launch_bounds>); + } + + template + int internal_team_size_recommended(const FunctorType& f) const { + return internal_team_size_common( + f, ::Kokkos::Experimental::Impl::hip_get_opt_block_size< + FunctorType, typename traits::launch_bounds>); + } +}; + +struct HIPLockArrays { + std::int32_t* atomic = nullptr; + std::int32_t* scratch = nullptr; + std::int32_t n = 0; +}; + +template +class ParallelFor, + Kokkos::Experimental::HIP> { + public: + using Policy = TeamPolicyInternal; + using functor_type = FunctorType; + using size_type = ::Kokkos::Experimental::HIP::size_type; + + private: + using Member = typename Policy::member_type; + using WorkTag = typename Policy::work_tag; + using LaunchBounds = typename Policy::launch_bounds; + + // Algorithmic constraints: hipBlockDim_y is a power of two AND hipBlockDim_y + // == hipBlockDim_z == 1 shared memory utilization: + // + // [ team reduce space ] + // [ team shared space ] + + FunctorType const m_functor; + Policy const m_policy; + size_type const m_league_size; + int m_team_size; + size_type const m_vector_size; + int m_shmem_begin; + int m_shmem_size; + void* m_scratch_ptr[2]; + int m_scratch_size[2]; + mutable HIPLockArrays hip_lock_arrays; + + template + __device__ inline + typename std::enable_if::value>::type + exec_team(const Member& member) const { + m_functor(member); + } + + template + __device__ inline + typename std::enable_if::value>::type + exec_team(const Member& member) const { + m_functor(TagType(), member); + } + + public: + __device__ inline void operator()(void) const { + // Iterate this block through the league + int64_t threadid = 0; + if (m_scratch_size[1] > 0) { + __shared__ int64_t base_thread_id; + if (hipThreadIdx_x == 0 && hipThreadIdx_y == 0) { + threadid = (hipBlockIdx_x * hipBlockDim_z + hipThreadIdx_z) % + (hip_lock_arrays.n / (hipBlockDim_x * hipBlockDim_y)); + threadid *= hipBlockDim_x * hipBlockDim_y; + int done = 0; + while (!done) { + done = (0 == atomicCAS(&hip_lock_arrays.scratch[threadid], 0, 1)); + if (!done) { + threadid += hipBlockDim_x * hipBlockDim_y; + if (int64_t(threadid + hipBlockDim_x * hipBlockDim_y) >= + int64_t(hip_lock_arrays.n)) + threadid = 0; + } + } + base_thread_id = threadid; + } + __syncthreads(); + threadid = base_thread_id; + } + + int const int_league_size = static_cast(m_league_size); + for (int league_rank = hipBlockIdx_x; league_rank < int_league_size; + league_rank += hipGridDim_x) { + this->template exec_team(typename Policy::member_type( + ::Kokkos::Experimental::kokkos_impl_hip_shared_memory(), + m_shmem_begin, m_shmem_size, + static_cast( + static_cast(m_scratch_ptr[1]) + + ptrdiff_t(threadid / (hipBlockDim_x * hipBlockDim_y)) * + m_scratch_size[1]), + m_scratch_size[1], league_rank, m_league_size)); + } + if (m_scratch_size[1] > 0) { + __syncthreads(); + if (hipThreadIdx_x == 0 && hipThreadIdx_y == 0) + hip_lock_arrays.scratch[threadid] = 0; + } + } + + inline void execute() const { + HIP_SAFE_CALL(hipMalloc( + &hip_lock_arrays.atomic, + sizeof(std::int32_t) * (KOKKOS_IMPL_HIP_SPACE_ATOMIC_MASK + 1))); + HIP_SAFE_CALL(hipMalloc( + &hip_lock_arrays.scratch, + sizeof(std::int32_t) * (::Kokkos::Experimental::HIP::concurrency()))); + HIP_SAFE_CALL(hipMemset( + hip_lock_arrays.scratch, 0, + sizeof(std::int32_t) * (::Kokkos::Experimental::HIP::concurrency()))); + hip_lock_arrays.n = ::Kokkos::Experimental::HIP::concurrency(); + + int64_t const shmem_size_total = m_shmem_begin + m_shmem_size; + dim3 const grid(static_cast(m_league_size), 1, 1); + dim3 const block(static_cast(m_vector_size), + static_cast(m_team_size), 1); + + ::Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, shmem_size_total, + m_policy.space().impl_internal_space_instance(), + true); // copy to device and execute + + if (hip_lock_arrays.atomic) { + HIP_SAFE_CALL(hipFree(hip_lock_arrays.atomic)); + hip_lock_arrays.atomic = nullptr; + } + if (hip_lock_arrays.scratch) { + HIP_SAFE_CALL(hipFree(hip_lock_arrays.scratch)); + hip_lock_arrays.scratch = nullptr; + } + hip_lock_arrays.n = 0; + } + + ParallelFor(FunctorType const& arg_functor, Policy const& arg_policy) + : m_functor(arg_functor), + m_policy(arg_policy), + m_league_size(arg_policy.league_size()), + m_team_size(arg_policy.team_size()), + m_vector_size(arg_policy.vector_length()) { + hipFuncAttributes attr = ::Kokkos::Experimental::Impl::HIPParallelLaunch< + ParallelFor, LaunchBounds>::get_hip_func_attributes(); + m_team_size = + m_team_size >= 0 + ? m_team_size + : ::Kokkos::Experimental::Impl::hip_get_opt_block_size< + FunctorType, LaunchBounds>( + m_policy.space().impl_internal_space_instance(), attr, + m_functor, m_vector_size, m_policy.team_scratch_size(0), + m_policy.thread_scratch_size(0)) / + m_vector_size; + + m_shmem_begin = (sizeof(double) * (m_team_size + 2)); + m_shmem_size = + (m_policy.scratch_size(0, m_team_size) + + FunctorTeamShmemSize::value(m_functor, m_team_size)); + m_scratch_size[0] = m_policy.scratch_size(0, m_team_size); + m_scratch_size[1] = m_policy.scratch_size(1, m_team_size); + + // Functor's reduce memory, team scan memory, and team shared memory depend + // upon team size. + m_scratch_ptr[0] = nullptr; + m_scratch_ptr[1] = + m_team_size <= 0 + ? nullptr + : ::Kokkos::Experimental::Impl::hip_resize_scratch_space( + static_cast(m_scratch_size[1]) * + static_cast( + ::Kokkos::Experimental::HIP::concurrency() / + (m_team_size * m_vector_size))); + + int const shmem_size_total = m_shmem_begin + m_shmem_size; + if (m_policy.space().impl_internal_space_instance()->m_maxShmemPerBlock < + shmem_size_total) { + printf( + "%i %i\n", + m_policy.space().impl_internal_space_instance()->m_maxShmemPerBlock, + shmem_size_total); + Kokkos::Impl::throw_runtime_exception(std::string( + "Kokkos::Impl::ParallelFor< HIP > insufficient shared memory")); + } + + if (static_cast(m_team_size) > + static_cast( + ::Kokkos::Experimental::Impl::hip_get_max_block_size( + m_policy.space().impl_internal_space_instance(), attr, + arg_functor, arg_policy.vector_length(), + arg_policy.team_scratch_size(0), + arg_policy.thread_scratch_size(0)) / + arg_policy.vector_length())) { + Kokkos::Impl::throw_runtime_exception(std::string( + "Kokkos::Impl::ParallelFor< HIP > requested too large team size.")); + } + } +}; +} // namespace Impl +} // namespace Kokkos + +#endif + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_ReduceScan.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_ReduceScan.hpp new file mode 100644 index 0000000000..362128c411 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_ReduceScan.hpp @@ -0,0 +1,420 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HIP_REDUCESCAN_HPP +#define KOKKOS_HIP_REDUCESCAN_HPP + +#include + +#if defined(__HIPCC__) + +namespace Kokkos { +namespace Impl { +template +struct HIPReductionsFunctor; + +template +struct HIPReductionsFunctor { + using ValueTraits = FunctorValueTraits; + using ValueJoin = FunctorValueJoin; + using ValueInit = FunctorValueInit; + using ValueOps = FunctorValueOps; + using pointer_type = typename ValueTraits::pointer_type; + using Scalar = typename ValueTraits::value_type; + + __device__ static inline void scalar_intra_warp_reduction( + FunctorType const& functor, + Scalar* value, // Contribution + bool const skip_vector, // Skip threads if Kokkos vector lanes are not + // part of the reduction + int const width) // How much of the warp participates + { + int const lane_id = (hipThreadIdx_y * hipBlockDim_x + hipThreadIdx_x) % + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + for (int delta = skip_vector ? hipBlockDim_x : 1; delta < width; + delta *= 2) { + if (lane_id + delta < ::Kokkos::Experimental::Impl::HIPTraits::WarpSize) { + ValueJoin::join(functor, value, value + delta); + } + } + *value = *(value - lane_id); + } + + __device__ static inline void scalar_intra_block_reduction( + FunctorType const& functor, Scalar value, bool const skip, Scalar* result, + int const /*shared_elements*/, Scalar* shared_team_buffer_element) { + int const warp_id = (hipThreadIdx_y * hipBlockDim_x) / + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + Scalar* const my_shared_team_buffer_element = + shared_team_buffer_element + hipThreadIdx_y * hipBlockDim_x + + hipThreadIdx_x; + *my_shared_team_buffer_element = value; + // Warp Level Reduction, ignoring Kokkos vector entries + scalar_intra_warp_reduction( + functor, my_shared_team_buffer_element, skip, + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize); + // Wait for every warp to be done before using one warp to do final cross + // warp reduction + __syncthreads(); + + if (warp_id == 0) { + const unsigned int delta = + (hipThreadIdx_y * hipBlockDim_x + hipThreadIdx_x) * + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + if (delta < hipBlockDim_x * hipBlockDim_y) + *my_shared_team_buffer_element = shared_team_buffer_element[delta]; + scalar_intra_warp_reduction( + functor, my_shared_team_buffer_element, false, + hipBlockDim_x * hipBlockDim_y / + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize); + if (hipThreadIdx_x + hipThreadIdx_y == 0) + *result = *shared_team_buffer_element; + } + } + + __device__ static inline bool scalar_inter_block_reduction( + FunctorType const& functor, + ::Kokkos::Experimental::HIP::size_type const /*block_id*/, + ::Kokkos::Experimental::HIP::size_type const block_count, + ::Kokkos::Experimental::HIP::size_type* const shared_data, + ::Kokkos::Experimental::HIP::size_type* const global_data, + ::Kokkos::Experimental::HIP::size_type* const global_flags) { + Scalar* const global_team_buffer_element = + reinterpret_cast(global_data); + Scalar* const my_global_team_buffer_element = + global_team_buffer_element + hipBlockIdx_x; + Scalar* shared_team_buffer_elements = + reinterpret_cast(shared_data); + Scalar value = shared_team_buffer_elements[hipThreadIdx_y]; + int shared_elements = (hipBlockDim_x * hipBlockDim_y) / + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + int global_elements = block_count; + __syncthreads(); + + // Do the scalar reduction inside each block + scalar_intra_block_reduction(functor, value, true, + my_global_team_buffer_element, shared_elements, + shared_team_buffer_elements); + __syncthreads(); + + // Use the last block that is done to do the do the reduction across the + // block + __shared__ unsigned int num_teams_done; + if (hipThreadIdx_x + hipThreadIdx_y == 0) { + __threadfence(); + num_teams_done = Kokkos::atomic_fetch_add(global_flags, 1) + 1; + } + bool is_last_block = false; + // FIXME_HIP HIP does not support syncthreads_or. That's why we need to make + // num_teams_done __shared__ + // if (__syncthreads_or(num_teams_done == hipGridDim_x)) {*/ + __syncthreads(); + if (num_teams_done == hipGridDim_x) { + is_last_block = true; + *global_flags = 0; + ValueInit::init(functor, &value); + for (int i = hipThreadIdx_y * hipBlockDim_x + hipThreadIdx_x; + i < global_elements; i += hipBlockDim_x * hipBlockDim_y) { + ValueJoin::join(functor, &value, &global_team_buffer_element[i]); + } + scalar_intra_block_reduction( + functor, value, false, + shared_team_buffer_elements + (hipBlockDim_y - 1), shared_elements, + shared_team_buffer_elements); + } + + return is_last_block; + } +}; + +//---------------------------------------------------------------------------- +/* + * Algorithmic constraints: + * (a) hipBlockDim_y is a power of two + * (b) hipBlockDim_y <= 1024 + * (c) hipBlockDim_x == hipBlockDim_z == 1 + */ + +template +__device__ void hip_intra_block_reduce_scan( + FunctorType const& functor, + typename FunctorValueTraits::pointer_type const + base_data) { + using ValueTraits = FunctorValueTraits; + using ValueJoin = FunctorValueJoin; + + using pointer_type = typename ValueTraits::pointer_type; + + unsigned int const value_count = ValueTraits::value_count(functor); + unsigned int const BlockSizeMask = hipBlockDim_y - 1; + int const WarpMask = Experimental::Impl::HIPTraits::WarpSize - 1; + + // Must have power of two thread count + if ((hipBlockDim_y - 1) & hipBlockDim_y) { + Kokkos::abort( + "HIP::hip_intra_block_reduce_scan requires power-of-two " + "hipBlockDim_y\n"); + } + + auto block_reduce_step = + [&functor, value_count](int const R, pointer_type const TD, int const S) { + if (R > ((1 << S) - 1)) { + ValueJoin::join(functor, TD, (TD - (value_count << S))); + } + }; + + { // Intra-warp reduction: + const unsigned rtid_intra = hipThreadIdx_y & WarpMask; + const pointer_type tdata_intra = base_data + value_count * hipThreadIdx_y; + + block_reduce_step(rtid_intra, tdata_intra, 0); + block_reduce_step(rtid_intra, tdata_intra, 1); + block_reduce_step(rtid_intra, tdata_intra, 2); + block_reduce_step(rtid_intra, tdata_intra, 3); + block_reduce_step(rtid_intra, tdata_intra, 4); + block_reduce_step(rtid_intra, tdata_intra, 5); + } + + __syncthreads(); // Wait for all warps to reduce + + { // Inter-warp reduce-scan by a single warp to avoid extra synchronizations + unsigned int const rtid_inter = + ((hipThreadIdx_y + 1) + << Experimental::Impl::HIPTraits::WarpIndexShift) - + 1; + + if (rtid_inter < hipBlockDim_y) { + pointer_type const tdata_inter = base_data + value_count * rtid_inter; + + if ((1 << 6) < BlockSizeMask) { + block_reduce_step(rtid_inter, tdata_inter, 6); + } + if ((1 << 7) < BlockSizeMask) { + block_reduce_step(rtid_inter, tdata_inter, 7); + } + if ((1 << 8) < BlockSizeMask) { + block_reduce_step(rtid_inter, tdata_inter, 8); + } + if ((1 << 9) < BlockSizeMask) { + block_reduce_step(rtid_inter, tdata_inter, 9); + } + if ((1 << 10) < BlockSizeMask) { + block_reduce_step(rtid_inter, tdata_inter, 10); + } + } + } + + __syncthreads(); // Wait for inter-warp reduce-scan to complete + + if (DoScan) { + // Update all the values for the respective warps (except for the last one) + // by adding from the last value of the previous warp. + if (hipThreadIdx_y >= Experimental::Impl::HIPTraits::WarpSize && + (hipThreadIdx_y & WarpMask) != + Experimental::Impl::HIPTraits::WarpSize - 1) { + const int offset_to_previous_warp_total = + (hipThreadIdx_y & (~WarpMask)) - 1; + ValueJoin::join(functor, base_data + value_count * hipThreadIdx_y, + base_data + value_count * offset_to_previous_warp_total); + } + } +} + +//---------------------------------------------------------------------------- +/**\brief Input value-per-thread starting at 'shared_data'. + * Reduction value at last thread's location. + * + * If 'DoScan' then write blocks' scan values and block-groups' scan values. + * + * Global reduce result is in the last threads' 'shared_data' location. + */ + +template +__device__ bool hip_single_inter_block_reduce_scan2( + FunctorType const& functor, + ::Kokkos::Experimental::HIP::size_type const block_id, + ::Kokkos::Experimental::HIP::size_type const block_count, + ::Kokkos::Experimental::HIP::size_type* const shared_data, + ::Kokkos::Experimental::HIP::size_type* const global_data, + ::Kokkos::Experimental::HIP::size_type* const global_flags) { + using size_type = ::Kokkos::Experimental::HIP::size_type; + using ValueTraits = FunctorValueTraits; + using ValueJoin = FunctorValueJoin; + using ValueInit = FunctorValueInit; + using ValueOps = FunctorValueOps; + + using pointer_type = typename ValueTraits::pointer_type; + + // '__ffs' = position of the least significant bit set to 1. + // 'hipBlockDim_y' is guaranteed to be a power of two so this + // is the integral shift value that can replace an integral divide. + unsigned int const BlockSizeShift = __ffs(hipBlockDim_y) - 1; + unsigned int const BlockSizeMask = hipBlockDim_y - 1; + + // Must have power of two thread count + if (BlockSizeMask & hipBlockDim_y) { + Kokkos::abort( + "HIP::hip_single_inter_block_reduce_scan requires power-of-two " + "blockDim"); + } + + integral_nonzero_constant const + word_count(ValueTraits::value_size(functor) / sizeof(size_type)); + + // Reduce the accumulation for the entire block. + hip_intra_block_reduce_scan( + functor, pointer_type(shared_data)); + + { + // Write accumulation total to global scratch space. + // Accumulation total is the last thread's data. + size_type* const shared = shared_data + word_count.value * BlockSizeMask; + size_type* const global = global_data + word_count.value * block_id; + + for (size_t i = hipThreadIdx_y; i < word_count.value; i += hipBlockDim_y) { + global[i] = shared[i]; + } + } + + // Contributing blocks note that their contribution has been completed via an + // atomic-increment flag If this block is not the last block to contribute to + // this group then the block is done. + // FIXME_HIP __syncthreads_or is not supported by HIP yet. + // const bool is_last_block = !__syncthreads_or( + // threadIdx.y + // ? 0 + // : (1 + atomicInc(global_flags, block_count - 1) < block_count)); + __shared__ int n_done; + n_done = 0; + __syncthreads(); + if (hipThreadIdx_y == 0) { + __threadfence(); + n_done = 1 + atomicInc(global_flags, block_count - 1); + } + __syncthreads(); + bool const is_last_block = (n_done == static_cast(block_count)); + + if (is_last_block) { + size_type const b = (static_cast(block_count) * + static_cast(hipThreadIdx_y)) >> + BlockSizeShift; + size_type const e = (static_cast(block_count) * + static_cast(hipThreadIdx_y + 1)) >> + BlockSizeShift; + + { + void* const shared_ptr = shared_data + word_count.value * hipThreadIdx_y; + /* reference_type shared_value = */ ValueInit::init(functor, shared_ptr); + + for (size_type i = b; i < e; ++i) { + ValueJoin::join(functor, shared_ptr, + global_data + word_count.value * i); + } + } + + hip_intra_block_reduce_scan( + functor, pointer_type(shared_data)); + + if (DoScan) { + size_type* const shared_value = + shared_data + word_count.value * (hipThreadIdx_y ? hipThreadIdx_y - 1 + : hipBlockDim_y); + + if (!hipThreadIdx_y) { + ValueInit::init(functor, shared_value); + } + + // Join previous inclusive scan value to each member + for (size_type i = b; i < e; ++i) { + size_type* const global_value = global_data + word_count.value * i; + ValueJoin::join(functor, shared_value, global_value); + ValueOps::copy(functor, global_value, shared_value); + } + } + } + + return is_last_block; +} + +template +__device__ bool hip_single_inter_block_reduce_scan( + FunctorType const& functor, + ::Kokkos::Experimental::HIP::size_type const block_id, + ::Kokkos::Experimental::HIP::size_type const block_count, + ::Kokkos::Experimental::HIP::size_type* const shared_data, + ::Kokkos::Experimental::HIP::size_type* const global_data, + ::Kokkos::Experimental::HIP::size_type* const global_flags) { + using ValueTraits = FunctorValueTraits; + if (!DoScan && /*FIXME*/ (bool)ValueTraits::StaticValueSize) + // FIXME_HIP For now we don't use shuffle + // return Kokkos::Impl::HIPReductionsFunctor< + // FunctorType, ArgTag, false, (ValueTraits::StaticValueSize > 16)>:: + // scalar_inter_block_reduction(functor, block_id, block_count, + // shared_data, global_data, global_flags); + return Kokkos::Impl::HIPReductionsFunctor< + FunctorType, ArgTag, false, + false>::scalar_inter_block_reduction(functor, block_id, block_count, + shared_data, global_data, + global_flags); + else { + return hip_single_inter_block_reduce_scan2( + functor, block_id, block_count, shared_data, global_data, global_flags); + } +} + +// Size in bytes required for inter block reduce or scan +template +inline unsigned hip_single_inter_block_reduce_scan_shmem( + const FunctorType& functor, const unsigned BlockSize) { + return (BlockSize + 2) * + Impl::FunctorValueTraits::value_size(functor); +} + +} // namespace Impl +} // namespace Kokkos + +#endif + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Space.cpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Space.cpp new file mode 100644 index 0000000000..2dca7f13c9 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Space.cpp @@ -0,0 +1,636 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ +namespace Kokkos { +namespace Impl { + +namespace { +hipStream_t get_deep_copy_stream() { + static hipStream_t s = 0; + if (s == 0) { + HIP_SAFE_CALL(hipStreamCreate(&s)); + } + return s; +} +} // namespace + +DeepCopy::DeepCopy(void* dst, const void* src, + size_t n) { + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(void* dst, const void* src, + size_t n) { + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(void* dst, const void* src, + size_t n) { + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(const Kokkos::Experimental::HIP& + /*instance*/, + void* dst, const void* src, + size_t n) { + // FIXME_HIP use instance + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy:: + DeepCopy(const Kokkos::Experimental::HIP& /*instance*/, void* dst, + const void* src, size_t n) { + // FIXME_HIP use instance + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy:: + DeepCopy(const Kokkos::Experimental::HIP& /*instance*/, void* dst, + const void* src, size_t n) { + // FIXME_HIP use instance + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(void* dst, const void* src, + size_t n) { + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(void* dst, const void* src, + size_t n) { + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(void* dst, const void* src, + size_t n) { + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy:: + DeepCopy(const Kokkos::Experimental::HIP& /*instance*/, void* dst, + const void* src, size_t n) { + // FIXME_HIP use instance + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(const Kokkos::Experimental::HIP& + /*instance*/, + void* dst, const void* src, + size_t n) { + // FIXME_HIP use instance + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(const Kokkos::Experimental::HIP& + /*instance*/, + void* dst, const void* src, + size_t n) { + // FIXME_HIP use instance + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +void DeepCopyAsyncHIP(void* dst, void const* src, size_t n) { + hipStream_t s = get_deep_copy_stream(); + HIP_SAFE_CALL(hipMemcpyAsync(dst, src, n, hipMemcpyDefault, s)); + hipStreamSynchronize(s); +} + +} // namespace Impl +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { + +void Experimental::HIPSpace::access_error() { + const std::string msg( + "Kokkos::Experimental::HIPSpace::access_error attempt to execute " + "Experimental::HIP function from non-HIP space"); + Kokkos::Impl::throw_runtime_exception(msg); +} + +void Experimental::HIPSpace::access_error(const void* const) { + const std::string msg( + "Kokkos::Experimental::HIPSpace::access_error attempt to execute " + "Experimental::HIP function from non-HIP space"); + Kokkos::Impl::throw_runtime_exception(msg); +} + +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Experimental { + +HIPSpace::HIPSpace() : m_device(HIP().hip_device()) {} + +HIPHostPinnedSpace::HIPHostPinnedSpace() {} + +void* HIPSpace::allocate(const size_t arg_alloc_size) const { + void* ptr = nullptr; + + auto const error_code = hipMalloc(&ptr, arg_alloc_size); + if (error_code != hipSuccess) { + hipGetLastError(); // This is the only way to clear the last error, which + // we should do here since we're turning it into an + // exception here + throw HIPRawMemoryAllocationFailure( + arg_alloc_size, error_code, + RawMemoryAllocationFailure::AllocationMechanism::HIPMalloc); + } + + return ptr; +} + +void* HIPHostPinnedSpace::allocate(const size_t arg_alloc_size) const { + void* ptr = nullptr; + + auto const error_code = hipHostMalloc(&ptr, arg_alloc_size); + if (error_code != hipSuccess) { + hipGetLastError(); // This is the only way to clear the last error, which + // we should do here since we're turning it into an + // exception here + throw HIPRawMemoryAllocationFailure( + arg_alloc_size, error_code, + RawMemoryAllocationFailure::AllocationMechanism::HIPHostMalloc); + } + + return ptr; +} + +void HIPSpace::deallocate(void* const arg_alloc_ptr, + const size_t /* arg_alloc_size */) const { + HIP_SAFE_CALL(hipFree(arg_alloc_ptr)); +} + +void HIPHostPinnedSpace::deallocate(void* const arg_alloc_ptr, + const size_t /* arg_alloc_size */) const { + HIP_SAFE_CALL(hipHostFree(arg_alloc_ptr)); +} + +} // namespace Experimental +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +#ifdef KOKKOS_DEBUG +SharedAllocationRecord + SharedAllocationRecord::s_root_record; + +SharedAllocationRecord SharedAllocationRecord< + Kokkos::Experimental::HIPHostPinnedSpace, void>::s_root_record; +#endif + +std::string SharedAllocationRecord::get_label() const { + SharedAllocationHeader header; + + Kokkos::Impl::DeepCopy( + &header, RecordBase::head(), sizeof(SharedAllocationHeader)); + + return std::string(header.m_label); +} + +std::string SharedAllocationRecord::get_label() const { + return std::string(RecordBase::head()->m_label); +} + +SharedAllocationRecord* +SharedAllocationRecord::allocate( + const Kokkos::Experimental::HIPSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size) { + return new SharedAllocationRecord(arg_space, arg_label, arg_alloc_size); +} + +SharedAllocationRecord* +SharedAllocationRecord:: + allocate(const Kokkos::Experimental::HIPHostPinnedSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size) { + return new SharedAllocationRecord(arg_space, arg_label, arg_alloc_size); +} + +void SharedAllocationRecord::deallocate( + SharedAllocationRecord* arg_rec) { + delete static_cast(arg_rec); +} + +void SharedAllocationRecord:: + deallocate(SharedAllocationRecord* arg_rec) { + delete static_cast(arg_rec); +} + +SharedAllocationRecord::~SharedAllocationRecord() { +#if defined(KOKKOS_ENABLE_PROFILING) + if (Kokkos::Profiling::profileLibraryLoaded()) { + SharedAllocationHeader header; + Kokkos::Impl::DeepCopy( + &header, RecordBase::m_alloc_ptr, sizeof(SharedAllocationHeader)); + + Kokkos::Profiling::deallocateData( + Kokkos::Profiling::SpaceHandle(Kokkos::Experimental::HIPSpace::name()), + header.m_label, data(), size()); + } +#endif + + m_space.deallocate(SharedAllocationRecord::m_alloc_ptr, + SharedAllocationRecord::m_alloc_size); +} + +SharedAllocationRecord::~SharedAllocationRecord() { +#if defined(KOKKOS_ENABLE_PROFILING) + if (Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::deallocateData( + Kokkos::Profiling::SpaceHandle( + Kokkos::Experimental::HIPHostPinnedSpace::name()), + RecordBase::m_alloc_ptr->m_label, data(), size()); + } +#endif + + m_space.deallocate(SharedAllocationRecord::m_alloc_ptr, + SharedAllocationRecord::m_alloc_size); +} + +SharedAllocationRecord:: + SharedAllocationRecord( + const Kokkos::Experimental::HIPSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size, + const SharedAllocationRecord::function_type arg_dealloc) + // Pass through allocated [ SharedAllocationHeader , user_memory ] + // Pass through deallocation function + : SharedAllocationRecord( +#ifdef KOKKOS_DEBUG + &SharedAllocationRecord::s_root_record, +#endif + Kokkos::Impl::checked_allocation_with_header(arg_space, arg_label, + arg_alloc_size), + sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc), + m_space(arg_space) { +#if defined(KOKKOS_ENABLE_PROFILING) + if (Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::allocateData( + Kokkos::Profiling::SpaceHandle(arg_space.name()), arg_label, data(), + arg_alloc_size); + } +#endif + + SharedAllocationHeader header; + + // Fill in the Header information + header.m_record = static_cast*>(this); + + strncpy(header.m_label, arg_label.c_str(), + SharedAllocationHeader::maximum_label_length); + // Set last element zero, in case c_str is too long + header.m_label[SharedAllocationHeader::maximum_label_length - 1] = (char)0; + + // Copy to device memory + Kokkos::Impl::DeepCopy( + RecordBase::m_alloc_ptr, &header, sizeof(SharedAllocationHeader)); +} + +SharedAllocationRecord:: + SharedAllocationRecord( + const Kokkos::Experimental::HIPHostPinnedSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size, + const SharedAllocationRecord::function_type arg_dealloc) + // Pass through allocated [ SharedAllocationHeader , user_memory ] + // Pass through deallocation function + : SharedAllocationRecord( +#ifdef KOKKOS_DEBUG + &SharedAllocationRecord::s_root_record, +#endif + Kokkos::Impl::checked_allocation_with_header(arg_space, arg_label, + arg_alloc_size), + sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc), + m_space(arg_space) { +#if defined(KOKKOS_ENABLE_PROFILING) + if (Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::allocateData( + Kokkos::Profiling::SpaceHandle(arg_space.name()), arg_label, data(), + arg_alloc_size); + } +#endif + // Fill in the Header information, directly accessible via host pinned memory + + RecordBase::m_alloc_ptr->m_record = this; + + strncpy(RecordBase::m_alloc_ptr->m_label, arg_label.c_str(), + SharedAllocationHeader::maximum_label_length); + // Set last element zero, in case c_str is too long + RecordBase::m_alloc_ptr + ->m_label[SharedAllocationHeader::maximum_label_length - 1] = (char)0; +} + +//---------------------------------------------------------------------------- + +void* SharedAllocationRecord:: + allocate_tracked(const Kokkos::Experimental::HIPSpace& arg_space, + const std::string& arg_alloc_label, + const size_t arg_alloc_size) { + if (!arg_alloc_size) return (void*)0; + + SharedAllocationRecord* const r = + allocate(arg_space, arg_alloc_label, arg_alloc_size); + + RecordBase::increment(r); + + return r->data(); +} + +void SharedAllocationRecord::deallocate_tracked(void* const + arg_alloc_ptr) { + if (arg_alloc_ptr != 0) { + SharedAllocationRecord* const r = get_record(arg_alloc_ptr); + + RecordBase::decrement(r); + } +} + +void* SharedAllocationRecord:: + reallocate_tracked(void* const arg_alloc_ptr, const size_t arg_alloc_size) { + SharedAllocationRecord* const r_old = get_record(arg_alloc_ptr); + SharedAllocationRecord* const r_new = + allocate(r_old->m_space, r_old->get_label(), arg_alloc_size); + + Kokkos::Impl::DeepCopy( + r_new->data(), r_old->data(), std::min(r_old->size(), r_new->size())); + + RecordBase::increment(r_new); + RecordBase::decrement(r_old); + + return r_new->data(); +} + +//---------------------------------------------------------------------------- + +SharedAllocationRecord* +SharedAllocationRecord::get_record( + void* alloc_ptr) { + using Header = SharedAllocationHeader; + using RecordHIP = + SharedAllocationRecord; + + // Copy the header from the allocation + Header head; + + Header const* const head_hip = + alloc_ptr ? Header::get_header(alloc_ptr) : (Header*)0; + + if (alloc_ptr) { + Kokkos::Impl::DeepCopy( + &head, head_hip, sizeof(SharedAllocationHeader)); + } + + RecordHIP* const record = + alloc_ptr ? static_cast(head.m_record) : (RecordHIP*)0; + + if (!alloc_ptr || record->m_alloc_ptr != head_hip) { + Kokkos::Impl::throw_runtime_exception(std::string( + "Kokkos::Impl::SharedAllocationRecord< Kokkos::Experimental::HIPSpace " + ", void >::get_record ERROR")); + } + + return record; +} + +// Iterate records to print orphaned memory ... +void SharedAllocationRecord:: + print_records(std::ostream& s, const Kokkos::Experimental::HIPSpace& space, + bool detail) { +#ifdef KOKKOS_DEBUG + SharedAllocationRecord* r = &s_root_record; + + char buffer[256]; + + SharedAllocationHeader head; + + if (detail) { + do { + if (r->m_alloc_ptr) { + Kokkos::Impl::DeepCopy( + &head, r->m_alloc_ptr, sizeof(SharedAllocationHeader)); + } else { + head.m_label[0] = 0; + } + + // Formatting dependent on sizeof(uintptr_t) + const char* format_string; + + if (sizeof(uintptr_t) == sizeof(unsigned long)) { + format_string = + "HIP addr( 0x%.12lx ) list( 0x%.12lx 0x%.12lx ) extent[ 0x%.12lx + " + "%.8ld ] count(%d) dealloc(0x%.12lx) %s\n"; + } else if (sizeof(uintptr_t) == sizeof(unsigned long long)) { + format_string = + "HIP addr( 0x%.12llx ) list( 0x%.12llx 0x%.12llx ) extent[ " + "0x%.12llx + %.8ld ] count(%d) dealloc(0x%.12llx) %s\n"; + } + + snprintf(buffer, 256, format_string, reinterpret_cast(r), + reinterpret_cast(r->m_prev), + reinterpret_cast(r->m_next), + reinterpret_cast(r->m_alloc_ptr), r->m_alloc_size, + r->m_count, reinterpret_cast(r->m_dealloc), + head.m_label); + std::cout << buffer; + r = r->m_next; + } while (r != &s_root_record); + } else { + do { + if (r->m_alloc_ptr) { + Kokkos::Impl::DeepCopy( + &head, r->m_alloc_ptr, sizeof(SharedAllocationHeader)); + + // Formatting dependent on sizeof(uintptr_t) + const char* format_string; + + if (sizeof(uintptr_t) == sizeof(unsigned long)) { + format_string = "HIP [ 0x%.12lx + %ld ] %s\n"; + } else if (sizeof(uintptr_t) == sizeof(unsigned long long)) { + format_string = "HIP [ 0x%.12llx + %ld ] %s\n"; + } + + snprintf(buffer, 256, format_string, + reinterpret_cast(r->data()), r->size(), + head.m_label); + } else { + snprintf(buffer, 256, "HIP [ 0 + 0 ]\n"); + } + std::cout << buffer; + r = r->m_next; + } while (r != &s_root_record); + } +#else + (void)s; + (void)space; + (void)detail; + throw_runtime_exception( + "Kokkos::Impl::SharedAllocationRecord::print_records" + " only works with KOKKOS_DEBUG enabled"); +#endif +} + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +void* hip_resize_scratch_space(size_t bytes, bool force_shrink) { + static void* ptr = NULL; + static size_t current_size = 0; + if (current_size == 0) { + current_size = bytes; + ptr = Kokkos::kokkos_malloc( + "HIPSpace::ScratchMemory", current_size); + } + if (bytes > current_size) { + current_size = bytes; + ptr = Kokkos::kokkos_realloc(ptr, + current_size); + } + if ((bytes < current_size) && (force_shrink)) { + current_size = bytes; + Kokkos::kokkos_free(ptr); + ptr = Kokkos::kokkos_malloc( + "HIPSpace::ScratchMemory", current_size); + } + return ptr; +} + +} // namespace Impl +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ +namespace Kokkos { +namespace Experimental { + +// HIP::size_type HIP::detect_device_count() +//{ return Impl::HIPInternalDevices::singleton().m_hipDevCount ; } + +int HIP::concurrency() { + // FIXME_HIP + // MI60: ThreadsPerComputeUnit*ComputeUnits/ShaderEngine*ShaderEngines) + return 2536 * 16 * 4; +} +int HIP::impl_is_initialized() { + return Impl::HIPInternal::singleton().is_initialized(); +} + +void HIP::impl_initialize(const HIP::SelectDevice config) { + Impl::HIPInternal::singleton().initialize(config.hip_device_id); + +#if defined(KOKKOS_ENABLE_PROFILING) + Kokkos::Profiling::initialize(); +#endif +} + +void HIP::impl_finalize() { + Impl::HIPInternal::singleton().finalize(); + +#if defined(KOKKOS_ENABLE_PROFILING) + Kokkos::Profiling::finalize(); +#endif +} + +HIP::HIP() : m_space_instance(&Impl::HIPInternal::singleton()) { + Impl::HIPInternal::singleton().verify_is_initialized( + "HIP instance constructor"); +} + +// HIP::HIP( const int instance_id ) +// : m_device( Impl::HIPInternal::singleton().m_hipDev ) +//{} + +void HIP::print_configuration(std::ostream& s, const bool) { + Impl::HIPInternal::singleton().print_configuration(s); +} + +void HIP::fence() const { HIP_SAFE_CALL(hipDeviceSynchronize()); } + +int HIP::hip_device() const { return impl_internal_space_instance()->m_hipDev; } +const char* HIP::name() { return "HIP"; } + +} // namespace Experimental +} // namespace Kokkos diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Team.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Team.hpp new file mode 100644 index 0000000000..b3c4f4609b --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Team.hpp @@ -0,0 +1,1106 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HIP_TEAM_HPP +#define KOKKOS_HIP_TEAM_HPP + +#include + +#if defined(__HIPCC__) + +#include +#include + +#include +#include +#include +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template +struct HIPJoinFunctor { + typedef Type value_type; + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& update, + volatile const value_type& input) { + update += input; + } +}; + +/**\brief Team member_type passed to TeamPolicy or TeamTask closures. + * + * HIP thread blocks for team closures are dimensioned as: + * hipBlockDim_x == number of "vector lanes" per "thread" + * hipBlockDim_y == number of "threads" per team + * hipBlockDim_z == number of teams in a block + * where + * A set of teams exactly fill a warp OR a team is the whole block + * ( 0 == WarpSize % ( hipBlockDim_x * hipBlockDim_y ) ) + * OR + * ( 1 == hipBlockDim_z ) + + * Thus when 1 < hipBlockDim_z the team is warp-synchronous + * and __syncthreads should not be called in team collectives. + * + * When multiple teams are mapped onto a single block then the + * total available shared memory must be partitioned among teams. + */ +class HIPTeamMember { + public: + using execution_space = Kokkos::Experimental::HIP; + using scratch_memory_space = execution_space::scratch_memory_space; + + private: + mutable void* m_team_reduce; + scratch_memory_space m_team_shared; + int m_team_reduce_size; + int m_league_rank; + int m_league_size; + + public: + KOKKOS_INLINE_FUNCTION + const execution_space::scratch_memory_space& team_shmem() const { + return m_team_shared.set_team_thread_mode(0, 1, 0); + } + + KOKKOS_INLINE_FUNCTION + const execution_space::scratch_memory_space& team_scratch( + const int& level) const { + return m_team_shared.set_team_thread_mode(level, 1, 0); + } + + KOKKOS_INLINE_FUNCTION + const execution_space::scratch_memory_space& thread_scratch( + const int& level) const { + return m_team_shared.set_team_thread_mode(level, team_size(), team_rank()); + } + + KOKKOS_INLINE_FUNCTION int league_rank() const { return m_league_rank; } + KOKKOS_INLINE_FUNCTION int league_size() const { return m_league_size; } + KOKKOS_INLINE_FUNCTION int team_rank() const { +#ifdef __HIP_DEVICE_COMPILE__ + return hipThreadIdx_y; +#else + return 0; +#endif + } + + KOKKOS_INLINE_FUNCTION int team_size() const { +#ifdef __HIP_DEVICE_COMPILE__ + return hipBlockDim_y; +#else + return 1; +#endif + } + + KOKKOS_INLINE_FUNCTION void team_barrier() const { +#ifdef __HIP_DEVICE_COMPILE__ + if (1 == hipBlockDim_z) + __syncthreads(); // team == block + else + __threadfence_block(); // team <= warp +#endif + } + + //-------------------------------------------------------------------------- + + template + KOKKOS_INLINE_FUNCTION void team_broadcast(ValueType& val, + const int& thread_id) const { +#ifdef __HIP_DEVICE_COMPILE__ + if (1 == hipBlockDim_z) { // team == block + __syncthreads(); + // Wait for shared data write until all threads arrive here + if (hipThreadIdx_x == 0u && + hipThreadIdx_y == static_cast(thread_id)) { + *(reinterpret_cast(m_team_reduce)) = val; + } + __syncthreads(); // Wait for shared data read until root thread writes + val = *(reinterpret_cast(m_team_reduce)); + } else { // team <= warp + ValueType tmp(val); // input might not be a register variable + ::Kokkos::Experimental::Impl::in_place_shfl( + val, tmp, hipBlockDim_x * thread_id, hipBlockDim_x * hipBlockDim_y); + } +#else + (void)val; + (void)thread_id; +#endif + } + + template + KOKKOS_INLINE_FUNCTION void team_broadcast(Closure const& f, ValueType& val, + const int& thread_id) const { +#ifdef __HIP_DEVICE_COMPILE__ + f(val); + + if (1 == hipBlockDim_z) { // team == block + __syncthreads(); + // Wait for shared data write until all threads arrive here + if (hipThreadIdx_x == 0u && + hipThreadIdx_y == static_cast(thread_id)) { + *(reinterpret_cast(m_team_reduce)) = val; + } + __syncthreads(); // Wait for shared data read until root thread writes + val = *(reinterpret_cast(m_team_reduce)); + } else { // team <= warp + ValueType tmp(val); // input might not be a register variable + ::Kokkos::Experimental::Impl::in_place_shfl( + val, tmp, hipBlockDim_x * thread_id, hipBlockDim_x * hipBlockDim_y); + } +#else + (void)f; + (void)val; + (void)thread_id; +#endif + } + + //-------------------------------------------------------------------------- + /**\brief Reduction across a team + * + * Mapping of teams onto blocks: + * hipBlockDim_x is "vector lanes" + * hipBlockDim_y is team "threads" + * hipBlockDim_z is number of teams per block + * + * Requires: + * hipBlockDim_x is power two + * hipBlockDim_x <= HIPTraits::WarpSize + * ( 0 == HIPTraits::WarpSize % ( hipBlockDim_x * hipBlockDim_y ) + * OR + * ( 1 == hipBlockDim_z ) + */ + template + KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + team_reduce(ReducerType const& reducer) const noexcept { + team_reduce(reducer, reducer.reference()); + } + + template + KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + team_reduce(ReducerType const& reducer, + typename ReducerType::value_type& value) const noexcept { +#ifdef __HIP_DEVICE_COMPILE__ + hip_intra_block_reduction(reducer, value, hipBlockDim_y); +#else + (void)reducer; + (void)value; +#endif + } + + //-------------------------------------------------------------------------- + /** \brief Intra-team exclusive prefix sum with team_rank() ordering + * with intra-team non-deterministic ordering accumulation. + * + * The global inter-team accumulation value will, at the end of the + * league's parallel execution, be the scan's total. + * Parallel execution ordering of the league's teams is non-deterministic. + * As such the base value for each team's scan operation is similarly + * non-deterministic. + */ + template + KOKKOS_INLINE_FUNCTION Type team_scan(const Type& value, + Type* const global_accum) const { +#ifdef __HIP_DEVICE_COMPILE__ + Type* const base_data = reinterpret_cast(m_team_reduce); + + __syncthreads(); // Don't write in to shared data until all threads have + // entered this function + + if (0 == hipThreadIdx_y) { + base_data[0] = 0; + } + + base_data[hipThreadIdx_y + 1] = value; + + Impl::hip_intra_block_reduce_scan, void>( + Impl::HIPJoinFunctor(), base_data + 1); + + if (global_accum) { + if (hipBlockDim_y == hipThreadIdx_y + 1) { + base_data[hipBlockDim_y] = + atomic_fetch_add(global_accum, base_data[hipBlockDim_y]); + } + __syncthreads(); // Wait for atomic + base_data[hipThreadIdx_y] += base_data[hipBlockDim_y]; + } + + return base_data[hipThreadIdx_y]; +#else + (void)value; + (void)global_accum; + return Type(); +#endif + } + + /** \brief Intra-team exclusive prefix sum with team_rank() ordering. + * + * The highest rank thread can compute the reduction total as + * reduction_total = dev.team_scan( value ) + value ; + */ + template + KOKKOS_INLINE_FUNCTION Type team_scan(const Type& value) const { + return this->template team_scan(value, 0); + } + + //---------------------------------------- + + template + KOKKOS_INLINE_FUNCTION static + typename std::enable_if::value>::type + vector_reduce(ReducerType const& reducer) { + vector_reduce(reducer, reducer.reference()); + } + + template + KOKKOS_INLINE_FUNCTION static + typename std::enable_if::value>::type + vector_reduce(ReducerType const& reducer, + typename ReducerType::value_type& value) { +#ifdef __HIP_DEVICE_COMPILE__ + if (hipBlockDim_x == 1) return; + + // Intra vector lane shuffle reduction: + typename ReducerType::value_type tmp(value); + typename ReducerType::value_type tmp2 = tmp; + + int constexpr warp_size = ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + unsigned mask = + hipBlockDim_x == warp_size + ? 0xffffffff + : ((1 << hipBlockDim_x) - 1) + << ((hipThreadIdx_y % (warp_size / hipBlockDim_x)) * + hipBlockDim_x); + + for (int i = hipBlockDim_x; (i >>= 1);) { + ::Kokkos::Experimental::Impl::in_place_shfl_down(tmp2, tmp, i, + hipBlockDim_x, mask); + if (static_cast(hipThreadIdx_x) < i) { + reducer.join(tmp, tmp2); + } + } + + // Broadcast from root lane to all other lanes. + // Cannot use "butterfly" algorithm to avoid the broadcast + // because floating point summation is not associative + // and thus different threads could have different results. + + ::Kokkos::Experimental::Impl::in_place_shfl(tmp2, tmp, 0, hipBlockDim_x, + mask); + value = tmp2; + reducer.reference() = tmp2; +#else + (void)reducer; + (void)value; +#endif + } + + //-------------------------------------------------------------------------- + /**\brief Global reduction across all blocks + * + * Return !0 if reducer contains the final value + */ + template + KOKKOS_INLINE_FUNCTION static + typename std::enable_if::value, int>::type + global_reduce(ReducerType const& reducer, int* const global_scratch_flags, + void* const global_scratch_space, void* const shmem, + int const shmem_size) { +#ifdef __HIP_COMPILE_DEVICE__ + + typedef typename ReducerType::value_type value_type; + typedef value_type volatile* pointer_type; + + // Number of shared memory entries for the reduction: + const int nsh = shmem_size / sizeof(value_type); + + // Number of HIP threads in the block, rank within the block + const int nid = hipBlockDim_x * hipBlockDim_y * hipBlockDim_z; + const int tid = + hipThreadIdx_x + + hipBlockDim_x * (hipThreadIdx_y + hipBlockDim_y * hipThreadIdx_z); + + // Reduces within block using all available shared memory + // Contributes if it is the root "vector lane" + + // wn == number of warps in the block + // wx == which lane within the warp + // wy == which warp within the block + + const int wn = + (nid + HIPTraits::WarpIndexMask) >> HIPTraits::WarpIndexShift; + const int wx = tid & HIPTraits::WarpIndexMask; + const int wy = tid >> HIPTraits::WarpIndexShift; + + //------------------------ + { // Intra warp shuffle reduction from contributing CUDA threads + + value_type tmp(reducer.reference()); + + int constexpr warp_size = + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + for (int i = warp_size; static_cast(hipBlockDim_x) <= (i >>= 1);) { + Impl::in_place_shfl_down(reducer.reference(), tmp, i, warp_size); + + // Root of each vector lane reduces "thread" contribution + if (0 == hipThreadIdx_x && wx < i) { + reducer.join(&tmp, reducer.data()); + } + } + + // Reduce across warps using shared memory. + // Number of warps may not be power of two. + + __syncthreads(); // Wait before shared data write + + // Number of shared memory entries for the reduction + // is at most one per warp + const int nentry = wn < nsh ? wn : nsh; + + if (0 == wx && wy < nentry) { + // Root thread of warp 'wy' has warp's value to contribute + (reinterpret_cast(shmem))[wy] = tmp; + } + + __syncthreads(); // Wait for write to be visible to block + + // When more warps than shared entries + // then warps must take turns joining their contribution + // to the designated shared memory entry. + for (int i = nentry; i < wn; i += nentry) { + const int k = wy - i; + + if (0 == wx && i <= wy && k < nentry) { + // Root thread of warp 'wy' has warp's value to contribute + reducer.join((reinterpret_cast(shmem)) + k, &tmp); + } + + __syncthreads(); // Wait for write to be visible to block + } + + // One warp performs the inter-warp reduction: + + if (0 == wy) { + // Start fan-in at power of two covering nentry + + for (int i = (1 << (32 - __clz(nentry - 1))); (i >>= 1);) { + const int k = wx + i; + if (wx < i && k < nentry) { + reducer.join((reinterpret_cast(shmem)) + wx, + (reinterpret_cast(shmem)) + k); + __threadfence_block(); // Wait for write to be visible to warp + } + } + } + } + //------------------------ + { // Write block's value to global_scratch_memory + + int last_block = 0; + + if (0 == wx) { + reducer.copy((reinterpret_cast(global_scratch_space)) + + hipBlockIdx_x * reducer.length(), + reducer.data()); + + __threadfence(); // Wait until global write is visible. + + last_block = static_cast(hipGridDim_x) == + 1 + Kokkos::atomic_fetch_add(global_scratch_flags, 1); + + // If last block then reset count + if (last_block) *global_scratch_flags = 0; + } + + // FIXME hip does not support __syncthreads_or so we need to do it by hand + // last_block = __syncthreads_or(last_block); + + __shared__ int last_block_shared; + if (last_block) last_block_shared = last_block; + __threadfence_block(); + + if (!last_block_shared) return 0; + } + //------------------------ + // Last block reads global_scratch_memory into shared memory. + + const int nentry = nid < hipGridDim_x + ? (nid < nsh ? nid : nsh) + : (hipGridDim_x < nsh ? hipGridDim_x : nsh); + + // nentry = min( nid , nsh , gridDim.x ) + + // whole block reads global memory into shared memory: + + if (tid < nentry) { + const int offset = tid * reducer.length(); + + reducer.copy( + (reinterpret_cast(shmem)) + offset, + (reinterpret_cast(global_scratch_space)) + offset); + + for (int i = nentry + tid; i < static_cast(hipGridDim_x); + i += nentry) { + reducer.join((reinterpret_cast(shmem)) + offset, + (reinterpret_cast(global_scratch_space)) + + i * reducer.length()); + } + } + + __syncthreads(); // Wait for writes to be visible to block + + if (0 == wy) { + // Iterate to reduce shared memory to single warp fan-in size + + int constexpr warp_size = + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + const int nreduce = warp_size < nentry ? warp_size : nentry; + + if (wx < nreduce && nreduce < nentry) { + for (int i = nreduce + wx; i < nentry; i += nreduce) { + reducer.join(((pointer_type)shmem) + wx, ((pointer_type)shmem) + i); + } + __threadfence_block(); // Wait for writes to be visible to warp + } + + // Start fan-in at power of two covering nentry + + for (int i = (1 << (warp_size - __clz(nreduce - 1))); (i >>= 1);) { + const int k = wx + i; + if (wx < i && k < nreduce) { + reducer.join((reinterpret_cast(shmem)) + wx, + (reinterpret_cast(shmem)) + k); + __threadfence_block(); // Wait for writes to be visible to warp + } + } + + if (0 == wx) { + reducer.copy(reducer.data(), reinterpret_cast(shmem)); + return 1; + } + } + return 0; + +#else + (void)reducer; + (void)global_scratch_flags; + (void)shmem; + (void)global_scratch_space; + (void)shmem_size; + return 0; +#endif + } + + //---------------------------------------- + // Private for the driver + + KOKKOS_INLINE_FUNCTION + HIPTeamMember(void* shared, const int shared_begin, const int shared_size, + void* scratch_level_1_ptr, const int scratch_level_1_size, + const int arg_league_rank, const int arg_league_size) + : m_team_reduce(shared), + m_team_shared(((char*)shared) + shared_begin, shared_size, + scratch_level_1_ptr, scratch_level_1_size), + m_team_reduce_size(shared_begin), + m_league_rank(arg_league_rank), + m_league_size(arg_league_size) {} + + public: + // Declare to avoid unused private member warnings which are trigger + // when SFINAE excludes the member function which uses these variables + // Making another class a friend also surpresses these warnings + bool impl_avoid_sfinae_warning() const noexcept { + return m_team_reduce_size > 0 && m_team_reduce != nullptr; + } +}; + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template +struct TeamThreadRangeBoundariesStruct { + typedef iType index_type; + const HIPTeamMember& member; + const iType start; + const iType end; + + KOKKOS_INLINE_FUNCTION + TeamThreadRangeBoundariesStruct(const HIPTeamMember& thread_, iType count) + : member(thread_), start(0), end(count) {} + + KOKKOS_INLINE_FUNCTION + TeamThreadRangeBoundariesStruct(const HIPTeamMember& thread_, iType begin_, + iType end_) + : member(thread_), start(begin_), end(end_) {} +}; + +template +struct TeamVectorRangeBoundariesStruct { + typedef iType index_type; + const HIPTeamMember& member; + const iType start; + const iType end; + + KOKKOS_INLINE_FUNCTION + TeamVectorRangeBoundariesStruct(const HIPTeamMember& thread_, + const iType& count) + : member(thread_), start(0), end(count) {} + + KOKKOS_INLINE_FUNCTION + TeamVectorRangeBoundariesStruct(const HIPTeamMember& thread_, + const iType& begin_, const iType& end_) + : member(thread_), start(begin_), end(end_) {} +}; + +template +struct ThreadVectorRangeBoundariesStruct { + typedef iType index_type; + const index_type start; + const index_type end; + + KOKKOS_INLINE_FUNCTION + ThreadVectorRangeBoundariesStruct(const HIPTeamMember, index_type count) + : start(static_cast(0)), end(count) {} + + KOKKOS_INLINE_FUNCTION + ThreadVectorRangeBoundariesStruct(index_type count) + : start(static_cast(0)), end(count) {} + + KOKKOS_INLINE_FUNCTION + ThreadVectorRangeBoundariesStruct(const HIPTeamMember, index_type arg_begin, + index_type arg_end) + : start(arg_begin), end(arg_end) {} + + KOKKOS_INLINE_FUNCTION + ThreadVectorRangeBoundariesStruct(index_type arg_begin, index_type arg_end) + : start(arg_begin), end(arg_end) {} +}; + +} // namespace Impl + +template +KOKKOS_INLINE_FUNCTION + Impl::TeamThreadRangeBoundariesStruct + TeamThreadRange(const Impl::HIPTeamMember& thread, iType count) { + return Impl::TeamThreadRangeBoundariesStruct( + thread, count); +} + +template +KOKKOS_INLINE_FUNCTION Impl::TeamThreadRangeBoundariesStruct< + typename std::common_type::type, Impl::HIPTeamMember> +TeamThreadRange(const Impl::HIPTeamMember& thread, iType1 begin, iType2 end) { + typedef typename std::common_type::type iType; + return Impl::TeamThreadRangeBoundariesStruct( + thread, iType(begin), iType(end)); +} + +template +KOKKOS_INLINE_FUNCTION + Impl::TeamVectorRangeBoundariesStruct + TeamVectorRange(const Impl::HIPTeamMember& thread, const iType& count) { + return Impl::TeamVectorRangeBoundariesStruct( + thread, count); +} + +template +KOKKOS_INLINE_FUNCTION Impl::TeamVectorRangeBoundariesStruct< + typename std::common_type::type, Impl::HIPTeamMember> +TeamVectorRange(const Impl::HIPTeamMember& thread, const iType1& begin, + const iType2& end) { + typedef typename std::common_type::type iType; + return Impl::TeamVectorRangeBoundariesStruct( + thread, iType(begin), iType(end)); +} + +template +KOKKOS_INLINE_FUNCTION + Impl::ThreadVectorRangeBoundariesStruct + ThreadVectorRange(const Impl::HIPTeamMember& thread, iType count) { + return Impl::ThreadVectorRangeBoundariesStruct( + thread, count); +} + +template +KOKKOS_INLINE_FUNCTION + Impl::ThreadVectorRangeBoundariesStruct + ThreadVectorRange(const Impl::HIPTeamMember& thread, iType arg_begin, + iType arg_end) { + return Impl::ThreadVectorRangeBoundariesStruct( + thread, arg_begin, arg_end); +} + +KOKKOS_INLINE_FUNCTION +Impl::ThreadSingleStruct PerTeam( + const Impl::HIPTeamMember& thread) { + return Impl::ThreadSingleStruct(thread); +} + +KOKKOS_INLINE_FUNCTION +Impl::VectorSingleStruct PerThread( + const Impl::HIPTeamMember& thread) { + return Impl::VectorSingleStruct(thread); +} + +//---------------------------------------------------------------------------- + +/** \brief Inter-thread parallel_for. + * + * Executes closure(iType i) for each i=[0..N). + * + * The range [0..N) is mapped to all threads of the the calling thread team. + */ +template +KOKKOS_INLINE_FUNCTION void parallel_for( + const Impl::TeamThreadRangeBoundariesStruct& + loop_boundaries, + const Closure& closure) { +#ifdef __HIP_DEVICE_COMPILE__ + for (iType i = loop_boundaries.start + hipThreadIdx_y; + i < loop_boundaries.end; i += hipBlockDim_y) + closure(i); +#else + (void)loop_boundaries; + (void)closure; +#endif +} + +//---------------------------------------------------------------------------- + +/** \brief Inter-thread parallel_reduce with a reducer. + * + * Executes closure(iType i, ValueType & val) for each i=[0..N) + * + * The range [0..N) is mapped to all threads of the + * calling thread team and a summation of val is + * performed and put into result. + */ +template +KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + parallel_reduce(const Impl::TeamThreadRangeBoundariesStruct< + iType, Impl::HIPTeamMember>& loop_boundaries, + const Closure& closure, const ReducerType& reducer) { +#ifdef __HIP_DEVICE_COMPILE__ + typename ReducerType::value_type value; + reducer.init(value); + + for (iType i = loop_boundaries.start + hipThreadIdx_y; + i < loop_boundaries.end; i += hipBlockDim_y) { + closure(i, value); + } + + loop_boundaries.member.team_reduce(reducer, value); +#else + (void)loop_boundaries; + (void)closure; + (void)reducer; +#endif +} + +/** \brief Inter-thread parallel_reduce assuming summation. + * + * Executes closure(iType i, ValueType & val) for each i=[0..N) + * + * The range [0..N) is mapped to all threads of the + * calling thread team and a summation of val is + * performed and put into result. + */ +template +KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + parallel_reduce(const Impl::TeamThreadRangeBoundariesStruct< + iType, Impl::HIPTeamMember>& loop_boundaries, + const Closure& closure, ValueType& result) { +#ifdef __HIP_DEVICE_COMPILE__ + ValueType val; + Kokkos::Sum reducer(val); + + reducer.init(reducer.reference()); + + for (iType i = loop_boundaries.start + hipThreadIdx_y; + i < loop_boundaries.end; i += hipBlockDim_y) { + closure(i, val); + } + + loop_boundaries.member.team_reduce(reducer, val); + result = reducer.reference(); +#else + (void)loop_boundaries; + (void)closure; + (void)result; +#endif +} + +template +KOKKOS_INLINE_FUNCTION void parallel_for( + const Impl::TeamVectorRangeBoundariesStruct& + loop_boundaries, + const Closure& closure) { +#ifdef __HIP_DEVICE_COMPILE__ + for (iType i = loop_boundaries.start + hipThreadIdx_y * hipBlockDim_x + + hipThreadIdx_x; + i < loop_boundaries.end; i += hipBlockDim_y * hipBlockDim_x) + closure(i); +#else + (void)loop_boundaries; + (void)closure; +#endif +} + +template +KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + parallel_reduce(const Impl::TeamVectorRangeBoundariesStruct< + iType, Impl::HIPTeamMember>& loop_boundaries, + const Closure& closure, const ReducerType& reducer) { +#ifdef __HIP_DEVICE_COMPILE__ + typename ReducerType::value_type value; + reducer.init(value); + + for (iType i = loop_boundaries.start + hipThreadIdx_y * hipBlockDim_x + + hipThreadIdx_x; + i < loop_boundaries.end; i += hipBlockDim_y * hipBlockDim_x) { + closure(i, value); + } + + loop_boundaries.member.vector_reduce(reducer, value); + loop_boundaries.member.team_reduce(reducer, value); +#else + (void)loop_boundaries; + (void)closure; + (void)reducer; +#endif +} + +template +KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + parallel_reduce(const Impl::TeamVectorRangeBoundariesStruct< + iType, Impl::HIPTeamMember>& loop_boundaries, + const Closure& closure, ValueType& result) { +#ifdef __HIP_DEVICE_COMPILE__ + ValueType val; + Kokkos::Sum reducer(val); + + reducer.init(reducer.reference()); + + for (iType i = loop_boundaries.start + hipThreadIdx_y * hipBlockDim_x + + hipThreadIdx_x; + i < loop_boundaries.end; i += hipBlockDim_y * hipBlockDim_x) { + closure(i, val); + } + + loop_boundaries.member.vector_reduce(reducer); + loop_boundaries.member.team_reduce(reducer); + result = reducer.reference(); +#else + (void)loop_boundaries; + (void)closure; + (void)result; +#endif +} + +//---------------------------------------------------------------------------- + +/** \brief Intra-thread vector parallel_for. + * + * Executes closure(iType i) for each i=[0..N) + * + * The range [0..N) is mapped to all vector lanes of the the calling thread. + */ +template +KOKKOS_INLINE_FUNCTION void parallel_for( + const Impl::ThreadVectorRangeBoundariesStruct& + loop_boundaries, + const Closure& closure) { +#ifdef __HIP_DEVICE_COMPILE__ + for (iType i = loop_boundaries.start + hipThreadIdx_x; + i < loop_boundaries.end; i += hipBlockDim_x) { + closure(i); + } +#else + (void)loop_boundaries; + (void)closure; +#endif +} + +//---------------------------------------------------------------------------- + +/** \brief Intra-thread vector parallel_reduce. + * + * Calls closure(iType i, ValueType & val) for each i=[0..N). + * + * The range [0..N) is mapped to all vector lanes of + * the calling thread and a reduction of val is performed using += + * and output into result. + * + * The identity value for the += operator is assumed to be the default + * constructed value. + */ +template +KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + parallel_reduce(Impl::ThreadVectorRangeBoundariesStruct< + iType, Impl::HIPTeamMember> const& loop_boundaries, + Closure const& closure, ReducerType const& reducer) { +#ifdef __HIP_DEVICE_COMPILE__ + reducer.init(reducer.reference()); + + for (iType i = loop_boundaries.start + hipThreadIdx_x; + i < loop_boundaries.end; i += hipBlockDim_x) { + closure(i, reducer.reference()); + } + + Impl::HIPTeamMember::vector_reduce(reducer); +#else + (void)loop_boundaries; + (void)closure; + (void)reducer; +#endif +} + +/** \brief Intra-thread vector parallel_reduce. + * + * Calls closure(iType i, ValueType & val) for each i=[0..N). + * + * The range [0..N) is mapped to all vector lanes of + * the calling thread and a reduction of val is performed using += + * and output into result. + * + * The identity value for the += operator is assumed to be the default + * constructed value. + */ +template +KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + parallel_reduce(Impl::ThreadVectorRangeBoundariesStruct< + iType, Impl::HIPTeamMember> const& loop_boundaries, + Closure const& closure, ValueType& result) { +#ifdef __HIP_DEVICE_COMPILE__ + result = ValueType(); + + for (iType i = loop_boundaries.start + hipThreadIdx_x; + i < loop_boundaries.end; i += hipBlockDim_x) { + closure(i, result); + } + + Impl::HIPTeamMember::vector_reduce(Kokkos::Sum(result)); +#else + (void)loop_boundaries; + (void)closure; + (void)result; +#endif +} + +//---------------------------------------------------------------------------- + +/** \brief Intra-thread vector parallel exclusive prefix sum. + * + * Executes closure(iType i, ValueType & val, bool final) for each i=[0..N) + * + * The range [0..N) is mapped to all vector lanes in the + * thread and a scan operation is performed. + * The last call to closure has final == true. + */ +template +KOKKOS_INLINE_FUNCTION void parallel_scan( + const Impl::ThreadVectorRangeBoundariesStruct& + loop_boundaries, + const Closure& closure) { +#ifdef __HIP_DEVICE_COMPILE__ + // Extract value_type from closure + + using value_type = typename Kokkos::Impl::FunctorAnalysis< + Kokkos::Impl::FunctorPatternInterface::SCAN, void, Closure>::value_type; + + // Loop through boundaries by vector-length chunks + // must scan at each iteration + + value_type accum = 0; + + // All thread "lanes" must loop the same number of times. + // Determine an loop end for all thread "lanes." + // Requires: + // hipBlockDim_x is power of two and thus + // ( end % hipBlockDim_x ) == ( end & ( hipBlockDim_x - 1 ) ) + // 1 <= hipBlockDim_x <= HIPTraits::WarpSize + + int constexpr warp_size = ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + const int mask = hipBlockDim_x - 1; + const unsigned active_mask = + blockDim.x == warp_size + ? 0xffffffff + : ((1 << hipBlockDim_x) - 1) + << (hipThreadIdx_y % (warp_size / hipBlockDim_x)) * + hipBlockDim_x; + const int rem = loop_boundaries.end & mask; // == end % hipBlockDim_x + const int end = loop_boundaries.end + (rem ? hipBlockDim_x - rem : 0); + + for (int i = hipThreadIdx_x; i < end; i += hipBlockDim_x) { + value_type val = 0; + + // First acquire per-lane contributions: + if (i < loop_boundaries.end) closure(i, val, false); + + value_type sval = val; + + // Bottom up inclusive scan in triangular pattern + // where each HIP thread is the root of a reduction tree + // from the zeroth "lane" to itself. + // [t] += [t-1] if t >= 1 + // [t] += [t-2] if t >= 2 + // [t] += [t-4] if t >= 4 + // ... + + for (int j = 1; j < static_cast(hipBlockDim_x); j <<= 1) { + value_type tmp = 0; + ::Kokkos::Experimental::Impl::in_place_shfl_up( + tmp, sval, j, hipBlockDim_x, active_mask); + if (j <= static_cast(hipThreadIdx_x)) { + sval += tmp; + } + } + + // Include accumulation and remove value for exclusive scan: + val = accum + sval - val; + + // Provide exclusive scan value: + if (i < loop_boundaries.end) closure(i, val, true); + + // Accumulate the last value in the inclusive scan: + ::Kokkos::Experimental::Impl::in_place_shfl(sval, sval, mask, blockDim.x, + active_mask); + + accum += sval; + } +#else + (void)loop_boundaries; + (void)closure; +#endif +} + +} // namespace Kokkos + +namespace Kokkos { + +template +KOKKOS_INLINE_FUNCTION void single( + const Impl::VectorSingleStruct&, + const FunctorType& lambda) { +#ifdef __HIP_DEVICE_COMPILE__ + if (hipThreadIdx_x == 0) lambda(); +#else + (void)lambda; +#endif +} + +template +KOKKOS_INLINE_FUNCTION void single( + const Impl::ThreadSingleStruct&, + const FunctorType& lambda) { +#ifdef __HIP_DEVICE_COMPILE__ + if (hipThreadIdx_x == 0 && hipThreadIdx_y == 0) lambda(); +#else + (void)lambda; +#endif +} + +template +KOKKOS_INLINE_FUNCTION void single( + const Impl::VectorSingleStruct&, + const FunctorType& lambda, ValueType& val) { +#ifdef __HIP_DEVICE_COMPILE__ + int constexpr warp_size = ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + if (hipThreadIdx_x == 0) lambda(val); + unsigned mask = hipBlockDim_x == warp_size + ? 0xffffffff + : ((1 << hipBlockDim_x) - 1) + << ((hipThreadIdx_y % (warp_size / hipBlockDim_x)) * + hipBlockDim_x); + ::Kokkos::Experimental::Impl::in_place_shfl(val, val, 0, hipBlockDim_x, mask); +#else + (void)lambda; + (void)val; +#endif +} + +template +KOKKOS_INLINE_FUNCTION void single( + const Impl::ThreadSingleStruct& single_struct, + const FunctorType& lambda, ValueType& val) { + (void)single_struct; + (void)lambda; + (void)val; +#ifdef __HIP_DEVICE_COMPILE__ + if (hipThreadIdx_x == 0 && hipThreadIdx_y == 0) { + lambda(val); + } + single_struct.team_member.team_broadcast(val, 0); +#else + (void)single_struct; + (void)lambda; + (void)val; +#endif +} + +} // namespace Kokkos + +#endif /* defined( __HIPCC__ ) */ + +#endif /* #ifndef KOKKOS_CUDA_TEAM_HPP */ diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Vectorization.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Vectorization.hpp new file mode 100644 index 0000000000..58b5abb2ee --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Vectorization.hpp @@ -0,0 +1,160 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HIP_VECTORIZATION_HPP +#define KOKKOS_HIP_VECTORIZATION_HPP + +#include +#include + +namespace Kokkos { +namespace Experimental { +namespace Impl { + +// Include all lanes +constexpr unsigned shfl_all_mask = 0xffffffff; + +//---------------------------------------------------------------------------- +// Shuffle operations require input to be a register (stack) variable + +// Derived implements do_shfl_op(unsigned mask, T& in, int lane, int width), +// which turns in to one of KOKKOS_IMPL_HIP_SHFL(_UP_|_DOWN_|_)MASK +// Since the logic with respect to value sizes, etc., is the same everywhere, +// put it all in one place. +template +struct in_place_shfl_op { + // CRTP boilerplate + __device__ KOKKOS_IMPL_FORCEINLINE const Derived& self() const noexcept { + return *static_cast(this); + } + + // sizeof(Scalar) == sizeof(int) case + template + // requires _assignable_from_bits + __device__ inline typename std::enable_if::type + operator()(Scalar& out, Scalar const& in, int lane_or_delta, int width, + unsigned mask = shfl_all_mask) const noexcept { + //------------------------------------------------ + reinterpret_cast(out) = self().do_shfl_op( + mask, reinterpret_cast(in), lane_or_delta, width); + //------------------------------------------------ + } + + template + __device__ inline + typename std::enable_if::type + operator()(Scalar& out, Scalar const& in, int lane_or_delta, int width, + unsigned mask = shfl_all_mask) const noexcept { + //------------------------------------------------ + reinterpret_cast(out) = self().do_shfl_op( + mask, *reinterpret_cast(&in), lane_or_delta, width); + //------------------------------------------------ + } + + // sizeof(Scalar) > sizeof(double) case + template + __device__ inline + typename std::enable_if<(sizeof(Scalar) > sizeof(double))>::type + operator()(Scalar& out, const Scalar& val, int lane_or_delta, int width, + unsigned mask = shfl_all_mask) const noexcept { + using shuffle_as_t = int; + enum : int { N = sizeof(Scalar) / sizeof(shuffle_as_t) }; + + for (int i = 0; i < N; ++i) { + reinterpret_cast(&out)[i] = self().do_shfl_op( + mask, reinterpret_cast(&val)[i], lane_or_delta, + width); + } + } +}; + +struct in_place_shfl_fn : in_place_shfl_op { + template + __device__ KOKKOS_IMPL_FORCEINLINE T do_shfl_op(unsigned mask, T& val, + int lane, int width) const + noexcept { + return KOKKOS_IMPL_HIP_SHFL_MASK(mask, val, lane, width); + } +}; + +template +__device__ KOKKOS_IMPL_FORCEINLINE void in_place_shfl(Args&&... args) noexcept { + in_place_shfl_fn{}((Args &&) args...); +} + +struct in_place_shfl_up_fn : in_place_shfl_op { + template + __device__ KOKKOS_IMPL_FORCEINLINE T do_shfl_op(unsigned mask, T& val, + int lane, int width) const + noexcept { + return KOKKOS_IMPL_HIP_SHFL_UP_MASK(mask, val, lane, width); + } +}; + +template +__device__ KOKKOS_IMPL_FORCEINLINE void in_place_shfl_up( + Args&&... args) noexcept { + in_place_shfl_up_fn{}((Args &&) args...); +} + +struct in_place_shfl_down_fn : in_place_shfl_op { + template + __device__ KOKKOS_IMPL_FORCEINLINE T do_shfl_op(unsigned mask, T& val, + int lane, int width) const + noexcept { + return KOKKOS_IMPL_HIP_SHFL_DOWN_MASK(mask, val, lane, width); + } +}; + +template +__device__ KOKKOS_IMPL_FORCEINLINE void in_place_shfl_down( + Args&&... args) noexcept { + in_place_shfl_down_fn{}((Args &&) args...); +} + +} // namespace Impl +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/HPX/Kokkos_HPX.cpp b/lib/kokkos/core/src/HPX/Kokkos_HPX.cpp index 0c4cca70f8..acbd1074fd 100644 --- a/lib/kokkos/core/src/HPX/Kokkos_HPX.cpp +++ b/lib/kokkos/core/src/HPX/Kokkos_HPX.cpp @@ -85,6 +85,9 @@ void HPX::impl_initialize(int thread_count) { char *argv_hpx[] = {name, nullptr}; hpx::start(nullptr, argc_hpx, argv_hpx, config); +#if HPX_VERSION_FULL < 0x010400 + // This has been fixed in HPX 1.4.0. + // // NOTE: Wait for runtime to start. hpx::start returns as soon as // possible, meaning some operations are not allowed immediately // after hpx::start. Notably, hpx::stop needs state_running. This @@ -94,6 +97,7 @@ void HPX::impl_initialize(int thread_count) { rt = hpx::get_runtime_ptr(); hpx::util::yield_while( [rt]() { return rt->get_state() < hpx::state_running; }); +#endif m_hpx_initialized = true; } diff --git a/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp b/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp index 7981c04b4f..3195dbdedf 100644 --- a/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp +++ b/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp @@ -63,6 +63,10 @@ #include #endif +#if defined(__HIPCC__) && defined(KOKKOS_ENABLE_HIP) +#include +#endif + namespace Kokkos { // ------------------------------------------------------------------ // @@ -79,7 +83,8 @@ enum class Iterate template struct default_outer_direction { using type = Iterate; -#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_ROCM) +#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_ROCM) || \ + defined(KOKKOS_ENABLE_HIP) static constexpr Iterate value = Iterate::Left; #else static constexpr Iterate value = Iterate::Right; @@ -89,7 +94,8 @@ struct default_outer_direction { template struct default_inner_direction { using type = Iterate; -#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_ROCM) +#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_ROCM) || \ + defined(KOKKOS_ENABLE_HIP) static constexpr Iterate value = Iterate::Left; #else static constexpr Iterate value = Iterate::Right; @@ -256,6 +262,10 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { #if defined(KOKKOS_ENABLE_ROCM) && !std::is_same::value +#endif +#if defined(KOKKOS_ENABLE_HIP) + && !std::is_same::value #endif ) { index_type span; @@ -275,7 +285,7 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { m_prod_tile_dims *= m_tile[i]; } } -#if defined(KOKKOS_ENABLE_CUDA) +#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_HIP) else // Cuda { index_type span; @@ -287,15 +297,21 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { rank_start = rank - 1; rank_end = -1; } + bool is_cuda_exec_space = +#if defined(KOKKOS_ENABLE_CUDA) + std::is_same::value; +#else + false; +#endif for (int i = rank_start; i != rank_end; i += increment) { span = m_upper[i] - m_lower[i]; if (m_tile[i] <= 0) { - // TODO: determine what is a good default tile size for cuda + // TODO: determine what is a good default tile size for cuda and HIP // may be rank dependent if (((int)inner_direction == (int)Right && (i < rank - 1)) || ((int)inner_direction == (int)Left && (i > 0))) { if (m_prod_tile_dims < 256) { - m_tile[i] = 2; + m_tile[i] = (is_cuda_exec_space) ? 2 : 4; } else { m_tile[i] = 1; } @@ -311,13 +327,18 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { if (m_prod_tile_dims > 1024) { // Match Cuda restriction for ParallelReduce; 1024,1024,64 // max per dim (Kepler), but product num_threads < 1024 - printf(" Tile dimensions exceed Cuda limits\n"); - Kokkos::abort( - " Cuda ExecSpace Error: MDRange tile dims exceed maximum number of " - "threads per block - choose smaller tile dims"); - // Kokkos::Impl::throw_runtime_exception( " Cuda ExecSpace Error: - // MDRange tile dims exceed maximum number of threads per block - choose - // smaller tile dims"); + if (is_cuda_exec_space) { + printf(" Tile dimensions exceed Cuda limits\n"); + Kokkos::abort( + " Cuda ExecSpace Error: MDRange tile dims exceed maximum number " + "of " + "threads per block - choose smaller tile dims"); + } else { + printf(" Tile dimensions exceed HIP limits\n"); + Kokkos::abort( + "HIP ExecSpace Error: MDRange tile dims exceed maximum number of " + "threads per block - choose smaller tile dims"); + } } } #endif @@ -396,6 +417,10 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { #if defined(KOKKOS_ENABLE_ROCM) && !std::is_same::value +#endif +#if defined(KOKKOS_ENABLE_HIP) + && !std::is_same::value #endif ) { index_type span; @@ -415,8 +440,8 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { m_prod_tile_dims *= m_tile[i]; } } -#if defined(KOKKOS_ENABLE_CUDA) - else // Cuda +#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_HIP) + else // Cuda or HIP { index_type span; int increment = 1; @@ -451,13 +476,17 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { if (m_prod_tile_dims > 1024) { // Match Cuda restriction for ParallelReduce; 1024,1024,64 // max per dim (Kepler), but product num_threads < 1024 +#if defined(KOKKOS_ENABLE_CUDA) printf(" Tile dimensions exceed Cuda limits\n"); Kokkos::abort( " Cuda ExecSpace Error: MDRange tile dims exceed maximum number of " "threads per block - choose smaller tile dims"); - // Kokkos::Impl::throw_runtime_exception( " Cuda ExecSpace Error: - // MDRange tile dims exceed maximum number of threads per block - choose - // smaller tile dims"); +#else + printf(" Tile dimensions exceed HIP limits\n"); + Kokkos::abort( + " HIP ExecSpace Error: MDRange tile dims exceed maximum number of " + "threads per block - choose smaller tile dims"); +#endif } } #endif diff --git a/lib/kokkos/core/src/Kokkos_Array.hpp b/lib/kokkos/core/src/Kokkos_Array.hpp index 88e7883cb9..d830616bd6 100644 --- a/lib/kokkos/core/src/Kokkos_Array.hpp +++ b/lib/kokkos/core/src/Kokkos_Array.hpp @@ -159,22 +159,21 @@ struct Array { return &m_internal_implementation_private_member_data[0]; } -#ifdef KOKKOS_IMPL_ROCM_CLANG_WORKAROUND +#ifdef KOKKOS_IMPL_HIP_CLANG_WORKAROUND // Do not default unless move and move-assignment are also defined - KOKKOS_INLINE_FUNCTION - ~Array() = default; - Array() = default; - Array(const Array&) = default; - Array& operator=(const Array&) = default; + KOKKOS_DEFAULTED_FUNCTION ~Array() = default; + KOKKOS_DEFAULTED_FUNCTION Array() = default; + KOKKOS_DEFAULTED_FUNCTION Array(const Array&) = default; + KOKKOS_DEFAULTED_FUNCTION Array& operator=(const Array&) = default; // Some supported compilers are not sufficiently C++11 compliant // for default move constructor and move assignment operator. - Array(Array&&) = default; - Array& operator=(Array&&) = default; + KOKKOS_DEFAULTED_FUNCTION Array(Array&&) = default; + KOKKOS_DEFAULTED_FUNCTION Array& operator=(Array&&) = default; KOKKOS_INLINE_FUNCTION Array(const std::initializer_list& vals) { - for (int i = 0; i < N; i++) { + for (size_t i = 0; i < N; i++) { m_internal_implementation_private_member_data[i] = vals.begin()[i]; } } @@ -217,17 +216,10 @@ struct Array { KOKKOS_INLINE_FUNCTION pointer data() { return pointer(0); } KOKKOS_INLINE_FUNCTION const_pointer data() const { return const_pointer(0); } -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION ~Array() {} - KOKKOS_INLINE_FUNCTION Array() {} - KOKKOS_INLINE_FUNCTION Array(const Array&) {} - KOKKOS_INLINE_FUNCTION Array& operator=(const Array&) {} -#else - KOKKOS_INLINE_FUNCTION ~Array() = default; - KOKKOS_INLINE_FUNCTION Array() = default; - KOKKOS_INLINE_FUNCTION Array(const Array&) = default; - KOKKOS_INLINE_FUNCTION Array& operator=(const Array&) = default; -#endif + KOKKOS_DEFAULTED_FUNCTION ~Array() = default; + KOKKOS_DEFAULTED_FUNCTION Array() = default; + KOKKOS_DEFAULTED_FUNCTION Array(const Array&) = default; + KOKKOS_DEFAULTED_FUNCTION Array& operator=(const Array&) = default; // Some supported compilers are not sufficiently C++11 compliant // for default move constructor and move assignment operator. @@ -281,13 +273,9 @@ struct Array::contiguous> { KOKKOS_INLINE_FUNCTION pointer data() { return m_elem; } KOKKOS_INLINE_FUNCTION const_pointer data() const { return m_elem; } -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION ~Array() {} -#else - KOKKOS_INLINE_FUNCTION ~Array() = default; -#endif - Array() = delete; - Array(const Array& rhs) = delete; + KOKKOS_DEFAULTED_FUNCTION ~Array() = default; + KOKKOS_INLINE_FUNCTION_DELETED Array() = delete; + KOKKOS_INLINE_FUNCTION_DELETED Array(const Array& rhs) = delete; // Some supported compilers are not sufficiently C++11 compliant // for default move constructor and move assignment operator. @@ -354,13 +342,9 @@ struct Array::strided> { KOKKOS_INLINE_FUNCTION pointer data() { return m_elem; } KOKKOS_INLINE_FUNCTION const_pointer data() const { return m_elem; } -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION ~Array() {} -#else - KOKKOS_INLINE_FUNCTION ~Array() = default; -#endif - Array() = delete; - Array(const Array&) = delete; + KOKKOS_DEFAULTED_FUNCTION ~Array() = default; + KOKKOS_INLINE_FUNCTION_DELETED Array() = delete; + KOKKOS_INLINE_FUNCTION_DELETED Array(const Array&) = delete; // Some supported compilers are not sufficiently C++11 compliant // for default move constructor and move assignment operator. diff --git a/lib/kokkos/core/src/Kokkos_Atomic.hpp b/lib/kokkos/core/src/Kokkos_Atomic.hpp index c4f7fa3ec1..55139d07b9 100644 --- a/lib/kokkos/core/src/Kokkos_Atomic.hpp +++ b/lib/kokkos/core/src/Kokkos_Atomic.hpp @@ -86,6 +86,10 @@ #define KOKKOS_ENABLE_ROCM_ATOMICS +#elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HIP_GPU) + +#define KOKKOS_ENABLE_HIP_ATOMICS + #endif #if !defined(KOKKOS_ENABLE_GNU_ATOMICS) && \ @@ -178,11 +182,13 @@ extern KOKKOS_INLINE_FUNCTION void unlock_address_rocm_space(void* ptr); } // namespace Kokkos #include #endif +#if defined(KOKKOS_ENABLE_HIP) +#include +#endif #ifdef _WIN32 #include "impl/Kokkos_Atomic_Windows.hpp" #else - //---------------------------------------------------------------------------- // Atomic Assembly // @@ -209,6 +215,11 @@ extern KOKKOS_INLINE_FUNCTION void unlock_address_rocm_space(void* ptr); #include "impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp" +#endif //_WIN32 + +#include "impl/Kokkos_Atomic_Generic.hpp" + +#ifndef _WIN32 //---------------------------------------------------------------------------- // Atomic fetch and add // @@ -262,6 +273,18 @@ extern KOKKOS_INLINE_FUNCTION void unlock_address_rocm_space(void* ptr); // { T tmp = *dest ; *dest = tmp & val ; return tmp ; } #include "impl/Kokkos_Atomic_Fetch_And.hpp" + +//---------------------------------------------------------------------------- +// Atomic MinMax +// +// template +// T atomic_min(volatile T* const dest, const T val) +// { T tmp = *dest ; *dest = min(*dest, val); return tmp ; } +// template +// T atomic_max(volatile T* const dest, const T val) +// { T tmp = *dest ; *dest = max(*dest, val); return tmp ; } + +#include "impl/Kokkos_Atomic_MinMax.hpp" #endif /*Not _WIN32*/ //---------------------------------------------------------------------------- @@ -284,16 +307,14 @@ extern KOKKOS_INLINE_FUNCTION void unlock_address_rocm_space(void* ptr); #include "impl/Kokkos_Volatile_Load.hpp" -#ifndef _WIN32 -#include "impl/Kokkos_Atomic_Generic.hpp" -#endif - //---------------------------------------------------------------------------- // Provide atomic loads and stores with memory order semantics #include "impl/Kokkos_Atomic_Load.hpp" #include "impl/Kokkos_Atomic_Store.hpp" +// Generic functions using the above defined functions +#include "impl/Kokkos_Atomic_Generic_Secondary.hpp" //---------------------------------------------------------------------------- // This atomic-style macro should be an inlined function, not a macro diff --git a/lib/kokkos/core/src/Kokkos_Complex.hpp b/lib/kokkos/core/src/Kokkos_Complex.hpp index a9af073b41..fec5d62c3d 100644 --- a/lib/kokkos/core/src/Kokkos_Complex.hpp +++ b/lib/kokkos/core/src/Kokkos_Complex.hpp @@ -73,14 +73,14 @@ class using value_type = RealType; //! Default constructor (initializes both real and imaginary parts to zero). - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION complex() noexcept = default; //! Copy constructor. - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION complex(const complex&) noexcept = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION complex& operator=(const complex&) noexcept = default; /// \brief Conversion constructor from compatible RType @@ -219,7 +219,10 @@ class // Scale (by the "1-norm" of y) to avoid unwarranted overflow. // If the real part is +/-Inf and the imaginary part is -/+Inf, // this won't change the result. - const RealType s = std::fabs(y.real()) + std::fabs(y.imag()); +#if !defined(__HIP_DEVICE_COMPILE__) // FIXME_HIP + using std::fabs; +#endif + const RealType s = fabs(y.real()) + fabs(y.imag()); // If s is 0, then y is zero, so x/y == real(x)/0 + i*imag(x)/0. // In that case, the relation x/y == (x/s) / (y/s) doesn't hold, @@ -247,7 +250,10 @@ class // Scale (by the "1-norm" of y) to avoid unwarranted overflow. // If the real part is +/-Inf and the imaginary part is -/+Inf, // this won't change the result. - const RealType s = std::fabs(y.real()) + std::fabs(y.imag()); +#if !defined(__HIP_DEVICE_COMPILE__) // FIXME_HIP + using std::fabs; +#endif + const RealType s = fabs(y.real()) + fabs(y.imag()); // If s is 0, then y is zero, so x/y == real(x)/0 + i*imag(x)/0. // In that case, the relation x/y == (x/s) / (y/s) doesn't hold, @@ -298,8 +304,21 @@ class /// complex& . See Kokkos Issue #177 for the /// explanation. In practice, this means that you should not chain /// assignments with volatile lvalues. - KOKKOS_INLINE_FUNCTION void operator=( - const complex& src) volatile noexcept { + // + // Templated, so as not to be a copy assignment operator (Kokkos issue #2577) + // Intended to behave as + // void operator=(const complex&) volatile noexcept + // + // Use cases: + // complex r; + // const complex cr; + // volatile complex vl; + // vl = r; + // vl = cr; + template ::value, + int>::type = 0> + KOKKOS_INLINE_FUNCTION void operator=(const Complex& src) volatile noexcept { re_ = src.re_; im_ = src.im_; // We deliberately do not return anything here. See explanation @@ -308,16 +327,45 @@ class //! Assignment operator, volatile LHS and volatile RHS // TODO Should this return void like the other volatile assignment operators? + // + // Templated, so as not to be a copy assignment operator (Kokkos issue #2577) + // Intended to behave as + // volatile complex& operator=(const volatile complex&) volatile noexcept + // + // Use cases: + // volatile complex vr; + // const volatile complex cvr; + // volatile complex vl; + // vl = vr; + // vl = cvr; + template ::value, + int>::type = 0> KOKKOS_INLINE_FUNCTION volatile complex& operator=( - const volatile complex& src) volatile noexcept { + const volatile Complex& src) volatile noexcept { re_ = src.re_; im_ = src.im_; return *this; } //! Assignment operator, volatile RHS and non-volatile LHS + // + // Templated, so as not to be a copy assignment operator (Kokkos issue #2577) + // Intended to behave as + // complex& operator=(const volatile complex&) noexcept + // + // Use cases: + // volatile complex vr; + // const volatile complex cvr; + // complex l; + // l = vr; + // l = cvr; + // + template ::value, + int>::type = 0> KOKKOS_INLINE_FUNCTION complex& operator=( - const volatile complex& src) noexcept { + const volatile Complex& src) noexcept { re_ = src.re_; im_ = src.im_; return *this; @@ -650,7 +698,8 @@ KOKKOS_INLINE_FUNCTION RealType real(const complex& x) noexcept { //! Absolute value (magnitude) of a complex number. template KOKKOS_INLINE_FUNCTION RealType abs(const complex& x) { -#ifndef __CUDA_ARCH__ +#if !defined(__CUDA_ARCH__) && \ + !defined(__HIP_DEVICE_COMPILE__) // FIXME_CUDA FIXME_HIP using std::hypot; #endif return hypot(x.real(), x.imag()); @@ -660,20 +709,32 @@ KOKKOS_INLINE_FUNCTION RealType abs(const complex& x) { template KOKKOS_INLINE_FUNCTION Kokkos::complex pow(const complex& x, const RealType& e) { - RealType r = abs(x); - RealType phi = std::atan(x.imag() / x.real()); - return std::pow(r, e) * - Kokkos::complex(std::cos(phi * e), std::sin(phi * e)); + RealType r = abs(x); +#if !defined(__HIP_DEVICE_COMPILE__) // FIXME_HIP + using std::atan; + using std::cos; + using std::pow; + using std::sin; +#endif + using ::pow; + RealType phi = atan(x.imag() / x.real()); + return pow(r, e) * Kokkos::complex(cos(phi * e), sin(phi * e)); } //! Square root of a complex number. template KOKKOS_INLINE_FUNCTION Kokkos::complex sqrt( const complex& x) { - RealType r = abs(x); - RealType phi = std::atan(x.imag() / x.real()); - return std::sqrt(r) * - Kokkos::complex(std::cos(phi * 0.5), std::sin(phi * 0.5)); + RealType r = abs(x); +#if !defined(__HIP_DEVICE_COMPILE__) // FIXME_HIP + using std::atan; + using std::cos; + using std::sin; + using std::sqrt; +#endif + using ::sqrt; + RealType phi = atan(x.imag() / x.real()); + return sqrt(r) * Kokkos::complex(cos(phi * 0.5), sin(phi * 0.5)); } //! Conjugate of a complex number. @@ -686,8 +747,14 @@ KOKKOS_INLINE_FUNCTION complex conj( //! Exponential of a complex number. template KOKKOS_INLINE_FUNCTION complex exp(const complex& x) { - return std::exp(x.real()) * - complex(std::cos(x.imag()), std::sin(x.imag())); +#if !defined(__HIP_DEVICE_COMPILE__) // FIXME_HIP + using std::cos; + using std::exp; + using std::sin; +#else + using ::exp; +#endif + return exp(x.real()) * complex(cos(x.imag()), sin(x.imag())); } /// This function cannot be called in a CUDA device function, @@ -720,9 +787,12 @@ KOKKOS_INLINE_FUNCTION // Scale (by the "1-norm" of y) to avoid unwarranted overflow. // If the real part is +/-Inf and the imaginary part is -/+Inf, // this won't change the result. +#if !defined(__HIP_DEVICE_COMPILE__) // FIXME_HIP + using std::fabs; +#endif typedef typename std::common_type::type common_real_type; - const common_real_type s = std::fabs(real(y)) + std::fabs(imag(y)); + const common_real_type s = fabs(real(y)) + fabs(imag(y)); // If s is 0, then y is zero, so x/y == real(x)/0 + i*imag(x)/0. // In that case, the relation x/y == (x/s) / (y/s) doesn't hold, diff --git a/lib/kokkos/core/src/Kokkos_Concepts.hpp b/lib/kokkos/core/src/Kokkos_Concepts.hpp index 99b7aa9aab..13d7925c12 100644 --- a/lib/kokkos/core/src/Kokkos_Concepts.hpp +++ b/lib/kokkos/core/src/Kokkos_Concepts.hpp @@ -153,19 +153,17 @@ namespace Kokkos { template \ struct have : std::false_type {}; \ template \ - struct have::type, \ - typename std::remove_cv::type>::type> \ + struct have::type> \ : std::true_type {}; \ template \ struct have::type, \ - typename std::remove_cv::type>::type> \ + typename std::is_base_of::type> \ : std::true_type {}; \ \ public: \ - enum { value = is_##CONCEPT::template have::value }; \ + static constexpr bool value = \ + is_##CONCEPT::template have::type>::value; \ + constexpr operator bool() const noexcept { return value; } \ }; // Public concept: @@ -205,6 +203,43 @@ KOKKOS_IMPL_IS_CONCEPT(host_thread_team_member) } // namespace Kokkos +namespace Kokkos { +namespace Impl { + +template +class has_member_team_shmem_size { + template + static int32_t test_for_member(decltype(&T::team_shmem_size)) { + return int32_t(0); + } + template + static int64_t test_for_member(...) { + return int64_t(0); + } + + public: + constexpr static bool value = + sizeof(test_for_member(0)) == sizeof(int32_t); +}; + +template +class has_member_shmem_size { + template + static int32_t test_for_member(decltype(&T::shmem_size_me)) { + return int32_t(0); + } + template + static int64_t test_for_member(...) { + return int64_t(0); + } + + public: + constexpr static bool value = + sizeof(test_for_member(0)) == sizeof(int32_t); +}; + +} // namespace Impl +} // namespace Kokkos //---------------------------------------------------------------------------- namespace Kokkos { @@ -220,6 +255,23 @@ struct Device { typedef Device device_type; }; +namespace Impl { + +template +struct is_device_helper : std::false_type {}; + +template +struct is_device_helper> : std::true_type { +}; + +} // namespace Impl + +template +using is_device = + typename Impl::is_device_helper::type>::type; + +//---------------------------------------------------------------------------- + template struct is_space { private: @@ -259,12 +311,17 @@ struct is_space { typedef typename U::device_type space; }; - typedef typename is_space::template exe is_exe; - typedef typename is_space::template mem is_mem; - typedef typename is_space::template dev is_dev; + typedef typename is_space::template exe::type> + is_exe; + typedef typename is_space::template mem::type> + is_mem; + typedef typename is_space::template dev::type> + is_dev; public: - enum { value = is_exe::value || is_mem::value || is_dev::value }; + static constexpr bool value = is_exe::value || is_mem::value || is_dev::value; + + constexpr operator bool() const noexcept { return value; } typedef typename is_exe::space execution_space; typedef typename is_mem::space memory_space; @@ -300,7 +357,7 @@ struct is_space { typedef typename std::conditional< std::is_same::value && std::is_same::value, - T, Kokkos::Device >::type + T, Kokkos::Device>::type host_mirror_space; }; @@ -426,7 +483,7 @@ struct SpaceAccessibility { std::is_same::value || !exe_access::accessible, AccessSpace, - Kokkos::Device >::type + Kokkos::Device>::type space; }; diff --git a/lib/kokkos/core/src/Kokkos_CopyViews.hpp b/lib/kokkos/core/src/Kokkos_CopyViews.hpp index 9b3db1277d..810b712733 100644 --- a/lib/kokkos/core/src/Kokkos_CopyViews.hpp +++ b/lib/kokkos/core/src/Kokkos_CopyViews.hpp @@ -84,7 +84,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); }; template { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&) const; }; @@ -104,7 +104,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&, const iType&) const; }; @@ -115,7 +115,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&, const iType&, const iType&) const; }; @@ -126,7 +126,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&, const iType&, const iType&, const iType&) const; }; @@ -137,7 +137,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&, const iType&, const iType&, const iType&, const iType&) const; @@ -149,7 +149,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&, const iType&, const iType&, const iType&, const iType&, const iType&) const; @@ -161,7 +161,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&, const iType&, const iType&, const iType&, const iType&, const iType&, const iType&) const; @@ -173,7 +173,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&, const iType&, const iType&, const iType&, const iType&, const iType&, const iType&, const iType&) const; @@ -183,9 +183,9 @@ template struct ViewFill { typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType& a, const ST& val) { - Kokkos::Impl::DeepCopy( - a.data(), &val, sizeof(ST)); + ViewFill(const ViewType& a, const ST& val, const ExecSpace& space) { + Kokkos::Impl::DeepCopy(space, a.data(), &val, sizeof(ST)); } }; @@ -196,12 +196,11 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - ExecSpace().fence(); - Kokkos::parallel_for("Kokkos::ViewFill-1D", policy_type(0, a.extent(0)), - *this); - ExecSpace().fence(); + Kokkos::parallel_for("Kokkos::ViewFill-1D", + policy_type(space, 0, a.extent(0)), *this); } KOKKOS_INLINE_FUNCTION @@ -221,13 +220,12 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-2D", - policy_type({0, 0}, {a.extent(0), a.extent(1)}), + policy_type(space, {0, 0}, {a.extent(0), a.extent(1)}), *this); - ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -247,13 +245,13 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - ExecSpace().fence(); Kokkos::parallel_for( "Kokkos::ViewFill-3D", - policy_type({0, 0, 0}, {a.extent(0), a.extent(1), a.extent(2)}), *this); - ExecSpace().fence(); + policy_type(space, {0, 0, 0}, {a.extent(0), a.extent(1), a.extent(2)}), + *this); } KOKKOS_INLINE_FUNCTION @@ -275,14 +273,14 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - ExecSpace().fence(); - Kokkos::parallel_for("Kokkos::ViewFill-4D", - policy_type({0, 0, 0, 0}, {a.extent(0), a.extent(1), - a.extent(2), a.extent(3)}), - *this); - ExecSpace().fence(); + Kokkos::parallel_for( + "Kokkos::ViewFill-4D", + policy_type(space, {0, 0, 0, 0}, + {a.extent(0), a.extent(1), a.extent(2), a.extent(3)}), + *this); } KOKKOS_INLINE_FUNCTION @@ -305,15 +303,14 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - ExecSpace().fence(); - Kokkos::parallel_for( - "Kokkos::ViewFill-5D", - policy_type({0, 0, 0, 0, 0}, {a.extent(0), a.extent(1), a.extent(2), + Kokkos::parallel_for("Kokkos::ViewFill-5D", + policy_type(space, {0, 0, 0, 0, 0}, + {a.extent(0), a.extent(1), a.extent(2), a.extent(3), a.extent(4)}), - *this); - ExecSpace().fence(); + *this); } KOKKOS_INLINE_FUNCTION @@ -336,15 +333,14 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-6D", - policy_type({0, 0, 0, 0, 0, 0}, + policy_type(space, {0, 0, 0, 0, 0, 0}, {a.extent(0), a.extent(1), a.extent(2), a.extent(3), a.extent(4), a.extent(5)}), *this); - ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -367,15 +363,14 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-7D", - policy_type({0, 0, 0, 0, 0, 0}, + policy_type(space, {0, 0, 0, 0, 0, 0}, {a.extent(0), a.extent(1), a.extent(2), a.extent(3), a.extent(5), a.extent(6)}), *this); - ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -399,15 +394,14 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-8D", - policy_type({0, 0, 0, 0, 0, 0}, + policy_type(space, {0, 0, 0, 0, 0, 0}, {a.extent(0), a.extent(1), a.extent(3), a.extent(5), a.extent(6), a.extent(7)}), *this); - ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -424,7 +418,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0) const; }; @@ -434,7 +428,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0, const iType& i1) const; }; @@ -444,7 +438,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0, const iType& i1, const iType& i2) const; }; @@ -454,7 +448,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0, const iType& i1, const iType& i2, const iType& i3) const; @@ -465,7 +459,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0, const iType& i1, const iType& i2, const iType& i3, const iType& i4) const; @@ -476,7 +470,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0, const iType& i1, const iType& i2, const iType& i3, const iType& i4, const iType& i5) const; @@ -487,7 +481,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0, const iType& i1, const iType& i2, const iType& i3, const iType& i4, const iType& i5, @@ -499,7 +493,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0, const iType& i1, const iType& i2, const iType& i3, const iType& i4, const iType& i5, @@ -515,11 +509,11 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - ExecSpace().fence(); - Kokkos::parallel_for("Kokkos::ViewCopy-1D", policy_type(0, a.extent(0)), - *this); - ExecSpace().fence(); + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { + Kokkos::parallel_for("Kokkos::ViewCopy-1D", + policy_type(space, 0, a.extent(0)), *this); } KOKKOS_INLINE_FUNCTION @@ -542,12 +536,12 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - ExecSpace().fence(); + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { Kokkos::parallel_for("Kokkos::ViewCopy-2D", - policy_type({0, 0}, {a.extent(0), a.extent(1)}), + policy_type(space, {0, 0}, {a.extent(0), a.extent(1)}), *this); - ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -573,12 +567,13 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - ExecSpace().fence(); + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { Kokkos::parallel_for( "Kokkos::ViewCopy-3D", - policy_type({0, 0, 0}, {a.extent(0), a.extent(1), a.extent(2)}), *this); - ExecSpace().fence(); + policy_type(space, {0, 0, 0}, {a.extent(0), a.extent(1), a.extent(2)}), + *this); } KOKKOS_INLINE_FUNCTION @@ -604,13 +599,14 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - ExecSpace().fence(); - Kokkos::parallel_for("Kokkos::ViewCopy-4D", - policy_type({0, 0, 0, 0}, {a.extent(0), a.extent(1), - a.extent(2), a.extent(3)}), - *this); - ExecSpace().fence(); + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { + Kokkos::parallel_for( + "Kokkos::ViewCopy-4D", + policy_type(space, {0, 0, 0, 0}, + {a.extent(0), a.extent(1), a.extent(2), a.extent(3)}), + *this); } KOKKOS_INLINE_FUNCTION @@ -637,14 +633,14 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - ExecSpace().fence(); - Kokkos::parallel_for( - "Kokkos::ViewCopy-5D", - policy_type({0, 0, 0, 0, 0}, {a.extent(0), a.extent(1), a.extent(2), + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { + Kokkos::parallel_for("Kokkos::ViewCopy-5D", + policy_type(space, {0, 0, 0, 0, 0}, + {a.extent(0), a.extent(1), a.extent(2), a.extent(3), a.extent(4)}), - *this); - ExecSpace().fence(); + *this); } KOKKOS_INLINE_FUNCTION @@ -671,14 +667,14 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - ExecSpace().fence(); + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { Kokkos::parallel_for("Kokkos::ViewCopy-6D", - policy_type({0, 0, 0, 0, 0, 0}, + policy_type(space, {0, 0, 0, 0, 0, 0}, {a.extent(0), a.extent(1), a.extent(2), a.extent(3), a.extent(4), a.extent(5)}), *this); - ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -705,14 +701,14 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - ExecSpace().fence(); + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { Kokkos::parallel_for("Kokkos::ViewCopy-7D", - policy_type({0, 0, 0, 0, 0, 0}, + policy_type(space, {0, 0, 0, 0, 0, 0}, {a.extent(0), a.extent(1), a.extent(3), a.extent(4), a.extent(5), a.extent(6)}), *this); - ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -740,14 +736,14 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - ExecSpace().fence(); + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { Kokkos::parallel_for("Kokkos::ViewCopy-8D", - policy_type({0, 0, 0, 0, 0, 0}, + policy_type(space, {0, 0, 0, 0, 0, 0}, {a.extent(0), a.extent(1), a.extent(3), a.extent(5), a.extent(6), a.extent(7)}), *this); - ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -767,6 +763,85 @@ struct ViewCopy +void view_copy(const ExecutionSpace& space, const DstType& dst, + const SrcType& src) { + typedef typename DstType::memory_space dst_memory_space; + typedef typename SrcType::memory_space src_memory_space; + + enum { + ExecCanAccessSrc = + Kokkos::Impl::SpaceAccessibility::accessible + }; + enum { + ExecCanAccessDst = + Kokkos::Impl::SpaceAccessibility::accessible + }; + + if (!(ExecCanAccessSrc && ExecCanAccessDst)) { + Kokkos::Impl::throw_runtime_exception( + "Kokkos::Impl::view_copy called with invalid execution space"); + } else { + // Figure out iteration order in case we need it + int64_t strides[DstType::Rank + 1]; + dst.stride(strides); + Kokkos::Iterate iterate; + if (Kokkos::is_layouttiled::value) { + iterate = Kokkos::layout_iterate_type_selector< + typename DstType::array_layout>::outer_iteration_pattern; + } else if (std::is_same::value) { + iterate = Kokkos::Iterate::Right; + } else if (std::is_same::value) { + iterate = Kokkos::Iterate::Left; + } else if (std::is_same::value) { + if (strides[0] > strides[DstType::Rank - 1]) + iterate = Kokkos::Iterate::Right; + else + iterate = Kokkos::Iterate::Left; + } else { + if (std::is_same::value) + iterate = Kokkos::Iterate::Right; + else + iterate = Kokkos::Iterate::Left; + } + + if ((dst.span() >= size_t(std::numeric_limits::max())) || + (src.span() >= size_t(std::numeric_limits::max()))) { + if (iterate == Kokkos::Iterate::Right) + Kokkos::Impl::ViewCopy< + typename DstType::uniform_runtime_nomemspace_type, + typename SrcType::uniform_runtime_const_nomemspace_type, + Kokkos::LayoutRight, ExecutionSpace, DstType::Rank, int64_t>( + dst, src, space); + else + Kokkos::Impl::ViewCopy< + typename DstType::uniform_runtime_nomemspace_type, + typename SrcType::uniform_runtime_const_nomemspace_type, + Kokkos::LayoutLeft, ExecutionSpace, DstType::Rank, int64_t>( + dst, src, space); + } else { + if (iterate == Kokkos::Iterate::Right) + Kokkos::Impl::ViewCopy< + typename DstType::uniform_runtime_nomemspace_type, + typename SrcType::uniform_runtime_const_nomemspace_type, + Kokkos::LayoutRight, ExecutionSpace, DstType::Rank, int>(dst, src, + space); + else + Kokkos::Impl::ViewCopy< + typename DstType::uniform_runtime_nomemspace_type, + typename SrcType::uniform_runtime_const_nomemspace_type, + Kokkos::LayoutLeft, ExecutionSpace, DstType::Rank, int>(dst, src, + space); + } + } +} + template void view_copy(const DstType& dst, const SrcType& src) { typedef typename DstType::execution_space dst_execution_space; @@ -1421,21 +1496,22 @@ inline void deep_copy( const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { typedef View ViewType; + using exec_space_type = typename ViewType::execution_space; #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle( - typename ViewType::memory_space().name()), + Kokkos::Profiling::SpaceHandle(ViewType::memory_space::name()), dst.label(), dst.data(), - Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace().name()), "Scalar", + Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace::name()), "Scalar", &value, dst.span() * sizeof(typename ViewType::value_type)); } #endif - if (dst.data() == NULL) { + if (dst.data() == nullptr) { Kokkos::fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { @@ -1463,13 +1539,13 @@ inline void deep_copy( ViewTypeFlat dst_flat(dst.data(), dst.size()); if (dst.span() < static_cast(std::numeric_limits::max())) { - Kokkos::Impl::ViewFill(dst_flat, value); + Kokkos::Impl::ViewFill(dst_flat, value, + exec_space_type()); } else - Kokkos::Impl::ViewFill(dst_flat, value); + Kokkos::Impl::ViewFill(dst_flat, value, + exec_space_type()); Kokkos::fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { @@ -1511,21 +1587,21 @@ inline void deep_copy( if (dst.span() > static_cast(std::numeric_limits::max())) { if (iterate == Kokkos::Iterate::Right) Kokkos::Impl::ViewFill(dst, value); + exec_space_type, ViewType::Rank, int64_t>( + dst, value, exec_space_type()); else Kokkos::Impl::ViewFill(dst, value); + exec_space_type, ViewType::Rank, int64_t>( + dst, value, exec_space_type()); } else { if (iterate == Kokkos::Iterate::Right) Kokkos::Impl::ViewFill(dst, value); + exec_space_type, ViewType::Rank, int>( + dst, value, exec_space_type()); else Kokkos::Impl::ViewFill(dst, value); + exec_space_type, ViewType::Rank, int>( + dst, value, exec_space_type()); } Kokkos::fence(); @@ -1542,7 +1618,8 @@ inline void deep_copy( typename ViewTraits::non_const_value_type& dst, const View& src, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { typedef ViewTraits src_traits; typedef typename src_traits::memory_space src_memory_space; @@ -1552,14 +1629,14 @@ inline void deep_copy( #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace().name()), "Scalar", - &dst, Kokkos::Profiling::SpaceHandle(src_memory_space().name()), + Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace::name()), "Scalar", + &dst, Kokkos::Profiling::SpaceHandle(src_memory_space::name()), src.label(), src.data(), src.span() * sizeof(typename src_traits::value_type)); } #endif - if (src.data() == NULL) { + if (src.data() == nullptr) { Kokkos::fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { @@ -1587,7 +1664,8 @@ inline void deep_copy( std::is_same::specialize, void>::value && std::is_same::specialize, void>::value && (unsigned(ViewTraits::rank) == unsigned(0) && - unsigned(ViewTraits::rank) == unsigned(0)))>::type* = 0) { + unsigned(ViewTraits::rank) == unsigned(0)))>::type* = + nullptr) { typedef View dst_type; typedef View src_type; @@ -1602,14 +1680,14 @@ inline void deep_copy( #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle(dst_memory_space().name()), dst.label(), - dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space().name()), + Kokkos::Profiling::SpaceHandle(dst_memory_space::name()), dst.label(), + dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space::name()), src.label(), src.data(), src.span() * sizeof(typename dst_type::value_type)); } #endif - if (dst.data() == NULL && src.data() == NULL) { + if (dst.data() == nullptr && src.data() == nullptr) { Kokkos::fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { @@ -1643,7 +1721,7 @@ inline void deep_copy( std::is_same::specialize, void>::value && std::is_same::specialize, void>::value && (unsigned(ViewTraits::rank) != 0 || - unsigned(ViewTraits::rank) != 0))>::type* = 0) { + unsigned(ViewTraits::rank) != 0))>::type* = nullptr) { typedef View dst_type; typedef View src_type; typedef typename dst_type::execution_space dst_execution_space; @@ -1663,14 +1741,14 @@ inline void deep_copy( #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle(dst_memory_space().name()), dst.label(), - dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space().name()), + Kokkos::Profiling::SpaceHandle(dst_memory_space::name()), dst.label(), + dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space::name()), src.label(), src.data(), src.span() * sizeof(typename dst_type::value_type)); } #endif - if (dst.data() == NULL || src.data() == NULL) { + if (dst.data() == nullptr || src.data() == nullptr) { #ifdef KOKKOS_ENABLE_DEPRECATED_CODE // do nothing #else @@ -1874,7 +1952,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 1 && unsigned(ViewTraits::rank) == - 1)>::type* = 0) { + 1)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -1893,7 +1971,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 2 && unsigned(ViewTraits::rank) == - 2)>::type* = 0) { + 2)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -1921,7 +1999,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 3 && unsigned(ViewTraits::rank) == - 3)>::type* = 0) { + 3)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -1951,7 +2029,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 4 && unsigned(ViewTraits::rank) == - 4)>::type* = 0) { + 4)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -1984,7 +2062,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 5 && unsigned(ViewTraits::rank) == - 5)>::type* = 0) { + 5)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2019,7 +2097,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 6 && unsigned(ViewTraits::rank) == - 6)>::type* = 0) { + 6)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2056,7 +2134,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 7 && unsigned(ViewTraits::rank) == - 7)>::type* = 0) { + 7)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2095,7 +2173,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& dst, const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 1 && unsigned(ViewTraits::rank) == - 1)>::type* = 0) { + 1)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2112,7 +2190,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& dst, const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 2 && unsigned(ViewTraits::rank) == - 2)>::type* = 0) { + 2)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2130,7 +2208,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& dst, const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 3 && unsigned(ViewTraits::rank) == - 3)>::type* = 0) { + 3)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2150,7 +2228,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& dst, const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 4 && unsigned(ViewTraits::rank) == - 4)>::type* = 0) { + 4)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2171,7 +2249,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& dst, const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 5 && unsigned(ViewTraits::rank) == - 5)>::type* = 0) { + 5)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2193,7 +2271,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& dst, const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 6 && unsigned(ViewTraits::rank) == - 6)>::type* = 0) { + 6)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2216,7 +2294,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& dst, const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 7 && unsigned(ViewTraits::rank) == - 7)>::type* = 0) { + 7)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2260,7 +2338,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const TeamType& team, const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if<(unsigned(ViewTraits::rank) == - 1)>::type* = 0) { + 1)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2278,7 +2356,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const TeamType& team, const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if<(unsigned(ViewTraits::rank) == - 2)>::type* = 0) { + 2)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2305,7 +2383,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const TeamType& team, const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if<(unsigned(ViewTraits::rank) == - 3)>::type* = 0) { + 3)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2334,7 +2412,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const TeamType& team, const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if<(unsigned(ViewTraits::rank) == - 4)>::type* = 0) { + 4)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2366,7 +2444,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const TeamType& team, const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if<(unsigned(ViewTraits::rank) == - 5)>::type* = 0) { + 5)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2400,7 +2478,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const TeamType& team, const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if<(unsigned(ViewTraits::rank) == - 6)>::type* = 0) { + 6)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2436,7 +2514,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const TeamType& team, const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if<(unsigned(ViewTraits::rank) == - 7)>::type* = 0) { + 7)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2475,7 +2553,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if<(unsigned(ViewTraits::rank) == - 1)>::type* = 0) { + 1)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2492,7 +2570,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if<(unsigned(ViewTraits::rank) == - 2)>::type* = 0) { + 2)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2510,7 +2588,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if<(unsigned(ViewTraits::rank) == - 3)>::type* = 0) { + 3)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2529,7 +2607,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if<(unsigned(ViewTraits::rank) == - 4)>::type* = 0) { + 4)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2550,7 +2628,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if<(unsigned(ViewTraits::rank) == - 5)>::type* = 0) { + 5)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2572,7 +2650,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if<(unsigned(ViewTraits::rank) == - 6)>::type* = 0) { + 6)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2595,7 +2673,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if<(unsigned(ViewTraits::rank) == - 7)>::type* = 0) { + 7)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2621,33 +2699,88 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( namespace Kokkos { -/** \brief Deep copy a value from Host memory into a view. */ +/** \brief Deep copy a value from Host memory into a view. ExecSpace can access + * dst */ template inline void deep_copy( - const ExecSpace&, const View& dst, + const ExecSpace& space, const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if< Kokkos::Impl::is_execution_space::value && - std::is_same::specialize, - void>::value>::type* = 0) { + std::is_same::specialize, void>::value && + Kokkos::Impl::SpaceAccessibility< + ExecSpace, + typename ViewTraits::memory_space>::accessible>::type* = + nullptr) { typedef ViewTraits dst_traits; - typedef typename dst_traits::memory_space dst_memory_space; static_assert(std::is_same::value, "deep_copy requires non-const type"); #if defined(KOKKOS_ENABLE_PROFILING) + typedef typename dst_traits::memory_space dst_memory_space; if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle(dst_memory_space().name()), dst.label(), - dst.data(), Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace().name()), + Kokkos::Profiling::SpaceHandle(dst_memory_space::name()), dst.label(), + dst.data(), Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace::name()), "(none)", &value, dst.span() * sizeof(typename dst_traits::value_type)); } #endif - ExecSpace().fence(); - typedef - typename View::uniform_runtime_nomemspace_type ViewTypeUniform; - Kokkos::Impl::ViewFill(dst, value); - ExecSpace().fence(); + if (dst.data() == nullptr) { + space.fence(); + } else { + using ViewTypeUniform = typename std::conditional< + View::Rank == 0, + typename View::uniform_runtime_type, + typename View::uniform_runtime_nomemspace_type>::type; + Kokkos::Impl::ViewFill(dst, value, space); + } +#if defined(KOKKOS_ENABLE_PROFILING) + if (Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::endDeepCopy(); + } +#endif +} + +/** \brief Deep copy a value from Host memory into a view. ExecSpace can not + * access dst */ +template +inline void deep_copy( + const ExecSpace& space, const View& dst, + typename ViewTraits::const_value_type& value, + typename std::enable_if< + Kokkos::Impl::is_execution_space::value && + std::is_same::specialize, void>::value && + !Kokkos::Impl::SpaceAccessibility< + ExecSpace, + typename ViewTraits::memory_space>::accessible>::type* = + nullptr) { + typedef ViewTraits dst_traits; + static_assert(std::is_same::value, + "deep_copy requires non-const type"); +#if defined(KOKKOS_ENABLE_PROFILING) + typedef typename dst_traits::memory_space dst_memory_space; + if (Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::beginDeepCopy( + Kokkos::Profiling::SpaceHandle(dst_memory_space::name()), dst.label(), + dst.data(), Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace::name()), + "(none)", &value, dst.span() * sizeof(typename dst_traits::value_type)); + } +#endif + if (dst.data() == nullptr) { + space.fence(); + } else { + space.fence(); + using ViewTypeUniform = typename std::conditional< + View::Rank == 0, + typename View::uniform_runtime_type, + typename View::uniform_runtime_nomemspace_type>::type; + using fill_exec_space = typename dst_traits::memory_space::execution_space; + Kokkos::Impl::ViewFill(dst, value, fill_exec_space()); + fill_exec_space().fence(); + } #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::endDeepCopy(); @@ -2672,13 +2805,13 @@ inline void deep_copy( #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace().name()), "(none)", - &dst, Kokkos::Profiling::SpaceHandle(src_memory_space().name()), + Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace::name()), "(none)", + &dst, Kokkos::Profiling::SpaceHandle(src_memory_space::name()), src.label(), src.data(), sizeof(ST)); } #endif - if (src.data() == NULL) { + if (src.data() == nullptr) { exec_space.fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { @@ -2721,13 +2854,13 @@ inline void deep_copy( #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle(dst_memory_space().name()), dst.label(), - dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space().name()), + Kokkos::Profiling::SpaceHandle(dst_memory_space::name()), dst.label(), + dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space::name()), src.label(), src.data(), sizeof(DT)); } #endif - if (dst.data() == NULL && src.data() == NULL) { + if (dst.data() == nullptr && src.data() == nullptr) { exec_space.fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { @@ -2737,13 +2870,11 @@ inline void deep_copy( return; } - exec_space.fence(); if (dst.data() != src.data()) { Kokkos::Impl::DeepCopy( exec_space, dst.data(), src.data(), sizeof(typename dst_traits::value_type)); } - exec_space.fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::endDeepCopy(); @@ -2764,7 +2895,7 @@ inline void deep_copy( std::is_same::specialize, void>::value && std::is_same::specialize, void>::value && (unsigned(ViewTraits::rank) != 0 || - unsigned(ViewTraits::rank) != 0))>::type* = 0) { + unsigned(ViewTraits::rank) != 0))>::type* = nullptr) { typedef View dst_type; typedef View src_type; @@ -2785,13 +2916,21 @@ inline void deep_copy( #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle(dst_memory_space().name()), dst.label(), - dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space().name()), + Kokkos::Profiling::SpaceHandle(dst_memory_space::name()), dst.label(), + dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space::name()), src.label(), src.data(), dst.span() * sizeof(dst_value_type)); } #endif - if (dst.data() == NULL || src.data() == NULL) { + dst_value_type* dst_start = dst.data(); + dst_value_type* dst_end = dst.data() + dst.span(); + src_value_type* src_start = src.data(); + src_value_type* src_end = src.data() + src.span(); + + // Early dropout if identical range + if ((dst_start == nullptr || src_start == nullptr) || + ((std::ptrdiff_t(dst_start) == std::ptrdiff_t(src_start)) && + (std::ptrdiff_t(dst_end) == std::ptrdiff_t(src_end)))) { #ifdef KOKKOS_ENABLE_DEPRECATED_CODE // do nothing #else @@ -2823,7 +2962,6 @@ inline void deep_copy( Kokkos::Impl::throw_runtime_exception(message); } #endif - exec_space.fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::endDeepCopy(); @@ -2851,11 +2989,7 @@ inline void deep_copy( dst_memory_space>::accessible }; - // Checking for Overlapping Views. - dst_value_type* dst_start = dst.data(); - dst_value_type* dst_end = dst.data() + dst.span(); - src_value_type* src_start = src.data(); - src_value_type* src_end = src.data() + src.span(); + // Error out for non-identical overlapping views. if ((((std::ptrdiff_t)dst_start < (std::ptrdiff_t)src_end) && ((std::ptrdiff_t)dst_end > (std::ptrdiff_t)src_start)) && ((dst.span_is_contiguous() && src.span_is_contiguous()))) { @@ -2881,23 +3015,27 @@ inline void deep_copy( (src.extent(4) != dst.extent(4)) || (src.extent(5) != dst.extent(5)) || (src.extent(6) != dst.extent(6)) || (src.extent(7) != dst.extent(7))) { #ifdef KOKKOS_ENABLE_DEPRECATED_CODE - exec_space.fence(); if (ExecCanAccessSrcDst) { Kokkos::Impl::ViewRemap(dst, src); + exec_space.fence(); } else if (DstExecCanAccessSrc) { // Copying data between views in accessible memory spaces and either // non-contiguous or incompatible shape. - Kokkos::Impl::ViewRemap(dst, src); + exec_space.fence(); + Kokkos::Impl::ViewRemap(dst, + src); + dst_execution_space().fence(); } else if (SrcExecCanAccessDst) { // Copying data between views in accessible memory spaces and either // non-contiguous or incompatible shape. + exec_space.fence(); Kokkos::Impl::ViewRemap(dst, src); + src_execution_space().fence(); } else { Kokkos::Impl::throw_runtime_exception( "deep_copy given views that would require a temporary allocation"); } - exec_space.fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::endDeepCopy(); @@ -2946,16 +3084,26 @@ inline void deep_copy( ((dst_type::rank < 7) || (dst.stride_6() == src.stride_6())) && ((dst_type::rank < 8) || (dst.stride_7() == src.stride_7()))) { const size_t nbytes = sizeof(typename dst_type::value_type) * dst.span(); - exec_space.fence(); if ((void*)dst.data() != (void*)src.data()) { Kokkos::Impl::DeepCopy( exec_space, dst.data(), src.data(), nbytes); } - exec_space.fence(); } else { - exec_space.fence(); - Impl::view_copy(dst, src); - exec_space.fence(); + // Copying data between views in accessible memory spaces and either + // non-contiguous or incompatible shape. + if (ExecCanAccessSrcDst) { + Impl::view_copy(exec_space, dst, src); + } else if (DstExecCanAccessSrc || SrcExecCanAccessDst) { + using cpy_exec_space = + typename std::conditional::type; + exec_space.fence(); + Impl::view_copy(cpy_exec_space(), dst, src); + cpy_exec_space().fence(); + } else { + Kokkos::Impl::throw_runtime_exception( + "deep_copy given views that would require a temporary allocation"); + } } #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { @@ -3285,7 +3433,7 @@ inline typename Kokkos::View::HostMirror create_mirror( typename std::enable_if< std::is_same::specialize, void>::value && !std::is_same::array_layout, - Kokkos::LayoutStride>::value>::type* = 0) { + Kokkos::LayoutStride>::value>::type* = nullptr) { typedef View src_type; typedef typename src_type::HostMirror dst_type; @@ -3321,7 +3469,7 @@ inline typename Kokkos::View::HostMirror create_mirror( typename std::enable_if< std::is_same::specialize, void>::value && std::is_same::array_layout, - Kokkos::LayoutStride>::value>::type* = 0) { + Kokkos::LayoutStride>::value>::type* = nullptr) { typedef View src_type; typedef typename src_type::HostMirror dst_type; @@ -3353,7 +3501,8 @@ template typename Impl::MirrorType::view_type create_mirror( const Space&, const Kokkos::View& src, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { return typename Impl::MirrorType::view_type(src.label(), src.layout()); } @@ -3367,7 +3516,7 @@ inline typename Kokkos::View::HostMirror create_mirror_view( typename Kokkos::View::HostMirror::memory_space>::value && std::is_same::data_type, typename Kokkos::View::HostMirror::data_type>:: - value)>::type* = 0) { + value)>::type* = nullptr) { return src; } @@ -3389,7 +3538,8 @@ template typename Impl::MirrorViewType::view_type create_mirror_view( const Space&, const Kokkos::View& src, typename std::enable_if< - Impl::MirrorViewType::is_same_memspace>::type* = 0) { + Impl::MirrorViewType::is_same_memspace>::type* = + nullptr) { return src; } @@ -3411,8 +3561,10 @@ create_mirror_view_and_copy( const Space&, const Kokkos::View& src, std::string const& name = "", typename std::enable_if< - Impl::MirrorViewType::is_same_memspace>::type* = 0) { + Impl::MirrorViewType::is_same_memspace>::type* = + nullptr) { (void)name; + fence(); // same behavior as deep_copy(src, src) return src; } @@ -3427,7 +3579,8 @@ create_mirror_view_and_copy( !Impl::MirrorViewType::is_same_memspace>::type* = 0) { using Mirror = typename Impl::MirrorViewType::view_type; std::string label = name.empty() ? src.label() : name; - auto mirror = Mirror(ViewAllocateWithoutInitializing(label), src.layout()); + auto mirror = typename Mirror::non_const_type{ + ViewAllocateWithoutInitializing(label), src.layout()}; deep_copy(mirror, src); return mirror; } @@ -3439,7 +3592,8 @@ typename Impl::MirrorViewType::view_type create_mirror_view( const Space&, const Kokkos::View& src, Kokkos::Impl::WithoutInitializing_t, typename std::enable_if< - Impl::MirrorViewType::is_same_memspace>::type* = 0) { + Impl::MirrorViewType::is_same_memspace>::type* = + nullptr) { return src; } diff --git a/lib/kokkos/core/src/Kokkos_Core.hpp b/lib/kokkos/core/src/Kokkos_Core.hpp index 7661efeca7..8392f0f3e5 100644 --- a/lib/kokkos/core/src/Kokkos_Core.hpp +++ b/lib/kokkos/core/src/Kokkos_Core.hpp @@ -58,13 +58,9 @@ #include #endif -//#if defined( KOKKOS_ENABLE_OPENMPTARGET ) +#if defined(KOKKOS_ENABLE_OPENMPTARGET) #include #include -//#endif - -#if defined(KOKKOS_ENABLE_QTHREADS) -#include #endif #if defined(KOKKOS_ENABLE_HPX) @@ -82,6 +78,9 @@ #if defined(KOKKOS_ENABLE_ROCM) #include #endif +#if defined(KOKKOS_ENABLE_HIP) +#include +#endif #include #include @@ -93,9 +92,7 @@ #include #include #include - #include - #include #include #include @@ -123,7 +120,15 @@ struct InitArguments { void initialize(int& narg, char* arg[]); -void initialize(const InitArguments& args = InitArguments()); +void initialize(InitArguments args = InitArguments()); + +namespace Impl { + +void pre_initialize(const InitArguments& args); + +void post_initialize(const InitArguments& args); + +} // namespace Impl bool is_initialized() noexcept; diff --git a/lib/kokkos/core/src/Kokkos_Core_fwd.hpp b/lib/kokkos/core/src/Kokkos_Core_fwd.hpp index 5b89dc51ca..4828a95775 100644 --- a/lib/kokkos/core/src/Kokkos_Core_fwd.hpp +++ b/lib/kokkos/core/src/Kokkos_Core_fwd.hpp @@ -99,10 +99,6 @@ class HBWSpace; /// Memory space for hbw_malloc from memkind (e.g. for KNL class Serial; ///< Execution space main process on CPU. #endif -#if defined(KOKKOS_ENABLE_QTHREADS) -class Qthreads; ///< Execution space with Qthreads back-end. -#endif - #if defined(KOKKOS_ENABLE_HPX) namespace Experimental { class HPX; ///< Execution space with HPX back-end. @@ -124,13 +120,6 @@ class OpenMPTargetSpace; } // namespace Experimental #endif -#if defined(KOKKOS_ENABLE_CUDA) -class CudaSpace; ///< Memory space on Cuda GPU -class CudaUVMSpace; ///< Memory space on Cuda GPU with UVM -class CudaHostPinnedSpace; ///< Memory space on Host accessible to Cuda GPU -class Cuda; ///< Execution space for Cuda GPU -#endif - #if defined(KOKKOS_ENABLE_ROCM) namespace Experimental { class ROCmSpace; ///< Memory space on ROCm GPU @@ -138,11 +127,20 @@ class ROCm; ///< Execution space for ROCm GPU } // namespace Experimental #endif +#if defined(KOKKOS_ENABLE_HIP) +namespace Experimental { +class HIPSpace; ///< Memory space on HIP GPU +class HIP; ///< Execution space for HIP GPU +} // namespace Experimental +#endif + template struct Device; } // namespace Kokkos +#include "Cuda/Kokkos_Cuda_fwd.hpp" + //---------------------------------------------------------------------------- // Set the default execution space. @@ -157,44 +155,42 @@ namespace Kokkos { typedef Cuda DefaultExecutionSpace; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMPTARGET) typedef Experimental::OpenMPTarget DefaultExecutionSpace; +#elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HIP) +typedef Experimental::HIP DefaultExecutionSpace; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM) typedef Experimental::ROCm DefaultExecutionSpace; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP) typedef OpenMP DefaultExecutionSpace; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS) typedef Threads DefaultExecutionSpace; -//#elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS ) -// typedef Qthreads DefaultExecutionSpace; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HPX) typedef Kokkos::Experimental::HPX DefaultExecutionSpace; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_SERIAL) typedef Serial DefaultExecutionSpace; #else #error \ - "At least one of the following execution spaces must be defined in order to use Kokkos: Kokkos::Cuda, Kokkos::Experimental::OpenMPTarget, Kokkos::OpenMP, Kokkos::Threads, Kokkos::Qthreads, or Kokkos::Serial." + "At least one of the following execution spaces must be defined in order to use Kokkos: Kokkos::Cuda, Kokkos::Experimental::HIP, Kokkos::Experimental::OpenMPTarget, Kokkos::OpenMP, Kokkos::Threads, Kokkos::Experimental::HPX, or Kokkos::Serial." #endif #if defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP) typedef OpenMP DefaultHostExecutionSpace; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS) typedef Threads DefaultHostExecutionSpace; -//#elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS ) -// typedef Qthreads DefaultHostExecutionSpace; +#elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HPX) +typedef Kokkos::Experimental::HPX DefaultHostExecutionSpace; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_SERIAL) typedef Serial DefaultHostExecutionSpace; #elif defined(KOKKOS_ENABLE_OPENMP) typedef OpenMP DefaultHostExecutionSpace; #elif defined(KOKKOS_ENABLE_THREADS) typedef Threads DefaultHostExecutionSpace; -//#elif defined( KOKKOS_ENABLE_QTHREADS ) -// typedef Qthreads DefaultHostExecutionSpace; #elif defined(KOKKOS_ENABLE_HPX) typedef Kokkos::Experimental::HPX DefaultHostExecutionSpace; #elif defined(KOKKOS_ENABLE_SERIAL) typedef Serial DefaultHostExecutionSpace; #else #error \ - "At least one of the following execution spaces must be defined in order to use Kokkos: Kokkos::OpenMP, Kokkos::Threads, Kokkos::Qthreads, or Kokkos::Serial." + "At least one of the following execution spaces must be defined in order to use Kokkos: Kokkos::OpenMP, Kokkos::Threads, Kokkos::Experimental::HPX, or Kokkos::Serial." #endif } // namespace Kokkos @@ -213,6 +209,8 @@ namespace Impl { typedef Kokkos::CudaSpace ActiveExecutionMemorySpace; #elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_ROCM_GPU) typedef Kokkos::HostSpace ActiveExecutionMemorySpace; +#elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HIP_GPU) +typedef Kokkos::Experimental::HIPSpace ActiveExecutionMemorySpace; #elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) typedef Kokkos::HostSpace ActiveExecutionMemorySpace; #else diff --git a/lib/kokkos/core/src/Kokkos_Crs.hpp b/lib/kokkos/core/src/Kokkos_Crs.hpp index f57863263b..3725ba2604 100644 --- a/lib/kokkos/core/src/Kokkos_Crs.hpp +++ b/lib/kokkos/core/src/Kokkos_Crs.hpp @@ -105,12 +105,12 @@ class Crs { /* * Default Constructors, operators and destructor */ - KOKKOS_FUNCTION Crs() = default; - KOKKOS_FUNCTION Crs(Crs const&) = default; - KOKKOS_FUNCTION Crs(Crs&&) = default; - KOKKOS_FUNCTION Crs& operator=(Crs const&) = default; - KOKKOS_FUNCTION Crs& operator=(Crs&&) = default; - KOKKOS_FUNCTION ~Crs() = default; + KOKKOS_DEFAULTED_FUNCTION Crs() = default; + KOKKOS_DEFAULTED_FUNCTION Crs(Crs const&) = default; + KOKKOS_DEFAULTED_FUNCTION Crs(Crs&&) = default; + KOKKOS_DEFAULTED_FUNCTION Crs& operator=(Crs const&) = default; + KOKKOS_DEFAULTED_FUNCTION Crs& operator=(Crs&&) = default; + KOKKOS_DEFAULTED_FUNCTION ~Crs() = default; /** \brief Assign to a view of the rhs array. * If the old view is the last view @@ -313,7 +313,7 @@ struct CountAndFillBase; template struct CountAndFillBase { - using data_type = typename CrsType::size_type; + using data_type = typename CrsType::data_type; using size_type = typename CrsType::size_type; using row_map_type = typename CrsType::row_map_type; using counts_type = row_map_type; @@ -343,7 +343,7 @@ struct CountAndFillBase { #if defined(KOKKOS_ENABLE_CUDA) template struct CountAndFillBase { - using data_type = typename CrsType::size_type; + using data_type = typename CrsType::data_type; using size_type = typename CrsType::size_type; using row_map_type = typename CrsType::row_map_type; using counts_type = row_map_type; diff --git a/lib/kokkos/core/src/Kokkos_Cuda.hpp b/lib/kokkos/core/src/Kokkos_Cuda.hpp index ad62ecf383..ed51e95778 100644 --- a/lib/kokkos/core/src/Kokkos_Cuda.hpp +++ b/lib/kokkos/core/src/Kokkos_Cuda.hpp @@ -199,8 +199,7 @@ class Cuda { //-------------------------------------------------- //! \name Cuda space instances - KOKKOS_INLINE_FUNCTION - ~Cuda() {} + ~Cuda() = default; Cuda(); @@ -258,6 +257,7 @@ class Cuda { cudaStream_t cuda_stream() const; int cuda_device() const; + const cudaDeviceProp& cuda_device_prop() const; //@} //-------------------------------------------------------------------------- @@ -267,11 +267,21 @@ class Cuda { inline Impl::CudaInternal* impl_internal_space_instance() const { return m_space_instance; } + uint32_t impl_instance_id() const noexcept { return 0; } private: Impl::CudaInternal* m_space_instance; }; +namespace Profiling { +namespace Experimental { +template <> +struct DeviceTypeTraits { + /// \brief An ID to differentiate (for example) Serial from OpenMP in Tooling + static constexpr DeviceType id = DeviceType::Cuda; +}; +} // namespace Experimental +} // namespace Profiling } // namespace Kokkos /*--------------------------------------------------------------------------*/ diff --git a/lib/kokkos/core/src/Kokkos_CudaSpace.hpp b/lib/kokkos/core/src/Kokkos_CudaSpace.hpp index 34db47f1c0..53e3b77786 100644 --- a/lib/kokkos/core/src/Kokkos_CudaSpace.hpp +++ b/lib/kokkos/core/src/Kokkos_CudaSpace.hpp @@ -166,7 +166,7 @@ class CudaUVMSpace { /*--------------------------------*/ /** \brief CudaUVMSpace specific routine */ - static int number_of_allocations(); + KOKKOS_DEPRECATED static int number_of_allocations(); /*--------------------------------*/ @@ -401,6 +401,126 @@ struct DeepCopy { DeepCopy(const Cuda&, void* dst, const void* src, size_t); }; +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + template struct DeepCopy { inline DeepCopy(void* dst, const void* src, size_t n) { @@ -640,8 +760,8 @@ struct VerifyExecutionCanAccessMemorySpace struct VerifyExecutionCanAccessMemorySpace< - typename enable_if::value, - Kokkos::CudaSpace>::type, + typename std::enable_if::value, + Kokkos::CudaSpace>::type, OtherSpace> { enum { value = false }; KOKKOS_INLINE_FUNCTION static void verify(void) { diff --git a/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp b/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp index bf3a134b64..11910138d3 100644 --- a/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp +++ b/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp @@ -193,6 +193,7 @@ class RangePolicy : public Impl::PolicyTraits { inline void set(const ChunkSize& chunksize, Args... args) { m_granularity = chunksize.value; m_granularity_mask = m_granularity - 1; + set(args...); } public: @@ -210,8 +211,8 @@ class RangePolicy : public Impl::PolicyTraits { private: /** \brief finalize chunk_size if it was set to AUTO*/ inline void set_auto_chunk_size() { - typename traits::index_type concurrency = - traits::execution_space::concurrency(); + int64_t concurrency = + static_cast(traits::execution_space::concurrency()); if (concurrency == 0) concurrency = 1; if (m_granularity > 0) { @@ -219,12 +220,14 @@ class RangePolicy : public Impl::PolicyTraits { Kokkos::abort("RangePolicy blocking granularity must be power of two"); } - member_type new_chunk_size = 1; - while (new_chunk_size * 100 * concurrency < m_end - m_begin) + int64_t new_chunk_size = 1; + while (new_chunk_size * 100 * concurrency < + static_cast(m_end - m_begin)) new_chunk_size *= 2; if (new_chunk_size < 128) { new_chunk_size = 1; - while ((new_chunk_size * 40 * concurrency < m_end - m_begin) && + while ((new_chunk_size * 40 * concurrency < + static_cast(m_end - m_begin)) && (new_chunk_size < 128)) new_chunk_size *= 2; } @@ -483,7 +486,6 @@ struct ScratchRequest { level = level_; per_team = 0; per_thread = thread_value.value; - ; } inline ScratchRequest(const int& level_, const Impl::PerTeamValue& team_value, @@ -491,7 +493,6 @@ struct ScratchRequest { level = level_; per_team = team_value.value; per_thread = thread_value.value; - ; } inline ScratchRequest(const int& level_, @@ -500,7 +501,6 @@ struct ScratchRequest { level = level_; per_team = team_value.value; per_thread = thread_value.value; - ; } }; diff --git a/lib/kokkos/core/src/Kokkos_Extents.hpp b/lib/kokkos/core/src/Kokkos_Extents.hpp index 2e07e8b76b..856adf9cf9 100644 --- a/lib/kokkos/core/src/Kokkos_Extents.hpp +++ b/lib/kokkos/core/src/Kokkos_Extents.hpp @@ -97,36 +97,39 @@ struct _parse_impl { // backwards template struct _parse_impl< - T*, Experimental::Extents, + T*, Kokkos::Experimental::Extents, typename std::enable_if<_all_remaining_extents_dynamic::value>::type> - : _parse_impl> {}; + : _parse_impl> { +}; // int*(*[x])[y] should still work also (meaning int[][x][][y]) template -struct _parse_impl, - typename std::enable_if< - not _all_remaining_extents_dynamic::value>::type> { +struct _parse_impl< + T*, Kokkos::Experimental::Extents, + typename std::enable_if::value>::type> { using _next = Kokkos::Experimental::AppendExtent< - typename _parse_impl, void>::type, - Experimental::dynamic_extent>; + typename _parse_impl, + void>::type, + Kokkos::Experimental::dynamic_extent>; using type = typename _next::type; }; template -struct _parse_impl, void> - : _parse_impl, void> + : _parse_impl< + T, Kokkos::Experimental::Extents // TODO @pedantic this // could be a // narrowing cast - > {}; + > {}; } // end namespace _parse_view_extents_impl template struct ParseViewExtents { using type = typename _parse_view_extents_impl ::_parse_impl< - DataType, Experimental::Extents<>>::type; + DataType, Kokkos::Experimental::Extents<>>::type; }; template @@ -135,7 +138,7 @@ struct ApplyExtent { }; template -struct ApplyExtent { +struct ApplyExtent { using type = ValueType*; }; @@ -150,15 +153,17 @@ struct ApplyExtent { }; template -struct ApplyExtent { +struct ApplyExtent { using type = - typename ApplyExtent::type*; + typename ApplyExtent::type*; }; template -struct ApplyExtent { +struct ApplyExtent { using type = - typename ApplyExtent::type[N]; + typename ApplyExtent::type[N]; }; } // end namespace Impl diff --git a/lib/kokkos/core/src/Kokkos_Future.hpp b/lib/kokkos/core/src/Kokkos_Future.hpp index 15a5d39aad..1995e2609a 100644 --- a/lib/kokkos/core/src/Kokkos_Future.hpp +++ b/lib/kokkos/core/src/Kokkos_Future.hpp @@ -296,7 +296,8 @@ class BasicFuture { task_base* m_task; - KOKKOS_INLINE_FUNCTION explicit BasicFuture(task_base* task) : m_task(0) { + KOKKOS_INLINE_FUNCTION explicit BasicFuture(task_base* task) + : m_task(nullptr) { if (task) queue_type::assign(&m_task, task); } @@ -306,7 +307,7 @@ class BasicFuture { //---------------------------------------- KOKKOS_INLINE_FUNCTION - bool is_null() const { return 0 == m_task; } + bool is_null() const { return nullptr == m_task; } KOKKOS_INLINE_FUNCTION int reference_count() const { @@ -317,7 +318,7 @@ class BasicFuture { KOKKOS_INLINE_FUNCTION void clear() { - if (m_task) queue_type::assign(&m_task, (task_base*)0); + if (m_task) queue_type::assign(&m_task, nullptr); } //---------------------------------------- @@ -332,11 +333,11 @@ class BasicFuture { KOKKOS_INLINE_FUNCTION BasicFuture(BasicFuture&& rhs) noexcept : m_task(rhs.m_task) { - rhs.m_task = 0; + rhs.m_task = nullptr; } KOKKOS_INLINE_FUNCTION - BasicFuture(const BasicFuture& rhs) : m_task(0) { + BasicFuture(const BasicFuture& rhs) : m_task(nullptr) { if (rhs.m_task) queue_type::assign(&m_task, rhs.m_task); } @@ -344,7 +345,7 @@ class BasicFuture { BasicFuture& operator=(BasicFuture&& rhs) noexcept { clear(); m_task = rhs.m_task; - rhs.m_task = 0; + rhs.m_task = nullptr; return *this; } @@ -420,13 +421,13 @@ class BasicFuture { KOKKOS_INLINE_FUNCTION int is_ready() const noexcept { - return (0 == m_task) || + return (nullptr == m_task) || (((task_base*)task_base::LockTag) == m_task->m_wait); } KOKKOS_INLINE_FUNCTION const typename Impl::TaskResult::reference_type get() const { - if (0 == m_task) { + if (nullptr == m_task) { Kokkos::abort("Kokkos:::Future::get ERROR: is_null()"); } return Impl::TaskResult::get(m_task); diff --git a/lib/kokkos/core/src/Kokkos_HBWSpace.hpp b/lib/kokkos/core/src/Kokkos_HBWSpace.hpp index c1f03f8962..ce36b018cf 100644 --- a/lib/kokkos/core/src/Kokkos_HBWSpace.hpp +++ b/lib/kokkos/core/src/Kokkos_HBWSpace.hpp @@ -110,19 +110,15 @@ class HBWSpace { typedef Kokkos::OpenMP execution_space; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS) typedef Kokkos::Threads execution_space; -//#elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS ) -// typedef Kokkos::Qthreads execution_space; #elif defined(KOKKOS_ENABLE_OPENMP) typedef Kokkos::OpenMP execution_space; #elif defined(KOKKOS_ENABLE_THREADS) typedef Kokkos::Threads execution_space; -//#elif defined( KOKKOS_ENABLE_QTHREADS ) -// typedef Kokkos::Qthreads execution_space; #elif defined(KOKKOS_ENABLE_SERIAL) typedef Kokkos::Serial execution_space; #else #error \ - "At least one of the following host execution spaces must be defined: Kokkos::OpenMP, Kokkos::Threads, Kokkos::Qhreads, or Kokkos::Serial. You might be seeing this message if you disabled the Kokkos::Serial device explicitly using the Kokkos_ENABLE_Serial:BOOL=OFF CMake option, but did not enable any of the other host execution space devices." + "At least one of the following host execution spaces must be defined: Kokkos::OpenMP, Kokkos::Threads, or Kokkos::Serial. You might be seeing this message if you disabled the Kokkos::Serial device explicitly using the Kokkos_ENABLE_Serial:BOOL=OFF CMake option, but did not enable any of the other host execution space devices." #endif //! This memory space preferred device_type @@ -192,7 +188,12 @@ class SharedAllocationRecord const Kokkos::Experimental::HBWSpace m_space; protected: - ~SharedAllocationRecord(); + ~SharedAllocationRecord() +#if defined( \ + KOKKOS_IMPL_INTEL_WORKAROUND_NOEXCEPT_SPECIFICATION_VIRTUAL_FUNCTION) + noexcept +#endif + ; SharedAllocationRecord() = default; SharedAllocationRecord( diff --git a/lib/kokkos/core/src/Kokkos_HIP.hpp b/lib/kokkos/core/src/Kokkos_HIP.hpp new file mode 100644 index 0000000000..4e9325c2d2 --- /dev/null +++ b/lib/kokkos/core/src/Kokkos_HIP.hpp @@ -0,0 +1,65 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HIP_HPP +#define KOKKOS_HIP_HPP + +#include + +#if defined(KOKKOS_ENABLE_HIP) + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#include +#include +#include + +#include +#include +#include +#include + +#endif +#endif diff --git a/lib/kokkos/core/src/Kokkos_HIP_Space.hpp b/lib/kokkos/core/src/Kokkos_HIP_Space.hpp new file mode 100644 index 0000000000..90bdb7b913 --- /dev/null +++ b/lib/kokkos/core/src/Kokkos_HIP_Space.hpp @@ -0,0 +1,758 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HIPSPACE_HPP +#define KOKKOS_HIPSPACE_HPP + +#include + +#if defined(KOKKOS_ENABLE_HIP) + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Experimental { +/** \brief HIP on-device memory management */ + +class HIPSpace { + public: + //! Tag this class as a kokkos memory space + using memory_space = HIPSpace; + using execution_space = Kokkos::Experimental::HIP; + using device_type = Kokkos::Device; + + using size_type = unsigned int; + + /*--------------------------------*/ + + HIPSpace(); + HIPSpace(HIPSpace&& rhs) = default; + HIPSpace(const HIPSpace& rhs) = default; + HIPSpace& operator=(HIPSpace&& rhs) = default; + HIPSpace& operator=(const HIPSpace& rhs) = default; + ~HIPSpace() = default; + + /**\brief Allocate untracked memory in the hip space */ + void* allocate(const size_t arg_alloc_size) const; + + /**\brief Deallocate untracked memory in the hip space */ + void deallocate(void* const arg_alloc_ptr, const size_t arg_alloc_size) const; + + /**\brief Return Name of the MemorySpace */ + static constexpr const char* name() { return "HIP"; } + + /*--------------------------------*/ + /** \brief Error reporting for HostSpace attempt to access HIPSpace */ + static void access_error(); + static void access_error(const void* const); + + private: + int m_device; ///< Which HIP device + + friend class Kokkos::Impl::SharedAllocationRecord< + Kokkos::Experimental::HIPSpace, void>; +}; + +} // namespace Experimental + +namespace Impl { + +/// \brief Initialize lock array for arbitrary size atomics. +/// +/// Arbitrary atomics are implemented using a hash table of locks +/// where the hash value is derived from the address of the +/// object for which an atomic operation is performed. +/// This function initializes the locks to zero (unset). +void init_lock_arrays_hip_space(); + +/// \brief Retrieve the pointer to the lock array for arbitrary size atomics. +/// +/// Arbitrary atomics are implemented using a hash table of locks +/// where the hash value is derived from the address of the +/// object for which an atomic operation is performed. +/// This function retrieves the lock array pointer. +/// If the array is not yet allocated it will do so. +int* atomic_lock_array_hip_space_ptr(bool deallocate = false); + +/// \brief Retrieve the pointer to the scratch array for team and thread private +/// global memory. +/// +/// Team and Thread private scratch allocations in +/// global memory are acquired via locks. +/// This function retrieves the lock array pointer. +/// If the array is not yet allocated it will do so. +int* scratch_lock_array_hip_space_ptr(bool deallocate = false); + +/// \brief Retrieve the pointer to the scratch array for unique identifiers. +/// +/// Unique identifiers in the range 0-HIP::concurrency +/// are provided via locks. +/// This function retrieves the lock array pointer. +/// If the array is not yet allocated it will do so. +int* threadid_lock_array_hip_space_ptr(bool deallocate = false); +} // namespace Impl +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Experimental { +/** \brief Host memory that is accessible to HIP execution space + * through HIP's host-pinned memory allocation. + */ +class HIPHostPinnedSpace { + public: + //! Tag this class as a kokkos memory space + /** \brief Memory is in HostSpace so use the HostSpace::execution_space */ + using execution_space = HostSpace::execution_space; + using memory_space = HIPHostPinnedSpace; + using device_type = Kokkos::Device; + using size_type = unsigned int; + + /*--------------------------------*/ + + HIPHostPinnedSpace(); + HIPHostPinnedSpace(HIPHostPinnedSpace&& rhs) = default; + HIPHostPinnedSpace(const HIPHostPinnedSpace& rhs) = default; + HIPHostPinnedSpace& operator=(HIPHostPinnedSpace&& rhs) = default; + HIPHostPinnedSpace& operator=(const HIPHostPinnedSpace& rhs) = default; + ~HIPHostPinnedSpace() = default; + + /**\brief Allocate untracked memory in the space */ + void* allocate(const size_t arg_alloc_size) const; + + /**\brief Deallocate untracked memory in the space */ + void deallocate(void* const arg_alloc_ptr, const size_t arg_alloc_size) const; + + /**\brief Return Name of the MemorySpace */ + static constexpr const char* name() { return "HIPHostPinned"; } + + /*--------------------------------*/ +}; +} // namespace Experimental +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Impl { + +static_assert( + Kokkos::Impl::MemorySpaceAccess::assignable, + ""); + +//---------------------------------------- + +template <> +struct MemorySpaceAccess { + enum { assignable = false }; + enum { accessible = false }; + enum { deepcopy = true }; +}; + +template <> +struct MemorySpaceAccess { + // HostSpace::execution_space == HIPHostPinnedSpace::execution_space + enum { assignable = true }; + enum { accessible = true }; + enum { deepcopy = true }; +}; + +//---------------------------------------- + +template <> +struct MemorySpaceAccess { + enum { assignable = false }; + enum { accessible = false }; + enum { deepcopy = true }; +}; + +template <> +struct MemorySpaceAccess { + // HIPSpace::execution_space != HIPHostPinnedSpace::execution_space + enum { assignable = false }; + enum { accessible = true }; // HIPSpace::execution_space + enum { deepcopy = true }; +}; + +//---------------------------------------- +// HIPHostPinnedSpace::execution_space == HostSpace::execution_space +// HIPHostPinnedSpace accessible to both HIP and Host + +template <> +struct MemorySpaceAccess { + enum { assignable = false }; // Cannot access from HIP + enum { accessible = true }; // HIPHostPinnedSpace::execution_space + enum { deepcopy = true }; +}; + +template <> +struct MemorySpaceAccess { + enum { assignable = false }; // Cannot access from Host + enum { accessible = false }; + enum { deepcopy = true }; +}; + +}; // namespace Impl +//---------------------------------------- + +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Impl { + +void DeepCopyAsyncHIP(void* dst, const void* src, size_t n); + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t); + DeepCopy(const Kokkos::Experimental::HIP&, void* dst, const void* src, + size_t); +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t); + DeepCopy(const Kokkos::Experimental::HIP&, void* dst, const void* src, + size_t); +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t); + DeepCopy(const Kokkos::Experimental::HIP&, void* dst, const void* src, + size_t); +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy( + dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t); + DeepCopy(const Kokkos::Experimental::HIP&, void* dst, const void* src, + size_t); +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t); + DeepCopy(const Kokkos::Experimental::HIP&, void* dst, const void* src, + size_t); +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t); + DeepCopy(const Kokkos::Experimental::HIP&, void* dst, const void* src, + size_t); +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +/** Running in HIPSpace attempting to access HostSpace: error */ +template <> +struct VerifyExecutionCanAccessMemorySpace { + enum { value = false }; + KOKKOS_INLINE_FUNCTION static void verify(void) { + Kokkos::abort("HIP code attempted to access HostSpace memory"); + } + + KOKKOS_INLINE_FUNCTION static void verify(const void*) { + Kokkos::abort("HIP code attempted to access HostSpace memory"); + } +}; + +/** Running in HIPSpace accessing HIPHostPinnedSpace: ok */ +template <> +struct VerifyExecutionCanAccessMemorySpace< + Kokkos::Experimental::HIPSpace, Kokkos::Experimental::HIPHostPinnedSpace> { + enum { value = true }; + KOKKOS_INLINE_FUNCTION static void verify(void) {} + KOKKOS_INLINE_FUNCTION static void verify(const void*) {} +}; + +/** Running in HIPSpace attempting to access an unknown space: error */ +template +struct VerifyExecutionCanAccessMemorySpace< + typename std::enable_if< + !std::is_same::value, + Kokkos::Experimental::HIPSpace>::type, + OtherSpace> { + enum { value = false }; + KOKKOS_INLINE_FUNCTION static void verify(void) { + Kokkos::abort("HIP code attempted to access unknown Space memory"); + } + + KOKKOS_INLINE_FUNCTION static void verify(const void*) { + Kokkos::abort("HIP code attempted to access unknown Space memory"); + } +}; + +//---------------------------------------------------------------------------- +/** Running in HostSpace attempting to access HIPSpace */ +template <> +struct VerifyExecutionCanAccessMemorySpace { + enum { value = false }; + inline static void verify(void) { + Kokkos::Experimental::HIPSpace::access_error(); + } + inline static void verify(const void* p) { + Kokkos::Experimental::HIPSpace::access_error(p); + } +}; + +/** Running in HostSpace accessing HIPHostPinnedSpace is OK */ +template <> +struct VerifyExecutionCanAccessMemorySpace< + Kokkos::HostSpace, Kokkos::Experimental::HIPHostPinnedSpace> { + enum { value = true }; + KOKKOS_INLINE_FUNCTION static void verify(void) {} + KOKKOS_INLINE_FUNCTION static void verify(const void*) {} +}; +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template <> +class SharedAllocationRecord + : public SharedAllocationRecord { + private: + typedef SharedAllocationRecord RecordBase; + + SharedAllocationRecord(const SharedAllocationRecord&) = delete; + SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; + + static void deallocate(RecordBase*); + +#ifdef KOKKOS_DEBUG + static RecordBase s_root_record; +#endif + + const Kokkos::Experimental::HIPSpace m_space; + + protected: + ~SharedAllocationRecord(); + + SharedAllocationRecord( + const Kokkos::Experimental::HIPSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size, + const RecordBase::function_type arg_dealloc = &deallocate); + + public: + std::string get_label() const; + + static SharedAllocationRecord* allocate( + const Kokkos::Experimental::HIPSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size); + + /**\brief Allocate tracked memory in the space */ + static void* allocate_tracked(const Kokkos::Experimental::HIPSpace& arg_space, + const std::string& arg_label, + const size_t arg_alloc_size); + + /**\brief Reallocate tracked memory in the space */ + static void* reallocate_tracked(void* const arg_alloc_ptr, + const size_t arg_alloc_size); + + /**\brief Deallocate tracked memory in the space */ + static void deallocate_tracked(void* const arg_alloc_ptr); + + static SharedAllocationRecord* get_record(void* arg_alloc_ptr); + + static void print_records(std::ostream&, + const Kokkos::Experimental::HIPSpace&, + bool detail = false); +}; + +template <> +class SharedAllocationRecord + : public SharedAllocationRecord { + private: + typedef SharedAllocationRecord RecordBase; + + SharedAllocationRecord(const SharedAllocationRecord&) = delete; + SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; + + static void deallocate(RecordBase*); + +#ifdef KOKKOS_DEBUG + static RecordBase s_root_record; +#endif + + const Kokkos::Experimental::HIPHostPinnedSpace m_space; + + protected: + ~SharedAllocationRecord(); + SharedAllocationRecord() : RecordBase(), m_space() {} + + SharedAllocationRecord( + const Kokkos::Experimental::HIPHostPinnedSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size, + const RecordBase::function_type arg_dealloc = &deallocate); + + public: + std::string get_label() const; + + static SharedAllocationRecord* allocate( + const Kokkos::Experimental::HIPHostPinnedSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size); + /**\brief Allocate tracked memory in the space */ + static void* allocate_tracked( + const Kokkos::Experimental::HIPHostPinnedSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size); + + /**\brief Reallocate tracked memory in the space */ + static void* reallocate_tracked(void* const arg_alloc_ptr, + const size_t arg_alloc_size); + + /**\brief Deallocate tracked memory in the space */ + static void deallocate_tracked(void* const arg_alloc_ptr); + + static SharedAllocationRecord* get_record(void* arg_alloc_ptr); + + static void print_records(std::ostream&, + const Kokkos::Experimental::HIPHostPinnedSpace&, + bool detail = false); +}; +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Experimental { +namespace Impl { +class HIPInternal; +} +/// \class HIP +/// \brief Kokkos device for multicore processors in the host memory space. +class HIP { + public: + //------------------------------------ + //! \name Type declarations that all Kokkos devices must provide. + //@{ + + //! Tag this class as a kokkos execution space + using execution_space = HIP; + using memory_space = HIPSpace; + using device_type = Kokkos::Device; + + using array_layout = LayoutLeft; + using size_type = HIPSpace::size_type; + + using scratch_memory_space = ScratchMemorySpace; + + ~HIP() = default; + HIP(); + // explicit HIP( const int instance_id ); + + HIP(HIP&&) = default; + HIP(const HIP&) = default; + HIP& operator=(HIP&&) = default; + HIP& operator=(const HIP&) = default; + + //@} + //------------------------------------ + //! \name Functions that all Kokkos devices must implement. + //@{ + + KOKKOS_INLINE_FUNCTION static int in_parallel() { +#if defined(__HIP_ARCH__) + return true; +#else + return false; +#endif + } + + /** \brief Wait until all dispatched functors complete. A noop for OpenMP. */ + static void impl_static_fence(); + void fence() const; + + /// \brief Print configuration information to the given output stream. + static void print_configuration(std::ostream&, const bool detail = false); + + /// \brief Free any resources being consumed by the device. + static void impl_finalize(); + + /** \brief Initialize the device. + * + */ + struct SelectDevice { + int hip_device_id; + SelectDevice() : hip_device_id(0) {} + explicit SelectDevice(int id) : hip_device_id(id) {} + }; + + int hip_device() const; + + static void impl_initialize(const SelectDevice = SelectDevice()); + + static int impl_is_initialized(); + + // static size_type device_arch(); + + // static size_type detect_device_count(); + + static int concurrency(); + static const char* name(); + + inline Impl::HIPInternal* impl_internal_space_instance() const { + return m_space_instance; + } + + uint32_t impl_instance_id() const noexcept { return 0; } + + private: + Impl::HIPInternal* m_space_instance; +}; +} // namespace Experimental +namespace Profiling { +namespace Experimental { +template <> +struct DeviceTypeTraits { + static constexpr DeviceType id = DeviceType::HIP; +}; +} // namespace Experimental +} // namespace Profiling +} // namespace Kokkos + +namespace Kokkos { +namespace Impl { + +template <> +struct MemorySpaceAccess { + enum { assignable = false }; + enum { accessible = true }; + enum { deepcopy = false }; +}; + +template <> +struct VerifyExecutionCanAccessMemorySpace< + Kokkos::Experimental::HIP::memory_space, + Kokkos::Experimental::HIP::scratch_memory_space> { + enum { value = true }; + KOKKOS_INLINE_FUNCTION static void verify(void) {} + KOKKOS_INLINE_FUNCTION static void verify(const void*) {} +}; + +template <> +struct VerifyExecutionCanAccessMemorySpace< + Kokkos::HostSpace, Kokkos::Experimental::HIP::scratch_memory_space> { + enum { value = false }; + inline static void verify(void) { + Kokkos::Experimental::HIPSpace::access_error(); + } + inline static void verify(const void* p) { + Kokkos::Experimental::HIPSpace::access_error(p); + } +}; + +} // namespace Impl +} // namespace Kokkos + +#endif /* #if defined( KOKKOS_ENABLE_HIP ) */ +#endif /* #define KOKKOS_HIPSPACE_HPP */ diff --git a/lib/kokkos/core/src/Kokkos_HPX.hpp b/lib/kokkos/core/src/Kokkos_HPX.hpp index 46101c824f..10354635c5 100644 --- a/lib/kokkos/core/src/Kokkos_HPX.hpp +++ b/lib/kokkos/core/src/Kokkos_HPX.hpp @@ -83,6 +83,7 @@ #include #include #include +#include #include #include @@ -194,6 +195,7 @@ class HPX { const bool /* verbose */ = false) { std::cout << "HPX backend" << std::endl; } + uint32_t impl_instance_id() const noexcept { return 0; } static bool in_parallel(HPX const & = HPX()) noexcept { return false; } static void impl_static_fence(HPX const & = HPX()) @@ -228,8 +230,8 @@ class HPX { } template - static void partition_master(F const &f, int requested_num_partitions = 0, - int requested_partition_size = 0) { + static void partition_master(F const &, int requested_num_partitions = 0, + int = 0) { if (requested_num_partitions > 1) { Kokkos::abort( "Kokkos::Experimental::HPX::partition_master: can't partition an " @@ -297,6 +299,15 @@ class HPX { }; } // namespace Experimental +namespace Profiling { +namespace Experimental { +template <> +struct DeviceTypeTraits { + constexpr static DeviceType id = DeviceType::HPX; +}; +} // namespace Experimental +} // namespace Profiling + namespace Impl { template inline void dispatch_execute_task(Closure *closure) { @@ -462,7 +473,7 @@ struct HPXTeamMember { template KOKKOS_INLINE_FUNCTION typename std::enable_if::value>::type - team_reduce(const ReducerType &reducer) const {} + team_reduce(const ReducerType &) const {} template KOKKOS_INLINE_FUNCTION Type @@ -590,6 +601,11 @@ class TeamPolicyInternal template friend class TeamPolicyInternal; + const typename traits::execution_space &space() const { + static typename traits::execution_space m_space; + return m_space; + } + template TeamPolicyInternal(const TeamPolicyInternal &p) { @@ -612,8 +628,7 @@ class TeamPolicyInternal } TeamPolicyInternal(const typename traits::execution_space &, - int league_size_request, - const Kokkos::AUTO_t &team_size_request, + int league_size_request, const Kokkos::AUTO_t &, int /* vector_length_request */ = 1) : m_team_scratch_size{0, 0}, m_thread_scratch_size{0, 0}, @@ -629,8 +644,7 @@ class TeamPolicyInternal init(league_size_request, team_size_request); } - TeamPolicyInternal(int league_size_request, - const Kokkos::AUTO_t &team_size_request, + TeamPolicyInternal(int league_size_request, const Kokkos::AUTO_t &, int /* vector_length_request */ = 1) : m_team_scratch_size{0, 0}, m_thread_scratch_size{0, 0}, @@ -1169,7 +1183,7 @@ class ParallelReduce, ReducerType, const ViewType &arg_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void *>::type = NULL) + void *>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), @@ -1359,7 +1373,7 @@ class ParallelReduce, ReducerType, const ViewType &arg_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void *>::type = NULL) + void *>::type = nullptr) : m_functor(arg_functor), m_mdr_policy(arg_policy), m_policy(Policy(0, m_mdr_policy.m_num_tiles).set_chunk_size(1)), @@ -1990,7 +2004,7 @@ class ParallelReduce, const ViewType &arg_result, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void *>::type = NULL) + void *>::type = nullptr) : m_functor(arg_functor), m_league(arg_policy.league_size()), m_policy(arg_policy), @@ -2241,28 +2255,28 @@ KOKKOS_INLINE_FUNCTION void parallel_scan( template KOKKOS_INLINE_FUNCTION void single( - const Impl::VectorSingleStruct &single_struct, + const Impl::VectorSingleStruct &, const FunctorType &lambda) { lambda(); } template KOKKOS_INLINE_FUNCTION void single( - const Impl::ThreadSingleStruct &single_struct, + const Impl::ThreadSingleStruct &, const FunctorType &lambda) { lambda(); } template KOKKOS_INLINE_FUNCTION void single( - const Impl::VectorSingleStruct &single_struct, + const Impl::VectorSingleStruct &, const FunctorType &lambda, ValueType &val) { lambda(val); } template KOKKOS_INLINE_FUNCTION void single( - const Impl::ThreadSingleStruct &single_struct, + const Impl::ThreadSingleStruct &, const FunctorType &lambda, ValueType &val) { lambda(val); } diff --git a/lib/kokkos/core/src/Kokkos_HostSpace.hpp b/lib/kokkos/core/src/Kokkos_HostSpace.hpp index c1b842c1c4..5bc50c7ff0 100644 --- a/lib/kokkos/core/src/Kokkos_HostSpace.hpp +++ b/lib/kokkos/core/src/Kokkos_HostSpace.hpp @@ -118,21 +118,17 @@ class HostSpace { typedef Kokkos::Threads execution_space; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HPX) typedef Kokkos::Experimental::HPX execution_space; -//#elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS ) -// typedef Kokkos::Qthreads execution_space; #elif defined(KOKKOS_ENABLE_OPENMP) typedef Kokkos::OpenMP execution_space; #elif defined(KOKKOS_ENABLE_THREADS) typedef Kokkos::Threads execution_space; -//#elif defined( KOKKOS_ENABLE_QTHREADS ) -// typedef Kokkos::Qthreads execution_space; #elif defined(KOKKOS_ENABLE_HPX) typedef Kokkos::Experimental::HPX execution_space; #elif defined(KOKKOS_ENABLE_SERIAL) typedef Kokkos::Serial execution_space; #else #error \ - "At least one of the following host execution spaces must be defined: Kokkos::OpenMP, Kokkos::Threads, Kokkos::Qthreads, or Kokkos::Serial. You might be seeing this message if you disabled the Kokkos::Serial device explicitly using the Kokkos_ENABLE_Serial:BOOL=OFF CMake option, but did not enable any of the other host execution space devices." + "At least one of the following host execution spaces must be defined: Kokkos::OpenMP, Kokkos::Threads, or Kokkos::Serial. You might be seeing this message if you disabled the Kokkos::Serial device explicitly using the Kokkos_ENABLE_Serial:BOOL=OFF CMake option, but did not enable any of the other host execution space devices." #endif //! This memory space preferred device_type @@ -248,7 +244,12 @@ class SharedAllocationRecord const Kokkos::HostSpace m_space; protected: - ~SharedAllocationRecord(); + ~SharedAllocationRecord() +#if defined( \ + KOKKOS_IMPL_INTEL_WORKAROUND_NOEXCEPT_SPECIFICATION_VIRTUAL_FUNCTION) + noexcept +#endif + ; SharedAllocationRecord() = default; SharedAllocationRecord( @@ -267,6 +268,9 @@ class SharedAllocationRecord #if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) return new SharedAllocationRecord(arg_space, arg_label, arg_alloc_size); #else + (void)arg_space; + (void)arg_label; + (void)arg_alloc_size; return (SharedAllocationRecord*)0; #endif } diff --git a/lib/kokkos/core/src/Kokkos_Macros.hpp b/lib/kokkos/core/src/Kokkos_Macros.hpp index 5649d12e97..00a07bdcf9 100644 --- a/lib/kokkos/core/src/Kokkos_Macros.hpp +++ b/lib/kokkos/core/src/Kokkos_Macros.hpp @@ -50,7 +50,6 @@ * * KOKKOS_ENABLE_CUDA Kokkos::Cuda execution and memory spaces * KOKKOS_ENABLE_THREADS Kokkos::Threads execution space - * KOKKOS_ENABLE_QTHREADS Kokkos::Qthreads execution space * KOKKOS_ENABLE_HPX Kokkos::Experimental::HPX execution space * KOKKOS_ENABLE_OPENMP Kokkos::OpenMP execution space * KOKKOS_ENABLE_OPENMPTARGET Kokkos::Experimental::OpenMPTarget @@ -80,6 +79,7 @@ * KOKKOS_COMPILER_APPLECC * KOKKOS_COMPILER_CLANG * KOKKOS_COMPILER_PGI + * KOKKOS_COMPILER_MSVC * * Macros for which compiler extension to use for atomics on intrinsice types * @@ -99,17 +99,17 @@ //---------------------------------------------------------------------------- -#if defined(KOKKOS_ENABLE_SERIAL) || defined(KOKKOS_ENABLE_THREADS) || \ - defined(KOKKOS_ENABLE_OPENMP) || defined(KOKKOS_ENABLE_QTHREADS) || \ - defined(KOKKOS_ENABLE_HPX) || defined(KOKKOS_ENABLE_ROCM) || \ - defined(KOKKOS_ENABLE_OPENMPTARGET) +#if defined(KOKKOS_ENABLE_SERIAL) || defined(KOKKOS_ENABLE_THREADS) || \ + defined(KOKKOS_ENABLE_OPENMP) || defined(KOKKOS_ENABLE_HPX) || \ + defined(KOKKOS_ENABLE_ROCM) || defined(KOKKOS_ENABLE_OPENMPTARGET) || \ + defined(KOKKOS_ENABLE_HIP) #define KOKKOS_INTERNAL_ENABLE_NON_CUDA_BACKEND #endif -#if !defined(KOKKOS_ENABLE_THREADS) && !defined(KOKKOS_ENABLE_CUDA) && \ - !defined(KOKKOS_ENABLE_OPENMP) && !defined(KOKKOS_ENABLE_QTHREADS) && \ - !defined(KOKKOS_ENABLE_HPX) && !defined(KOKKOS_ENABLE_ROCM) && \ - !defined(KOKKOS_ENABLE_OPENMPTARGET) +#if !defined(KOKKOS_ENABLE_THREADS) && !defined(KOKKOS_ENABLE_CUDA) && \ + !defined(KOKKOS_ENABLE_OPENMP) && !defined(KOKKOS_ENABLE_HPX) && \ + !defined(KOKKOS_ENABLE_ROCM) && !defined(KOKKOS_ENABLE_OPENMPTARGET) && \ + !defined(KOKKOS_ENABLE_HIP) #define KOKKOS_INTERNAL_NOT_PARALLEL #endif @@ -131,37 +131,17 @@ #error "#include did not define CUDA_VERSION." #endif -#if (CUDA_VERSION < 7000) -// CUDA supports C++11 in device code starting with version 7.0. -// This includes auto type and device code internal lambdas. -#error "Cuda version 7.0 or greater required." -#endif - #if defined(__CUDA_ARCH__) && (__CUDA_ARCH__ < 300) // Compiling with CUDA compiler for device code. #error "Cuda device capability >= 3.0 is required." #endif #ifdef KOKKOS_ENABLE_CUDA_LAMBDA -#if (CUDA_VERSION < 7050) -// CUDA supports C++11 lambdas generated in host code to be given -// to the device starting with version 7.5. But the release candidate (7.5.6) -// still identifies as 7.0. -#error "Cuda version 7.5 or greater required for host-to-device Lambda support." -#endif - -#if (CUDA_VERSION < 8000) && defined(__NVCC__) -#define KOKKOS_LAMBDA [=] __device__ -#if defined(KOKKOS_INTERNAL_ENABLE_NON_CUDA_BACKEND) -#undef KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA -#endif -#else #define KOKKOS_LAMBDA [=] __host__ __device__ #if defined(KOKKOS_ENABLE_CXX17) || defined(KOKKOS_ENABLE_CXX20) #define KOKKOS_CLASS_LAMBDA [ =, *this ] __host__ __device__ #endif -#endif #if defined(__NVCC__) #define KOKKOS_IMPL_NEED_FUNCTOR_WRAPPER @@ -170,12 +150,6 @@ #undef KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA #endif // !defined(KOKKOS_ENABLE_CUDA_LAMBDA) -#if (9000 <= CUDA_VERSION) && (CUDA_VERSION < 10000) -// CUDA 9 introduced an incorrect warning, -// see https://github.com/kokkos/kokkos/issues/1470 -#define KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND -#endif - #if (10000 > CUDA_VERSION) #define KOKKOS_ENABLE_PRE_CUDA_10_DEPRECATION_API #endif @@ -194,6 +168,17 @@ #endif // #if defined( KOKKOS_ENABLE_CUDA ) && defined( __CUDACC__ ) +#if defined(KOKKOS_ENABLE_HIP) + +#define KOKKOS_IMPL_HIP_CLANG_WORKAROUND + +#define HIP_ENABLE_PRINTF +#include +#include + +#define KOKKOS_LAMBDA [=] __host__ __device__ +#endif // #if defined(KOKKOS_ENABLE_HIP) + //---------------------------------------------------------------------------- // Mapping compiler built-ins to KOKKOS_COMPILER_*** macros @@ -267,6 +252,10 @@ #endif #endif +#if defined(_MSC_VER) && !defined(KOKKOS_COMPILER_INTEL) +#define KOKKOS_COMPILER_MSVC _MSC_VER +#endif + //#endif // #if !defined( __CUDA_ARCH__ ) //---------------------------------------------------------------------------- // Language info: C++, CUDA, OPENMP @@ -283,7 +272,24 @@ #else #define KOKKOS_INLINE_FUNCTION_DELETED __device__ __host__ inline #endif -#endif // #if defined( __CUDA_ARCH__ ) +#if (CUDA_VERSION < 10000) +#define KOKKOS_DEFAULTED_FUNCTION __host__ __device__ inline +#else +#define KOKKOS_DEFAULTED_FUNCTION inline +#endif +#endif + +#if defined(KOKKOS_ENABLE_HIP) + +#define KOKKOS_FORCEINLINE_FUNCTION __device__ __host__ __forceinline__ +#define KOKKOS_INLINE_FUNCTION __device__ __host__ inline +#define KOKKOS_DEFAULTED_FUNCTION __device__ __host__ inline +#define KOKKOS_INLINE_FUNCTION_DELETED __device__ __host__ inline +#define KOKKOS_FUNCTION __device__ __host__ +#if defined(KOKKOS_ENABLE_CXX17) || defined(KOKKOS_ENABLE_CXX20) +#define KOKKOS_CLASS_LAMBDA [ =, *this ] __host__ __device__ +#endif +#endif // #if defined( KOKKOS_ENABLE_HIP ) #if defined(KOKKOS_ENABLE_ROCM) && defined(__HCC__) @@ -291,6 +297,7 @@ #define KOKKOS_INLINE_FUNCTION __attribute__((amp, cpu)) inline #define KOKKOS_FUNCTION __attribute__((amp, cpu)) #define KOKKOS_LAMBDA [=] __attribute__((amp, cpu)) +#define KOKKOS_DEFAULTED_FUNCTION __attribute__((amp, cpu)) inline #endif #if defined(_OPENMP) @@ -355,6 +362,10 @@ #endif #endif +#if (1800 > KOKKOS_COMPILER_INTEL) +#define KOKKOS_IMPL_INTEL_WORKAROUND_NOEXCEPT_SPECIFICATION_VIRTUAL_FUNCTION +#endif + #if defined(__MIC__) // Compiling for Xeon Phi #endif @@ -470,6 +481,10 @@ #if !defined(KOKKOS_INLINE_FUNCTION_DELETED) #define KOKKOS_INLINE_FUNCTION_DELETED inline #endif + +#if !defined(KOKKOS_DEFAULTED_FUNCTION) +#define KOKKOS_DEFAULTED_FUNCTION inline +#endif //---------------------------------------------------------------------------- // Define empty macro for restrict if necessary: @@ -497,28 +512,30 @@ // There is zero or one default execution space specified. #if 1 < ((defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_CUDA) ? 1 : 0) + \ + (defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HIP) ? 1 : 0) + \ (defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM) ? 1 : 0) + \ (defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMPTARGET) ? 1 : 0) + \ (defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP) ? 1 : 0) + \ (defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS) ? 1 : 0) + \ - (defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS) ? 1 : 0) + \ (defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HPX) ? 1 : 0) + \ (defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_SERIAL) ? 1 : 0)) #error "More than one KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_* specified." #endif // If default is not specified then chose from enabled execution spaces. -// Priority: CUDA, OPENMP, THREADS, QTHREADS, HPX, SERIAL +// Priority: CUDA, HIP, ROCM, OPENMPTARGET, OPENMP, THREADS, HPX, SERIAL #if defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_CUDA) +#elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HIP) #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM) #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMPTARGET) #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP) #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS) -//#elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS ) #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HPX) #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_SERIAL) #elif defined(KOKKOS_ENABLE_CUDA) #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_CUDA +#elif defined(KOKKOS_ENABLE_HIP) +#define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HIP #elif defined(KOKKOS_ENABLE_ROCM) #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM #elif defined(KOKKOS_ENABLE_OPENMPTARGET) @@ -527,8 +544,6 @@ #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP #elif defined(KOKKOS_ENABLE_THREADS) #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS -//#elif defined( KOKKOS_ENABLE_QTHREADS ) -// #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS #elif defined(KOKKOS_ENABLE_HPX) #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HPX #else @@ -543,6 +558,10 @@ #elif defined(__HCC__) && defined(__HCC_ACCELERATOR__) && \ defined(KOKKOS_ENABLE_ROCM) #define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_ROCM_GPU +#elif defined(__HIPCC__) && \ + (defined(__HCC_ACCELERATOR__) || defined(__CUDA_ARCH__)) && \ + defined(KOKKOS_ENABLE_HIP) +#define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HIP_GPU #else #define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST #endif @@ -557,27 +576,25 @@ #endif //---------------------------------------------------------------------------- -// If compiling with CUDA then must be using CUDA 8 or better -// and use relocateable device code to enable the task policy. -// nvcc relocatable device code option: --relocatable-device-code=true +// If compiling with CUDA, we must use relocateable device code +// to enable the task policy. -#if (defined(KOKKOS_ENABLE_CUDA)) -#if (8000 <= CUDA_VERSION) && \ - defined(KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE) +#if defined(KOKKOS_ENABLE_CUDA) +#if defined(KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE) #define KOKKOS_ENABLE_TASKDAG #endif #else +#ifndef KOKKOS_ENABLE_HIP #define KOKKOS_ENABLE_TASKDAG #endif +#endif #if defined(KOKKOS_ENABLE_CUDA) -#if (9000 <= CUDA_VERSION) #define KOKKOS_IMPL_CUDA_VERSION_9_WORKAROUND #if (__CUDA_ARCH__) #define KOKKOS_IMPL_CUDA_SYNCWARP_NEEDS_MASK #endif #endif -#endif #define KOKKOS_INVALID_INDEX (~std::size_t(0)) @@ -622,4 +639,17 @@ #define KOKKOS_IMPL_ENABLE_CXXABI #endif +// WORKAROUND for AMD aomp which apparently defines CUDA_ARCH when building for +// AMD GPUs with OpenMP Target ??? +#if defined(__CUDA_ARCH__) && !defined(__CUDACC__) && \ + !defined(KOKKOS_ENABLE_HIP) && !defined(KOKKOS_ENABLE_CUDA) +#undef __CUDA_ARCH__ +#endif + +#if defined(KOKKOS_COMPILER_MSVC) +#define KOKKOS_THREAD_LOCAL __declspec(thread) +#else +#define KOKKOS_THREAD_LOCAL __thread +#endif + #endif // #ifndef KOKKOS_MACROS_HPP diff --git a/lib/kokkos/core/src/Kokkos_MemoryPool.hpp b/lib/kokkos/core/src/Kokkos_MemoryPool.hpp index 5228f36612..da07544701 100644 --- a/lib/kokkos/core/src/Kokkos_MemoryPool.hpp +++ b/lib/kokkos/core/src/Kokkos_MemoryPool.hpp @@ -257,61 +257,14 @@ class MemoryPool { //-------------------------------------------------------------------------- -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION MemoryPool(MemoryPool &&rhs) - : m_tracker(std::move(rhs.m_tracker)), - m_sb_state_array(std::move(rhs.m_sb_state_array)), - m_sb_state_size(std::move(rhs.m_sb_state_size)), - m_sb_size_lg2(std::move(rhs.m_sb_size_lg2)), - m_max_block_size_lg2(std::move(rhs.m_max_block_size_lg2)), - m_min_block_size_lg2(std::move(rhs.m_min_block_size_lg2)), - m_sb_count(std::move(rhs.m_sb_count)), - m_hint_offset(std::move(rhs.m_hint_offset)), - m_data_offset(std::move(rhs.m_data_offset)) {} - KOKKOS_INLINE_FUNCTION MemoryPool(const MemoryPool &rhs) - : m_tracker(rhs.m_tracker), - m_sb_state_array(rhs.m_sb_state_array), - m_sb_state_size(rhs.m_sb_state_size), - m_sb_size_lg2(rhs.m_sb_size_lg2), - m_max_block_size_lg2(rhs.m_max_block_size_lg2), - m_min_block_size_lg2(rhs.m_min_block_size_lg2), - m_sb_count(rhs.m_sb_count), - m_hint_offset(rhs.m_hint_offset), - m_data_offset(rhs.m_data_offset) {} - KOKKOS_INLINE_FUNCTION MemoryPool &operator=(MemoryPool &&rhs) { - m_tracker = std::move(rhs.m_tracker); - m_sb_state_array = std::move(rhs.m_sb_state_array); - m_sb_state_size = std::move(rhs.m_sb_state_size); - m_sb_size_lg2 = std::move(rhs.m_sb_size_lg2); - m_max_block_size_lg2 = std::move(rhs.m_max_block_size_lg2); - m_min_block_size_lg2 = std::move(rhs.m_min_block_size_lg2); - m_sb_count = std::move(rhs.m_sb_count); - m_hint_offset = std::move(rhs.m_hint_offset); - m_data_offset = std::move(rhs.m_data_offset); - return *this; - } - KOKKOS_INLINE_FUNCTION MemoryPool &operator=(const MemoryPool &rhs) { - m_tracker = rhs.m_tracker; - m_sb_state_array = rhs.m_sb_state_array; - m_sb_state_size = rhs.m_sb_state_size; - m_sb_size_lg2 = rhs.m_sb_size_lg2; - m_max_block_size_lg2 = rhs.m_max_block_size_lg2; - m_min_block_size_lg2 = rhs.m_min_block_size_lg2; - m_sb_count = rhs.m_sb_count; - m_hint_offset = rhs.m_hint_offset; - m_data_offset = rhs.m_data_offset; - return *this; - } -#else - KOKKOS_INLINE_FUNCTION MemoryPool(MemoryPool &&) = default; - KOKKOS_INLINE_FUNCTION MemoryPool(const MemoryPool &) = default; - KOKKOS_INLINE_FUNCTION MemoryPool &operator=(MemoryPool &&) = default; - KOKKOS_INLINE_FUNCTION MemoryPool &operator=(const MemoryPool &) = default; -#endif + KOKKOS_DEFAULTED_FUNCTION MemoryPool(MemoryPool &&) = default; + KOKKOS_DEFAULTED_FUNCTION MemoryPool(const MemoryPool &) = default; + KOKKOS_DEFAULTED_FUNCTION MemoryPool &operator=(MemoryPool &&) = default; + KOKKOS_DEFAULTED_FUNCTION MemoryPool &operator=(const MemoryPool &) = default; KOKKOS_INLINE_FUNCTION MemoryPool() : m_tracker(), - m_sb_state_array(0), + m_sb_state_array(nullptr), m_sb_state_size(0), m_sb_size_lg2(0), m_max_block_size_lg2(0), @@ -339,7 +292,7 @@ class MemoryPool { const size_t min_total_alloc_size, size_t min_block_alloc_size = 0, size_t max_block_alloc_size = 0, size_t min_superblock_size = 0) : m_tracker(), - m_sb_state_array(0), + m_sb_state_array(nullptr), m_sb_state_size(0), m_sb_size_lg2(0), m_max_block_size_lg2(0), @@ -547,9 +500,9 @@ class MemoryPool { "allocation size"); } - if (0 == alloc_size) return (void *)0; + if (0 == alloc_size) return nullptr; - void *p = 0; + void *p = nullptr; const uint32_t block_size_lg2 = get_block_size_lg2(alloc_size); @@ -590,7 +543,7 @@ class MemoryPool { int32_t sb_id = -1; - volatile uint32_t *sb_state_array = 0; + volatile uint32_t *sb_state_array = nullptr; while (attempt_limit) { int32_t hint_sb_id = -1; @@ -784,7 +737,7 @@ class MemoryPool { */ KOKKOS_INLINE_FUNCTION void deallocate(void *p, size_t /* alloc_size */) const noexcept { - if (0 == p) return; + if (nullptr == p) return; // Determine which superblock and block const ptrdiff_t d = diff --git a/lib/kokkos/core/src/Kokkos_NumericTraits.hpp b/lib/kokkos/core/src/Kokkos_NumericTraits.hpp index 666bb33266..88040bcbaa 100644 --- a/lib/kokkos/core/src/Kokkos_NumericTraits.hpp +++ b/lib/kokkos/core/src/Kokkos_NumericTraits.hpp @@ -160,8 +160,8 @@ struct reduction_identity { KOKKOS_FORCEINLINE_FUNCTION constexpr static long prod() { return static_cast(1); } - KOKKOS_FORCEINLINE_FUNCTION constexpr static long max() { return LLONG_MIN; } - KOKKOS_FORCEINLINE_FUNCTION constexpr static long min() { return LLONG_MAX; } + KOKKOS_FORCEINLINE_FUNCTION constexpr static long max() { return LONG_MIN; } + KOKKOS_FORCEINLINE_FUNCTION constexpr static long min() { return LONG_MAX; } KOKKOS_FORCEINLINE_FUNCTION constexpr static long bor() { return static_cast(0x0); } @@ -368,7 +368,8 @@ struct reduction_identity { KOKKOS_FORCEINLINE_FUNCTION constexpr static double min() { return DBL_MAX; } }; -#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA) +#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA) && \ + !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HIP_GPU) template <> struct reduction_identity { KOKKOS_FORCEINLINE_FUNCTION constexpr static long double sum() { diff --git a/lib/kokkos/core/src/Kokkos_OpenMP.hpp b/lib/kokkos/core/src/Kokkos_OpenMP.hpp index 3955c06156..d9b9077c6d 100644 --- a/lib/kokkos/core/src/Kokkos_OpenMP.hpp +++ b/lib/kokkos/core/src/Kokkos_OpenMP.hpp @@ -94,9 +94,6 @@ class OpenMP { using size_type = memory_space::size_type; using scratch_memory_space = ScratchMemorySpace; - /// \brief Get a handle to the default execution space instance - inline OpenMP() noexcept; - /// \brief Print configuration information to the given output stream. static void print_configuration(std::ostream&, const bool verbose = false); @@ -225,8 +222,17 @@ class OpenMP { #endif static constexpr const char* name() noexcept { return "OpenMP"; } + uint32_t impl_instance_id() const noexcept { return 0; } }; +namespace Profiling { +namespace Experimental { +template <> +struct DeviceTypeTraits { + static constexpr DeviceType id = DeviceType::OpenMP; +}; +} // namespace Experimental +} // namespace Profiling } // namespace Kokkos /*--------------------------------------------------------------------------*/ diff --git a/lib/kokkos/core/src/Kokkos_OpenMPTarget.hpp b/lib/kokkos/core/src/Kokkos_OpenMPTarget.hpp index 9706751f9c..d113f24422 100644 --- a/lib/kokkos/core/src/Kokkos_OpenMPTarget.hpp +++ b/lib/kokkos/core/src/Kokkos_OpenMPTarget.hpp @@ -65,6 +65,10 @@ namespace Kokkos { namespace Experimental { +namespace Impl { +class OpenMPTargetInternal; +} + /// \class OpenMPTarget /// \brief Kokkos device for multicore processors in the host memory space. class OpenMPTarget { @@ -84,76 +88,47 @@ class OpenMPTarget { typedef ScratchMemorySpace scratch_memory_space; - //@} - //------------------------------------ - //! \name Functions that all Kokkos execution spaces must implement. - //@{ - inline static bool in_parallel() { return omp_in_parallel(); } - /** \brief Set the device in a "sleep" state. A noop for OpenMPTarget. */ - static bool sleep(); - - /** \brief Wake the device from the 'sleep' state. A noop for OpenMPTarget. */ - static bool wake(); - - /** \brief Wait until all dispatched functors complete. A noop for - * OpenMPTarget. */ - static void fence() {} - - /// \brief Print configuration information to the given output stream. - static void print_configuration(std::ostream&, const bool detail = false); - - /// \brief Free any resources being consumed by the device. - static void finalize(); - - /** \brief Initialize the device. - * - * 1) If the hardware locality library is enabled and OpenMPTarget has not - * already bound threads then bind OpenMPTarget threads to maximize - * core utilization and group for memory hierarchy locality. - * - * 2) Allocate a HostThread for each OpenMPTarget thread to hold its - * topology and fan in/out data. - */ - static void initialize(unsigned thread_count = 0, unsigned use_numa_count = 0, - unsigned use_cores_per_numa = 0); - - static int is_initialized(); + static void fence(); /** \brief Return the maximum amount of concurrency. */ static int concurrency(); - //@} - //------------------------------------ - /** \brief This execution space has a topological thread pool which can be - * queried. - * - * All threads within a pool have a common memory space for which they are - * cache coherent. depth = 0 gives the number of threads in the whole pool. - * depth = 1 gives the number of threads in a NUMA region, typically - * sharing L3 cache. depth = 2 gives the number of threads at the finest - * granularity, typically sharing L1 cache. - */ - inline static int thread_pool_size(int depth = 0); - - /** \brief The rank of the executing thread in this thread pool */ - KOKKOS_INLINE_FUNCTION static int thread_pool_rank(); - - //------------------------------------ - - inline static unsigned max_hardware_threads() { return thread_pool_size(0); } - - KOKKOS_INLINE_FUNCTION static unsigned hardware_thread_id() { - return thread_pool_rank(); - } + //! Print configuration information to the given output stream. + void print_configuration(std::ostream&, const bool detail = false); static const char* name(); + //! Free any resources being consumed by the device. + void impl_finalize(); + + //! Has been initialized + static int impl_is_initialized(); + + //! Initialize, telling the CUDA run-time library which device to use. + void impl_initialize(); + + inline Impl::OpenMPTargetInternal* impl_internal_space_instance() const { + return m_space_instance; + } + + OpenMPTarget(); + uint32_t impl_instance_id() const noexcept { return 0; } + private: - static bool m_is_initialized; + Impl::OpenMPTargetInternal* m_space_instance; }; } // namespace Experimental + +namespace Profiling { +namespace Experimental { +template <> +struct DeviceTypeTraits { + static constexpr DeviceType id = DeviceType::OpenMPTarget; +}; +} // namespace Experimental +} // namespace Profiling } // namespace Kokkos /*--------------------------------------------------------------------------*/ @@ -179,6 +154,7 @@ struct VerifyExecutionCanAccessMemorySpace< #include #include +#include #include /*--------------------------------------------------------------------------*/ diff --git a/lib/kokkos/core/src/Kokkos_OpenMPTargetSpace.hpp b/lib/kokkos/core/src/Kokkos_OpenMPTargetSpace.hpp index eef5893be5..9d24a342e7 100644 --- a/lib/kokkos/core/src/Kokkos_OpenMPTargetSpace.hpp +++ b/lib/kokkos/core/src/Kokkos_OpenMPTargetSpace.hpp @@ -128,6 +128,8 @@ class OpenMPTargetSpace { /**\brief Deallocate untracked memory in the space */ void deallocate(void* const arg_alloc_ptr, const size_t arg_alloc_size) const; + static constexpr const char* name() { return "OpenMPTargetSpace"; } + private: friend class Kokkos::Impl::SharedAllocationRecord< Kokkos::Experimental::OpenMPTargetSpace, void>; @@ -174,7 +176,13 @@ class SharedAllocationRecord KOKKOS_INLINE_FUNCTION static SharedAllocationRecord* allocate( const Kokkos::Experimental::OpenMPTargetSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size); + const std::string& arg_label, const size_t arg_alloc_size) { +#if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) + return new SharedAllocationRecord(arg_space, arg_label, arg_alloc_size); +#else + return nullptr; +#endif + } /**\brief Allocate tracked memory in the space */ static void* allocate_tracked( diff --git a/lib/kokkos/core/src/Kokkos_Pair.hpp b/lib/kokkos/core/src/Kokkos_Pair.hpp index ee9797b4b3..23bb755e33 100644 --- a/lib/kokkos/core/src/Kokkos_Pair.hpp +++ b/lib/kokkos/core/src/Kokkos_Pair.hpp @@ -78,14 +78,7 @@ struct pair { /// This calls the default constructors of T1 and T2. It won't /// compile if those default constructors are not defined and /// public. - KOKKOS_FORCEINLINE_FUNCTION constexpr -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - pair() - : first(), second() { - } -#else - pair() = default; -#endif + KOKKOS_DEFAULTED_FUNCTION constexpr pair() = default; /// \brief Constructor that takes both elements of the pair. /// @@ -439,14 +432,7 @@ struct pair { first_type first; enum { second = 0 }; - KOKKOS_FORCEINLINE_FUNCTION constexpr -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - pair() - : first() { - } -#else - pair() = default; -#endif + KOKKOS_DEFAULTED_FUNCTION constexpr pair() = default; KOKKOS_FORCEINLINE_FUNCTION constexpr pair(const first_type& f) : first(f) {} diff --git a/lib/kokkos/core/src/Kokkos_Parallel.hpp b/lib/kokkos/core/src/Kokkos_Parallel.hpp index 7277ce287a..775ab9203c 100644 --- a/lib/kokkos/core/src/Kokkos_Parallel.hpp +++ b/lib/kokkos/core/src/Kokkos_Parallel.hpp @@ -114,7 +114,7 @@ struct FunctorPolicyExecutionSpace< Functor, Policy, typename enable_if_type::type, EnablePolicy> { - typedef typename Functor::device_type execution_space; + typedef typename Functor::device_type::execution_space execution_space; }; template @@ -158,16 +158,21 @@ template inline void parallel_for( const ExecPolicy& policy, const FunctorType& functor, const std::string& str = "", - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { #if defined(KOKKOS_ENABLE_PROFILING) uint64_t kpID = 0; if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Impl::ParallelConstructName name(str); - Kokkos::Profiling::beginParallelFor(name.get(), 0, &kpID); + Kokkos::Profiling::beginParallelFor( + name.get(), Kokkos::Profiling::Experimental::device_id(policy.space()), + &kpID); } +#else + (void)str; #endif Kokkos::Impl::shared_allocation_tracking_disable(); @@ -194,8 +199,12 @@ inline void parallel_for(const size_t work_count, const FunctorType& functor, uint64_t kpID = 0; if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Impl::ParallelConstructName name(str); - Kokkos::Profiling::beginParallelFor(name.get(), 0, &kpID); + Kokkos::Profiling::beginParallelFor( + name.get(), + Kokkos::Profiling::Experimental::device_id(policy().space()), &kpID); } +#else + (void)str; #endif Kokkos::Impl::shared_allocation_tracking_disable(); @@ -403,16 +412,21 @@ template inline void parallel_scan( const ExecutionPolicy& policy, const FunctorType& functor, const std::string& str = "", - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { #if defined(KOKKOS_ENABLE_PROFILING) uint64_t kpID = 0; if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Impl::ParallelConstructName name(str); - Kokkos::Profiling::beginParallelScan(name.get(), 0, &kpID); + Kokkos::Profiling::beginParallelScan( + name.get(), Kokkos::Profiling::Experimental::device_id(policy.space()), + &kpID); } +#else + (void)str; #endif Kokkos::Impl::shared_allocation_tracking_disable(); @@ -440,8 +454,12 @@ inline void parallel_scan(const size_t work_count, const FunctorType& functor, uint64_t kpID = 0; if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Impl::ParallelConstructName name(str); - Kokkos::Profiling::beginParallelScan(name.get(), 0, &kpID); + Kokkos::Profiling::beginParallelScan( + name.get(), + Kokkos::Profiling::Experimental::device_id(policy().space()), &kpID); } +#else + (void)str; #endif Kokkos::Impl::shared_allocation_tracking_disable(); @@ -479,16 +497,21 @@ template inline void parallel_scan( const ExecutionPolicy& policy, const FunctorType& functor, ReturnType& return_value, const std::string& str = "", - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { #if defined(KOKKOS_ENABLE_PROFILING) uint64_t kpID = 0; if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Impl::ParallelConstructName name(str); - Kokkos::Profiling::beginParallelScan(name.get(), 0, &kpID); + Kokkos::Profiling::beginParallelScan( + name.get(), Kokkos::Profiling::Experimental::device_id(policy.space()), + &kpID); } +#else + (void)str; #endif Kokkos::Impl::shared_allocation_tracking_disable(); @@ -503,7 +526,7 @@ inline void parallel_scan( Kokkos::Profiling::endParallelScan(kpID); } #endif - Kokkos::fence(); + policy.space().fence(); } template @@ -519,8 +542,12 @@ inline void parallel_scan(const size_t work_count, const FunctorType& functor, uint64_t kpID = 0; if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Impl::ParallelConstructName name(str); - Kokkos::Profiling::beginParallelScan(name.get(), 0, &kpID); + Kokkos::Profiling::beginParallelScan( + name.get(), + Kokkos::Profiling::Experimental::device_id(policy().space()), &kpID); } +#else + (void)str; #endif Kokkos::Impl::shared_allocation_tracking_disable(); @@ -535,7 +562,7 @@ inline void parallel_scan(const size_t work_count, const FunctorType& functor, Kokkos::Profiling::endParallelScan(kpID); } #endif - Kokkos::fence(); + execution_space().fence(); } template @@ -564,7 +591,10 @@ inline void parallel_scan(const std::string& str, const ExecutionPolicy& policy, namespace Kokkos { namespace Impl { -template +template ::value, + bool HasShmemSize = has_member_shmem_size::value> struct FunctorTeamShmemSize { KOKKOS_INLINE_FUNCTION static size_t value(const FunctorType&, int) { return 0; @@ -572,22 +602,27 @@ struct FunctorTeamShmemSize { }; template -struct FunctorTeamShmemSize< - FunctorType, - typename Impl::enable_if<0 < sizeof(&FunctorType::team_shmem_size)>::type> { +struct FunctorTeamShmemSize { static inline size_t value(const FunctorType& f, int team_size) { return f.team_shmem_size(team_size); } }; template -struct FunctorTeamShmemSize< - FunctorType, - typename Impl::enable_if<0 < sizeof(&FunctorType::shmem_size)>::type> { +struct FunctorTeamShmemSize { static inline size_t value(const FunctorType& f, int team_size) { return f.shmem_size(team_size); } }; +template +struct FunctorTeamShmemSize { + static inline size_t value(const FunctorType& /*f*/, int /*team_size*/) { + Kokkos::abort( + "Functor with both team_shmem_size and shmem_size defined is " + "not allowed"); + return 0; + } +}; } // namespace Impl } // namespace Kokkos diff --git a/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp b/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp index dbd33860fb..4ef2dbdf0d 100644 --- a/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp +++ b/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp @@ -543,7 +543,6 @@ struct MaxLoc { KOKKOS_INLINE_FUNCTION void init(value_type& val) const { val.val = reduction_identity::max(); - ; val.loc = reduction_identity::min(); } @@ -622,7 +621,6 @@ struct MinMax { KOKKOS_INLINE_FUNCTION void init(value_type& val) const { val.max_val = reduction_identity::max(); - ; val.min_val = reduction_identity::min(); } @@ -711,7 +709,6 @@ struct MinMaxLoc { KOKKOS_INLINE_FUNCTION void init(value_type& val) const { val.max_val = reduction_identity::max(); - ; val.min_val = reduction_identity::min(); val.max_loc = reduction_identity::min(); val.min_loc = reduction_identity::min(); @@ -772,7 +769,7 @@ struct ParallelReduceReturnValue< template struct ParallelReduceReturnValue< - typename std::enable_if<(is_array::value || + typename std::enable_if<(std::is_array::value || std::is_pointer::value)>::type, ReturnType, FunctorType> { typedef Kokkos::View::type, @@ -788,7 +785,7 @@ struct ParallelReduceReturnValue< #ifdef KOKKOS_ENABLE_DEPRECATED_CODE return return_type(return_val, functor.value_count); #else - if (is_array::value) + if (std::is_array::value) return return_type(return_val); else return return_type(return_val, functor.value_count); @@ -865,6 +862,8 @@ struct ParallelReduceAdaptor { name(label); Kokkos::Profiling::beginParallelReduce(name.get(), 0, &kpID); } +#else + (void)label; #endif Kokkos::Impl::shared_allocation_tracking_disable(); @@ -915,22 +914,25 @@ struct ReducerHasTestReferenceFunction { static std::false_type test_func(...); enum { - value = std::is_same(0))>::value + value = std::is_same(nullptr))>::value }; }; -template ::value> +template ::value> struct ParallelReduceFence { - static void fence(const T&) { Kokkos::fence(); } + static void fence(const ExecutionSpace& execution_space, const T&) { + execution_space.fence(); + } }; -template -struct ParallelReduceFence, false> { - static void fence(const View){}; +template +struct ParallelReduceFence, false> { + static void fence(const ExecutionSpace&, const View){}; }; -template -struct ParallelReduceFence { - static void fence(const T& reducer) { - if (reducer.references_scalar()) Kokkos::fence(); +template +struct ParallelReduceFence { + static void fence(const ExecutionSpace& execution_space, const T& reducer) { + if (reducer.references_scalar()) execution_space.fence(); } }; } // namespace Impl @@ -976,22 +978,26 @@ template inline void parallel_reduce( const std::string& label, const PolicyType& policy, const FunctorType& functor, ReturnType& return_value, - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { Impl::ParallelReduceAdaptor::execute( label, policy, functor, return_value); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence::fence(policy.space(), return_value); } template inline void parallel_reduce( const PolicyType& policy, const FunctorType& functor, ReturnType& return_value, - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { Impl::ParallelReduceAdaptor::execute( "", policy, functor, return_value); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence::fence(policy.space(), return_value); } template @@ -1001,7 +1007,8 @@ inline void parallel_reduce(const size_t& policy, const FunctorType& functor, void, size_t, FunctorType>::policy_type policy_type; Impl::ParallelReduceAdaptor::execute( "", policy_type(0, policy), functor, return_value); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence:: + fence(typename policy_type::execution_space(), return_value); } template @@ -1012,7 +1019,8 @@ inline void parallel_reduce(const std::string& label, const size_t& policy, void, size_t, FunctorType>::policy_type policy_type; Impl::ParallelReduceAdaptor::execute( label, policy_type(0, policy), functor, return_value); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence:: + fence(typename policy_type::execution_space(), return_value); } // ReturnValue as View or Reducer: take by copy to allow for inline construction @@ -1021,24 +1029,28 @@ template inline void parallel_reduce( const std::string& label, const PolicyType& policy, const FunctorType& functor, const ReturnType& return_value, - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { ReturnType return_value_impl = return_value; Impl::ParallelReduceAdaptor::execute( label, policy, functor, return_value_impl); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence::fence(policy.space(), return_value); } template inline void parallel_reduce( const PolicyType& policy, const FunctorType& functor, const ReturnType& return_value, - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { ReturnType return_value_impl = return_value; Impl::ParallelReduceAdaptor::execute( "", policy, functor, return_value_impl); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence::fence(policy.space(), return_value); } template @@ -1049,7 +1061,8 @@ inline void parallel_reduce(const size_t& policy, const FunctorType& functor, ReturnType return_value_impl = return_value; Impl::ParallelReduceAdaptor::execute( "", policy_type(0, policy), functor, return_value_impl); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence:: + fence(typename policy_type::execution_space(), return_value); } template @@ -1061,7 +1074,8 @@ inline void parallel_reduce(const std::string& label, const size_t& policy, ReturnType return_value_impl = return_value; Impl::ParallelReduceAdaptor::execute( label, policy_type(0, policy), functor, return_value_impl); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence:: + fence(typename policy_type::execution_space(), return_value); } // No Return Argument @@ -1070,8 +1084,9 @@ template inline void parallel_reduce( const std::string& label, const PolicyType& policy, const FunctorType& functor, - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { typedef Kokkos::Impl::FunctorValueTraits ValueTraits; typedef typename Kokkos::Impl::if_c< (ValueTraits::StaticValueSize != 0), typename ValueTraits::value_type, @@ -1094,8 +1109,9 @@ inline void parallel_reduce( template inline void parallel_reduce( const PolicyType& policy, const FunctorType& functor, - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { typedef Kokkos::Impl::FunctorValueTraits ValueTraits; typedef typename Kokkos::Impl::if_c< (ValueTraits::StaticValueSize != 0), typename ValueTraits::value_type, diff --git a/lib/kokkos/core/src/Kokkos_Profiling_ProfileSection.hpp b/lib/kokkos/core/src/Kokkos_Profiling_ProfileSection.hpp index 3c667f4432..3999ccb966 100644 --- a/lib/kokkos/core/src/Kokkos_Profiling_ProfileSection.hpp +++ b/lib/kokkos/core/src/Kokkos_Profiling_ProfileSection.hpp @@ -1,46 +1,46 @@ /* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 + //@HEADER + // ************************************************************************ + // + // Kokkos v. 3.0 // Copyright (2020) National Technology & Engineering // Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ + // + // Under the terms of Contract DE-NA0003525 with NTESS, + // the U.S. Government retains certain rights in this software. + // + // Redistribution and use in source and binary forms, with or without + // modification, are permitted provided that the following conditions are + // met: + // + // 1. Redistributions of source code must retain the above copyright + // notice, this list of conditions and the following disclaimer. + // + // 2. Redistributions in binary form must reproduce the above copyright + // notice, this list of conditions and the following disclaimer in the + // documentation and/or other materials provided with the distribution. + // + // 3. Neither the name of the Corporation nor the names of the + // contributors may be used to endorse or promote products derived from + // this software without specific prior written permission. + // + // THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY + // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE + // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + // + // Questions? Contact Christian R. Trott (crtrott@sandia.gov) + // + // ************************************************************************ + //@HEADER + */ #ifndef KOKKOSP_PROFILE_SECTION_HPP #define KOKKOSP_PROFILE_SECTION_HPP diff --git a/lib/kokkos/core/src/Kokkos_Qthreads.hpp b/lib/kokkos/core/src/Kokkos_Qthreads.hpp deleted file mode 100644 index e10bd48593..0000000000 --- a/lib/kokkos/core/src/Kokkos_Qthreads.hpp +++ /dev/null @@ -1,196 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#ifndef KOKKOS_QTHREADS_HPP -#define KOKKOS_QTHREADS_HPP - -#include -#if defined(KOKKOS_ENABLE_QTHREADS) - -#include - -// Defines to enable experimental Qthreads functionality. -#define QTHREAD_LOCAL_PRIORITY -#define CLONED_TASKS - -#include - -#include -#include - -#include -#include -#include -//#include -//#include -//#include // Uncomment when Tasking working. -#include -#include -#include - -/*--------------------------------------------------------------------------*/ - -namespace Kokkos { - -namespace Impl { - -class QthreadsExec; - -} // namespace Impl - -} // namespace Kokkos - -/*--------------------------------------------------------------------------*/ - -namespace Kokkos { - -/** \brief Execution space supported by Qthreads */ -class Qthreads { - public: - //! \name Type declarations that all Kokkos devices must provide. - //@{ - - //! Tag this class as an execution space - typedef Qthreads execution_space; - typedef Kokkos::HostSpace memory_space; - //! This execution space preferred device_type - typedef Kokkos::Device device_type; - - typedef Kokkos::LayoutRight array_layout; - typedef memory_space::size_type size_type; - - typedef ScratchMemorySpace scratch_memory_space; - - //@} - /*------------------------------------------------------------------------*/ - - /** \brief Initialization will construct one or more instances */ - static Qthreads& instance(int = 0); - - /** \brief Set the execution space to a "sleep" state. - * - * This function sets the "sleep" state in which it is not ready for work. - * This may consume less resources than in an "ready" state, - * but it may also take time to transition to the "ready" state. - * - * \return True if enters or is in the "sleep" state. - * False if functions are currently executing. - */ - bool sleep(); - - /** \brief Wake from the sleep state. - * - * \return True if enters or is in the "ready" state. - * False if functions are currently executing. - */ - static bool wake(); - - /** \brief Wait until all dispatched functions to complete. - * - * The parallel_for or parallel_reduce dispatch of a functor may - * return asynchronously, before the functor completes. This - * method does not return until all dispatched functors on this - * device have completed. - */ - static void fence(); - - /*------------------------------------------------------------------------*/ - - static int in_parallel(); - - static int is_initialized(); - - /** \brief Return maximum amount of concurrency */ - static int concurrency(); - - static void initialize(int thread_count); - static void finalize(); - - /** \brief Print configuration information to the given output stream. */ - static void print_configuration(std::ostream&, const bool detail = false); - - int shepherd_size() const; - int shepherd_worker_size() const; - - static const char* name(); -}; - -} // namespace Kokkos - -/*--------------------------------------------------------------------------*/ - -namespace Kokkos { - -namespace Impl { - -template <> -struct MemorySpaceAccess { - enum { assignable = false }; - enum { accessible = true }; - enum { deepcopy = false }; -}; - -template <> -struct VerifyExecutionCanAccessMemorySpace< - Kokkos::Qthreads::memory_space, Kokkos::Qthreads::scratch_memory_space> { - enum { value = true }; - inline static void verify(void) {} - inline static void verify(const void*) {} -}; - -} // namespace Impl - -} // namespace Kokkos - -/*--------------------------------------------------------------------------*/ - -#include -#include -//#include // Uncomment when Tasking -// working. #include // Uncomment when -// Tasking working. - -#endif // #define KOKKOS_ENABLE_QTHREADS -#endif // #define KOKKOS_QTHREADS_HPP diff --git a/lib/kokkos/core/src/Kokkos_ROCmSpace.hpp b/lib/kokkos/core/src/Kokkos_ROCmSpace.hpp index df13a7c2aa..56a1a93b9d 100644 --- a/lib/kokkos/core/src/Kokkos_ROCmSpace.hpp +++ b/lib/kokkos/core/src/Kokkos_ROCmSpace.hpp @@ -481,7 +481,7 @@ struct VerifyExecutionCanAccessMemorySpace< /** Running in ROCmSpace attempting to access an unknown space: error */ template struct VerifyExecutionCanAccessMemorySpace< - typename enable_if< + typename std::enable_if< !is_same::value, Kokkos::Experimental::ROCmSpace>::type, OtherSpace> { diff --git a/lib/kokkos/core/src/Kokkos_ScratchSpace.hpp b/lib/kokkos/core/src/Kokkos_ScratchSpace.hpp index c2337f08a1..708e0218b7 100644 --- a/lib/kokkos/core/src/Kokkos_ScratchSpace.hpp +++ b/lib/kokkos/core/src/Kokkos_ScratchSpace.hpp @@ -92,6 +92,8 @@ class ScratchMemorySpace { typedef typename ExecSpace::array_layout array_layout; typedef typename ExecSpace::size_type size_type; + static constexpr const char* name() { return "ScratchMemorySpace"; } + template KOKKOS_INLINE_FUNCTION static IntType align(const IntType& size) { return (size + MASK) & ~MASK; @@ -108,13 +110,13 @@ class ScratchMemorySpace { #ifdef KOKKOS_DEBUG // mfh 23 Jun 2015: printf call consumes 25 registers // in a CUDA build, so only print in debug mode. The - // function still returns NULL if not enough memory. + // function still returns nullptr if not enough memory. printf( "ScratchMemorySpace<...>::get_shmem: Failed to allocate " "%ld byte(s); remaining capacity is %ld byte(s)\n", long(size), long(m_end_L0 - m_iter_L0)); #endif // KOKKOS_DEBUG - tmp = 0; + tmp = nullptr; } return tmp; } else { @@ -124,13 +126,13 @@ class ScratchMemorySpace { #ifdef KOKKOS_DEBUG // mfh 23 Jun 2015: printf call consumes 25 registers // in a CUDA build, so only print in debug mode. The - // function still returns NULL if not enough memory. + // function still returns nullptr if not enough memory. printf( "ScratchMemorySpace<...>::get_shmem: Failed to allocate " "%ld byte(s); remaining capacity is %ld byte(s)\n", long(size), long(m_end_L1 - m_iter_L1)); #endif // KOKKOS_DEBUG - tmp = 0; + tmp = nullptr; } return tmp; } @@ -151,13 +153,13 @@ class ScratchMemorySpace { #ifdef KOKKOS_DEBUG // mfh 23 Jun 2015: printf call consumes 25 registers // in a CUDA build, so only print in debug mode. The - // function still returns NULL if not enough memory. + // function still returns nullptr if not enough memory. printf( "ScratchMemorySpace<...>::get_shmem: Failed to allocate " "%ld byte(s); remaining capacity is %ld byte(s)\n", long(size), long(m_end_L0 - m_iter_L0)); #endif // KOKKOS_DEBUG - tmp = 0; + tmp = nullptr; } return tmp; } else { @@ -171,13 +173,13 @@ class ScratchMemorySpace { #ifdef KOKKOS_DEBUG // mfh 23 Jun 2015: printf call consumes 25 registers // in a CUDA build, so only print in debug mode. The - // function still returns NULL if not enough memory. + // function still returns nullptr if not enough memory. printf( "ScratchMemorySpace<...>::get_shmem: Failed to allocate " "%ld byte(s); remaining capacity is %ld byte(s)\n", long(size), long(m_end_L1 - m_iter_L1)); #endif // KOKKOS_DEBUG - tmp = 0; + tmp = nullptr; } return tmp; } @@ -186,7 +188,7 @@ class ScratchMemorySpace { template KOKKOS_INLINE_FUNCTION ScratchMemorySpace(void* ptr_L0, const IntType& size_L0, - void* ptr_L1 = NULL, + void* ptr_L1 = nullptr, const IntType& size_L1 = 0) : m_iter_L0((char*)ptr_L0), m_end_L0(m_iter_L0 + size_L0), diff --git a/lib/kokkos/core/src/Kokkos_Serial.hpp b/lib/kokkos/core/src/Kokkos_Serial.hpp index e30598be21..1f97998ea5 100644 --- a/lib/kokkos/core/src/Kokkos_Serial.hpp +++ b/lib/kokkos/core/src/Kokkos_Serial.hpp @@ -181,11 +181,20 @@ class Serial { return impl_thread_pool_size(0); } #endif + uint32_t impl_instance_id() const noexcept { return 0; } static const char* name(); //-------------------------------------------------------------------------- }; +namespace Profiling { +namespace Experimental { +template <> +struct DeviceTypeTraits { + static constexpr DeviceType id = DeviceType::Serial; +}; +} // namespace Experimental +} // namespace Profiling } // namespace Kokkos /*--------------------------------------------------------------------------*/ @@ -257,6 +266,11 @@ class TeamPolicyInternal //! Execution space of this execution policy: typedef Kokkos::Serial execution_space; + const typename traits::execution_space& space() const { + static typename traits::execution_space m_space; + return m_space; + } + TeamPolicyInternal& operator=(const TeamPolicyInternal& p) { m_league_size = p.m_league_size; m_team_scratch_size[0] = p.m_team_scratch_size[0]; @@ -641,7 +655,7 @@ class ParallelReduce, ReducerType, const HostViewType& arg_result_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), @@ -912,7 +926,7 @@ class ParallelReduce, ReducerType, const HostViewType& arg_result_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_mdr_policy(arg_policy), m_policy(Policy(0, m_mdr_policy.m_num_tiles).set_chunk_size(1)), @@ -1087,7 +1101,7 @@ class ParallelReduce, const ViewType& arg_result, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_league(arg_policy.league_size()), m_reducer(InvalidType()), diff --git a/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp b/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp index 4a78d6aca1..6b9608d629 100644 --- a/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp +++ b/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp @@ -143,7 +143,7 @@ class BasicTaskScheduler : public Impl::TaskSchedulerBase { Kokkos::BasicFuture _spawn_impl(DepTaskType* arg_predecessor_task, TaskPriority arg_priority, typename task_base::function_type arg_function, - typename task_base::destroy_type arg_destroy, + typename task_base::destroy_type /*arg_destroy*/, FunctorType&& arg_functor) { using functor_future_type = future_type_for_functor::type>; @@ -203,7 +203,7 @@ class BasicTaskScheduler : public Impl::TaskSchedulerBase { public: KOKKOS_INLINE_FUNCTION - BasicTaskScheduler() : m_track(), m_queue(0) {} + BasicTaskScheduler() : m_track(), m_queue(nullptr) {} KOKKOS_INLINE_FUNCTION BasicTaskScheduler(BasicTaskScheduler&& rhs) noexcept @@ -231,7 +231,7 @@ class BasicTaskScheduler : public Impl::TaskSchedulerBase { } explicit BasicTaskScheduler(memory_pool const& arg_memory_pool) noexcept - : m_track(), m_queue(0) { + : m_track(), m_queue(nullptr) { typedef Kokkos::Impl::SharedAllocationRecord record_type; @@ -349,7 +349,7 @@ class BasicTaskScheduler : public Impl::TaskSchedulerBase { task->m_priority = static_cast(arg_priority); - task->add_dependence((task_base*)0); + task->add_dependence(nullptr); // Postcondition: task is in Executing-Respawn state } @@ -380,8 +380,8 @@ class BasicTaskScheduler : public Impl::TaskSchedulerBase { } } - if (q != 0) { // this should probably handle the queue == 0 case, but - // this is deprecated code anyway + if (q != nullptr) { // this should probably handle the queue == 0 case, + // but this is deprecated code anyway size_t const alloc_size = q->when_all_allocation_size(narg); @@ -459,7 +459,7 @@ class BasicTaskScheduler : public Impl::TaskSchedulerBase { for (int i = 0; i < narg; ++i) { const input_type arg_f = func(i); - if (0 != arg_f.m_task) { + if (nullptr != arg_f.m_task) { // Not scheduled, so task scheduler is not yet set // if ( m_queue != static_cast< BasicTaskScheduler const * >( // arg_f.m_task->m_scheduler )->m_queue ) { diff --git a/lib/kokkos/core/src/Kokkos_Threads.hpp b/lib/kokkos/core/src/Kokkos_Threads.hpp index d44042b062..9dd644df2e 100644 --- a/lib/kokkos/core/src/Kokkos_Threads.hpp +++ b/lib/kokkos/core/src/Kokkos_Threads.hpp @@ -56,6 +56,7 @@ #include #include #include +#include #include /*--------------------------------------------------------------------------*/ @@ -200,11 +201,21 @@ class Threads { } #endif + uint32_t impl_instance_id() const noexcept { return 0; } + static const char* name(); //@} //---------------------------------------- }; +namespace Profiling { +namespace Experimental { +template <> +struct DeviceTypeTraits { + static constexpr DeviceType id = DeviceType::Threads; +}; +} // namespace Experimental +} // namespace Profiling } // namespace Kokkos /*--------------------------------------------------------------------------*/ diff --git a/lib/kokkos/core/src/Kokkos_Timer.hpp b/lib/kokkos/core/src/Kokkos_Timer.hpp index 117f097f66..1dab73b44c 100644 --- a/lib/kokkos/core/src/Kokkos_Timer.hpp +++ b/lib/kokkos/core/src/Kokkos_Timer.hpp @@ -60,7 +60,7 @@ class Timer { public: inline void reset() { m_old = std::chrono::high_resolution_clock::now(); } - inline ~Timer() {} + inline ~Timer() = default; inline Timer() { reset(); } diff --git a/lib/kokkos/core/src/Kokkos_Vectorization.hpp b/lib/kokkos/core/src/Kokkos_Vectorization.hpp index 2604538b1c..cd24734100 100644 --- a/lib/kokkos/core/src/Kokkos_Vectorization.hpp +++ b/lib/kokkos/core/src/Kokkos_Vectorization.hpp @@ -49,6 +49,8 @@ #if defined(KOKKOS_ENABLE_CUDA) #include +#elif defined(KOKKOS_ENABLE_HIP) +#include #endif #endif diff --git a/lib/kokkos/core/src/Kokkos_View.hpp b/lib/kokkos/core/src/Kokkos_View.hpp index 6610bb842b..3d68d780a2 100644 --- a/lib/kokkos/core/src/Kokkos_View.hpp +++ b/lib/kokkos/core/src/Kokkos_View.hpp @@ -450,6 +450,70 @@ struct ViewTraits { template class View; +template +struct is_always_assignable_impl; + +template +struct is_always_assignable_impl, + Kokkos::View> { + using mapping_type = Kokkos::Impl::ViewMapping< + typename Kokkos::View::traits, + typename Kokkos::View::traits, + typename Kokkos::View::traits::specialize>; + + constexpr static bool value = + mapping_type::is_assignable && + static_cast(Kokkos::View::rank_dynamic) >= + static_cast(Kokkos::View::rank_dynamic); +}; + +template +using is_always_assignable = is_always_assignable_impl< + typename std::remove_reference::type, + typename std::remove_const< + typename std::remove_reference::type>::type>; + +#ifdef KOKKOS_ENABLE_CXX17 +template +inline constexpr bool is_always_assignable_v = + is_always_assignable::value; +#endif + +template +constexpr bool is_assignable(const Kokkos::View& dst, + const Kokkos::View& src) { + using DstTraits = typename Kokkos::View::traits; + using SrcTraits = typename Kokkos::View::traits; + using mapping_type = + Kokkos::Impl::ViewMapping; + +#ifdef KOKKOS_ENABLE_CXX17 + return is_always_assignable_v, + Kokkos::View> || +#else + return is_always_assignable, + Kokkos::View>::value || +#endif + (mapping_type::is_assignable && + ((DstTraits::dimension::rank_dynamic >= 1) || + (dst.static_extent(0) == src.extent(0))) && + ((DstTraits::dimension::rank_dynamic >= 2) || + (dst.static_extent(1) == src.extent(1))) && + ((DstTraits::dimension::rank_dynamic >= 3) || + (dst.static_extent(2) == src.extent(2))) && + ((DstTraits::dimension::rank_dynamic >= 4) || + (dst.static_extent(3) == src.extent(3))) && + ((DstTraits::dimension::rank_dynamic >= 5) || + (dst.static_extent(4) == src.extent(4))) && + ((DstTraits::dimension::rank_dynamic >= 6) || + (dst.static_extent(5) == src.extent(5))) && + ((DstTraits::dimension::rank_dynamic >= 7) || + (dst.static_extent(6) == src.extent(6))) && + ((DstTraits::dimension::rank_dynamic >= 8) || + (dst.static_extent(7) == src.extent(7)))); +} + } /* namespace Kokkos */ //---------------------------------------------------------------------------- @@ -793,19 +857,18 @@ class View : public ViewTraits { //---------------------------------------- private: - enum { - is_layout_left = - std::is_same::value, + static constexpr bool is_layout_left = + std::is_same::value; - is_layout_right = - std::is_same::value, + static constexpr bool is_layout_right = + std::is_same::value; - is_layout_stride = std::is_same::value, + static constexpr bool is_layout_stride = + std::is_same::value; - is_default_map = std::is_same::value && - (is_layout_left || is_layout_right || is_layout_stride) - }; + static constexpr bool is_default_map = + std::is_same::value && + (is_layout_left || is_layout_right || is_layout_stride); template ::accessible> @@ -823,6 +886,8 @@ class View : public ViewTraits { #if defined(KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK) +#define KOKKOS_IMPL_SINK(ARG) ARG + #define KOKKOS_IMPL_VIEW_OPERATOR_VERIFY(ARG) \ View::template verify_space< \ Kokkos::Impl::ActiveExecutionMemorySpace>::check(); \ @@ -830,6 +895,8 @@ class View : public ViewTraits { #else +#define KOKKOS_IMPL_SINK(ARG) + #define KOKKOS_IMPL_VIEW_OPERATOR_VERIFY(ARG) \ View::template verify_space< \ Kokkos::Impl::ActiveExecutionMemorySpace>::check(); @@ -1452,8 +1519,9 @@ class View : public ViewTraits { typename std::enable_if<(Kokkos::Impl::are_integral::value && (0 == Rank)), reference_type>::type - access(Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, args...)) + access(Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, args...))) return m_map.reference(); } @@ -1462,8 +1530,9 @@ class View : public ViewTraits { typename std::enable_if<(Kokkos::Impl::are_integral::value && (1 == Rank) && !is_default_map), reference_type>::type - access(const I0& i0, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, args...)) + access(const I0& i0, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, args...))) return m_map.reference(i0); } @@ -1473,8 +1542,9 @@ class View : public ViewTraits { (1 == Rank) && is_default_map && !is_layout_stride), reference_type>::type - access(const I0& i0, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, args...)) + access(const I0& i0, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, args...))) return m_map.m_impl_handle[i0]; } @@ -1484,8 +1554,9 @@ class View : public ViewTraits { (1 == Rank) && is_default_map && is_layout_stride), reference_type>::type - access(const I0& i0, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, args...)) + access(const I0& i0, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, args...))) return m_map.m_impl_handle[m_map.m_impl_offset.m_stride.S0 * i0]; } @@ -1494,8 +1565,9 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (2 == Rank) && !is_default_map), reference_type>::type - access(const I0& i0, const I1& i1, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, args...)) + access(const I0& i0, const I1& i1, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, args...))) return m_map.reference(i0, i1); } @@ -1504,8 +1576,9 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (2 == Rank) && is_default_map && is_layout_left && (traits::rank_dynamic == 0)), reference_type>::type - access(const I0& i0, const I1& i1, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, args...)) + access(const I0& i0, const I1& i1, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, args...))) return m_map.m_impl_handle[i0 + m_map.m_impl_offset.m_dim.N0 * i1]; } @@ -1514,8 +1587,9 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (2 == Rank) && is_default_map && is_layout_left && (traits::rank_dynamic != 0)), reference_type>::type - access(const I0& i0, const I1& i1, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, args...)) + access(const I0& i0, const I1& i1, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, args...))) return m_map.m_impl_handle[i0 + m_map.m_impl_offset.m_stride * i1]; } @@ -1524,8 +1598,9 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (2 == Rank) && is_default_map && is_layout_right && (traits::rank_dynamic == 0)), reference_type>::type - access(const I0& i0, const I1& i1, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, args...)) + access(const I0& i0, const I1& i1, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, args...))) return m_map.m_impl_handle[i1 + m_map.m_impl_offset.m_dim.N1 * i0]; } @@ -1534,8 +1609,9 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (2 == Rank) && is_default_map && is_layout_right && (traits::rank_dynamic != 0)), reference_type>::type - access(const I0& i0, const I1& i1, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, args...)) + access(const I0& i0, const I1& i1, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, args...))) return m_map.m_impl_handle[i1 + m_map.m_impl_offset.m_stride * i0]; } @@ -1544,8 +1620,9 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (2 == Rank) && is_default_map && is_layout_stride), reference_type>::type - access(const I0& i0, const I1& i1, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, args...)) + access(const I0& i0, const I1& i1, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, args...))) return m_map.m_impl_handle[i0 * m_map.m_impl_offset.m_stride.S0 + i1 * m_map.m_impl_offset.m_stride.S1]; } @@ -1558,8 +1635,10 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (3 == Rank) && is_default_map), reference_type>::type - access(const I0& i0, const I1& i1, const I2& i2, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, i2, args...)) + access(const I0& i0, const I1& i1, const I2& i2, + Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, args...))) return m_map.m_impl_handle[m_map.m_impl_offset(i0, i1, i2)]; } @@ -1568,8 +1647,10 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (3 == Rank) && !is_default_map), reference_type>::type - access(const I0& i0, const I1& i1, const I2& i2, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, i2, args...)) + access(const I0& i0, const I1& i1, const I2& i2, + Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, args...))) return m_map.reference(i0, i1, i2); } @@ -1582,8 +1663,9 @@ class View : public ViewTraits { (4 == Rank) && is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, - Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, i2, i3, args...)) + Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, args...))) return m_map.m_impl_handle[m_map.m_impl_offset(i0, i1, i2, i3)]; } @@ -1593,8 +1675,9 @@ class View : public ViewTraits { (4 == Rank) && !is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, - Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, i2, i3, args...)) + Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, args...))) return m_map.reference(i0, i1, i2, i3); } @@ -1608,9 +1691,9 @@ class View : public ViewTraits { (5 == Rank) && is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - Args... args) const { + Args... KOKKOS_IMPL_SINK(args)) const { KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, args...)) + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, i4, args...))) return m_map.m_impl_handle[m_map.m_impl_offset(i0, i1, i2, i3, i4)]; } @@ -1621,9 +1704,9 @@ class View : public ViewTraits { (5 == Rank) && !is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - Args... args) const { + Args... KOKKOS_IMPL_SINK(args)) const { KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, args...)) + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, i4, args...))) return m_map.reference(i0, i1, i2, i3, i4); } @@ -1637,9 +1720,9 @@ class View : public ViewTraits { (6 == Rank) && is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - const I5& i5, Args... args) const { + const I5& i5, Args... KOKKOS_IMPL_SINK(args)) const { KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, i5, args...)) + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, i4, i5, args...))) return m_map.m_impl_handle[m_map.m_impl_offset(i0, i1, i2, i3, i4, i5)]; } @@ -1650,9 +1733,9 @@ class View : public ViewTraits { (6 == Rank) && !is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - const I5& i5, Args... args) const { + const I5& i5, Args... KOKKOS_IMPL_SINK(args)) const { KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, i5, args...)) + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, i4, i5, args...))) return m_map.reference(i0, i1, i2, i3, i4, i5); } @@ -1666,9 +1749,9 @@ class View : public ViewTraits { (7 == Rank) && is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - const I5& i5, const I6& i6, Args... args) const { + const I5& i5, const I6& i6, Args... KOKKOS_IMPL_SINK(args)) const { KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, i5, i6, args...)) + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, i4, i5, i6, args...))) return m_map.m_impl_handle[m_map.m_impl_offset(i0, i1, i2, i3, i4, i5, i6)]; } @@ -1679,9 +1762,9 @@ class View : public ViewTraits { (7 == Rank) && !is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - const I5& i5, const I6& i6, Args... args) const { + const I5& i5, const I6& i6, Args... KOKKOS_IMPL_SINK(args)) const { KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, i5, i6, args...)) + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, i4, i5, i6, args...))) return m_map.reference(i0, i1, i2, i3, i4, i5, i6); } @@ -1696,9 +1779,10 @@ class View : public ViewTraits { (8 == Rank) && is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - const I5& i5, const I6& i6, const I7& i7, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, i5, i6, i7, args...)) + const I5& i5, const I6& i6, const I7& i7, + Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY(KOKKOS_IMPL_SINK( + (m_track, m_map, i0, i1, i2, i3, i4, i5, i6, i7, args...))) return m_map .m_impl_handle[m_map.m_impl_offset(i0, i1, i2, i3, i4, i5, i6, i7)]; } @@ -1711,9 +1795,10 @@ class View : public ViewTraits { (8 == Rank) && !is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - const I5& i5, const I6& i6, const I7& i7, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, i5, i6, i7, args...)) + const I5& i5, const I6& i6, const I7& i7, + Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY(KOKKOS_IMPL_SINK( + (m_track, m_map, i0, i1, i2, i3, i4, i5, i6, i7, args...))) return m_map.reference(i0, i1, i2, i3, i4, i5, i6, i7); } @@ -1722,8 +1807,8 @@ class View : public ViewTraits { //---------------------------------------- // Standard destructor, constructors, and assignment operators - KOKKOS_INLINE_FUNCTION - ~View() {} + KOKKOS_DEFAULTED_FUNCTION + ~View() = default; KOKKOS_INLINE_FUNCTION View() : m_track(), m_map() {} @@ -1759,7 +1844,8 @@ class View : public ViewTraits { const View& rhs, typename std::enable_if::traits, - typename traits::specialize>::is_assignable_data_type>::type* = 0) + typename traits::specialize>::is_assignable_data_type>::type* = + nullptr) : m_track(rhs.m_track, traits::is_managed), m_map() { typedef typename View::traits SrcTraits; typedef Kokkos::Impl::ViewMapping { // If allocating in CudaUVMSpace must fence before and after // the allocation to protect against possible concurrent access // on the CPU and the GPU. - // Fence using the trait's executon space (which will be Kokkos::Cuda) - // to avoid incomplete type errors from usng Kokkos::Cuda directly. + // Fence using the trait's execution space (which will be Kokkos::Cuda) + // to avoid incomplete type errors from using Kokkos::Cuda directly. if (std::is_same::value) { typename traits::device_type::memory_space::execution_space().fence(); diff --git a/lib/kokkos/core/src/Kokkos_WorkGraphPolicy.hpp b/lib/kokkos/core/src/Kokkos_WorkGraphPolicy.hpp index 26df7e03a2..6ff2f0d4b7 100644 --- a/lib/kokkos/core/src/Kokkos_WorkGraphPolicy.hpp +++ b/lib/kokkos/core/src/Kokkos_WorkGraphPolicy.hpp @@ -199,6 +199,8 @@ class WorkGraphPolicy : public Kokkos::Impl::PolicyTraits { if (0 == count_queue[w]) push_work(w); } + execution_space space() const { return execution_space(); } + WorkGraphPolicy(const graph_type& arg_graph) : m_graph(arg_graph), m_queue(view_alloc("queue", WithoutInitializing), diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp index d152fd62dc..21151156e3 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp @@ -149,12 +149,12 @@ void OpenMPExec::clear_thread_data() { { const int rank = omp_get_thread_num(); - if (0 != m_pool[rank]) { + if (nullptr != m_pool[rank]) { m_pool[rank]->disband_pool(); space.deallocate(m_pool[rank], old_alloc_bytes); - m_pool[rank] = 0; + m_pool[rank] = nullptr; } } /* END #pragma omp parallel */ @@ -211,7 +211,7 @@ void OpenMPExec::resize_thread_data(size_t pool_reduce_bytes, { const int rank = omp_get_thread_num(); - if (0 != m_pool[rank]) { + if (nullptr != m_pool[rank]) { m_pool[rank]->disband_pool(); space.deallocate(m_pool[rank], old_alloc_bytes); @@ -447,7 +447,7 @@ void OpenMP::impl_finalize() //---------------------------------------------------------------------------- -void OpenMP::print_configuration(std::ostream &s, const bool verbose) { +void OpenMP::print_configuration(std::ostream &s, const bool /*verbose*/) { s << "Kokkos::OpenMP"; const bool is_initialized = Impl::t_openmp_instance != nullptr; diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.hpp index 6a8773a58f..6614050f02 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.hpp @@ -129,8 +129,6 @@ class OpenMPExec { namespace Kokkos { -inline OpenMP::OpenMP() noexcept {} - inline #ifdef KOKKOS_ENABLE_DEPRECATED_CODE bool @@ -176,20 +174,24 @@ int OpenMP::impl_thread_pool_rank() noexcept #endif } -inline void OpenMP::impl_static_fence(OpenMP const& instance) noexcept {} +inline void OpenMP::impl_static_fence(OpenMP const& /*instance*/) noexcept {} #ifdef KOKKOS_ENABLE_DEPRECATED_CODE inline void OpenMP::fence(OpenMP const& instance) noexcept {} #endif -inline bool OpenMP::is_asynchronous(OpenMP const& instance) noexcept { +inline bool OpenMP::is_asynchronous(OpenMP const& /*instance*/) noexcept { return false; } template void OpenMP::partition_master(F const& f, int num_partitions, int partition_size) { - if (omp_get_nested()) { +#if _OPENMP >= 201811 + if (omp_get_max_active_levels() > 1) { +#else + if (omp_get_nested() > 1) { +#endif using Exec = Impl::OpenMPExec; Exec* prev_instance = Impl::t_openmp_instance; diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel.hpp index 5442119e73..83773ac305 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel.hpp @@ -389,7 +389,7 @@ class ParallelReduce, ReducerType, const ViewType& arg_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_instance(t_openmp_instance), m_functor(arg_functor), m_policy(arg_policy), @@ -551,7 +551,7 @@ class ParallelReduce, ReducerType, const ViewType& arg_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_instance(t_openmp_instance), m_functor(arg_functor), m_mdr_policy(arg_policy), @@ -1146,7 +1146,7 @@ class ParallelReduce, const ViewType& arg_result, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_instance(t_openmp_instance), m_functor(arg_functor), m_policy(arg_policy), diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.hpp index 0cbdfbbdaa..62f0a77d0e 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.hpp @@ -132,14 +132,14 @@ class TaskQueueSpecialization > { auto current_task = OptionalRef(nullptr); - while (not queue.is_done()) { + while (!queue.is_done()) { // Each team lead attempts to acquire either a thread team task // or a single thread task for the team. if (team_exec.team_rank() == 0) { // loop while both: // - the queue is not done // - the most recently popped task is a single task or empty - while (not queue.is_done()) { + while (!queue.is_done()) { current_task = queue.pop_ready_task(team_scheduler.team_scheduler_info()); diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Team.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Team.hpp index 39fd5ae033..f54b6e2d51 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Team.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Team.hpp @@ -62,6 +62,11 @@ class TeamPolicyInternal typedef PolicyTraits traits; + const typename traits::execution_space& space() const { + static typename traits::execution_space m_space; + return m_space; + } + TeamPolicyInternal& operator=(const TeamPolicyInternal& p) { m_league_size = p.m_league_size; m_team_size = p.m_team_size; diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp index 2dd038dce7..ab833b0363 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp @@ -111,14 +111,6 @@ std::string SharedAllocationRecord * -SharedAllocationRecord::allocate( - const Kokkos::Experimental::OpenMPTargetSpace &arg_space, - const std::string &arg_label, const size_t arg_alloc_size) { - return new SharedAllocationRecord(arg_space, arg_label, arg_alloc_size); -} - void SharedAllocationRecord::deallocate(SharedAllocationRecord *arg_rec) { @@ -151,6 +143,8 @@ SharedAllocationRecord:: header.m_label[SharedAllocationHeader::maximum_label_length - 1] = (char)0; // TODO DeepCopy // DeepCopy + Kokkos::Impl::DeepCopy( + RecordBase::m_alloc_ptr, &header, sizeof(SharedAllocationHeader)); } //---------------------------------------------------------------------------- @@ -203,18 +197,22 @@ SharedAllocationRecord typedef SharedAllocationRecord RecordHost; - SharedAllocationHeader const *const head = - alloc_ptr ? Header::get_header(alloc_ptr) : (SharedAllocationHeader *)0; - RecordHost *const record = - head ? static_cast(head->m_record) : (RecordHost *)0; + if (alloc_ptr) { + Header head; + const Header *const head_ompt = Header::get_header(alloc_ptr); - if (!alloc_ptr || record->m_alloc_ptr != head) { - Kokkos::Impl::throw_runtime_exception(std::string( - "Kokkos::Experimental::Impl::SharedAllocationRecord< " - "Kokkos::Experimental::OpenMPTargetSpace , void >::get_record ERROR")); + Kokkos::Impl::DeepCopy( + &head, head_ompt, sizeof(SharedAllocationHeader)); + + RecordHost *record = static_cast(head.m_record); + if (record->m_alloc_ptr == head_ompt) { + return record; + } } - - return record; + Kokkos::Impl::throw_runtime_exception(std::string( + "Kokkos::Experimental::Impl::SharedAllocationRecord< " + "Kokkos::Experimental::OpenMPTargetSpace , void >::get_record ERROR")); + return nullptr; } // Iterate records to print orphaned memory ... diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp index 140a4cb88e..b09dbeba3a 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp @@ -61,17 +61,8 @@ namespace { KOKKOS_INLINE_FUNCTION int kokkos_omp_in_parallel(); -int kokkos_omp_in_critical_region = - (Kokkos::HostSpace::register_in_parallel(kokkos_omp_in_parallel), 0); - KOKKOS_INLINE_FUNCTION -int kokkos_omp_in_parallel() { -#ifndef __CUDA_ARCH__ - return omp_in_parallel() && !kokkos_omp_in_critical_region; -#else - return 0; -#endif -} +int kokkos_omp_in_parallel() { return omp_in_parallel(); } bool s_using_hwloc = false; @@ -79,23 +70,9 @@ bool s_using_hwloc = false; } // namespace Impl } // namespace Kokkos -namespace Kokkos { -namespace Experimental { -bool OpenMPTarget::m_is_initialized = false; -} -} // namespace Kokkos - namespace Kokkos { namespace Impl { -// int OpenMPTargetExec::m_map_rank[ OpenMPTargetExec::MAX_THREAD_COUNT ] = { 0 -// }; - -// int OpenMPTargetExec::m_pool_topo[ 4 ] = { 0 }; - -// OpenMPTargetExec * OpenMPTargetExec::m_pool[ -// OpenMPTargetExec::MAX_THREAD_COUNT ] = { 0 }; - void OpenMPTargetExec::verify_is_process(const char* const label) { if (omp_in_parallel()) { std::string msg(label); @@ -105,28 +82,21 @@ void OpenMPTargetExec::verify_is_process(const char* const label) { } void OpenMPTargetExec::verify_initialized(const char* const label) { - if (0 == Kokkos::Experimental::OpenMPTarget::is_initialized()) { + if (0 == Kokkos::Experimental::OpenMPTarget().impl_is_initialized()) { std::string msg(label); msg.append(" ERROR: not initialized"); Kokkos::Impl::throw_runtime_exception(msg); } - - if (omp_get_max_threads() != - Kokkos::Experimental::OpenMPTarget::thread_pool_size(0)) { - std::string msg(label); - msg.append(" ERROR: Initialized but threads modified inappropriately"); - Kokkos::Impl::throw_runtime_exception(msg); - } } -void* OpenMPTargetExec::m_scratch_ptr = NULL; +void* OpenMPTargetExec::m_scratch_ptr = nullptr; int64_t OpenMPTargetExec::m_scratch_size = 0; void OpenMPTargetExec::clear_scratch() { Kokkos::Experimental::OpenMPTargetSpace space; space.deallocate(m_scratch_ptr, m_scratch_size); - m_scratch_ptr = NULL; - m_scratch_size = NULL; + m_scratch_ptr = nullptr; + m_scratch_size = 0; } void* OpenMPTargetExec::get_scratch_ptr() { return m_scratch_ptr; } @@ -151,122 +121,4 @@ void OpenMPTargetExec::resize_scratch(int64_t reduce_bytes, } // namespace Impl } // namespace Kokkos -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Experimental { -//---------------------------------------------------------------------------- - -int OpenMPTarget::is_initialized() { - return m_is_initialized; -} // != Impl::OpenMPTargetExec::m_pool[0]; } - -void OpenMPTarget::initialize(unsigned thread_count, unsigned use_numa_count, - unsigned use_cores_per_numa) { - // Before any other call to OMP query the maximum number of threads - // and save the value for re-initialization unit testing. - - // Init the array for used for arbitrarily sized atomics - Kokkos::Impl::init_lock_array_host_space(); - -#ifdef KOKKOS_ENABLE_PROFILING - Kokkos::Profiling::initialize(); -#endif - m_is_initialized = true; -} - -//---------------------------------------------------------------------------- - -void OpenMPTarget::finalize() { - Kokkos::Impl::OpenMPTargetExec::verify_initialized("OpenMPTarget::finalize"); - Kokkos::Impl::OpenMPTargetExec::verify_is_process("OpenMPTarget::finalize"); - - m_is_initialized = false; - - omp_set_num_threads(1); - - if (Kokkos::Impl::s_using_hwloc && Kokkos::hwloc::can_bind_threads()) { - hwloc::unbind_this_thread(); - } - -#ifdef KOKKOS_ENABLE_PROFILING - Kokkos::Profiling::finalize(); -#endif -} - -//---------------------------------------------------------------------------- - -void OpenMPTarget::print_configuration(std::ostream& s, const bool detail) { - Kokkos::Impl::OpenMPTargetExec::verify_is_process( - "OpenMPTarget::print_configuration"); - /* - s << "Kokkos::Experimental::OpenMPTarget" ; - - #if defined( KOKKOS_ENABLE_OPENMPTARGET ) - s << " KOKKOS_ENABLE_OPENMPTARGET" ; - #endif - #if defined( KOKKOS_ENABLE_HWLOC ) - - const unsigned numa_count_ = - Kokkos::hwloc::get_available_numa_count(); const unsigned cores_per_numa = - Kokkos::hwloc::get_available_cores_per_numa(); const unsigned threads_per_core - = Kokkos::hwloc::get_available_threads_per_core(); - - s << " hwloc[" << numa_count_ << "x" << cores_per_numa << "x" << - threads_per_core << "]" - << " hwloc_binding_" << ( Impl::s_using_hwloc ? "enabled" : "disabled" ) - ; - #endif - - const bool is_initialized = 0 != Impl::OpenMPTargetExec::m_pool[0] ; - - if ( is_initialized ) { - const int numa_count = Kokkos::Impl::OpenMPTargetExec::m_pool_topo[0] - / Kokkos::Impl::OpenMPTargetExec::m_pool_topo[1] ; const int core_per_numa = - Kokkos::Impl::OpenMPTargetExec::m_pool_topo[1] / - Kokkos::Impl::OpenMPTargetExec::m_pool_topo[2] ; const int thread_per_core = - Kokkos::Impl::OpenMPTargetExec::m_pool_topo[2] ; - - s << " thread_pool_topology[ " << numa_count - << " x " << core_per_numa - << " x " << thread_per_core - << " ]" - << std::endl ; - - if ( detail ) { - std::vector< std::pair > coord( - Kokkos::Impl::OpenMPTargetExec::m_pool_topo[0] ); - - #pragma omp parallel - { - #pragma omp critical - { - coord[ omp_get_thread_num() ] = hwloc::get_this_thread_coordinate(); - } - // END #pragma omp critical - } - // END #pragma omp parallel - - for ( unsigned i = 0 ; i < coord.size() ; ++i ) { - s << " thread omp_rank[" << i << "]" - << " kokkos_rank[" << Impl::OpenMPTargetExec::m_map_rank[ i ] << "]" - << " hwloc_coord[" << coord[i].first << "." << coord[i].second << - "]" - << std::endl ; - } - } - } - else { - s << " not initialized" << std::endl ; - } - */ -} - -int OpenMPTarget::concurrency() { return thread_pool_size(0); } - -const char* OpenMPTarget::name() { return "OpenMPTarget"; } -} // namespace Experimental -} // namespace Kokkos - #endif // KOKKOS_ENABLE_OPENMPTARGET diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.hpp index c9d8543eab..be6ddb5ed4 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.hpp @@ -341,19 +341,39 @@ class TeamPolicyInternal //---------------------------------------- template - inline static int team_size_max(const FunctorType&) { - return 1024; + inline static int team_size_max(const FunctorType&, const ParallelForTag&) { + return 256; } template - inline static int team_size_recommended(const FunctorType&) { + inline static int team_size_max(const FunctorType&, + const ParallelReduceTag&) { + return 256; + } + + template + inline static int team_size_max(const FunctorType&, const ReducerType&, + const ParallelReduceTag&) { return 256; } template inline static int team_size_recommended(const FunctorType&, - const int& vector_length) { - return 256 / vector_length; + const ParallelForTag&) { + return 128; + } + + template + inline static int team_size_recommended(const FunctorType&, + const ParallelReduceTag&) { + return 128; + } + + template + inline static int team_size_recommended(const FunctorType&, + const ReducerType&, + const ParallelReduceTag&) { + return 128; } //---------------------------------------- @@ -391,6 +411,10 @@ class TeamPolicyInternal team_size_ * m_thread_scratch_size[level]; } + inline Kokkos::Experimental::OpenMPTarget space() const { + return Kokkos::Experimental::OpenMPTarget(); + } + /** \brief Specify league size, request team size */ TeamPolicyInternal(typename traits::execution_space&, int league_size_request, int team_size_request, int vector_length_request = 1) @@ -540,8 +564,8 @@ class TeamPolicyInternal private: /** \brief finalize chunk_size if it was set to AUTO*/ inline void set_auto_chunk_size() { - int concurrency = - traits::execution_space::thread_pool_size(0) / m_team_alloc; + int concurrency = 2048 * 128; + if (concurrency == 0) concurrency = 1; if (m_chunk_size > 0) { @@ -568,23 +592,6 @@ class TeamPolicyInternal } // namespace Kokkos -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Experimental { - -inline int OpenMPTarget::thread_pool_size(int depth) { - // return Impl::OpenMPTargetExec::pool_size(depth); - return omp_get_max_threads(); -} - -KOKKOS_INLINE_FUNCTION -int OpenMPTarget::thread_pool_rank() { return omp_get_thread_num(); } - -} // namespace Experimental -} // namespace Kokkos - namespace Kokkos { template diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp new file mode 100644 index 0000000000..011bb1c8e1 --- /dev/null +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp @@ -0,0 +1,50 @@ +#include + +namespace Kokkos { +namespace Experimental { +namespace Impl { +void OpenMPTargetInternal::fence() {} +int OpenMPTargetInternal::concurrency() { return 128000; } +const char* OpenMPTargetInternal::name() { return "OpenMPTarget"; } +void OpenMPTargetInternal::print_configuration(std::ostream& stream, + const bool) { + printf("Using OpenMPTarget\n"); +} + +void OpenMPTargetInternal::impl_finalize() { m_is_initialized = false; } +void OpenMPTargetInternal::impl_initialize() { m_is_initialized = true; } +int OpenMPTargetInternal::impl_is_initialized() { + return m_is_initialized ? 1 : 0; +} + +OpenMPTargetInternal* OpenMPTargetInternal::impl_singleton() { + static OpenMPTargetInternal self; + return &self; +} +} // Namespace Impl + +OpenMPTarget::OpenMPTarget() + : m_space_instance(Impl::OpenMPTargetInternal::impl_singleton()) {} + +const char* OpenMPTarget::name() { + return Impl::OpenMPTargetInternal::impl_singleton()->name(); +} +void OpenMPTarget::print_configuration(std::ostream& stream, + const bool detail) { + m_space_instance->print_configuration(stream, detail); +} + +int OpenMPTarget::concurrency() { + return Impl::OpenMPTargetInternal::impl_singleton()->concurrency(); +} +void OpenMPTarget::fence() { + Impl::OpenMPTargetInternal::impl_singleton()->fence(); +} + +void OpenMPTarget::impl_initialize() { m_space_instance->impl_initialize(); } +void OpenMPTarget::impl_finalize() { m_space_instance->impl_finalize(); } +int OpenMPTarget::impl_is_initialized() { + return Impl::OpenMPTargetInternal::impl_singleton()->impl_is_initialized(); +} +} // Namespace Experimental +} // Namespace Kokkos diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.hpp new file mode 100644 index 0000000000..2087226d7c --- /dev/null +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.hpp @@ -0,0 +1,40 @@ +#include + +namespace Kokkos { +namespace Experimental { +namespace Impl { + +class OpenMPTargetInternal { + private: + OpenMPTargetInternal() = default; + OpenMPTargetInternal(const OpenMPTargetInternal&) = default; + OpenMPTargetInternal& operator=(const OpenMPTargetInternal&) = default; + + public: + void fence(); + + /** \brief Return the maximum amount of concurrency. */ + int concurrency(); + + //! Print configuration information to the given output stream. + void print_configuration(std::ostream&, const bool detail = false); + + static const char* name(); + + //! Free any resources being consumed by the device. + void impl_finalize(); + + //! Has been initialized + int impl_is_initialized(); + + //! Initialize, telling the CUDA run-time library which device to use. + void impl_initialize(); + + static OpenMPTargetInternal* impl_singleton(); + + private: + bool m_is_initialized = false; +}; +} // Namespace Impl +} // Namespace Experimental +} // Namespace Kokkos diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp index 2252cf0372..d5b62f60b8 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp @@ -57,6 +57,374 @@ namespace Kokkos { namespace Impl { +template +struct OpenMPTargetReducerWrapper { + typedef typename Reducer::value_type value_type; + + KOKKOS_INLINE_FUNCTION + static void join(value_type&, const value_type&) { + printf( + "Using a generic unknown Reducer for the OpenMPTarget backend is not " + "implemented."); + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type&, const volatile value_type&) { + printf( + "Using a generic unknown Reducer for the OpenMPTarget backend is not " + "implemented."); + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type&) { + printf( + "Using a generic unknown Reducer for the OpenMPTarget backend is not " + "implemented."); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { dest += src; } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + dest += src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::sum(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { dest *= src; } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + dest *= src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::prod(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + if (src < dest) dest = src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + if (src < dest) dest = src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::min(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + if (src > dest) dest = src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + if (src > dest) dest = src; + } + + // Required + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::max(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + dest = dest && src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + dest = dest && src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::land(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + typedef Kokkos::View result_view_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + dest = dest || src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + dest = dest || src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::lor(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + dest = dest & src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + dest = dest & src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::band(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + dest = dest | src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + dest = dest | src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::bor(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + private: + typedef typename std::remove_cv::type scalar_type; + typedef typename std::remove_cv::type index_type; + + public: + // Required + typedef ValLocScalar value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + if (src.val < dest.val) dest = src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + if (src.val < dest.val) dest = src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val.val = reduction_identity::min(); + val.loc = reduction_identity::min(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + private: + typedef typename std::remove_cv::type scalar_type; + typedef typename std::remove_cv::type index_type; + + public: + // Required + typedef ValLocScalar value_type; + + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + if (src.val > dest.val) dest = src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + if (src.val > dest.val) dest = src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val.val = reduction_identity::max(); + val.loc = reduction_identity::min(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + private: + typedef typename std::remove_cv::type scalar_type; + + public: + // Required + typedef MinMaxScalar value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + if (src.min_val < dest.min_val) { + dest.min_val = src.min_val; + } + if (src.max_val > dest.max_val) { + dest.max_val = src.max_val; + } + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + if (src.min_val < dest.min_val) { + dest.min_val = src.min_val; + } + if (src.max_val > dest.max_val) { + dest.max_val = src.max_val; + } + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val.max_val = reduction_identity::max(); + val.min_val = reduction_identity::min(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + private: + typedef typename std::remove_cv::type scalar_type; + typedef typename std::remove_cv::type index_type; + + public: + // Required + typedef MinMaxLocScalar value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + if (src.min_val < dest.min_val) { + dest.min_val = src.min_val; + dest.min_loc = src.min_loc; + } + if (src.max_val > dest.max_val) { + dest.max_val = src.max_val; + dest.max_loc = src.max_loc; + } + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + if (src.min_val < dest.min_val) { + dest.min_val = src.min_val; + dest.min_loc = src.min_loc; + } + if (src.max_val > dest.max_val) { + dest.max_val = src.max_val; + dest.max_loc = src.max_loc; + } + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val.max_val = reduction_identity::max(); + val.min_val = reduction_identity::min(); + val.max_loc = reduction_identity::min(); + val.min_loc = reduction_identity::min(); + } +}; +/* +template +class OpenMPTargetReducerWrapper { + public: + const ReducerType& reducer; + typedef typename ReducerType::value_type value_type; + value_type& value; + + KOKKOS_INLINE_FUNCTION + void join(const value_type& upd) { + reducer.join(value,upd); + } + + KOKKOS_INLINE_FUNCTION + void init(const value_type& upd) { + reducer.init(value,upd); + } +};*/ + +} // namespace Impl +} // namespace Kokkos + +namespace Kokkos { +namespace Impl { + template class ParallelFor, Kokkos::Experimental::OpenMPTarget> { @@ -71,7 +439,21 @@ class ParallelFor, public: inline void execute() const { execute_impl(); } + /* + template + inline typename std::enable_if::value>::type + execute_impl() const { + OpenMPTargetExec::verify_is_process( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + OpenMPTargetExec::verify_initialized( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + const typename Policy::member_type begin = m_policy.begin(); + const typename Policy::member_type end = m_policy.end(); + #pragma omp target teams distribute parallel for map(to: this->m_functor) + for (int i = begin; i < end; i++) m_functor(i); + } + */ template inline typename std::enable_if::value>::type execute_impl() const { @@ -82,8 +464,12 @@ class ParallelFor, const typename Policy::member_type begin = m_policy.begin(); const typename Policy::member_type end = m_policy.end(); -#pragma omp target teams distribute parallel for map(to : this->m_functor) - for (int i = begin; i < end; i++) m_functor(i); + if (end <= begin) return; + + FunctorType a_functor(m_functor); + +#pragma omp target teams distribute parallel for map(to : a_functor) + for (int i = begin; i < end; i++) a_functor(i); } template @@ -96,10 +482,13 @@ class ParallelFor, const typename Policy::member_type begin = m_policy.begin(); const typename Policy::member_type end = m_policy.end(); + if (end <= begin) return; + + FunctorType a_functor(m_functor); #pragma omp target teams distribute parallel for num_threads(128) \ map(to \ - : this->m_functor) - for (int i = begin; i < end; i++) m_functor(TagType(), i); + : a_functor) + for (int i = begin; i < end; i++) a_functor(TagType(), i); } inline ParallelFor(const FunctorType& arg_functor, Policy arg_policy) @@ -143,8 +532,11 @@ struct ParallelReduceSpecialize, const typename PolicyType::member_type begin = p.begin(); const typename PolicyType::member_type end = p.end(); + if (end <= begin) return; + ValueType result = ValueType(); -#pragma omp target teams distribute parallel for num_teams(512) map(to:f) map(tofrom:result) reduction(+: result) +#pragma omp target teams distribute parallel for num_teams(512) \ + map(to:f) map(tofrom:result) reduction(+: result) for (int i = begin; i < end; i++) f(i, result); *result_ptr = result; @@ -162,8 +554,12 @@ struct ParallelReduceSpecialize, const typename PolicyType::member_type begin = p.begin(); const typename PolicyType::member_type end = p.end(); + if (end <= begin) return; + ValueType result = ValueType(); -#pragma omp target teams distribute parallel for num_teams(512) map(to:f) map(tofrom: result) reduction(+: result) +#pragma omp target teams distribute parallel for \ + num_teams(512) map(to:f) map(tofrom: result) \ + reduction(+: result) for (int i = begin; i < end; i++) f(TagType(), i, result); *result_ptr = result; @@ -174,62 +570,73 @@ struct ParallelReduceSpecialize, execute_impl(f, p, ptr); } }; -/* -template struct ParallelReduceSpecialize { - #pragma omp declare reduction(custom: ValueType : ReducerType::join(omp_out, -omp_in)) initializer ( ReducerType::init(omp_priv) ) +template +struct ParallelReduceSpecialize { +#pragma omp declare reduction( \ + custom:ValueType \ + : OpenMPTargetReducerWrapper ::join(omp_out, omp_in)) \ + initializer(OpenMPTargetReducerWrapper ::init(omp_priv)) - template< class TagType > + template inline static - typename std::enable_if< std::is_same< TagType , void >::value >::type - execute_impl(const FunctorType& f, const PolicyType& p, PointerType -result_ptr) - { - OpenMPTargetExec::verify_is_process("Kokkos::Experimental::OpenMPTarget -parallel_for"); - OpenMPTargetExec::verify_initialized("Kokkos::Experimental::OpenMPTarget -parallel_for"); const typename PolicyType::member_type begin = p.begin(); const -typename PolicyType::member_type end = p.end(); + typename std::enable_if::value>::type + execute_impl(const FunctorType& f, const PolicyType& p, + PointerType result_ptr) { + OpenMPTargetExec::verify_is_process( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + OpenMPTargetExec::verify_initialized( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + const typename PolicyType::member_type begin = p.begin(); + const typename PolicyType::member_type end = p.end(); - ValueType result = ValueType(); - #pragma omp target teams distribute parallel for num_teams(512) map(to:f) -map(tofrom:result) reduction(custom: result) for(int i=begin; i::init(result); +// clang-format off +#pragma omp target teams distribute parallel for num_teams(512) map(to: f) \ + map(tofrom: result) reduction(custom: result) + for (int i = begin; i < end; i++) f(i, result); + // clang-format on - template< class TagType > + *result_ptr = result; + } + + template inline static - typename std::enable_if< ! std::is_same< TagType , void >::value >::type - execute_impl(const FunctorType& f, const PolicyType& p, PointerType -result_ptr) - { - OpenMPTargetExec::verify_is_process("Kokkos::Experimental::OpenMPTarget -parallel_for"); - OpenMPTargetExec::verify_initialized("Kokkos::Experimental::OpenMPTarget -parallel_for"); const typename PolicyType::member_type begin = p.begin(); const -typename PolicyType::member_type end = p.end(); + typename std::enable_if::value>::type + execute_impl(const FunctorType& f, const PolicyType& p, + PointerType result_ptr) { + OpenMPTargetExec::verify_is_process( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + OpenMPTargetExec::verify_initialized( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + const typename PolicyType::member_type begin = p.begin(); + const typename PolicyType::member_type end = p.end(); - ValueType result = ValueType(); - #pragma omp target teams distribute parallel for num_teams(512) map(to:f) -map(tofrom: result) reduction(custom: result) for(int i=begin; i::init(result); +// clang-format off +#pragma omp target teams distribute parallel for num_teams(512) map(to: f) \ + map(tofrom: result) reduction(custom: result) + for (int i = begin; i < end; i++) f(TagType(), i, result); +//clang format on - inline static - void execute(const FunctorType& f, const PolicyType& p, PointerType ptr) { - execute_impl(f,p,ptr); - } + *result_ptr = result; + } + + inline static void execute(const FunctorType& f, const PolicyType& p, + PointerType ptr) { + execute_impl(f, p, ptr); + } }; -*/ template class ParallelReduce, ReducerType, @@ -265,7 +672,7 @@ class ParallelReduce, ReducerType, typedef ParallelReduceSpecialize< FunctorType, Policy, ReducerType, pointer_type, typename ValueTraits::value_type, HasJoin, UseReducer> - ParForSpecialize; + ParReduceSpecialize; const FunctorType m_functor; const Policy m_policy; @@ -274,7 +681,7 @@ class ParallelReduce, ReducerType, public: inline void execute() const { - ParForSpecialize::execute(m_functor, m_policy, m_result_ptr); + ParReduceSpecialize::execute(m_functor, m_policy, m_result_ptr); } template @@ -283,28 +690,18 @@ class ParallelReduce, ReducerType, const ViewType& arg_result_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), - m_result_ptr(arg_result_view.data()) { - /*static_assert( std::is_same< typename ViewType::memory_space - , Kokkos::HostSpace >::value - , "Reduction result on Kokkos::Experimental::OpenMPTarget must be a - Kokkos::View in HostSpace" );*/ - } + m_result_ptr(arg_result_view.data()) {} inline ParallelReduce(const FunctorType& arg_functor, Policy arg_policy, const ReducerType& reducer) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(reducer), - m_result_ptr(reducer.result_view().data()) { - /*static_assert( std::is_same< typename ViewType::memory_space - , Kokkos::HostSpace >::value - , "Reduction result on Kokkos::Experimental::OpenMPTarget must be a - Kokkos::View in HostSpace" );*/ - } + m_result_ptr(reducer.view().data()) {} }; } // namespace Impl @@ -488,10 +885,11 @@ class ParallelFor, 0, 0); void* scratch_ptr = OpenMPTargetExec::get_scratch_ptr(); + FunctorType a_functor(m_functor); #pragma omp target teams distribute parallel for num_teams(league_size) \ num_threads(team_size* vector_length) schedule(static, 1) \ map(to \ - : this->m_functor, scratch_ptr) + : a_functor, scratch_ptr) for (int i = 0; i < league_size * team_size * vector_length; i++) { typename Policy::member_type team(i / (team_size * vector_length), league_size, team_size, vector_length, @@ -513,6 +911,7 @@ class ParallelFor, const int nteams = OpenMPTargetExec::MAX_ACTIVE_TEAMS < league_size ? OpenMPTargetExec::MAX_ACTIVE_TEAMS : league_size; + FunctorType a_functor(m_functor); OpenMPTargetExec::resize_scratch(0, Policy::member_type::TEAM_REDUCE_SIZE, 0, 0); @@ -520,7 +919,7 @@ class ParallelFor, #pragma omp target teams distribute parallel for num_teams(league_size) \ num_threads(team_size* vector_length) schedule(static, 1) \ map(to \ - : this->m_functor, scratch_ptr) + : a_functor, scratch_ptr) for (int i = 0; i < league_size; i++) { typename Policy::member_type team(i / (team_size * vector_length), league_size, team_size, vector_length, @@ -663,7 +1062,7 @@ class ParallelReduce, public: inline void execute() const { - ParForSpecialize::execute(m_functor, m_policy, m_result_ptr); + // ParForSpecialize::execute(m_functor, m_policy, m_result_ptr); } template @@ -672,11 +1071,11 @@ class ParallelReduce, const ViewType& arg_result, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), - m_result_ptr(arg_result.ptr_on_device()), + m_result_ptr(arg_result.data()), m_shmem_size(arg_policy.scratch_size(0) + arg_policy.scratch_size(1) + FunctorTeamShmemSize::value( arg_functor, arg_policy.team_size())) {} @@ -686,7 +1085,7 @@ class ParallelReduce, : m_functor(arg_functor), m_policy(arg_policy), m_reducer(reducer), - m_result_ptr(reducer.result_view().data()), + m_result_ptr(reducer.view().data()), m_shmem_size(arg_policy.scratch_size(0) + arg_policy.scratch_size(1) + FunctorTeamShmemSize::value( arg_functor, arg_policy.team_size())) { diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_MDRange.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_MDRange.hpp new file mode 100644 index 0000000000..4ce2dee122 --- /dev/null +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_MDRange.hpp @@ -0,0 +1,549 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_OPENMPTARGET_PARALLEL_MDRANGE_HPP +#define KOKKOS_OPENMPTARGET_PARALLEL_MDRANGE_HPP + +#include +#include +#include +#include +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template +class ParallelFor, + Kokkos::Experimental::OpenMPTarget> { + private: + typedef Kokkos::MDRangePolicy Policy; + typedef typename Policy::work_tag WorkTag; + typedef typename Policy::member_type Member; + + const FunctorType m_functor; + const Policy m_policy; + + public: + inline void execute() const { + OpenMPTargetExec::verify_is_process( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + OpenMPTargetExec::verify_initialized( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + const int64_t begin = 0; + const int64_t end = m_policy.m_num_tiles; + FunctorType functor(m_functor); + Policy policy = m_policy; +#pragma omp target teams distribute map(to : functor) num_teams(end - begin) + { + for (ptrdiff_t tile_idx = begin; tile_idx < end; tile_idx++) { +#pragma omp parallel + { + typename Policy::point_type offset; + if (Policy::outer_direction == Policy::Left) { + for (int i = 0; i < Policy::rank; ++i) { + offset[i] = (tile_idx % policy.m_tile_end[i]) * policy.m_tile[i] + + policy.m_lower[i]; + tile_idx /= policy.m_tile_end[i]; + } + } else { + for (int i = Policy::rank - 1; i >= 0; --i) { + offset[i] = (tile_idx % policy.m_tile_end[i]) * policy.m_tile[i] + + policy.m_lower[i]; + tile_idx /= policy.m_tile_end[i]; + } + } + execute_tile(offset, functor, policy); + } + } + } + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; +#pragma omp for + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) { + functor(i0); + } + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; + + const ptrdiff_t begin_1 = offset[1]; + ptrdiff_t end_1 = begin_1 + policy.m_tile[1]; + end_1 = end_1 < policy.m_upper[1] ? end_1 : policy.m_upper[1]; + +#pragma omp for collapse(2) + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) + for (ptrdiff_t i1 = begin_1; i1 < end_1; i1++) functor(i0, i1); + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; + + const ptrdiff_t begin_1 = offset[1]; + ptrdiff_t end_1 = begin_1 + policy.m_tile[1]; + end_1 = end_1 < policy.m_upper[1] ? end_1 : policy.m_upper[1]; + + const ptrdiff_t begin_2 = offset[2]; + ptrdiff_t end_2 = begin_2 + policy.m_tile[2]; + end_2 = end_2 < policy.m_upper[2] ? end_2 : policy.m_upper[2]; + +#pragma omp for collapse(3) + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) + for (ptrdiff_t i1 = begin_1; i1 < end_1; i1++) + for (ptrdiff_t i2 = begin_2; i2 < end_2; i2++) functor(i0, i1, i2); + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; + + const ptrdiff_t begin_1 = offset[1]; + ptrdiff_t end_1 = begin_1 + policy.m_tile[1]; + end_1 = end_1 < policy.m_upper[1] ? end_1 : policy.m_upper[1]; + + const ptrdiff_t begin_2 = offset[2]; + ptrdiff_t end_2 = begin_2 + policy.m_tile[2]; + end_2 = end_2 < policy.m_upper[2] ? end_2 : policy.m_upper[2]; + + const ptrdiff_t begin_3 = offset[3]; + ptrdiff_t end_3 = begin_3 + policy.m_tile[3]; + end_3 = end_3 < policy.m_upper[3] ? end_3 : policy.m_upper[3]; + +#pragma omp for collapse(4) + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) + for (ptrdiff_t i1 = begin_1; i1 < end_1; i1++) + for (ptrdiff_t i2 = begin_2; i2 < end_2; i2++) + for (ptrdiff_t i3 = begin_3; i3 < end_3; i3++) + functor(i0, i1, i2, i3); + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; + + const ptrdiff_t begin_1 = offset[1]; + ptrdiff_t end_1 = begin_1 + policy.m_tile[1]; + end_1 = end_1 < policy.m_upper[1] ? end_1 : policy.m_upper[1]; + + const ptrdiff_t begin_2 = offset[2]; + ptrdiff_t end_2 = begin_2 + policy.m_tile[2]; + end_2 = end_2 < policy.m_upper[2] ? end_2 : policy.m_upper[2]; + + const ptrdiff_t begin_3 = offset[3]; + ptrdiff_t end_3 = begin_3 + policy.m_tile[3]; + end_3 = end_3 < policy.m_upper[3] ? end_3 : policy.m_upper[3]; + + const ptrdiff_t begin_4 = offset[4]; + ptrdiff_t end_4 = begin_4 + policy.m_tile[4]; + end_4 = end_4 < policy.m_upper[4] ? end_4 : policy.m_upper[4]; + +#pragma omp for collapse(5) + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) + for (ptrdiff_t i1 = begin_1; i1 < end_1; i1++) + for (ptrdiff_t i2 = begin_2; i2 < end_2; i2++) + for (ptrdiff_t i3 = begin_3; i3 < end_3; i3++) + for (ptrdiff_t i4 = begin_4; i4 < end_4; i4++) + functor(i0, i1, i2, i3, i4); + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; + + const ptrdiff_t begin_1 = offset[1]; + ptrdiff_t end_1 = begin_1 + policy.m_tile[1]; + end_1 = end_1 < policy.m_upper[1] ? end_1 : policy.m_upper[1]; + + const ptrdiff_t begin_2 = offset[2]; + ptrdiff_t end_2 = begin_2 + policy.m_tile[2]; + end_2 = end_2 < policy.m_upper[2] ? end_2 : policy.m_upper[2]; + + const ptrdiff_t begin_3 = offset[3]; + ptrdiff_t end_3 = begin_3 + policy.m_tile[3]; + end_3 = end_3 < policy.m_upper[3] ? end_3 : policy.m_upper[3]; + + const ptrdiff_t begin_4 = offset[4]; + ptrdiff_t end_4 = begin_4 + policy.m_tile[4]; + end_4 = end_4 < policy.m_upper[4] ? end_4 : policy.m_upper[4]; + + const ptrdiff_t begin_5 = offset[5]; + ptrdiff_t end_5 = begin_5 + policy.m_tile[5]; + end_5 = end_5 < policy.m_upper[5] ? end_5 : policy.m_upper[5]; + +#pragma omp for collapse(6) + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) + for (ptrdiff_t i1 = begin_1; i1 < end_1; i1++) + for (ptrdiff_t i2 = begin_2; i2 < end_2; i2++) + for (ptrdiff_t i3 = begin_3; i3 < end_3; i3++) + for (ptrdiff_t i4 = begin_4; i4 < end_4; i4++) + for (ptrdiff_t i5 = begin_5; i5 < end_5; i5++) + functor(i0, i1, i2, i3, i4, i5); + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; + + const ptrdiff_t begin_1 = offset[1]; + ptrdiff_t end_1 = begin_1 + policy.m_tile[1]; + end_1 = end_1 < policy.m_upper[1] ? end_1 : policy.m_upper[1]; + + const ptrdiff_t begin_2 = offset[2]; + ptrdiff_t end_2 = begin_2 + policy.m_tile[2]; + end_2 = end_2 < policy.m_upper[2] ? end_2 : policy.m_upper[2]; + + const ptrdiff_t begin_3 = offset[3]; + ptrdiff_t end_3 = begin_3 + policy.m_tile[3]; + end_3 = end_3 < policy.m_upper[3] ? end_3 : policy.m_upper[3]; + + const ptrdiff_t begin_4 = offset[4]; + ptrdiff_t end_4 = begin_4 + policy.m_tile[4]; + end_4 = end_4 < policy.m_upper[4] ? end_4 : policy.m_upper[4]; + + const ptrdiff_t begin_5 = offset[5]; + ptrdiff_t end_5 = begin_5 + policy.m_tile[5]; + end_5 = end_5 < policy.m_upper[5] ? end_5 : policy.m_upper[5]; + + const ptrdiff_t begin_6 = offset[6]; + ptrdiff_t end_6 = begin_6 + policy.m_tile[6]; + end_6 = end_6 < policy.m_upper[6] ? end_6 : policy.m_upper[6]; + +#pragma omp for collapse(7) + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) + for (ptrdiff_t i1 = begin_1; i1 < end_1; i1++) + for (ptrdiff_t i2 = begin_2; i2 < end_2; i2++) + for (ptrdiff_t i3 = begin_3; i3 < end_3; i3++) + for (ptrdiff_t i4 = begin_4; i4 < end_4; i4++) + for (ptrdiff_t i5 = begin_5; i5 < end_5; i5++) + for (ptrdiff_t i6 = begin_6; i6 < end_6; i6++) + functor(i0, i1, i2, i3, i4, i5, i6); + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; + + const ptrdiff_t begin_1 = offset[1]; + ptrdiff_t end_1 = begin_1 + policy.m_tile[1]; + end_1 = end_1 < policy.m_upper[1] ? end_1 : policy.m_upper[1]; + + const ptrdiff_t begin_2 = offset[2]; + ptrdiff_t end_2 = begin_2 + policy.m_tile[2]; + end_2 = end_2 < policy.m_upper[2] ? end_2 : policy.m_upper[2]; + + const ptrdiff_t begin_3 = offset[3]; + ptrdiff_t end_3 = begin_3 + policy.m_tile[3]; + end_3 = end_3 < policy.m_upper[3] ? end_3 : policy.m_upper[3]; + + const ptrdiff_t begin_4 = offset[4]; + ptrdiff_t end_4 = begin_4 + policy.m_tile[4]; + end_4 = end_4 < policy.m_upper[4] ? end_4 : policy.m_upper[4]; + + const ptrdiff_t begin_5 = offset[5]; + ptrdiff_t end_5 = begin_5 + policy.m_tile[5]; + end_5 = end_5 < policy.m_upper[5] ? end_5 : policy.m_upper[5]; + + const ptrdiff_t begin_6 = offset[6]; + ptrdiff_t end_6 = begin_6 + policy.m_tile[6]; + end_6 = end_6 < policy.m_upper[6] ? end_6 : policy.m_upper[6]; + + const ptrdiff_t begin_7 = offset[7]; + ptrdiff_t end_7 = begin_7 + policy.m_tile[7]; + end_7 = end_7 < policy.m_upper[7] ? end_7 : policy.m_upper[7]; + +#pragma omp for collapse(8) + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) + for (ptrdiff_t i1 = begin_1; i1 < end_1; i1++) + for (ptrdiff_t i2 = begin_2; i2 < end_2; i2++) + for (ptrdiff_t i3 = begin_3; i3 < end_3; i3++) + for (ptrdiff_t i4 = begin_4; i4 < end_4; i4++) + for (ptrdiff_t i5 = begin_5; i5 < end_5; i5++) + for (ptrdiff_t i6 = begin_6; i6 < end_6; i6++) + for (ptrdiff_t i7 = begin_7; i7 < end_7; i7++) + functor(i0, i1, i2, i3, i4, i5, i6, i7); + } + + inline ParallelFor(const FunctorType& arg_functor, Policy arg_policy) + : m_functor(arg_functor), m_policy(arg_policy) {} +}; + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template +struct ParallelReduceSpecialize, + ReducerType, PointerType, ValueType, 0, 0> { + typedef Kokkos::RangePolicy PolicyType; + template + inline static + typename std::enable_if::value>::type + execute_impl(const FunctorType& f, const PolicyType& p, + PointerType result_ptr) { + OpenMPTargetExec::verify_is_process( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + OpenMPTargetExec::verify_initialized( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + const typename PolicyType::member_type begin = p.begin(); + const typename PolicyType::member_type end = p.end(); + + ValueType result = ValueType(); +#pragma omp target teams distribute parallel for num_teams(512) map(to:f) map(tofrom:result) reduction(+: result) + for (int i = begin; i < end; i++) f(i, result); + + *result_ptr = result; + } + + template + inline static + typename std::enable_if::value>::type + execute_impl(const FunctorType& f, const PolicyType& p, + PointerType result_ptr) { + OpenMPTargetExec::verify_is_process( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + OpenMPTargetExec::verify_initialized( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + const typename PolicyType::member_type begin = p.begin(); + const typename PolicyType::member_type end = p.end(); + + ValueType result = ValueType(); +#pragma omp target teams distribute parallel for num_teams(512) map(to:f) map(tofrom: result) reduction(+: result) + for (int i = begin; i < end; i++) f(TagType(), i, result); + + *result_ptr = result; + } + + inline static void execute(const FunctorType& f, const PolicyType& p, + PointerType ptr) { + execute_impl(f, p, ptr); + } +}; +/* +template struct ParallelReduceSpecialize { + + #pragma omp declare reduction(custom: ValueType : ReducerType::join(omp_out, +omp_in)) initializer ( ReducerType::init(omp_priv) ) + + template< class TagType > + inline static + typename std::enable_if< std::is_same< TagType , void >::value >::type + execute_impl(const FunctorType& f, const PolicyType& p, PointerType +result_ptr) + { + OpenMPTargetExec::verify_is_process("Kokkos::Experimental::OpenMPTarget +parallel_for"); + OpenMPTargetExec::verify_initialized("Kokkos::Experimental::OpenMPTarget +parallel_for"); const typename PolicyType::member_type begin = p.begin(); const +typename PolicyType::member_type end = p.end(); + + ValueType result = ValueType(); + #pragma omp target teams distribute parallel for num_teams(512) map(to:f) +map(tofrom:result) reduction(custom: result) for(int i=begin; i + inline static + typename std::enable_if< ! std::is_same< TagType , void >::value >::type + execute_impl(const FunctorType& f, const PolicyType& p, PointerType +result_ptr) + { + OpenMPTargetExec::verify_is_process("Kokkos::Experimental::OpenMPTarget +parallel_for"); + OpenMPTargetExec::verify_initialized("Kokkos::Experimental::OpenMPTarget +parallel_for"); const typename PolicyType::member_type begin = p.begin(); const +typename PolicyType::member_type end = p.end(); + + ValueType result = ValueType(); + #pragma omp target teams distribute parallel for num_teams(512) map(to:f) +map(tofrom: result) reduction(custom: result) for(int i=begin; i(f,p,ptr); + } +}; + + +template +class ParallelReduce, ReducerType, + Kokkos::Experimental::OpenMPTarget> { + private: + typedef Kokkos::MDRangePolicy Policy; + + typedef typename Policy::work_tag WorkTag; + typedef typename Policy::WorkRange WorkRange; + typedef typename Policy::member_type Member; + + typedef Kokkos::Impl::if_c::value, + FunctorType, ReducerType> + ReducerConditional; + typedef typename ReducerConditional::type ReducerTypeFwd; + typedef + typename Kokkos::Impl::if_c::value, + WorkTag, void>::type WorkTagFwd; + + // Static Assert WorkTag void if ReducerType not InvalidType + + typedef Kokkos::Impl::FunctorValueTraits + ValueTraits; + typedef Kokkos::Impl::FunctorValueInit ValueInit; + typedef Kokkos::Impl::FunctorValueJoin ValueJoin; + + enum { HasJoin = ReduceFunctorHasJoin::value }; + enum { UseReducer = is_reducer_type::value }; + + typedef typename ValueTraits::pointer_type pointer_type; + typedef typename ValueTraits::reference_type reference_type; + + typedef ParallelReduceSpecialize< + FunctorType, Policy, ReducerType, pointer_type, + typename ValueTraits::value_type, HasJoin, UseReducer> + ParForSpecialize; + + const FunctorType m_functor; + const Policy m_policy; + const ReducerType m_reducer; + const pointer_type m_result_ptr; + + public: + inline void execute() const { + ParForSpecialize::execute(m_functor, m_policy, m_result_ptr); + } + + template + inline ParallelReduce( + const FunctorType& arg_functor, Policy arg_policy, + const ViewType& arg_result_view, + typename std::enable_if::value && + !Kokkos::is_reducer_type::value, + void*>::type = NULL) + : m_functor(arg_functor), + m_policy(arg_policy), + m_reducer(InvalidType()), + m_result_ptr(arg_result_view.data()) { + //static_assert( std::is_same< typename ViewType::memory_space + // , Kokkos::HostSpace >::value + // , "Reduction result on Kokkos::Experimental::OpenMPTarget must be a + // Kokkos::View in HostSpace" ); + } + + inline ParallelReduce(const FunctorType& arg_functor, Policy arg_policy, + const ReducerType& reducer) + : m_functor(arg_functor), + m_policy(arg_policy), + m_reducer(reducer), + m_result_ptr(reducer.view().data()) { + //static_assert( std::is_same< typename ViewType::memory_space + // , Kokkos::HostSpace >::value + // , "Reduction result on Kokkos::Experimental::OpenMPTarget must be a + // Kokkos::View in HostSpace" ); + } +};*/ + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* KOKKOS_OPENMPTARGET_PARALLEL_HPP */ diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.hpp index a40ec19e79..19956dad2e 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.hpp @@ -113,7 +113,7 @@ class TaskExec { public: #if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) void* team_shared() const { - return m_team_exec ? m_team_exec->scratch_thread() : (void*)0; + return m_team_exec ? m_team_exec->scratch_thread() : nullptr; } int team_shared_size() const { diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.cpp b/lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.cpp deleted file mode 100644 index 4372f3ce80..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.cpp +++ /dev/null @@ -1,535 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#if defined(KOKKOS_ENABLE_QTHREADS) - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -// Defines to enable experimental Qthreads functionality. -//#define QTHREAD_LOCAL_PRIORITY -//#define CLONED_TASKS - -//#include - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -namespace Impl { - -namespace { - -enum { MAXIMUM_QTHREADS_WORKERS = 1024 }; - -/** s_exec is indexed by the reverse rank of the workers - * for faster fan-in / fan-out lookups - * [ n - 1, n - 2, ..., 0 ] - */ -QthreadsExec *s_exec[MAXIMUM_QTHREADS_WORKERS]; - -int s_number_shepherds = 0; -int s_number_workers_per_shepherd = 0; -int s_number_workers = 0; - -inline QthreadsExec **worker_exec() { - return s_exec + s_number_workers - - (qthread_shep() * s_number_workers_per_shepherd + - qthread_worker_local(NULL) + 1); -} - -const int s_base_size = QthreadsExec::align_alloc(sizeof(QthreadsExec)); - -int s_worker_reduce_end = 0; // End of worker reduction memory. -int s_worker_shared_end = 0; // Total of worker scratch memory. -int s_worker_shared_begin = 0; // Beginning of worker shared memory. - -QthreadsExecFunctionPointer volatile s_active_function = 0; -const void *volatile s_active_function_arg = 0; - -} // namespace - -} // namespace Impl - -} // namespace Kokkos - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -int Qthreads::is_initialized() { return Impl::s_number_workers != 0; } - -int Qthreads::concurrency() { return Impl::s_number_workers_per_shepherd; } - -int Qthreads::in_parallel() { return Impl::s_active_function != 0; } - -void Qthreads::initialize(int thread_count) { - // Environment variable: QTHREAD_NUM_SHEPHERDS - // Environment variable: QTHREAD_NUM_WORKERS_PER_SHEP - // Environment variable: QTHREAD_HWPAR - - { - char buffer[256]; - snprintf(buffer, sizeof(buffer), "QTHREAD_HWPAR=%d", thread_count); - putenv(buffer); - } - - const bool ok_init = - (QTHREAD_SUCCESS == qthread_initialize()) && - (thread_count == - qthread_num_shepherds() * qthread_num_workers_local(NO_SHEPHERD)) && - (thread_count == qthread_num_workers()); - - bool ok_symmetry = true; - - if (ok_init) { - Impl::s_number_shepherds = qthread_num_shepherds(); - Impl::s_number_workers_per_shepherd = - qthread_num_workers_local(NO_SHEPHERD); - Impl::s_number_workers = - Impl::s_number_shepherds * Impl::s_number_workers_per_shepherd; - - for (int i = 0; ok_symmetry && i < Impl::s_number_shepherds; ++i) { - ok_symmetry = - (Impl::s_number_workers_per_shepherd == qthread_num_workers_local(i)); - } - } - - if (!ok_init || !ok_symmetry) { - std::ostringstream msg; - - msg << "Kokkos::Qthreads::initialize(" << thread_count << ") FAILED"; - msg << " : qthread_num_shepherds = " << qthread_num_shepherds(); - msg << " : qthread_num_workers_per_shepherd = " - << qthread_num_workers_local(NO_SHEPHERD); - msg << " : qthread_num_workers = " << qthread_num_workers(); - - if (!ok_symmetry) { - msg << " : qthread_num_workers_local = {"; - for (int i = 0; i < Impl::s_number_shepherds; ++i) { - msg << " " << qthread_num_workers_local(i); - } - msg << " }"; - } - - Impl::s_number_workers = 0; - Impl::s_number_shepherds = 0; - Impl::s_number_workers_per_shepherd = 0; - - if (ok_init) { - qthread_finalize(); - } - - Kokkos::Impl::throw_runtime_exception(msg.str()); - } - - Impl::QthreadsExec::resize_worker_scratch(256, 256); - - // Init the array for used for arbitrarily sized atomics. - Impl::init_lock_array_host_space(); -} - -void Qthreads::finalize() { - Impl::QthreadsExec::clear_workers(); - - if (Impl::s_number_workers) { - qthread_finalize(); - } - - Impl::s_number_workers = 0; - Impl::s_number_shepherds = 0; - Impl::s_number_workers_per_shepherd = 0; -} - -void Qthreads::print_configuration(std::ostream &s, const bool detail) { - s << "Kokkos::Qthreads {" - << " num_shepherds(" << Impl::s_number_shepherds << ")" - << " num_workers_per_shepherd(" << Impl::s_number_workers_per_shepherd - << ")" - << " }" << std::endl; -} - -Qthreads &Qthreads::instance(int) { - static Qthreads q; - return q; -} - -void Qthreads::fence() {} - -int Qthreads::shepherd_size() const { return Impl::s_number_shepherds; } -int Qthreads::shepherd_worker_size() const { - return Impl::s_number_workers_per_shepherd; -} - -const char *Qthreads::name() { return "Qthreads"; } - -} // namespace Kokkos - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -namespace Impl { - -namespace { - -aligned_t driver_exec_all(void *arg) { - QthreadsExec &exec = **worker_exec(); - - (*s_active_function)(exec, s_active_function_arg); - - /* - fprintf( stdout - , "QthreadsExec driver worker(%d:%d) shepherd(%d:%d) - shepherd_worker(%d:%d) done\n" , exec.worker_rank() , exec.worker_size() , - exec.shepherd_rank() , exec.shepherd_size() , exec.shepherd_worker_rank() , - exec.shepherd_worker_size() - ); - fflush(stdout); - */ - - return 0; -} - -aligned_t driver_resize_worker_scratch(void *arg) { - static volatile int lock_begin = 0; - static volatile int lock_end = 0; - - QthreadsExec **const exec = worker_exec(); - - //---------------------------------------- - // Serialize allocation for thread safety. - - while (!atomic_compare_exchange_strong(&lock_begin, 0, 1)) - ; // Spin wait to claim lock. - - const bool ok = 0 == *exec; - - if (ok) { - *exec = (QthreadsExec *)malloc(s_base_size + s_worker_shared_end); - } - - lock_begin = 0; // Release lock. - - if (ok) { - new (*exec) QthreadsExec(); - } - - //---------------------------------------- - // Wait for all calls to complete to insure that each worker has executed. - - if (s_number_workers == 1 + atomic_fetch_add(&lock_end, 1)) { - lock_end = 0; - } - - while (lock_end) - ; - - /* - fprintf( stdout - , "QthreadsExec resize worker(%d:%d) shepherd(%d:%d) - shepherd_worker(%d:%d) done\n" , (**exec).worker_rank() , - (**exec).worker_size() , (**exec).shepherd_rank() , (**exec).shepherd_size() - , (**exec).shepherd_worker_rank() - , (**exec).shepherd_worker_size() - ); - fflush(stdout); - */ - - //---------------------------------------- - - if (!ok) { - fprintf(stderr, "Kokkos::QthreadsExec resize failed\n"); - fflush(stderr); - } - - return 0; -} - -void verify_is_process(const char *const label, bool not_active = false) { - const bool not_process = - 0 != qthread_shep() || 0 != qthread_worker_local(NULL); - const bool is_active = - not_active && (s_active_function || s_active_function_arg); - - if (not_process || is_active) { - std::string msg(label); - msg.append(" : FAILED"); - if (not_process) msg.append(" : not called by main process"); - if (is_active) msg.append(" : parallel execution in progress"); - Kokkos::Impl::throw_runtime_exception(msg); - } -} - -} // namespace - -int QthreadsExec::worker_per_shepherd() { - return s_number_workers_per_shepherd; -} - -QthreadsExec::QthreadsExec() { - const int shepherd_rank = qthread_shep(); - const int shepherd_worker_rank = qthread_worker_local(NULL); - const int worker_rank = - shepherd_rank * s_number_workers_per_shepherd + shepherd_worker_rank; - - m_worker_base = s_exec; - m_shepherd_base = s_exec + s_number_workers_per_shepherd * - ((s_number_shepherds - (shepherd_rank + 1))); - m_scratch_alloc = ((unsigned char *)this) + s_base_size; - m_reduce_end = s_worker_reduce_end; - m_shepherd_rank = shepherd_rank; - m_shepherd_size = s_number_shepherds; - m_shepherd_worker_rank = shepherd_worker_rank; - m_shepherd_worker_size = s_number_workers_per_shepherd; - m_worker_rank = worker_rank; - m_worker_size = s_number_workers; - m_worker_state = QthreadsExec::Active; -} - -void QthreadsExec::clear_workers() { - for (int iwork = 0; iwork < s_number_workers; ++iwork) { - QthreadsExec *const exec = s_exec[iwork]; - s_exec[iwork] = 0; - free(exec); - } -} - -void QthreadsExec::shared_reset(Qthreads::scratch_memory_space &space) { - new (&space) Qthreads::scratch_memory_space( - ((unsigned char *)(**m_shepherd_base).m_scratch_alloc) + - s_worker_shared_begin, - s_worker_shared_end - s_worker_shared_begin); -} - -void QthreadsExec::resize_worker_scratch(const int reduce_size, - const int shared_size) { - const int exec_all_reduce_alloc = align_alloc(reduce_size); - const int shepherd_scan_alloc = align_alloc(8); - const int shepherd_shared_end = - exec_all_reduce_alloc + shepherd_scan_alloc + align_alloc(shared_size); - - if (s_worker_reduce_end < exec_all_reduce_alloc || - s_worker_shared_end < shepherd_shared_end) { - /* - fprintf( stdout, "QthreadsExec::resize\n"); - fflush(stdout); - */ - - // Clear current worker memory before allocating new worker memory. - clear_workers(); - - // Increase the buffers to an aligned allocation. - s_worker_reduce_end = exec_all_reduce_alloc; - s_worker_shared_begin = exec_all_reduce_alloc + shepherd_scan_alloc; - s_worker_shared_end = shepherd_shared_end; - - // Need to query which shepherd this main 'process' is running. - - const int main_shep = qthread_shep(); - - // Have each worker resize its memory for proper first-touch. -#if 0 - for ( int jshep = 0; jshep < s_number_shepherds; ++jshep ) { - for ( int i = jshep != main_shep ? 0 : 1; i < s_number_workers_per_shepherd; ++i ) { - qthread_fork_to( driver_resize_worker_scratch, NULL, NULL, jshep ); - } - } -#else - // If this function is used before the 'qthreads.task_policy' unit test, - // the 'qthreads.task_policy' unit test fails with a seg-fault within - // libqthread.so. - for (int jshep = 0; jshep < s_number_shepherds; ++jshep) { - const int num_clone = jshep != main_shep - ? s_number_workers_per_shepherd - : s_number_workers_per_shepherd - 1; - - if (num_clone) { - const int ret = qthread_fork_clones_to_local_priority( - driver_resize_worker_scratch // Function - , - NULL // Function data block - , - NULL // Pointer to return value feb - , - jshep // Shepherd number - , - num_clone - 1 // Number of instances - 1 - ); - - assert(ret == QTHREAD_SUCCESS); - } - } -#endif - - driver_resize_worker_scratch(NULL); - - // Verify all workers allocated. - - bool ok = true; - for (int iwork = 0; ok && iwork < s_number_workers; ++iwork) { - ok = 0 != s_exec[iwork]; - } - - if (!ok) { - std::ostringstream msg; - msg << "Kokkos::Impl::QthreadsExec::resize : FAILED for workers {"; - for (int iwork = 0; iwork < s_number_workers; ++iwork) { - if (0 == s_exec[iwork]) { - msg << " " << (s_number_workers - (iwork + 1)); - } - } - msg << " }"; - Kokkos::Impl::throw_runtime_exception(msg.str()); - } - } -} - -void QthreadsExec::exec_all(Qthreads &, QthreadsExecFunctionPointer func, - const void *arg) { - verify_is_process("QthreadsExec::exec_all(...)", true); - - /* - fprintf( stdout, "QthreadsExec::exec_all\n"); - fflush(stdout); - */ - - s_active_function = func; - s_active_function_arg = arg; - - // Need to query which shepherd this main 'process' is running. - - const int main_shep = qthread_shep(); - -#if 0 - for ( int jshep = 0, iwork = 0; jshep < s_number_shepherds; ++jshep ) { - for ( int i = jshep != main_shep ? 0 : 1; i < s_number_workers_per_shepherd; ++i, ++iwork ) { - qthread_fork_to( driver_exec_all, NULL, NULL, jshep ); - } - } -#else - // If this function is used before the 'qthreads.task_policy' unit test, - // the 'qthreads.task_policy' unit test fails with a seg-fault within - // libqthread.so. - for (int jshep = 0; jshep < s_number_shepherds; ++jshep) { - const int num_clone = jshep != main_shep - ? s_number_workers_per_shepherd - : s_number_workers_per_shepherd - 1; - - if (num_clone) { - const int ret = qthread_fork_clones_to_local_priority( - driver_exec_all // Function - , - NULL // Function data block - , - NULL // Pointer to return value feb - , - jshep // Shepherd number - , - num_clone - 1 // Number of instances - 1 - ); - - assert(ret == QTHREAD_SUCCESS); - } - } -#endif - - driver_exec_all(NULL); - - s_active_function = 0; - s_active_function_arg = 0; -} - -void *QthreadsExec::exec_all_reduce_result() { - return s_exec[0]->m_scratch_alloc; -} - -} // namespace Impl - -} // namespace Kokkos - -namespace Kokkos { - -namespace Impl { - -QthreadsTeamPolicyMember::QthreadsTeamPolicyMember() - : m_exec(**worker_exec()), - m_team_shared(0, 0), - m_team_size(1), - m_team_rank(0), - m_league_size(1), - m_league_end(1), - m_league_rank(0) { - m_exec.shared_reset(m_team_shared); -} - -QthreadsTeamPolicyMember::QthreadsTeamPolicyMember( - const QthreadsTeamPolicyMember::TaskTeam &) - : m_exec(**worker_exec()), - m_team_shared(0, 0), - m_team_size(s_number_workers_per_shepherd), - m_team_rank(m_exec.shepherd_worker_rank()), - m_league_size(1), - m_league_end(1), - m_league_rank(0) { - m_exec.shared_reset(m_team_shared); -} - -} // namespace Impl - -} // namespace Kokkos - -#else -void KOKKOS_SRC_QTHREADS_EXEC_PREVENT_LINK_ERROR() {} -#endif // #if defined( KOKKOS_ENABLE_QTHREADS ) diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.hpp b/lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.hpp deleted file mode 100644 index aa0fd73a4a..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.hpp +++ /dev/null @@ -1,687 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#ifndef KOKKOS_QTHREADSEXEC_HPP -#define KOKKOS_QTHREADSEXEC_HPP - -#include -#if defined(KOKKOS_ENABLE_QTHREADS) - -#include - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -namespace Impl { - -class QthreadsExec; - -typedef void (*QthreadsExecFunctionPointer)(QthreadsExec &, const void *); - -class QthreadsExec { - private: - enum { Inactive = 0, Active = 1 }; - - const QthreadsExec *const *m_worker_base; - const QthreadsExec *const *m_shepherd_base; - - void *m_scratch_alloc; ///< Scratch memory [ reduce, team, shared ] - int m_reduce_end; ///< End of scratch reduction memory - - int m_shepherd_rank; - int m_shepherd_size; - - int m_shepherd_worker_rank; - int m_shepherd_worker_size; - - /* - * m_worker_rank = m_shepherd_rank * m_shepherd_worker_size + - * m_shepherd_worker_rank m_worker_size = m_shepherd_size * - * m_shepherd_worker_size - */ - int m_worker_rank; - int m_worker_size; - - int mutable volatile m_worker_state; - - friend class Kokkos::Qthreads; - - ~QthreadsExec(); - QthreadsExec(const QthreadsExec &); - QthreadsExec &operator=(const QthreadsExec &); - - public: - QthreadsExec(); - - /** Execute the input function on all available Qthreads workers. */ - static void exec_all(Qthreads &, QthreadsExecFunctionPointer, const void *); - - /** Barrier across all workers participating in the 'exec_all'. */ - void exec_all_barrier() const { - const int rev_rank = m_worker_size - (m_worker_rank + 1); - - int n, j; - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < m_worker_size); - n <<= 1) { - Impl::spinwait_while_equal(m_worker_base[j]->m_worker_state, - QthreadsExec::Active); - } - - if (rev_rank) { - m_worker_state = QthreadsExec::Inactive; - Impl::spinwait_while_equal(m_worker_state, QthreadsExec::Inactive); - } - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < m_worker_size); - n <<= 1) { - m_worker_base[j]->m_worker_state = QthreadsExec::Active; - } - } - - /** Barrier across workers within the shepherd with rank < team_rank. */ - void shepherd_barrier(const int team_size) const { - if (m_shepherd_worker_rank < team_size) { - const int rev_rank = team_size - (m_shepherd_worker_rank + 1); - - int n, j; - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - Impl::spinwait_while_equal(m_shepherd_base[j]->m_worker_state, - QthreadsExec::Active); - } - - if (rev_rank) { - m_worker_state = QthreadsExec::Inactive; - Impl::spinwait_while_equal(m_worker_state, QthreadsExec::Inactive); - } - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - m_shepherd_base[j]->m_worker_state = QthreadsExec::Active; - } - } - } - - /** Reduce across all workers participating in the 'exec_all'. */ - template - inline void exec_all_reduce(const FunctorType &func, - const ReducerType &reduce) const { - typedef Kokkos::Impl::if_c::value, - FunctorType, ReducerType> - ReducerConditional; - typedef typename ReducerConditional::type ReducerTypeFwd; - typedef Kokkos::Impl::FunctorValueJoin ValueJoin; - - const int rev_rank = m_worker_size - (m_worker_rank + 1); - - int n, j; - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < m_worker_size); - n <<= 1) { - const QthreadsExec &fan = *m_worker_base[j]; - - Impl::spinwait_while_equal(fan.m_worker_state, QthreadsExec::Active); - - ValueJoin::join(ReducerConditional::select(func, reduce), m_scratch_alloc, - fan.m_scratch_alloc); - } - - if (rev_rank) { - m_worker_state = QthreadsExec::Inactive; - Impl::spinwait_while_equal(m_worker_state, QthreadsExec::Inactive); - } - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < m_worker_size); - n <<= 1) { - m_worker_base[j]->m_worker_state = QthreadsExec::Active; - } - } - - /** Scan across all workers participating in the 'exec_all'. */ - template - inline void exec_all_scan(const FunctorType &func) const { - typedef Kokkos::Impl::FunctorValueInit ValueInit; - typedef Kokkos::Impl::FunctorValueJoin ValueJoin; - typedef Kokkos::Impl::FunctorValueOps ValueOps; - - const int rev_rank = m_worker_size - (m_worker_rank + 1); - - int n, j; - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < m_worker_size); - n <<= 1) { - Impl::spinwait_while_equal(m_worker_base[j]->m_worker_state, - QthreadsExec::Active); - } - - if (rev_rank) { - m_worker_state = QthreadsExec::Inactive; - Impl::spinwait_while_equal(m_worker_state, QthreadsExec::Inactive); - } else { - // Root thread scans across values before releasing threads. - // Worker data is in reverse order, so m_worker_base[0] is the - // highest ranking thread. - - // Copy from lower ranking to higher ranking worker. - for (int i = 1; i < m_worker_size; ++i) { - ValueOps::copy(func, m_worker_base[i - 1]->m_scratch_alloc, - m_worker_base[i]->m_scratch_alloc); - } - - ValueInit::init(func, m_worker_base[m_worker_size - 1]->m_scratch_alloc); - - // Join from lower ranking to higher ranking worker. - // Value at m_worker_base[n-1] is zero so skip adding it to - // m_worker_base[n-2]. - for (int i = m_worker_size - 1; --i > 0;) { - ValueJoin::join(func, m_worker_base[i - 1]->m_scratch_alloc, - m_worker_base[i]->m_scratch_alloc); - } - } - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < m_worker_size); - n <<= 1) { - m_worker_base[j]->m_worker_state = QthreadsExec::Active; - } - } - - //---------------------------------------- - - template - inline volatile Type *shepherd_team_scratch_value() const { - return (volatile Type *)(((unsigned char *)m_scratch_alloc) + m_reduce_end); - } - - template - inline void shepherd_broadcast(Type &value, const int team_size, - const int team_rank) const { - if (m_shepherd_base) { - Type *const shared_value = - m_shepherd_base[0]->shepherd_team_scratch_value(); - if (m_shepherd_worker_rank == team_rank) { - *shared_value = value; - } - memory_fence(); - shepherd_barrier(team_size); - value = *shared_value; - } - } - - template - inline Type shepherd_reduce(const int team_size, const Type &value) const { - volatile Type *const shared_value = shepherd_team_scratch_value(); - *shared_value = value; - // *shepherd_team_scratch_value() = value; - - memory_fence(); - - const int rev_rank = team_size - (m_shepherd_worker_rank + 1); - - int n, j; - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - Impl::spinwait_while_equal(m_shepherd_base[j]->m_worker_state, - QthreadsExec::Active); - } - - if (rev_rank) { - m_worker_state = QthreadsExec::Inactive; - Impl::spinwait_while_equal(m_worker_state, QthreadsExec::Inactive); - } else { - Type &accum = *m_shepherd_base[0]->shepherd_team_scratch_value(); - for (int i = 1; i < n; ++i) { - accum += *m_shepherd_base[i]->shepherd_team_scratch_value(); - } - for (int i = 1; i < n; ++i) { - *m_shepherd_base[i]->shepherd_team_scratch_value() = accum; - } - - memory_fence(); - } - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - m_shepherd_base[j]->m_worker_state = QthreadsExec::Active; - } - - return *shepherd_team_scratch_value(); - } - - template - inline typename JoinOp::value_type shepherd_reduce( - const int team_size, const typename JoinOp::value_type &value, - const JoinOp &op) const { - typedef typename JoinOp::value_type Type; - - volatile Type *const shared_value = shepherd_team_scratch_value(); - *shared_value = value; - // *shepherd_team_scratch_value() = value; - - memory_fence(); - - const int rev_rank = team_size - (m_shepherd_worker_rank + 1); - - int n, j; - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - Impl::spinwait_while_equal(m_shepherd_base[j]->m_worker_state, - QthreadsExec::Active); - } - - if (rev_rank) { - m_worker_state = QthreadsExec::Inactive; - Impl::spinwait_while_equal(m_worker_state, QthreadsExec::Inactive); - } else { - volatile Type &accum = - *m_shepherd_base[0]->shepherd_team_scratch_value(); - for (int i = 1; i < team_size; ++i) { - op.join(accum, - *m_shepherd_base[i]->shepherd_team_scratch_value()); - } - for (int i = 1; i < team_size; ++i) { - *m_shepherd_base[i]->shepherd_team_scratch_value() = accum; - } - - memory_fence(); - } - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - m_shepherd_base[j]->m_worker_state = QthreadsExec::Active; - } - - return *shepherd_team_scratch_value(); - } - - template - inline Type shepherd_scan(const int team_size, const Type &value, - Type *const global_value = 0) const { - *shepherd_team_scratch_value() = value; - - memory_fence(); - - const int rev_rank = team_size - (m_shepherd_worker_rank + 1); - - int n, j; - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - Impl::spinwait_while_equal(m_shepherd_base[j]->m_worker_state, - QthreadsExec::Active); - } - - if (rev_rank) { - m_worker_state = QthreadsExec::Inactive; - Impl::spinwait_while_equal(m_worker_state, QthreadsExec::Inactive); - } else { - // Root thread scans across values before releasing threads. - // Worker data is in reverse order, so m_shepherd_base[0] is the - // highest ranking thread. - - // Copy from lower ranking to higher ranking worker. - - Type accum = *m_shepherd_base[0]->shepherd_team_scratch_value(); - for (int i = 1; i < team_size; ++i) { - const Type tmp = - *m_shepherd_base[i]->shepherd_team_scratch_value(); - accum += tmp; - *m_shepherd_base[i - 1]->shepherd_team_scratch_value() = tmp; - } - - *m_shepherd_base[team_size - 1]->shepherd_team_scratch_value() = - global_value ? atomic_fetch_add(global_value, accum) : 0; - - // Join from lower ranking to higher ranking worker. - for (int i = team_size; --i;) { - *m_shepherd_base[i - 1]->shepherd_team_scratch_value() += - *m_shepherd_base[i]->shepherd_team_scratch_value(); - } - - memory_fence(); - } - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - m_shepherd_base[j]->m_worker_state = QthreadsExec::Active; - } - - return *shepherd_team_scratch_value(); - } - - //---------------------------------------- - - static inline int align_alloc(int size) { - enum { ALLOC_GRAIN = 1 << 6 /* power of two, 64bytes */ }; - enum { ALLOC_GRAIN_MASK = ALLOC_GRAIN - 1 }; - return (size + ALLOC_GRAIN_MASK) & ~ALLOC_GRAIN_MASK; - } - - void shared_reset(Qthreads::scratch_memory_space &); - - void *exec_all_reduce_value() const { return m_scratch_alloc; } - - static void *exec_all_reduce_result(); - - static void resize_worker_scratch(const int reduce_size, - const int shared_size); - static void clear_workers(); - - //---------------------------------------- - - inline int worker_rank() const { return m_worker_rank; } - inline int worker_size() const { return m_worker_size; } - inline int shepherd_worker_rank() const { return m_shepherd_worker_rank; } - inline int shepherd_worker_size() const { return m_shepherd_worker_size; } - inline int shepherd_rank() const { return m_shepherd_rank; } - inline int shepherd_size() const { return m_shepherd_size; } - - static int worker_per_shepherd(); -}; - -} // namespace Impl - -} // namespace Kokkos - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -namespace Impl { - -class QthreadsTeamPolicyMember { - private: - typedef Kokkos::Qthreads execution_space; - typedef execution_space::scratch_memory_space scratch_memory_space; - - Impl::QthreadsExec &m_exec; - scratch_memory_space m_team_shared; - const int m_team_size; - const int m_team_rank; - const int m_league_size; - const int m_league_end; - int m_league_rank; - - public: - KOKKOS_INLINE_FUNCTION - const scratch_memory_space &team_shmem() const { return m_team_shared; } - - KOKKOS_INLINE_FUNCTION int league_rank() const { return m_league_rank; } - KOKKOS_INLINE_FUNCTION int league_size() const { return m_league_size; } - KOKKOS_INLINE_FUNCTION int team_rank() const { return m_team_rank; } - KOKKOS_INLINE_FUNCTION int team_size() const { return m_team_size; } - - KOKKOS_INLINE_FUNCTION void team_barrier() const -#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - { - } -#else - { - m_exec.shepherd_barrier(m_team_size); - } -#endif - - template - KOKKOS_INLINE_FUNCTION Type team_broadcast(const Type &value, int rank) const -#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - { - return Type(); - } -#else - { - return m_exec.template shepherd_broadcast(value, m_team_size, rank); - } -#endif - - template - KOKKOS_INLINE_FUNCTION Type team_reduce(const Type &value) const -#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - { - return Type(); - } -#else - { - return m_exec.template shepherd_reduce(m_team_size, value); - } -#endif - - template - KOKKOS_INLINE_FUNCTION typename JoinOp::value_type team_reduce( - const typename JoinOp::value_type &value, const JoinOp &op) const -#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - { - return typename JoinOp::value_type(); - } -#else - { - return m_exec.template shepherd_reduce(m_team_size, value, op); - } -#endif - - /** \brief Intra-team exclusive prefix sum with team_rank() ordering. - * - * The highest rank thread can compute the reduction total as - * reduction_total = dev.team_scan( value ) + value; - */ - template - KOKKOS_INLINE_FUNCTION Type team_scan(const Type &value) const -#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - { - return Type(); - } -#else - { - return m_exec.template shepherd_scan(m_team_size, value); - } -#endif - - /** \brief Intra-team exclusive prefix sum with team_rank() ordering - * with intra-team non-deterministic ordering accumulation. - * - * The global inter-team accumulation value will, at the end of the league's - * parallel execution, be the scan's total. Parallel execution ordering of - * the league's teams is non-deterministic. As such the base value for each - * team's scan operation is similarly non-deterministic. - */ - template - KOKKOS_INLINE_FUNCTION Type team_scan(const Type &value, - Type *const global_accum) const -#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - { - return Type(); - } -#else - { - return m_exec.template shepherd_scan(m_team_size, value, - global_accum); - } -#endif - - //---------------------------------------- - // Private driver for task-team parallel. - - struct TaskTeam {}; - - QthreadsTeamPolicyMember(); - explicit QthreadsTeamPolicyMember(const TaskTeam &); - - //---------------------------------------- - // Private for the driver ( for ( member_type i( exec, team ); i; - // i.next_team() ) { ... } - - // Initialize. - template - QthreadsTeamPolicyMember( - Impl::QthreadsExec &exec, - const Kokkos::Impl::TeamPolicyInternal &team) - : m_exec(exec), - m_team_shared(0, 0), - m_team_size(team.m_team_size), - m_team_rank(exec.shepherd_worker_rank()), - m_league_size(team.m_league_size), - m_league_end(team.m_league_size - - team.m_shepherd_iter * - (exec.shepherd_size() - (exec.shepherd_rank() + 1))), - m_league_rank(m_league_end > team.m_shepherd_iter - ? m_league_end - team.m_shepherd_iter - : 0) { - m_exec.shared_reset(m_team_shared); - } - - // Continue. - operator bool() const { return m_league_rank < m_league_end; } - - // Iterate. - void next_team() { - ++m_league_rank; - m_exec.shared_reset(m_team_shared); - } -}; - -template -class TeamPolicyInternal - : public PolicyTraits { - private: - const int m_league_size; - const int m_team_size; - const int m_shepherd_iter; - - public: - //! Tag this class as a kokkos execution policy. - typedef TeamPolicyInternal execution_policy; - typedef Qthreads execution_space; - typedef PolicyTraits traits; - - //---------------------------------------- - - template - inline static int team_size_max(const FunctorType &) { - return Qthreads::instance().shepherd_worker_size(); - } - - template - static int team_size_recommended(const FunctorType &f) { - return team_size_max(f); - } - - template - inline static int team_size_recommended(const FunctorType &f, const int &) { - return team_size_max(f); - } - - //---------------------------------------- - - inline int team_size() const { return m_team_size; } - inline int league_size() const { return m_league_size; } - - // One active team per shepherd. - TeamPolicyInternal(Kokkos::Qthreads &q, const int league_size, - const int team_size, const int /* vector_length */ = 0) - : m_league_size(league_size), - m_team_size(team_size < q.shepherd_worker_size() - ? team_size - : q.shepherd_worker_size()), - m_shepherd_iter((league_size + q.shepherd_size() - 1) / - q.shepherd_size()) {} - - // TODO: Make sure this is correct. - // One active team per shepherd. - TeamPolicyInternal(Kokkos::Qthreads &q, const int league_size, - const Kokkos::AUTO_t & /* team_size_request */ - , - const int /* vector_length */ = 0) - : m_league_size(league_size), - m_team_size(q.shepherd_worker_size()), - m_shepherd_iter((league_size + q.shepherd_size() - 1) / - q.shepherd_size()) {} - - // One active team per shepherd. - TeamPolicyInternal(const int league_size, const int team_size, - const int /* vector_length */ = 0) - : m_league_size(league_size), - m_team_size(team_size < Qthreads::instance().shepherd_worker_size() - ? team_size - : Qthreads::instance().shepherd_worker_size()), - m_shepherd_iter( - (league_size + Qthreads::instance().shepherd_size() - 1) / - Qthreads::instance().shepherd_size()) {} - - // TODO: Make sure this is correct. - // One active team per shepherd. - TeamPolicyInternal(const int league_size, - const Kokkos::AUTO_t & /* team_size_request */ - , - const int /* vector_length */ = 0) - : m_league_size(league_size), - m_team_size(Qthreads::instance().shepherd_worker_size()), - m_shepherd_iter( - (league_size + Qthreads::instance().shepherd_size() - 1) / - Qthreads::instance().shepherd_size()) {} - - // TODO: Doesn't do anything yet. Fix this. - /** \brief set chunk_size to a discrete value*/ - inline TeamPolicyInternal set_chunk_size( - typename traits::index_type chunk_size_) const { - TeamPolicyInternal p = *this; - // p.m_chunk_size = chunk_size_; - return p; - } - - typedef Impl::QthreadsTeamPolicyMember member_type; - - friend class Impl::QthreadsTeamPolicyMember; -}; - -} // namespace Impl - -} // namespace Kokkos - -//---------------------------------------------------------------------------- - -#endif -#endif // #define KOKKOS_QTHREADSEXEC_HPP diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Parallel.hpp b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Parallel.hpp deleted file mode 100644 index 8611818e27..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Parallel.hpp +++ /dev/null @@ -1,753 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#ifndef KOKKOS_QTHREADS_PARALLEL_HPP -#define KOKKOS_QTHREADS_PARALLEL_HPP - -#include -#if defined(KOKKOS_ENABLE_QTHREADS) - -#include - -#include - -#include - -#include - -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -//---------------------------------------------------------------------------- - -template -class ParallelFor, - Kokkos::Qthreads> { - private: - typedef Kokkos::RangePolicy Policy; - - typedef typename Policy::work_tag WorkTag; - typedef typename Policy::member_type Member; - typedef typename Policy::WorkRange WorkRange; - - const FunctorType m_functor; - const Policy m_policy; - - template - inline static - typename std::enable_if::value>::type - exec_range(const FunctorType& functor, const Member ibeg, - const Member iend) { - for (Member i = ibeg; i < iend; ++i) { - functor(i); - } - } - - template - inline static - typename std::enable_if::value>::type - exec_range(const FunctorType& functor, const Member ibeg, - const Member iend) { - const TagType t{}; - for (Member i = ibeg; i < iend; ++i) { - functor(t, i); - } - } - - // Function is called once by every concurrent thread. - static void exec(QthreadsExec& exec, const void* arg) { - const ParallelFor& self = *((const ParallelFor*)arg); - - const WorkRange range(self.m_policy, exec.worker_rank(), - exec.worker_size()); - - ParallelFor::template exec_range(self.m_functor, range.begin(), - range.end()); - - // All threads wait for completion. - exec.exec_all_barrier(); - } - - public: - inline void execute() const { - Impl::QthreadsExec::exec_all(Qthreads::instance(), &ParallelFor::exec, - this); - } - - ParallelFor(const FunctorType& arg_functor, const Policy& arg_policy) - : m_functor(arg_functor), m_policy(arg_policy) {} -}; - -//---------------------------------------------------------------------------- - -template -class ParallelReduce, ReducerType, - Kokkos::Qthreads> { - private: - typedef Kokkos::RangePolicy Policy; - - typedef typename Policy::work_tag WorkTag; - typedef typename Policy::WorkRange WorkRange; - typedef typename Policy::member_type Member; - - typedef Kokkos::Impl::if_c::value, - FunctorType, ReducerType> - ReducerConditional; - typedef typename ReducerConditional::type ReducerTypeFwd; - typedef - typename Kokkos::Impl::if_c::value, - WorkTag, void>::type WorkTagFwd; - - // Static Assert WorkTag void if ReducerType not InvalidType - - typedef Kokkos::Impl::FunctorValueTraits - ValueTraits; - typedef Kokkos::Impl::FunctorValueInit ValueInit; - - typedef typename ValueTraits::pointer_type pointer_type; - typedef typename ValueTraits::reference_type reference_type; - - const FunctorType m_functor; - const Policy m_policy; - const ReducerType m_reducer; - const pointer_type m_result_ptr; - - template - inline static - typename std::enable_if::value>::type - exec_range(const FunctorType& functor, const Member ibeg, - const Member iend, reference_type update) { - for (Member i = ibeg; i < iend; ++i) { - functor(i, update); - } - } - - template - inline static - typename std::enable_if::value>::type - exec_range(const FunctorType& functor, const Member ibeg, - const Member iend, reference_type update) { - const TagType t{}; - for (Member i = ibeg; i < iend; ++i) { - functor(t, i, update); - } - } - - static void exec(QthreadsExec& exec, const void* arg) { - const ParallelReduce& self = *((const ParallelReduce*)arg); - - const WorkRange range(self.m_policy, exec.worker_rank(), - exec.worker_size()); - - ParallelReduce::template exec_range( - self.m_functor, range.begin(), range.end(), - ValueInit::init( - ReducerConditional::select(self.m_functor, self.m_reducer), - exec.exec_all_reduce_value())); - - exec.template exec_all_reduce( - self.m_functor, self.m_reducer); - } - - public: - inline void execute() const { - QthreadsExec::resize_worker_scratch( - ValueTraits::value_size( - ReducerConditional::select(m_functor, m_reducer)), - 0); - Impl::QthreadsExec::exec_all(Qthreads::instance(), &ParallelReduce::exec, - this); - - const pointer_type data = - (pointer_type)QthreadsExec::exec_all_reduce_result(); - - Kokkos::Impl::FunctorFinal::final( - ReducerConditional::select(m_functor, m_reducer), data); - - if (m_result_ptr) { - const unsigned n = ValueTraits::value_count( - ReducerConditional::select(m_functor, m_reducer)); - for (unsigned i = 0; i < n; ++i) { - m_result_ptr[i] = data[i]; - } - } - } - - template - ParallelReduce( - const FunctorType& arg_functor, const Policy& arg_policy, - const ViewType& arg_result_view, - typename std::enable_if::value && - !Kokkos::is_reducer_type::value, - void*>::type = NULL) - : m_functor(arg_functor), - m_policy(arg_policy), - m_reducer(InvalidType()), - m_result_ptr(arg_result_view.data()) {} - - ParallelReduce(const FunctorType& arg_functor, Policy arg_policy, - const ReducerType& reducer) - : m_functor(arg_functor), - m_policy(arg_policy), - m_reducer(reducer), - m_result_ptr(reducer.result_view().data()) {} -}; - -//---------------------------------------------------------------------------- - -template -class ParallelFor, Kokkos::Qthreads> { - private: - typedef Kokkos::Impl::TeamPolicyInternal - Policy; - typedef typename Policy::member_type Member; - typedef typename Policy::work_tag WorkTag; - - const FunctorType m_functor; - const Policy m_policy; - - template - inline static - typename std::enable_if::value>::type - exec_team(const FunctorType& functor, Member member) { - while (member) { - functor(member); - member.team_barrier(); - member.next_team(); - } - } - - template - inline static - typename std::enable_if::value>::type - exec_team(const FunctorType& functor, Member member) { - const TagType t{}; - while (member) { - functor(t, member); - member.team_barrier(); - member.next_team(); - } - } - - static void exec(QthreadsExec& exec, const void* arg) { - const ParallelFor& self = *((const ParallelFor*)arg); - - ParallelFor::template exec_team(self.m_functor, - Member(exec, self.m_policy)); - - exec.exec_all_barrier(); - } - - public: - inline void execute() const { - QthreadsExec::resize_worker_scratch( - /* reduction memory */ 0, - /* team shared memory */ FunctorTeamShmemSize::value( - m_functor, m_policy.team_size())); - Impl::QthreadsExec::exec_all(Qthreads::instance(), &ParallelFor::exec, - this); - } - - ParallelFor(const FunctorType& arg_functor, const Policy& arg_policy) - : m_functor(arg_functor), m_policy(arg_policy) {} -}; - -//---------------------------------------------------------------------------- - -template -class ParallelReduce, ReducerType, - Kokkos::Qthreads> { - private: - typedef Kokkos::Impl::TeamPolicyInternal - Policy; - - typedef typename Policy::work_tag WorkTag; - typedef typename Policy::member_type Member; - - typedef Kokkos::Impl::if_c::value, - FunctorType, ReducerType> - ReducerConditional; - typedef typename ReducerConditional::type ReducerTypeFwd; - typedef - typename Kokkos::Impl::if_c::value, - WorkTag, void>::type WorkTagFwd; - - typedef Kokkos::Impl::FunctorValueTraits - ValueTraits; - typedef Kokkos::Impl::FunctorValueInit ValueInit; - - typedef typename ValueTraits::pointer_type pointer_type; - typedef typename ValueTraits::reference_type reference_type; - - const FunctorType m_functor; - const Policy m_policy; - const ReducerType m_reducer; - const pointer_type m_result_ptr; - - template - inline static - typename std::enable_if::value>::type - exec_team(const FunctorType& functor, Member member, - reference_type update) { - while (member) { - functor(member, update); - member.team_barrier(); - member.next_team(); - } - } - - template - inline static - typename std::enable_if::value>::type - exec_team(const FunctorType& functor, Member member, - reference_type update) { - const TagType t{}; - while (member) { - functor(t, member, update); - member.team_barrier(); - member.next_team(); - } - } - - static void exec(QthreadsExec& exec, const void* arg) { - const ParallelReduce& self = *((const ParallelReduce*)arg); - - ParallelReduce::template exec_team( - self.m_functor, Member(exec, self.m_policy), - ValueInit::init( - ReducerConditional::select(self.m_functor, self.m_reducer), - exec.exec_all_reduce_value())); - - exec.template exec_all_reduce( - self.m_functor, self.m_reducer); - } - - public: - inline void execute() const { - QthreadsExec::resize_worker_scratch( - /* reduction memory */ ValueTraits::value_size( - ReducerConditional::select(m_functor, m_reducer)), - /* team shared memory */ FunctorTeamShmemSize::value( - m_functor, m_policy.team_size())); - - Impl::QthreadsExec::exec_all(Qthreads::instance(), &ParallelReduce::exec, - this); - - const pointer_type data = - (pointer_type)QthreadsExec::exec_all_reduce_result(); - - Kokkos::Impl::FunctorFinal::final( - ReducerConditional::select(m_functor, m_reducer), data); - - if (m_result_ptr) { - const unsigned n = ValueTraits::value_count( - ReducerConditional::select(m_functor, m_reducer)); - for (unsigned i = 0; i < n; ++i) { - m_result_ptr[i] = data[i]; - } - } - } - - template - ParallelReduce( - const FunctorType& arg_functor, const Policy& arg_policy, - const ViewType& arg_result, - typename std::enable_if::value && - !Kokkos::is_reducer_type::value, - void*>::type = NULL) - : m_functor(arg_functor), - m_policy(arg_policy), - m_reducer(InvalidType()), - m_result_ptr(arg_result.ptr_on_device()) {} - - inline ParallelReduce(const FunctorType& arg_functor, Policy arg_policy, - const ReducerType& reducer) - : m_functor(arg_functor), - m_policy(arg_policy), - m_reducer(reducer), - m_result_ptr(reducer.result_view().data()) {} -}; - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -template -class ParallelScan, - Kokkos::Qthreads> { - private: - typedef Kokkos::RangePolicy Policy; - - typedef typename Policy::work_tag WorkTag; - typedef typename Policy::WorkRange WorkRange; - typedef typename Policy::member_type Member; - - typedef Kokkos::Impl::FunctorValueTraits ValueTraits; - typedef Kokkos::Impl::FunctorValueInit ValueInit; - - typedef typename ValueTraits::pointer_type pointer_type; - typedef typename ValueTraits::reference_type reference_type; - - const FunctorType m_functor; - const Policy m_policy; - - template - inline static - typename std::enable_if::value>::type - exec_range(const FunctorType& functor, const Member ibeg, - const Member iend, reference_type update, const bool final) { - for (Member i = ibeg; i < iend; ++i) { - functor(i, update, final); - } - } - - template - inline static - typename std::enable_if::value>::type - exec_range(const FunctorType& functor, const Member ibeg, - const Member iend, reference_type update, const bool final) { - const TagType t{}; - for (Member i = ibeg; i < iend; ++i) { - functor(t, i, update, final); - } - } - - static void exec(QthreadsExec& exec, const void* arg) { - const ParallelScan& self = *((const ParallelScan*)arg); - - const WorkRange range(self.m_policy, exec.worker_rank(), - exec.worker_size()); - - // Initialize thread-local value - reference_type update = - ValueInit::init(self.m_functor, exec.exec_all_reduce_value()); - - ParallelScan::template exec_range(self.m_functor, range.begin(), - range.end(), update, false); - - exec.template exec_all_scan( - self.m_functor); - - ParallelScan::template exec_range(self.m_functor, range.begin(), - range.end(), update, true); - - exec.exec_all_barrier(); - } - - public: - inline void execute() const { - QthreadsExec::resize_worker_scratch(ValueTraits::value_size(m_functor), 0); - Impl::QthreadsExec::exec_all(Qthreads::instance(), &ParallelScan::exec, - this); - } - - ParallelScan(const FunctorType& arg_functor, const Policy& arg_policy) - : m_functor(arg_functor), m_policy(arg_policy) {} -}; - -} // namespace Impl - -} // namespace Kokkos - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { - -template -KOKKOS_INLINE_FUNCTION - Impl::TeamThreadRangeBoundariesStruct - TeamThreadRange(const Impl::QthreadsTeamPolicyMember& thread, - const iType& count) { - return Impl::TeamThreadRangeBoundariesStruct( - thread, count); -} - -template -KOKKOS_INLINE_FUNCTION Impl::TeamThreadRangeBoundariesStruct< - typename std::common_type::type, - Impl::QthreadsTeamPolicyMember> -TeamThreadRange(const Impl::QthreadsTeamPolicyMember& thread, - const iType1& begin, const iType2& end) { - typedef typename std::common_type::type iType; - return Impl::TeamThreadRangeBoundariesStruct( - thread, iType(begin), iType(end)); -} - -template -KOKKOS_INLINE_FUNCTION Impl::ThreadVectorRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember> -ThreadVectorRange(const Impl::QthreadsTeamPolicyMember& thread, - const iType& count) { - return Impl::ThreadVectorRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember>(thread, count); -} - -template -KOKKOS_INLINE_FUNCTION Impl::ThreadVectorRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember> -ThreadVectorRange(const Impl::QthreadsTeamPolicyMember& thread, - const iType& arg_begin, const iType& arg_end) { - return Impl::ThreadVectorRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember>(thread, arg_begin, arg_end); -} - -KOKKOS_INLINE_FUNCTION -Impl::ThreadSingleStruct PerTeam( - const Impl::QthreadsTeamPolicyMember& thread) { - return Impl::ThreadSingleStruct(thread); -} - -KOKKOS_INLINE_FUNCTION -Impl::VectorSingleStruct PerThread( - const Impl::QthreadsTeamPolicyMember& thread) { - return Impl::VectorSingleStruct(thread); -} - -/** \brief Inter-thread parallel_for. Executes lambda(iType i) for each - * i=0..N-1. - * - * The range i=0..N-1 is mapped to all threads of the the calling thread team. - * This functionality requires C++11 support.*/ -template -KOKKOS_INLINE_FUNCTION void parallel_for( - const Impl::TeamThreadRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember>& loop_boundaries, - const Lambda& lambda) { - for (iType i = loop_boundaries.start; i < loop_boundaries.end; - i += loop_boundaries.increment) - lambda(i); -} - -/** \brief Inter-thread vector parallel_reduce. Executes lambda(iType i, - * ValueType & val) for each i=0..N-1. - * - * The range i=0..N-1 is mapped to all threads of the the calling thread team - * and a summation of val is performed and put into result. This functionality - * requires C++11 support.*/ -template -KOKKOS_INLINE_FUNCTION void parallel_reduce( - const Impl::TeamThreadRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember>& loop_boundaries, - const Lambda& lambda, ValueType& result) { - result = ValueType(); - - for (iType i = loop_boundaries.start; i < loop_boundaries.end; - i += loop_boundaries.increment) { - ValueType tmp = ValueType(); - lambda(i, tmp); - result += tmp; - } - - result = - loop_boundaries.thread.team_reduce(result, Impl::JoinAdd()); -} - -/** \brief Intra-thread vector parallel_reduce. Executes lambda(iType i, - * ValueType & val) for each i=0..N-1. - * - * The range i=0..N-1 is mapped to all vector lanes of the the calling thread - * and a reduction of val is performed using JoinType(ValueType& val, const - * ValueType& update) and put into init_result. The input value of init_result - * is used as initializer for temporary variables of ValueType. Therefore the - * input value should be the neutral element with respect to the join operation - * (e.g. '0 for +-' or '1 for *'). This functionality requires C++11 support.*/ -template -KOKKOS_INLINE_FUNCTION void parallel_reduce( - const Impl::TeamThreadRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember>& loop_boundaries, - const Lambda& lambda, const JoinType& join, ValueType& init_result) { - ValueType result = init_result; - - for (iType i = loop_boundaries.start; i < loop_boundaries.end; - i += loop_boundaries.increment) { - ValueType tmp = ValueType(); - lambda(i, tmp); - join(result, tmp); - } - - init_result = loop_boundaries.thread.team_reduce( - result, Impl::JoinLambdaAdapter(join)); -} - -/** \brief Intra-thread vector parallel_for. Executes lambda(iType i) for each - * i=0..N-1. - * - * The range i=0..N-1 is mapped to all vector lanes of the the calling thread. - * This functionality requires C++11 support.*/ -template -KOKKOS_INLINE_FUNCTION void parallel_for( - const Impl::ThreadVectorRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember>& loop_boundaries, - const Lambda& lambda) { -#ifdef KOKKOS_ENABLE_PRAGMA_IVDEP -#pragma ivdep -#endif - for (iType i = loop_boundaries.start; i < loop_boundaries.end; - i += loop_boundaries.increment) - lambda(i); -} - -/** \brief Intra-thread vector parallel_reduce. Executes lambda(iType i, - * ValueType & val) for each i=0..N-1. - * - * The range i=0..N-1 is mapped to all vector lanes of the the calling thread - * and a summation of val is performed and put into result. This functionality - * requires C++11 support.*/ -template -KOKKOS_INLINE_FUNCTION void parallel_reduce( - const Impl::ThreadVectorRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember>& loop_boundaries, - const Lambda& lambda, ValueType& result) { - result = ValueType(); -#ifdef KOKKOS_ENABLE_PRAGMA_IVDEP -#pragma ivdep -#endif - for (iType i = loop_boundaries.start; i < loop_boundaries.end; - i += loop_boundaries.increment) { - ValueType tmp = ValueType(); - lambda(i, tmp); - result += tmp; - } -} - -/** \brief Intra-thread vector parallel_reduce. Executes lambda(iType i, - * ValueType & val) for each i=0..N-1. - * - * The range i=0..N-1 is mapped to all vector lanes of the the calling thread - * and a reduction of val is performed using JoinType(ValueType& val, const - * ValueType& update) and put into init_result. The input value of init_result - * is used as initializer for temporary variables of ValueType. Therefore the - * input value should be the neutral element with respect to the join operation - * (e.g. '0 for +-' or '1 for *'). This functionality requires C++11 support.*/ -template -KOKKOS_INLINE_FUNCTION void parallel_reduce( - const Impl::ThreadVectorRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember>& loop_boundaries, - const Lambda& lambda, const JoinType& join, ValueType& init_result) { - ValueType result = init_result; -#ifdef KOKKOS_ENABLE_PRAGMA_IVDEP -#pragma ivdep -#endif - for (iType i = loop_boundaries.start; i < loop_boundaries.end; - i += loop_boundaries.increment) { - ValueType tmp = ValueType(); - lambda(i, tmp); - join(result, tmp); - } - init_result = result; -} - -/** \brief Intra-thread vector parallel exclusive prefix sum. Executes - * lambda(iType i, ValueType & val, bool final) for each i=0..N-1. - * - * The range i=0..N-1 is mapped to all vector lanes in the thread and a scan - * operation is performed. Depending on the target execution space the operator - * might be called twice: once with final=false and once with final=true. When - * final==true val contains the prefix sum value. The contribution of this "i" - * needs to be added to val no matter whether final==true or not. In a serial - * execution (i.e. team_size==1) the operator is only called once with - * final==true. Scan_val will be set to the final sum value over all vector - * lanes. This functionality requires C++11 support.*/ -template -KOKKOS_INLINE_FUNCTION void parallel_scan( - const Impl::ThreadVectorRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember>& loop_boundaries, - const FunctorType& lambda) { - typedef Kokkos::Impl::FunctorValueTraits ValueTraits; - typedef typename ValueTraits::value_type value_type; - - value_type scan_val = value_type(); - -#ifdef KOKKOS_ENABLE_PRAGMA_IVDEP -#pragma ivdep -#endif - for (iType i = loop_boundaries.start; i < loop_boundaries.end; - i += loop_boundaries.increment) { - lambda(i, scan_val, true); - } -} - -template -KOKKOS_INLINE_FUNCTION void single( - const Impl::VectorSingleStruct& - single_struct, - const FunctorType& lambda) { - lambda(); -} - -template -KOKKOS_INLINE_FUNCTION void single( - const Impl::ThreadSingleStruct& - single_struct, - const FunctorType& lambda) { - if (single_struct.team_member.team_rank() == 0) lambda(); -} - -template -KOKKOS_INLINE_FUNCTION void single( - const Impl::VectorSingleStruct& - single_struct, - const FunctorType& lambda, ValueType& val) { - lambda(val); -} - -template -KOKKOS_INLINE_FUNCTION void single( - const Impl::ThreadSingleStruct& - single_struct, - const FunctorType& lambda, ValueType& val) { - if (single_struct.team_member.team_rank() == 0) { - lambda(val); - } - single_struct.team_member.team_broadcast(val, 0); -} - -} // namespace Kokkos - -#endif -#endif /* #define KOKKOS_QTHREADS_PARALLEL_HPP */ diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.cpp b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.cpp deleted file mode 100644 index b3a903494a..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.cpp +++ /dev/null @@ -1,308 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include -#if defined(KOKKOS_ENABLE_QTHREADS) && defined(KOKKOS_ENABLE_TASKPOLICY) - -#include -#include - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -template class TaskQueue; - -//---------------------------------------------------------------------------- - -TaskExec::TaskExec() - : m_self_exec(0), - m_team_exec(0), - m_sync_mask(0), - m_sync_value(0), - m_sync_step(0), - m_group_rank(0), - m_team_rank(0), - m_team_size(1) {} - -TaskExec::TaskExec(Kokkos::Impl::QthreadsExec &arg_exec, - int const arg_team_size) - : m_self_exec(&arg_exec), - m_team_exec(arg_exec.pool_rev(arg_exec.pool_rank_rev() / arg_team_size)), - m_sync_mask(0), - m_sync_value(0), - m_sync_step(0), - m_group_rank(arg_exec.pool_rank_rev() / arg_team_size), - m_team_rank(arg_exec.pool_rank_rev() % arg_team_size), - m_team_size(arg_team_size) { - // This team spans - // m_self_exec->pool_rev( team_size * group_rank ) - // m_self_exec->pool_rev( team_size * ( group_rank + 1 ) - 1 ) - - int64_t volatile *const sync = (int64_t *)m_self_exec->scratch_reduce(); - - sync[0] = int64_t(0); - sync[1] = int64_t(0); - - for (int i = 0; i < m_team_size; ++i) { - m_sync_value |= int64_t(1) << (8 * i); - m_sync_mask |= int64_t(3) << (8 * i); - } - - Kokkos::memory_fence(); -} - -#if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - -void TaskExec::team_barrier() const { - if (1 < m_team_size) { - if (m_team_exec->scratch_reduce_size() < int(2 * sizeof(int64_t))) { - Kokkos::abort("TaskQueue scratch_reduce memory too small"); - } - - // Use team shared memory to synchronize. - // Alternate memory locations between barriers to avoid a sequence - // of barriers overtaking one another. - - int64_t volatile *const sync = - ((int64_t *)m_team_exec->scratch_reduce()) + (m_sync_step & 0x01); - - // This team member sets one byte within the sync variable - int8_t volatile *const sync_self = ((int8_t *)sync) + m_team_rank; - -#if 0 -fprintf( stdout, - "barrier group(%d) member(%d) step(%d) wait(%lx) : before(%lx)\n", - m_group_rank, - m_team_rank, - m_sync_step, - m_sync_value, - *sync - ); -fflush(stdout); -#endif - - *sync_self = int8_t(m_sync_value & 0x03); // signal arrival - - while (m_sync_value != *sync) - ; // wait for team to arrive - -#if 0 -fprintf( stdout, - "barrier group(%d) member(%d) step(%d) wait(%lx) : after(%lx)\n", - m_group_rank, - m_team_rank, - m_sync_step, - m_sync_value, - *sync - ); -fflush(stdout); -#endif - - ++m_sync_step; - - if (0 == (0x01 & m_sync_step)) { // Every other step - m_sync_value ^= m_sync_mask; - if (1000 < m_sync_step) m_sync_step = 0; - } - } -} - -#endif - -//---------------------------------------------------------------------------- - -void TaskQueueSpecialization::execute( - TaskQueue *const queue) { - using execution_space = Kokkos::Qthreads; - using queue_type = TaskQueue; - using task_root_type = TaskBase; - using PoolExec = Kokkos::Impl::QthreadsExec; - using Member = TaskExec; - - task_root_type *const end = (task_root_type *)task_root_type::EndTag; - - // Required: team_size <= 8 - - const int team_size = PoolExec::pool_size(2); // Threads per core - // const int team_size = PoolExec::pool_size(1); // Threads per NUMA - - if (8 < team_size) { - Kokkos::abort("TaskQueue unsupported team size"); - } - -#pragma omp parallel - { - PoolExec &self = *PoolExec::get_thread_omp(); - - Member single_exec; - Member team_exec(self, team_size); - - // Team shared memory - task_root_type *volatile *const task_shared = - (task_root_type **)team_exec.m_team_exec->scratch_thread(); - -// Barrier across entire Qthreads thread pool to insure initialization -#pragma omp barrier - - // Loop until all queues are empty and no tasks in flight - - do { - // Each team lead attempts to acquire either a thread team task - // or collection of single thread tasks for the team. - - if (0 == team_exec.team_rank()) { - task_root_type *tmp = - 0 < *((volatile int *)&queue->m_ready_count) ? end : 0; - - // Loop by priority and then type - for (int i = 0; i < queue_type::NumQueue && end == tmp; ++i) { - for (int j = 0; j < 2 && end == tmp; ++j) { - tmp = queue_type::pop_task(&queue->m_ready[i][j]); - } - } - - *task_shared = tmp; - - // Fence to be sure shared_task_array is stored - Kokkos::memory_fence(); - } - - // Whole team waits for every team member to reach this statement - team_exec.team_barrier(); - - Kokkos::memory_fence(); - - task_root_type *const task = *task_shared; - -#if 0 -fprintf( stdout, - "\nexecute group(%d) member(%d) task_shared(0x%lx) task(0x%lx)\n", - team_exec.m_group_rank, - team_exec.m_team_rank, - uintptr_t(task_shared), - uintptr_t(task) - ); -fflush(stdout); -#endif - - if (0 == task) break; // 0 == m_ready_count - - if (end == task) { - team_exec.team_barrier(); - } else if (task_root_type::TaskTeam == task->m_task_type) { - // Thread Team Task - (*task->m_apply)(task, &team_exec); - - // The m_apply function performs a barrier - - if (0 == team_exec.team_rank()) { - // team member #0 completes the task, which may delete the task - queue->complete(task); - } - } else { - // Single Thread Task - - if (0 == team_exec.team_rank()) { - (*task->m_apply)(task, &single_exec); - - queue->complete(task); - } - - // All team members wait for whole team to reach this statement. - // Not necessary to complete the task. - // Is necessary to prevent task_shared from being updated - // before it is read by all threads. - team_exec.team_barrier(); - } - } while (1); - } - // END #pragma omp parallel -} - -void TaskQueueSpecialization:: - iff_single_thread_recursive_execute( - TaskQueue *const queue) { - using execution_space = Kokkos::Qthreads; - using queue_type = TaskQueue; - using task_root_type = TaskBase; - using Member = TaskExec; - - if (1 == omp_get_num_threads()) { - task_root_type *const end = (task_root_type *)task_root_type::EndTag; - - Member single_exec; - - task_root_type *task = end; - - do { - task = end; - - // Loop by priority and then type - for (int i = 0; i < queue_type::NumQueue && end == task; ++i) { - for (int j = 0; j < 2 && end == task; ++j) { - task = queue_type::pop_task(&queue->m_ready[i][j]); - } - } - - if (end == task) break; - - (*task->m_apply)(task, &single_exec); - - queue->complete(task); - - } while (1); - } -} - -} // namespace Impl -} // namespace Kokkos - -//---------------------------------------------------------------------------- -#else -void KOKKOS_SRC_QTHREADS_TASK_PREVENT_LINK_ERROR() {} -#endif /* #if defined( KOKKOS_ENABLE_QTHREADS ) && defined( \ - KOKKOS_ENABLE_TASKPOLICY ) */ diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.hpp b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.hpp deleted file mode 100644 index 1b2c3d3855..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.hpp +++ /dev/null @@ -1,149 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#ifndef KOKKOS_IMPL_QTHREADS_TASK_HPP -#define KOKKOS_IMPL_QTHREADS_TASK_HPP - -#include -#if defined(KOKKOS_ENABLE_QTHREADS) && defined(KOKKOS_ENABLE_TASKPOLICY) - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -template <> -class TaskQueueSpecialization { - public: - using execution_space = Kokkos::Qthreads; - using queue_type = Kokkos::Impl::TaskQueue; - using task_base_type = Kokkos::Impl::TaskBase; - - // Must specify memory space - using memory_space = Kokkos::HostSpace; - - static void iff_single_thread_recursive_execute(queue_type* const); - - // Must provide task queue execution function - static void execute(queue_type* const); - - // Must provide mechanism to set function pointer in - // execution space from the host process. - template - static void proc_set_apply(task_base_type::function_type* ptr) { - using TaskType = TaskBase; - *ptr = TaskType::apply; - } -}; - -extern template class TaskQueue; - -//---------------------------------------------------------------------------- - -template <> -class TaskExec { - private: - TaskExec(TaskExec&&) = delete; - TaskExec(TaskExec const&) = delete; - TaskExec& operator=(TaskExec&&) = delete; - TaskExec& operator=(TaskExec const&) = delete; - - using PoolExec = Kokkos::Impl::QthreadsExec; - - friend class Kokkos::Impl::TaskQueue; - friend class Kokkos::Impl::TaskQueueSpecialization; - - PoolExec* const m_self_exec; ///< This thread's thread pool data structure - PoolExec* const m_team_exec; ///< Team thread's thread pool data structure - int64_t m_sync_mask; - int64_t mutable m_sync_value; - int mutable m_sync_step; - int m_group_rank; ///< Which "team" subset of thread pool - int m_team_rank; ///< Which thread within a team - int m_team_size; - - TaskExec(); - TaskExec(PoolExec& arg_exec, int arg_team_size); - - public: -#if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - void* team_shared() const { - return m_team_exec ? m_team_exec->scratch_thread() : (void*)0; - } - - int team_shared_size() const { - return m_team_exec ? m_team_exec->scratch_thread_size() : 0; - } - - /**\brief Whole team enters this function call - * before any teeam member returns from - * this function call. - */ - void team_barrier() const; -#else - KOKKOS_INLINE_FUNCTION void team_barrier() const {} - KOKKOS_INLINE_FUNCTION void* team_shared() const { return 0; } - KOKKOS_INLINE_FUNCTION int team_shared_size() const { return 0; } -#endif - - KOKKOS_INLINE_FUNCTION - int team_rank() const { return m_team_rank; } - - KOKKOS_INLINE_FUNCTION - int team_size() const { return m_team_size; } -}; - -} // namespace Impl -} // namespace Kokkos - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -#endif /* #if defined( KOKKOS_ENABLE_TASKPOLICY ) */ -#endif /* #ifndef KOKKOS_IMPL_QTHREADS_TASK_HPP */ diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.cpp.old b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.cpp.old deleted file mode 100644 index a59afb2881..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.cpp.old +++ /dev/null @@ -1,493 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 2.0 -// Copyright (2014) Sandia Corporation -// -// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -// Experimental unified task-data parallel manycore LDRD. - - -#include -#if defined( KOKKOS_ENABLE_QTHREADS ) - -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#if defined( KOKKOS_ENABLE_TASKDAG ) - -namespace Kokkos { -namespace Experimental { -namespace Impl { - -typedef TaskMember< Kokkos::Qthreads , void , void > Task ; - -namespace { - -inline -unsigned padded_sizeof_derived( unsigned sizeof_derived ) -{ - return sizeof_derived + - ( sizeof_derived % sizeof(Task*) ? sizeof(Task*) - sizeof_derived % sizeof(Task*) : 0 ); -} - -// int lock_alloc_dealloc = 0 ; - -} // namespace - -void Task::deallocate( void * ptr ) -{ - // Counting on 'free' thread safety so lock/unlock not required. - // However, isolate calls here to mitigate future need to introduce lock/unlock. - - // lock - - // while ( ! Kokkos::atomic_compare_exchange_strong( & lock_alloc_dealloc , 0 , 1 ) ); - - free( ptr ); - - // unlock - - // Kokkos::atomic_compare_exchange_strong( & lock_alloc_dealloc , 1 , 0 ); -} - -void * Task::allocate( const unsigned arg_sizeof_derived - , const unsigned arg_dependence_capacity ) -{ - // Counting on 'malloc' thread safety so lock/unlock not required. - // However, isolate calls here to mitigate future need to introduce lock/unlock. - - // lock - - // while ( ! Kokkos::atomic_compare_exchange_strong( & lock_alloc_dealloc , 0 , 1 ) ); - - void * const ptr = malloc( padded_sizeof_derived( arg_sizeof_derived ) + arg_dependence_capacity * sizeof(Task*) ); - - // unlock - - // Kokkos::atomic_compare_exchange_strong( & lock_alloc_dealloc , 1 , 0 ); - - return ptr ; -} - -Task::~TaskMember() -{ - -} - - -Task::TaskMember( const function_verify_type arg_verify - , const function_dealloc_type arg_dealloc - , const function_single_type arg_apply_single - , const function_team_type arg_apply_team - , volatile int & arg_active_count - , const unsigned arg_sizeof_derived - , const unsigned arg_dependence_capacity - ) - : m_dealloc( arg_dealloc ) - , m_verify( arg_verify ) - , m_apply_single( arg_apply_single ) - , m_apply_team( arg_apply_team ) - , m_active_count( & arg_active_count ) - , m_qfeb(0) - , m_dep( (Task **)( ((unsigned char *) this) + padded_sizeof_derived( arg_sizeof_derived ) ) ) - , m_dep_capacity( arg_dependence_capacity ) - , m_dep_size( 0 ) - , m_ref_count( 0 ) - , m_state( Kokkos::Experimental::TASK_STATE_CONSTRUCTING ) -{ - qthread_empty( & m_qfeb ); // Set to full when complete - for ( unsigned i = 0 ; i < arg_dependence_capacity ; ++i ) m_dep[i] = 0 ; -} - -Task::TaskMember( const function_dealloc_type arg_dealloc - , const function_single_type arg_apply_single - , const function_team_type arg_apply_team - , volatile int & arg_active_count - , const unsigned arg_sizeof_derived - , const unsigned arg_dependence_capacity - ) - : m_dealloc( arg_dealloc ) - , m_verify( & Task::verify_type ) - , m_apply_single( arg_apply_single ) - , m_apply_team( arg_apply_team ) - , m_active_count( & arg_active_count ) - , m_qfeb(0) - , m_dep( (Task **)( ((unsigned char *) this) + padded_sizeof_derived( arg_sizeof_derived ) ) ) - , m_dep_capacity( arg_dependence_capacity ) - , m_dep_size( 0 ) - , m_ref_count( 0 ) - , m_state( Kokkos::Experimental::TASK_STATE_CONSTRUCTING ) -{ - qthread_empty( & m_qfeb ); // Set to full when complete - for ( unsigned i = 0 ; i < arg_dependence_capacity ; ++i ) m_dep[i] = 0 ; -} - -//---------------------------------------------------------------------------- - -void Task::throw_error_add_dependence() const -{ - std::cerr << "TaskMember< Qthreads >::add_dependence ERROR" - << " state(" << m_state << ")" - << " dep_size(" << m_dep_size << ")" - << std::endl ; - throw std::runtime_error("TaskMember< Qthreads >::add_dependence ERROR"); -} - -void Task::throw_error_verify_type() -{ - throw std::runtime_error("TaskMember< Qthreads >::verify_type ERROR"); -} - -//---------------------------------------------------------------------------- - -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) -void Task::assign( Task ** const lhs , Task * rhs , const bool no_throw ) -{ - static const char msg_error_header[] = "Kokkos::Impl::TaskManager::assign ERROR" ; - static const char msg_error_count[] = ": negative reference count" ; - static const char msg_error_complete[] = ": destroy task that is not complete" ; - static const char msg_error_dependences[] = ": destroy task that has dependences" ; - static const char msg_error_exception[] = ": caught internal exception" ; - - if ( rhs ) { Kokkos::atomic_increment( &(*rhs).m_ref_count ); } - - Task * const lhs_val = Kokkos::atomic_exchange( lhs , rhs ); - - if ( lhs_val ) { - - const int count = Kokkos::atomic_fetch_add( & (*lhs_val).m_ref_count , -1 ); - - const char * msg_error = 0 ; - - try { - - if ( 1 == count ) { - - // Reference count at zero, delete it - - // Should only be deallocating a completed task - if ( (*lhs_val).m_state == Kokkos::Experimental::TASK_STATE_COMPLETE ) { - - // A completed task should not have dependences... - for ( int i = 0 ; i < (*lhs_val).m_dep_size && 0 == msg_error ; ++i ) { - if ( (*lhs_val).m_dep[i] ) msg_error = msg_error_dependences ; - } - } - else { - msg_error = msg_error_complete ; - } - - if ( 0 == msg_error ) { - // Get deletion function and apply it - const Task::function_dealloc_type d = (*lhs_val).m_dealloc ; - - (*d)( lhs_val ); - } - } - else if ( count <= 0 ) { - msg_error = msg_error_count ; - } - } - catch( ... ) { - if ( 0 == msg_error ) msg_error = msg_error_exception ; - } - - if ( 0 != msg_error ) { - if ( no_throw ) { - std::cerr << msg_error_header << msg_error << std::endl ; - std::cerr.flush(); - } - else { - std::string msg(msg_error_header); - msg.append(msg_error); - throw std::runtime_error( msg ); - } - } - } -} -#endif - - -//---------------------------------------------------------------------------- - -void Task::closeout() -{ - enum { RESPAWN = int( Kokkos::Experimental::TASK_STATE_WAITING ) | - int( Kokkos::Experimental::TASK_STATE_EXECUTING ) }; - -#if 0 -fprintf( stdout - , "worker(%d.%d) task 0x%.12lx %s\n" - , qthread_shep() - , qthread_worker_local(NULL) - , reinterpret_cast(this) - , ( m_state == RESPAWN ? "respawn" : "complete" ) - ); -fflush(stdout); -#endif - - // When dependent tasks run there would be a race - // condition between destroying this task and - // querying the active count pointer from this task. - int volatile * const active_count = m_active_count ; - - if ( m_state == RESPAWN ) { - // Task requests respawn, set state to waiting and reschedule the task - m_state = Kokkos::Experimental::TASK_STATE_WAITING ; - schedule(); - } - else { - - // Task did not respawn, is complete - m_state = Kokkos::Experimental::TASK_STATE_COMPLETE ; - - // Release dependences before allowing dependent tasks to run. - // Otherwise there is a thread race condition for removing dependences. - for ( int i = 0 ; i < m_dep_size ; ++i ) { - assign( & m_dep[i] , 0 ); - } - - // Set Qthreads FEB to full so that dependent tasks are allowed to execute. - // This 'task' may be deleted immediately following this function call. - qthread_fill( & m_qfeb ); - - // The dependent task could now complete and destroy 'this' task - // before the call to 'qthread_fill' returns. Therefore, for - // thread safety assume that 'this' task has now been destroyed. - } - - // Decrement active task count before returning. - Kokkos::atomic_decrement( active_count ); -} - -aligned_t Task::qthread_func( void * arg ) -{ - Task * const task = reinterpret_cast< Task * >(arg); - - // First member of the team change state to executing. - // Use compare-exchange to avoid race condition with a respawn. - Kokkos::atomic_compare_exchange_strong( & task->m_state - , int(Kokkos::Experimental::TASK_STATE_WAITING) - , int(Kokkos::Experimental::TASK_STATE_EXECUTING) - ); - - if ( task->m_apply_team && ! task->m_apply_single ) { - Kokkos::Impl::QthreadsTeamPolicyMember::TaskTeam task_team_tag ; - - // Initialize team size and rank with shephered info - Kokkos::Impl::QthreadsTeamPolicyMember member( task_team_tag ); - - (*task->m_apply_team)( task , member ); - -#if 0 -fprintf( stdout - , "worker(%d.%d) task 0x%.12lx executed by member(%d:%d)\n" - , qthread_shep() - , qthread_worker_local(NULL) - , reinterpret_cast(task) - , member.team_rank() - , member.team_size() - ); -fflush(stdout); -#endif - - member.team_barrier(); - if ( member.team_rank() == 0 ) task->closeout(); - member.team_barrier(); - } - else if ( task->m_apply_team && task->m_apply_single == reinterpret_cast(1) ) { - // Team hard-wired to one, no cloning - Kokkos::Impl::QthreadsTeamPolicyMember member ; - (*task->m_apply_team)( task , member ); - task->closeout(); - } - else { - (*task->m_apply_single)( task ); - task->closeout(); - } - -#if 0 -fprintf( stdout - , "worker(%d.%d) task 0x%.12lx return\n" - , qthread_shep() - , qthread_worker_local(NULL) - , reinterpret_cast(task) - ); -fflush(stdout); -#endif - - return 0 ; -} - -void Task::respawn() -{ - // Change state from pure executing to ( waiting | executing ) - // to avoid confusion with simply waiting. - Kokkos::atomic_compare_exchange_strong( & m_state - , int(Kokkos::Experimental::TASK_STATE_EXECUTING) - , int(Kokkos::Experimental::TASK_STATE_WAITING | - Kokkos::Experimental::TASK_STATE_EXECUTING) - ); -} - -void Task::schedule() -{ - // Is waiting for execution - - // Increment active task count before spawning. - Kokkos::atomic_increment( m_active_count ); - - // spawn in Qthreads. must malloc the precondition array and give to Qthreads. - // Qthreads will eventually free this allocation so memory will not be leaked. - - // concern with thread safety of malloc, does this need to be guarded? - aligned_t ** qprecon = (aligned_t **) malloc( ( m_dep_size + 1 ) * sizeof(aligned_t *) ); - - qprecon[0] = reinterpret_cast( uintptr_t(m_dep_size) ); - - for ( int i = 0 ; i < m_dep_size ; ++i ) { - qprecon[i+1] = & m_dep[i]->m_qfeb ; // Qthreads precondition flag - } - - if ( m_apply_team && ! m_apply_single ) { - // If more than one shepherd spawn on a shepherd other than this shepherd - const int num_shepherd = qthread_num_shepherds(); - const int num_worker_per_shepherd = qthread_num_workers_local(NO_SHEPHERD); - const int this_shepherd = qthread_shep(); - - int spawn_shepherd = ( this_shepherd + 1 ) % num_shepherd ; - -#if 0 -fprintf( stdout - , "worker(%d.%d) task 0x%.12lx spawning on shepherd(%d) clone(%d)\n" - , qthread_shep() - , qthread_worker_local(NULL) - , reinterpret_cast(this) - , spawn_shepherd - , num_worker_per_shepherd - 1 - ); -fflush(stdout); -#endif - - qthread_spawn_cloneable - ( & Task::qthread_func - , this - , 0 - , NULL - , m_dep_size , qprecon /* dependences */ - , spawn_shepherd - , unsigned( QTHREAD_SPAWN_SIMPLE | QTHREAD_SPAWN_LOCAL_PRIORITY ) - , num_worker_per_shepherd - 1 - ); - } - else { - qthread_spawn( & Task::qthread_func /* function */ - , this /* function argument */ - , 0 - , NULL - , m_dep_size , qprecon /* dependences */ - , NO_SHEPHERD - , QTHREAD_SPAWN_SIMPLE /* allows optimization for non-blocking task */ - ); - } -} - -} // namespace Impl -} // namespace Experimental -} // namespace Kokkos - -namespace Kokkos { -namespace Experimental { - -TaskPolicy< Kokkos::Qthreads >:: -TaskPolicy - ( const unsigned /* arg_task_max_count */ - , const unsigned /* arg_task_max_size */ - , const unsigned arg_task_default_dependence_capacity - , const unsigned arg_task_team_size - ) - : m_default_dependence_capacity( arg_task_default_dependence_capacity ) - , m_team_size( arg_task_team_size != 0 ? arg_task_team_size : unsigned(qthread_num_workers_local(NO_SHEPHERD)) ) - , m_active_count_root(0) - , m_active_count( m_active_count_root ) -{ - const unsigned num_worker_per_shepherd = unsigned( qthread_num_workers_local(NO_SHEPHERD) ); - - if ( m_team_size != 1 && m_team_size != num_worker_per_shepherd ) { - std::ostringstream msg ; - msg << "Kokkos::Experimental::TaskPolicy< Kokkos::Qthreads >( " - << "default_depedence = " << arg_task_default_dependence_capacity - << " , team_size = " << arg_task_team_size - << " ) ERROR, valid team_size arguments are { (omitted) , 1 , " << num_worker_per_shepherd << " }" ; - Kokkos::Impl::throw_runtime_exception(msg.str()); - } -} - -TaskPolicy< Kokkos::Qthreads >::member_type & -TaskPolicy< Kokkos::Qthreads >::member_single() -{ - static member_type s ; - return s ; -} - -void wait( Kokkos::Experimental::TaskPolicy< Kokkos::Qthreads > & policy ) -{ - volatile int * const active_task_count = & policy.m_active_count ; - while ( *active_task_count ) qthread_yield(); -} - -} // namespace Experimental -} // namespace Kokkos - -#else -void KOKKOS_CORE_SRC_QTHREADS_KOKKOS_QTHREADS_TASKPOLICY_PREVENT_LINK_ERROR() {} -#endif // #if defined( KOKKOS_ENABLE_TASKDAG ) -#endif // #if defined( KOKKOS_ENABLE_QTHREADS ) - diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.hpp.old b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.hpp.old deleted file mode 100644 index adb6859763..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.hpp.old +++ /dev/null @@ -1,666 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 2.0 -// Copyright (2014) Sandia Corporation -// -// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -// Experimental unified task-data parallel manycore LDRD - -#ifndef KOKKOS_QTHREADS_TASKSCHEDULER_HPP -#define KOKKOS_QTHREADS_TASKSCHEDULER_HPP - -#include -#if defined( KOKKOS_ENABLE_TASKDAG ) - -#include -#include -#include - -//---------------------------------------------------------------------------- -// Defines to enable experimental Qthreads functionality - -#define QTHREAD_LOCAL_PRIORITY -#define CLONED_TASKS - -#include - -#undef QTHREAD_LOCAL_PRIORITY -#undef CLONED_TASKS - -//---------------------------------------------------------------------------- - -#include -#include -#include - -#include - - -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Experimental { -namespace Impl { - -template<> -class TaskMember< Kokkos::Qthreads , void , void > -{ -public: - - typedef TaskMember * (* function_verify_type) ( TaskMember * ); - typedef void (* function_single_type) ( TaskMember * ); - typedef void (* function_team_type) ( TaskMember * , Kokkos::Impl::QthreadsTeamPolicyMember & ); - typedef void (* function_dealloc_type)( TaskMember * ); - -private: - - const function_dealloc_type m_dealloc ; ///< Deallocation - const function_verify_type m_verify ; ///< Result type verification - const function_single_type m_apply_single ; ///< Apply function - const function_team_type m_apply_team ; ///< Apply function - int volatile * const m_active_count ; ///< Count of active tasks on this policy - aligned_t m_qfeb ; ///< Qthreads full/empty bit - TaskMember ** const m_dep ; ///< Dependences - const int m_dep_capacity ; ///< Capacity of dependences - int m_dep_size ; ///< Actual count of dependences - int m_ref_count ; ///< Reference count - int m_state ; ///< State of the task - - TaskMember() /* = delete */ ; - TaskMember( const TaskMember & ) /* = delete */ ; - TaskMember & operator = ( const TaskMember & ) /* = delete */ ; - - static aligned_t qthread_func( void * arg ); - - static void * allocate( const unsigned arg_sizeof_derived , const unsigned arg_dependence_capacity ); - static void deallocate( void * ); - - void throw_error_add_dependence() const ; - static void throw_error_verify_type(); - - template < class DerivedTaskType > - static - void deallocate( TaskMember * t ) - { - DerivedTaskType * ptr = static_cast< DerivedTaskType * >(t); - ptr->~DerivedTaskType(); - deallocate( (void *) ptr ); - } - - void schedule(); - void closeout(); - -protected : - - ~TaskMember(); - - // Used by TaskMember< Qthreads , ResultType , void > - TaskMember( const function_verify_type arg_verify - , const function_dealloc_type arg_dealloc - , const function_single_type arg_apply_single - , const function_team_type arg_apply_team - , volatile int & arg_active_count - , const unsigned arg_sizeof_derived - , const unsigned arg_dependence_capacity - ); - - // Used for TaskMember< Qthreads , void , void > - TaskMember( const function_dealloc_type arg_dealloc - , const function_single_type arg_apply_single - , const function_team_type arg_apply_team - , volatile int & arg_active_count - , const unsigned arg_sizeof_derived - , const unsigned arg_dependence_capacity - ); - -public: - - template< typename ResultType > - KOKKOS_FUNCTION static - TaskMember * verify_type( TaskMember * t ) - { - enum { check_type = ! std::is_same< ResultType , void >::value }; - - if ( check_type && t != 0 ) { - - // Verify that t->m_verify is this function - const function_verify_type self = & TaskMember::template verify_type< ResultType > ; - - if ( t->m_verify != self ) { - t = 0 ; -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - throw_error_verify_type(); -#endif - } - } - return t ; - } - - //---------------------------------------- - /* Inheritence Requirements on task types: - * typedef FunctorType::value_type value_type ; - * class DerivedTaskType - * : public TaskMember< Qthreads , value_type , FunctorType > - * { ... }; - * class TaskMember< Qthreads , value_type , FunctorType > - * : public TaskMember< Qthreads , value_type , void > - * , public Functor - * { ... }; - * If value_type != void - * class TaskMember< Qthreads , value_type , void > - * : public TaskMember< Qthreads , void , void > - * - * Allocate space for DerivedTaskType followed by TaskMember*[ dependence_capacity ] - * - */ - - /** \brief Allocate and construct a single-thread task */ - template< class DerivedTaskType > - static - TaskMember * create_single( const typename DerivedTaskType::functor_type & arg_functor - , volatile int & arg_active_count - , const unsigned arg_dependence_capacity ) - { - typedef typename DerivedTaskType::functor_type functor_type ; - typedef typename functor_type::value_type value_type ; - - DerivedTaskType * const task = - new( allocate( sizeof(DerivedTaskType) , arg_dependence_capacity ) ) - DerivedTaskType( & TaskMember::template deallocate< DerivedTaskType > - , & TaskMember::template apply_single< functor_type , value_type > - , 0 - , arg_active_count - , sizeof(DerivedTaskType) - , arg_dependence_capacity - , arg_functor ); - - return static_cast< TaskMember * >( task ); - } - - /** \brief Allocate and construct a team-thread task */ - template< class DerivedTaskType > - static - TaskMember * create_team( const typename DerivedTaskType::functor_type & arg_functor - , volatile int & arg_active_count - , const unsigned arg_dependence_capacity - , const bool arg_is_team ) - { - typedef typename DerivedTaskType::functor_type functor_type ; - typedef typename functor_type::value_type value_type ; - - const function_single_type flag = reinterpret_cast( arg_is_team ? 0 : 1 ); - - DerivedTaskType * const task = - new( allocate( sizeof(DerivedTaskType) , arg_dependence_capacity ) ) - DerivedTaskType( & TaskMember::template deallocate< DerivedTaskType > - , flag - , & TaskMember::template apply_team< functor_type , value_type > - , arg_active_count - , sizeof(DerivedTaskType) - , arg_dependence_capacity - , arg_functor ); - - return static_cast< TaskMember * >( task ); - } - - void respawn(); - void spawn() - { - m_state = Kokkos::Experimental::TASK_STATE_WAITING ; - schedule(); - } - - //---------------------------------------- - - typedef FutureValueTypeIsVoidError get_result_type ; - - KOKKOS_INLINE_FUNCTION - get_result_type get() const { return get_result_type() ; } - - KOKKOS_INLINE_FUNCTION - Kokkos::Experimental::TaskState get_state() const { return Kokkos::Experimental::TaskState( m_state ); } - - //---------------------------------------- - -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - static - void assign( TaskMember ** const lhs , TaskMember * const rhs , const bool no_throw = false ); -#else - KOKKOS_INLINE_FUNCTION static - void assign( TaskMember ** const lhs , TaskMember * const rhs , const bool no_throw = false ) {} -#endif - - KOKKOS_INLINE_FUNCTION - TaskMember * get_dependence( int i ) const - { return ( Kokkos::Experimental::TASK_STATE_EXECUTING == m_state && 0 <= i && i < m_dep_size ) ? m_dep[i] : (TaskMember*) 0 ; } - - KOKKOS_INLINE_FUNCTION - int get_dependence() const - { return m_dep_size ; } - - KOKKOS_INLINE_FUNCTION - void clear_dependence() - { - for ( int i = 0 ; i < m_dep_size ; ++i ) assign( m_dep + i , 0 ); - m_dep_size = 0 ; - } - - KOKKOS_INLINE_FUNCTION - void add_dependence( TaskMember * before ) - { - if ( ( Kokkos::Experimental::TASK_STATE_CONSTRUCTING == m_state || - Kokkos::Experimental::TASK_STATE_EXECUTING == m_state ) && - m_dep_size < m_dep_capacity ) { - assign( m_dep + m_dep_size , before ); - ++m_dep_size ; - } - else { - throw_error_add_dependence(); - } - } - - //---------------------------------------- - - template< class FunctorType , class ResultType > - KOKKOS_INLINE_FUNCTION static - void apply_single( typename std::enable_if< ! std::is_same< ResultType , void >::value , TaskMember * >::type t ) - { - typedef TaskMember< Kokkos::Qthreads , ResultType , FunctorType > derived_type ; - - // TaskMember< Kokkos::Qthreads , ResultType , FunctorType > - // : public TaskMember< Kokkos::Qthreads , ResultType , void > - // , public FunctorType - // { ... }; - - derived_type & m = * static_cast< derived_type * >( t ); - - Kokkos::Impl::FunctorApply< FunctorType , void , ResultType & >::apply( (FunctorType &) m , & m.m_result ); - } - - template< class FunctorType , class ResultType > - KOKKOS_INLINE_FUNCTION static - void apply_single( typename std::enable_if< std::is_same< ResultType , void >::value , TaskMember * >::type t ) - { - typedef TaskMember< Kokkos::Qthreads , ResultType , FunctorType > derived_type ; - - // TaskMember< Kokkos::Qthreads , ResultType , FunctorType > - // : public TaskMember< Kokkos::Qthreads , ResultType , void > - // , public FunctorType - // { ... }; - - derived_type & m = * static_cast< derived_type * >( t ); - - Kokkos::Impl::FunctorApply< FunctorType , void , void >::apply( (FunctorType &) m ); - } - - //---------------------------------------- - - template< class FunctorType , class ResultType > - KOKKOS_INLINE_FUNCTION static - void apply_team( typename std::enable_if< ! std::is_same< ResultType , void >::value , TaskMember * >::type t - , Kokkos::Impl::QthreadsTeamPolicyMember & member ) - { - typedef TaskMember< Kokkos::Qthreads , ResultType , FunctorType > derived_type ; - - derived_type & m = * static_cast< derived_type * >( t ); - - m.FunctorType::apply( member , m.m_result ); - } - - template< class FunctorType , class ResultType > - KOKKOS_INLINE_FUNCTION static - void apply_team( typename std::enable_if< std::is_same< ResultType , void >::value , TaskMember * >::type t - , Kokkos::Impl::QthreadsTeamPolicyMember & member ) - { - typedef TaskMember< Kokkos::Qthreads , ResultType , FunctorType > derived_type ; - - derived_type & m = * static_cast< derived_type * >( t ); - - m.FunctorType::apply( member ); - } -}; - -//---------------------------------------------------------------------------- -/** \brief Base class for tasks with a result value in the Qthreads execution space. - * - * The FunctorType must be void because this class is accessed by the - * Future class for the task and result value. - * - * Must be derived from TaskMember 'root class' so the Future class - * can correctly static_cast from the 'root class' to this class. - */ -template < class ResultType > -class TaskMember< Kokkos::Qthreads , ResultType , void > - : public TaskMember< Kokkos::Qthreads , void , void > -{ -public: - - ResultType m_result ; - - typedef const ResultType & get_result_type ; - - KOKKOS_INLINE_FUNCTION - get_result_type get() const { return m_result ; } - -protected: - - typedef TaskMember< Kokkos::Qthreads , void , void > task_root_type ; - typedef task_root_type::function_dealloc_type function_dealloc_type ; - typedef task_root_type::function_single_type function_single_type ; - typedef task_root_type::function_team_type function_team_type ; - - inline - TaskMember( const function_dealloc_type arg_dealloc - , const function_single_type arg_apply_single - , const function_team_type arg_apply_team - , volatile int & arg_active_count - , const unsigned arg_sizeof_derived - , const unsigned arg_dependence_capacity - ) - : task_root_type( & task_root_type::template verify_type< ResultType > - , arg_dealloc - , arg_apply_single - , arg_apply_team - , arg_active_count - , arg_sizeof_derived - , arg_dependence_capacity ) - , m_result() - {} -}; - -template< class ResultType , class FunctorType > -class TaskMember< Kokkos::Qthreads , ResultType , FunctorType > - : public TaskMember< Kokkos::Qthreads , ResultType , void > - , public FunctorType -{ -public: - - typedef FunctorType functor_type ; - - typedef TaskMember< Kokkos::Qthreads , void , void > task_root_type ; - typedef TaskMember< Kokkos::Qthreads , ResultType , void > task_base_type ; - typedef task_root_type::function_dealloc_type function_dealloc_type ; - typedef task_root_type::function_single_type function_single_type ; - typedef task_root_type::function_team_type function_team_type ; - - inline - TaskMember( const function_dealloc_type arg_dealloc - , const function_single_type arg_apply_single - , const function_team_type arg_apply_team - , volatile int & arg_active_count - , const unsigned arg_sizeof_derived - , const unsigned arg_dependence_capacity - , const functor_type & arg_functor - ) - : task_base_type( arg_dealloc - , arg_apply_single - , arg_apply_team - , arg_active_count - , arg_sizeof_derived - , arg_dependence_capacity ) - , functor_type( arg_functor ) - {} -}; - -} /* namespace Impl */ -} /* namespace Experimental */ -} /* namespace Kokkos */ - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Experimental { - -void wait( TaskPolicy< Kokkos::Qthreads > & ); - -template<> -class TaskPolicy< Kokkos::Qthreads > -{ -public: - - typedef Kokkos::Qthreads execution_space ; - typedef TaskPolicy execution_policy ; - typedef Kokkos::Impl::QthreadsTeamPolicyMember member_type ; - -private: - - typedef Impl::TaskMember< execution_space , void , void > task_root_type ; - - template< class FunctorType > - static inline - const task_root_type * get_task_root( const FunctorType * f ) - { - typedef Impl::TaskMember< execution_space , typename FunctorType::value_type , FunctorType > task_type ; - return static_cast< const task_root_type * >( static_cast< const task_type * >(f) ); - } - - template< class FunctorType > - static inline - task_root_type * get_task_root( FunctorType * f ) - { - typedef Impl::TaskMember< execution_space , typename FunctorType::value_type , FunctorType > task_type ; - return static_cast< task_root_type * >( static_cast< task_type * >(f) ); - } - - unsigned m_default_dependence_capacity ; - unsigned m_team_size ; - volatile int m_active_count_root ; - volatile int & m_active_count ; - -public: - - TaskPolicy - ( const unsigned arg_task_max_count - , const unsigned arg_task_max_size - , const unsigned arg_task_default_dependence_capacity = 4 - , const unsigned arg_task_team_size = 0 /* choose default */ - ); - - KOKKOS_FUNCTION TaskPolicy() = default ; - KOKKOS_FUNCTION TaskPolicy( TaskPolicy && rhs ) = default ; - KOKKOS_FUNCTION TaskPolicy( const TaskPolicy & rhs ) = default ; - KOKKOS_FUNCTION TaskPolicy & operator = ( TaskPolicy && rhs ) = default ; - KOKKOS_FUNCTION TaskPolicy & operator = ( const TaskPolicy & rhs ) = default ; - - //---------------------------------------- - - KOKKOS_INLINE_FUNCTION - int allocated_task_count() const { return m_active_count ; } - - template< class ValueType > - const Future< ValueType , execution_space > & - spawn( const Future< ValueType , execution_space > & f - , const bool priority = false ) const - { -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - f.m_task->spawn(); -#endif - return f ; - } - - // Create single-thread task - - template< class FunctorType > - KOKKOS_INLINE_FUNCTION - Future< typename FunctorType::value_type , execution_space > - task_create( const FunctorType & functor - , const unsigned dependence_capacity = ~0u ) const - { - typedef typename FunctorType::value_type value_type ; - typedef Impl::TaskMember< execution_space , value_type , FunctorType > task_type ; - return Future< value_type , execution_space >( -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - task_root_type::create_single< task_type > - ( functor - , m_active_count - , ( ~0u == dependence_capacity ? m_default_dependence_capacity : dependence_capacity ) - ) -#endif - ); - } - - template< class FunctorType > - Future< typename FunctorType::value_type , execution_space > - proc_create( const FunctorType & functor - , const unsigned dependence_capacity = ~0u ) const - { return task_create( functor , dependence_capacity ); } - - // Create thread-team task - - template< class FunctorType > - KOKKOS_INLINE_FUNCTION - Future< typename FunctorType::value_type , execution_space > - task_create_team( const FunctorType & functor - , const unsigned dependence_capacity = ~0u ) const - { - typedef typename FunctorType::value_type value_type ; - typedef Impl::TaskMember< execution_space , value_type , FunctorType > task_type ; - - return Future< value_type , execution_space >( -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - task_root_type::create_team< task_type > - ( functor - , m_active_count - , ( ~0u == dependence_capacity ? m_default_dependence_capacity : dependence_capacity ) - , 1 < m_team_size - ) -#endif - ); - } - - template< class FunctorType > - KOKKOS_INLINE_FUNCTION - Future< typename FunctorType::value_type , execution_space > - proc_create_team( const FunctorType & functor - , const unsigned dependence_capacity = ~0u ) const - { return task_create_team( functor , dependence_capacity ); } - - // Add dependence - template< class A1 , class A2 , class A3 , class A4 > - void add_dependence( const Future & after - , const Future & before - , typename std::enable_if - < std::is_same< typename Future::execution_space , execution_space >::value - && - std::is_same< typename Future::execution_space , execution_space >::value - >::type * = 0 - ) - { -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - after.m_task->add_dependence( before.m_task ); -#endif - } - - //---------------------------------------- - // Functions for an executing task functor to query dependences, - // set new dependences, and respawn itself. - - template< class FunctorType > - Future< void , execution_space > - get_dependence( const FunctorType * task_functor , int i ) const - { - return Future( -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - get_task_root(task_functor)->get_dependence(i) -#endif - ); - } - - template< class FunctorType > - int get_dependence( const FunctorType * task_functor ) const -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - { return get_task_root(task_functor)->get_dependence(); } -#else - { return 0 ; } -#endif - - template< class FunctorType > - void clear_dependence( FunctorType * task_functor ) const - { -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - get_task_root(task_functor)->clear_dependence(); -#endif - } - - template< class FunctorType , class A3 , class A4 > - void add_dependence( FunctorType * task_functor - , const Future & before - , typename std::enable_if - < std::is_same< typename Future::execution_space , execution_space >::value - >::type * = 0 - ) - { -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - get_task_root(task_functor)->add_dependence( before.m_task ); -#endif - } - - template< class FunctorType > - void respawn( FunctorType * task_functor - , const bool priority = false ) const - { -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - get_task_root(task_functor)->respawn(); -#endif - } - - template< class FunctorType > - void respawn_needing_memory( FunctorType * task_functor ) const - { -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - get_task_root(task_functor)->respawn(); -#endif - } - - static member_type & member_single(); - - friend void wait( TaskPolicy< Kokkos::Qthreads > & ); -}; - -} /* namespace Experimental */ -} // namespace Kokkos - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ -#endif /* #define KOKKOS_QTHREADS_TASK_HPP */ - diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue.hpp b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue.hpp deleted file mode 100644 index b9b6dd86e4..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue.hpp +++ /dev/null @@ -1,321 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#ifndef KOKKOS_QTHREADS_TASKQUEUE_HPP -#define KOKKOS_QTHREADS_TASKQUEUE_HPP - -#include -#if defined(KOKKOS_ENABLE_QTHREADS) && defined(KOKKOS_ENABLE_TASKPOLICY) - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -/** \brief Manage task allocation, deallocation, and scheduling. - * - * Task execution is handled here directly for the Qthread implementation. - */ -template <> -class TaskQueue { - private: - using execution_space = Kokkos::Qthread; - using memory_space = Kokkos::HostSpace using device_type = - Kokkos::Device; - using memory_pool = Kokkos::MemoryPool; - using task_root_type = Kokkos::Impl::TaskBase; - - friend class Kokkos::TaskScheduler; - - struct Destroy { - TaskQueue* m_queue; - void destroy_shared_allocation(); - }; - - //---------------------------------------- - - enum : int { - TASK_STATE_NULL = 0, ///< Does not exist - TASK_STATE_CONSTRUCTING = 1, ///< Is under construction - TASK_STATE_WAITING = 2, ///< Is waiting for execution - TASK_STATE_EXECUTING = 4, ///< Is executing - TASK_STATE_RESPAWN = 8, ///< Requested respawn - TASK_STATE_COMPLETE = 16 ///< Execution is complete - }; - - // Queue is organized as [ priority ][ type ] - - memory_pool m_memory; - unsigned m_team_size; // Number of threads in a team - long m_accum_alloc; // Accumulated number of allocations - int m_count_alloc; // Current number of allocations - int m_max_alloc; // Maximum number of allocations - int m_ready_count; // Number of ready or executing - - //---------------------------------------- - - ~TaskQueue(); - TaskQueue() = delete; - TaskQueue(TaskQueue&&) = delete; - TaskQueue(TaskQueue const&) = delete; - TaskQueue& operator=(TaskQueue&&) = delete; - TaskQueue& operator=(TaskQueue const&) = delete; - - TaskQueue(const memory_space& arg_space, - unsigned const arg_memory_pool_capacity, - unsigned const arg_memory_pool_superblock_capacity_log2); - - // Schedule a task - // Precondition: - // task is not executing - // task->m_next is the dependence or zero - // Postcondition: - // task->m_next is linked list membership - KOKKOS_FUNCTION - void schedule(task_root_type* const); - - // Reschedule a task - // Precondition: - // task is in Executing state - // task->m_next == LockTag - // Postcondition: - // task is in Executing-Respawn state - // task->m_next == 0 (no dependence) - KOKKOS_FUNCTION - void reschedule(task_root_type*); - - // Complete a task - // Precondition: - // task is not executing - // task->m_next == LockTag => task is complete - // task->m_next != LockTag => task is respawn - // Postcondition: - // task->m_wait == LockTag => task is complete - // task->m_wait != LockTag => task is waiting - KOKKOS_FUNCTION - void complete(task_root_type*); - - public: - // If and only if the execution space is a single thread - // then execute ready tasks. - KOKKOS_INLINE_FUNCTION - void iff_single_thread_recursive_execute() { -#if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - specialization::iff_single_thread_recursive_execute(this); -#endif - } - - void execute() { specialization::execute(this); } - - template - void proc_set_apply(typename task_root_type::function_type* ptr) { - specialization::template proc_set_apply(ptr); - } - - // Assign task pointer with reference counting of assigned tasks - template - KOKKOS_FUNCTION static void assign( - TaskBase** const lhs, - TaskBase* const rhs) { - using task_lhs = TaskBase; -#if 0 - { - printf( "assign( 0x%lx { 0x%lx %d %d }, 0x%lx { 0x%lx %d %d } )\n", - uintptr_t( lhs ? *lhs : 0 ), - uintptr_t( lhs && *lhs ? (*lhs)->m_next : 0 ), - int( lhs && *lhs ? (*lhs)->m_task_type : 0 ), - int( lhs && *lhs ? (*lhs)->m_ref_count : 0 ), - uintptr_t(rhs), - uintptr_t( rhs ? rhs->m_next : 0 ), - int( rhs ? rhs->m_task_type : 0 ), - int( rhs ? rhs->m_ref_count : 0 ) - ); - fflush( stdout ); - } -#endif - - if (*lhs) { - const int count = Kokkos::atomic_fetch_add(&((*lhs)->m_ref_count), -1); - - if ((1 == count) && ((*lhs)->m_state == TASK_STATE_COMPLETE)) { - // Reference count is zero and task is complete, deallocate. - (*lhs)->m_queue->deallocate(*lhs, (*lhs)->m_alloc_size); - } else if (count <= 1) { - Kokkos::abort( - "TaskScheduler task has negative reference count or is incomplete"); - } - - // GEM: Should I check that there are no dependences here? Can the state - // be set to complete while there are still dependences? - } - - if (rhs) { - Kokkos::atomic_fetch_add(&(rhs->m_ref_count), 1); - } - - // Force write of *lhs - - *static_cast(lhs) = rhs; - - Kokkos::memory_fence(); - } - - KOKKOS_FUNCTION - size_t allocate_block_size(size_t n); ///< Actual block size allocated - - KOKKOS_FUNCTION - void* allocate(size_t n); ///< Allocate from the memory pool - - KOKKOS_FUNCTION - void deallocate(void* p, size_t n); ///< Deallocate to the memory pool -}; - -} /* namespace Impl */ -} /* namespace Kokkos */ - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -template <> -class TaskBase { - public: - enum : int16_t { - TaskTeam = TaskBase::TaskTeam, - TaskSingle = TaskBase::TaskSingle, - Aggregate = TaskBase::Aggregate - }; - - enum : uintptr_t { - LockTag = TaskBase::LockTag, - EndTag = TaskBase::EndTag - }; - - using execution_space = Kokkos::Qthread; - using queue_type = TaskQueue; - - template - friend class Kokkos::TaskScheduler; - - typedef void (*function_type)(TaskBase*, void*); - - // sizeof(TaskBase) == 48 - - function_type m_apply; ///< Apply function pointer - queue_type* m_queue; ///< Queue in which this task resides - TaskBase* m_dep; ///< Dependence - int32_t m_ref_count; ///< Reference count - int32_t m_alloc_size; ///< Allocation size - int32_t m_dep_count; ///< Aggregate's number of dependences - int16_t m_task_type; ///< Type of task - int16_t m_priority; ///< Priority of runnable task - aligned_t m_qfeb; ///< Qthread full/empty bit - int m_state; ///< State of the task - - TaskBase(TaskBase&&) = delete; - TaskBase(const TaskBase&) = delete; - TaskBase& operator=(TaskBase&&) = delete; - TaskBase& operator=(const TaskBase&) = delete; - - KOKKOS_INLINE_FUNCTION ~TaskBase() = default; - - KOKKOS_INLINE_FUNCTION - constexpr TaskBase() noexcept - : m_apply(0), - m_queue(0), - m_dep(0), - m_ref_count(0), - m_alloc_size(0), - m_dep_count(0), - m_task_type(TaskSingle), - m_priority(1 /* TaskRegularPriority */), - m_qfeb(0), - m_state(queue_type::TASK_STATE_CONSTRUCTING) { - qthread_empty(&m_qfeb); // Set to full when complete - } - - //---------------------------------------- - - static aligned_t qthread_func(void* arg); - - KOKKOS_INLINE_FUNCTION - TaskBase** aggregate_dependences() { - return reinterpret_cast(this + 1); - } - - KOKKOS_INLINE_FUNCTION - void requested_respawn() { return m_state == queue_type::TASK_STATE_RESPAWN; } - - KOKKOS_INLINE_FUNCTION - void add_dependence(TaskBase* dep) { - // Assign dependence to m_dep. It will be processed in the subsequent - // call to schedule. Error if the dependence is reset. - if (0 != Kokkos::atomic_exchange(&m_dep, dep)) { - Kokkos::abort("TaskScheduler ERROR: resetting task dependence"); - } - - if (0 != dep) { - // The future may be destroyed upon returning from this call - // so increment reference count to track this assignment. - Kokkos::atomic_fetch_add(&(dep->m_ref_count), 1); - } - } - - using get_return_type = void; - - KOKKOS_INLINE_FUNCTION - get_return_type get() const {} -}; - -} /* namespace Impl */ -} /* namespace Kokkos */ - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -#endif /* #if defined( KOKKOS_ENABLE_TASKPOLICY ) */ -#endif // KOKKOS_QTHREADS_TASKQUEUE_HPP diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue_impl.hpp b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue_impl.hpp deleted file mode 100644 index 7a91103ae7..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue_impl.hpp +++ /dev/null @@ -1,398 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#ifndef KOKKOS_QTHREADS_TASKQUEUE_IMPL_HPP -#define KOKKOS_QTHREADS_TASKQUEUE_IMPL_HPP - -#include -#if defined(KOKKOS_ENABLE_QTHREADS) && defined(KOKKOS_ENABLE_TASKPOLICY) - -namespace Kokkos { -namespace Impl { - -//---------------------------------------------------------------------------- - -template -void TaskQueue::Destroy::destroy_shared_allocation() { - m_queue->~TaskQueue(); -} - -//---------------------------------------------------------------------------- - -template -TaskQueue::TaskQueue( - const TaskQueue::memory_space &arg_space, - unsigned const arg_memory_pool_capacity, - unsigned const arg_memory_pool_superblock_capacity_log2) - : m_memory(arg_space, arg_memory_pool_capacity, - arg_memory_pool_superblock_capacity_log2) - m_team_size(unsigned(qthread_num_workers_local(NO_SHEPHERD))), - m_accum_alloc(0), - m_count_alloc(0), - m_max_alloc(0), - m_ready_count(0) {} - -//---------------------------------------------------------------------------- - -template -TaskQueue::~TaskQueue() { - // Verify that ready count is zero. - if (0 != m_ready_count) { - Kokkos::abort("TaskQueue::~TaskQueue ERROR: has ready or executing tasks"); - } -} - -//---------------------------------------------------------------------------- - -template -KOKKOS_FUNCTION size_t TaskQueue::allocate_block_size(size_t n) { - return m_memory.allocate_block_size(n); -} - -//---------------------------------------------------------------------------- - -template -KOKKOS_FUNCTION void *TaskQueue::allocate(size_t n) { - void *const p = m_memory.allocate(n); - - if (p) { - Kokkos::atomic_increment(&m_accum_alloc); - Kokkos::atomic_increment(&m_count_alloc); - - if (m_max_alloc < m_count_alloc) m_max_alloc = m_count_alloc; - } - - return p; -} - -//---------------------------------------------------------------------------- - -template -KOKKOS_FUNCTION void TaskQueue::deallocate(void *p, size_t n) { - m_memory.deallocate(p, n); - Kokkos::atomic_decrement(&m_count_alloc); -} - -//---------------------------------------------------------------------------- - -template -KOKKOS_FUNCTION void TaskQueue::schedule( - TaskQueue::task_root_type *const task) { -#if 0 - printf( "schedule( 0x%lx { %d %d %d }\n", - uintptr_t(task), - task->m_task_type, - task->m_priority, - task->m_ref_count ); -#endif - - // The task has been constructed and is waiting to be executed. - task->m_state = TASK_STATE_WAITING; - - if (task->m_task_type != task_root_type::Aggregate) { - // Scheduling a single or team task. - - // Increment active task count before spawning. - Kokkos::atomic_increment(m_ready_count); - - if (task->m_dep == 0) { - // Schedule a task with no dependences. - - if (task_root_type::TaskTeam == task->m_task_type && m_team_size > 1) { - // If more than one shepherd spawn on a shepherd other than this - // shepherd - const int num_shepherd = qthread_num_shepherds(); - const int this_shepherd = qthread_shep(); - int spawn_shepherd = (this_shepherd + 1) % num_shepherd; - -#if 0 - fprintf( stdout, - "worker(%d.%d) task 0x%.12lx spawning on shepherd(%d) clone(%d)\n", - qthread_shep(), - qthread_worker_local(NULL), - reinterpret_cast(this), - spawn_shepherd, - m_team_size - 1 - ); - fflush(stdout); -#endif - - qthread_spawn_cloneable( - &task_root_type::qthread_func, task, 0, NULL, - 0, // no depenedences - 0, // dependences array - spawn_shepherd, - unsigned(QTHREAD_SPAWN_SIMPLE | QTHREAD_SPAWN_LOCAL_PRIORITY), - m_team_size - 1); - } else { - qthread_spawn( - &task_root_type::qthread_func, task, 0, NULL, - 0, // no depenedences - 0, // dependences array - NO_SHEPHERD, - QTHREAD_SPAWN_SIMPLE /* allows optimization for non-blocking task */ - ); - } - } else if (task->m_dep->m_task_type != task_root_type::Aggregate) - // Malloc the precondition array to pass to qthread_spawn(). For - // non-aggregate tasks, it is a single pointer since there are no - // dependences. Qthreads will eventually free this allocation so memory - // will not be leaked. Is malloc thread-safe? Should this call be - // guarded? The memory can't be allocated from the pool allocator because - // Qthreads frees it using free(). - aligned_t **qprecon = (aligned_t **)malloc(sizeof(aligned_t *)); - - *qprecon = reinterpret_cast(uintptr_t(m_dep_size)); - - if (task->m_task_type == task_root_type::TaskTeam && m_team_size > 1) { - // If more than one shepherd spawn on a shepherd other than this shepherd - const int num_shepherd = qthread_num_shepherds(); - const int this_shepherd = qthread_shep(); - int spawn_shepherd = (this_shepherd + 1) % num_shepherd; - -#if 0 - fprintf( stdout, - "worker(%d.%d) task 0x%.12lx spawning on shepherd(%d) clone(%d)\n", - qthread_shep(), - qthread_worker_local(NULL), - reinterpret_cast(this), - spawn_shepherd, - m_team_size - 1 - ); - fflush(stdout); -#endif - - qthread_spawn_cloneable( - &Task::qthread_func, this, 0, NULL, m_dep_size, - qprecon, /* dependences */ - spawn_shepherd, - unsigned(QTHREAD_SPAWN_SIMPLE | QTHREAD_SPAWN_LOCAL_PRIORITY), - m_team_size - 1); - } else { - qthread_spawn( - &Task::qthread_func, /* function */ - this, /* function argument */ - 0, NULL, m_dep_size, qprecon, /* dependences */ - NO_SHEPHERD, - QTHREAD_SPAWN_SIMPLE /* allows optimization for non-blocking task */ - ); - } - } else { - // GEM: How do I handle an aggregate (when_all) task? - } -} - -//---------------------------------------------------------------------------- - -template -KOKKOS_FUNCTION void TaskQueue::reschedule(task_root_type *task) { - // Precondition: - // task is in Executing state - // task->m_next == LockTag - // - // Postcondition: - // task is in Executing-Respawn state - // task->m_next == 0 (no dependence) - - task_root_type *const zero = (task_root_type *)0; - task_root_type *const lock = (task_root_type *)task_root_type::LockTag; - - if (lock != Kokkos::atomic_exchange(&task->m_next, zero)) { - Kokkos::abort("TaskScheduler::respawn ERROR: already respawned"); - } -} - -//---------------------------------------------------------------------------- - -template -KOKKOS_FUNCTION void TaskQueue::complete( - TaskQueue::task_root_type *task) { - // Complete a runnable task that has finished executing - // or a when_all task when all of its dependeneces are complete. - - task_root_type *const zero = (task_root_type *)0; - task_root_type *const lock = (task_root_type *)task_root_type::LockTag; - task_root_type *const end = (task_root_type *)task_root_type::EndTag; - -#if 0 - printf( "complete( 0x%lx { 0x%lx 0x%lx %d %d %d }\n", - uintptr_t(task), - uintptr_t(task->m_wait), - uintptr_t(task->m_next), - task->m_task_type, - task->m_priority, - task->m_ref_count - ); - fflush( stdout ); -#endif - - const bool runnable = task_root_type::Aggregate != task->m_task_type; - - //---------------------------------------- - - if (runnable && lock != task->m_next) { - // Is a runnable task has finished executing and requested respawn. - // Schedule the task for subsequent execution. - - schedule(task); - } - //---------------------------------------- - else { - // Is either an aggregate or a runnable task that executed - // and did not respawn. Transition this task to complete. - - // If 'task' is an aggregate then any of the runnable tasks that - // it depends upon may be attempting to complete this 'task'. - // Must only transition a task once to complete status. - // This is controled by atomically locking the wait queue. - - // Stop other tasks from adding themselves to this task's wait queue - // by locking the head of this task's wait queue. - - task_root_type *x = Kokkos::atomic_exchange(&task->m_wait, lock); - - if (x != (task_root_type *)lock) { - // This thread has transitioned this 'task' to complete. - // 'task' is no longer in a queue and is not executing - // so decrement the reference count from 'task's creation. - // If no other references to this 'task' then it will be deleted. - - TaskQueue::assign(&task, zero); - - // This thread has exclusive access to the wait list so - // the concurrency-safe pop_task function is not needed. - // Schedule the tasks that have been waiting on the input 'task', - // which may have been deleted. - - while (x != end) { - // Set x->m_next = zero <= no dependence - - task_root_type *const next = - (task_root_type *)Kokkos::atomic_exchange(&x->m_next, zero); - - schedule(x); - - x = next; - } - } - } - - if (runnable) { - // A runnable task was popped from a ready queue and executed. - // If respawned into a ready queue then the ready count was incremented - // so decrement whether respawned or not. - Kokkos::atomic_decrement(&m_ready_count); - } -} - -//---------------------------------------------------------------------------- - -template <> -aligned_t TaskBase::qthread_func(void *arg) { - using execution_space = Kokkos::Qthreads; - using task_root_type = TaskBase; - using Member = Kokkos::Impl::QthreadsTeamPolicyMember; - - task_root_type *const task = reinterpret_cast(arg); - - // First member of the team change state to executing. - // Use compare-exchange to avoid race condition with a respawn. - Kokkos::atomic_compare_exchange_strong(&task->m_state, - queue_type::TASK_STATE_WAITING, - queue_type::TASK_STATE_EXECUTING); - - if (task_root_type::TaskTeam == task->m_task_type) { - if (1 < task->m_queue->m_team_size) { - // Team task with team size of more than 1. - Member::TaskTeam task_team_tag; - - // Initialize team size and rank with shephered info - Member member(task_team_tag); - - (*task->m_apply)(task, &member); - -#if 0 - fprintf( stdout, - "worker(%d.%d) task 0x%.12lx executed by member(%d:%d)\n", - qthread_shep(), - qthread_worker_local(NULL), - reinterpret_cast(task), - member.team_rank(), - member.team_size() - ); - fflush(stdout); -#endif - - member.team_barrier(); - if (member.team_rank() == 0) task->closeout(); - member.team_barrier(); - } else { - // Team task with team size of 1. - Member member; - (*task->m_apply)(task, &member); - task->closeout(); - } - } else { - (*task->m_apply)(task); - task->closeout(); - } - -#if 0 -fprintf( stdout - , "worker(%d.%d) task 0x%.12lx return\n" - , qthread_shep() - , qthread_worker_local(NULL) - , reinterpret_cast(task) - ); -fflush(stdout); -#endif - - return 0; -} - -} /* namespace Impl */ -} /* namespace Kokkos */ - -#endif /* #if defined( KOKKOS_ENABLE_TASKPOLICY ) */ -#endif // KOKKOS_QTHREADS_TASKQUEUE_IMPL_HPP diff --git a/lib/kokkos/core/src/Qthreads/README b/lib/kokkos/core/src/Qthreads/README deleted file mode 100644 index e35b1f698e..0000000000 --- a/lib/kokkos/core/src/Qthreads/README +++ /dev/null @@ -1,24 +0,0 @@ - -# This Qthreads back-end uses an experimental branch of the Qthreads repository with special #define options. - -# Cloning repository and branch: - -git clone git@github.com:Qthreads/qthreads.git qthreads - -cd qthreads - -# checkout branch with "cloned tasks" - -git checkout dev-kokkos - -# Configure/autogen - -sh autogen.sh - -# configure with 'hwloc' installation: - -./configure CFLAGS="-DCLONED_TASKS -DQTHREAD_LOCAL_PRIORITY" --with-hwloc=${HWLOCDIR} --prefix=${INSTALLDIR} - -# install - -make install diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp index 4ebcdc6f95..8a4d8c07d0 100644 --- a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp @@ -293,7 +293,6 @@ class TeamPolicyInternal } KOKKOS_INLINE_FUNCTION int team_size() const { return (m_team_size > 0) ? m_team_size : Impl::get_max_tile_thread(); - ; } KOKKOS_INLINE_FUNCTION int league_size() const { return m_league_size; } @@ -837,7 +836,7 @@ class ParallelFor, if (total_size == 0) return; const auto shared_size = FunctorTeamShmemSize::value(f, team_size); - char* scratch = NULL; + char* scratch = nullptr; char* shared = (char*)rocm_device_allocate(shared_size * league_size + scratch_size0 * league_size); if (0 < scratch_size1) @@ -889,7 +888,7 @@ class ParallelReduce, ReducerType, const FunctorType& f, const Policy& policy, const ViewType& result_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) { + void*>::type = nullptr) { typedef typename Policy::work_tag Tag; typedef Kokkos::Impl::FunctorValueTraits ValueTraits; typedef Kokkos::Impl::FunctorValueInit ValueInit; @@ -1106,7 +1105,7 @@ class ParallelReduce, ReducerType, ParallelReduce(const FunctorType& arg_functor, const Policy& arg_policy, const HostViewType& arg_result, typename std::enable_if::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), @@ -1149,7 +1148,7 @@ class ParallelReduce, ReducerType, const FunctorType& f, const Policy& policy, const ViewType& result_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) { + void*>::type = nullptr) { const int league_size = policy.league_size(); const int team_size = policy.team_size(f); const int vector_length = policy.vector_length(); @@ -1172,7 +1171,7 @@ class ParallelReduce, ReducerType, FunctorTeamShmemSize::value(f, team_size); char* shared; - char* scratch = NULL; + char* scratch = nullptr; shared = (char*)rocm_device_allocate(league_size * (shared_size + scratch_size0)); @@ -1223,7 +1222,7 @@ class ParallelReduce, ReducerType, const int scratch_size1 = policy.scratch_size(1, team_size); char* shared; - char* scratch = NULL; + char* scratch = nullptr; shared = (char*)rocm_device_allocate((shared_size + scratch_size0) * league_size); if (0 < scratch_size1) diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Space.cpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Space.cpp index 501567406d..1a79425f49 100644 --- a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Space.cpp +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Space.cpp @@ -409,7 +409,7 @@ void* SharedAllocationRecord:: allocate_tracked(const Kokkos::Experimental::ROCmSpace& arg_space, const std::string& arg_alloc_label, const size_t arg_alloc_size) { - if (!arg_alloc_size) return (void*)0; + if (!arg_alloc_size) return nullptr; SharedAllocationRecord* const r = allocate(arg_space, arg_alloc_label, arg_alloc_size); @@ -621,7 +621,7 @@ namespace Kokkos { namespace { void* rocm_resize_scratch_space(size_t bytes, bool force_shrink) { - static void* ptr = NULL; + static void* ptr = nullptr; static size_t current_size = 0; if (current_size == 0) { current_size = bytes; diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp index da95064eea..3d80b4d440 100644 --- a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp @@ -293,8 +293,9 @@ struct tile_buffer { } template - typename Impl::enable_if<(sizeof(Q) <= 8), void>::type action_at( - std::size_t i, Action a) [[hc]] { + typename std::enable_if<(sizeof(Q) <= 8), void>::type action_at(std::size_t i, + Action a) + [[hc]] { element_type* value = (*this)[i]; #if defined(ROCM15) a(value); @@ -316,7 +317,7 @@ struct tile_buffer { } template - typename Impl::enable_if::type action_at( + typename std::enable_if::type action_at( std::size_t i, Action a) [[hc]] { element_type* value = (*this)[i]; #if defined(ROCM15) diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Vectorization.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Vectorization.hpp index 157c15695b..ae52f8da34 100644 --- a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Vectorization.hpp +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Vectorization.hpp @@ -163,7 +163,7 @@ float shfl(const float& val, const int& srcLane, const int& width) { template KOKKOS_INLINE_FUNCTION Scalar shfl(const Scalar& val, const int& srcLane, - const typename Impl::enable_if<(sizeof(Scalar) == 4), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) == 4), int>::type& width) { Scalar tmp1 = val; float tmp = *reinterpret_cast(&tmp1); tmp = __shfl(tmp, srcLane, width); @@ -182,7 +182,7 @@ double shfl(const double& val, const int& srcLane, const int& width) { template KOKKOS_INLINE_FUNCTION Scalar shfl(const Scalar& val, const int& srcLane, - const typename Impl::enable_if<(sizeof(Scalar) == 8), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) == 8), int>::type& width) { int lo = __double2loint(*reinterpret_cast(&val)); int hi = __double2hiint(*reinterpret_cast(&val)); lo = __shfl(lo, srcLane, width); @@ -194,7 +194,7 @@ shfl(const Scalar& val, const int& srcLane, template KOKKOS_INLINE_FUNCTION Scalar shfl(const Scalar& val, const int& srcLane, - const typename Impl::enable_if<(sizeof(Scalar) > 8), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) > 8), int>::type& width) { Impl::shfl_union s_val; Impl::shfl_union r_val; s_val = val; @@ -217,7 +217,7 @@ float shfl_down(const float& val, const int& delta, const int& width) { template KOKKOS_INLINE_FUNCTION Scalar shfl_down( const Scalar& val, const int& delta, - const typename Impl::enable_if<(sizeof(Scalar) == 4), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) == 4), int>::type& width) { Scalar tmp1 = val; float tmp = *reinterpret_cast(&tmp1); tmp = __shfl_down(tmp, delta, width); @@ -245,7 +245,7 @@ double shfl_down(const double& val, const int& delta, const int& width) { template KOKKOS_INLINE_FUNCTION Scalar shfl_down( const Scalar& val, const int& delta, - const typename Impl::enable_if<(sizeof(Scalar) == 8), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) == 8), int>::type& width) { int lo = __double2loint(*reinterpret_cast(&val)); int hi = __double2hiint(*reinterpret_cast(&val)); lo = __shfl_down(lo, delta, width); @@ -257,7 +257,7 @@ KOKKOS_INLINE_FUNCTION Scalar shfl_down( template KOKKOS_INLINE_FUNCTION Scalar shfl_down( const Scalar& val, const int& delta, - const typename Impl::enable_if<(sizeof(Scalar) > 8), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) > 8), int>::type& width) { Impl::shfl_union s_val; Impl::shfl_union r_val; s_val = val; @@ -280,7 +280,7 @@ float shfl_up(const float& val, const int& delta, const int& width) { template KOKKOS_INLINE_FUNCTION Scalar shfl_up( const Scalar& val, const int& delta, - const typename Impl::enable_if<(sizeof(Scalar) == 4), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) == 4), int>::type& width) { Scalar tmp1 = val; float tmp = *reinterpret_cast(&tmp1); tmp = __shfl_up(tmp, delta, width); @@ -299,7 +299,7 @@ double shfl_up(const double& val, const int& delta, const int& width) { template KOKKOS_INLINE_FUNCTION Scalar shfl_up( const Scalar& val, const int& delta, - const typename Impl::enable_if<(sizeof(Scalar) == 8), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) == 8), int>::type& width) { int lo = __double2loint(*reinterpret_cast(&val)); int hi = __double2hiint(*reinterpret_cast(&val)); lo = __shfl_up(lo, delta, width); @@ -309,9 +309,9 @@ KOKKOS_INLINE_FUNCTION Scalar shfl_up( } template -KOKKOS_INLINE_FUNCTION Scalar shfl_up( - const Scalar& val, const int& delta, - const typename Impl::enable_if<(sizeof(Scalar) > 8), int>::type& width) { +KOKKOS_INLINE_FUNCTION Scalar +shfl_up(const Scalar& val, const int& delta, + const typename std::enable_if<(sizeof(Scalar) > 8), int>::type& width) { Impl::shfl_union s_val; Impl::shfl_union r_val; s_val = val; diff --git a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.cpp b/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.cpp index d106abf688..7adfd127de 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.cpp +++ b/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.cpp @@ -65,7 +65,7 @@ namespace Impl { namespace { ThreadsExec s_threads_process; -ThreadsExec *s_threads_exec[ThreadsExec::MAX_THREAD_COUNT] = {0}; +ThreadsExec *s_threads_exec[ThreadsExec::MAX_THREAD_COUNT] = {nullptr}; pthread_t s_threads_pid[ThreadsExec::MAX_THREAD_COUNT] = {0}; std::pair s_threads_coord[ThreadsExec::MAX_THREAD_COUNT]; @@ -75,11 +75,9 @@ unsigned s_current_reduce_size = 0; unsigned s_current_shared_size = 0; void (*volatile s_current_function)(ThreadsExec &, const void *); -const void *volatile s_current_function_arg = 0; +const void *volatile s_current_function_arg = nullptr; struct Sentinel { - Sentinel() {} - ~Sentinel() { if (s_thread_pool_size[0] || s_thread_pool_size[1] || s_thread_pool_size[2] || s_current_reduce_size || @@ -129,8 +127,8 @@ void ThreadsExec::driver(void) { } ThreadsExec::ThreadsExec() - : m_pool_base(0), - m_scratch(0), + : m_pool_base(nullptr), + m_scratch(nullptr), m_scratch_reduce_end(0), m_scratch_thread_end(0), m_numa_rank(0), @@ -142,7 +140,7 @@ ThreadsExec::ThreadsExec() if (&s_threads_process != this) { // A spawned thread - ThreadsExec *const nil = 0; + ThreadsExec *const nil = nullptr; // Which entry in 's_threads_exec', possibly determined from hwloc binding const int entry = @@ -192,12 +190,12 @@ ThreadsExec::~ThreadsExec() { if (m_scratch) { Record *const r = Record::get_record(m_scratch); - m_scratch = 0; + m_scratch = nullptr; Record::decrement(r); } - m_pool_base = 0; + m_pool_base = nullptr; m_scratch_reduce_end = 0; m_scratch_thread_end = 0; m_numa_rank = 0; @@ -209,7 +207,7 @@ ThreadsExec::~ThreadsExec() { m_pool_state = ThreadsExec::Terminating; if (&s_threads_process != this && entry < MAX_THREAD_COUNT) { - ThreadsExec *const nil = 0; + ThreadsExec *const nil = nullptr; atomic_compare_exchange(s_threads_exec + entry, this, nil); @@ -223,13 +221,13 @@ ThreadsExec *ThreadsExec::get_thread(const int init_thread_rank) { ThreadsExec *const th = init_thread_rank < s_thread_pool_size[0] ? s_threads_exec[s_thread_pool_size[0] - (init_thread_rank + 1)] - : 0; + : nullptr; - if (0 == th || th->m_pool_rank != init_thread_rank) { + if (nullptr == th || th->m_pool_rank != init_thread_rank) { std::ostringstream msg; msg << "Kokkos::Impl::ThreadsExec::get_thread ERROR : " << "thread " << init_thread_rank << " of " << s_thread_pool_size[0]; - if (0 == th) { + if (nullptr == th) { msg << " does not exist"; } else { msg << " has wrong thread_rank " << th->m_pool_rank; @@ -299,8 +297,8 @@ void ThreadsExec::fence() { ThreadsExec::Active); } - s_current_function = 0; - s_current_function_arg = 0; + s_current_function = nullptr; + s_current_function_arg = nullptr; // Make sure function and arguments are cleared before // potentially re-activating threads with a subsequent launch. @@ -364,7 +362,7 @@ bool ThreadsExec::wake() { ThreadsExec::global_unlock(); if (s_threads_process.m_pool_base) { - execute_sleep(s_threads_process, 0); + execute_sleep(s_threads_process, nullptr); s_threads_process.m_pool_state = ThreadsExec::Inactive; } @@ -394,12 +392,12 @@ void ThreadsExec::execute_serial(void (*func)(ThreadsExec &, const void *)) { if (s_threads_process.m_pool_base) { s_threads_process.m_pool_state = ThreadsExec::Active; - (*func)(s_threads_process, 0); + (*func)(s_threads_process, nullptr); s_threads_process.m_pool_state = ThreadsExec::Inactive; } - s_current_function_arg = 0; - s_current_function = 0; + s_current_function_arg = nullptr; + s_current_function = nullptr; // Make sure function and arguments are cleared before proceeding. memory_fence(); @@ -417,7 +415,7 @@ void ThreadsExec::execute_resize_scratch(ThreadsExec &exec, const void *) { if (exec.m_scratch) { Record *const r = Record::get_record(exec.m_scratch); - exec.m_scratch = 0; + exec.m_scratch = nullptr; Record::decrement(r); } @@ -508,7 +506,7 @@ void ThreadsExec::print_configuration(std::ostream &s, const bool detail) { s << " threads[" << s_thread_pool_size[0] << "]" << " threads_per_numa[" << s_thread_pool_size[1] << "]" << " threads_per_core[" << s_thread_pool_size[2] << "]"; - if (0 == s_threads_process.m_pool_base) { + if (nullptr == s_threads_process.m_pool_base) { s << " Asynchronous"; } s << " ReduceScratch[" << s_current_reduce_size << "]" @@ -547,19 +545,20 @@ void ThreadsExec::print_configuration(std::ostream &s, const bool detail) { //---------------------------------------------------------------------------- -int ThreadsExec::is_initialized() { return 0 != s_threads_exec[0]; } +int ThreadsExec::is_initialized() { return nullptr != s_threads_exec[0]; } void ThreadsExec::initialize(unsigned thread_count, unsigned use_numa_count, unsigned use_cores_per_numa, bool allow_asynchronous_threadpool) { - static const Sentinel sentinel; + // need to provide an initializer for Intel compilers + static const Sentinel sentinel = {}; const bool is_initialized = 0 != s_thread_pool_size[0]; unsigned thread_spawn_failed = 0; for (int i = 0; i < ThreadsExec::MAX_THREAD_COUNT; i++) - s_threads_exec[i] = NULL; + s_threads_exec[i] = nullptr; if (!is_initialized) { // If thread_count, use_numa_count, or use_cores_per_numa are zero @@ -631,8 +630,8 @@ void ThreadsExec::initialize(unsigned thread_count, unsigned use_numa_count, } } - s_current_function = 0; - s_current_function_arg = 0; + s_current_function = nullptr; + s_current_function_arg = nullptr; s_threads_process.m_pool_state = ThreadsExec::Inactive; memory_fence(); @@ -659,7 +658,7 @@ void ThreadsExec::initialize(unsigned thread_count, unsigned use_numa_count, s_threads_process.m_pool_rank, s_threads_process.m_pool_size); s_threads_pid[s_threads_process.m_pool_rank] = pthread_self(); } else { - s_threads_process.m_pool_base = 0; + s_threads_process.m_pool_base = nullptr; s_threads_process.m_pool_rank = 0; s_threads_process.m_pool_size = 0; s_threads_process.m_pool_fan_size = 0; @@ -740,7 +739,7 @@ void ThreadsExec::finalize() { if (s_threads_process.m_pool_base) { (&s_threads_process)->~ThreadsExec(); - s_threads_exec[0] = 0; + s_threads_exec[0] = nullptr; } if (Kokkos::hwloc::can_bind_threads()) { @@ -754,7 +753,7 @@ void ThreadsExec::finalize() { // Reset master thread to run solo. s_threads_process.m_numa_rank = 0; s_threads_process.m_numa_core_rank = 0; - s_threads_process.m_pool_base = 0; + s_threads_process.m_pool_base = nullptr; s_threads_process.m_pool_rank = 0; s_threads_process.m_pool_size = 1; s_threads_process.m_pool_fan_size = 0; diff --git a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec_base.cpp b/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec_base.cpp index ed7b884a87..40a09ed22a 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec_base.cpp +++ b/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec_base.cpp @@ -87,7 +87,7 @@ void* internal_pthread_driver(void*) { std::cerr.flush(); std::abort(); } - return NULL; + return nullptr; } } // namespace @@ -105,7 +105,7 @@ bool ThreadsExec::spawn() { 0 == pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED)) { pthread_t pt; - result = 0 == pthread_create(&pt, &attr, internal_pthread_driver, 0); + result = 0 == pthread_create(&pt, &attr, internal_pthread_driver, nullptr); } pthread_attr_destroy(&attr); diff --git a/lib/kokkos/core/src/Threads/Kokkos_ThreadsTeam.hpp b/lib/kokkos/core/src/Threads/Kokkos_ThreadsTeam.hpp index 2cd9d73b2a..fe1a1e8b08 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_ThreadsTeam.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_ThreadsTeam.hpp @@ -169,7 +169,10 @@ class ThreadsExecTeamMember { KOKKOS_INLINE_FUNCTION void team_broadcast(ValueType& value, const int& thread_id) const { #if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - {} + { + (void)value; + (void)thread_id; + } #else // Make sure there is enough scratch space: typedef typename if_cscratch_memory()); + memory_fence(); + team_barrier(); if (team_rank() == thread_id) *local_value = value; memory_fence(); team_barrier(); @@ -189,7 +194,11 @@ class ThreadsExecTeamMember { KOKKOS_INLINE_FUNCTION void team_broadcast(Closure const& f, ValueType& value, const int& thread_id) const { #if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - {} + { + (void)f; + (void)value; + (void)thread_id; + } #else // Make sure there is enough scratch space: typedef typename if_cscratch_memory()); + memory_fence(); + team_barrier(); if (team_rank() == thread_id) *local_value = value; memory_fence(); team_barrier(); @@ -211,7 +222,7 @@ class ThreadsExecTeamMember { team_reduce(const Type& value) const #if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) { - return Type(); + return value; } #else { @@ -221,13 +232,15 @@ class ThreadsExecTeamMember { if (0 == m_exec) return value; - *((volatile type*)m_exec->scratch_memory()) = value; + if (team_rank() != team_size() - 1) + *((volatile type*)m_exec->scratch_memory()) = value; memory_fence(); type& accum = *((type*)m_team_base[0]->scratch_memory()); if (team_fan_in()) { + accum = value; for (int i = 1; i < m_team_size; ++i) { accum += *((type*)m_team_base[i]->scratch_memory()); } @@ -267,7 +280,7 @@ class ThreadsExecTeamMember { type* const local_value = ((type*)m_exec->scratch_memory()); // Set this thread's contribution - *local_value = contribution; + if (team_rank() != team_size() - 1) *local_value = contribution; // Fence to make sure the base team member has access: memory_fence(); @@ -277,6 +290,7 @@ class ThreadsExecTeamMember { // team_fan_out() type* const team_value = ((type*)m_team_base[0]->scratch_memory()); + *team_value = contribution; // Join to the team value: for (int i = 1; i < m_team_size; ++i) { reducer.join(*team_value, *((type*)m_team_base[i]->scratch_memory())); @@ -313,7 +327,8 @@ class ThreadsExecTeamMember { ArgType* const global_accum) const #if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) { - return ArgType(); + (void)global_accum; + return value; } #else { @@ -607,6 +622,11 @@ class TeamPolicyInternal typedef PolicyTraits traits; + const typename traits::execution_space& space() const { + static typename traits::execution_space m_space; + return m_space; + } + TeamPolicyInternal& operator=(const TeamPolicyInternal& p) { m_league_size = p.m_league_size; m_team_size = p.m_team_size; @@ -1167,7 +1187,8 @@ namespace Kokkos { template KOKKOS_INLINE_FUNCTION void single( - const Impl::VectorSingleStruct& single_struct, + const Impl::VectorSingleStruct< + Impl::ThreadsExecTeamMember>& /*single_struct*/, const FunctorType& lambda) { lambda(); } @@ -1181,7 +1202,8 @@ KOKKOS_INLINE_FUNCTION void single( template KOKKOS_INLINE_FUNCTION void single( - const Impl::VectorSingleStruct& single_struct, + const Impl::VectorSingleStruct< + Impl::ThreadsExecTeamMember>& /*single_struct*/, const FunctorType& lambda, ValueType& val) { lambda(val); } diff --git a/lib/kokkos/core/src/Threads/Kokkos_Threads_Parallel.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_Parallel.hpp index f45830cb24..fbc83e9a55 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_Threads_Parallel.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_Parallel.hpp @@ -492,7 +492,7 @@ class ParallelReduce, ReducerType, const HostViewType &arg_result_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void *>::type = NULL) + void *>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), @@ -650,7 +650,7 @@ class ParallelReduce, ReducerType, const HostViewType &arg_result_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void *>::type = NULL) + void *>::type = nullptr) : m_functor(arg_functor), m_mdr_policy(arg_policy), m_policy(Policy(0, m_mdr_policy.m_num_tiles).set_chunk_size(1)), @@ -774,7 +774,7 @@ class ParallelReduce, const ViewType &arg_result, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void *>::type = NULL) + void *>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), diff --git a/lib/kokkos/core/src/Threads/Kokkos_Threads_WorkGraphPolicy.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_WorkGraphPolicy.hpp index ec2b1d983f..7bcd9aaee0 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_Threads_WorkGraphPolicy.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_WorkGraphPolicy.hpp @@ -87,9 +87,10 @@ class ParallelFor, } } - static inline void thread_main(ThreadsExec&, const void* arg) noexcept { + static inline void thread_main(ThreadsExec& exec, const void* arg) noexcept { const Self& self = *(static_cast(arg)); self.exec_one_thread(); + exec.fan_in(); } public: diff --git a/lib/kokkos/core/src/impl/CMakeLists.txt b/lib/kokkos/core/src/impl/CMakeLists.txt index 2f6d8e78a3..361a85b738 100644 --- a/lib/kokkos/core/src/impl/CMakeLists.txt +++ b/lib/kokkos/core/src/impl/CMakeLists.txt @@ -9,7 +9,7 @@ TRIBITS_ADD_LIBRARY( kokkoscore_impl NOINSTALLHEADERS ${HEADERS} SOURCES ${SOURCES} - DEPLIBS + DEPLIBS ) SET(TRILINOS_INCDIR ${CMAKE_INSTALL_PREFIX}/${${PROJECT_NAME}_INSTALL_INCLUDE_DIR}) diff --git a/lib/kokkos/core/src/impl/Kokkos_AnalyzePolicy.hpp b/lib/kokkos/core/src/impl/Kokkos_AnalyzePolicy.hpp index ac86651433..739e2d4f46 100644 --- a/lib/kokkos/core/src/impl/Kokkos_AnalyzePolicy.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_AnalyzePolicy.hpp @@ -177,11 +177,14 @@ struct AnalyzePolicy is_launch_bounds::value, SetLaunchBounds, typename std::conditional< - Experimental::is_work_item_property< - T>::value, + Kokkos::Experimental:: + is_work_item_property::value, SetWorkItemProperty, - SetWorkTag >::type>::type>:: - type>::type>::type>::type>::type::type, + typename std::conditional< + !std::is_void::value, + SetWorkTag, Base>::type>:: + type>::type>::type>::type>::type>::type>:: + type::type, Traits...> {}; template @@ -201,9 +204,9 @@ struct AnalyzePolicy { using index_type = typename std::conditional::value, IndexType, - typename Base::index_type>::type :: - type // nasty hack to make index_type into an integral_type - ; // instead of the wrapped IndexType for backwards compatibility + typename Base::index_type>::type::type; + // nasty hack to make index_type into an integral_type + // instead of the wrapped IndexType for backwards compatibility using iteration_pattern = typename std::conditional< is_void::value, diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Assembly.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Assembly.hpp index 786ffc902f..a31dd1cf49 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Assembly.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Assembly.hpp @@ -48,6 +48,8 @@ namespace Kokkos { namespace Impl { + +#if !defined(_WIN32) struct cas128_t { uint64_t lower; uint64_t upper; @@ -85,6 +87,7 @@ struct cas128_t { upper = a.upper; } } __attribute__((__aligned__(16))); +#endif #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) inline cas128_t cas128(volatile cas128_t* ptr, cas128_t cmp, cas128_t swap) { diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp index 4fe72ad142..c25b80a825 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp @@ -92,8 +92,7 @@ __inline__ __device__ unsigned long long int atomic_compare_exchange( template __inline__ __device__ T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { const int tmp = atomicCAS((int*)dest, *((int*)&compare), *((int*)&val)); return *((T*)&tmp); } @@ -101,9 +100,9 @@ __inline__ __device__ T atomic_compare_exchange( template __inline__ __device__ T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if< - sizeof(T) != sizeof(int) && sizeof(T) == sizeof(unsigned long long int), - const T&>::type val) { + typename std::enable_if::type val) { typedef unsigned long long int type; const type tmp = atomicCAS((type*)dest, *((type*)&compare), *((type*)&val)); return *((T*)&tmp); @@ -112,8 +111,8 @@ __inline__ __device__ T atomic_compare_exchange( template __inline__ __device__ T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), - const T>::type& val) { + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), + const T>::type& val) { T return_val; // This is a way to (hopefully) avoid dead lock in a warp int done = 0; @@ -147,7 +146,7 @@ __inline__ __device__ T atomic_compare_exchange( //---------------------------------------------------------------------------- // GCC native CAS supports int, long, unsigned int, unsigned long. // Intel native CAS support int and long with the same interface as GCC. -#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) +#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) || !defined(KOKKOS_ENABLE_HIP_ATOMICS) #if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) @@ -188,12 +187,11 @@ inline unsigned long atomic_compare_exchange(volatile unsigned long* const dest, template inline T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { union U { int i; T t; - KOKKOS_INLINE_FUNCTION U(){}; + KOKKOS_INLINE_FUNCTION U() {} } tmp; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -208,13 +206,13 @@ inline T atomic_compare_exchange( template inline T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type val) { union U { long i; T t; - KOKKOS_INLINE_FUNCTION U(){}; + KOKKOS_INLINE_FUNCTION U() {} } tmp; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -230,14 +228,14 @@ inline T atomic_compare_exchange( template inline T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type val) { union U { Impl::cas128_t i; T t; - KOKKOS_INLINE_FUNCTION U(){}; + KOKKOS_INLINE_FUNCTION U() {} } tmp; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -253,12 +251,12 @@ inline T atomic_compare_exchange( template inline T atomic_compare_exchange( volatile T* const dest, const T compare, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) - && (sizeof(T) != 16) + && (sizeof(T) != 16) #endif - , - const T>::type& val) { + , + const T>::type& val) { #if defined(KOKKOS_ENABLE_RFO_PREFETCH) _mm_prefetch((const char*)dest, _MM_HINT_ET0); #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Weak.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Weak.hpp index c2aad61975..e3fd1c53db 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Weak.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Weak.hpp @@ -226,7 +226,7 @@ bool atomic_compare_exchange_weak( // GCC native CAS supports int, long, unsigned int, unsigned long. // Intel native CAS support int and long with the same interface as GCC. -#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) +#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) || !defined(KOKKOS_ENABLE_HIP_ATOMICS) #if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) @@ -267,12 +267,11 @@ inline unsigned long atomic_compare_exchange(volatile unsigned long* const dest, template inline T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { union U { int i; T t; - KOKKOS_INLINE_FUNCTION U(){}; + KOKKOS_INLINE_FUNCTION U() {} } tmp; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -287,13 +286,13 @@ inline T atomic_compare_exchange( template inline T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type val) { union U { long i; T t; - KOKKOS_INLINE_FUNCTION U(){}; + KOKKOS_INLINE_FUNCTION U() {} } tmp; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -309,14 +308,14 @@ inline T atomic_compare_exchange( template inline T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type val) { union U { Impl::cas128_t i; T t; - KOKKOS_INLINE_FUNCTION U(){}; + KOKKOS_INLINE_FUNCTION U() {} } tmp; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -332,12 +331,12 @@ inline T atomic_compare_exchange( template inline T atomic_compare_exchange( volatile T* const dest, const T compare, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) - && (sizeof(T) != 16) + && (sizeof(T) != 16) #endif - , - const T>::type& val) { + , + const T>::type& val) { #if defined(KOKKOS_ENABLE_RFO_PREFETCH) _mm_prefetch((const char*)dest, _MM_HINT_ET0); #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Decrement.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Decrement.hpp index 992ae3c005..47961b5c71 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Decrement.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Decrement.hpp @@ -54,7 +54,7 @@ namespace Kokkos { -// Atomic increment +// Atomic decrement template <> KOKKOS_INLINE_FUNCTION void atomic_decrement(volatile char* a) { #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) && \ diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Exchange.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Exchange.hpp index 37aebf9a3d..4a9a786df4 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Exchange.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Exchange.hpp @@ -84,8 +84,7 @@ __inline__ __device__ unsigned long long int atomic_exchange( template __inline__ __device__ T atomic_exchange( volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { // int tmp = __ullAtomicExch( (int*) dest , *((int*)&val) ); #if defined(KOKKOS_ENABLE_RFO_PREFETCH) _mm_prefetch((const char*)dest, _MM_HINT_ET0); @@ -98,9 +97,9 @@ __inline__ __device__ T atomic_exchange( template __inline__ __device__ T atomic_exchange( volatile T* const dest, - typename Kokkos::Impl::enable_if< - sizeof(T) != sizeof(int) && sizeof(T) == sizeof(unsigned long long int), - const T&>::type val) { + typename std::enable_if::type val) { typedef unsigned long long int type; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -113,10 +112,10 @@ __inline__ __device__ T atomic_exchange( } template -__inline__ __device__ T atomic_exchange( - volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), - const T>::type& val) { +__inline__ __device__ T +atomic_exchange(volatile T* const dest, + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), + const T>::type& val) { T return_val; // This is a way to (hopefully) avoid dead lock in a warp #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -152,8 +151,7 @@ __inline__ __device__ T atomic_exchange( template __inline__ __device__ void atomic_assign( volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { // (void) __ullAtomicExch( (int*) dest , *((int*)&val) ); (void)atomicExch(((int*)dest), *((int*)&val)); } @@ -161,9 +159,9 @@ __inline__ __device__ void atomic_assign( template __inline__ __device__ void atomic_assign( volatile T* const dest, - typename Kokkos::Impl::enable_if< - sizeof(T) != sizeof(int) && sizeof(T) == sizeof(unsigned long long int), - const T&>::type val) { + typename std::enable_if::type val) { typedef unsigned long long int type; // (void) __ullAtomicExch( (type*) dest , *((type*)&val) ); (void)atomicExch(((type*)dest), *((type*)&val)); @@ -172,9 +170,9 @@ __inline__ __device__ void atomic_assign( template __inline__ __device__ void atomic_assign( volatile T* const dest, - typename Kokkos::Impl::enable_if< - sizeof(T) != sizeof(int) && sizeof(T) != sizeof(unsigned long long int), - const T&>::type val) { + typename std::enable_if::type val) { (void)atomic_exchange(dest, val); } @@ -187,11 +185,10 @@ __inline__ __device__ void atomic_assign( #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) template -inline T atomic_exchange( - volatile T* const dest, - typename Kokkos::Impl::enable_if::type val) { +inline T atomic_exchange(volatile T* const dest, + typename std::enable_if::type val) { typedef typename Kokkos::Impl::if_c::type type; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -205,7 +202,7 @@ inline T atomic_exchange( union U { T val_T; type val_type; - inline U(){}; + inline U() {} } old; old.val_T = *dest; @@ -223,8 +220,8 @@ inline T atomic_exchange( template inline T atomic_exchange( volatile T* const dest, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type + val) { #if defined(KOKKOS_ENABLE_RFO_PREFETCH) _mm_prefetch((const char*)dest, _MM_HINT_ET0); #endif @@ -232,7 +229,7 @@ inline T atomic_exchange( union U { Impl::cas128_t i; T t; - inline U(){}; + inline U() {} } assume, oldval, newval; oldval.t = *dest; @@ -252,12 +249,12 @@ inline T atomic_exchange( template inline T atomic_exchange( volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) - && (sizeof(T) != 16) + && (sizeof(T) != 16) #endif - , - const T>::type& val) { + , + const T>::type& val) { while (!Impl::lock_address_host_space((void*)dest)) ; T return_val = *dest; @@ -280,11 +277,10 @@ inline T atomic_exchange( } template -inline void atomic_assign( - volatile T* const dest, - typename Kokkos::Impl::enable_if::type val) { +inline void atomic_assign(volatile T* const dest, + typename std::enable_if::type val) { typedef typename Kokkos::Impl::if_c::type type; @@ -299,7 +295,7 @@ inline void atomic_assign( union U { T val_T; type val_type; - inline U(){}; + inline U() {} } old; old.val_T = *dest; @@ -315,8 +311,8 @@ inline void atomic_assign( template inline void atomic_assign( volatile T* const dest, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type + val) { #if defined(KOKKOS_ENABLE_RFO_PREFETCH) _mm_prefetch((const char*)dest, _MM_HINT_ET0); #endif @@ -324,7 +320,7 @@ inline void atomic_assign( union U { Impl::cas128_t i; T t; - inline U(){}; + inline U() {} } assume, oldval, newval; oldval.t = *dest; @@ -339,12 +335,12 @@ inline void atomic_assign( template inline void atomic_assign( volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) - && (sizeof(T) != 16) + && (sizeof(T) != 16) #endif - , - const T>::type& val) { + , + const T>::type& val) { while (!Impl::lock_address_host_space((void*)dest)) ; // This is likely an aggregate type with a defined diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp index 58277740da..0a6900f840 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp @@ -94,14 +94,13 @@ __inline__ __device__ double atomic_fetch_add(volatile double* const dest, template __inline__ __device__ T atomic_fetch_add( volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { // to work around a bug in the clang cuda compiler, the name here needs to be // different from the one internal to the other overloads union U1 { int i; T t; - KOKKOS_INLINE_FUNCTION U1(){}; + KOKKOS_INLINE_FUNCTION U1() {} } assume, oldval, newval; oldval.t = *dest; @@ -118,15 +117,15 @@ __inline__ __device__ T atomic_fetch_add( template __inline__ __device__ T atomic_fetch_add( volatile T* const dest, - typename Kokkos::Impl::enable_if< - sizeof(T) != sizeof(int) && sizeof(T) == sizeof(unsigned long long int), - const T>::type val) { + typename std::enable_if::type val) { // to work around a bug in the clang cuda compiler, the name here needs to be // different from the one internal to the other overloads union U2 { unsigned long long int i; T t; - KOKKOS_INLINE_FUNCTION U2(){}; + KOKKOS_INLINE_FUNCTION U2() {} } assume, oldval, newval; oldval.t = *dest; @@ -143,10 +142,10 @@ __inline__ __device__ T atomic_fetch_add( //---------------------------------------------------------------------------- template -__inline__ __device__ T atomic_fetch_add( - volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), - const T>::type& val) { +__inline__ __device__ T +atomic_fetch_add(volatile T* const dest, + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), + const T>::type& val) { T return_val; // This is a way to (hopefully) avoid dead lock in a warp int done = 0; @@ -179,7 +178,7 @@ __inline__ __device__ T atomic_fetch_add( #endif #endif //---------------------------------------------------------------------------- -#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) +#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) || !defined(KOKKOS_ENABLE_HIP_ATOMICS) #if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) @@ -239,12 +238,11 @@ inline unsigned long int atomic_fetch_add( template inline T atomic_fetch_add( volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { union U { int i; T t; - inline U(){}; + inline U() {} } assume, oldval, newval; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -263,15 +261,14 @@ inline T atomic_fetch_add( } template -inline T atomic_fetch_add( - volatile T* const dest, - typename Kokkos::Impl::enable_if::type val) { +inline T atomic_fetch_add(volatile T* const dest, + typename std::enable_if::type val) { union U { long i; T t; - inline U(){}; + inline U() {} } assume, oldval, newval; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -293,14 +290,14 @@ inline T atomic_fetch_add( template inline T atomic_fetch_add( volatile T* const dest, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type val) { union U { Impl::cas128_t i; T t; - inline U(){}; + inline U() {} } assume, oldval, newval; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -324,12 +321,12 @@ inline T atomic_fetch_add( template inline T atomic_fetch_add( volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) - && (sizeof(T) != 16) + && (sizeof(T) != 16) #endif - , - const T>::type& val) { + , + const T>::type& val) { while (!Impl::lock_address_host_space((void*)dest)) ; T return_val = *dest; @@ -390,11 +387,5 @@ __inline__ __device__ T atomic_fetch_add(volatile T* const, } #endif -// Simpler version of atomic_fetch_add without the fetch -template -KOKKOS_INLINE_FUNCTION void atomic_add(volatile T* const dest, const T src) { - atomic_fetch_add(dest, src); -} - } // namespace Kokkos #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp index 91da9fdcaa..c14749f1b7 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp @@ -93,8 +93,7 @@ __inline__ __device__ unsigned int atomic_fetch_sub(volatile double* const dest, template __inline__ __device__ T atomic_fetch_sub( volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { union U { int i; T t; @@ -115,9 +114,9 @@ __inline__ __device__ T atomic_fetch_sub( template __inline__ __device__ T atomic_fetch_sub( volatile T* const dest, - typename Kokkos::Impl::enable_if< - sizeof(T) != sizeof(int) && sizeof(T) == sizeof(unsigned long long int), - const T>::type val) { + typename std::enable_if::type val) { union U { unsigned long long int i; T t; @@ -138,10 +137,10 @@ __inline__ __device__ T atomic_fetch_sub( //---------------------------------------------------------------------------- template -__inline__ __device__ T atomic_fetch_sub( - volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), - const T>::type& val) { +__inline__ __device__ T +atomic_fetch_sub(volatile T* const dest, + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), + const T>::type& val) { T return_val; // This is a way to (hopefully) avoid dead lock in a warp int done = 0; @@ -172,7 +171,7 @@ __inline__ __device__ T atomic_fetch_sub( #endif #endif //---------------------------------------------------------------------------- -#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) +#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) || !defined(KOKKOS_ENABLE_HIP_ATOMICS) #if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) @@ -214,8 +213,7 @@ inline unsigned long int atomic_fetch_sub( template inline T atomic_fetch_sub( volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { union U { int i; T t; @@ -238,11 +236,10 @@ inline T atomic_fetch_sub( } template -inline T atomic_fetch_sub( - volatile T* const dest, - typename Kokkos::Impl::enable_if::type val) { +inline T atomic_fetch_sub(volatile T* const dest, + typename std::enable_if::type val) { #if defined(KOKKOS_ENABLE_RFO_PREFETCH) _mm_prefetch((const char*)dest, _MM_HINT_ET0); #endif @@ -269,8 +266,8 @@ inline T atomic_fetch_sub( template inline T atomic_fetch_sub( volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), - const T>::type& val) { + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), + const T>::type& val) { #if defined(KOKKOS_ENABLE_RFO_PREFETCH) _mm_prefetch((const char*)dest, _MM_HINT_ET0); #endif @@ -321,12 +318,6 @@ __inline__ __device__ T atomic_fetch_sub(volatile T* const, } #endif -// Simpler version of atomic_fetch_sub without the fetch -template -KOKKOS_INLINE_FUNCTION void atomic_sub(volatile T* const dest, const T src) { - atomic_fetch_sub(dest, src); -} - } // namespace Kokkos #include diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp index 160a4e7921..49ee86b2c4 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp @@ -155,9 +155,9 @@ struct RShiftOper { template KOKKOS_INLINE_FUNCTION T atomic_fetch_oper( const Oper& op, volatile T* const dest, - typename Kokkos::Impl::enable_if< - sizeof(T) != sizeof(int) && sizeof(T) == sizeof(unsigned long long int), - const T>::type val) { + typename std::enable_if::type val) { union U { unsigned long long int i; T t; @@ -179,9 +179,9 @@ KOKKOS_INLINE_FUNCTION T atomic_fetch_oper( template KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( const Oper& op, volatile T* const dest, - typename Kokkos::Impl::enable_if< - sizeof(T) != sizeof(int) && sizeof(T) == sizeof(unsigned long long int), - const T>::type val) { + typename std::enable_if::type val) { union U { unsigned long long int i; T t; @@ -192,7 +192,7 @@ KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( do { assume.i = oldval.i; - newval.t = Oper::apply(assume.t, val); + newval.t = op.apply(assume.t, val); oldval.i = Kokkos::atomic_compare_exchange((unsigned long long int*)dest, assume.i, newval.i); } while (assume.i != oldval.i); @@ -203,8 +203,7 @@ KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( template KOKKOS_INLINE_FUNCTION T atomic_fetch_oper( const Oper& op, volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { union U { int i; T t; @@ -225,8 +224,7 @@ KOKKOS_INLINE_FUNCTION T atomic_fetch_oper( template KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( const Oper& op, volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { union U { int i; T t; @@ -237,7 +235,7 @@ KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( do { assume.i = oldval.i; - newval.t = Oper::apply(assume.t, val); + newval.t = op.apply(assume.t, val); oldval.i = Kokkos::atomic_compare_exchange((int*)dest, assume.i, newval.i); } while (assume.i != oldval.i); @@ -247,13 +245,13 @@ KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( template KOKKOS_INLINE_FUNCTION T atomic_fetch_oper( const Oper& op, volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), - const T>::type val) { + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), const T>::type + val) { #ifdef KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST while (!Impl::lock_address_host_space((void*)dest)) ; T return_val = *dest; - *dest = Oper::apply(return_val, val); + *dest = op.apply(return_val, val); Impl::unlock_address_host_space((void*)dest); return return_val; #elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA) @@ -271,8 +269,7 @@ KOKKOS_INLINE_FUNCTION T atomic_fetch_oper( if (!done) { if (Impl::lock_address_cuda_space((void*)dest)) { return_val = *dest; - *dest = Oper::apply(return_val, val); - ; + *dest = op.apply(return_val, val); Impl::unlock_address_cuda_space((void*)dest); done = 1; } @@ -284,24 +281,44 @@ KOKKOS_INLINE_FUNCTION T atomic_fetch_oper( #endif } return return_val; +#elif defined(__HIP_DEVICE_COMPILE__) + // FIXME_HIP + Kokkos::abort("atomic_fetch_oper not implemented for large types."); + T return_val = *dest; + int done = 0; + unsigned int active = __ballot(1); + unsigned int done_active = 0; + while (active != done_active) { + if (!done) { + // if (Impl::lock_address_hip_space((void*)dest)) + { + return_val = *dest; + *dest = op.apply(return_val, val); + // Impl::unlock_address_hip_space((void*)dest); + done = 1; + } + } + done_active = __ballot(done); + } + return return_val; #endif } template -KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( - const Oper& op, volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) +KOKKOS_INLINE_FUNCTION T +atomic_oper_fetch(const Oper& op, volatile T* const dest, + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) #if defined(KOKKOS_ENABLE_ASM) && \ defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - && (sizeof(T) != 16) + && (sizeof(T) != 16) #endif - , - const T>::type& val) { + , + const T>::type& val) { #ifdef KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST while (!Impl::lock_address_host_space((void*)dest)) ; - T return_val = Oper::apply(*dest, val); + T return_val = op.apply(*dest, val); *dest = return_val; Impl::unlock_address_host_space((void*)dest); return return_val; @@ -319,7 +336,7 @@ KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( while (active != done_active) { if (!done) { if (Impl::lock_address_cuda_space((void*)dest)) { - return_val = Oper::apply(*dest, val); + return_val = op.apply(*dest, val); *dest = return_val; Impl::unlock_address_cuda_space((void*)dest); done = 1; @@ -332,6 +349,26 @@ KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( #endif } return return_val; +#elif defined(__HIP_DEVICE_COMPILE__) + // FIXME_HIP + Kokkos::abort("atomic_oper_fetch not implemented for large types."); + T return_val; + int done = 0; + unsigned int active = __ballot(1); + unsigned int done_active = 0; + while (active != done_active) { + if (!done) { + // if (Impl::lock_address_hip_space((void*)dest)) + { + return_val = op.apply(*dest, val); + *dest = return_val; + // Impl::unlock_address_hip_space((void*)dest); + done = 1; + } + } + done_active = __ballot(done); + } + return return_val; #endif } @@ -454,5 +491,27 @@ KOKKOS_INLINE_FUNCTION T atomic_rshift_fetch(volatile T* const dest, dest, val); } +#ifdef _WIN32 +template +KOKKOS_INLINE_FUNCTION T atomic_add_fetch(volatile T* const dest, const T val) { + return Impl::atomic_oper_fetch(Impl::AddOper(), dest, val); +} + +template +KOKKOS_INLINE_FUNCTION T atomic_sub_fetch(volatile T* const dest, const T val) { + return Impl::atomic_oper_fetch(Impl::SubOper(), dest, val); +} + +template +KOKKOS_INLINE_FUNCTION T atomic_fetch_add(volatile T* const dest, const T val) { + return Impl::atomic_fetch_oper(Impl::AddOper(), dest, val); +} + +template +KOKKOS_INLINE_FUNCTION T atomic_fetch_sub(volatile T* const dest, const T val) { + return Impl::atomic_fetch_oper(Impl::SubOper(), dest, val); +} +#endif + } // namespace Kokkos #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic_Secondary.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic_Secondary.hpp new file mode 100644 index 0000000000..9d0172b653 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic_Secondary.hpp @@ -0,0 +1,76 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#if defined(KOKKOS_ATOMIC_HPP) && !defined(KOKKOS_ATOMIC_GENERIC_SECONDARY_HPP) +#define KOKKOS_ATOMIC_GENERIC_SECONDARY_HPP +#include + +namespace Kokkos { + +#ifndef KOKKOS_ENABLE_SERIAL_ATOMICS +template +KOKKOS_INLINE_FUNCTION T atomic_exchange(volatile T* const dest, const T val) { + T oldval = *dest; + T assume; + do { + assume = oldval; + oldval = atomic_compare_exchange(dest, assume, val); + } while (assume != oldval); + + return oldval; +} +#endif + +template +KOKKOS_INLINE_FUNCTION void atomic_add(volatile T* const dest, const T val) { + (void)atomic_fetch_add(dest, val); +} + +template +KOKKOS_INLINE_FUNCTION void atomic_sub(volatile T* const dest, const T val) { + (void)atomic_fetch_sub(dest, val); +} + +} // namespace Kokkos +#endif diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Increment.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Increment.hpp index f0ffebef9a..65630aa84c 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Increment.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Increment.hpp @@ -91,6 +91,7 @@ KOKKOS_INLINE_FUNCTION void atomic_increment(volatile short* a) { #endif } +#ifndef _WIN32 template <> KOKKOS_INLINE_FUNCTION void atomic_increment(volatile int* a) { #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) && \ @@ -109,6 +110,7 @@ KOKKOS_INLINE_FUNCTION void atomic_increment(volatile int* a) { Kokkos::atomic_fetch_add(a, int(1)); #endif } +#endif template <> KOKKOS_INLINE_FUNCTION void atomic_increment( diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Load.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Load.hpp index 6b4c82b620..f3b77a2976 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Load.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Load.hpp @@ -125,8 +125,7 @@ __device__ __inline__ T _relaxed_atomic_load_impl( void const**>::type = nullptr) { T rv{}; // TODO remove a copy operation here? - Kokkos::Impl::atomic_oper_fetch(NoOpOper{}, &rv, rv); - return rv; + return Kokkos::Impl::atomic_oper_fetch(NoOpOper{}, ptr, rv); } template @@ -168,6 +167,14 @@ inline T _atomic_load(T* ptr, MemoryOrder) { return *ptr; } +#elif defined(KOKKOS_ENABLE_WINDOWS_ATOMICS) + +template +inline T _atomic_load(T* ptr, MemoryOrder) { + atomic_compare_exchange(ptr, 0, 0); + return *ptr; +} + #endif // end of all atomic implementations template @@ -189,7 +196,7 @@ KOKKOS_FORCEINLINE_FUNCTION T atomic_load(T* ptr, } template -KOKKOS_FORCEINLINE_FUNCTION T atomic_load(T* ptr, +KOKKOS_FORCEINLINE_FUNCTION T atomic_load(T* /*ptr*/, Impl::memory_order_release_t) { static_assert( sizeof(T) == 0, // just something that will always be false, but only on @@ -198,7 +205,7 @@ KOKKOS_FORCEINLINE_FUNCTION T atomic_load(T* ptr, } template -KOKKOS_FORCEINLINE_FUNCTION T atomic_load(T* ptr, +KOKKOS_FORCEINLINE_FUNCTION T atomic_load(T* /*ptr*/, Impl::memory_order_acq_rel_t) { static_assert( sizeof(T) == 0, // just something that will always be false, but only on diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_MinMax.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_MinMax.hpp new file mode 100644 index 0000000000..8a886d0a77 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_MinMax.hpp @@ -0,0 +1,223 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#if defined(KOKKOS_ATOMIC_HPP) && !defined(KOKKOS_ATOMIC_MINMAX_HPP) +#define KOKKOS_ATOMIC_MINMAX_HPP + +namespace Kokkos { + +//---------------------------------------------------------------------------- + +#if defined(KOKKOS_ENABLE_CUDA) +#if defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) + +// Support for int, unsigned int, unsigned long long int, and float + +// Atomic_fetch_{min,max} + +#ifdef KOKKOS_IMPL_CUDA_CLANG_WORKAROUND + +// Host implementations for CLANG compiler + +inline __host__ int atomic_fetch_min(volatile int* const dest, const int val) { + return Impl::atomic_fetch_oper(Impl::MinOper(), dest, + val); +} + +inline __host__ unsigned int atomic_fetch_min(volatile unsigned int* const dest, + const unsigned int val) { + return Impl::atomic_fetch_oper( + Impl::MinOper(), dest, val); +} + +inline __host__ unsigned long long int atomic_fetch_min( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + return Impl::atomic_fetch_oper(Impl::MinOper(), + dest, val); +} + +inline __host__ int atomic_fetch_max(volatile int* const dest, const int val) { + return Impl::atomic_fetch_oper(Impl::MaxOper(), dest, + val); +} + +inline __host__ unsigned int atomic_fetch_max(volatile unsigned int* const dest, + const unsigned int val) { + return Impl::atomic_fetch_oper( + Impl::MaxOper(), dest, val); +} + +inline __host__ unsigned long long int atomic_fetch_max( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + return Impl::atomic_fetch_oper(Impl::MaxOper(), + dest, val); +} + +#endif + +inline __device__ int atomic_fetch_min(volatile int* const dest, + const int val) { + return atomicMin((int*)dest, val); +} + +inline __device__ unsigned int atomic_fetch_min( + volatile unsigned int* const dest, const unsigned int val) { + return atomicMin((unsigned int*)dest, val); +} + +inline __device__ unsigned long long int atomic_fetch_min( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + return atomicMin((unsigned long long int*)dest, val); +} + +inline __device__ int atomic_fetch_max(volatile int* const dest, + const int val) { + return atomicMax((int*)dest, val); +} + +inline __device__ unsigned int atomic_fetch_max( + volatile unsigned int* const dest, const unsigned int val) { + return atomicMax((unsigned int*)dest, val); +} + +inline __device__ unsigned long long int atomic_fetch_max( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + return atomicMax((unsigned long long int*)dest, val); +} + +// Atomic_{min,max}_fetch + +#ifdef KOKKOS_IMPL_CUDA_CLANG_WORKAROUND + +// Host implementations for CLANG compiler + +inline __host__ int atomic_min_fetch(volatile int* const dest, const int val) { + return Impl::atomic_oper_fetch(Impl::MinOper(), dest, + val); +} + +inline __host__ unsigned int atomic_min_fetch(volatile unsigned int* const dest, + const unsigned int val) { + return Impl::atomic_oper_fetch( + Impl::MinOper(), dest, val); +} + +inline __host__ unsigned long long int atomic_min_fetch( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + return Impl::atomic_oper_fetch(Impl::MinOper(), + dest, val); +} + +inline __host__ int atomic_max_fetch(volatile int* const dest, const int val) { + return Impl::atomic_oper_fetch(Impl::MaxOper(), dest, + val); +} + +inline __host__ unsigned int atomic_max_fetch(volatile unsigned int* const dest, + const unsigned int val) { + return Impl::atomic_oper_fetch( + Impl::MaxOper(), dest, val); +} + +inline __host__ unsigned long long int atomic_max_fetch( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + return Impl::atomic_oper_fetch(Impl::MaxOper(), + dest, val); +} +#endif + +inline __device__ int atomic_min_fetch(volatile int* const dest, + const int val) { + const int old = atomicMin((int*)dest, val); + return old < val ? old : val; +} + +inline __device__ unsigned int atomic_min_fetch( + volatile unsigned int* const dest, const unsigned int val) { + const unsigned int old = atomicMin((unsigned int*)dest, val); + return old < val ? old : val; +} + +inline __device__ unsigned long long int atomic_min_fetch( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + const unsigned long long old = atomicMin((unsigned long long*)dest, val); + return old < val ? old : val; +} + +inline __device__ int atomic_max_fetch(volatile int* const dest, + const int val) { + const int old = atomicMax((int*)dest, val); + return old >= val ? old : val; +} + +inline __device__ unsigned int atomic_max_fetch( + volatile unsigned int* const dest, const unsigned int val) { + const unsigned int old = atomicMax((unsigned int*)dest, val); + return old >= val ? old : val; +} + +inline __device__ unsigned long long int atomic_max_fetch( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + const unsigned long long old = atomicMax((unsigned long long*)dest, val); + return old >= val ? old : val; +} + +#endif +#endif +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Store.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Store.hpp index 6cd246e3ae..264d6beaf5 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Store.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Store.hpp @@ -164,6 +164,13 @@ inline void _atomic_store(T* ptr, T val, MemoryOrder) { *ptr = val; } +#elif defined(KOKKOS_ENABLE_WINDOWS_ATOMICS) + +template +inline void _atomic_store(T* ptr, T val, MemoryOrder) { + atomic_exchange(ptr, val); +} + #endif // end of all atomic implementations template @@ -185,7 +192,7 @@ KOKKOS_FORCEINLINE_FUNCTION void atomic_store(T* ptr, T val, } template -KOKKOS_FORCEINLINE_FUNCTION void atomic_store(T* ptr, T val, +KOKKOS_FORCEINLINE_FUNCTION void atomic_store(T* /*ptr*/, T /*val*/, Impl::memory_order_acquire_t) { static_assert( sizeof(T) == 0, // just something that will always be false, but only on @@ -194,7 +201,7 @@ KOKKOS_FORCEINLINE_FUNCTION void atomic_store(T* ptr, T val, } template -KOKKOS_FORCEINLINE_FUNCTION void atomic_store(T* ptr, T val, +KOKKOS_FORCEINLINE_FUNCTION void atomic_store(T* /*ptr*/, T /*val*/, Impl::memory_order_acq_rel_t) { static_assert( sizeof(T) == 0, // just something that will always be false, but only on @@ -205,7 +212,7 @@ KOKKOS_FORCEINLINE_FUNCTION void atomic_store(T* ptr, T val, template KOKKOS_FORCEINLINE_FUNCTION void atomic_store(T* ptr, T val) { // relaxed by default! - _atomic_store(ptr, Impl::memory_order_relaxed); + _atomic_store(ptr, val, Impl::memory_order_relaxed); } } // end namespace Impl diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_View.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_View.hpp index bfe9bcd0b3..c3719bed22 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_View.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_View.hpp @@ -347,7 +347,7 @@ class AtomicViewDataHandle { typename ViewTraits::value_type* ptr; KOKKOS_INLINE_FUNCTION - AtomicViewDataHandle() : ptr(NULL) {} + AtomicViewDataHandle() : ptr(nullptr) {} KOKKOS_INLINE_FUNCTION AtomicViewDataHandle(typename ViewTraits::value_type* ptr_) : ptr(ptr_) {} diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Windows.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Windows.hpp index 25230982ec..c5d3466c6c 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Windows.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Windows.hpp @@ -52,6 +52,8 @@ #include #include +#undef VOID + namespace Kokkos { namespace Impl { #ifdef _MSC_VER @@ -74,12 +76,41 @@ __attribute__((aligned(16))) template KOKKOS_INLINE_FUNCTION T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { + union U { + CHAR i; + T t; + KOKKOS_INLINE_FUNCTION U(){}; + } tmp; + + tmp.i = _InterlockedCompareExchange8((CHAR*)dest, *((CHAR*)&val), + *((CHAR*)&compare)); + return tmp.t; +} + +template +KOKKOS_INLINE_FUNCTION T atomic_compare_exchange( + volatile T* const dest, const T& compare, + typename std::enable_if::type val) { + union U { + SHORT i; + T t; + KOKKOS_INLINE_FUNCTION U(){}; + } tmp; + + tmp.i = _InterlockedCompareExchange16((SHORT*)dest, *((SHORT*)&val), + *((SHORT*)&compare)); + return tmp.t; +} + +template +KOKKOS_INLINE_FUNCTION T atomic_compare_exchange( + volatile T* const dest, const T& compare, + typename std::enable_if::type val) { union U { LONG i; T t; - KOKKOS_INLINE_FUNCTION U(){}; + KOKKOS_INLINE_FUNCTION U() {} } tmp; tmp.i = _InterlockedCompareExchange((LONG*)dest, *((LONG*)&val), @@ -90,12 +121,12 @@ KOKKOS_INLINE_FUNCTION T atomic_compare_exchange( template KOKKOS_INLINE_FUNCTION T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type + val) { union U { LONGLONG i; T t; - KOKKOS_INLINE_FUNCTION U(){}; + KOKKOS_INLINE_FUNCTION U() {} } tmp; tmp.i = _InterlockedCompareExchange64((LONGLONG*)dest, *((LONGLONG*)&val), @@ -106,18 +137,19 @@ KOKKOS_INLINE_FUNCTION T atomic_compare_exchange( template KOKKOS_INLINE_FUNCTION T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type + val) { + T compare_and_result(compare); union U { Impl::cas128_t i; T t; KOKKOS_INLINE_FUNCTION U(){}; - } tmp, newval; + } newval; newval.t = val; _InterlockedCompareExchange128((LONGLONG*)dest, newval.i.upper, - newval.i.lower, ((LONGLONG*)&compare)); - tmp.t = dest; - return tmp.t; + newval.i.lower, + ((LONGLONG*)&compare_and_result)); + return compare_and_result; } template @@ -127,117 +159,6 @@ KOKKOS_INLINE_FUNCTION T atomic_compare_exchange_strong(volatile T* const dest, return atomic_compare_exchange(dest, compare, val); } -template -T atomic_fetch_or(volatile T* const dest, const T val) { - T oldval = *dest; - T assume; - do { - assume = oldval; - T newval = val | oldval; - oldval = atomic_compare_exchange(dest, assume, newval); - } while (assume != oldval); - - return oldval; -} - -template -T atomic_fetch_and(volatile T* const dest, const T val) { - T oldval = *dest; - T assume; - do { - assume = oldval; - T newval = val & oldval; - oldval = atomic_compare_exchange(dest, assume, newval); - } while (assume != oldval); - - return oldval; -} - -template -T atomic_fetch_add(volatile T* const dest, const T val) { - T oldval = *dest; - T assume; - do { - assume = oldval; - T newval = val + oldval; - oldval = atomic_compare_exchange(dest, assume, newval); - } while (assume != oldval); - - return oldval; -} - -template -T atomic_fetch_sub(volatile T* const dest, const T val) { - T oldval = *dest; - T assume; - do { - assume = oldval; - T newval = val - oldval; - oldval = atomic_compare_exchange(dest, assume, newval); - } while (assume != oldval); - - return oldval; -} - -template -T atomic_exchange(volatile T* const dest, const T val) { - T oldval = *dest; - T assume; - do { - assume = oldval; - oldval = atomic_compare_exchange(dest, assume, val); - } while (assume != oldval); - - return oldval; -} - -template -void atomic_or(volatile T* const dest, const T val) { - atomic_fetch_or(dest, val); -} - -template -void atomic_and(volatile T* const dest, const T val) { - atomic_fetch_and(dest, val); -} - -template -void atomic_add(volatile T* const dest, const T val) { - atomic_fetch_add(dest, val); -} - -template -void atomic_sub(volatile T* const dest, const T val) { - atomic_fetch_sub(dest, val); -} - -template -void atomic_assign(volatile T* const dest, const T val) { - atomic_fetch_exchange(dest, val); -} - -template -T atomic_increment(volatile T* const dest) { - T oldval = *dest; - T assume; - do { - assume = oldval; - T newval = assume++; - oldval = atomic_compare_exchange(dest, assume, newval); - } while (assume != oldval); -} - -template -T atomic_decrement(volatile T* const dest) { - T oldval = *dest; - T assume; - do { - assume = oldval; - T newval = assume--; - oldval = atomic_compare_exchange(dest, assume, newval); - } while (assume != oldval); -} - } // namespace Kokkos #endif #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_ChaseLev.hpp b/lib/kokkos/core/src/impl/Kokkos_ChaseLev.hpp index bff0ed8315..e2283f11fd 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ChaseLev.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ChaseLev.hpp @@ -48,8 +48,7 @@ #define KOKKOS_IMPL_LOCKFREEDEQUE_HPP #include -#ifdef KOKKOS_ENABLE_TASKDAG // Note: implies CUDA_VERSION >= 8000 if using - // CUDA +#ifdef KOKKOS_ENABLE_TASKDAG #include @@ -191,11 +190,21 @@ struct ChaseLevDeque { return_value = *static_cast(a[b]); // relaxed load if (t == b) { /* single last element in the queue. */ - if (not Impl::atomic_compare_exchange_strong( +#ifdef _WIN32 + Kokkos::memory_fence(); + bool const success = + Kokkos::atomic_compare_exchange_strong(&m_top, t, t + 1); + Kokkos::memory_fence(); + if (!success) { + return_value = nullptr; + } +#else + if (!Impl::atomic_compare_exchange_strong( &m_top, t, t + 1, memory_order_seq_cst, memory_order_relaxed)) { /* failed race, someone else stole it */ return_value = nullptr; } +#endif m_bottom = b + 1; // memory order relaxed } } else { @@ -241,10 +250,20 @@ struct ChaseLevDeque { Kokkos::load_fence(); // TODO @tasking @memory_order DSH memory order // instead of fence return_value = *static_cast(a[t]); // relaxed - if (not Impl::atomic_compare_exchange_strong( +#ifdef _WIN32 + Kokkos::memory_fence(); + bool const success = + Kokkos::atomic_compare_exchange_strong(&m_top, t, t + 1); + Kokkos::memory_fence(); + if (!success) { + return_value = nullptr; + } +#else + if (!Impl::atomic_compare_exchange_strong( &m_top, t, t + 1, memory_order_seq_cst, memory_order_relaxed)) { return_value = nullptr; } +#endif } return return_value; } diff --git a/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp b/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp index ad13fb7548..386b5918d0 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp @@ -75,7 +75,10 @@ uint64_t clock_tic(void) noexcept { #elif defined(__HCC_ACCELERATOR__) // Get clock register return hc::__clock_u64(); - +#elif defined(KOKKOS_ENABLE_OPENMPTARGET) + return (uint64_t)std::chrono::high_resolution_clock::now() + .time_since_epoch() + .count(); #elif defined(__i386__) || defined(__x86_64) // Return value of 64-bit hi-res clock register. diff --git a/lib/kokkos/core/src/impl/Kokkos_Core.cpp b/lib/kokkos/core/src/impl/Kokkos_Core.cpp index 53f3fd9ce2..9640e0fccb 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Core.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Core.cpp @@ -50,19 +50,122 @@ #include #include #include +#include +#include #include +#ifndef _WIN32 #include +#endif //---------------------------------------------------------------------------- - namespace { bool g_is_initialized = false; bool g_show_warnings = true; -std::stack > finalize_hooks; +// When compiling with clang/LLVM and using the GNU (GCC) C++ Standard Library +// (any recent version between GCC 7.3 and GCC 9.2), std::deque SEGV's during +// the unwinding of the atexit(3C) handlers at program termination. However, +// this bug is not observable when building with GCC. +// As an added bonus, std::list provides constant insertion and +// deletion time complexity, which translates to better run-time performance. As +// opposed to std::deque which does not provide the same constant time +// complexity for inserts/removals, since std::deque is implemented as a +// segmented array. +using hook_function_type = std::function; +std::stack> finalize_hooks; } // namespace namespace Kokkos { namespace Impl { + +int get_ctest_gpu(const char* local_rank_str) { + auto const* ctest_kokkos_device_type = + std::getenv("CTEST_KOKKOS_DEVICE_TYPE"); + if (!ctest_kokkos_device_type) { + return 0; + } + + auto const* ctest_resource_group_count_str = + std::getenv("CTEST_RESOURCE_GROUP_COUNT"); + if (!ctest_resource_group_count_str) { + return 0; + } + + // Make sure rank is within bounds of resource groups specified by CTest + auto resource_group_count = std::atoi(ctest_resource_group_count_str); + auto local_rank = std::atoi(local_rank_str); + if (local_rank >= resource_group_count) { + std::ostringstream ss; + ss << "Error: local rank " << local_rank + << " is outside the bounds of resource groups provided by CTest. Raised" + << " by Kokkos::Impl::get_ctest_gpu()."; + throw_runtime_exception(ss.str()); + } + + // Get the resource types allocated to this resource group + std::ostringstream ctest_resource_group; + ctest_resource_group << "CTEST_RESOURCE_GROUP_" << local_rank; + std::string ctest_resource_group_name = ctest_resource_group.str(); + auto const* ctest_resource_group_str = + std::getenv(ctest_resource_group_name.c_str()); + if (!ctest_resource_group_str) { + std::ostringstream ss; + ss << "Error: " << ctest_resource_group_name << " is not specified. Raised" + << " by Kokkos::Impl::get_ctest_gpu()."; + throw_runtime_exception(ss.str()); + } + + // Look for the device type specified in CTEST_KOKKOS_DEVICE_TYPE + bool found_device = false; + std::string ctest_resource_group_cxx_str = ctest_resource_group_str; + std::istringstream instream(ctest_resource_group_cxx_str); + while (true) { + std::string devName; + std::getline(instream, devName, ','); + if (devName == ctest_kokkos_device_type) { + found_device = true; + break; + } + if (instream.eof() || devName.length() == 0) { + break; + } + } + + if (!found_device) { + std::ostringstream ss; + ss << "Error: device type '" << ctest_kokkos_device_type + << "' not included in " << ctest_resource_group_name + << ". Raised by Kokkos::Impl::get_ctest_gpu()."; + throw_runtime_exception(ss.str()); + } + + // Get the device ID + std::string ctest_device_type_upper = ctest_kokkos_device_type; + for (auto& c : ctest_device_type_upper) { + c = std::toupper(c); + } + ctest_resource_group << "_" << ctest_device_type_upper; + + std::string ctest_resource_group_id_name = ctest_resource_group.str(); + auto resource_str = std::getenv(ctest_resource_group_id_name.c_str()); + if (!resource_str) { + std::ostringstream ss; + ss << "Error: " << ctest_resource_group_id_name + << " is not specified. Raised by Kokkos::Impl::get_ctest_gpu()."; + throw_runtime_exception(ss.str()); + } + + auto const* comma = std::strchr(resource_str, ','); + if (!comma || strncmp(resource_str, "id:", 3)) { + std::ostringstream ss; + ss << "Error: invalid value of " << ctest_resource_group_id_name << ": '" + << resource_str << "'. Raised by Kokkos::Impl::get_ctest_gpu()."; + throw_runtime_exception(ss.str()); + } + + std::string id(resource_str + 3, comma - resource_str - 3); + return std::atoi(id.c_str()); +} + namespace { bool is_unsigned_int(const char* str) { @@ -74,7 +177,8 @@ bool is_unsigned_int(const char* str) { } return true; } -void initialize_internal(const InitArguments& args) { + +void initialize_backends(const InitArguments& args) { // This is an experimental setting // For KNL in Flat mode this variable should be set, so that // memkind allocates high bandwidth memory correctly. @@ -82,10 +186,6 @@ void initialize_internal(const InitArguments& args) { setenv("MEMKIND_HBW_NODES", "1", 0); #endif - if (args.disable_warnings) { - g_show_warnings = false; - } - // Protect declarations, to prevent "unused variable" warnings. #if defined(KOKKOS_ENABLE_OPENMP) || defined(KOKKOS_ENABLE_THREADS) || \ defined(KOKKOS_ENABLE_OPENMPTARGET) || defined(KOKKOS_ENABLE_HPX) @@ -94,25 +194,39 @@ void initialize_internal(const InitArguments& args) { #if defined(KOKKOS_ENABLE_THREADS) || defined(KOKKOS_ENABLE_OPENMPTARGET) const int use_numa = args.num_numa; #endif -#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_ROCM) +#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_ROCM) || \ + defined(KOKKOS_ENABLE_HIP) int use_gpu = args.device_id; const int ndevices = args.ndevices; const int skip_device = args.skip_device; // if the exact device is not set, but ndevices was given, assign round-robin // using on-node MPI rank - if (use_gpu < 0 && ndevices >= 0) { - auto local_rank_str = std::getenv("OMPI_COMM_WORLD_LOCAL_RANK"); // OpenMPI + if (use_gpu < 0) { + auto const* local_rank_str = + std::getenv("OMPI_COMM_WORLD_LOCAL_RANK"); // OpenMPI if (!local_rank_str) local_rank_str = std::getenv("MV2_COMM_WORLD_LOCAL_RANK"); // MVAPICH2 if (!local_rank_str) local_rank_str = std::getenv("SLURM_LOCALID"); // SLURM - if (local_rank_str) { - auto local_rank = std::atoi(local_rank_str); - use_gpu = local_rank % ndevices; - } else { - // user only gave us ndevices, but the MPI environment variable wasn't - // set. start with GPU 0 at this point - use_gpu = 0; + + auto const* ctest_kokkos_device_type = + std::getenv("CTEST_KOKKOS_DEVICE_TYPE"); // CTest + auto const* ctest_resource_group_count_str = + std::getenv("CTEST_RESOURCE_GROUP_COUNT"); // CTest + if (ctest_kokkos_device_type && ctest_resource_group_count_str && + local_rank_str) { + // Use the device assigned by CTest + use_gpu = get_ctest_gpu(local_rank_str); + } else if (ndevices >= 0) { + // Use the device assigned by the rank + if (local_rank_str) { + auto local_rank = std::atoi(local_rank_str); + use_gpu = local_rank % ndevices; + } else { + // user only gave use ndevices, but the MPI environment variable wasn't + // set. start with GPU 0 at this point + use_gpu = 0; + } } // shift assignments over by one so no one is assigned to "skip_device" if (use_gpu >= skip_device) ++use_gpu; @@ -199,17 +313,9 @@ void initialize_internal(const InitArguments& args) { #endif #if defined(KOKKOS_ENABLE_OPENMPTARGET) - if (Impl::is_same::value) { - if (num_threads > 0) { - if (use_numa > 0) { - Kokkos::Experimental::OpenMPTarget::initialize(num_threads, use_numa); - } else { - Kokkos::Experimental::OpenMPTarget::initialize(num_threads); - } - } else { - Kokkos::Experimental::OpenMPTarget::initialize(); - } + if (std::is_same::value) { + Kokkos::Experimental::OpenMPTarget().impl_initialize(); // std::cout << "Kokkos::initialize() fyi: OpenMP enabled and initialized" // << std::endl ; } else { @@ -254,6 +360,23 @@ void initialize_internal(const InitArguments& args) { } #endif +#if defined(KOKKOS_ENABLE_HIP) + if (std::is_same::value || + 0 < use_gpu) { + if (use_gpu > -1) { + Kokkos::Experimental::HIP::impl_initialize( + Kokkos::Experimental::HIP::SelectDevice(use_gpu)); + } else { + Kokkos::Experimental::HIP::impl_initialize(); + } + std::cout << "Kokkos::initialize() fyi: HIP enabled and initialized" + << std::endl; + } +#endif +} + +void initialize_profiling(const InitArguments&) { #if defined(KOKKOS_ENABLE_PROFILING) Kokkos::Profiling::initialize(); #else @@ -263,9 +386,23 @@ void initialize_internal(const InitArguments& args) { << std::endl; } #endif +} + +void pre_initialize_internal(const InitArguments& args) { + if (args.disable_warnings) g_show_warnings = false; +} + +void post_initialize_internal(const InitArguments& args) { + initialize_profiling(args); g_is_initialized = true; } +void initialize_internal(const InitArguments& args) { + pre_initialize_internal(args); + initialize_backends(args); + post_initialize_internal(args); +} + void finalize_internal(const bool all_spaces = false) { typename decltype(finalize_hooks)::size_type numSuccessfulCalls = 0; while (!finalize_hooks.empty()) { @@ -320,12 +457,20 @@ void finalize_internal(const bool all_spaces = false) { } #endif +#if defined(KOKKOS_ENABLE_HIP) + if (std::is_same::value || + all_spaces) { + if (Kokkos::Experimental::HIP::impl_is_initialized()) + Kokkos::Experimental::HIP::impl_finalize(); + } +#endif #if defined(KOKKOS_ENABLE_OPENMPTARGET) if (std::is_same::value || all_spaces) { - if (Kokkos::Experimental::OpenMPTarget::is_initialized()) - Kokkos::Experimental::OpenMPTarget::finalize(); + if (Kokkos::Experimental::OpenMPTarget().impl_is_initialized()) + Kokkos::Experimental::OpenMPTarget().impl_finalize(); } #endif @@ -380,23 +525,19 @@ void finalize_internal(const bool all_spaces = false) { void fence_internal() { #if defined(KOKKOS_ENABLE_CUDA) - if (std::is_same::value) { - Kokkos::Cuda::impl_static_fence(); - } + Kokkos::Cuda::impl_static_fence(); #endif #if defined(KOKKOS_ENABLE_ROCM) - if (std::is_same::value) { - Kokkos::Experimental::ROCm().fence(); - } + Kokkos::Experimental::ROCm().fence(); +#endif + +#if defined(KOKKOS_ENABLE_HIP) + Kokkos::Experimental::HIP().fence(); #endif #if defined(KOKKOS_ENABLE_OPENMP) - if (std::is_same::value || - std::is_same::value) { - Kokkos::OpenMP::impl_static_fence(); - } + Kokkos::OpenMP::impl_static_fence(); #endif #if defined(KOKKOS_ENABLE_HPX) @@ -404,18 +545,11 @@ void fence_internal() { #endif #if defined(KOKKOS_ENABLE_THREADS) - if (std::is_same::value || - std::is_same::value) { - Kokkos::Threads::impl_static_fence(); - } + Kokkos::Threads::impl_static_fence(); #endif #if defined(KOKKOS_ENABLE_SERIAL) - if (std::is_same::value || - std::is_same::value) { - Kokkos::Serial::impl_static_fence(); - } + Kokkos::Serial::impl_static_fence(); #endif } @@ -454,22 +588,31 @@ bool check_int_arg(char const* arg, char const* expected, int* value) { return true; } -} // namespace +void warn_deprecated_command_line_argument(std::string deprecated, + std::string valid) { + std::cerr + << "Warning: command line argument '" << deprecated + << "' is deprecated. Use '" << valid + << "' instead. Raised by Kokkos::initialize(int narg, char* argc[])." + << std::endl; +} -} // namespace Impl -} // namespace Kokkos +unsigned get_process_id() { +#ifdef _WIN32 + return unsigned(GetCurrentProcessId()); +#else + return unsigned(getpid()); +#endif +} -//---------------------------------------------------------------------------- - -namespace Kokkos { - -void initialize(int& narg, char* arg[]) { - int num_threads = -1; - int numa = -1; - int device = -1; - int ndevices = -1; - int skip_device = 9999; - bool disable_warnings = false; +void parse_command_line_arguments(int& narg, char* arg[], + InitArguments& arguments) { + auto& num_threads = arguments.num_threads; + auto& numa = arguments.num_numa; + auto& device = arguments.device_id; + auto& ndevices = arguments.ndevices; + auto& skip_device = arguments.skip_device; + auto& disable_warnings = arguments.disable_warnings; int kokkos_threads_found = 0; int kokkos_numa_found = 0; @@ -479,76 +622,97 @@ void initialize(int& narg, char* arg[]) { int iarg = 0; while (iarg < narg) { - if (Impl::check_int_arg(arg[iarg], "--kokkos-threads", &num_threads)) { + if (check_int_arg(arg[iarg], "--kokkos-threads", &num_threads)) { for (int k = iarg; k < narg - 1; k++) { arg[k] = arg[k + 1]; } kokkos_threads_found = 1; narg--; } else if (!kokkos_threads_found && - Impl::check_int_arg(arg[iarg], "--threads", &num_threads)) { + check_int_arg(arg[iarg], "--threads", &num_threads)) { iarg++; - } else if (Impl::check_int_arg(arg[iarg], "--kokkos-numa", &numa)) { + } else if (check_int_arg(arg[iarg], "--kokkos-numa", &numa)) { for (int k = iarg; k < narg - 1; k++) { arg[k] = arg[k + 1]; } kokkos_numa_found = 1; narg--; } else if (!kokkos_numa_found && - Impl::check_int_arg(arg[iarg], "--numa", &numa)) { + check_int_arg(arg[iarg], "--numa", &numa)) { iarg++; - } else if (Impl::check_int_arg(arg[iarg], "--kokkos-device", &device)) { + } else if (check_int_arg(arg[iarg], "--kokkos-device-id", &device) || + check_int_arg(arg[iarg], "--kokkos-device", &device)) { + if (check_arg(arg[iarg], "--kokkos-device")) { + warn_deprecated_command_line_argument("--kokkos-device", + "--kokkos-device-id"); + } for (int k = iarg; k < narg - 1; k++) { arg[k] = arg[k + 1]; } kokkos_device_found = 1; narg--; } else if (!kokkos_device_found && - Impl::check_int_arg(arg[iarg], "--device", &device)) { + (check_int_arg(arg[iarg], "--device-id", &device) || + check_int_arg(arg[iarg], "--device", &device))) { + if (check_arg(arg[iarg], "--device")) { + warn_deprecated_command_line_argument("--device", "--device-id"); + } iarg++; - } else if (Impl::check_arg(arg[iarg], "--kokkos-ndevices") || - Impl::check_arg(arg[iarg], "--ndevices")) { + } else if (check_arg(arg[iarg], "--kokkos-num-devices") || + check_arg(arg[iarg], "--num-devices") || + check_arg(arg[iarg], "--kokkos-ndevices") || + check_arg(arg[iarg], "--ndevices")) { + if (check_arg(arg[iarg], "--ndevices")) { + warn_deprecated_command_line_argument("--ndevices", "--num-devices"); + } + if (check_arg(arg[iarg], "--kokkos-ndevices")) { + warn_deprecated_command_line_argument("--kokkos-ndevices", + "--kokkos-num-devices"); + } // Find the number of device (expecting --device=XX) - if (!((strncmp(arg[iarg], "--kokkos-ndevices=", 18) == 0) || + if (!((strncmp(arg[iarg], "--kokkos-num-devices=", 21) == 0) || + (strncmp(arg[iarg], "--num-ndevices=", 14) == 0) || + (strncmp(arg[iarg], "--kokkos-ndevices=", 18) == 0) || (strncmp(arg[iarg], "--ndevices=", 11) == 0))) - Impl::throw_runtime_exception( + throw_runtime_exception( "Error: expecting an '=INT[,INT]' after command line argument " - "'--ndevices/--kokkos-ndevices'. Raised by Kokkos::initialize(int " - "narg, char* argc[])."); + "'--num-devices/--kokkos-num-devices'. Raised by " + "Kokkos::initialize(int narg, char* argc[])."); char* num1 = strchr(arg[iarg], '=') + 1; char* num2 = strpbrk(num1, ","); - int num1_len = num2 == NULL ? strlen(num1) : num2 - num1; + int num1_len = num2 == nullptr ? strlen(num1) : num2 - num1; char* num1_only = new char[num1_len + 1]; strncpy(num1_only, num1, num1_len); num1_only[num1_len] = 0; - if (!Impl::is_unsigned_int(num1_only) || (strlen(num1_only) == 0)) { - Impl::throw_runtime_exception( + if (!is_unsigned_int(num1_only) || (strlen(num1_only) == 0)) { + throw_runtime_exception( "Error: expecting an integer number after command line argument " - "'--kokkos-ndevices'. Raised by Kokkos::initialize(int narg, char* " - "argc[])."); + "'--kokkos-numdevices'. Raised by " + "Kokkos::initialize(int narg, char* argc[])."); } - if ((strncmp(arg[iarg], "--kokkos-ndevices", 17) == 0) || - !kokkos_ndevices_found) + if (check_arg(arg[iarg], "--kokkos-num-devices") || + check_arg(arg[iarg], "--kokkos-ndevices") || !kokkos_ndevices_found) ndevices = atoi(num1_only); delete[] num1_only; - if (num2 != NULL) { - if ((!Impl::is_unsigned_int(num2 + 1)) || (strlen(num2) == 1)) - Impl::throw_runtime_exception( + if (num2 != nullptr) { + if ((!is_unsigned_int(num2 + 1)) || (strlen(num2) == 1)) + throw_runtime_exception( "Error: expecting an integer number after command line argument " - "'--kokkos-ndevices=XX,'. Raised by Kokkos::initialize(int narg, " - "char* argc[])."); + "'--kokkos-num-devices=XX,'. Raised by " + "Kokkos::initialize(int narg, char* argc[])."); - if ((strncmp(arg[iarg], "--kokkos-ndevices", 17) == 0) || - !kokkos_ndevices_found) + if (check_arg(arg[iarg], "--kokkos-num-devices") || + check_arg(arg[iarg], "--kokkos-ndevices") || !kokkos_ndevices_found) skip_device = atoi(num2 + 1); } - // Remove the --kokkos-ndevices argument from the list but leave - // --ndevices - if (strncmp(arg[iarg], "--kokkos-ndevices", 17) == 0) { + // Remove the --kokkos-num-devices argument from the list but leave + // --num-devices + if (check_arg(arg[iarg], "--kokkos-num-devices") || + check_arg(arg[iarg], "--kokkos-ndevices")) { for (int k = iarg; k < narg - 1; k++) { arg[k] = arg[k + 1]; } @@ -557,88 +721,45 @@ void initialize(int& narg, char* arg[]) { } else { iarg++; } - } else if (strcmp(arg[iarg], "--kokkos-disable-warnings") == 0) { + } else if (check_arg(arg[iarg], "--kokkos-disable-warnings")) { disable_warnings = true; for (int k = iarg; k < narg - 1; k++) { arg[k] = arg[k + 1]; } narg--; - } else if ((strcmp(arg[iarg], "--kokkos-help") == 0) || - (strcmp(arg[iarg], "--help") == 0)) { - std::cout << std::endl; - std::cout << "-----------------------------------------------------------" - "---------------------" - << std::endl; - std::cout << "-------------Kokkos command line " - "arguments--------------------------------------" - << std::endl; - std::cout << "-----------------------------------------------------------" - "---------------------" - << std::endl; - std::cout << "The following arguments exist also without prefix 'kokkos' " - "(e.g. --help)." - << std::endl; - std::cout << "The prefixed arguments will be removed from the list by " - "Kokkos::initialize()," - << std::endl; - std::cout << "the non-prefixed ones are not removed. Prefixed versions " - "take precedence over " - << std::endl; - std::cout << "non prefixed ones, and the last occurrence of an argument " - "overwrites prior" - << std::endl; - std::cout << "settings." << std::endl; - std::cout << std::endl; - std::cout << "--kokkos-help : print this message" - << std::endl; - std::cout - << "--kokkos-disable-warnings : disable kokkos warning messages" - << std::endl; - std::cout - << "--kokkos-threads=INT : specify total number of threads or" - << std::endl; - std::cout << " number of threads per NUMA " - "region if " - << std::endl; - std::cout << " used in conjunction with " - "'--numa' option. " - << std::endl; - std::cout << "--kokkos-numa=INT : specify number of NUMA " - "regions used by process." - << std::endl; - std::cout << "--kokkos-device=INT : specify device id to be used " - "by Kokkos. " - << std::endl; - std::cout << "--kokkos-ndevices=INT[,INT] : used when running MPI jobs. " - "Specify number of" - << std::endl; - std::cout << " devices per node to be used. " - "Process to device" - << std::endl; - std::cout << " mapping happens by obtaining " - "the local MPI rank" - << std::endl; - std::cout << " and assigning devices " - "round-robin. The optional" - << std::endl; - std::cout << " second argument allows for " - "an existing device" - << std::endl; - std::cout << " to be ignored. This is most " - "useful on workstations" - << std::endl; - std::cout << " with multiple GPUs of which " - "one is used to drive" - << std::endl; - std::cout << " screen output." << std::endl; - std::cout << std::endl; - std::cout << "-----------------------------------------------------------" - "---------------------" - << std::endl; - std::cout << std::endl; + } else if (check_arg(arg[iarg], "--kokkos-help") || + check_arg(arg[iarg], "--help")) { + auto const help_message = R"( + -------------------------------------------------------------------------------- + -------------Kokkos command line arguments-------------------------------------- + -------------------------------------------------------------------------------- + The following arguments exist also without prefix 'kokkos' (e.g. --help). + The prefixed arguments will be removed from the list by Kokkos::initialize(), + the non-prefixed ones are not removed. Prefixed versions take precedence over + non prefixed ones, and the last occurrence of an argument overwrites prior + settings. - // Remove the --kokkos-help argument from the list but leave --ndevices - if (strcmp(arg[iarg], "--kokkos-help") == 0) { + --kokkos-help : print this message + --kokkos-disable-warnings : disable kokkos warning messages + --kokkos-threads=INT : specify total number of threads or + number of threads per NUMA region if + used in conjunction with '--numa' option. + --kokkos-numa=INT : specify number of NUMA regions used by process. + --kokkos-device-id=INT : specify device id to be used by Kokkos. + --kokkos-num-devices=INT[,INT] : used when running MPI jobs. Specify number of + devices per node to be used. Process to device + mapping happens by obtaining the local MPI rank + and assigning devices round-robin. The optional + second argument allows for an existing device + to be ignored. This is most useful on workstations + with multiple GPUs of which one is used to drive + screen output. + -------------------------------------------------------------------------------- +)"; + std::cout << help_message << std::endl; + + // Remove the --kokkos-help argument from the list but leave --help + if (check_arg(arg[iarg], "--kokkos-help")) { for (int k = iarg; k < narg - 1; k++) { arg[k] = arg[k + 1]; } @@ -649,8 +770,16 @@ void initialize(int& narg, char* arg[]) { } else iarg++; } +} + +void parse_environment_variables(InitArguments& arguments) { + auto& num_threads = arguments.num_threads; + auto& numa = arguments.num_numa; + auto& device = arguments.device_id; + auto& ndevices = arguments.ndevices; + auto& skip_device = arguments.skip_device; + auto& disable_warnings = arguments.disable_warnings; - // Read environment variables char* endptr; auto env_num_threads_str = std::getenv("KOKKOS_NUM_THREADS"); if (env_num_threads_str != nullptr) { @@ -783,7 +912,7 @@ void initialize(int& narg, char* arg[]) { "Error: cannot KOKKOS_SKIP_DEVICE the only KOKKOS_RAND_DEVICE. " "Raised by Kokkos::initialize(int narg, char* argc[])."); - std::srand(getpid()); + std::srand(get_process_id()); while (device < 0) { int test_device = std::rand() % rdevices; if (test_device != skip_device) device = test_device; @@ -804,21 +933,40 @@ void initialize(int& narg, char* arg[]) { "KOKKOS_DISABLE_WARNINGS if both are set. Raised by " "Kokkos::initialize(int narg, char* argc[])."); } +} +} // namespace + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- + +namespace Kokkos { + +void initialize(int& narg, char* arg[]) { InitArguments arguments; - arguments.num_threads = num_threads; - arguments.num_numa = numa; - arguments.device_id = device; - arguments.ndevices = ndevices; - arguments.skip_device = skip_device; - arguments.disable_warnings = disable_warnings; + Impl::parse_command_line_arguments(narg, arg, arguments); + Impl::parse_environment_variables(arguments); Impl::initialize_internal(arguments); } -void initialize(const InitArguments& arguments) { +void initialize(InitArguments arguments) { + Impl::parse_environment_variables(arguments); Impl::initialize_internal(arguments); } +namespace Impl { + +void pre_initialize(const InitArguments& args) { + pre_initialize_internal(args); +} + +void post_initialize(const InitArguments& args) { + post_initialize_internal(args); +} +} // namespace Impl + void push_finalize_hook(std::function f) { finalize_hooks.push(f); } void finalize() { Impl::finalize_internal(); } @@ -833,6 +981,10 @@ void fence() { Impl::fence_internal(); } void print_configuration(std::ostream& out, const bool detail) { std::ostringstream msg; + msg << "Kokkos Version:" << std::endl; + msg << " " << KOKKOS_VERSION / 10000 << "." << (KOKKOS_VERSION % 10000) / 100 + << "." << KOKKOS_VERSION % 100 << std::endl; + msg << "Compiler:" << std::endl; #ifdef KOKKOS_COMPILER_APPLECC msg << " KOKKOS_COMPILER_APPLECC: " << KOKKOS_COMPILER_APPLECC << std::endl; @@ -882,6 +1034,12 @@ void print_configuration(std::ostream& out, const bool detail) { msg << "yes" << std::endl; #else msg << "no" << std::endl; +#endif + msg << " KOKKOS_ENABLE_HIP: "; +#ifdef KOKKOS_ENABLE_HIP + msg << "yes" << std::endl; +#else + msg << "no" << std::endl; #endif msg << " KOKKOS_ENABLE_OPENMP: "; #ifdef KOKKOS_ENABLE_OPENMP @@ -900,12 +1058,6 @@ void print_configuration(std::ostream& out, const bool detail) { msg << "yes" << std::endl; #else msg << "no" << std::endl; -#endif - msg << " KOKKOS_ENABLE_QTHREADS: "; -#ifdef KOKKOS_ENABLE_QTHREADS - msg << "yes" << std::endl; -#else - msg << "no" << std::endl; #endif msg << " KOKKOS_ENABLE_SERIAL: "; #ifdef KOKKOS_ENABLE_SERIAL @@ -920,6 +1072,12 @@ void print_configuration(std::ostream& out, const bool detail) { msg << "yes" << std::endl; #else msg << "no" << std::endl; +#endif + msg << " KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HIP: "; +#ifdef KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HIP + msg << "yes" << std::endl; +#else + msg << "no" << std::endl; #endif msg << " KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP: "; #ifdef KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP @@ -932,12 +1090,6 @@ void print_configuration(std::ostream& out, const bool detail) { msg << "yes" << std::endl; #else msg << "no" << std::endl; -#endif - msg << " KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS: "; -#ifdef KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS - msg << "yes" << std::endl; -#else - msg << "no" << std::endl; #endif msg << " KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_SERIAL: "; #ifdef KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_SERIAL @@ -1131,12 +1283,25 @@ void print_configuration(std::ostream& out, const bool detail) { msg << "no" << std::endl; #endif +#endif + +#ifdef KOKKOS_ENABLE_HIP + msg << "HIP Options:" << std::endl; + msg << " KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE: "; +#ifdef KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE + msg << "yes" << std::endl; +#else + msg << "no" << std::endl; +#endif #endif msg << "\nRuntime Configuration:" << std::endl; #ifdef KOKKOS_ENABLE_CUDA Cuda::print_configuration(msg, detail); #endif +#ifdef KOKKOS_ENABLE_HIP + Experimental::HIP::print_configuration(msg, detail); +#endif #ifdef KOKKOS_ENABLE_OPENMP OpenMP::print_configuration(msg, detail); #endif @@ -1146,9 +1311,6 @@ void print_configuration(std::ostream& out, const bool detail) { #if defined(KOKKOS_ENABLE_THREADS) Threads::print_configuration(msg, detail); #endif -#ifdef KOKKOS_ENABLE_QTHREADS - Qthreads::print_configuration(msg, detail); -#endif #ifdef KOKKOS_ENABLE_SERIAL Serial::print_configuration(msg, detail); #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_EBO.hpp b/lib/kokkos/core/src/impl/Kokkos_EBO.hpp index 5adf4bd5f1..39e855a55e 100644 --- a/lib/kokkos/core/src/impl/Kokkos_EBO.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_EBO.hpp @@ -117,21 +117,21 @@ struct EBOBaseImpl { : EBOBaseImpl(_constexpr_14_workaround_no_device_tag{}, T(std::forward(args)...)) {} - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION constexpr EBOBaseImpl(EBOBaseImpl const&) = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION constexpr EBOBaseImpl(EBOBaseImpl&&) = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION KOKKOS_CONSTEXPR_14 EBOBaseImpl& operator=(EBOBaseImpl const&) = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION KOKKOS_CONSTEXPR_14 EBOBaseImpl& operator=(EBOBaseImpl&&) = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~EBOBaseImpl() = default; KOKKOS_INLINE_FUNCTION @@ -184,21 +184,21 @@ struct EBOBaseImpl { // TODO @tasking @minor DSH noexcept in the right places? - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION constexpr EBOBaseImpl(EBOBaseImpl const&) = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION constexpr EBOBaseImpl(EBOBaseImpl&&) noexcept = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION KOKKOS_CONSTEXPR_14 EBOBaseImpl& operator=(EBOBaseImpl const&) = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION KOKKOS_CONSTEXPR_14 EBOBaseImpl& operator=(EBOBaseImpl&&) = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~EBOBaseImpl() = default; KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_Error.cpp b/lib/kokkos/core/src/impl/Kokkos_Error.cpp index 817c9a0581..a42b916f80 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Error.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Error.cpp @@ -129,6 +129,8 @@ void Experimental::RawMemoryAllocationFailure::print_error_message( o << "cudaMallocManaged()."; break; case AllocationMechanism::CudaHostAlloc: o << "cudaHostAlloc()."; break; + case AllocationMechanism::HIPMalloc: o << "hipMalloc()."; break; + case AllocationMechanism::HIPHostMalloc: o << "hipHostMalloc()."; break; } append_additional_error_information(o); o << ")" << std::endl; diff --git a/lib/kokkos/core/src/impl/Kokkos_Error.hpp b/lib/kokkos/core/src/impl/Kokkos_Error.hpp index 44f7771042..41be6737e7 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Error.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Error.hpp @@ -51,6 +51,9 @@ #ifdef KOKKOS_ENABLE_CUDA #include #endif +#ifdef KOKKOS_ENABLE_HIP +#include +#endif #ifndef KOKKOS_ABORT_MESSAGE_BUFFER_SIZE #define KOKKOS_ABORT_MESSAGE_BUFFER_SIZE 2048 @@ -87,7 +90,9 @@ class RawMemoryAllocationFailure : public std::bad_alloc { IntelMMAlloc, CudaMalloc, CudaMallocManaged, - CudaHostAlloc + CudaHostAlloc, + HIPMalloc, + HIPHostMalloc }; private: @@ -124,7 +129,7 @@ class RawMemoryAllocationFailure : public std::bad_alloc { const char *what() const noexcept override { if (m_failure_mode == FailureMode::OutOfMemoryError) { return "Memory allocation error: out of memory"; - } else if (m_failure_mode == FailureMode::OutOfMemoryError) { + } else if (m_failure_mode == FailureMode::AllocationNotAligned) { return "Memory allocation error: allocation result was under-aligned"; } @@ -164,11 +169,11 @@ KOKKOS_INLINE_FUNCTION void abort(const char *const message) { #if defined(KOKKOS_ENABLE_CUDA) && defined(__CUDA_ARCH__) Kokkos::Impl::cuda_abort(message); -#else -#if !defined(KOKKOS_ENABLE_OPENMPTARGET) && !defined(__HCC_ACCELERATOR__) +#elif defined(KOKKOS_ENABLE_HIP) && defined(__HIP_DEVICE_COMPILE__) + Kokkos::Impl::hip_abort(message); +#elif !defined(KOKKOS_ENABLE_OPENMPTARGET) && !defined(__HCC_ACCELERATOR__) Kokkos::Impl::host_abort(message); #endif -#endif } } // namespace Kokkos diff --git a/lib/kokkos/core/src/impl/Kokkos_FixedBufferMemoryPool.hpp b/lib/kokkos/core/src/impl/Kokkos_FixedBufferMemoryPool.hpp index a304e8eff2..2651229a70 100644 --- a/lib/kokkos/core/src/impl/Kokkos_FixedBufferMemoryPool.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_FixedBufferMemoryPool.hpp @@ -126,18 +126,19 @@ class FixedBlockSizeMemoryPool actual_size) { /* forwarding ctor, must be empty */ } - KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool() = default; - KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool(FixedBlockSizeMemoryPool&&) = - default; - KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool( - FixedBlockSizeMemoryPool const&) = default; - KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool& operator=( + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool() = default; + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool( FixedBlockSizeMemoryPool&&) = default; - KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool& operator=( + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool( + FixedBlockSizeMemoryPool const&) = default; + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool& operator=( + FixedBlockSizeMemoryPool&&) = default; + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool& operator=( FixedBlockSizeMemoryPool const&) = default; KOKKOS_INLINE_FUNCTION void* allocate(size_type alloc_size) const noexcept { + (void)alloc_size; KOKKOS_EXPECTS(alloc_size <= Size); auto free_idx_counter = Kokkos::atomic_fetch_add( (volatile size_type*)&m_first_free_idx, size_type(1)); @@ -161,7 +162,7 @@ class FixedBlockSizeMemoryPool } KOKKOS_INLINE_FUNCTION - void deallocate(void* ptr, size_type alloc_size) const noexcept { + void deallocate(void* ptr, size_type /*alloc_size*/) const noexcept { // figure out which block we are auto offset = intptr_t(ptr) - intptr_t(m_first_block); @@ -250,11 +251,11 @@ public: ) : FixedBlockSizeMemoryPool(mem_space, mempool_capacity / actual_size) { /* forwarding ctor, must be empty */ } - KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool() = default; - KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool(FixedBlockSizeMemoryPool&&) = default; - KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool(FixedBlockSizeMemoryPool const&) = default; - KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool& operator=(FixedBlockSizeMemoryPool&&) = default; - KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool& operator=(FixedBlockSizeMemoryPool const&) = default; + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool() = default; + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool(FixedBlockSizeMemoryPool&&) = default; + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool(FixedBlockSizeMemoryPool const&) = default; + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool& operator=(FixedBlockSizeMemoryPool&&) = default; + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool& operator=(FixedBlockSizeMemoryPool const&) = default; KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_FunctorAdapter.hpp b/lib/kokkos/core/src/impl/Kokkos_FunctorAdapter.hpp index e981e90366..b777dac021 100644 --- a/lib/kokkos/core/src/impl/Kokkos_FunctorAdapter.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_FunctorAdapter.hpp @@ -64,7 +64,7 @@ struct ReduceFunctorHasInit { template struct ReduceFunctorHasInit< FunctorType, - typename Impl::enable_if<0 < sizeof(&FunctorType::init)>::type> { + typename std::enable_if<0 < sizeof(&FunctorType::init)>::type> { enum { value = true }; }; @@ -76,7 +76,7 @@ struct ReduceFunctorHasJoin { template struct ReduceFunctorHasJoin< FunctorType, - typename Impl::enable_if<0 < sizeof(&FunctorType::join)>::type> { + typename std::enable_if<0 < sizeof(&FunctorType::join)>::type> { enum { value = true }; }; @@ -88,7 +88,7 @@ struct ReduceFunctorHasFinal { template struct ReduceFunctorHasFinal< FunctorType, - typename Impl::enable_if<0 < sizeof(&FunctorType::final)>::type> { + typename std::enable_if<0 < sizeof(&FunctorType::final)>::type> { enum { value = true }; }; @@ -100,18 +100,18 @@ struct ReduceFunctorHasShmemSize { template struct ReduceFunctorHasShmemSize< FunctorType, - typename Impl::enable_if<0 < sizeof(&FunctorType::team_shmem_size)>::type> { + typename std::enable_if<0 < sizeof(&FunctorType::team_shmem_size)>::type> { enum { value = true }; }; template -struct FunctorDeclaresValueType : public Impl::false_type {}; +struct FunctorDeclaresValueType : public std::false_type {}; template struct FunctorDeclaresValueType< FunctorType, ArgTag, typename Impl::enable_if_type::type> - : public Impl::true_type {}; + : public std::true_type {}; template ::value) || @@ -174,18 +174,19 @@ struct FunctorValueTraits { template struct FunctorValueTraits { - typedef typename Impl::remove_extent::type + typedef typename std::remove_extent::type value_type; typedef FunctorType functor_type; - static_assert(0 == (sizeof(value_type) % sizeof(int)), + static_assert((sizeof(value_type) < sizeof(int)) || + 0 == (sizeof(value_type) % sizeof(int)), "Reduction functor's declared value_type requires: 0 == " "sizeof(value_type) % sizeof(int)"); /* this cast to bool is needed for correctness by NVCC */ enum : bool { IsArray = static_cast( - Impl::is_array::value) + std::is_array::value) }; // If not an array then what is the sizeof(value_type) @@ -202,8 +203,8 @@ struct FunctorValueTraits KOKKOS_FORCEINLINE_FUNCTION static - typename Impl::enable_if::value && !IsArray, - unsigned>::type + typename std::enable_if::value && !IsArray, + unsigned>::type value_count(const F&) { return 1; } @@ -213,8 +214,8 @@ struct FunctorValueTraits KOKKOS_FORCEINLINE_FUNCTION static - typename Impl::enable_if::value && IsArray, - unsigned>::type + typename std::enable_if::value && IsArray, + unsigned>::type value_count(const F& f) { return f.value_count; } @@ -1412,8 +1413,10 @@ struct FunctorValueInit< // First substitution failure when FunctorType::init does not exist. // Second substitution failure when FunctorType::init is not compatible. , - decltype(FunctorValueInitFunction::enable_if( - &FunctorType::init))> { + typename std::enable_if< + !std::is_same::value, + decltype(FunctorValueInitFunction::enable_if( + &FunctorType::init))>::type> { KOKKOS_FORCEINLINE_FUNCTION static T& init(const FunctorType& f, void* p) { f.init(ArgTag(), *((T*)p)); return *((T*)p); @@ -1428,8 +1431,10 @@ struct FunctorValueInit< // First substitution failure when FunctorType::init does not exist. // Second substitution failure when FunctorType::init is not compatible , - decltype(FunctorValueInitFunction::enable_if( - &FunctorType::init))> { + typename std::enable_if< + !std::is_same::value, + decltype(FunctorValueInitFunction::enable_if( + &FunctorType::init))>::type> { KOKKOS_FORCEINLINE_FUNCTION static T* init(const FunctorType& f, void* p) { f.init(ArgTag(), (T*)p); return (T*)p; @@ -1525,7 +1530,7 @@ struct FunctorValueJoin { KOKKOS_FORCEINLINE_FUNCTION FunctorValueJoin(const FunctorType&) {} - KOKKOS_FORCEINLINE_FUNCTION static void join(const FunctorType& f, + KOKKOS_FORCEINLINE_FUNCTION static void join(const FunctorType& /*f*/, volatile void* const lhs, const volatile void* const rhs) { *((volatile T*)lhs) += *((const volatile T*)rhs); @@ -1760,8 +1765,8 @@ template struct JoinAdd { typedef ValueType value_type; - KOKKOS_INLINE_FUNCTION - JoinAdd() {} + KOKKOS_DEFAULTED_FUNCTION + JoinAdd() = default; KOKKOS_INLINE_FUNCTION void join(volatile value_type& dst, const volatile value_type& src) const { diff --git a/lib/kokkos/core/src/impl/Kokkos_FunctorAnalysis.hpp b/lib/kokkos/core/src/impl/Kokkos_FunctorAnalysis.hpp index a8f3b5042a..827a9f346d 100644 --- a/lib/kokkos/core/src/impl/Kokkos_FunctorAnalysis.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_FunctorAnalysis.hpp @@ -797,7 +797,7 @@ struct FunctorAnalysis { using rebind = Reducer; KOKKOS_INLINE_FUNCTION explicit constexpr Reducer( - Functor const* arg_functor = 0, ValueType* arg_value = 0) noexcept + Functor const* arg_functor = 0, ValueType* arg_value = nullptr) noexcept : m_functor(arg_functor), m_result(arg_value) {} }; }; diff --git a/lib/kokkos/core/src/impl/Kokkos_HBWSpace.cpp b/lib/kokkos/core/src/impl/Kokkos_HBWSpace.cpp index 8a83aef4c9..9b5bee2279 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HBWSpace.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_HBWSpace.cpp @@ -136,8 +136,8 @@ void *HBWSpace::allocate(const size_t arg_alloc_size) const { case STD_MALLOC: msg << "STD_MALLOC"; break; } msg << " ]( " << arg_alloc_size << " ) FAILED"; - if (ptr == NULL) { - msg << " NULL"; + if (ptr == nullptr) { + msg << " nullptr"; } else { msg << " NOT ALIGNED " << ptr; } @@ -181,7 +181,12 @@ void SharedAllocationRecord::deallocate( } SharedAllocationRecord::~SharedAllocationRecord() { + void>::~SharedAllocationRecord() +#if defined( \ + KOKKOS_IMPL_INTEL_WORKAROUND_NOEXCEPT_SPECIFICATION_VIRTUAL_FUNCTION) + noexcept +#endif +{ #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::deallocateData( diff --git a/lib/kokkos/core/src/impl/Kokkos_HostBarrier.cpp b/lib/kokkos/core/src/impl/Kokkos_HostBarrier.cpp index 0b96add432..55d70985dc 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostBarrier.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostBarrier.cpp @@ -92,7 +92,7 @@ void HostBarrier::impl_backoff_wait_until_equal( #endif } #else // _WIN32 - while (!try_wait()) { + while (!test_equal(ptr, v)) { #if defined(KOKKOS_ENABLE_ASM) for (int j = 0; j < num_nops; ++j) { __asm__ __volatile__("nop\n"); diff --git a/lib/kokkos/core/src/impl/Kokkos_HostBarrier.hpp b/lib/kokkos/core/src/impl/Kokkos_HostBarrier.hpp index ce7a1408a3..4b9235ab70 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostBarrier.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostBarrier.hpp @@ -235,6 +235,7 @@ class HostBarrier { impl_backoff_wait_until_equal(ptr, v, active_wait); } #else + (void)active_wait; while (!test_equal(ptr, v)) { } #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp b/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp index 94490b8300..59d14e5392 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp @@ -221,18 +221,19 @@ void *HostSpace::allocate(const size_t arg_alloc_size) const { // read write access to private memory - ptr = mmap(NULL /* address hint, if NULL OS kernel chooses address */ - , - arg_alloc_size /* size in bytes */ - , - prot /* memory protection */ - , - flags /* visibility of updates */ - , - -1 /* file descriptor */ - , - 0 /* offset */ - ); + ptr = + mmap(nullptr /* address hint, if nullptr OS kernel chooses address */ + , + arg_alloc_size /* size in bytes */ + , + prot /* memory protection */ + , + flags /* visibility of updates */ + , + -1 /* file descriptor */ + , + 0 /* offset */ + ); /* Associated reallocation: ptr = mremap( old_ptr , old_size , new_size , MREMAP_MAYMOVE ); @@ -325,7 +326,12 @@ void SharedAllocationRecord::deallocate( delete static_cast(arg_rec); } -SharedAllocationRecord::~SharedAllocationRecord() { +SharedAllocationRecord::~SharedAllocationRecord() +#if defined( \ + KOKKOS_IMPL_INTEL_WORKAROUND_NOEXCEPT_SPECIFICATION_VIRTUAL_FUNCTION) + noexcept +#endif +{ #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::deallocateData( @@ -397,7 +403,7 @@ SharedAllocationRecord::SharedAllocationRecord( void *SharedAllocationRecord::allocate_tracked( const Kokkos::HostSpace &arg_space, const std::string &arg_alloc_label, const size_t arg_alloc_size) { - if (!arg_alloc_size) return (void *)nullptr; + if (!arg_alloc_size) return nullptr; SharedAllocationRecord *const r = allocate(arg_space, arg_alloc_label, arg_alloc_size); @@ -409,7 +415,7 @@ void *SharedAllocationRecord::allocate_tracked( void SharedAllocationRecord::deallocate_tracked( void *const arg_alloc_ptr) { - if (arg_alloc_ptr != 0) { + if (arg_alloc_ptr != nullptr) { SharedAllocationRecord *const r = get_record(arg_alloc_ptr); RecordBase::decrement(r); @@ -437,9 +443,9 @@ SharedAllocationRecord::get_record(void *alloc_ptr) { typedef SharedAllocationRecord RecordHost; SharedAllocationHeader const *const head = - alloc_ptr ? Header::get_header(alloc_ptr) : (SharedAllocationHeader *)0; + alloc_ptr ? Header::get_header(alloc_ptr) : nullptr; RecordHost *const record = - head ? static_cast(head->m_record) : (RecordHost *)0; + head ? static_cast(head->m_record) : nullptr; if (!alloc_ptr || record->m_alloc_ptr != head) { Kokkos::Impl::throw_runtime_exception( diff --git a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp index 92e9aa24b0..2e5587e4a3 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp @@ -62,7 +62,8 @@ void HostThreadTeamData::organize_pool(HostThreadTeamData *members[], // Verify not already a member of a pool: for (int rank = 0; rank < size && ok; ++rank) { - ok = (nullptr != members[rank]) && (0 == members[rank]->m_pool_scratch); + ok = (nullptr != members[rank]) && + (nullptr == members[rank]->m_pool_scratch); } if (ok) { @@ -106,8 +107,8 @@ void HostThreadTeamData::organize_pool(HostThreadTeamData *members[], void HostThreadTeamData::disband_pool() { m_work_range.first = -1; m_work_range.second = -1; - m_pool_scratch = 0; - m_team_scratch = 0; + m_pool_scratch = nullptr; + m_team_scratch = nullptr; m_pool_rank = 0; m_pool_size = 1; m_team_base = 0; @@ -121,7 +122,7 @@ void HostThreadTeamData::disband_pool() { int HostThreadTeamData::organize_team(const int team_size) { // Pool is initialized - const bool ok_pool = 0 != m_pool_scratch; + const bool ok_pool = nullptr != m_pool_scratch; // Team is not set const bool ok_team = diff --git a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp index fce665f6b1..9e4dda941b 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp @@ -53,7 +53,8 @@ #include #include -#include // std::numeric_limits +#include // std::numeric_limits +#include // std::max //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- @@ -188,9 +189,9 @@ class HostThreadTeamData { constexpr HostThreadTeamData() noexcept : m_work_range(-1, -1), m_work_end(0), - m_scratch(0), - m_pool_scratch(0), - m_team_scratch(0), + m_scratch(nullptr), + m_pool_scratch(nullptr), + m_team_scratch(nullptr), m_pool_rank(0), m_pool_size(1), m_team_reduce(0), @@ -538,6 +539,8 @@ class HostThreadTeamMember { } #else { + (void)value; + (void)source_team_rank; Kokkos::abort("HostThreadTeamMember team_broadcast\n"); } #endif @@ -574,6 +577,9 @@ class HostThreadTeamMember { } #else { + (void)f; + (void)value; + (void)source_team_rank; Kokkos::abort("HostThreadTeamMember team_broadcast\n"); } #endif @@ -640,6 +646,8 @@ class HostThreadTeamMember { } #else { + (void)reducer; + (void)contribution; Kokkos::abort("HostThreadTeamMember team_reduce\n"); } #endif @@ -693,8 +701,8 @@ class HostThreadTeamMember { #endif*/ template - KOKKOS_INLINE_FUNCTION T team_scan(T const& value, T* const global = 0) const - noexcept + KOKKOS_INLINE_FUNCTION T team_scan(T const& value, + T* const global = nullptr) const noexcept #if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) { if (0 != m_data.m_team_rank) { @@ -751,6 +759,8 @@ class HostThreadTeamMember { } #else { + (void)value; + (void)global; Kokkos::abort("HostThreadTeamMember team_scan\n"); return T(); } diff --git a/lib/kokkos/core/src/impl/Kokkos_LIFO.hpp b/lib/kokkos/core/src/impl/Kokkos_LIFO.hpp index 67e9af5c40..683c5c9b18 100644 --- a/lib/kokkos/core/src/impl/Kokkos_LIFO.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_LIFO.hpp @@ -48,8 +48,7 @@ #define KOKKOS_IMPL_LIFO_HPP #include -#ifdef KOKKOS_ENABLE_TASKDAG // Note: implies CUDA_VERSION >= 8000 if using - // CUDA +#ifdef KOKKOS_ENABLE_TASKDAG #include @@ -305,7 +304,7 @@ class SingleConsumeOperationLIFO : private LockBasedLIFOCommon { public: using value_type = typename base_t::value_type; // = T - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION SingleConsumeOperationLIFO() noexcept = default; SingleConsumeOperationLIFO(SingleConsumeOperationLIFO const&) = delete; @@ -314,7 +313,7 @@ class SingleConsumeOperationLIFO : private LockBasedLIFOCommon { delete; SingleConsumeOperationLIFO& operator=(SingleConsumeOperationLIFO&&) = delete; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~SingleConsumeOperationLIFO() = default; KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_LinkedListNode.hpp b/lib/kokkos/core/src/impl/Kokkos_LinkedListNode.hpp index 1b7918ed78..79aeca5da0 100644 --- a/lib/kokkos/core/src/impl/Kokkos_LinkedListNode.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_LinkedListNode.hpp @@ -48,8 +48,7 @@ #define KOKKOS_IMPL_LINKEDLISTNODE_HPP #include -#ifdef KOKKOS_ENABLE_TASKDAG // Note: implies CUDA_VERSION >= 8000 if using - // CUDA +#ifdef KOKKOS_ENABLE_TASKDAG #include diff --git a/lib/kokkos/core/src/impl/Kokkos_MemoryPoolAllocator.hpp b/lib/kokkos/core/src/impl/Kokkos_MemoryPoolAllocator.hpp index 54f91eb68d..2218405766 100644 --- a/lib/kokkos/core/src/impl/Kokkos_MemoryPoolAllocator.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_MemoryPoolAllocator.hpp @@ -65,17 +65,17 @@ class MemoryPoolAllocator { memory_pool m_pool; public: - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION MemoryPoolAllocator() = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION MemoryPoolAllocator(MemoryPoolAllocator const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION MemoryPoolAllocator(MemoryPoolAllocator&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION MemoryPoolAllocator& operator=(MemoryPoolAllocator const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION MemoryPoolAllocator& operator=(MemoryPoolAllocator&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~MemoryPoolAllocator() = default; KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp b/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp index f8bef72b77..eae14a92d5 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp @@ -55,6 +55,8 @@ void memory_fence() { __threadfence(); #elif defined(KOKKOS_ENABLE_ROCM_ATOMICS) amp_barrier(CLK_LOCAL_MEM_FENCE | CLK_GLOBAL_MEM_FENCE); +#elif defined(KOKKOS_ENABLE_HIP_ATOMICS) + __threadfence(); #elif defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) asm volatile("mfence" ::: "memory"); #elif defined(KOKKOS_ENABLE_GNU_ATOMICS) || \ diff --git a/lib/kokkos/core/src/impl/Kokkos_MultipleTaskQueue.hpp b/lib/kokkos/core/src/impl/Kokkos_MultipleTaskQueue.hpp index 675547ba5e..fe78cfbacc 100644 --- a/lib/kokkos/core/src/impl/Kokkos_MultipleTaskQueue.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_MultipleTaskQueue.hpp @@ -125,7 +125,7 @@ struct MultipleTaskQueueTeamEntry { KOKKOS_INLINE_FUNCTION OptionalRef _pop_failed_insertion( int priority, TaskType type, typename std::enable_if< - task_queue_traits::ready_queue_insertion_may_fail and + task_queue_traits::ready_queue_insertion_may_fail && std::is_void<_always_void>::value, void*>::type = nullptr) { auto* rv_ptr = m_failed_heads[priority][(int)type]; @@ -142,9 +142,9 @@ struct MultipleTaskQueueTeamEntry { template KOKKOS_INLINE_FUNCTION OptionalRef _pop_failed_insertion( - int priority, TaskType type, + int /*priority*/, TaskType /*type*/, typename std::enable_if< - not task_queue_traits::ready_queue_insertion_may_fail and + !task_queue_traits::ready_queue_insertion_may_fail && std::is_void<_always_void>::value, void*>::type = nullptr) { return OptionalRef{nullptr}; @@ -181,13 +181,13 @@ struct MultipleTaskQueueTeamEntry { auto return_value = OptionalRef{}; for (int i_priority = 0; i_priority < NumPriorities; ++i_priority) { return_value = _pop_failed_insertion(i_priority, TaskTeam); - if (not return_value) + if (!return_value) return_value = m_ready_queues[i_priority][TaskTeam].pop(); if (return_value) return return_value; // Check for a single task with this priority return_value = _pop_failed_insertion(i_priority, TaskSingle); - if (not return_value) + if (!return_value) return_value = m_ready_queues[i_priority][TaskSingle].pop(); if (return_value) return return_value; } @@ -203,7 +203,7 @@ struct MultipleTaskQueueTeamEntry { KOKKOS_INLINE_FUNCTION void do_handle_failed_insertion( runnable_task_base_type&& task, typename std::enable_if< - task_queue_traits::ready_queue_insertion_may_fail and + task_queue_traits::ready_queue_insertion_may_fail && std::is_void<_always_void>::value, void*>::type = nullptr) { // failed insertions, if they happen, must be from the only thread that @@ -217,9 +217,9 @@ struct MultipleTaskQueueTeamEntry { template KOKKOS_INLINE_FUNCTION void do_handle_failed_insertion( - runnable_task_base_type&& task, + runnable_task_base_type&& /*task*/, typename std::enable_if< - not task_queue_traits::ready_queue_insertion_may_fail and + !task_queue_traits::ready_queue_insertion_may_fail && std::is_void<_always_void>::value, void*>::type = nullptr) { Kokkos::abort("should be unreachable!"); @@ -229,7 +229,7 @@ struct MultipleTaskQueueTeamEntry { KOKKOS_INLINE_FUNCTION void flush_failed_insertions( int priority, int task_type, typename std::enable_if< - task_queue_traits::ready_queue_insertion_may_fail and + task_queue_traits::ready_queue_insertion_may_fail && std::is_void<_always_void>::value, // just to make this dependent // on template parameter int>::type = 0) { @@ -258,7 +258,7 @@ struct MultipleTaskQueueTeamEntry { KOKKOS_INLINE_FUNCTION void flush_failed_insertions( int, int, typename std::enable_if< - not task_queue_traits::ready_queue_insertion_may_fail and + !task_queue_traits::ready_queue_insertion_may_fail && std::is_void<_always_void>::value, // just to make this dependent // on template parameter int>::type = 0) {} @@ -335,22 +335,22 @@ class MultipleTaskQueue final constexpr explicit SchedulerInfo(team_queue_id_t association) noexcept : team_association(association) {} - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION SchedulerInfo() = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION SchedulerInfo(SchedulerInfo const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION SchedulerInfo(SchedulerInfo&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION SchedulerInfo& operator=(SchedulerInfo const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION SchedulerInfo& operator=(SchedulerInfo&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~SchedulerInfo() = default; }; @@ -438,7 +438,7 @@ class MultipleTaskQueue final return_value = team_queue_info.pop_ready_task(); - if (not return_value) { + if (!return_value) { // loop through the rest of the teams and try to steal for (auto isteal = (team_association + 1) % this->n_queues(); isteal != team_association; @@ -484,32 +484,32 @@ class MultipleTaskQueue final // Provide a sensible default that can be overridden KOKKOS_INLINE_FUNCTION void update_scheduling_info_from_completed_predecessor( - runnable_task_base_type& ready_task, - runnable_task_base_type const& predecessor) const { + runnable_task_base_type& /*ready_task*/, + runnable_task_base_type const& /*predecessor*/) const { // Do nothing; we're using the extra storage for the failure linked list } // Provide a sensible default that can be overridden KOKKOS_INLINE_FUNCTION void update_scheduling_info_from_completed_predecessor( - aggregate_task_type& aggregate, - runnable_task_base_type const& predecessor) const { + aggregate_task_type& /*aggregate*/, + runnable_task_base_type const& /*predecessor*/) const { // Do nothing; we're using the extra storage for the failure linked list } // Provide a sensible default that can be overridden KOKKOS_INLINE_FUNCTION void update_scheduling_info_from_completed_predecessor( - aggregate_task_type& aggregate, - aggregate_task_type const& predecessor) const { + aggregate_task_type& /*aggregate*/, + aggregate_task_type const& /*predecessor*/) const { // Do nothing; we're using the extra storage for the failure linked list } // Provide a sensible default that can be overridden KOKKOS_INLINE_FUNCTION void update_scheduling_info_from_completed_predecessor( - runnable_task_base_type& ready_task, - aggregate_task_type const& predecessor) const { + runnable_task_base_type& /*ready_task*/, + aggregate_task_type const& /*predecessor*/) const { // Do nothing; we're using the extra storage for the failure linked list } diff --git a/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp b/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp index 6b1e8b63cc..fbb921d7f2 100644 --- a/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp @@ -245,12 +245,6 @@ #endif #endif -#ifdef KOKKOS_HAVE_QTHREADS -#ifndef KOKKOS_ENABLE_QTHREADS -#define KOKKOS_ENABLE_QTHREADS KOKKOS_HAVE_QTHREADS -#endif -#endif - #ifdef KOKKOS_HAVE_SERIAL #ifndef KOKKOS_ENABLE_SERIAL #define KOKKOS_ENABLE_SERIAL KOKKOS_HAVE_SERIAL @@ -474,10 +468,6 @@ #define KOKKOS_HAVE_PTHREAD 1 #endif -#if (!defined(KOKKOS_HAVE_QTHREADS)) && defined(KOKKOS_ENABLE_QTHREADS) -#define KOKKOS_HAVE_QTHREADS 1 -#endif - #if (!defined(KOKKOS_HAVE_SERIAL)) && defined(KOKKOS_ENABLE_SERIAL) #define KOKKOS_HAVE_SERIAL 1 #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_OptionalRef.hpp b/lib/kokkos/core/src/impl/Kokkos_OptionalRef.hpp index 668e7c0916..12f6c9f5fd 100644 --- a/lib/kokkos/core/src/impl/Kokkos_OptionalRef.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_OptionalRef.hpp @@ -69,17 +69,22 @@ struct OptionalRef { public: using value_type = T; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION OptionalRef() = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION OptionalRef(OptionalRef const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION OptionalRef(OptionalRef&&) = default; KOKKOS_INLINE_FUNCTION - OptionalRef& operator=(OptionalRef const&) = default; + // MSVC requires that this copy constructor is not defaulted + // if there exists a (non-defaulted) volatile one. + OptionalRef& operator=(OptionalRef const& other) noexcept { + m_value = other.m_value; + return *this; + } KOKKOS_INLINE_FUNCTION // Can't return a reference to volatile OptionalRef, since GCC issues a @@ -88,10 +93,10 @@ struct OptionalRef { m_value = other.m_value; } - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION OptionalRef& operator=(OptionalRef&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~OptionalRef() = default; KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_Profiling_DeviceInfo.hpp b/lib/kokkos/core/src/impl/Kokkos_Profiling_DeviceInfo.hpp index e35ff84e97..51d1446ef5 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Profiling_DeviceInfo.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Profiling_DeviceInfo.hpp @@ -1,45 +1,45 @@ /* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 + //@HEADER + // ************************************************************************ + // + // Kokkos v. 3.0 // Copyright (2020) National Technology & Engineering // Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER + // + // Under the terms of Contract DE-NA0003525 with NTESS, + // the U.S. Government retains certain rights in this software. + // + // Redistribution and use in source and binary forms, with or without + // modification, are permitted provided that the following conditions are + // met: + // + // 1. Redistributions of source code must retain the above copyright + // notice, this list of conditions and the following disclaimer. + // + // 2. Redistributions in binary form must reproduce the above copyright + // notice, this list of conditions and the following disclaimer in the + // documentation and/or other materials provided with the distribution. + // + // 3. Neither the name of the Corporation nor the names of the + // contributors may be used to endorse or promote products derived from + // this software without specific prior written permission. + // + // THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY + // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE + // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + // + // Questions? Contact Christian R. Trott (crtrott@sandia.gov) + // + // ************************************************************************ + //@HEADER */ #ifndef KOKKOSP_DEVICE_INFO_HPP diff --git a/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.cpp b/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.cpp index a069a695fc..cf52caea90 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.cpp @@ -1,46 +1,46 @@ /* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 + //@HEADER + // ************************************************************************ + // + // Kokkos v. 3.0 // Copyright (2020) National Technology & Engineering // Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ + // + // Under the terms of Contract DE-NA0003525 with NTESS, + // the U.S. Government retains certain rights in this software. + // + // Redistribution and use in source and binary forms, with or without + // modification, are permitted provided that the following conditions are + // met: + // + // 1. Redistributions of source code must retain the above copyright + // notice, this list of conditions and the following disclaimer. + // + // 2. Redistributions in binary form must reproduce the above copyright + // notice, this list of conditions and the following disclaimer in the + // documentation and/or other materials provided with the distribution. + // + // 3. Neither the name of the Corporation nor the names of the + // contributors may be used to endorse or promote products derived from + // this software without specific prior written permission. + // + // THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY + // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE + // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + // + // Questions? Contact Christian R. Trott (crtrott@sandia.gov) + // + // ************************************************************************ + //@HEADER + */ #include diff --git a/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.hpp b/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.hpp index ac37401e10..df17501ff4 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.hpp @@ -1,46 +1,46 @@ /* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 + //@HEADER + // ************************************************************************ + // + // Kokkos v. 3.0 // Copyright (2020) National Technology & Engineering // Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ + // + // Under the terms of Contract DE-NA0003525 with NTESS, + // the U.S. Government retains certain rights in this software. + // + // Redistribution and use in source and binary forms, with or without + // modification, are permitted provided that the following conditions are + // met: + // + // 1. Redistributions of source code must retain the above copyright + // notice, this list of conditions and the following disclaimer. + // + // 2. Redistributions in binary form must reproduce the above copyright + // notice, this list of conditions and the following disclaimer in the + // documentation and/or other materials provided with the distribution. + // + // 3. Neither the name of the Corporation nor the names of the + // contributors may be used to endorse or promote products derived from + // this software without specific prior written permission. + // + // THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY + // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE + // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + // + // Questions? Contact Christian R. Trott (crtrott@sandia.gov) + // + // ************************************************************************ + //@HEADER + */ #ifndef KOKKOSP_INTERFACE_HPP #define KOKKOSP_INTERFACE_HPP @@ -54,7 +54,37 @@ #include #include +// NOTE: in this Kokkos::Profiling block, do not define anything that shouldn't +// exist should Profiling be disabled + +namespace Kokkos { +namespace Profiling { +namespace Experimental { +enum struct DeviceType { + Serial, + OpenMP, + Cuda, + HIP, + OpenMPTarget, + HPX, + Threads +}; +template +struct DeviceTypeTraits; + +constexpr const size_t device_type_bits = 8; +constexpr const size_t instance_bits = 24; +template +inline uint32_t device_id(ExecutionSpace const& space) noexcept { + auto device_id = static_cast(DeviceTypeTraits::id); + return (device_id << instance_bits) + space.impl_instance_id(); +} +} // namespace Experimental +} // namespace Profiling +} // end namespace Kokkos + #if defined(KOKKOS_ENABLE_PROFILING) +// We check at configure time that libdl is available. #include #include diff --git a/lib/kokkos/core/src/impl/Kokkos_Serial.cpp b/lib/kokkos/core/src/impl/Kokkos_Serial.cpp index 40aeaa1b7a..b39f9dfeea 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Serial.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Serial.cpp @@ -192,7 +192,7 @@ void Serial::impl_finalize() space.deallocate(Impl::g_serial_thread_team_data.scratch_buffer(), Impl::g_serial_thread_team_data.scratch_bytes()); - Impl::g_serial_thread_team_data.scratch_assign((void*)0, 0, 0, 0, 0, 0); + Impl::g_serial_thread_team_data.scratch_assign(nullptr, 0, 0, 0, 0, 0); } #if defined(KOKKOS_ENABLE_PROFILING) diff --git a/lib/kokkos/core/src/impl/Kokkos_Serial_Task.hpp b/lib/kokkos/core/src/impl/Kokkos_Serial_Task.hpp index 6871e4f14a..3ac3899aca 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Serial_Task.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Serial_Task.hpp @@ -92,7 +92,7 @@ class TaskQueueSpecialization > { auto current_task = OptionalRef(nullptr); - while (not queue.is_done()) { + while (!queue.is_done()) { // Each team lead attempts to acquire either a thread team task // or a single thread task for the team. diff --git a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp index 3688f069e5..6a054f73a1 100644 --- a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp @@ -47,7 +47,8 @@ namespace Kokkos { namespace Impl { -__thread int SharedAllocationRecord::t_tracking_enabled = 1; +KOKKOS_THREAD_LOCAL int SharedAllocationRecord::t_tracking_enabled = + 1; #ifdef KOKKOS_DEBUG bool SharedAllocationRecord::is_sane( @@ -100,7 +101,7 @@ bool SharedAllocationRecord::is_sane( reinterpret_cast(rec->m_next), reinterpret_cast(rec->m_prev), reinterpret_cast( - rec->m_next != NULL ? rec->m_next->m_prev : NULL), + rec->m_next != nullptr ? rec->m_next->m_prev : nullptr), reinterpret_cast(rec->m_prev != rec->m_root ? rec->m_prev->m_next : root_next)); @@ -186,7 +187,7 @@ SharedAllocationRecord::SharedAllocationRecord( #endif , m_count(0) { - if (0 != arg_alloc_ptr) { + if (nullptr != arg_alloc_ptr) { #ifdef KOKKOS_DEBUG // Insert into the root double-linked list for tracking // @@ -197,7 +198,7 @@ SharedAllocationRecord::SharedAllocationRecord( m_prev = m_root; static constexpr SharedAllocationRecord* zero = nullptr; - // Read root->m_next and lock by setting to NULL + // Read root->m_next and lock by setting to nullptr while ((m_next = Kokkos::atomic_exchange(&m_root->m_next, zero)) == nullptr) ; @@ -214,7 +215,7 @@ SharedAllocationRecord::SharedAllocationRecord( } else { Kokkos::Impl::throw_runtime_exception( - "Kokkos::Impl::SharedAllocationRecord given NULL allocation"); + "Kokkos::Impl::SharedAllocationRecord given nullptr allocation"); } } @@ -288,7 +289,7 @@ SharedAllocationRecord* SharedAllocationRecord< function_type d = arg_record->m_dealloc; (*d)(arg_record); - arg_record = 0; + arg_record = nullptr; } else if (old_count < 1) { // Error fprintf(stderr, "Kokkos::Impl::SharedAllocationRecord '%s' failed decrement count " diff --git a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.hpp b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.hpp index b68c0834c9..6e954e8f27 100644 --- a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.hpp @@ -115,7 +115,7 @@ class SharedAllocationRecord { SharedAllocationHeader* arg_alloc_ptr, size_t arg_alloc_size, function_type arg_dealloc); private: - static __thread int t_tracking_enabled; + static KOKKOS_THREAD_LOCAL int t_tracking_enabled; public: virtual std::string get_label() const { return std::string("Unmanaged"); } @@ -132,7 +132,7 @@ class SharedAllocationRecord { */ static void tracking_enable() { t_tracking_enabled = 1; } - virtual ~SharedAllocationRecord() {} + virtual ~SharedAllocationRecord() = default; SharedAllocationRecord() : m_alloc_ptr(nullptr), @@ -245,6 +245,9 @@ class SharedAllocationRecord #if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) return new SharedAllocationRecord(arg_space, arg_label, arg_alloc); #else + (void)arg_space; + (void)arg_label; + (void)arg_alloc; return (SharedAllocationRecord*)0; #endif } diff --git a/lib/kokkos/core/src/impl/Kokkos_SimpleTaskScheduler.hpp b/lib/kokkos/core/src/impl/Kokkos_SimpleTaskScheduler.hpp index f01bdce17b..a01b22e4e9 100644 --- a/lib/kokkos/core/src/impl/Kokkos_SimpleTaskScheduler.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_SimpleTaskScheduler.hpp @@ -226,13 +226,13 @@ class SimpleTaskScheduler } template - KOKKOS_FUNCTION - future_type_for_functor::type> - _spawn_impl( - DepTaskType arg_predecessor_task, TaskPriority arg_priority, - typename runnable_task_base_type::function_type apply_function_ptr, - typename runnable_task_base_type::destroy_type destroy_function_ptr, - FunctorType&& functor) { + KOKKOS_FUNCTION future_type_for_functor< + typename std::decay::type> + _spawn_impl( + DepTaskType arg_predecessor_task, TaskPriority arg_priority, + typename runnable_task_base_type::function_type apply_function_ptr, + typename runnable_task_base_type::destroy_type /*destroy_function_ptr*/, + FunctorType&& functor) { KOKKOS_EXPECTS(m_queue != nullptr); using functor_future_type = @@ -445,7 +445,7 @@ class SimpleTaskScheduler KOKKOS_EXPECTS(!task.get_respawn_flag()); task.set_priority(priority); - KOKKOS_ASSERT(not task.has_predecessor()); + KOKKOS_ASSERT(!task.has_predecessor()); task.set_respawn_flag(true); } diff --git a/lib/kokkos/core/src/impl/Kokkos_SingleTaskQueue.hpp b/lib/kokkos/core/src/impl/Kokkos_SingleTaskQueue.hpp index 8c149e978f..a0eccffb62 100644 --- a/lib/kokkos/core/src/impl/Kokkos_SingleTaskQueue.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_SingleTaskQueue.hpp @@ -154,7 +154,7 @@ class SingleTaskQueue KOKKOS_FUNCTION OptionalRef pop_ready_task( - team_scheduler_info_type const& info) { + team_scheduler_info_type const& /*info*/) { OptionalRef return_value; // always loop in order of priority first, then prefer team tasks over // single tasks diff --git a/lib/kokkos/core/src/impl/Kokkos_Stacktrace.cpp b/lib/kokkos/core/src/impl/Kokkos_Stacktrace.cpp index 582f697936..c0c1fdf6be 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Stacktrace.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Stacktrace.cpp @@ -18,7 +18,7 @@ namespace Kokkos { namespace Impl { #ifndef KOKKOS_IMPL_ENABLE_STACKTRACE int backtrace(void**, int) { return 0; } -char** backtrace_symbols(void* const*, int) { return NULL; } +char** backtrace_symbols(void* const*, int) { return nullptr; } #endif std::string demangle(const std::string& name) { diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskBase.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskBase.hpp index e3de5d0eb9..8078c68dbd 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskBase.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskBase.hpp @@ -167,11 +167,7 @@ class TaskBase { TaskBase& operator=(TaskBase&&) = delete; TaskBase& operator=(const TaskBase&) = delete; -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION ~TaskBase(){}; -#else - KOKKOS_INLINE_FUNCTION ~TaskBase() = default; -#endif + KOKKOS_DEFAULTED_FUNCTION ~TaskBase() = default; KOKKOS_INLINE_FUNCTION constexpr TaskBase() : m_apply(nullptr), @@ -211,7 +207,7 @@ class TaskBase { Kokkos::abort("TaskScheduler ERROR: resetting task dependence"); } - if (0 != dep) { + if (nullptr != dep) { // The future may be destroyed upon returning from this call // so increment reference count to track this assignment. Kokkos::atomic_increment(&(dep->m_ref_count)); @@ -226,7 +222,44 @@ class TaskBase { } }; -static_assert(sizeof(TaskBase) == 48, "Verifying expected sizeof(TaskBase)"); +//------------------------------------------------------------------------------ +// {{{2 + +// Workaround: some compilers implement int16_t as 4 bytes, so the size might +// not actually be 48 bytes. +// There's not a lot of reason to keep checking this here; the program will +// work fine if this isn't true. I think this check was originally here to +// emphasize the fact that adding to the size of TaskBase could have a +// significant performance penalty, since doing so could substantially decrease +// the number of full task types that fit into a cache line. We'll leave it +// here for now, though, since we're probably going to be ripping all of the +// old TaskBase stuff out eventually anyway. +constexpr size_t unpadded_task_base_size = 44 + 2 * sizeof(int16_t); +// don't forget padding: +constexpr size_t task_base_misalignment = + unpadded_task_base_size % alignof(void*); +constexpr size_t task_base_padding_size = + (alignof(void*) - task_base_misalignment) % alignof(void*); +constexpr size_t expected_task_base_size = + unpadded_task_base_size + task_base_padding_size; + +// Produce a more readable compiler error message than the plain static assert +template +struct verify_task_base_size_is_48_note_actual_size_is_ {}; +template <> +struct verify_task_base_size_is_48_note_actual_size_is_< + expected_task_base_size> { + using type = int; +}; +static constexpr + typename verify_task_base_size_is_48_note_actual_size_is_::type verify = {}; + +static_assert(sizeof(TaskBase) == expected_task_base_size, + "Verifying expected sizeof(TaskBase)"); + +// end Verify the size of TaskBase is as expected }}}2 +//------------------------------------------------------------------------------ } /* namespace Impl */ } /* namespace Kokkos */ diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskNode.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskNode.hpp index 1ea7fc2049..42afa93cdc 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskNode.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskNode.hpp @@ -308,7 +308,7 @@ class TaskNode template KOKKOS_INLINE_FUNCTION void consume_wait_queue(Function&& f) { - KOKKOS_EXPECTS(not m_wait_queue.is_consumed()); + KOKKOS_EXPECTS(!m_wait_queue.is_consumed()); m_wait_queue.consume(std::forward(f)); } @@ -620,7 +620,7 @@ class alignas(16) RunnableTask ~RunnableTask() = delete; KOKKOS_INLINE_FUNCTION - void update_scheduling_info(member_type& member) { + void update_scheduling_info(member_type& /*member*/) { // TODO @tasking @generalization DSH call a queue-specific hook here; for // now, this info is already updated elsewhere this->scheduling_info() = // member.scheduler().scheduling_info(); @@ -639,7 +639,7 @@ class alignas(16) RunnableTask this->functor_type::operator()(*member, *val); } - KOKKOS_FUNCTION static void destroy(task_base_type* root) { + KOKKOS_FUNCTION static void destroy(task_base_type* /*root*/) { // TaskResult::destroy(root); } diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskPolicyData.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskPolicyData.hpp index c5b8c2fc68..09113628a7 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskPolicyData.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskPolicyData.hpp @@ -75,20 +75,20 @@ struct TaskPolicyWithPredecessor { TaskPolicyWithPredecessor() = delete; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithPredecessor(TaskPolicyWithPredecessor const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithPredecessor(TaskPolicyWithPredecessor&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithPredecessor& operator=(TaskPolicyWithPredecessor const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithPredecessor& operator=(TaskPolicyWithPredecessor&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~TaskPolicyWithPredecessor() = default; KOKKOS_INLINE_FUNCTION @@ -129,19 +129,19 @@ struct TaskPolicyWithScheduler { TaskPolicyWithScheduler() = delete; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithScheduler(TaskPolicyWithScheduler const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithScheduler(TaskPolicyWithScheduler&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithScheduler& operator=(TaskPolicyWithScheduler const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithScheduler& operator=(TaskPolicyWithScheduler&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~TaskPolicyWithScheduler() = default; KOKKOS_INLINE_FUNCTION @@ -155,7 +155,7 @@ struct TaskPolicyWithScheduler { KOKKOS_INLINE_FUNCTION static constexpr bool has_predecessor() noexcept { - return not std::is_same::value; + return !std::is_same::value; } KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskQueue.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskQueue.hpp index f7787dae0c..c0d2eca9c1 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskQueue.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskQueue.hpp @@ -168,13 +168,13 @@ class TaskQueue : public TaskQueueBase { int allocation_count() const noexcept { return m_count_alloc; } KOKKOS_INLINE_FUNCTION - void initialize_team_queues(int pool_size) const noexcept {} + void initialize_team_queues(int /*pool_size*/) const noexcept {} KOKKOS_INLINE_FUNCTION task_root_type* attempt_to_steal_task() const noexcept { return nullptr; } KOKKOS_INLINE_FUNCTION - team_queue_type& get_team_queue(int team_rank) { return *this; } + team_queue_type& get_team_queue(int /*team_rank*/) { return *this; } // void execute() { specialization::execute( this ); } diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskQueueCommon.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskQueueCommon.hpp index b3444420d6..cd53a81b1b 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskQueueCommon.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskQueueCommon.hpp @@ -259,9 +259,9 @@ class TaskQueueCommonMixin { // we've lost exclusive access and should nt touch task again // If the predecessor is not done, then task is not ready - task_is_ready = not predecessor_not_ready; + task_is_ready = !predecessor_not_ready; - if (task_is_ready and predecessor.is_runnable()) { + if (task_is_ready && predecessor.is_runnable()) { // this is our last chance to update the scheduling info before // predecessor is potentially deleted _self().update_scheduling_info_from_completed_predecessor( @@ -299,7 +299,7 @@ class TaskQueueCommonMixin { // and enqueue the task // (can't move because the task isn't expired unless the push succeeds bool push_success = ready_queue.push(task); - if (not push_success) { + if (!push_success) { _self().handle_failed_ready_queue_insertion(std::move(task), ready_queue, info); } @@ -312,8 +312,8 @@ class TaskQueueCommonMixin { template KOKKOS_INLINE_FUNCTION void handle_failed_ready_queue_insertion( - RunnableTaskBase&& task, ReadyQueueType& ready_queue, - TeamSchedulerInfo const& info) { + RunnableTaskBase&& /*task*/, + ReadyQueueType& /*ready_queue*/, TeamSchedulerInfo const& /*info*/) { Kokkos::abort("Unhandled failure of ready task queue insertion!\n"); } @@ -325,7 +325,7 @@ class TaskQueueCommonMixin { AggregateTask&& aggregate, TeamSchedulerInfo const& info) { // Because the aggregate is being scheduled, should not be in any queue - KOKKOS_EXPECTS(not aggregate.is_enqueued()); + KOKKOS_EXPECTS(!aggregate.is_enqueued()); using task_scheduling_info_type = typename Derived::task_scheduling_info_type; @@ -369,7 +369,7 @@ class TaskQueueCommonMixin { // ready yet incomplete_dependence_found = pred_not_ready; - if (not pred_not_ready) { + if (!pred_not_ready) { // A predecessor was done, and we didn't enqueue the aggregate // Update the aggregate's scheduling info (we still have exclusive // access to it here) @@ -403,7 +403,7 @@ class TaskQueueCommonMixin { // dependence was found, because some other thread could have already popped // it off of another waiting queue - if (not incomplete_dependence_found) { + if (!incomplete_dependence_found) { // all of the predecessors were completed, so we can complete `task` _self().complete(std::move(aggregate), info); } @@ -462,15 +462,16 @@ class TaskQueueCommonMixin { template KOKKOS_INLINE_FUNCTION void initialize_scheduling_info_from_predecessor( - TaskNode& task, - TaskNode& predecessor) const { + TaskNode& /*task*/, + TaskNode& /*predecessor*/) const { /* do nothing by default */ } template KOKKOS_INLINE_FUNCTION void initialize_scheduling_info_from_team_scheduler_info( - TaskNode& task, TeamSchedulerInfo const& info) const { + TaskNode& /*task*/, + TeamSchedulerInfo const& /*info*/) const { /* do nothing by default */ } diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp index c64c497966..fe3cac7bda 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp @@ -181,7 +181,7 @@ KOKKOS_FUNCTION bool TaskQueue::push_task( task->m_priority, task->m_ref_count); #endif - task_root_type *const zero = (task_root_type *)0; + task_root_type *const zero = nullptr; task_root_type *const lock = (task_root_type *)task_root_type::LockTag; task_root_type *volatile &next = task->m_next; @@ -254,7 +254,7 @@ TaskQueue::pop_ready_task( // // If queue is locked then just read by guaranteeing the CAS will fail. - if (lock == task) task = 0; + if (lock == task) task = nullptr; task_root_type *const x = task; @@ -334,7 +334,7 @@ KOKKOS_FUNCTION void TaskQueue::schedule_runnable( task->m_priority, task->m_ref_count); #endif - task_root_type *const zero = (task_root_type *)0; + task_root_type *const zero = nullptr; task_root_type *const lock = (task_root_type *)task_root_type::LockTag; task_root_type *const end = (task_root_type *)task_root_type::EndTag; @@ -382,16 +382,16 @@ KOKKOS_FUNCTION void TaskQueue::schedule_runnable( // If we don't have a dependency, or if pushing onto the wait queue of that // dependency failed (since the only time that queue should be locked is when // the task is transitioning to complete??!?) - const bool is_ready = (0 == dep) || (!push_task(&dep->m_wait, task)); + const bool is_ready = (nullptr == dep) || (!push_task(&dep->m_wait, task)); - if ((0 != dep) && respawn) { + if ((nullptr != dep) && respawn) { // Reference count for dep was incremented when // respawn assigned dependency to task->m_next // so that if dep completed prior to the // above push_task dep would not be destroyed. // dep reference count can now be decremented, // which may deallocate the task. - TaskQueue::assign(&dep, (task_root_type *)0); + TaskQueue::assign(&dep, nullptr); } if (is_ready) { @@ -452,7 +452,7 @@ KOKKOS_FUNCTION void TaskQueue::schedule_aggregate( task->m_ref_count); #endif - task_root_type *const zero = (task_root_type *)0; + task_root_type *const zero = nullptr; task_root_type *const lock = (task_root_type *)task_root_type::LockTag; task_root_type *const end = (task_root_type *)task_root_type::EndTag; @@ -551,7 +551,7 @@ KOKKOS_FUNCTION void TaskQueue::reschedule( // task is in Executing-Respawn state // task->m_next == 0 (no dependence) - task_root_type *const zero = (task_root_type *)0; + task_root_type *const zero = nullptr; task_root_type *const lock = (task_root_type *)task_root_type::LockTag; if (lock != Kokkos::atomic_exchange(&task->m_next, zero)) { @@ -567,7 +567,7 @@ KOKKOS_FUNCTION void TaskQueue::complete( // Complete a runnable task that has finished executing // or a when_all task when all of its dependeneces are complete. - task_root_type *const zero = (task_root_type *)0; + task_root_type *const zero = nullptr; task_root_type *const lock = (task_root_type *)task_root_type::LockTag; task_root_type *const end = (task_root_type *)task_root_type::EndTag; @@ -624,7 +624,7 @@ KOKKOS_FUNCTION void TaskQueue::complete( task_root_type volatile &vx = *x; task_root_type *const next = vx.m_next; - vx.m_next = 0; + vx.m_next = nullptr; Kokkos::memory_fence(); diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskResult.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskResult.hpp index f846ff4ea6..40a9c3bf57 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskResult.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskResult.hpp @@ -113,20 +113,20 @@ struct TaskResult { using reference_type = void; template - KOKKOS_INLINE_FUNCTION static void* ptr(TaskNode* task) { + KOKKOS_INLINE_FUNCTION static void* ptr(TaskNode* /*task*/) { return nullptr; } - KOKKOS_INLINE_FUNCTION static void* ptr(TaskBase*) { return (void*)nullptr; } + KOKKOS_INLINE_FUNCTION static void* ptr(TaskBase*) { return nullptr; } template KOKKOS_INLINE_FUNCTION static reference_type get( - TaskNode* task) { /* Should never be called */ + TaskNode* /*task*/) { /* Should never be called */ } KOKKOS_INLINE_FUNCTION static reference_type get(TaskBase*) {} - KOKKOS_INLINE_FUNCTION static void destroy(TaskBase* task) {} + KOKKOS_INLINE_FUNCTION static void destroy(TaskBase* /*task*/) {} // template // KOKKOS_INLINE_FUNCTION static diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskTeamMember.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskTeamMember.hpp index 5a9d4c77bf..2faab57949 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskTeamMember.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskTeamMember.hpp @@ -90,22 +90,22 @@ class TaskTeamMemberAdapter : public TeamMember { // (rule of 6 constructors) - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskTeamMemberAdapter() = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskTeamMemberAdapter(TaskTeamMemberAdapter const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskTeamMemberAdapter(TaskTeamMemberAdapter&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskTeamMemberAdapter& operator=(TaskTeamMemberAdapter const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskTeamMemberAdapter& operator=(TaskTeamMemberAdapter&&) = default; - KOKKOS_INLINE_FUNCTION ~TaskTeamMemberAdapter() = default; + KOKKOS_DEFAULTED_FUNCTION ~TaskTeamMemberAdapter() = default; //---------------------------------------- diff --git a/lib/kokkos/core/src/impl/Kokkos_Traits.hpp b/lib/kokkos/core/src/impl/Kokkos_Traits.hpp index 6f7e164baf..32e78b7f5f 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Traits.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Traits.hpp @@ -137,132 +137,6 @@ struct are_integral { }; //---------------------------------------------------------------------------- -/* C++11 conformal compile-time type traits utilities. - * Prefer to use C++11 when portably available. - */ -//---------------------------------------------------------------------------- -// C++11 Helpers: - -template -struct integral_constant { - // Declaration of 'static const' causes an unresolved linker symbol in debug - // static const T value = v ; - enum { value = T(v) }; - typedef T value_type; - typedef integral_constant type; - KOKKOS_INLINE_FUNCTION operator T() { return v; } -}; - -typedef integral_constant false_type; -typedef integral_constant true_type; - -//---------------------------------------------------------------------------- -// C++11 Type relationships: - -template -struct is_same : public false_type {}; -template -struct is_same : public true_type {}; - -//---------------------------------------------------------------------------- -// C++11 Type properties: - -template -struct is_const : public false_type {}; -template -struct is_const : public true_type {}; -template -struct is_const : public true_type {}; - -template -struct is_array : public false_type {}; -template -struct is_array : public true_type {}; -template -struct is_array : public true_type {}; - -//---------------------------------------------------------------------------- -// C++11 Type transformations: - -template -struct remove_const { - typedef T type; -}; -template -struct remove_const { - typedef T type; -}; -template -struct remove_const { - typedef T& type; -}; - -template -struct add_const { - typedef const T type; -}; -template -struct add_const { - typedef const T& type; -}; -template -struct add_const { - typedef const T type; -}; -template -struct add_const { - typedef const T& type; -}; - -template -struct remove_reference { - typedef T type; -}; -template -struct remove_reference { - typedef T type; -}; -template -struct remove_reference { - typedef const T type; -}; - -template -struct remove_extent { - typedef T type; -}; -template -struct remove_extent { - typedef T type; -}; -template -struct remove_extent { - typedef T type; -}; - -//---------------------------------------------------------------------------- -// C++11 Other type generators: - -template -struct condition { - typedef F type; -}; - -template -struct condition { - typedef T type; -}; - -template -struct enable_if; - -template -struct enable_if { - typedef T type; -}; - -//---------------------------------------------------------------------------- - } // namespace Impl } // namespace Kokkos @@ -280,19 +154,6 @@ struct enable_if_type { typedef T type; }; -//---------------------------------------------------------------------------- - -template -struct bool_ : public integral_constant {}; - -template -struct unsigned_ : public integral_constant {}; - -template -struct int_ : public integral_constant {}; - -typedef bool_ true_; -typedef bool_ false_; //---------------------------------------------------------------------------- // if_ @@ -302,10 +163,10 @@ struct if_c { typedef FalseType type; - typedef typename remove_const::type>::type - value_type; + typedef typename std::remove_const< + typename std::remove_reference::type>::type value_type; - typedef typename add_const::type const_value_type; + typedef typename std::add_const::type const_value_type; static KOKKOS_INLINE_FUNCTION const_value_type& select(const_value_type& v) { return v; @@ -337,10 +198,10 @@ struct if_c { typedef TrueType type; - typedef typename remove_const::type>::type - value_type; + typedef typename std::remove_const< + typename std::remove_reference::type>::type value_type; - typedef typename add_const::type const_value_type; + typedef typename std::add_const::type const_value_type; static KOKKOS_INLINE_FUNCTION const_value_type& select(const_value_type& v) { return v; @@ -387,50 +248,26 @@ struct if_ : public if_c {}; //---------------------------------------------------------------------------- -// Allows aliased types: template -struct is_integral - : public integral_constant< - bool, - (std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - - std::is_same::value || std::is_same::value || - std::is_same::value || std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value)> {}; -//---------------------------------------------------------------------------- - -template -struct is_label : public false_type {}; +struct is_label : public std::false_type {}; template <> -struct is_label : public true_type {}; +struct is_label : public std::true_type {}; template <> -struct is_label : public true_type {}; +struct is_label : public std::true_type {}; template -struct is_label : public true_type {}; +struct is_label : public std::true_type {}; template -struct is_label : public true_type {}; +struct is_label : public std::true_type {}; template <> -struct is_label : public true_type {}; +struct is_label : public std::true_type {}; template <> -struct is_label : public true_type {}; +struct is_label : public std::true_type {}; // These 'constexpr'functions can be used as // both regular functions and meta-function. @@ -515,20 +352,6 @@ struct integral_nonzero_constant { //---------------------------------------------------------------------------- -template -struct is_integral_constant : public false_ { - typedef void integral_type; - enum { integral_value = 0 }; -}; - -template -struct is_integral_constant> : public true_ { - typedef T integral_type; - enum { integral_value = v }; -}; - -//---------------------------------------------------------------------------- - template class TypeList; diff --git a/lib/kokkos/core/src/impl/Kokkos_VLAEmulation.hpp b/lib/kokkos/core/src/impl/Kokkos_VLAEmulation.hpp index 2746932878..9b90864199 100644 --- a/lib/kokkos/core/src/impl/Kokkos_VLAEmulation.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_VLAEmulation.hpp @@ -185,7 +185,7 @@ struct ObjectWithVLAEmulation { // Note: We can't do this at class scope because it unnecessarily requires // vla_value_type to be a complete type - static_assert(not std::is_abstract::value, + static_assert(!std::is_abstract::value, "Can't use abstract type with VLA emulation"); KOKKOS_EXPECTS(num_entries >= 0); diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp index 6123a608a7..119ad4eccf 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp @@ -338,7 +338,7 @@ class ViewMapping > { //---------------------------------------- - KOKKOS_INLINE_FUNCTION ~ViewMapping() {} + KOKKOS_DEFAULTED_FUNCTION ~ViewMapping() = default; KOKKOS_INLINE_FUNCTION ViewMapping() : m_impl_handle(), m_impl_offset(), m_stride(0) {} KOKKOS_INLINE_FUNCTION ViewMapping(const ViewMapping &rhs) @@ -349,7 +349,6 @@ class ViewMapping > { m_impl_handle = rhs.m_impl_handle; m_impl_offset = rhs.m_impl_offset; m_stride = rhs.m_stride; - ; return *this; } @@ -469,7 +468,7 @@ class ViewMapping< KOKKOS_INLINE_FUNCTION static void assign(DstType &dst, const SrcType &src, - const TrackType &src_track) { + const TrackType & /*src_track*/) { static_assert(is_assignable, "Can only convert to array_type"); typedef typename DstType::offset_type dst_offset_type; diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewCtor.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewCtor.hpp index 33c6e73f05..93a267ffa3 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewCtor.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewCtor.hpp @@ -238,7 +238,10 @@ struct ViewCtorProp : public ViewCtorProp... { /* Copy from a matching property subset */ template ViewCtorProp(ViewCtorProp const &arg) - : ViewCtorProp(((ViewCtorProp const &)arg))... {} + : ViewCtorProp( + static_cast const &>(arg))... { + (void)arg; + } }; } /* namespace Impl */ diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewLayoutTiled.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewLayoutTiled.hpp index 2071f931e3..27f4375e56 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewLayoutTiled.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewLayoutTiled.hpp @@ -601,39 +601,10 @@ struct ViewOffset< //---------------------------------------- -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION ~ViewOffset() {} - KOKKOS_INLINE_FUNCTION ViewOffset() {} - KOKKOS_INLINE_FUNCTION ViewOffset(const ViewOffset& rhs) - : m_dim(rhs.m_dim), - m_tile_N0(rhs.m_tile_N0), - m_tile_N1(rhs.m_tile_N1), - m_tile_N2(rhs.m_tile_N2), - m_tile_N3(rhs.m_tile_N3), - m_tile_N4(rhs.m_tile_N4), - m_tile_N5(rhs.m_tile_N5), - m_tile_N6(rhs.m_tile_N6), - m_tile_N7(rhs.m_tile_N7) {} - - KOKKOS_INLINE_FUNCTION ViewOffset& operator=(const ViewOffset& rhs) { - m_dim = rhs.m_dim; - m_tile_N0 = rhs.m_tile_N0; - m_tile_N1 = rhs.m_tile_N1; - m_tile_N2 = rhs.m_tile_N2; - m_tile_N3 = rhs.m_tile_N3; - m_tile_N4 = rhs.m_tile_N4; - m_tile_N5 = rhs.m_tile_N5; - m_tile_N6 = rhs.m_tile_N6; - m_tile_N7 = rhs.m_tile_N7; - return *this; - } - -#else - KOKKOS_INLINE_FUNCTION ~ViewOffset() = default; - KOKKOS_INLINE_FUNCTION ViewOffset() = default; - KOKKOS_INLINE_FUNCTION ViewOffset(const ViewOffset&) = default; - KOKKOS_INLINE_FUNCTION ViewOffset& operator=(const ViewOffset&) = default; -#endif + KOKKOS_DEFAULTED_FUNCTION ~ViewOffset() = default; + KOKKOS_DEFAULTED_FUNCTION ViewOffset() = default; + KOKKOS_DEFAULTED_FUNCTION ViewOffset(const ViewOffset&) = default; + KOKKOS_DEFAULTED_FUNCTION ViewOffset& operator=(const ViewOffset&) = default; template KOKKOS_INLINE_FUNCTION constexpr ViewOffset( diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp index f6dfacb4d8..a8dc1fb84a 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp @@ -252,7 +252,7 @@ template struct ViewDimensionJoin; template -struct ViewDimensionJoin, ViewDimension > { +struct ViewDimensionJoin, ViewDimension> { typedef ViewDimension type; }; @@ -263,7 +263,7 @@ struct ViewDimensionAssignable; template struct ViewDimensionAssignable, - ViewDimension > { + ViewDimension> { typedef ViewDimension dst; typedef ViewDimension src; @@ -327,18 +327,18 @@ struct is_integral_extent_type { }; template -struct is_integral_extent_type > { +struct is_integral_extent_type> { enum { value = std::is_integral::value ? 1 : 0 }; }; template -struct is_integral_extent_type > { +struct is_integral_extent_type> { enum { value = std::is_integral::value ? 1 : 0 }; }; // Assuming '2 == initializer_list::size()' template -struct is_integral_extent_type > { +struct is_integral_extent_type> { enum { value = std::is_integral::value ? 1 : 0 }; }; @@ -641,10 +641,10 @@ struct SubviewExtents { error(buf + n, buf_len - n, domain_rank + 1, range_rank + 1, dim, args...); } +#if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) template KOKKOS_FORCEINLINE_FUNCTION void error(const ViewDimension& dim, Args... args) const { -#if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) enum { LEN = 1024 }; char buffer[LEN]; @@ -652,10 +652,14 @@ struct SubviewExtents { error(buffer + n, LEN - n, 0, 0, dim, args...); Kokkos::Impl::throw_runtime_exception(std::string(buffer)); -#else - Kokkos::abort("Kokkos::subview bounds error"); -#endif } +#else + template + KOKKOS_FORCEINLINE_FUNCTION void error(const ViewDimension&, + Args...) const { + Kokkos::abort("Kokkos::subview bounds error"); + } +#endif #else @@ -726,18 +730,18 @@ template struct ViewDataType; template -struct ViewDataType > { +struct ViewDataType> { typedef T type; }; template -struct ViewDataType > { - typedef typename ViewDataType >::type type; +struct ViewDataType> { + typedef typename ViewDataType>::type type; }; template -struct ViewDataType > { - typedef typename ViewDataType >::type type[N]; +struct ViewDataType> { + typedef typename ViewDataType>::type type[N]; }; /**\brief Analysis of View data type. @@ -2740,7 +2744,7 @@ struct ViewValueFunctor; template struct ViewValueFunctor { - typedef Kokkos::RangePolicy PolicyType; + typedef Kokkos::RangePolicy> PolicyType; typedef typename ExecSpace::execution_space Exec; Exec space; @@ -2778,6 +2782,12 @@ struct ViewValueFunctor { : "Kokkos::View::initialization"), 0, &kpID); } +#endif +#ifdef KOKKOS_ENABLE_CUDA + if (std::is_same::value) { + Kokkos::Impl::cuda_prefetch_pointer(space, ptr, sizeof(ValueType) * n, + true); + } #endif const Kokkos::Impl::ParallelFor closure( *this, PolicyType(0, n)); @@ -2800,7 +2810,7 @@ struct ViewValueFunctor { template struct ViewValueFunctor { - typedef Kokkos::RangePolicy PolicyType; + typedef Kokkos::RangePolicy> PolicyType; ExecSpace space; ValueType* ptr; @@ -2825,6 +2835,12 @@ struct ViewValueFunctor { Kokkos::Profiling::beginParallelFor("Kokkos::View::initialization", 0, &kpID); } +#endif +#ifdef KOKKOS_ENABLE_CUDA + if (std::is_same::value) { + Kokkos::Impl::cuda_prefetch_pointer(space, ptr, sizeof(ValueType) * n, + true); + } #endif const Kokkos::Impl::ParallelFor closure( *this, PolicyType(0, n)); @@ -3069,7 +3085,7 @@ class ViewMapping< //---------------------------------------- - KOKKOS_INLINE_FUNCTION ~ViewMapping() {} + KOKKOS_DEFAULTED_FUNCTION ~ViewMapping() = default; KOKKOS_INLINE_FUNCTION ViewMapping() : m_impl_handle(), m_impl_offset() {} KOKKOS_INLINE_FUNCTION ViewMapping(const ViewMapping& rhs) : m_impl_handle(rhs.m_impl_handle), m_impl_offset(rhs.m_impl_offset) {} @@ -3493,7 +3509,7 @@ struct SubViewDataTypeImpl; /* base case */ template -struct SubViewDataTypeImpl > { +struct SubViewDataTypeImpl> { using type = ValueType; }; @@ -3503,16 +3519,17 @@ template ::type>::value>::type, - ValueType, Experimental::Extents, Integral, Args...> - : SubViewDataTypeImpl, - Args...> {}; + ValueType, Kokkos::Experimental::Extents, Integral, Args...> + : SubViewDataTypeImpl, Args...> {}; /* for ALL slice, subview has the same dimension */ template -struct SubViewDataTypeImpl, - ALL_t, Args...> +struct SubViewDataTypeImpl, ALL_t, + Args...> : SubViewDataTypeImpl::type, - Experimental::Extents, Args...> {}; + Kokkos::Experimental::Extents, Args...> {}; /* for pair-style slice, subview has dynamic dimension, since pair doesn't give * static sizes */ @@ -3522,10 +3539,10 @@ template struct SubViewDataTypeImpl< typename std::enable_if::value>::type, ValueType, - Experimental::Extents, PairLike, Args...> + Kokkos::Experimental::Extents, PairLike, Args...> : SubViewDataTypeImpl< void, typename make_all_extents_into_pointers::type*, - Experimental::Extents, Args...> {}; + Kokkos::Experimental::Extents, Args...> {}; template struct SubViewDataType : SubViewDataTypeImpl {}; diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp index f1227c2ab6..342927ef77 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp @@ -146,22 +146,10 @@ struct ViewOffset< //---------------------------------------- -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION ~ViewOffset() {} - KOKKOS_INLINE_FUNCTION ViewOffset() {} - KOKKOS_INLINE_FUNCTION ViewOffset(const ViewOffset& rhs) - : m_dim(rhs.m_dim), m_tile_N0(rhs.m_tile_N0) {} - KOKKOS_INLINE_FUNCTION ViewOffset& operator=(const ViewOffset& rhs) { - m_dim = rhs.m_dim; - m_tile_N0 = rhs.m_tile_N0; - return *this; - } -#else - KOKKOS_INLINE_FUNCTION ~ViewOffset() = default; - KOKKOS_INLINE_FUNCTION ViewOffset() = default; - KOKKOS_INLINE_FUNCTION ViewOffset(const ViewOffset&) = default; - KOKKOS_INLINE_FUNCTION ViewOffset& operator=(const ViewOffset&) = default; -#endif + KOKKOS_DEFAULTED_FUNCTION ~ViewOffset() = default; + KOKKOS_DEFAULTED_FUNCTION ViewOffset() = default; + KOKKOS_DEFAULTED_FUNCTION ViewOffset(const ViewOffset&) = default; + KOKKOS_DEFAULTED_FUNCTION ViewOffset& operator=(const ViewOffset&) = default; template KOKKOS_INLINE_FUNCTION constexpr ViewOffset( diff --git a/lib/kokkos/core/src/kokkos.pc.in b/lib/kokkos/core/src/kokkos.pc.in deleted file mode 100644 index 47786faefb..0000000000 --- a/lib/kokkos/core/src/kokkos.pc.in +++ /dev/null @@ -1,71 +0,0 @@ -# -# Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -# -# Under the terms of Contract DE-NA0003525 with NTESS, -# the U.S. Government retains certain rights in this software. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# 3. Neither the name of the Corporation nor the names of the -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# Questions? Contact Christian R. Trott (crtrott@sandia.gov) -# - -# Add the directory where kokkos.pc got installed to your PKG_CONFIG_PATH - -# Use this on commandline with: -# c++ `pkg-config --cflags --libs kokkos` -o myapp myapp.cpp - -# Use this in a Makefile: -# myapp: myapp.cpp -# $(CC) `pkg-config --cflags --libs kokkos` -o $@ $< - -# Use this in autotools: -# configure.ac: -# PKG_CHECK_MODULES([KOKKOS], [kokkos]) -# Makefile.am: -# myapp_CFLAGS = $(KOKKOS_CFLAGS) -# myapp_LDADD = $(KOKKOS_LIBS) - -# Use this in CMake: -# CMakeLists.txt: -# find_package(PkgConfig) -# pkg_check_modules(KOKKOS IMPORTED_TARGET kokkos) -# target_link_libraries( PkgConfig::KOKKOS) - -libdir=@CMAKE_INSTALL_FULL_LIBDIR@ -includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ - -Name: kokkos -Description: Kokkos C++ Performance Portability Programming EcoSystem -URL: https://github.com/kokkos -Version: @Kokkos_VERSION@ -Requires: -Libs: -L${libdir} -lkokkos @KOKKOS_EXTRA_LIBS_LIST@ @KOKKOS_LINK_FLAGS@ -Libs.private: -lm -Cflags: -I${includedir} @KOKKOS_CXXFLAGS@ diff --git a/lib/kokkos/core/unit_test/CMakeLists.txt b/lib/kokkos/core/unit_test/CMakeLists.txt index c0957e83a8..dec2f5e920 100644 --- a/lib/kokkos/core/unit_test/CMakeLists.txt +++ b/lib/kokkos/core/unit_test/CMakeLists.txt @@ -12,8 +12,38 @@ KOKKOS_ADD_TEST_LIBRARY( HEADERS ${GTEST_SOURCE_DIR}/gtest/gtest.h SOURCES ${GTEST_SOURCE_DIR}/gtest/gtest-all.cc ) -KOKKOS_TARGET_COMPILE_DEFINITIONS(kokkos_gtest PUBLIC "-DGTEST_HAS_PTHREAD=0") -KOKKOS_TARGET_INCLUDE_DIRECTORIES(kokkos_gtest PUBLIC ${GTEST_SOURCE_DIR}) +#These can be direct, no need for Tribits or Kokkos wrappers + +# WORKAROUND FOR HIPCC +IF(Kokkos_ENABLE_HIP) + TARGET_COMPILE_DEFINITIONS(kokkos_gtest PUBLIC "-DGTEST_HAS_PTHREAD=0 --amdgpu-target=gfx906") +ELSE() + TARGET_COMPILE_DEFINITIONS(kokkos_gtest PUBLIC "-DGTEST_HAS_PTHREAD=0") +ENDIF() + +TARGET_INCLUDE_DIRECTORIES(kokkos_gtest PUBLIC ${GTEST_SOURCE_DIR}) +#Gtest minimally requires C++11 +TARGET_COMPILE_FEATURES(kokkos_gtest PUBLIC cxx_std_11) + +# +# Define Incremental Testing Feature Levels +# Define Device name mappings (i.e. what comes after Kokkos:: for the ExecSpace) +# + +SET(KOKKOS_CUDA_FEATURE_LEVEL 999) +SET(KOKKOS_CUDA_NAME Cuda) +SET(KOKKOS_HIP_FEATURE_LEVEL 12) +SET(KOKKOS_HIP_NAME Experimental::HIP) +SET(KOKKOS_HPX_FEATURE_LEVEL 999) +SET(KOKKOS_HPX_NAME Experimental::HPX) +SET(KOKKOS_OPENMP_FEATURE_LEVEL 999) +SET(KOKKOS_OPENMP_NAME OpenMP) +SET(KOKKOS_OPENMPTARGET_FEATURE_LEVEL 10) +SET(KOKKOS_OPENMPTARGET_NAME Experimental::OpenMPTarget) +SET(KOKKOS_SERIAL_FEATURE_LEVEL 999) +SET(KOKKOS_SERIAL_NAME Serial) +SET(KOKKOS_THREADS_FEATURE_LEVEL 999) +SET(KOKKOS_THREADS_NAME Threads) # @@ -24,7 +54,7 @@ KOKKOS_TARGET_INCLUDE_DIRECTORIES(kokkos_gtest PUBLIC ${GTEST_SOURCE_DIR}) KOKKOS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) KOKKOS_INCLUDE_DIRECTORIES(REQUIRED_DURING_INSTALLATION_TESTING ${CMAKE_CURRENT_SOURCE_DIR}) -foreach(Tag Threads;Serial;OpenMP;Cuda;HPX) +foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;OpenMPTarget;HIP) # Because there is always an exception to the rule if(Tag STREQUAL "Threads") set(DEVICE "PTHREAD") @@ -46,6 +76,7 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX) ${dir}/Test${Tag}_AtomicOperations_complexfloat.cpp ${dir}/Test${Tag}_AtomicViews.cpp ${dir}/Test${Tag}_Atomics.cpp + ${dir}/Test${Tag}_Concepts.cpp ${dir}/Test${Tag}_Complex.cpp ${dir}/Test${Tag}_Crs.cpp ${dir}/Test${Tag}_DeepCopyAlignment.cpp @@ -59,6 +90,7 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX) ${dir}/Test${Tag}_MDRange_e.cpp ${dir}/Test${Tag}_Other.cpp ${dir}/Test${Tag}_RangePolicy.cpp + ${dir}/Test${Tag}_RangePolicyRequire.cpp ${dir}/Test${Tag}_Reductions.cpp ${dir}/Test${Tag}_Reducers_a.cpp ${dir}/Test${Tag}_Reducers_b.cpp @@ -104,6 +136,30 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX) ) endforeach() +if(Kokkos_ENABLE_OPENMPTARGET) + list(REMOVE_ITEM OpenMPTarget_SOURCES + openmptarget/TestOpenMPTarget_AtomicOperations_complexdouble.cpp + openmptarget/TestOpenMPTarget_MDRange_a.cpp + openmptarget/TestOpenMPTarget_MDRange_b.cpp + openmptarget/TestOpenMPTarget_MDRange_c.cpp + openmptarget/TestOpenMPTarget_MDRange_d.cpp + openmptarget/TestOpenMPTarget_MDRange_e.cpp + openmptarget/TestOpenMPTarget_Other.cpp + openmptarget/TestOpenMPTarget_Scan.cpp + openmptarget/TestOpenMPTarget_Team.cpp + openmptarget/TestOpenMPTarget_TeamScratch.cpp + openmptarget/TestOpenMPTarget_ViewAPI_e.cpp + openmptarget/TestOpenMPTarget_ViewMapping_subview.cpp + openmptarget/TestOpenMPTarget_ViewOfClass.cpp + ) +endif() + +if(Kokkos_ENABLE_HIP) + # FIXME Linktime error: undefined reference to + # Kokkos::Impl::ViewDimensin<0ul, ...>(unsigned int, ...) + list(REMOVE_ITEM Serial_SOURCES serial/TestSerial_ViewLayoutStrideAssignment.cpp) +endif() + if(Kokkos_ENABLE_SERIAL) KOKKOS_ADD_EXECUTABLE_AND_TEST( UnitTest_Serial @@ -150,42 +206,11 @@ if(Kokkos_ENABLE_HPX) ) endif() -if(Kokkos_ENABLE_QTHREADS) +if(Kokkos_ENABLE_OPENMPTARGET) KOKKOS_ADD_EXECUTABLE_AND_TEST( - UnitTest_Qthreads + UnitTest_OpenMPTarget SOURCES - UnitTestMainInit.cpp - qthreads/TestQthreads_Atomics.cpp - qthreads/TestQthreads_Complex.cpp - qthreads/TestQthreads_DeepCopyAlignment.cpp - qthreads/TestQthreads_Other.cpp - qthreads/TestQthreads_Reductions.cpp - qthreads/TestQthreads_Reducers_a.cpp - qthreads/TestQthreads_Reducers_b.cpp - qthreads/TestQthreads_Reducers_c.cpp - qthreads/TestQthreads_Reducers_d.cpp - qthreads/TestQthreads_SubView_a.cpp - qthreads/TestQthreads_SubView_b.cpp - qthreads/TestQthreads_SubView_c01.cpp - qthreads/TestQthreads_SubView_c02.cpp - qthreads/TestQthreads_SubView_c03.cpp - qthreads/TestQthreads_SubView_c04.cpp - qthreads/TestQthreads_SubView_c05.cpp - qthreads/TestQthreads_SubView_c06.cpp - qthreads/TestQthreads_SubView_c07.cpp - qthreads/TestQthreads_SubView_c08.cpp - qthreads/TestQthreads_SubView_c09.cpp - qthreads/TestQthreads_SubView_c10.cpp - qthreads/TestQthreads_SubView_c11.cpp - qthreads/TestQthreads_SubView_c12.cpp - qthreads/TestQthreads_SubView_c13.cpp - qthreads/TestQthreads_Team.cpp - qthreads/TestQthreads_View_64bit.cpp - qthreads/TestQthreads_ViewAPI_a.cpp - qthreads/TestQthreads_ViewAPI_b.cpp - qthreads/TestQthreads_ViewAPI_c.cpp - qthreads/TestQthreads_ViewAPI_d.cpp - qthreads/TestQthreads_ViewAPI_e.cpp + ${OpenMPTarget_SOURCES} ) endif() @@ -233,22 +258,66 @@ if(Kokkos_ENABLE_CUDA) ) endif() +if(Kokkos_ENABLE_HIP) + # FIXME_HIP + LIST(REMOVE_ITEM HIP_SOURCES + hip/TestHIP_AtomicOperations_complexdouble.cpp + hip/TestHIP_Other.cpp + hip/TestHIP_Reductions_DeviceView.cpp + hip/TestHIP_Team.cpp + hip/TestHIP_TeamReductionScan.cpp + hip/TestHIP_TeamScratch.cpp + hip/TestHIP_TeamTeamSize.cpp + hip/TestHIP_TeamVectorRange.cpp + hip/TestHIP_UniqueToken.cpp + hip/TestHIP_ViewAPI_a.cpp + hip/TestHIP_ViewAPI_b.cpp + hip/TestHIP_ViewAPI_e.cpp + hip/TestHIP_ViewLayoutStrideAssignment.cpp + hip/TestHIP_WorkGraph.cpp + ) + + KOKKOS_ADD_EXECUTABLE_AND_TEST( + UnitTest_HIP + SOURCES + ${HIP_SOURCES} + hip/TestHIPHostPinned_ViewAPI_a.cpp + hip/TestHIPHostPinned_ViewAPI_b.cpp + hip/TestHIPHostPinned_ViewAPI_c.cpp + hip/TestHIPHostPinned_ViewAPI_d.cpp + hip/TestHIPHostPinned_ViewAPI_e.cpp + hip/TestHIPHostPinned_ViewCopy.cpp + hip/TestHIPHostPinned_ViewMapping_a.cpp + hip/TestHIPHostPinned_ViewMapping_b.cpp + hip/TestHIPHostPinned_ViewMapping_subview.cpp + ) + KOKKOS_ADD_EXECUTABLE_AND_TEST( + UnitTest_HIPInterOpInit + SOURCES + UnitTestMain.cpp + hip/TestHIP_InterOp_Init.cpp + ) +endif() + +SET(DEFAULT_DEVICE_SOURCES + UnitTestMainInit.cpp + default/TestDefaultDeviceType.cpp + default/TestDefaultDeviceType_a1.cpp + default/TestDefaultDeviceType_b1.cpp + default/TestDefaultDeviceType_c1.cpp + default/TestDefaultDeviceType_a2.cpp + default/TestDefaultDeviceType_b2.cpp + default/TestDefaultDeviceType_c2.cpp + default/TestDefaultDeviceType_a3.cpp + default/TestDefaultDeviceType_b3.cpp + default/TestDefaultDeviceType_c3.cpp + default/TestDefaultDeviceType_d.cpp + default/TestDefaultDeviceTypeResize.cpp +) + KOKKOS_ADD_EXECUTABLE_AND_TEST( UnitTest_Default - SOURCES - UnitTestMainInit.cpp - default/TestDefaultDeviceType.cpp - default/TestDefaultDeviceType_a1.cpp - default/TestDefaultDeviceType_b1.cpp - default/TestDefaultDeviceType_c1.cpp - default/TestDefaultDeviceType_a2.cpp - default/TestDefaultDeviceType_b2.cpp - default/TestDefaultDeviceType_c2.cpp - default/TestDefaultDeviceType_a3.cpp - default/TestDefaultDeviceType_b3.cpp - default/TestDefaultDeviceType_c3.cpp - default/TestDefaultDeviceType_d.cpp - default/TestDefaultDeviceTypeResize.cpp + SOURCES ${DEFAULT_DEVICE_SOURCES} ) KOKKOS_ADD_EXECUTABLE_AND_TEST( @@ -275,6 +344,7 @@ KOKKOS_ADD_ADVANCED_TEST( UnitTest_PushFinalizeHook_terminate ALWAYS_FAIL_ON_ZERO_RETURN ) +if(NOT KOKKOS_HAS_TRILINOS) KOKKOS_ADD_TEST_EXECUTABLE( StackTraceTestExec SOURCES @@ -287,20 +357,9 @@ KOKKOS_ADD_TEST_EXECUTABLE( ) # We need -rdynamic on GNU platforms for the stacktrace functionality # to work correctly with shared libraries -if(NOT KOKKOS_HAS_TRILINOS) -SET_PROPERTY(TARGET StackTraceTestExec PROPERTY ENABLE_EXPORTS 1) +KOKKOS_SET_EXE_PROPERTY(StackTraceTestExec ENABLE_EXPORTS ON) -KOKKOS_ADD_TEST( NAME UnitTest_StackTraceTest_normal - EXE StackTraceTestExec - FAIL_REGULAR_EXPRESSION "FAILED" - ) - -KOKKOS_ADD_TEST( NAME UnitTest_StackTraceTest_terminate - EXE StackTraceTestExec - FAIL_REGULAR_EXPRESSION "FAILED" - ) - -KOKKOS_ADD_TEST( NAME UnitTest_StackTraceTest_generic_term +KOKKOS_ADD_TEST( NAME UnitTest_StackTraceTest EXE StackTraceTestExec FAIL_REGULAR_EXPRESSION "FAILED" ) @@ -325,5 +384,52 @@ KOKKOS_ADD_EXECUTABLE_AND_TEST( SOURCES UnitTestMain.cpp TestHostBarrier.cpp ) +FUNCTION (KOKKOS_ADD_INCREMENTAL_TEST DEVICE) + KOKKOS_OPTION( ${DEVICE}_EXCLUDE_TESTS "" STRING "Incremental test exclude list" ) + # Add unit test main + SET(${DEVICE}_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/UnitTestMainInit.cpp) + # Iterate over incremental tests in directory + APPEND_GLOB(INCREMENTAL_FILE_LIST ${CMAKE_CURRENT_SOURCE_DIR}/incremental/*.hpp) + + SET(DEVICE_NAME ${KOKKOS_${DEVICE}_NAME}) + FOREACH (CURRENT_FILE_PATH ${INCREMENTAL_FILE_LIST}) + GET_FILENAME_COMPONENT( CURRENT_FILE_NAME ${CURRENT_FILE_PATH} NAME ) + STRING (REPLACE ".hpp" "" CURRENT_TEST_NAME ${CURRENT_FILE_NAME}) + IF (NOT CURRENT_TEST_NAME IN_LIST Kokkos_${DEVICE}_EXCLUDE_TESTS) + SET (CURRENT_TEST_OUTPUT_FILENAME ${CURRENT_TEST_NAME}_${DEVICE}) + FILE( STRINGS ${CURRENT_FILE_PATH} CURRENT_REQUIRED_FEATURE_LINE REGEX "Kokkos_Feature_Level_Required" ) + # From each test get level implementation required + STRING( REGEX REPLACE ".*Kokkos_Feature_Level_Required:" "" CURRENT_REQUIRED_FEATURE_LEVEL ${CURRENT_REQUIRED_FEATURE_LINE} ) + # Cross-reference list of dependencies with selected feature list > matching feature test files are added to test applications + IF (KOKKOS_${DEVICE}_FEATURE_LEVEL GREATER_EQUAL CURRENT_REQUIRED_FEATURE_LEVEL) + CONFIGURE_FILE (IncrementalTest.cpp.in ${CMAKE_BINARY_DIR}/core/unit_test/generated/${CURRENT_TEST_OUTPUT_FILENAME}.cpp ) + SET(${DEVICE}_SOURCES ${${DEVICE}_SOURCES}; ${CMAKE_BINARY_DIR}/core/unit_test/generated/${CURRENT_TEST_OUTPUT_FILENAME}.cpp) + ENDIF() + ENDIF() + ENDFOREACH() + + STRING(TOUPPER ${DEVICE} UC_DEVICE) + + KOKKOS_OPTION ( + ENABLE_${UC_DEVICE} ON BOOL "ENABLE ${UC_DEVICE}" + ) + + KOKKOS_ADD_EXECUTABLE_AND_TEST( + IncrementalTest_${DEVICE} + SOURCES ${${DEVICE}_SOURCES} + ) + + TARGET_INCLUDE_DIRECTORIES( ${PACKAGE_NAME}_IncrementalTest_${DEVICE} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/incremental ) + +ENDFUNCTION() + +FOREACH (DEVICE ${KOKKOS_ENABLED_DEVICES}) + KOKKOS_ADD_INCREMENTAL_TEST(${DEVICE}) +ENDFOREACH() + +KOKKOS_ADD_EXECUTABLE_AND_TEST( + UnitTest_CTestDevice + SOURCES UnitTestMain.cpp TestCTestDevice.cpp +) diff --git a/lib/kokkos/core/unit_test/IncrementalTest.cpp.in b/lib/kokkos/core/unit_test/IncrementalTest.cpp.in new file mode 100644 index 0000000000..e4358efe9d --- /dev/null +++ b/lib/kokkos/core/unit_test/IncrementalTest.cpp.in @@ -0,0 +1,58 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#ifndef KOKKOS_TEST_@BACK_END_NAME@_@CURRENT_TEST_NAME@ +#define KOKKOS_TEST_@BACK_END_NAME@_@CURRENT_TEST_NAME@ + +#include +#include + +#define TEST_CATEGORY @DEVICE@ +#define TEST_EXECSPACE Kokkos::@DEVICE_NAME@ + +#if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) +#include <@CURRENT_FILE_NAME@> +#endif + +#endif + + diff --git a/lib/kokkos/core/unit_test/Makefile b/lib/kokkos/core/unit_test/Makefile index cf945bd718..1a386adc4a 100644 --- a/lib/kokkos/core/unit_test/Makefile +++ b/lib/kokkos/core/unit_test/Makefile @@ -8,7 +8,7 @@ vpath %.cpp ${KOKKOS_PATH}/core/unit_test/serial vpath %.cpp ${KOKKOS_PATH}/core/unit_test/threads vpath %.cpp ${KOKKOS_PATH}/core/unit_test/openmp vpath %.cpp ${KOKKOS_PATH}/core/unit_test/openmptarget -vpath %.cpp ${KOKKOS_PATH}/core/unit_test/qthreads +vpath %.cpp ${KOKKOS_PATH}/core/unit_test/hip vpath %.cpp ${KOKKOS_PATH}/core/unit_test/hpx vpath %.cpp ${KOKKOS_PATH}/core/unit_test/cuda vpath %.cpp ${KOKKOS_PATH}/core/unit_test/rocm @@ -67,7 +67,7 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) OBJ_CUDA = UnitTestMainInit.o gtest-all.o OBJ_CUDA += TestCuda_Init.o OBJ_CUDA += TestCuda_SharedAlloc.o TestCudaUVM_SharedAlloc.o TestCudaHostPinned_SharedAlloc.o - OBJ_CUDA += TestCuda_RangePolicy.o + OBJ_CUDA += TestCuda_RangePolicy.o TestCuda_RangePolicyRequire.o OBJ_CUDA += TestCuda_ViewAPI_a.o TestCuda_ViewAPI_b.o TestCuda_ViewAPI_c.o TestCuda_ViewAPI_d.o TestCuda_ViewAPI_e.o OBJ_CUDA += TestCuda_DeepCopyAlignment.o OBJ_CUDA += TestCuda_ViewMapping_a.o TestCuda_ViewMapping_b.o TestCuda_ViewMapping_subview.o TestCuda_ViewResize.o TestCuda_ViewLayoutStrideAssignment.o @@ -103,7 +103,7 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) OBJ_CUDA += TestCuda_LocalDeepCopy.o OBJ_CUDA += TestCuda_DebugSerialExecution.o OBJ_CUDA += TestCuda_DebugPinUVMSpace.o - + TARGETS += KokkosCore_UnitTest_Cuda TARGETS += KokkosCore_UnitTest_CudaInterOpInit TARGETS += KokkosCore_UnitTest_CudaInterOpStreams @@ -166,7 +166,7 @@ ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) OBJ_THREADS = UnitTestMainInit.o gtest-all.o OBJ_THREADS += TestThreads_Init.o OBJ_THREADS += TestThreads_SharedAlloc.o - OBJ_THREADS += TestThreads_RangePolicy.o + OBJ_THREADS += TestThreads_RangePolicy.o TestThreads_RangePolicyRequire.o OBJ_THREADS += TestThreads_View_64bit.o OBJ_THREADS += TestThreads_ViewAPI_a.o TestThreads_ViewAPI_b.o TestThreads_ViewAPI_c.o TestThreads_ViewAPI_d.o TestThreads_ViewAPI_e.o OBJ_THREADS += TestThreads_DeepCopyAlignment.o @@ -201,7 +201,7 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) OBJ_OPENMP = UnitTestMainInit.o gtest-all.o OBJ_OPENMP += TestOpenMP_Init.o OBJ_OPENMP += TestOpenMP_SharedAlloc.o - OBJ_OPENMP += TestOpenMP_RangePolicy.o + OBJ_OPENMP += TestOpenMP_RangePolicy.o TestOpenMP_RangePolicyRequire.o OBJ_OPENMP += TestOpenMP_View_64bit.o OBJ_OPENMP += TestOpenMP_ViewAPI_a.o TestOpenMP_ViewAPI_b.o TestOpenMP_ViewAPI_c.o TestOpenMP_ViewAPI_d.o TestOpenMP_ViewAPI_e.o OBJ_OPENMP += TestOpenMP_DeepCopyAlignment.o @@ -242,11 +242,12 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) OBJ_OPENMPTARGET += TestOpenMPTarget_Init.o #OBJ_OPENMPTARGET += TestOpenMPTarget_SharedAlloc.o OBJ_OPENMPTARGET += TestOpenMPTarget_RangePolicy.o - OBJ_OPENMPTARGET += TestOpenMPTarget_ViewAPI_a.o TestOpenMPTarget_ViewAPI_b.o TestOpenMPTarget_ViewAPI_c.o TestOpenMPTarget_ViewAPI_d.o TestOpenMPTarget_ViewAPI_e.o #Some commented out code + OBJ_OPENMPTARGET += TestOpenMPTarget_ViewAPI_a.o TestOpenMPTarget_ViewAPI_b.o TestOpenMPTarget_ViewAPI_c.o TestOpenMPTarget_ViewAPI_d.o #Some commented out code + #OBJ_OPENMPTARGET += TestOpenMPTarget_ViewAPI_e.o OBJ_OPENMPTARGET += TestOpenMPTarget_DeepCopyAlignment.o OBJ_OPENMPTARGET += TestOpenMPTarget_ViewMapping_a.o OBJ_OPENMPTARGET += TestOpenMPTarget_ViewMapping_b.o - OBJ_OPENMPTARGET += TestOpenMPTarget_ViewMapping_subview.o + #OBJ_OPENMPTARGET += TestOpenMPTarget_ViewMapping_subview.o #OBJ_OPENMPTARGET += TestOpenMPTarget_ViewOfClass.o OBJ_OPENMPTARGET += TestOpenMPTarget_SubView_a.o TestOpenMPTarget_SubView_b.o #The following subview tests need something like UVM: @@ -255,12 +256,13 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) #OBJ_OPENMPTARGET += TestOpenMPTarget_SubView_c07.o TestOpenMPTarget_SubView_c08.o TestOpenMPTarget_SubView_c09.o #OBJ_OPENMPTARGET += TestOpenMPTarget_SubView_c10.o TestOpenMPTarget_SubView_c11.o TestOpenMPTarget_SubView_c12.o #OBJ_OPENMPTARGET += TestOpenMPTarget_Reductions.o # Need custom reductions - #OBJ_OPENMPTARGET += TestOpenMPTarget_Reducers_a.o TestOpenMPTarget_Reducers_b.o TestOpenMPTarget_Reducers_c.o TestOpenMPTarget_Reducers_d.o + OBJ_OPENMPTARGET += TestOpenMPTarget_Reducers_a.o TestOpenMPTarget_Reducers_b.o TestOpenMPTarget_Reducers_c.o TestOpenMPTarget_Reducers_d.o #OBJ_OPENMPTARGET += TestOpenMPTarget_Scan.o OBJ_OPENMPTARGET += TestOpenMPTarget_Complex.o OBJ_OPENMPTARGET += TestOpenMPTarget_AtomicOperations_int.o TestOpenMPTarget_AtomicOperations_unsignedint.o TestOpenMPTarget_AtomicOperations_longint.o OBJ_OPENMPTARGET += TestOpenMPTarget_AtomicOperations_unsignedlongint.o TestOpenMPTarget_AtomicOperations_longlongint.o TestOpenMPTarget_AtomicOperations_double.o TestOpenMPTarget_AtomicOperations_float.o - OBJ_OPENMPTARGET += TestOpenMPTarget_AtomicOperations_complexfloat.o TestOpenMPTarget_AtomicOperations_complexdouble.o + #OBJ_OPENMPTARGET += TestOpenMPTarget_AtomicOperations_complexfloat.o + #OBJ_OPENMPTARGET += TestOpenMPTarget_AtomicOperations_complexdouble.o OBJ_OPENMPTARGET += TestOpenMPTarget_AtomicViews.o OBJ_OPENMPTARGET += TestOpenMPTarget_Atomics.o # Commented Out Arbitrary Type Atomics #OBJ_OPENMPTARGET += TestOpenMPTarget_Team.o # There is still a static function in this @@ -275,28 +277,26 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) TEST_TARGETS += test-openmptarget endif -ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 1) - OBJ_QTHREADS = TestQthreads_Other.o TestQthreads_Reductions.o TestQthreads_Atomics.o TestQthreads_Team.o - OBJ_QTHREADS += TestQthreads_SubView_a.o TestQthreads_SubView_b.o - OBJ_QTHREADS += TestQthreads_SubView_c01.o TestQthreads_SubView_c02.o TestQthreads_SubView_c03.o - OBJ_QTHREADS += TestQthreads_SubView_c04.o TestQthreads_SubView_c05.o TestQthreads_SubView_c06.o - OBJ_QTHREADS += TestQthreads_SubView_c07.o TestQthreads_SubView_c08.o TestQthreads_SubView_c09.o - OBJ_QTHREADS += TestQthreads_SubView_c10.o TestQthreads_SubView_c11.o TestQthreads_SubView_c12.o - OBJ_QTHREADS += TestQthreads_ViewAPI_a.o TestQthreads_ViewAPI_b.o TestQthreads_ViewAPI_c.o TestQthreads_ViewAPI_d.o TestQthreads_ViewAPI_e.o UnitTestMain.o gtest-all.o - TARGETS += KokkosCore_UnitTest_Qthreads +ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) + OBJ_HIP = UnitTestMainInit.o gtest-all.o + OBJ_HIP += TestHIP_Init.o + OBJ_HIP += TestHIP_Reducers_a.o TestHIP_Reducers_b.o TestHIP_Reducers_c.o TestHIP_Reducers_d.o + OBJ_HIP += TestHIP_Reductions.o + OBJ_HIP += TestHIP_MDRange_a.o TestHIP_MDRange_b.o TestHIP_MDRange_c.o TestHIP_MDRange_d.o TestHIP_MDRange_e.o + OBJ_HIP += TestHIP_Spaces.o + OBJ_HIP += TestHIPHostPinned_ViewCopy.o TestHIPHostPinned_ViewAPI_a.o TestHIPHostPinned_ViewAPI_b.o TestHIPHostPinned_ViewAPI_c.o TestHIPHostPinned_ViewAPI_d.o TestHIPHostPinned_ViewAPI_e.o + OBJ_HIP += TestHIPHostPinned_ViewMapping_a.o TestHIPHostPinned_ViewMapping_b.o TestHIPHostPinned_ViewMapping_subview.o - OBJ_QTHREADS2 = UnitTestMainInit.o gtest-all.o - OBJ_QTHREADS2 += TestQthreads_Complex.o - TARGETS += KokkosCore_UnitTest_Qthreads2 + TARGETS += KokkosCore_UnitTest_HIP - TEST_TARGETS += test-qthreads + TEST_TARGETS += test-hip endif ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) OBJ_HPX = UnitTestMainInit.o gtest-all.o OBJ_HPX += TestHPX_Init.o OBJ_HPX += TestHPX_SharedAlloc.o - OBJ_HPX += TestHPX_RangePolicy.o + OBJ_HPX += TestHPX_RangePolicy.o TestHPX_RangePolicyRequire.o OBJ_HPX += TestHPX_View_64bit.o OBJ_HPX += TestHPX_ViewAPI_a.o TestHPX_ViewAPI_b.o TestHPX_ViewAPI_c.o TestHPX_ViewAPI_d.o TestHPX_ViewAPI_e.o OBJ_HPX += TestHPX_ViewMapping_a.o TestHPX_ViewMapping_b.o TestHPX_ViewMapping_subview.o TestHPX_ViewResize.o @@ -335,7 +335,7 @@ ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) OBJ_SERIAL = UnitTestMainInit.o gtest-all.o OBJ_SERIAL += TestSerial_Init.o OBJ_SERIAL += TestSerial_SharedAlloc.o - OBJ_SERIAL += TestSerial_RangePolicy.o + OBJ_SERIAL += TestSerial_RangePolicy.o TestSerial_RangePolicyRequire.o OBJ_SERIAL += TestSerial_View_64bit.o OBJ_SERIAL += TestSerial_ViewAPI_a.o TestSerial_ViewAPI_b.o TestSerial_ViewAPI_c.o TestSerial_ViewAPI_d.o TestSerial_ViewAPI_e.o OBJ_SERIAL += TestSerial_DeepCopyAlignment.o @@ -414,7 +414,7 @@ TEST_TARGETS += ${INITTESTS_TEST_TARGETS} KokkosCore_UnitTest_Cuda: $(OBJ_CUDA) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_CUDA) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_Cuda - + KokkosCore_UnitTest_CudaInterOpInit: UnitTestMain.o gtest-all.o TestCuda_InterOp_Init.o $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) UnitTestMain.o gtest-all.o TestCuda_InterOp_Init.o $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_CudaInterOpInit KokkosCore_UnitTest_CudaInterOpStreams: UnitTestMain.o gtest-all.o TestCuda_InterOp_Streams.o $(KOKKOS_LINK_DEPENDS) @@ -438,11 +438,8 @@ KokkosCore_UnitTest_OpenMPTarget: $(OBJ_OPENMPTARGET) $(KOKKOS_LINK_DEPENDS) KokkosCore_UnitTest_Serial: $(OBJ_SERIAL) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_SERIAL) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_Serial -KokkosCore_UnitTest_Qthreads: $(OBJ_QTHREADS) $(KOKKOS_LINK_DEPENDS) - $(LINK) $(EXTRA_PATH) $(OBJ_QTHREADS) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_Qthreads - -KokkosCore_UnitTest_Qthreads2: $(OBJ_QTHREADS2) $(KOKKOS_LINK_DEPENDS) - $(LINK) $(EXTRA_PATH) $(OBJ_QTHREADS2) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_Qthreads2 +KokkosCore_UnitTest_HIP: $(OBJ_HIP) $(KOKKOS_LINK_DEPENDS) + $(LINK) $(EXTRA_PATH) $(OBJ_HIP) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_HIP KokkosCore_UnitTest_HPX: $(OBJ_HPX) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_HPX) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_HPX @@ -496,9 +493,8 @@ test-openmptarget: KokkosCore_UnitTest_OpenMPTarget test-serial: KokkosCore_UnitTest_Serial ./KokkosCore_UnitTest_Serial -test-qthreads: KokkosCore_UnitTest_Qthreads KokkosCore_UnitTest_Qthreads2 - ./KokkosCore_UnitTest_Qthreads - ./KokkosCore_UnitTest_Qthreads2 +test-hip: KokkosCore_UnitTest_HIP + ./KokkosCore_UnitTest_HIP test-hpx: KokkosCore_UnitTest_HPX ./KokkosCore_UnitTest_HPX diff --git a/lib/kokkos/core/unit_test/TestAtomic.hpp b/lib/kokkos/core/unit_test/TestAtomic.hpp index a72a179e02..809f9dc01f 100644 --- a/lib/kokkos/core/unit_test/TestAtomic.hpp +++ b/lib/kokkos/core/unit_test/TestAtomic.hpp @@ -527,7 +527,19 @@ TEST(TEST_CATEGORY, atomics) { ASSERT_TRUE((TestAtomic::Loop(100, 3))); #ifndef KOKKOS_ENABLE_OPENMPTARGET -#ifndef KOKKOS_ENABLE_ROCM // ROCM doesn't yet support atomics for >64bit types + ASSERT_TRUE((TestAtomic::Loop, TEST_EXECSPACE>(1, 1))); + ASSERT_TRUE((TestAtomic::Loop, TEST_EXECSPACE>(1, 2))); + ASSERT_TRUE((TestAtomic::Loop, TEST_EXECSPACE>(1, 3))); + + ASSERT_TRUE( + (TestAtomic::Loop, TEST_EXECSPACE>(100, 1))); + ASSERT_TRUE( + (TestAtomic::Loop, TEST_EXECSPACE>(100, 2))); + ASSERT_TRUE( + (TestAtomic::Loop, TEST_EXECSPACE>(100, 3))); + + // FIXME_HIP HIP doesn't yet support atomics for >64bit types properly +#ifndef KOKKOS_ENABLE_HIP ASSERT_TRUE( (TestAtomic::Loop, TEST_EXECSPACE>(1, 1))); ASSERT_TRUE( @@ -542,17 +554,8 @@ TEST(TEST_CATEGORY, atomics) { ASSERT_TRUE( (TestAtomic::Loop, TEST_EXECSPACE>(100, 3))); - ASSERT_TRUE((TestAtomic::Loop, TEST_EXECSPACE>(1, 1))); - ASSERT_TRUE((TestAtomic::Loop, TEST_EXECSPACE>(1, 2))); - ASSERT_TRUE((TestAtomic::Loop, TEST_EXECSPACE>(1, 3))); - - ASSERT_TRUE( - (TestAtomic::Loop, TEST_EXECSPACE>(100, 1))); - ASSERT_TRUE( - (TestAtomic::Loop, TEST_EXECSPACE>(100, 2))); - ASSERT_TRUE( - (TestAtomic::Loop, TEST_EXECSPACE>(100, 3))); - +// WORKAROUND MSVC +#ifndef _WIN32 ASSERT_TRUE( (TestAtomic::Loop, TEST_EXECSPACE>(100, 1))); ASSERT_TRUE( @@ -561,6 +564,7 @@ TEST(TEST_CATEGORY, atomics) { (TestAtomic::Loop, TEST_EXECSPACE>(100, 3))); #endif #endif +#endif } } // namespace Test diff --git a/lib/kokkos/core/unit_test/TestAtomicViews.hpp b/lib/kokkos/core/unit_test/TestAtomicViews.hpp index d7a45dc40f..109598e8c6 100644 --- a/lib/kokkos/core/unit_test/TestAtomicViews.hpp +++ b/lib/kokkos/core/unit_test/TestAtomicViews.hpp @@ -97,8 +97,8 @@ struct TestViewOperator_LeftAndRight { right_view right; stride_view left_stride; stride_view right_stride; - long left_alloc; - long right_alloc; + int64_t left_alloc; + int64_t right_alloc; TestViewOperator_LeftAndRight() : left("left"), @@ -255,11 +255,11 @@ class TestAtomicViewAPI { ASSERT_EQ(ax.use_count(), size_t(4)); ASSERT_EQ(const_ax.use_count(), ax.use_count()); - ASSERT_FALSE(ax.data() == 0); - ASSERT_FALSE(const_ax.data() == 0); // referenceable ptr - ASSERT_FALSE(unmanaged_ax.data() == 0); - ASSERT_FALSE(unmanaged_ax_from_ptr_dx.data() == 0); - ASSERT_FALSE(ay.data() == 0); + ASSERT_FALSE(ax.data() == nullptr); + ASSERT_FALSE(const_ax.data() == nullptr); // referenceable ptr + ASSERT_FALSE(unmanaged_ax.data() == nullptr); + ASSERT_FALSE(unmanaged_ax_from_ptr_dx.data() == nullptr); + ASSERT_FALSE(ay.data() == nullptr); // ASSERT_NE( ax, ay ); // Above test results in following runtime error from gtest: // Expected: (ax) != (ay), actual: 32-byte object <30-01 D0-A0 D8-7F @@ -318,13 +318,13 @@ struct InitFunctor_Seq { typedef Kokkos::View view_type; view_type input; - const long length; + const int64_t length; - InitFunctor_Seq(view_type& input_, const long length_) + InitFunctor_Seq(view_type& input_, const int64_t length_) : input(input_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { input(i) = (T)i; } @@ -336,15 +336,15 @@ struct InitFunctor_ModTimes { typedef Kokkos::View view_type; view_type input; - const long length; - const long remainder; + const int64_t length; + const int64_t remainder; - InitFunctor_ModTimes(view_type& input_, const long length_, - const long remainder_) + InitFunctor_ModTimes(view_type& input_, const int64_t length_, + const int64_t remainder_) : input(input_), length(length_), remainder(remainder_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % (remainder + 1) == remainder) { input(i) = (T)2; @@ -360,15 +360,15 @@ struct InitFunctor_ModShift { typedef Kokkos::View view_type; view_type input; - const long length; - const long remainder; + const int64_t length; + const int64_t remainder; - InitFunctor_ModShift(view_type& input_, const long length_, - const long remainder_) + InitFunctor_ModShift(view_type& input_, const int64_t length_, + const int64_t remainder_) : input(input_), length(length_), remainder(remainder_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % (remainder + 1) == remainder) { input(i) = 1; @@ -390,15 +390,15 @@ struct PlusEqualAtomicViewFunctor { view_type input; atomic_view_type even_odd_result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator PlusEqualAtomicViewFunctor(const view_type& input_, - view_type& even_odd_result_, const long length_) + view_type& even_odd_result_, const int64_t length_) : input(input_), even_odd_result(even_odd_result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % 2 == 0) { even_odd_result(0) += input(i); @@ -410,11 +410,11 @@ struct PlusEqualAtomicViewFunctor { }; template -T PlusEqualAtomicView(const long input_length) { +T PlusEqualAtomicView(const int64_t input_length) { typedef Kokkos::View view_type; typedef typename view_type::HostMirror host_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); view_type result_view("result_view", 2); @@ -435,19 +435,19 @@ T PlusEqualAtomicView(const long input_length) { } template -T PlusEqualAtomicViewCheck(const long input_length) { - const long N = input_length; +T PlusEqualAtomicViewCheck(const int64_t input_length) { + const int64_t N = input_length; T result[2]; if (N % 2 == 0) { - const long half_sum_end = (N / 2) - 1; - const long full_sum_end = N - 1; + const int64_t half_sum_end = (N / 2) - 1; + const int64_t full_sum_end = N - 1; result[0] = half_sum_end * (half_sum_end + 1) / 2; // Even sum. result[1] = (full_sum_end * (full_sum_end + 1) / 2) - result[0]; // Odd sum. } else { - const long half_sum_end = (T)(N / 2); - const long full_sum_end = N - 2; + const int64_t half_sum_end = (T)(N / 2); + const int64_t full_sum_end = N - 2; result[0] = half_sum_end * (half_sum_end - 1) / 2; // Even sum. result[1] = (full_sum_end * (full_sum_end - 1) / 2) - result[0]; // Odd sum. @@ -457,7 +457,7 @@ T PlusEqualAtomicViewCheck(const long input_length) { } template -bool PlusEqualAtomicViewTest(long input_length) { +bool PlusEqualAtomicViewTest(int64_t input_length) { T res = PlusEqualAtomicView(input_length); T resSerial = PlusEqualAtomicViewCheck(input_length); @@ -487,15 +487,16 @@ struct MinusEqualAtomicViewFunctor { view_type input; atomic_view_type even_odd_result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator. MinusEqualAtomicViewFunctor(const view_type& input_, - view_type& even_odd_result_, const long length_) + view_type& even_odd_result_, + const int64_t length_) : input(input_), even_odd_result(even_odd_result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % 2 == 0) { even_odd_result(0) -= input(i); @@ -507,11 +508,11 @@ struct MinusEqualAtomicViewFunctor { }; template -T MinusEqualAtomicView(const long input_length) { +T MinusEqualAtomicView(const int64_t input_length) { typedef Kokkos::View view_type; typedef typename view_type::HostMirror host_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); view_type result_view("result_view", 2); @@ -532,19 +533,19 @@ T MinusEqualAtomicView(const long input_length) { } template -T MinusEqualAtomicViewCheck(const long input_length) { - const long N = input_length; +T MinusEqualAtomicViewCheck(const int64_t input_length) { + const int64_t N = input_length; T result[2]; if (N % 2 == 0) { - const long half_sum_end = (N / 2) - 1; - const long full_sum_end = N - 1; + const int64_t half_sum_end = (N / 2) - 1; + const int64_t full_sum_end = N - 1; result[0] = -1 * (half_sum_end * (half_sum_end + 1) / 2); // Even sum. result[1] = -1 * ((full_sum_end * (full_sum_end + 1) / 2) + result[0]); // Odd sum. } else { - const long half_sum_end = (long)(N / 2); - const long full_sum_end = N - 2; + const int64_t half_sum_end = (int64_t)(N / 2); + const int64_t full_sum_end = N - 2; result[0] = -1 * (half_sum_end * (half_sum_end - 1) / 2); // Even sum. result[1] = -1 * ((full_sum_end * (full_sum_end - 1) / 2) + result[0]); // Odd sum. @@ -554,7 +555,7 @@ T MinusEqualAtomicViewCheck(const long input_length) { } template -bool MinusEqualAtomicViewTest(long input_length) { +bool MinusEqualAtomicViewTest(int64_t input_length) { T res = MinusEqualAtomicView(input_length); T resSerial = MinusEqualAtomicViewCheck(input_length); @@ -584,15 +585,15 @@ struct TimesEqualAtomicViewFunctor { view_type input; atomic_view_type result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator TimesEqualAtomicViewFunctor(const view_type& input_, view_type& result_, - const long length_) + const int64_t length_) : input(input_), result(result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length && i > 0) { result(0) *= (double)input(i); } @@ -600,11 +601,11 @@ struct TimesEqualAtomicViewFunctor { }; template -T TimesEqualAtomicView(const long input_length, const long remainder) { +T TimesEqualAtomicView(const int64_t input_length, const int64_t remainder) { typedef Kokkos::View view_type; typedef typename view_type::HostMirror host_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); view_type result_view("result_view", 1); @@ -626,12 +627,13 @@ T TimesEqualAtomicView(const long input_length, const long remainder) { } template -T TimesEqualAtomicViewCheck(const long input_length, const long remainder) { +T TimesEqualAtomicViewCheck(const int64_t input_length, + const int64_t remainder) { // Analytical result. - const long N = input_length; - T result = 1.0; + const int64_t N = input_length; + T result = 1.0; - for (long i = 2; i < N; ++i) { + for (int64_t i = 2; i < N; ++i) { if (i % (remainder + 1) == remainder) { result *= 2.0; } else { @@ -643,8 +645,8 @@ T TimesEqualAtomicViewCheck(const long input_length, const long remainder) { } template -bool TimesEqualAtomicViewTest(const long input_length) { - const long remainder = 23; +bool TimesEqualAtomicViewTest(const int64_t input_length) { + const int64_t remainder = 23; T res = TimesEqualAtomicView(input_length, remainder); T resSerial = TimesEqualAtomicViewCheck(input_length, remainder); @@ -675,15 +677,15 @@ struct DivEqualAtomicViewFunctor { view_type input; atomic_view_type result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator. DivEqualAtomicViewFunctor(const view_type& input_, scalar_view_type& result_, - const long length_) + const int64_t length_) : input(input_), result(result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length && i > 0) { result() /= (double)(input(i)); } @@ -691,12 +693,12 @@ struct DivEqualAtomicViewFunctor { }; template -T DivEqualAtomicView(const long input_length, const long remainder) { +T DivEqualAtomicView(const int64_t input_length, const int64_t remainder) { typedef Kokkos::View view_type; typedef Kokkos::View scalar_view_type; typedef typename scalar_view_type::HostMirror host_scalar_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); scalar_view_type result_view("result_view"); @@ -718,10 +720,10 @@ T DivEqualAtomicView(const long input_length, const long remainder) { } template -T DivEqualAtomicViewCheck(const long input_length, const long remainder) { - const long N = input_length; - T result = 12121212121.0; - for (long i = 2; i < N; ++i) { +T DivEqualAtomicViewCheck(const int64_t input_length, const int64_t remainder) { + const int64_t N = input_length; + T result = 12121212121.0; + for (int64_t i = 2; i < N; ++i) { if (i % (remainder + 1) == remainder) { result /= 1.0; } else { @@ -733,8 +735,8 @@ T DivEqualAtomicViewCheck(const long input_length, const long remainder) { } template -bool DivEqualAtomicViewTest(const long input_length) { - const long remainder = 23; +bool DivEqualAtomicViewTest(const int64_t input_length) { + const int64_t remainder = 23; T res = DivEqualAtomicView(input_length, remainder); T resSerial = DivEqualAtomicViewCheck(input_length, remainder); @@ -766,15 +768,15 @@ struct ModEqualAtomicViewFunctor { view_type input; atomic_view_type result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator. ModEqualAtomicViewFunctor(const view_type& input_, scalar_view_type& result_, - const long length_) + const int64_t length_) : input(input_), result(result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length && i > 0) { result() %= (double)(input(i)); } @@ -782,12 +784,12 @@ struct ModEqualAtomicViewFunctor { }; template -T ModEqualAtomicView(const long input_length, const long remainder) { +T ModEqualAtomicView(const int64_t input_length, const int64_t remainder) { typedef Kokkos::View view_type; typedef Kokkos::View scalar_view_type; typedef typename scalar_view_type::HostMirror host_scalar_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); scalar_view_type result_view("result_view"); @@ -809,10 +811,10 @@ T ModEqualAtomicView(const long input_length, const long remainder) { } template -T ModEqualAtomicViewCheck(const long input_length, const long remainder) { - const long N = input_length; - T result = 12121212121; - for (long i = 2; i < N; ++i) { +T ModEqualAtomicViewCheck(const int64_t input_length, const int64_t remainder) { + const int64_t N = input_length; + T result = 12121212121; + for (int64_t i = 2; i < N; ++i) { if (i % (remainder + 1) == remainder) { result %= 1; } else { @@ -824,12 +826,12 @@ T ModEqualAtomicViewCheck(const long input_length, const long remainder) { } template -bool ModEqualAtomicViewTest(const long input_length) { +bool ModEqualAtomicViewTest(const int64_t input_length) { static_assert(std::is_integral::value, "ModEqualAtomicView Error: Type must be integral type for this " "unit test"); - const long remainder = 23; + const int64_t remainder = 23; T res = ModEqualAtomicView(input_length, remainder); T resSerial = ModEqualAtomicViewCheck(input_length, remainder); @@ -861,16 +863,16 @@ struct RSEqualAtomicViewFunctor { const view_type input; atomic_view_type result; - const long length; - const long value; + const int64_t length; + const int64_t value; // Wrap the result view in an atomic view, use this for operator. RSEqualAtomicViewFunctor(const view_type& input_, result_view_type& result_, - const long& length_, const long& value_) + const int64_t& length_, const int64_t& value_) : input(input_), result(result_), length(length_), value(value_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % 4 == 0) { result(1, 0, 0, 0) >>= input(i); @@ -886,13 +888,13 @@ struct RSEqualAtomicViewFunctor { }; template -T RSEqualAtomicView(const long input_length, const long value, - const long remainder) { +T RSEqualAtomicView(const int64_t input_length, const int64_t value, + const int64_t remainder) { typedef Kokkos::View view_type; typedef Kokkos::View result_view_type; typedef typename result_view_type::HostMirror host_scalar_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); result_view_type result_view("result_view", 2, 2, 2, 2); @@ -918,8 +920,8 @@ T RSEqualAtomicView(const long input_length, const long value, } template -T RSEqualAtomicViewCheck(const long input_length, const long value, - const long remainder) { +T RSEqualAtomicViewCheck(const int64_t input_length, const int64_t value, + const int64_t remainder) { T result[4]; result[0] = value; result[1] = value; @@ -927,7 +929,7 @@ T RSEqualAtomicViewCheck(const long input_length, const long value, result[3] = value; T* input = new T[input_length]; - for (long i = 0; i < input_length; ++i) { + for (int64_t i = 0; i < input_length; ++i) { if (i % (remainder + 1) == remainder) { input[i] = 1; } else { @@ -935,7 +937,7 @@ T RSEqualAtomicViewCheck(const long input_length, const long value, } } - for (long i = 0; i < input_length; ++i) { + for (int64_t i = 0; i < input_length; ++i) { if (i % 4 == 0) { result[0] >>= input[i]; } else if (i % 4 == 1) { @@ -953,12 +955,12 @@ T RSEqualAtomicViewCheck(const long input_length, const long value, } template -bool RSEqualAtomicViewTest(const long input_length) { +bool RSEqualAtomicViewTest(const int64_t input_length) { static_assert(std::is_integral::value, "RSEqualAtomicViewTest: Must be integral type for test"); - const long remainder = 61042; // prime - 1 - const long value = 1073741825; // 2^30+1 + const int64_t remainder = 61042; // prime - 1 + const int64_t value = 1073741825; // 2^30+1 T res = RSEqualAtomicView(input_length, value, remainder); T resSerial = RSEqualAtomicViewCheck(input_length, value, remainder); @@ -989,16 +991,16 @@ struct LSEqualAtomicViewFunctor { view_type input; atomic_view_type result; - const long length; - const long value; + const int64_t length; + const int64_t value; // Wrap the result view in an atomic view, use this for operator. LSEqualAtomicViewFunctor(const view_type& input_, result_view_type& result_, - const long& length_, const long& value_) + const int64_t& length_, const int64_t& value_) : input(input_), result(result_), length(length_), value(value_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % 4 == 0) { result(1, 0, 0, 0) <<= input(i); @@ -1014,13 +1016,13 @@ struct LSEqualAtomicViewFunctor { }; template -T LSEqualAtomicView(const long input_length, const long value, - const long remainder) { +T LSEqualAtomicView(const int64_t input_length, const int64_t value, + const int64_t remainder) { typedef Kokkos::View view_type; typedef Kokkos::View result_view_type; typedef typename result_view_type::HostMirror host_scalar_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); result_view_type result_view("result_view", 2, 2, 2, 2); @@ -1046,8 +1048,8 @@ T LSEqualAtomicView(const long input_length, const long value, } template -T LSEqualAtomicViewCheck(const long input_length, const long value, - const long remainder) { +T LSEqualAtomicViewCheck(const int64_t input_length, const int64_t value, + const int64_t remainder) { T result[4]; result[0] = value; result[1] = value; @@ -1055,7 +1057,7 @@ T LSEqualAtomicViewCheck(const long input_length, const long value, result[3] = value; T* input = new T[input_length]; - for (long i = 0; i < input_length; ++i) { + for (int64_t i = 0; i < input_length; ++i) { if (i % (remainder + 1) == remainder) { input[i] = 1; } else { @@ -1063,7 +1065,7 @@ T LSEqualAtomicViewCheck(const long input_length, const long value, } } - for (long i = 0; i < input_length; ++i) { + for (int64_t i = 0; i < input_length; ++i) { if (i % 4 == 0) { result[0] <<= input[i]; } else if (i % 4 == 1) { @@ -1081,12 +1083,12 @@ T LSEqualAtomicViewCheck(const long input_length, const long value, } template -bool LSEqualAtomicViewTest(const long input_length) { +bool LSEqualAtomicViewTest(const int64_t input_length) { static_assert(std::is_integral::value, "LSEqualAtomicViewTest: Must be integral type for test"); - const long remainder = 61042; // prime - 1 - const long value = 1; // 2^30+1 + const int64_t remainder = 61042; // prime - 1 + const int64_t value = 1; // 2^30+1 T res = LSEqualAtomicView(input_length, value, remainder); T resSerial = LSEqualAtomicViewCheck(input_length, value, remainder); @@ -1116,15 +1118,15 @@ struct AndEqualAtomicViewFunctor { view_type input; atomic_view_type even_odd_result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator. AndEqualAtomicViewFunctor(const view_type& input_, - view_type& even_odd_result_, const long length_) + view_type& even_odd_result_, const int64_t length_) : input(input_), even_odd_result(even_odd_result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % 2 == 0) { even_odd_result(0) &= input(i); @@ -1136,11 +1138,11 @@ struct AndEqualAtomicViewFunctor { }; template -T AndEqualAtomicView(const long input_length) { +T AndEqualAtomicView(const int64_t input_length) { typedef Kokkos::View view_type; typedef typename view_type::HostMirror host_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); view_type result_view("result_view", 2); @@ -1162,10 +1164,10 @@ T AndEqualAtomicView(const long input_length) { } template -T AndEqualAtomicViewCheck(const long input_length) { - const long N = input_length; - T result[2] = {1}; - for (long i = 0; i < N; ++i) { +T AndEqualAtomicViewCheck(const int64_t input_length) { + const int64_t N = input_length; + T result[2] = {1}; + for (int64_t i = 0; i < N; ++i) { if (N % 2 == 0) { result[0] &= (T)i; } else { @@ -1177,7 +1179,7 @@ T AndEqualAtomicViewCheck(const long input_length) { } template -bool AndEqualAtomicViewTest(long input_length) { +bool AndEqualAtomicViewTest(int64_t input_length) { static_assert(std::is_integral::value, "AndEqualAtomicViewTest: Must be integral type for test"); @@ -1210,15 +1212,15 @@ struct OrEqualAtomicViewFunctor { view_type input; atomic_view_type even_odd_result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator. OrEqualAtomicViewFunctor(const view_type& input_, view_type& even_odd_result_, - const long length_) + const int64_t length_) : input(input_), even_odd_result(even_odd_result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % 2 == 0) { even_odd_result(0) |= input(i); @@ -1230,11 +1232,11 @@ struct OrEqualAtomicViewFunctor { }; template -T OrEqualAtomicView(const long input_length) { +T OrEqualAtomicView(const int64_t input_length) { typedef Kokkos::View view_type; typedef typename view_type::HostMirror host_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); view_type result_view("result_view", 2); @@ -1255,10 +1257,10 @@ T OrEqualAtomicView(const long input_length) { } template -T OrEqualAtomicViewCheck(const long input_length) { - const long N = input_length; - T result[2] = {0}; - for (long i = 0; i < N; ++i) { +T OrEqualAtomicViewCheck(const int64_t input_length) { + const int64_t N = input_length; + T result[2] = {0}; + for (int64_t i = 0; i < N; ++i) { if (i % 2 == 0) { result[0] |= (T)i; } else { @@ -1270,7 +1272,7 @@ T OrEqualAtomicViewCheck(const long input_length) { } template -bool OrEqualAtomicViewTest(long input_length) { +bool OrEqualAtomicViewTest(int64_t input_length) { static_assert(std::is_integral::value, "OrEqualAtomicViewTest: Must be integral type for test"); @@ -1303,15 +1305,15 @@ struct XOrEqualAtomicViewFunctor { view_type input; atomic_view_type even_odd_result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator. XOrEqualAtomicViewFunctor(const view_type& input_, - view_type& even_odd_result_, const long length_) + view_type& even_odd_result_, const int64_t length_) : input(input_), even_odd_result(even_odd_result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % 2 == 0) { even_odd_result(0) ^= input(i); @@ -1323,11 +1325,11 @@ struct XOrEqualAtomicViewFunctor { }; template -T XOrEqualAtomicView(const long input_length) { +T XOrEqualAtomicView(const int64_t input_length) { typedef Kokkos::View view_type; typedef typename view_type::HostMirror host_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); view_type result_view("result_view", 2); @@ -1348,10 +1350,10 @@ T XOrEqualAtomicView(const long input_length) { } template -T XOrEqualAtomicViewCheck(const long input_length) { - const long N = input_length; - T result[2] = {0}; - for (long i = 0; i < N; ++i) { +T XOrEqualAtomicViewCheck(const int64_t input_length) { + const int64_t N = input_length; + T result[2] = {0}; + for (int64_t i = 0; i < N; ++i) { if (i % 2 == 0) { result[0] ^= (T)i; } else { @@ -1363,7 +1365,7 @@ T XOrEqualAtomicViewCheck(const long input_length) { } template -bool XOrEqualAtomicViewTest(long input_length) { +bool XOrEqualAtomicViewTest(int64_t input_length) { static_assert(std::is_integral::value, "XOrEqualAtomicViewTest: Must be integral type for test"); @@ -1426,38 +1428,38 @@ bool AtomicViewsTestNonIntegralType(const int length, int test) { namespace Test { TEST(TEST_CATEGORY, atomic_views_integral) { - const long length = 1000000; + const int64_t length = 1000000; { // Integral Types. ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 1))); ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 2))); ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 3))); ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 4))); ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 5))); ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 6))); ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 7))); ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 8))); } } TEST(TEST_CATEGORY, atomic_views_nonintegral) { - const long length = 1000000; + const int64_t length = 1000000; { // Non-Integral Types. ASSERT_TRUE(( diff --git a/lib/kokkos/core/unit_test/TestCTestDevice.cpp b/lib/kokkos/core/unit_test/TestCTestDevice.cpp new file mode 100644 index 0000000000..b2ee79b856 --- /dev/null +++ b/lib/kokkos/core/unit_test/TestCTestDevice.cpp @@ -0,0 +1,138 @@ +#include + +namespace Kokkos { +namespace Impl { + +int get_ctest_gpu(const char *local_rank_str); + +} // namespace Impl +} // namespace Kokkos + +#ifdef _WIN32 +int setenv(const char *name, const char *value, int overwrite) { + int errcode = 0; + if (!overwrite) { + size_t envsize = 0; + errcode = getenv_s(&envsize, NULL, 0, name); + if (errcode || envsize) return errcode; + } + return _putenv_s(name, value); +} + +int unsetenv(const char *name) { return _putenv_s(name, ""); } +#endif + +// Needed because https://github.com/google/googletest/issues/952 has not been +// resolved +#define EXPECT_THROW_WITH_MESSAGE(stmt, etype, whatstring) \ + EXPECT_THROW( \ + try { stmt; } catch (const etype &ex) { \ + EXPECT_EQ(whatstring, std::string(ex.what())); \ + throw; \ + }, \ + etype) + +class ctest_environment : public ::testing::Test { + protected: + void SetUp(); +}; + +void ctest_environment::SetUp() { + setenv("CTEST_KOKKOS_DEVICE_TYPE", "gpus", 1); + setenv("CTEST_RESOURCE_GROUP_COUNT", "10", 1); + unsetenv("CTEST_RESOURCE_GROUP_0"); + setenv("CTEST_RESOURCE_GROUP_1", "threads", 1); + setenv("CTEST_RESOURCE_GROUP_2", "threads,cores", 1); + + setenv("CTEST_RESOURCE_GROUP_3", "gpus", 1); + unsetenv("CTEST_RESOURCE_GROUP_3_GPUS"); + + setenv("CTEST_RESOURCE_GROUP_4", "gpus", 1); + setenv("CTEST_RESOURCE_GROUP_4_GPUS", "id:2", 1); + + setenv("CTEST_RESOURCE_GROUP_5", "gpus", 1); + setenv("CTEST_RESOURCE_GROUP_5_GPUS", "slots:1,id:2", 1); + + setenv("CTEST_RESOURCE_GROUP_6", "gpus", 1); + setenv("CTEST_RESOURCE_GROUP_6_GPUS", "id:2,slots:1", 1); + + setenv("CTEST_RESOURCE_GROUP_7", "threads,gpus", 1); + setenv("CTEST_RESOURCE_GROUP_7_GPUS", "id:3,slots:1", 1); + + setenv("CTEST_RESOURCE_GROUP_8", "gpus,threads", 1); + setenv("CTEST_RESOURCE_GROUP_8_GPUS", "id:1,slots:1", 1); + + setenv("CTEST_RESOURCE_GROUP_9", "cores,gpus,threads", 1); + setenv("CTEST_RESOURCE_GROUP_9_GPUS", "id:4,slots:1", 1); +} + +TEST_F(ctest_environment, no_device_type) { + unsetenv("CTEST_KOKKOS_DEVICE_TYPE"); + EXPECT_EQ(Kokkos::Impl::get_ctest_gpu("0"), 0); +} + +TEST_F(ctest_environment, no_process_count) { + unsetenv("CTEST_RESOURCE_GROUP_COUNT"); + EXPECT_EQ(Kokkos::Impl::get_ctest_gpu("0"), 0); +} + +TEST_F(ctest_environment, invalid_rank) { + EXPECT_THROW_WITH_MESSAGE( + Kokkos::Impl::get_ctest_gpu("10"), std::runtime_error, + "Error: local rank 10 is outside the bounds of resource groups provided " + "by" + " CTest. Raised by Kokkos::Impl::get_ctest_gpu().\nTraceback " + "functionality" + " not available\n"); +} + +TEST_F(ctest_environment, no_type_str) { + EXPECT_THROW_WITH_MESSAGE( + Kokkos::Impl::get_ctest_gpu("0"), std::runtime_error, + "Error: CTEST_RESOURCE_GROUP_0 is not specified. Raised by " + "Kokkos::Impl::get_ctest_gpu().\nTraceback functionality not " + "available\n"); +} + +TEST_F(ctest_environment, missing_type) { + EXPECT_THROW_WITH_MESSAGE( + Kokkos::Impl::get_ctest_gpu("1"), std::runtime_error, + "Error: device type 'gpus' not included in CTEST_RESOURCE_GROUP_1. " + "Raised " + "by Kokkos::Impl::get_ctest_gpu().\nTraceback functionality not available" + "\n"); + EXPECT_THROW_WITH_MESSAGE( + Kokkos::Impl::get_ctest_gpu("2"), std::runtime_error, + "Error: device type 'gpus' not included in CTEST_RESOURCE_GROUP_2. " + "Raised " + "by Kokkos::Impl::get_ctest_gpu().\nTraceback functionality not available" + "\n"); +} + +TEST_F(ctest_environment, no_id_str) { + EXPECT_THROW_WITH_MESSAGE( + Kokkos::Impl::get_ctest_gpu("3"), std::runtime_error, + "Error: CTEST_RESOURCE_GROUP_3_GPUS is not specified. Raised by " + "Kokkos::Impl::get_ctest_gpu().\nTraceback functionality not " + "available\n"); +} + +TEST_F(ctest_environment, invalid_id_str) { + EXPECT_THROW_WITH_MESSAGE( + Kokkos::Impl::get_ctest_gpu("4"), std::runtime_error, + "Error: invalid value of CTEST_RESOURCE_GROUP_4_GPUS: 'id:2'. Raised by " + "Kokkos::Impl::get_ctest_gpu().\nTraceback functionality not " + "available\n"); + EXPECT_THROW_WITH_MESSAGE( + Kokkos::Impl::get_ctest_gpu("5"), std::runtime_error, + "Error: invalid value of CTEST_RESOURCE_GROUP_5_GPUS: 'slots:1,id:2'. " + "Raised by Kokkos::Impl::get_ctest_gpu().\nTraceback functionality not " + "available\n"); +} + +TEST_F(ctest_environment, good) { + EXPECT_EQ(Kokkos::Impl::get_ctest_gpu("6"), 2); + EXPECT_EQ(Kokkos::Impl::get_ctest_gpu("7"), 3); + EXPECT_EQ(Kokkos::Impl::get_ctest_gpu("8"), 1); + EXPECT_EQ(Kokkos::Impl::get_ctest_gpu("9"), 4); +} diff --git a/lib/kokkos/core/unit_test/TestCXX11.hpp b/lib/kokkos/core/unit_test/TestCXX11.hpp index 876a3b5da8..405652b29e 100644 --- a/lib/kokkos/core/unit_test/TestCXX11.hpp +++ b/lib/kokkos/core/unit_test/TestCXX11.hpp @@ -361,6 +361,7 @@ bool Test(int test) { return passed; #else + (void)test; return true; #endif } diff --git a/lib/kokkos/core/unit_test/TestCompilerMacros.hpp b/lib/kokkos/core/unit_test/TestCompilerMacros.hpp index e8daab9db6..c644daca0e 100644 --- a/lib/kokkos/core/unit_test/TestCompilerMacros.hpp +++ b/lib/kokkos/core/unit_test/TestCompilerMacros.hpp @@ -44,10 +44,7 @@ #include -#if defined(KOKKOS_ENABLE_CUDA) && \ - (!defined(KOKKOS_ENABLE_CUDA_LAMBDA) || \ - ((defined(KOKKOS_ENABLE_SERIAL) || defined(KOKKOS_ENABLE_OPENMP)) && \ - ((CUDA_VERSION < 8000) && defined(__NVCC__)))) +#if defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_CUDA_LAMBDA) #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) #error "Macro bug: KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA shouldn't be defined" #endif diff --git a/lib/kokkos/core/unit_test/TestComplex.hpp b/lib/kokkos/core/unit_test/TestComplex.hpp index e049dcd175..2bb81052fe 100644 --- a/lib/kokkos/core/unit_test/TestComplex.hpp +++ b/lib/kokkos/core/unit_test/TestComplex.hpp @@ -84,8 +84,9 @@ struct TestComplexConstruction { ASSERT_FLOAT_EQ(h_results(8).real(), double(8)); ASSERT_FLOAT_EQ(h_results(8).imag(), 0.0); -#ifndef KOKKOS_ENABLE_ROCM // Copy construction conversion between - // Kokkos::complex and std::complex doesn't compile + // Copy construction conversion between + // Kokkos::complex and std::complex doesn't compile +#ifndef KOKKOS_ENABLE_HIP // FIXME_HIP Kokkos::complex a(1.5, 2.5), b(3.25, 5.25), r_kk; std::complex sa(a), sb(3.25, 5.25), r; r = a; @@ -104,7 +105,7 @@ struct TestComplexConstruction { } KOKKOS_INLINE_FUNCTION - void operator()(const int &i) const { + void operator()(const int & /*i*/) const { Kokkos::complex a(1.5, 2.5); d_results(0) = a; Kokkos::complex b(a); @@ -164,8 +165,10 @@ struct TestComplexBasicMath { ASSERT_FLOAT_EQ(h_results(2).real(), r.real()); ASSERT_FLOAT_EQ(h_results(2).imag(), r.imag()); r = a / b; +#ifndef KOKKOS_WORKAROUND_OPENMPTARGET_CLANG ASSERT_FLOAT_EQ(h_results(3).real(), r.real()); ASSERT_FLOAT_EQ(h_results(3).imag(), r.imag()); +#endif r = d + a; ASSERT_FLOAT_EQ(h_results(4).real(), r.real()); ASSERT_FLOAT_EQ(h_results(4).imag(), r.imag()); @@ -212,8 +215,10 @@ struct TestComplexBasicMath { ASSERT_FLOAT_EQ(h_results(18).real(), r.real()); ASSERT_FLOAT_EQ(h_results(18).imag(), r.imag()); r = c / a; +#ifndef KOKKOS_WORKAROUND_OPENMPTARGET_CLANG ASSERT_FLOAT_EQ(h_results(19).real(), r.real()); ASSERT_FLOAT_EQ(h_results(19).imag(), r.imag()); +#endif r = a; /* r = a+e; */ ASSERT_FLOAT_EQ(h_results(20).real(), r.real() + e); @@ -227,7 +232,7 @@ struct TestComplexBasicMath { } KOKKOS_INLINE_FUNCTION - void operator()(const int &i) const { + void operator()(const int & /*i*/) const { Kokkos::complex a(1.5, 2.5); Kokkos::complex b(3.25, 5.75); // Basic math complex / complex @@ -320,7 +325,7 @@ struct TestComplexSpecialFunctions { } KOKKOS_INLINE_FUNCTION - void operator()(const int &i) const { + void operator()(const int & /*i*/) const { Kokkos::complex a(1.5, 2.5); Kokkos::complex b(3.25, 5.75); double c = 9.3; @@ -356,4 +361,41 @@ TEST(TEST_CATEGORY, complex_special_funtions) { TEST(TEST_CATEGORY, complex_io) { testComplexIO(); } +TEST(TEST_CATEGORY, complex_trivially_copyable) { + using RealType = double; + + // Kokkos::complex is trivially copyable when RealType is + // trivially copyable + // Simply disable the check for IBM's XL compiler since we can't reliably + // check for a version that defines relevant functions. +#if !defined(__ibmxl__) + // clang claims compatibility with gcc 4.2.1 but all versions tested know + // about std::is_trivially_copyable. +#if !defined(__clang__) +#define KOKKOS_COMPILER_GNU_VERSION \ + __GNUC__ * 100 + __GNUC_MINOR__ * 10 + __GNUC_PATCHLEVEL__ +#endif +#if KOKKOS_COMPILER_GNU_VERSION == 0 || KOKKOS_COMPILER_GNU_VERSION > 500 + ASSERT_TRUE(std::is_trivially_copyable>::value || + !std::is_trivially_copyable::value); +#elif KOKKOS_COMPILER_GNU_VERSION > 480 + ASSERT_TRUE( + (std::has_trivial_copy_constructor>::value && + std::has_trivial_copy_assign>::value && + std::is_trivially_destructible>::value) || + !(std::has_trivial_copy_constructor::value && + std::has_trivial_copy_assign::value && + std::is_trivially_destructible::value)); +#else + ASSERT_TRUE( + (std::has_trivial_copy_constructor>::value && + std::has_trivial_copy_assign>::value && + std::has_trivial_destructor>::value) || + !(std::has_trivial_copy_constructor::value && + std::has_trivial_copy_assign::value && + std::has_trivial_destructor::value)); +#endif +#endif +} + } // namespace Test diff --git a/lib/kokkos/core/unit_test/TestConcepts.hpp b/lib/kokkos/core/unit_test/TestConcepts.hpp new file mode 100644 index 0000000000..dcd4d948a6 --- /dev/null +++ b/lib/kokkos/core/unit_test/TestConcepts.hpp @@ -0,0 +1,81 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include + +namespace TestConcept { + +using ExecutionSpace = TEST_EXECSPACE; +using MemorySpace = typename ExecutionSpace::memory_space; +using DeviceType = typename ExecutionSpace::device_type; + +static_assert(Kokkos::is_execution_space{}, ""); +static_assert(Kokkos::is_execution_space{}, ""); +static_assert(!Kokkos::is_execution_space{}, ""); +static_assert(!Kokkos::is_execution_space{}, ""); + +static_assert(Kokkos::is_memory_space{}, ""); +static_assert(Kokkos::is_memory_space{}, ""); +static_assert(!Kokkos::is_memory_space{}, ""); +static_assert(!Kokkos::is_memory_space{}, ""); + +static_assert(Kokkos::is_device{}, ""); +static_assert(Kokkos::is_device{}, ""); +static_assert(!Kokkos::is_device{}, ""); +static_assert(!Kokkos::is_device{}, ""); + +static_assert(!Kokkos::is_device{}, ""); +static_assert(!Kokkos::is_device{}, ""); + +static_assert(Kokkos::is_space{}, ""); +static_assert(Kokkos::is_space{}, ""); +static_assert(Kokkos::is_space{}, ""); +static_assert(Kokkos::is_space{}, ""); +static_assert(Kokkos::is_space{}, ""); +static_assert(Kokkos::is_space{}, ""); +static_assert(!Kokkos::is_space{}, ""); +static_assert(!Kokkos::is_space{}, ""); +static_assert(!Kokkos::is_space{}, ""); + +} // namespace TestConcept diff --git a/lib/kokkos/core/unit_test/TestCrs.hpp b/lib/kokkos/core/unit_test/TestCrs.hpp index 5807109601..296235aad0 100644 --- a/lib/kokkos/core/unit_test/TestCrs.hpp +++ b/lib/kokkos/core/unit_test/TestCrs.hpp @@ -53,7 +53,7 @@ namespace { template struct CountFillFunctor { KOKKOS_INLINE_FUNCTION - std::int32_t operator()(std::int32_t row, std::int32_t *fill) const { + std::int32_t operator()(std::int32_t row, float *fill) const { auto n = (row % 4) + 1; if (fill) { for (std::int32_t j = 0; j < n; ++j) { @@ -153,7 +153,7 @@ struct RunUpdateCrsTest { template void test_count_fill(std::int32_t nrows) { - Kokkos::Crs graph; + Kokkos::Crs graph; Kokkos::count_and_fill_crs(graph, nrows, CountFillFunctor()); ASSERT_EQ(graph.numRows(), nrows); auto row_map = Kokkos::create_mirror_view(graph.row_map); @@ -176,12 +176,12 @@ void test_count_fill(std::int32_t nrows) { template void test_constructor(std::int32_t nrows) { for (int nTest = 1; nTest < 5; nTest++) { - typedef Kokkos::Crs crs_int32; - crs_int32 graph; + typedef Kokkos::Crs crs_type; + crs_type graph; Kokkos::count_and_fill_crs(graph, nrows, CountFillFunctor()); ASSERT_EQ(graph.numRows(), nrows); - RunUpdateCrsTest crstest(graph); + RunUpdateCrsTest crstest(graph); crstest.run_test(nTest); auto row_map = Kokkos::create_mirror_view(graph.row_map); diff --git a/lib/kokkos/core/unit_test/TestDeepCopy.hpp b/lib/kokkos/core/unit_test/TestDeepCopy.hpp index a7e80cef36..56c259ff6a 100644 --- a/lib/kokkos/core/unit_test/TestDeepCopy.hpp +++ b/lib/kokkos/core/unit_test/TestDeepCopy.hpp @@ -2,6 +2,7 @@ namespace Test { +#ifdef KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA namespace Impl { template struct TestDeepCopy { @@ -210,5 +211,149 @@ TEST(TEST_CATEGORY, deep_copy_alignment) { Kokkos::HostSpace>::run_test(100000); } } +#endif +// KOKKOS_IMPL_HIP_CLANG_WORKAROUND +#ifndef KOKKOS_ENABLE_HIP +namespace Impl { +template +struct TestDeepCopyScalarConversion { + struct TagFill {}; + struct TagCompare {}; + + using view_type_s1_1d = Kokkos::View; + using view_type_s2_1d = Kokkos::View; + using view_type_s1_2d = Kokkos::View; + using view_type_s2_2d = Kokkos::View; + + using base_layout1 = typename std::conditional< + std::is_same::value, Kokkos::LayoutLeft, + Layout1>::type; + using base_layout2 = typename std::conditional< + std::is_same::value, Kokkos::LayoutLeft, + Layout2>::type; + + using base_type_s1_1d = Kokkos::View; + using base_type_s2_1d = Kokkos::View; + using base_type_s1_2d = Kokkos::View; + using base_type_s2_2d = Kokkos::View; + + view_type_s1_1d view_s1_1d; + view_type_s2_1d view_s2_1d; + view_type_s1_2d view_s1_2d; + view_type_s2_2d view_s2_2d; + + Kokkos::View error_count; + + void create_views(int64_t N0, int64_t N1) { + base_type_s1_1d b_s1_1d("TestDeepCopyConversion::b_s1_1d", N0); + base_type_s2_1d b_s2_1d("TestDeepCopyConversion::b_s2_1d", N0); + base_type_s1_2d b_s1_2d("TestDeepCopyConversion::b_s1_2d", N0, N1); + base_type_s2_2d b_s2_2d("TestDeepCopyConversion::b_s2_2d", N0, N1); + + view_s1_1d = view_type_s1_1d(b_s1_1d, Kokkos::ALL); + view_s2_1d = view_type_s2_1d(b_s2_1d, Kokkos::ALL); + view_s1_2d = view_type_s1_2d(b_s1_2d, Kokkos::ALL, Kokkos::ALL); + view_s2_2d = view_type_s2_2d(b_s2_2d, Kokkos::ALL, Kokkos::ALL); + + error_count = Kokkos::View( + "TestDeepCopyConversion::error_count"); + } + + KOKKOS_FUNCTION + void operator()(TagFill, const int64_t i) const { + view_s2_1d(i) = static_cast(i + 1); + for (int64_t j = 0; j < static_cast(view_s2_2d.extent(1)); j++) + view_s2_2d(i, j) = static_cast((i + 1) * 1000 + j + 1); + } + + KOKKOS_FUNCTION + void operator()(TagCompare, const int64_t i) const { + int64_t errors = 0; + if (view_s1_1d(i) != static_cast(static_cast(i + 1))) + errors++; + for (int64_t j = 0; j < static_cast(view_s1_2d.extent(1)); j++) { + if (view_s1_2d(i, j) != + static_cast(static_cast((i + 1) * 1000 + j + 1))) + errors++; + } + if (errors > 0) Kokkos::atomic_add(&error_count(), errors); + } + + void run_tests(int64_t N0, int64_t N1) { + create_views(N0, N1); + + Kokkos::parallel_for("TestDeepCopyConversion::Fill", + Kokkos::RangePolicy>(0, N0), + *this); + + Kokkos::deep_copy(view_s1_1d, view_s2_1d); + Kokkos::deep_copy(view_s1_2d, view_s2_2d); + + Kokkos::parallel_for("TestDeepCopyConversion::Compare", + Kokkos::RangePolicy>(0, N0), + *this); + + int64_t errors = 0; + Kokkos::deep_copy(errors, error_count); + ASSERT_TRUE(errors == 0); + + Kokkos::deep_copy(view_s1_1d, static_cast(0)); + Kokkos::deep_copy(view_s1_2d, static_cast(0)); + + Kokkos::parallel_for("TestDeepCopyConversion::Compare", + Kokkos::RangePolicy>(0, N0), + *this); + Kokkos::deep_copy(errors, error_count); + ASSERT_TRUE(errors > 0); + + Kokkos::deep_copy(error_count, 0); + Kokkos::deep_copy(TEST_EXECSPACE(), view_s1_1d, view_s2_1d); + Kokkos::deep_copy(TEST_EXECSPACE(), view_s1_2d, view_s2_2d); + + Kokkos::parallel_for("TestDeepCopyConversion::Compare", + Kokkos::RangePolicy>(0, N0), + *this); + + Kokkos::deep_copy(errors, error_count); + ASSERT_TRUE(errors == 0); + } +}; +} // namespace Impl + +TEST(TEST_CATEGORY, deep_copy_conversion) { + int64_t N0 = 19381; + int64_t N1 = 17; + + using right = Kokkos::LayoutRight; + using left = Kokkos::LayoutLeft; + using stride = Kokkos::LayoutStride; + + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); +} +#endif } // namespace Test diff --git a/lib/kokkos/core/unit_test/TestLocalDeepCopy.hpp b/lib/kokkos/core/unit_test/TestLocalDeepCopy.hpp index 9bca373a40..c776481c70 100644 --- a/lib/kokkos/core/unit_test/TestLocalDeepCopy.hpp +++ b/lib/kokkos/core/unit_test/TestLocalDeepCopy.hpp @@ -934,7 +934,6 @@ void impl_test_local_deepcopy_rangepolicy_rank_7(const int N) { //------------------------------------------------------------------------------------------------------------- #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) TEST(TEST_CATEGORY, local_deepcopy_teampolicy_layoutleft) { typedef TEST_EXECSPACE ExecSpace; typedef Kokkos::View ViewType; @@ -1043,5 +1042,73 @@ TEST(TEST_CATEGORY, local_deepcopy_rangepolicy_layoutright) { } } #endif -#endif + +namespace Impl { +template +using ShMemView = + Kokkos::View; + +struct DeepCopyScratchFunctor { + DeepCopyScratchFunctor( + Kokkos::View check_view_1, + Kokkos::View check_view_2) + : check_view_1_(check_view_1), + check_view_2_(check_view_2), + N_(check_view_1.extent(0)) {} + + KOKKOS_INLINE_FUNCTION void operator()( + Kokkos::TeamPolicy>::member_type team) + const { + using ShmemType = TEST_EXECSPACE::scratch_memory_space; + auto shview = + Impl::ShMemView(team.team_scratch(1), N_, 1); + + Kokkos::parallel_for( + Kokkos::TeamThreadRange(team, N_), KOKKOS_LAMBDA(const size_t& index) { + auto thread_shview = Kokkos::subview(shview, index, Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(thread_shview, index); + }); + Kokkos::Experimental::local_deep_copy( + team, check_view_1_, Kokkos::subview(shview, Kokkos::ALL(), 0)); + + Kokkos::Experimental::local_deep_copy(team, shview, 6.); + Kokkos::Experimental::local_deep_copy( + team, check_view_2_, Kokkos::subview(shview, Kokkos::ALL(), 0)); + } + + Kokkos::View check_view_1_; + Kokkos::View check_view_2_; + int const N_; +}; +} // namespace Impl + +TEST(TEST_CATEGORY, deep_copy_scratch) { + using TestDeviceTeamPolicy = Kokkos::TeamPolicy; + + const int N = 8; + const int bytes_per_team = + Impl::ShMemView::shmem_size(N, 1); + + TestDeviceTeamPolicy policy(1, Kokkos::AUTO); + auto team_exec = policy.set_scratch_size(1, Kokkos::PerTeam(bytes_per_team)); + + Kokkos::View check_view_1("check_1", + N); + Kokkos::View check_view_2("check_2", + N); + + Kokkos::parallel_for( + team_exec, Impl::DeepCopyScratchFunctor{check_view_1, check_view_2}); + auto host_copy_1 = + Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), check_view_1); + auto host_copy_2 = + Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), check_view_2); + + for (unsigned int i = 0; i < N; ++i) { + ASSERT_EQ(host_copy_1(i), i); + ASSERT_EQ(host_copy_2(i), 6.0); + } +} } // namespace Test diff --git a/lib/kokkos/core/unit_test/TestMDRange.hpp b/lib/kokkos/core/unit_test/TestMDRange.hpp index 1e1bd869ca..c4288f21a1 100644 --- a/lib/kokkos/core/unit_test/TestMDRange.hpp +++ b/lib/kokkos/core/unit_test/TestMDRange.hpp @@ -256,7 +256,6 @@ struct TestMDRange_2D { static void test_reduce2(const int N0, const int N1) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -269,13 +268,12 @@ struct TestMDRange_2D { double sum = 0.0; parallel_reduce( range, - KOKKOS_LAMBDA(const int i, const int j, double &lsum) { + KOKKOS_LAMBDA(const int /*i*/, const int /*j*/, double &lsum) { lsum += 1.0; }, sum); ASSERT_EQ(sum, N0 * N1); } -#endif #endif { @@ -361,7 +359,6 @@ struct TestMDRange_2D { } // Test Min reducer with lambda #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -387,7 +384,6 @@ struct TestMDRange_2D { ASSERT_EQ(min, 4.0); } -#endif #endif // Tagged operator test { @@ -532,7 +528,6 @@ struct TestMDRange_2D { static void test_for2(const int N0, const int N1) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -571,7 +566,6 @@ struct TestMDRange_2D { ASSERT_EQ(counter, 0); } -#endif #endif { @@ -909,7 +903,6 @@ struct TestMDRange_3D { static void test_reduce3(const int N0, const int N1, const int N2) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -922,13 +915,11 @@ struct TestMDRange_3D { double sum = 0.0; parallel_reduce( range, - KOKKOS_LAMBDA(const int i, const int j, const int k, double &lsum) { - lsum += 1.0; - }, + KOKKOS_LAMBDA(const int /*i*/, const int /*j*/, const int /*k*/, + double &lsum) { lsum += 1.0; }, sum); ASSERT_EQ(sum, N0 * N1 * N2); } -#endif #endif { @@ -1013,7 +1004,6 @@ struct TestMDRange_3D { } // Test Min reducer with lambda #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -1046,7 +1036,6 @@ struct TestMDRange_3D { ASSERT_EQ(min, min_identity); } } -#endif #endif // Tagged operator test @@ -1193,7 +1182,6 @@ struct TestMDRange_3D { static void test_for3(const int N0, const int N1, const int N2) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -1236,7 +1224,6 @@ struct TestMDRange_3D { ASSERT_EQ(counter, 0); } -#endif #endif { @@ -1549,7 +1536,6 @@ struct TestMDRange_4D { static void test_reduce4(const int N0, const int N1, const int N2, const int N3) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -1562,12 +1548,11 @@ struct TestMDRange_4D { double sum = 0.0; parallel_reduce( range, - KOKKOS_LAMBDA(const int i, const int j, const int k, const int l, - double &lsum) { lsum += 1.0; }, + KOKKOS_LAMBDA(const int /*i*/, const int /*j*/, const int /*k*/, + const int /*l*/, double &lsum) { lsum += 1.0; }, sum); ASSERT_EQ(sum, N0 * N1 * N2 * N3); } -#endif #endif { @@ -1656,7 +1641,6 @@ struct TestMDRange_4D { // Test Min reducer with lambda #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -1684,7 +1668,6 @@ struct TestMDRange_4D { ASSERT_EQ(min, 16.0); } -#endif #endif // Tagged operator test @@ -1834,7 +1817,6 @@ struct TestMDRange_4D { static void test_for4(const int N0, const int N1, const int N2, const int N3) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -1878,7 +1860,6 @@ struct TestMDRange_4D { ASSERT_EQ(counter, 0); } -#endif #endif { @@ -2206,7 +2187,6 @@ struct TestMDRange_5D { static void test_reduce5(const int N0, const int N1, const int N2, const int N3, const int N4) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -2220,12 +2200,12 @@ struct TestMDRange_5D { double sum = 0.0; parallel_reduce( range, - KOKKOS_LAMBDA(const int i, const int j, const int k, const int l, - const int m, double &lsum) { lsum += 1.0; }, + KOKKOS_LAMBDA(const int /*i*/, const int /*j*/, const int /*k*/, + const int /*l*/, const int /*m*/, + double &lsum) { lsum += 1.0; }, sum); ASSERT_EQ(sum, N0 * N1 * N2 * N3 * N4); } -#endif #endif { @@ -2320,7 +2300,6 @@ struct TestMDRange_5D { // Test Min reducer with lambda #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -2352,7 +2331,6 @@ struct TestMDRange_5D { ASSERT_EQ(min, 32.0); } -#endif #endif // Tagged operator test @@ -2404,7 +2382,6 @@ struct TestMDRange_5D { static void test_for5(const int N0, const int N1, const int N2, const int N3, const int N4) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -2452,7 +2429,6 @@ struct TestMDRange_5D { ASSERT_EQ(counter, 0); } -#endif #endif { @@ -2798,7 +2774,6 @@ struct TestMDRange_6D { static void test_reduce6(const int N0, const int N1, const int N2, const int N3, const int N4, const int N5) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -2812,13 +2787,12 @@ struct TestMDRange_6D { double sum = 0.0; parallel_reduce( range, - KOKKOS_LAMBDA(const int i, const int j, const int k, const int l, - const int m, const int n, + KOKKOS_LAMBDA(const int /*i*/, const int /*j*/, const int /*k*/, + const int /*l*/, const int /*m*/, const int /*n*/, double &lsum) { lsum += 1.0; }, sum); ASSERT_EQ(sum, N0 * N1 * N2 * N3 * N4 * N5); } -#endif #endif { @@ -2914,7 +2888,6 @@ struct TestMDRange_6D { // Test Min reducer with lambda #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -2948,7 +2921,6 @@ struct TestMDRange_6D { ASSERT_EQ(min, 64.0); } -#endif #endif // Tagged operator test @@ -3001,7 +2973,6 @@ struct TestMDRange_6D { static void test_for6(const int N0, const int N1, const int N2, const int N3, const int N4, const int N5) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -3051,7 +3022,6 @@ struct TestMDRange_6D { ASSERT_EQ(counter, 0); } -#endif #endif { diff --git a/lib/kokkos/core/unit_test/TestMemoryPool.hpp b/lib/kokkos/core/unit_test/TestMemoryPool.hpp index bc78a2908e..cc18a90305 100644 --- a/lib/kokkos/core/unit_test/TestMemoryPool.hpp +++ b/lib/kokkos/core/unit_test/TestMemoryPool.hpp @@ -162,10 +162,10 @@ void test_host_memory_pool_stats() { // Aborts because exceeds max block size: // void * p2048 = pool.allocate(2048); - ASSERT_NE(p0064, (void*)0); - ASSERT_NE(p0128, (void*)0); - ASSERT_NE(p0256, (void*)0); - ASSERT_NE(p1024, (void*)0); + ASSERT_NE(p0064, nullptr); + ASSERT_NE(p0128, nullptr); + ASSERT_NE(p0256, nullptr); + ASSERT_NE(p1024, nullptr); pool.deallocate(p0064, 64); pool.deallocate(p0128, 128); @@ -475,17 +475,15 @@ void test_memory_pool_corners(const bool print_statistics, template struct TestMemoryPoolHuge { - TestMemoryPoolHuge() {} - enum : size_t { num_superblock = 0 }; using value_type = long; KOKKOS_INLINE_FUNCTION - void operator()(int i, long& err) const noexcept {} + void operator()(int /*i*/, long& /*err*/) const noexcept {} KOKKOS_INLINE_FUNCTION - void operator()(int i) const noexcept {} + void operator()(int /*i*/) const noexcept {} }; template diff --git a/lib/kokkos/core/unit_test/TestRange.hpp b/lib/kokkos/core/unit_test/TestRange.hpp index 1fd6a508f7..9bd13ad239 100644 --- a/lib/kokkos/core/unit_test/TestRange.hpp +++ b/lib/kokkos/core/unit_test/TestRange.hpp @@ -54,9 +54,10 @@ template struct TestRange { typedef int value_type; ///< typedef required for the parallel_reduce - typedef Kokkos::View view_type; + typedef Kokkos::View view_type; view_type m_flags; + view_type result_view; struct VerifyInitTag {}; struct ResetTag {}; @@ -65,9 +66,19 @@ struct TestRange { struct VerifyOffsetTag {}; int N; +#ifndef KOKKOS_WORKAROUND_OPENMPTARGET_GCC static const int offset = 13; +#else + int offset; +#endif TestRange(const size_t N_) - : m_flags(Kokkos::ViewAllocateWithoutInitializing("flags"), N_), N(N_) {} + : m_flags(Kokkos::ViewAllocateWithoutInitializing("flags"), N_), + result_view(Kokkos::ViewAllocateWithoutInitializing("results"), N_), + N(N_) { +#ifdef KOKKOS_WORKAROUND_OPENMPTARGET_GCC + offset = 13; +#endif + } void test_for() { typename view_type::HostMirror host_flags = @@ -185,7 +196,7 @@ struct TestRange { //---------------------------------------- void test_reduce() { - int total = 0; + value_type total = 0; Kokkos::parallel_for(Kokkos::RangePolicy(0, N), *this); @@ -220,15 +231,31 @@ struct TestRange { Kokkos::parallel_for(Kokkos::RangePolicy(0, N), *this); + auto check_scan_results = [&]() { + auto const host_mirror = + Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), result_view); + for (int i = 0; i < N; ++i) { + if (((i + 1) * i) / 2 != host_mirror(i)) { + std::cout << "Error at " << i << std::endl; + EXPECT_EQ(size_t(((i + 1) * i) / 2), size_t(host_mirror(i))); + } + } + }; + Kokkos::parallel_scan( "TestKernelScan", Kokkos::RangePolicy(0, N), *this); - int total = 0; + check_scan_results(); + + value_type total = 0; Kokkos::parallel_scan( "TestKernelScanWithTotal", Kokkos::RangePolicy(0, N), *this, total); + + check_scan_results(); + ASSERT_EQ(size_t((N - 1) * (N) / 2), size_t(total)); // sum( 0 .. N-1 ) } @@ -239,16 +266,16 @@ struct TestRange { if (final) { if (update != (i * (i + 1)) / 2) { - printf("TestRange::test_scan error %d : %d != %d\n", i, - (i * (i + 1)) / 2, m_flags(i)); + printf("TestRange::test_scan error (%d,%d) : %d != %d\n", i, m_flags(i), + (i * (i + 1)) / 2, update); } + result_view(i) = update; } } void test_dynamic_policy() { - auto const N_no_implicit_capture = N; #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) + auto const N_no_implicit_capture = N; typedef Kokkos::RangePolicy > policy_t; @@ -273,7 +300,7 @@ struct TestRange { int error = 0; Kokkos::parallel_reduce( Kokkos::RangePolicy(0, N), - KOKKOS_LAMBDA(const int &i, int &lsum) { + KOKKOS_LAMBDA(const int &i, value_type &lsum) { lsum += (a(i) != (i < N_no_implicit_capture / 2 ? 1 : 10000)); }, error); @@ -300,10 +327,10 @@ struct TestRange { count("Count", ExecSpace::concurrency()); Kokkos::View a("A", N); - int sum = 0; + value_type sum = 0; Kokkos::parallel_reduce( policy_t(0, N), - KOKKOS_LAMBDA(const int &i, int &lsum) { + KOKKOS_LAMBDA(const int &i, value_type &lsum) { for (int k = 0; k < (i < N_no_implicit_capture / 2 ? 1 : 10000); k++) { a(i)++; @@ -321,7 +348,7 @@ struct TestRange { int error = 0; Kokkos::parallel_reduce( Kokkos::RangePolicy(0, N), - KOKKOS_LAMBDA(const int &i, int &lsum) { + KOKKOS_LAMBDA(const int &i, value_type &lsum) { lsum += (a(i) != (i < N_no_implicit_capture / 2 ? 1 : 10000)); }, error); @@ -342,7 +369,6 @@ struct TestRange { //} } } -#endif #endif } }; @@ -417,7 +443,7 @@ TEST(TEST_CATEGORY, range_scan) { TestRange > f(0); f.test_scan(); } -#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_ROCM) +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_HIP) { TestRange > f(0); f.test_dynamic_policy(); @@ -432,7 +458,7 @@ TEST(TEST_CATEGORY, range_scan) { TestRange > f(3); f.test_scan(); } -#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_ROCM) +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_HIP) { TestRange > f(3); f.test_dynamic_policy(); @@ -447,7 +473,7 @@ TEST(TEST_CATEGORY, range_scan) { TestRange > f(1001); f.test_scan(); } -#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_ROCM) +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_HIP) { TestRange > f(1001); f.test_dynamic_policy(); diff --git a/lib/kokkos/core/unit_test/TestRangeRequire.hpp b/lib/kokkos/core/unit_test/TestRangeRequire.hpp new file mode 100644 index 0000000000..a75af0b95b --- /dev/null +++ b/lib/kokkos/core/unit_test/TestRangeRequire.hpp @@ -0,0 +1,518 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include + +#include + +// This file is largely duplicating TestRange.hpp but it applies +// Kokkos::Experimental require at every place where a parallel +// operation is executed. + +namespace Test { + +namespace { + +template +struct TestRangeRequire { + typedef int value_type; ///< typedef required for the parallel_reduce + + typedef Kokkos::View view_type; + + view_type m_flags; + + struct VerifyInitTag {}; + struct ResetTag {}; + struct VerifyResetTag {}; + struct OffsetTag {}; + struct VerifyOffsetTag {}; + + int N; + static const int offset = 13; + TestRangeRequire(const size_t N_) + : m_flags(Kokkos::ViewAllocateWithoutInitializing("flags"), N_), N(N_) {} + + void test_for() { + typename view_type::HostMirror host_flags = + Kokkos::create_mirror_view(m_flags); + + Kokkos::parallel_for( + Kokkos::Experimental::require( + Kokkos::RangePolicy(0, N), Property()), + *this); + +#if defined(KOKKOS_ENABLE_PROFILING) + { + typedef TestRangeRequire ThisType; + std::string label("parallel_for"); + Kokkos::Impl::ParallelConstructName pcn(label); + ASSERT_EQ(pcn.get(), label); + std::string empty_label(""); + Kokkos::Impl::ParallelConstructName empty_pcn( + empty_label); + ASSERT_EQ(empty_pcn.get(), typeid(ThisType).name()); + } +#endif + + Kokkos::parallel_for( + Kokkos::Experimental::require( + Kokkos::RangePolicy(0, N), + Property()), + *this); + +#if defined(KOKKOS_ENABLE_PROFILING) + { + typedef TestRangeRequire ThisType; + std::string label("parallel_for"); + Kokkos::Impl::ParallelConstructName pcn(label); + ASSERT_EQ(pcn.get(), label); + std::string empty_label(""); + Kokkos::Impl::ParallelConstructName empty_pcn( + empty_label); + ASSERT_EQ(empty_pcn.get(), std::string(typeid(ThisType).name()) + "/" + + typeid(VerifyInitTag).name()); + } +#endif + + Kokkos::deep_copy(host_flags, m_flags); + + int error_count = 0; + for (int i = 0; i < N; ++i) { + if (int(i) != host_flags(i)) ++error_count; + } + ASSERT_EQ(error_count, int(0)); + + Kokkos::parallel_for( + Kokkos::Experimental::require( + Kokkos::RangePolicy(0, N), + Property()), + *this); + Kokkos::parallel_for( + std::string("TestKernelFor"), + Kokkos::Experimental::require( + Kokkos::RangePolicy(0, N), + Property()), + *this); + + Kokkos::deep_copy(host_flags, m_flags); + + error_count = 0; + for (int i = 0; i < N; ++i) { + if (int(2 * i) != host_flags(i)) ++error_count; + } + ASSERT_EQ(error_count, int(0)); + + Kokkos::parallel_for( + Kokkos::Experimental::require( + Kokkos::RangePolicy(offset, + N + offset), + Property()), + *this); + Kokkos::parallel_for( + std::string("TestKernelFor"), + Kokkos::Experimental::require( + Kokkos::RangePolicy, + VerifyOffsetTag>(0, N), + Property()), + *this); + + Kokkos::deep_copy(host_flags, m_flags); + + error_count = 0; + for (int i = 0; i < N; ++i) { + if (i + offset != host_flags(i)) ++error_count; + } + ASSERT_EQ(error_count, int(0)); + } + + KOKKOS_INLINE_FUNCTION + void operator()(const int i) const { m_flags(i) = i; } + + KOKKOS_INLINE_FUNCTION + void operator()(const VerifyInitTag &, const int i) const { + if (i != m_flags(i)) { + printf("TestRangeRequire::test_for error at %d != %d\n", i, m_flags(i)); + } + } + + KOKKOS_INLINE_FUNCTION + void operator()(const ResetTag &, const int i) const { + m_flags(i) = 2 * m_flags(i); + } + + KOKKOS_INLINE_FUNCTION + void operator()(const VerifyResetTag &, const int i) const { + if (2 * i != m_flags(i)) { + printf("TestRangeRequire::test_for error at %d != %d\n", i, m_flags(i)); + } + } + + KOKKOS_INLINE_FUNCTION + void operator()(const OffsetTag &, const int i) const { + m_flags(i - offset) = i; + } + + KOKKOS_INLINE_FUNCTION + void operator()(const VerifyOffsetTag &, const int i) const { + if (i + offset != m_flags(i)) { + printf("TestRangeRequire::test_for error at %d != %d\n", i + offset, + m_flags(i)); + } + } + + //---------------------------------------- + + void test_reduce() { + int total = 0; + + Kokkos::parallel_for( + Kokkos::Experimental::require( + Kokkos::RangePolicy(0, N), Property()), + *this); + + Kokkos::parallel_reduce( + "TestKernelReduce", + Kokkos::Experimental::require( + Kokkos::RangePolicy(0, N), Property()), + *this, total); + // sum( 0 .. N-1 ) + ASSERT_EQ(size_t((N - 1) * (N) / 2), size_t(total)); + + Kokkos::parallel_reduce( + Kokkos::Experimental::require( + Kokkos::RangePolicy(offset, + N + offset), + Property()), + *this, total); + // sum( 1 .. N ) + ASSERT_EQ(size_t((N) * (N + 1) / 2), size_t(total)); + } + + KOKKOS_INLINE_FUNCTION + void operator()(const int i, value_type &update) const { + update += m_flags(i); + } + + KOKKOS_INLINE_FUNCTION + void operator()(const OffsetTag &, const int i, value_type &update) const { + update += 1 + m_flags(i - offset); + } + + //---------------------------------------- + + void test_scan() { + Kokkos::parallel_for(Kokkos::RangePolicy(0, N), + *this); + + Kokkos::parallel_scan( + "TestKernelScan", + Kokkos::RangePolicy(0, N), *this); + + int total = 0; + Kokkos::parallel_scan( + "TestKernelScanWithTotal", + Kokkos::RangePolicy(0, N), *this, + total); + ASSERT_EQ(size_t((N - 1) * (N) / 2), size_t(total)); // sum( 0 .. N-1 ) + } + + KOKKOS_INLINE_FUNCTION + void operator()(const OffsetTag &, const int i, value_type &update, + bool final) const { + update += m_flags(i); + + if (final) { + if (update != (i * (i + 1)) / 2) { + printf("TestRangeRequire::test_scan error %d : %d != %d\n", i, + (i * (i + 1)) / 2, m_flags(i)); + } + } + } + + void test_dynamic_policy() { +#if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) + auto const N_no_implicit_capture = N; + typedef Kokkos::RangePolicy > + policy_t; + + { + Kokkos::View > + count("Count", ExecSpace::concurrency()); + Kokkos::View a("A", N); + + Kokkos::parallel_for( + policy_t(0, N), KOKKOS_LAMBDA(const int &i) { + for (int k = 0; k < (i < N_no_implicit_capture / 2 ? 1 : 10000); + k++) { + a(i)++; + } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + count(ExecSpace::hardware_thread_id())++; +#else + count( ExecSpace::impl_hardware_thread_id() )++; +#endif + }); + + int error = 0; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(0, N), + KOKKOS_LAMBDA(const int &i, int &lsum) { + lsum += (a(i) != (i < N_no_implicit_capture / 2 ? 1 : 10000)); + }, + error); + ASSERT_EQ(error, 0); + + if ((ExecSpace::concurrency() > (int)1) && + (N > static_cast(4 * ExecSpace::concurrency()))) { + size_t min = N; + size_t max = 0; + for (int t = 0; t < ExecSpace::concurrency(); t++) { + if (count(t) < min) min = count(t); + if (count(t) > max) max = count(t); + } + ASSERT_TRUE(min < max); + + // if ( ExecSpace::concurrency() > 2 ) { + // ASSERT_TRUE( 2 * min < max ); + //} + } + } + + { + Kokkos::View > + count("Count", ExecSpace::concurrency()); + Kokkos::View a("A", N); + + int sum = 0; + Kokkos::parallel_reduce( + policy_t(0, N), + KOKKOS_LAMBDA(const int &i, int &lsum) { + for (int k = 0; k < (i < N_no_implicit_capture / 2 ? 1 : 10000); + k++) { + a(i)++; + } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + count(ExecSpace::hardware_thread_id())++; +#else + count(ExecSpace::impl_hardware_thread_id())++; +#endif + lsum++; + }, + sum); + ASSERT_EQ(sum, N); + + int error = 0; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(0, N), + KOKKOS_LAMBDA(const int &i, int &lsum) { + lsum += (a(i) != (i < N_no_implicit_capture / 2 ? 1 : 10000)); + }, + error); + ASSERT_EQ(error, 0); + + if ((ExecSpace::concurrency() > (int)1) && + (N > static_cast(4 * ExecSpace::concurrency()))) { + size_t min = N; + size_t max = 0; + for (int t = 0; t < ExecSpace::concurrency(); t++) { + if (count(t) < min) min = count(t); + if (count(t) > max) max = count(t); + } + ASSERT_TRUE(min < max); + + // if ( ExecSpace::concurrency() > 2 ) { + // ASSERT_TRUE( 2 * min < max ); + //} + } + } +#endif + } +}; + +} // namespace + +TEST(TEST_CATEGORY, range_for_require) { + using Property = Kokkos::Experimental::WorkItemProperty::HintLightWeight_t; + { + TestRangeRequire, Property> + f(0); + f.test_for(); + } + { + TestRangeRequire, + Property> + f(0); + f.test_for(); + } + + { + TestRangeRequire, Property> + f(2); + f.test_for(); + } + { + TestRangeRequire, + Property> + f(3); + f.test_for(); + } + + { + TestRangeRequire, Property> + f(1000); + f.test_for(); + } + { + TestRangeRequire, + Property> + f(1001); + f.test_for(); + } +} + +TEST(TEST_CATEGORY, range_reduce_require) { + using Property = Kokkos::Experimental::WorkItemProperty::HintLightWeight_t; + { + TestRangeRequire, Property> + f(0); + f.test_reduce(); + } + { + TestRangeRequire, + Property> + f(0); + f.test_reduce(); + } + + { + TestRangeRequire, Property> + f(2); + f.test_reduce(); + } + { + TestRangeRequire, + Property> + f(3); + f.test_reduce(); + } + + { + TestRangeRequire, Property> + f(1000); + f.test_reduce(); + } + { + TestRangeRequire, + Property> + f(1001); + f.test_reduce(); + } +} + +#ifndef KOKKOS_ENABLE_OPENMPTARGET +TEST(TEST_CATEGORY, range_scan_require) { + using Property = Kokkos::Experimental::WorkItemProperty::HintLightWeight_t; + { + TestRangeRequire, Property> + f(0); + f.test_scan(); + } + { + TestRangeRequire, + Property> + f(0); + f.test_scan(); + } +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_HIP) + { + TestRangeRequire, + Property> + f(0); + f.test_dynamic_policy(); + } +#endif + + { + TestRangeRequire, Property> + f(2); + f.test_scan(); + } + { + TestRangeRequire, + Property> + f(3); + f.test_scan(); + } +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_HIP) + { + TestRangeRequire, + Property> + f(3); + f.test_dynamic_policy(); + } +#endif + + { + TestRangeRequire, Property> + f(1000); + f.test_scan(); + } + { + TestRangeRequire, + Property> + f(1001); + f.test_scan(); + } +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_HIP) + { + TestRangeRequire, + Property> + f(1001); + f.test_dynamic_policy(); + } +#endif +} +#endif +} // namespace Test diff --git a/lib/kokkos/core/unit_test/TestReduce.hpp b/lib/kokkos/core/unit_test/TestReduce.hpp index 6c518429a0..d63d5e8d4a 100644 --- a/lib/kokkos/core/unit_test/TestReduce.hpp +++ b/lib/kokkos/core/unit_test/TestReduce.hpp @@ -95,12 +95,12 @@ class ReduceFunctor { }; template -class ReduceFunctorFinal : public ReduceFunctor { +class ReduceFunctorFinal : public ReduceFunctor { public: - typedef typename ReduceFunctor::value_type value_type; + typedef typename ReduceFunctor::value_type value_type; KOKKOS_INLINE_FUNCTION - ReduceFunctorFinal(const size_t n) : ReduceFunctor(n) {} + ReduceFunctorFinal(const size_t n) : ReduceFunctor(n) {} KOKKOS_INLINE_FUNCTION void final(value_type& dst) const { @@ -198,11 +198,11 @@ class RuntimeReduceMinMax { template class RuntimeReduceFunctorFinal - : public RuntimeReduceFunctor { + : public RuntimeReduceFunctor { public: - typedef RuntimeReduceFunctor base_type; + typedef RuntimeReduceFunctor base_type; typedef typename base_type::value_type value_type; - typedef long scalar_type; + typedef int64_t scalar_type; RuntimeReduceFunctorFinal(const size_t theNwork, const size_t count) : base_type(theNwork, count) {} @@ -237,9 +237,8 @@ class TestReduce { value_type result[Repeat]; - const unsigned long nw = nwork; - const unsigned long nsum = - nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); + const uint64_t nw = nwork; + const uint64_t nsum = nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); for (unsigned i = 0; i < Repeat; ++i) { Kokkos::parallel_reduce(nwork, functor_type(nwork), result[i]); @@ -247,7 +246,7 @@ class TestReduce { for (unsigned i = 0; i < Repeat; ++i) { for (unsigned j = 0; j < Count; ++j) { - const unsigned long correct = 0 == j % 3 ? nw : nsum; + const uint64_t correct = 0 == j % 3 ? nw : nsum; ASSERT_EQ((ScalarType)correct, result[i].value[j]); } } @@ -262,9 +261,8 @@ class TestReduce { value_type result[Repeat]; - const unsigned long nw = nwork; - const unsigned long nsum = - nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); + const uint64_t nw = nwork; + const uint64_t nsum = nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); for (unsigned i = 0; i < Repeat; ++i) { if (i % 2 == 0) { @@ -277,7 +275,7 @@ class TestReduce { for (unsigned i = 0; i < Repeat; ++i) { for (unsigned j = 0; j < Count; ++j) { - const unsigned long correct = 0 == j % 3 ? nw : nsum; + const uint64_t correct = 0 == j % 3 ? nw : nsum; ASSERT_EQ((ScalarType)correct, -result[i].value[j]); } } @@ -305,9 +303,8 @@ class TestReduceDynamic { ScalarType result[Repeat][Count]; - const unsigned long nw = nwork; - const unsigned long nsum = - nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); + const uint64_t nw = nwork; + const uint64_t nsum = nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); for (unsigned i = 0; i < Repeat; ++i) { if (i % 2 == 0) { @@ -320,7 +317,7 @@ class TestReduceDynamic { for (unsigned i = 0; i < Repeat; ++i) { for (unsigned j = 0; j < Count; ++j) { - const unsigned long correct = 0 == j % 3 ? nw : nsum; + const uint64_t correct = 0 == j % 3 ? nw : nsum; ASSERT_EQ((ScalarType)correct, result[i][j]); } } @@ -351,7 +348,7 @@ class TestReduceDynamic { const ScalarType correct = (j % 2) ? amax : amin; ASSERT_EQ((ScalarType)correct, result[i][j]); } else { - const unsigned long correct = j % 2 ? 1 : nwork; + const uint64_t correct = j % 2 ? 1 : nwork; ASSERT_EQ((ScalarType)correct, result[i][j]); } } @@ -366,9 +363,8 @@ class TestReduceDynamic { typename functor_type::scalar_type result[Repeat][Count]; - const unsigned long nw = nwork; - const unsigned long nsum = - nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); + const uint64_t nw = nwork; + const uint64_t nsum = nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); for (unsigned i = 0; i < Repeat; ++i) { if (i % 2 == 0) { @@ -381,7 +377,7 @@ class TestReduceDynamic { for (unsigned i = 0; i < Repeat; ++i) { for (unsigned j = 0; j < Count; ++j) { - const unsigned long correct = 0 == j % 3 ? nw : nsum; + const uint64_t correct = 0 == j % 3 ? nw : nsum; ASSERT_EQ((ScalarType)correct, -result[i][j]); } } @@ -405,9 +401,8 @@ class TestReduceDynamicView { const unsigned CountLimit = 23; - const unsigned long nw = nwork; - const unsigned long nsum = - nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); + const uint64_t nw = nwork; + const uint64_t nsum = nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); for (unsigned count = 0; count < CountLimit; ++count) { result_type result("result", count); @@ -425,7 +420,7 @@ class TestReduceDynamicView { } for (unsigned j = 0; j < count; ++j) { - const unsigned long correct = 0 == j % 3 ? nw : nsum; + const uint64_t correct = 0 == j % 3 ? nw : nsum; ASSERT_EQ(host_result(j), (ScalarType)correct); host_result(j) = 0; } @@ -435,9 +430,9 @@ class TestReduceDynamicView { } // namespace -TEST(TEST_CATEGORY, long_reduce) { - TestReduce(0); - TestReduce(1000000); +TEST(TEST_CATEGORY, int64_t_reduce) { + TestReduce(0); + TestReduce(1000000); } TEST(TEST_CATEGORY, double_reduce) { @@ -445,9 +440,9 @@ TEST(TEST_CATEGORY, double_reduce) { TestReduce(1000000); } -TEST(TEST_CATEGORY, long_reduce_dynamic) { - TestReduceDynamic(0); - TestReduceDynamic(1000000); +TEST(TEST_CATEGORY, int64_t_reduce_dynamic) { + TestReduceDynamic(0); + TestReduceDynamic(1000000); } TEST(TEST_CATEGORY, double_reduce_dynamic) { @@ -455,9 +450,9 @@ TEST(TEST_CATEGORY, double_reduce_dynamic) { TestReduceDynamic(1000000); } -TEST(TEST_CATEGORY, long_reduce_dynamic_view) { - TestReduceDynamicView(0); - TestReduceDynamicView(1000000); +TEST(TEST_CATEGORY, int64_t_reduce_dynamic_view) { + TestReduceDynamicView(0); + TestReduceDynamicView(1000000); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/TestReduceCombinatorical.hpp b/lib/kokkos/core/unit_test/TestReduceCombinatorical.hpp index a03dbd1141..fe85f360cb 100644 --- a/lib/kokkos/core/unit_test/TestReduceCombinatorical.hpp +++ b/lib/kokkos/core/unit_test/TestReduceCombinatorical.hpp @@ -467,10 +467,10 @@ struct TestReduceCombinatoricalInstantiation { } template - static void AddLambdaRange(Kokkos::InvalidType, Args... args) {} + static void AddLambdaRange(Kokkos::InvalidType, Args... /*args*/) {} template - static void AddLambdaTeam(Kokkos::InvalidType, Args... args) {} + static void AddLambdaTeam(Kokkos::InvalidType, Args... /*args*/) {} template static void AddFunctor(Args... args) { diff --git a/lib/kokkos/core/unit_test/TestResize.hpp b/lib/kokkos/core/unit_test/TestResize.hpp index 14d1295538..32a85f03e9 100644 --- a/lib/kokkos/core/unit_test/TestResize.hpp +++ b/lib/kokkos/core/unit_test/TestResize.hpp @@ -71,7 +71,7 @@ void impl_testResize() { typedef Kokkos::View view_type; view_type view_1d("view_1d", sizes[0]); const int* oldPointer = view_1d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_1d, sizes[0]); const int* newPointer = view_1d.data(); EXPECT_TRUE(oldPointer == newPointer); @@ -80,7 +80,7 @@ void impl_testResize() { typedef Kokkos::View view_type; view_type view_2d("view_2d", sizes[0], sizes[1]); const int* oldPointer = view_2d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_2d, sizes[0], sizes[1]); const int* newPointer = view_2d.data(); EXPECT_TRUE(oldPointer == newPointer); @@ -89,7 +89,7 @@ void impl_testResize() { typedef Kokkos::View view_type; view_type view_3d("view_3d", sizes[0], sizes[1], sizes[2]); const int* oldPointer = view_3d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_3d, sizes[0], sizes[1], sizes[2]); const int* newPointer = view_3d.data(); EXPECT_TRUE(oldPointer == newPointer); @@ -98,7 +98,7 @@ void impl_testResize() { typedef Kokkos::View view_type; view_type view_4d("view_4d", sizes[0], sizes[1], sizes[2], sizes[3]); const int* oldPointer = view_4d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_4d, sizes[0], sizes[1], sizes[2], sizes[3]); const int* newPointer = view_4d.data(); EXPECT_TRUE(oldPointer == newPointer); @@ -108,7 +108,7 @@ void impl_testResize() { view_type view_5d("view_5d", sizes[0], sizes[1], sizes[2], sizes[3], sizes[4]); const int* oldPointer = view_5d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_5d, sizes[0], sizes[1], sizes[2], sizes[3], sizes[4]); const int* newPointer = view_5d.data(); @@ -119,7 +119,7 @@ void impl_testResize() { view_type view_6d("view_6d", sizes[0], sizes[1], sizes[2], sizes[3], sizes[4], sizes[5]); const int* oldPointer = view_6d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_6d, sizes[0], sizes[1], sizes[2], sizes[3], sizes[4], sizes[5]); const int* newPointer = view_6d.data(); @@ -130,7 +130,7 @@ void impl_testResize() { view_type view_7d("view_7d", sizes[0], sizes[1], sizes[2], sizes[3], sizes[4], sizes[5], sizes[6]); const int* oldPointer = view_7d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_7d, sizes[0], sizes[1], sizes[2], sizes[3], sizes[4], sizes[5], sizes[6]); const int* newPointer = view_7d.data(); @@ -141,7 +141,7 @@ void impl_testResize() { view_type view_8d("view_8d", sizes[0], sizes[1], sizes[2], sizes[3], sizes[4], sizes[5], sizes[6], sizes[7]); const int* oldPointer = view_8d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_8d, sizes[0], sizes[1], sizes[2], sizes[3], sizes[4], sizes[5], sizes[6], sizes[7]); const int* newPointer = view_8d.data(); diff --git a/lib/kokkos/core/unit_test/TestScan.hpp b/lib/kokkos/core/unit_test/TestScan.hpp index 483f186880..f7ebbb62a3 100644 --- a/lib/kokkos/core/unit_test/TestScan.hpp +++ b/lib/kokkos/core/unit_test/TestScan.hpp @@ -50,7 +50,7 @@ namespace Test { template struct TestScan { typedef Device execution_space; - typedef long int value_type; + typedef int64_t value_type; Kokkos::View > errors; @@ -98,10 +98,12 @@ struct TestScan { Kokkos::parallel_scan(N, *this); - long long int total = 0; + int64_t total = 0; Kokkos::parallel_scan(N, *this, total); - run_check(size_t((N + 1) * N / 2), size_t(total)); + // We can't return a value in a constructor so use a lambda as wrapper to + // ignore it. + [&] { ASSERT_EQ(size_t((N + 1) * N / 2), size_t(total)); }(); check_error(); } @@ -129,10 +131,6 @@ struct TestScan { (void)TestScan(i); } } - - void run_check(const size_t& expected, const size_t& actual) { - ASSERT_EQ(expected, actual); - } }; TEST(TEST_CATEGORY, scan) { diff --git a/lib/kokkos/core/unit_test/TestSharedAlloc.hpp b/lib/kokkos/core/unit_test/TestSharedAlloc.hpp index d284b7d61e..1b67e29d70 100644 --- a/lib/kokkos/core/unit_test/TestSharedAlloc.hpp +++ b/lib/kokkos/core/unit_test/TestSharedAlloc.hpp @@ -116,7 +116,7 @@ void test_shared_alloc() { #endif Kokkos::parallel_for(range, [=](size_t i) { - while (0 != + while (nullptr != (r[i] = static_cast(RecordBase::decrement(r[i])))) { #ifdef KOKKOS_DEBUG if (r[i]->use_count() == 1) RecordBase::is_sane(r[i]); @@ -157,7 +157,7 @@ void test_shared_alloc() { #endif Kokkos::parallel_for(range, [=](size_t i) { - while (0 != + while (nullptr != (r[i] = static_cast(RecordBase::decrement(r[i])))) { #ifdef KOKKOS_DEBUG if (r[i]->use_count() == 1) RecordBase::is_sane(r[i]); diff --git a/lib/kokkos/core/unit_test/TestTaskScheduler.hpp b/lib/kokkos/core/unit_test/TestTaskScheduler.hpp index 9f593a00fd..ebfdcf1df3 100644 --- a/lib/kokkos/core/unit_test/TestTaskScheduler.hpp +++ b/lib/kokkos/core/unit_test/TestTaskScheduler.hpp @@ -843,11 +843,14 @@ struct TestMultipleDependence { #undef TEST_SCHEDULER #undef TEST_SCHEDULER_SUFFIX +// KOKKOS WORKAROUND WIN32: Theses tests hang with msvc +#ifndef _WIN32 #define TEST_SCHEDULER_SUFFIX _chase_lev #define TEST_SCHEDULER Kokkos::ChaseLevTaskScheduler #include "TestTaskScheduler_single.hpp" #undef TEST_SCHEDULER #undef TEST_SCHEDULER_SUFFIX +#endif #if 0 #define TEST_SCHEDULER_SUFFIX _fixed_mempool diff --git a/lib/kokkos/core/unit_test/TestTeam.hpp b/lib/kokkos/core/unit_test/TestTeam.hpp index e19c1c160d..d1ee003969 100644 --- a/lib/kokkos/core/unit_test/TestTeam.hpp +++ b/lib/kokkos/core/unit_test/TestTeam.hpp @@ -100,7 +100,7 @@ struct TestTeamPolicy { struct NoOpTag {}; KOKKOS_INLINE_FUNCTION - void operator()(const NoOpTag &, const team_member &member) const {} + void operator()(const NoOpTag &, const team_member & /*member*/) const {} static void test_small_league_size() { int bs = 8; // batch size (number of elements per batch) @@ -139,7 +139,7 @@ struct TestTeamPolicy { struct ReduceTag {}; - typedef long value_type; + typedef int64_t value_type; KOKKOS_INLINE_FUNCTION void operator()(const team_member &member, value_type &update) const { @@ -164,9 +164,9 @@ struct TestTeamPolicy { policy_type_reduce(league_size, 1) .team_size_max(functor, Kokkos::ParallelReduceTag()); - const long N = team_size * league_size; + const int64_t N = team_size * league_size; - long total = 0; + int64_t total = 0; Kokkos::parallel_reduce(policy_type(league_size, team_size), functor, total); @@ -263,9 +263,8 @@ class TestReduceTeam { value_type result[Repeat]; - const unsigned long nw = nwork; - const unsigned long nsum = - nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); + const uint64_t nw = nwork; + const uint64_t nsum = nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); policy_type team_exec(nw, 1); @@ -284,7 +283,7 @@ class TestReduceTeam { for (unsigned i = 0; i < Repeat; ++i) { for (unsigned j = 0; j < Count; ++j) { - const unsigned long correct = 0 == j % 3 ? nw : nsum; + const uint64_t correct = 0 == j % 3 ? nw : nsum; ASSERT_EQ((ScalarType)correct, result[i].value[j]); } } @@ -302,7 +301,7 @@ class ScanTeamFunctor { public: typedef DeviceType execution_space; typedef Kokkos::TeamPolicy policy_type; - typedef long int value_type; + typedef int64_t value_type; Kokkos::View accum; Kokkos::View total; @@ -319,7 +318,7 @@ class ScanTeamFunctor { } struct JoinMax { - typedef long int value_type; + typedef int64_t value_type; KOKKOS_INLINE_FUNCTION void join(value_type volatile &dst, @@ -332,31 +331,31 @@ class ScanTeamFunctor { void operator()(const typename policy_type::member_type ind, value_type &error) const { if (0 == ind.league_rank() && 0 == ind.team_rank()) { - const long int thread_count = ind.league_size() * ind.team_size(); - total() = (thread_count * (thread_count + 1)) / 2; + const int64_t thread_count = ind.league_size() * ind.team_size(); + total() = (thread_count * (thread_count + 1)) / 2; } // Team max: - int long m = (long int)(ind.league_rank() + ind.team_rank()); - ind.team_reduce(Kokkos::Max(m)); + int64_t m = (int64_t)(ind.league_rank() + ind.team_rank()); + ind.team_reduce(Kokkos::Max(m)); if (m != ind.league_rank() + (ind.team_size() - 1)) { printf( "ScanTeamFunctor[%d.%d of %d.%d] reduce_max_answer(%ld) != " "reduce_max(%ld)\n", ind.league_rank(), ind.team_rank(), ind.league_size(), - ind.team_size(), - (long int)(ind.league_rank() + (ind.team_size() - 1)), m); + ind.team_size(), (int64_t)(ind.league_rank() + (ind.team_size() - 1)), + m); } // Scan: - const long int answer = (ind.league_rank() + 1) * ind.team_rank() + - (ind.team_rank() * (ind.team_rank() + 1)) / 2; + const int64_t answer = (ind.league_rank() + 1) * ind.team_rank() + + (ind.team_rank() * (ind.team_rank() + 1)) / 2; - const long int result = + const int64_t result = ind.team_scan(ind.league_rank() + 1 + ind.team_rank() + 1); - const long int result2 = + const int64_t result2 = ind.team_scan(ind.league_rank() + 1 + ind.team_rank() + 1); if (answer != result || answer != result2) { @@ -369,7 +368,7 @@ class ScanTeamFunctor { error = 1; } - const long int thread_rank = + const int64_t thread_rank = ind.team_rank() + ind.team_size() * ind.league_rank(); ind.team_scan(1 + thread_rank, accum.data()); } @@ -379,14 +378,14 @@ template class TestScanTeam { public: typedef DeviceType execution_space; - typedef long int value_type; + typedef int64_t value_type; typedef Kokkos::TeamPolicy policy_type; typedef Test::ScanTeamFunctor functor_type; TestScanTeam(const size_t nteam) { run_test(nteam); } void run_test(const size_t nteam) { - typedef Kokkos::View + typedef Kokkos::View result_type; const unsigned REPEAT = 100000; @@ -405,9 +404,9 @@ class TestScanTeam { nteam, team_exec.team_size_max(functor, Kokkos::ParallelReduceTag())); for (unsigned i = 0; i < Repeat; ++i) { - long int accum = 0; - long int total = 0; - long int error = 0; + int64_t accum = 0; + int64_t total = 0; + int64_t error = 0; Kokkos::deep_copy(functor.accum, total); Kokkos::parallel_reduce(team_exec, functor, result_type(&error)); @@ -445,7 +444,7 @@ struct SharedTeamFunctor { shared_int_array_type; // Tell how much shared memory will be required by this functor. - inline unsigned team_shmem_size(int team_size) const { + inline unsigned team_shmem_size(int /*team_size*/) const { return shared_int_array_type::shmem_size(SHARED_COUNT) + shared_int_array_type::shmem_size(SHARED_COUNT); } @@ -462,7 +461,7 @@ struct SharedTeamFunctor { "member( %d/%d , %d/%d ) Failed to allocate shared memory of size " "%lu\n", ind.league_rank(), ind.league_size(), ind.team_rank(), - ind.team_size(), static_cast(SHARED_COUNT)); + ind.team_size(), static_cast(SHARED_COUNT)); ++update; // Failure to allocate is an error. } else { @@ -523,7 +522,6 @@ struct TestSharedTeam { namespace Test { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) template struct TestLambdaSharedTeam { TestLambdaSharedTeam() { run(); } @@ -568,7 +566,7 @@ struct TestLambdaSharedTeam { if ((shared_A.data() == nullptr && SHARED_COUNT > 0) || (shared_B.data() == nullptr && SHARED_COUNT > 0)) { printf("Failed to allocate shared memory of size %lu\n", - static_cast(SHARED_COUNT)); + static_cast(SHARED_COUNT)); ++update; // Failure to allocate is an error. } else { @@ -601,7 +599,6 @@ struct TestLambdaSharedTeam { } }; #endif -#endif } // namespace Test @@ -636,7 +633,7 @@ struct ScratchTeamFunctor { (scratch_A.data() == nullptr && SHARED_TEAM_COUNT > 0) || (scratch_B.data() == nullptr && SHARED_THREAD_COUNT > 0)) { printf("Failed to allocate shared memory of size %lu\n", - static_cast(SHARED_TEAM_COUNT)); + static_cast(SHARED_TEAM_COUNT)); ++update; // Failure to allocate is an error. } else { @@ -739,22 +736,22 @@ KOKKOS_INLINE_FUNCTION int test_team_mulit_level_scratch_loop_body( a_thread2(team.thread_scratch(0), 16); Kokkos::View > - b_team1(team.team_scratch(1), 128000); + b_team1(team.team_scratch(1), 12800); Kokkos::View > - b_thread1(team.thread_scratch(1), 16000); + b_thread1(team.thread_scratch(1), 1600); Kokkos::View > - b_team2(team.team_scratch(1), 128000); + b_team2(team.team_scratch(1), 12800); Kokkos::View > - b_thread2(team.thread_scratch(1), 16000); + b_thread2(team.thread_scratch(1), 1600); Kokkos::View > a_team3(team.team_scratch(0), 128); Kokkos::View > a_thread3(team.thread_scratch(0), 16); Kokkos::View > - b_team3(team.team_scratch(1), 128000); + b_team3(team.team_scratch(1), 12800); Kokkos::View > - b_thread3(team.thread_scratch(1), 16000); + b_thread3(team.thread_scratch(1), 1600); // The explicit types for 0 and 128 are here to test TeamThreadRange accepting // different types for begin and end. @@ -775,7 +772,7 @@ KOKKOS_INLINE_FUNCTION int test_team_mulit_level_scratch_loop_body( team.league_rank() * 100000; }); - Kokkos::parallel_for(Kokkos::TeamThreadRange(team, 0, 128000), + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, 0, 12800), [&](const int &i) { b_team1(i) = 1000000 + i + team.league_rank() * 100000; b_team2(i) = 2000000 + i + team.league_rank() * 100000; @@ -783,7 +780,7 @@ KOKKOS_INLINE_FUNCTION int test_team_mulit_level_scratch_loop_body( }); team.team_barrier(); - Kokkos::parallel_for(Kokkos::ThreadVectorRange(team, 16000), + Kokkos::parallel_for(Kokkos::ThreadVectorRange(team, 1600), [&](const int &i) { b_thread1(i) = 1000000 + 100000 * team.team_rank() + 16 - i + team.league_rank() * 100000; @@ -817,7 +814,7 @@ KOKKOS_INLINE_FUNCTION int test_team_mulit_level_scratch_loop_body( }); Kokkos::parallel_for( - Kokkos::TeamThreadRange(team, 0, 128000), [&](const int &i) { + Kokkos::TeamThreadRange(team, 0, 12800), [&](const int &i) { if (b_team1(i) != 1000000 + i + team.league_rank() * 100000) error++; if (b_team2(i) != 2000000 + i + team.league_rank() * 100000) error++; if (b_team3(i) != 3000000 + i + team.league_rank() * 100000) error++; @@ -825,7 +822,7 @@ KOKKOS_INLINE_FUNCTION int test_team_mulit_level_scratch_loop_body( team.team_barrier(); Kokkos::parallel_for( - Kokkos::ThreadVectorRange(team, 16000), [&](const int &i) { + Kokkos::ThreadVectorRange(team, 1600), [&](const int &i) { if (b_thread1(i) != 1000000 + 100000 * team.team_rank() + 16 - i + team.league_rank() * 100000) error++; @@ -879,11 +876,11 @@ struct ClassNoShmemSizeFunction { const int per_team1 = 3 * Kokkos::View< double *, ExecSpace, - Kokkos::MemoryTraits >::shmem_size(128000); + Kokkos::MemoryTraits >::shmem_size(12800); const int per_thread1 = 3 * Kokkos::View< double *, ExecSpace, - Kokkos::MemoryTraits >::shmem_size(16000); + Kokkos::MemoryTraits >::shmem_size(1600); int team_size = 8; if (team_size > ExecSpace::concurrency()) @@ -952,11 +949,11 @@ struct ClassWithShmemSizeFunction { const int per_team1 = 3 * Kokkos::View< double *, ExecSpace, - Kokkos::MemoryTraits >::shmem_size(128000); + Kokkos::MemoryTraits >::shmem_size(12800); const int per_thread1 = 3 * Kokkos::View< double *, ExecSpace, - Kokkos::MemoryTraits >::shmem_size(16000); + Kokkos::MemoryTraits >::shmem_size(1600); int team_size = 8; if (team_size > ExecSpace::concurrency()) @@ -1008,7 +1005,6 @@ struct ClassWithShmemSizeFunction { template void test_team_mulit_level_scratch_test_lambda() { #ifdef KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) Kokkos::View > errors; Kokkos::View d_errors("Errors"); errors = d_errors; @@ -1023,13 +1019,13 @@ void test_team_mulit_level_scratch_test_lambda() { Kokkos::MemoryTraits >::shmem_size(16); const int per_team1 = - 3 * Kokkos::View< - double *, ExecSpace, - Kokkos::MemoryTraits >::shmem_size(128000); + 3 * + Kokkos::View >::shmem_size(12800); const int per_thread1 = 3 * Kokkos::View >::shmem_size(16000); + Kokkos::MemoryTraits >::shmem_size(1600); int team_size = 8; if (team_size > ExecSpace::concurrency()) @@ -1070,7 +1066,6 @@ void test_team_mulit_level_scratch_test_lambda() { error); ASSERT_EQ(error, 0); #endif -#endif } } // namespace Test @@ -1102,7 +1097,7 @@ struct TestShmemSize { TestShmemSize() { run(); } void run() { - typedef Kokkos::View view_type; + typedef Kokkos::View view_type; size_t d1 = 5; size_t d2 = 6; @@ -1110,7 +1105,7 @@ struct TestShmemSize { size_t size = view_type::shmem_size(d1, d2, d3); - ASSERT_EQ(size, (d1 * d2 * d3 + 1) * sizeof(long)); + ASSERT_EQ(size, (d1 * d2 * d3 + 1) * sizeof(int64_t)); test_layout_stride(); } @@ -1137,17 +1132,25 @@ namespace Test { namespace { -template -struct TestTeamBroadcast { - typedef typename Kokkos::TeamPolicy::member_type - team_member; +template +struct TestTeamBroadcast; - TestTeamBroadcast(const size_t league_size) {} +template +struct TestTeamBroadcast< + ExecSpace, ScheduleType, T, + typename std::enable_if<(sizeof(T) == sizeof(char)), void>::type> { + using team_member = + typename Kokkos::TeamPolicy::member_type; + using memory_space = typename ExecSpace::memory_space; + using value_type = T; + + const value_type offset; + + TestTeamBroadcast(const size_t /*league_size*/, const value_type os_) + : offset(os_) {} struct BroadcastTag {}; - typedef long value_type; - KOKKOS_INLINE_FUNCTION void operator()(const team_member &teamMember, value_type &update) const { int lid = teamMember.league_rank(); @@ -1155,16 +1158,17 @@ struct TestTeamBroadcast { int ts = teamMember.team_size(); value_type parUpdate = 0; - value_type value = tid * 3 + 1; + value_type value = (value_type)(tid % 0xFF) + offset; + // broadcast boolean and value to team from source thread teamMember.team_broadcast(value, lid % ts); Kokkos::parallel_reduce( Kokkos::TeamThreadRange(teamMember, ts), - [&](const int j, value_type &teamUpdate) { teamUpdate += value; }, - parUpdate); + [&](const int /*j*/, value_type &teamUpdate) { teamUpdate |= value; }, + Kokkos::BOr(parUpdate)); - if (teamMember.team_rank() == 0) update += parUpdate; + if (teamMember.team_rank() == 0) update |= parUpdate; } KOKKOS_INLINE_FUNCTION @@ -1175,21 +1179,22 @@ struct TestTeamBroadcast { int ts = teamMember.team_size(); value_type parUpdate = 0; - value_type value = tid * 3 + 1; + value_type value = (value_type)(tid % 0xFF) + offset; - teamMember.team_broadcast([&](value_type &var) { var *= 2; }, value, + teamMember.team_broadcast([&](value_type &var) { var -= offset; }, value, lid % ts); Kokkos::parallel_reduce( Kokkos::TeamThreadRange(teamMember, ts), - [&](const int j, value_type &teamUpdate) { teamUpdate += value; }, - parUpdate); + [&](const int /*j*/, value_type &teamUpdate) { teamUpdate |= value; }, + Kokkos::BOr(parUpdate)); - if (teamMember.team_rank() == 0) update += parUpdate; + if (teamMember.team_rank() == 0) update |= parUpdate; } - static void test_teambroadcast(const size_t league_size) { - TestTeamBroadcast functor(league_size); + static void test_teambroadcast(const size_t league_size, + const value_type off) { + TestTeamBroadcast functor(league_size, off); typedef Kokkos::TeamPolicy policy_type; typedef Kokkos::TeamPolicy @@ -1203,20 +1208,166 @@ struct TestTeamBroadcast { ParallelReduceTag()); // printf("team_size=%d\n",team_size); // team_broadcast with value - long total = 0; + value_type total = 0; + + Kokkos::parallel_reduce(policy_type(league_size, team_size), functor, + Kokkos::BOr(total)); + + value_type expected_result = 0; + for (unsigned int i = 0; i < league_size; i++) { + value_type val = (value_type((i % team_size % 0xFF)) + off); + expected_result |= val; + } + ASSERT_EQ(expected_result, total); + // printf("team_broadcast with value --" + //"expected_result=%x," + //"total=%x\n",expected_result, total); + + // team_broadcast with function object + total = 0; + + Kokkos::parallel_reduce(policy_type_f(league_size, team_size), functor, + Kokkos::BOr(total)); + + expected_result = 0; + for (unsigned int i = 0; i < league_size; i++) { + value_type val = ((value_type)((i % team_size % 0xFF))); + expected_result |= val; + } + ASSERT_EQ(expected_result, total); + // printf("team_broadcast with function object --" + // "expected_result=%x," + // "total=%x\n",expected_result, total); + } +}; + +template +struct TestTeamBroadcast< + ExecSpace, ScheduleType, T, + typename std::enable_if<(sizeof(T) > sizeof(char)), void>::type> { + using team_member = + typename Kokkos::TeamPolicy::member_type; + using value_type = T; + + const value_type offset; + + TestTeamBroadcast(const size_t /*league_size*/, const value_type os_) + : offset(os_) {} + + struct BroadcastTag {}; + + KOKKOS_INLINE_FUNCTION + void operator()(const team_member &teamMember, value_type &update) const { + int lid = teamMember.league_rank(); + int tid = teamMember.team_rank(); + int ts = teamMember.team_size(); + + value_type parUpdate = 0; + value_type value = (value_type)(tid * 3) + offset; + + // setValue is used to determine if the update should be + // performed at the bottom. The thread id must match the + // thread id used to broadcast the value. It is the + // thread id that matches the league rank mod team size + // this way each league rank will use a different thread id + // which is likely not 0 + bool setValue = ((lid % ts) == tid); + + // broadcast boolean and value to team from source thread + teamMember.team_broadcast(value, lid % ts); + teamMember.team_broadcast(setValue, lid % ts); + + Kokkos::parallel_reduce( + Kokkos::TeamThreadRange(teamMember, ts), + [&](const int /*j*/, value_type &teamUpdate) { teamUpdate += value; }, + parUpdate); + + if (teamMember.team_rank() == 0 && setValue) update += parUpdate; + } + + KOKKOS_INLINE_FUNCTION + void operator()(const BroadcastTag &, const team_member &teamMember, + value_type &update) const { + int lid = teamMember.league_rank(); + int tid = teamMember.team_rank(); + int ts = teamMember.team_size(); + + value_type parUpdate = 0; + value_type value = (value_type)(tid * 3) + offset; + + // setValue is used to determine if the update should be + // performed at the bottom. The thread id must match the + // thread id used to broadcast the value. It is the + // thread id that matches the league rank mod team size + // this way each league rank will use a different thread id + // which is likely not 0. Note the logic is switched from + // above because the functor switches it back. + bool setValue = ((lid % ts) != tid); + + teamMember.team_broadcast([&](value_type &var) { var *= 2; }, value, + lid % ts); + teamMember.team_broadcast([&](bool &bVar) { bVar = !bVar; }, setValue, + lid % ts); + + Kokkos::parallel_reduce( + Kokkos::TeamThreadRange(teamMember, ts), + [&](const int /*j*/, value_type &teamUpdate) { teamUpdate += value; }, + parUpdate); + + if (teamMember.team_rank() == 0 && setValue) update += parUpdate; + } + + template + static inline + typename std::enable_if::value, void>::type + compare_test(ScalarType A, ScalarType B) { + if (std::is_same::value) { + ASSERT_DOUBLE_EQ((double)A, (double)B); + } else if (std::is_same::value) { + ASSERT_FLOAT_EQ((double)A, (double)B); + } else { + ASSERT_EQ(A, B); + } + } + + template + static inline + typename std::enable_if::value, void>::type + compare_test(ScalarType A, ScalarType B) { + ASSERT_EQ(A, B); + } + + static void test_teambroadcast(const size_t league_size, + const value_type off) { + TestTeamBroadcast functor(league_size, off); + + typedef Kokkos::TeamPolicy policy_type; + typedef Kokkos::TeamPolicy + policy_type_f; + + const int team_size = + policy_type_f(league_size, 1) + .team_size_max( + functor, + Kokkos:: + ParallelReduceTag()); // printf("team_size=%d\n",team_size); + + // team_broadcast with value + value_type total = 0; Kokkos::parallel_reduce(policy_type(league_size, team_size), functor, total); value_type expected_result = 0; for (unsigned int i = 0; i < league_size; i++) { - value_type val = ((i % team_size) * 3 + 1) * team_size; + value_type val = + (value_type((i % team_size) * 3) + off) * (value_type)team_size; expected_result += val; } - ASSERT_EQ(size_t(expected_result), - size_t(total)); // printf("team_broadcast with value -- - // expected_result=%d, - // total=%d\n",expected_result, total); + compare_test(expected_result, + total); // printf("team_broadcast with value -- + // expected_result=%d, + // total=%d\n",expected_result, total); // team_broadcast with function object total = 0; @@ -1226,13 +1377,14 @@ struct TestTeamBroadcast { expected_result = 0; for (unsigned int i = 0; i < league_size; i++) { - value_type val = ((i % team_size) * 3 + 1) * 2 * team_size; + value_type val = ((value_type)((i % team_size) * 3) + off) * + (value_type)(2 * team_size); expected_result += val; } - ASSERT_EQ(size_t(expected_result), - size_t(total)); // printf("team_broadcast with function object -- - // expected_result=%d, - // total=%d\n",expected_result, total); + compare_test(expected_result, + total); // printf("team_broadcast with function object -- + // expected_result=%d, + // total=%d\n",expected_result, total); } }; diff --git a/lib/kokkos/core/unit_test/TestTeamTeamSize.hpp b/lib/kokkos/core/unit_test/TestTeamTeamSize.hpp index 4a9b7c41a4..0703f90cf8 100644 --- a/lib/kokkos/core/unit_test/TestTeamTeamSize.hpp +++ b/lib/kokkos/core/unit_test/TestTeamTeamSize.hpp @@ -78,13 +78,13 @@ template struct FunctorFor { double static_array[S]; KOKKOS_INLINE_FUNCTION - void operator()(const typename PolicyType::member_type& team) const {} + void operator()(const typename PolicyType::member_type& /*team*/) const {} }; template struct FunctorReduce { double static_array[S]; KOKKOS_INLINE_FUNCTION - void operator()(const typename PolicyType::member_type& team, + void operator()(const typename PolicyType::member_type& /*team*/, MyArray& lval) const { for (int j = 0; j < N; j++) lval.values[j] += 1 + lval.values[0]; } @@ -191,7 +191,7 @@ struct PrintFunctor2 { }; TEST(TEST_CATEGORY, team_policy_max_scalar_without_plus_equal_k) { - using ExecSpace = Kokkos::DefaultExecutionSpace; + using ExecSpace = TEST_EXECSPACE; using ReducerType = Kokkos::MinMax; using ReducerValueType = typename ReducerType::value_type; using DynamicScheduleType = Kokkos::Schedule; diff --git a/lib/kokkos/core/unit_test/TestTeamVector.hpp b/lib/kokkos/core/unit_test/TestTeamVector.hpp index 4cf0ceaf47..c313988efc 100644 --- a/lib/kokkos/core/unit_test/TestTeamVector.hpp +++ b/lib/kokkos/core/unit_test/TestTeamVector.hpp @@ -622,7 +622,7 @@ struct functor_vec_single { Scalar value2 = 0; Kokkos::parallel_reduce( Kokkos::ThreadVectorRange(team, nStart, nEnd), - [&](int i, Scalar &val) { val += value; }, value2); + [&](int /*i*/, Scalar &val) { val += value; }, value2); if (value2 != (value * (nEnd - nStart))) { printf("FAILED vector_single broadcast %i %i %f %f\n", team.league_rank(), @@ -895,8 +895,7 @@ namespace Test { // Computes y^T*A*x // ( modified from kokkos-tutorials/GTC2016/Exercises/ThreeLevelPar ) -#if (!defined(KOKKOS_ENABLE_CUDA)) || \ - (defined(KOKKOS_ENABLE_CUDA_LAMBDA) && (8000 <= CUDA_VERSION)) +#if (!defined(KOKKOS_ENABLE_CUDA)) || defined(KOKKOS_ENABLE_CUDA_LAMBDA) template class TestTripleNestedReduce { public: diff --git a/lib/kokkos/core/unit_test/TestTeamVectorRange.hpp b/lib/kokkos/core/unit_test/TestTeamVectorRange.hpp index 71351c1981..cc83785185 100644 --- a/lib/kokkos/core/unit_test/TestTeamVectorRange.hpp +++ b/lib/kokkos/core/unit_test/TestTeamVectorRange.hpp @@ -233,7 +233,7 @@ struct functor_teamvector_for { typedef typename ExecutionSpace::scratch_memory_space shmem_space; typedef Kokkos::View shared_int; - unsigned team_shmem_size(int team_size) const { + unsigned team_shmem_size(int /*team_size*/) const { return shared_int::shmem_size(131); } diff --git a/lib/kokkos/core/unit_test/TestTemplateMetaFunctions.hpp b/lib/kokkos/core/unit_test/TestTemplateMetaFunctions.hpp index 1e25d46dfe..b9c16f506c 100644 --- a/lib/kokkos/core/unit_test/TestTemplateMetaFunctions.hpp +++ b/lib/kokkos/core/unit_test/TestTemplateMetaFunctions.hpp @@ -58,7 +58,7 @@ struct SumPlain { SumPlain(type view_) : view(view_) {} KOKKOS_INLINE_FUNCTION - void operator()(int i, Scalar& val) { val += Scalar(); } + void operator()(int /*i*/, Scalar& val) { val += Scalar(); } }; template @@ -80,7 +80,7 @@ struct SumInitJoinFinalValueType { } KOKKOS_INLINE_FUNCTION - void operator()(int i, value_type& val) const { val += value_type(); } + void operator()(int /*i*/, value_type& val) const { val += value_type(); } }; template @@ -102,7 +102,7 @@ struct SumInitJoinFinalValueType2 { } KOKKOS_INLINE_FUNCTION - void operator()(int i, value_type& val) const { val += value_type(); } + void operator()(int /*i*/, value_type& val) const { val += value_type(); } }; template @@ -157,7 +157,7 @@ struct SumWrongInitJoinFinalValueType { } KOKKOS_INLINE_FUNCTION - void operator()(int i, value_type& val) const { val += value_type(); } + void operator()(int /*i*/, value_type& val) const { val += value_type(); } }; template diff --git a/lib/kokkos/core/unit_test/TestViewAPI.hpp b/lib/kokkos/core/unit_test/TestViewAPI.hpp index 36d158d643..b9847773b6 100644 --- a/lib/kokkos/core/unit_test/TestViewAPI.hpp +++ b/lib/kokkos/core/unit_test/TestViewAPI.hpp @@ -841,6 +841,22 @@ struct TestViewMirror { ASSERT_EQ(a_org(5), a_h3(5)); } + template + static typename View::const_type view_const_cast(View const &v) { + return v; + } + + static void test_mirror_copy_const_data_type() { + using ExecutionSpace = typename DeviceType::execution_space; + int const N = 100; + Kokkos::View v("v", N); + Kokkos::deep_copy(v, 255); + auto v_m1 = Kokkos::create_mirror_view_and_copy( + Kokkos::DefaultHostExecutionSpace(), view_const_cast(v)); + auto v_m2 = Kokkos::create_mirror_view_and_copy(ExecutionSpace(), + view_const_cast(v)); + } + template struct CopyUnInit { typedef typename Kokkos::Impl::MirrorViewType< @@ -896,6 +912,7 @@ struct TestViewMirror { test_mirror_view >(); test_mirror_copy >(); test_mirror_copy >(); + test_mirror_copy_const_data_type(); test_mirror_no_initialize >(); test_mirror_no_initialize >(); } @@ -920,8 +937,6 @@ class TestViewAPI { dView4_unmanaged; typedef typename dView0::host_mirror_space host; - TestViewAPI() {} - static void run_test_view_operator_a() { { TestViewOperator f; @@ -1034,12 +1049,12 @@ class TestViewAPI { dView4 dx, dy, dz; hView4 hx, hy, hz; - ASSERT_TRUE(dx.data() == 0); - ASSERT_TRUE(dy.data() == 0); - ASSERT_TRUE(dz.data() == 0); - ASSERT_TRUE(hx.data() == 0); - ASSERT_TRUE(hy.data() == 0); - ASSERT_TRUE(hz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); + ASSERT_TRUE(dy.data() == nullptr); + ASSERT_TRUE(dz.data() == nullptr); + ASSERT_TRUE(hx.data() == nullptr); + ASSERT_TRUE(hy.data() == nullptr); + ASSERT_TRUE(hz.data() == nullptr); ASSERT_EQ(dx.extent(0), 0u); ASSERT_EQ(dy.extent(0), 0u); ASSERT_EQ(dz.extent(0), 0u); @@ -1096,11 +1111,11 @@ class TestViewAPI { ASSERT_EQ(dx.use_count(), size_t(2)); - ASSERT_FALSE(dx.data() == 0); - ASSERT_FALSE(const_dx.data() == 0); - ASSERT_FALSE(unmanaged_dx.data() == 0); - ASSERT_FALSE(unmanaged_from_ptr_dx.data() == 0); - ASSERT_FALSE(dy.data() == 0); + ASSERT_FALSE(dx.data() == nullptr); + ASSERT_FALSE(const_dx.data() == nullptr); + ASSERT_FALSE(unmanaged_dx.data() == nullptr); + ASSERT_FALSE(unmanaged_from_ptr_dx.data() == nullptr); + ASSERT_FALSE(dy.data() == nullptr); ASSERT_NE(dx, dy); ASSERT_EQ(dx.extent(0), unsigned(N0)); @@ -1139,6 +1154,7 @@ class TestViewAPI { Kokkos::deep_copy(typename hView4::execution_space(), dx, hx); Kokkos::deep_copy(typename hView4::execution_space(), dy, dx); Kokkos::deep_copy(typename hView4::execution_space(), hy, dy); + typename dView4::execution_space().fence(); for (size_t ip = 0; ip < N0; ++ip) for (size_t i1 = 0; i1 < N1; ++i1) @@ -1149,6 +1165,7 @@ class TestViewAPI { Kokkos::deep_copy(typename hView4::execution_space(), dx, T(0)); Kokkos::deep_copy(typename hView4::execution_space(), hx, dx); + typename dView4::execution_space().fence(); for (size_t ip = 0; ip < N0; ++ip) for (size_t i1 = 0; i1 < N1; ++i1) @@ -1172,6 +1189,7 @@ class TestViewAPI { Kokkos::deep_copy(typename dView4::execution_space(), dx, hx); Kokkos::deep_copy(typename dView4::execution_space(), dy, dx); Kokkos::deep_copy(typename dView4::execution_space(), hy, dy); + typename dView4::execution_space().fence(); for (size_t ip = 0; ip < N0; ++ip) for (size_t i1 = 0; i1 < N1; ++i1) @@ -1182,6 +1200,7 @@ class TestViewAPI { Kokkos::deep_copy(typename dView4::execution_space(), dx, T(0)); Kokkos::deep_copy(typename dView4::execution_space(), hx, dx); + typename dView4::execution_space().fence(); for (size_t ip = 0; ip < N0; ++ip) for (size_t i1 = 0; i1 < N1; ++i1) @@ -1233,19 +1252,19 @@ class TestViewAPI { ASSERT_NE(dx, dz); dx = dView4(); - ASSERT_TRUE(dx.data() == 0); - ASSERT_FALSE(dy.data() == 0); - ASSERT_FALSE(dz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); + ASSERT_FALSE(dy.data() == nullptr); + ASSERT_FALSE(dz.data() == nullptr); dy = dView4(); - ASSERT_TRUE(dx.data() == 0); - ASSERT_TRUE(dy.data() == 0); - ASSERT_FALSE(dz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); + ASSERT_TRUE(dy.data() == nullptr); + ASSERT_FALSE(dz.data() == nullptr); dz = dView4(); - ASSERT_TRUE(dx.data() == 0); - ASSERT_TRUE(dy.data() == 0); - ASSERT_TRUE(dz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); + ASSERT_TRUE(dy.data() == nullptr); + ASSERT_TRUE(dz.data() == nullptr); } static void run_test_deep_copy_empty() { @@ -1450,6 +1469,11 @@ class TestViewAPI { } static void run_test_error() { +#ifdef KOKKOS_ENABLE_OPENMPTARGET + if (std::is_same::value) + return; +#endif auto alloc_size = std::numeric_limits::max() - 42; try { auto should_always_fail = dView1("hello_world_failure", alloc_size); diff --git a/lib/kokkos/core/unit_test/TestViewAPI_e.hpp b/lib/kokkos/core/unit_test/TestViewAPI_e.hpp index e433535236..40ae083630 100644 --- a/lib/kokkos/core/unit_test/TestViewAPI_e.hpp +++ b/lib/kokkos/core/unit_test/TestViewAPI_e.hpp @@ -204,13 +204,13 @@ TEST(TEST_CATEGORY, anonymous_space) { test_anonymous_space(); } template struct TestViewOverloadResolution { // Overload based on value_type and rank - static int foo(Kokkos::View a) { return 1; } - static int foo(Kokkos::View a) { return 2; } - static int foo(Kokkos::View a) { return 3; } + static int foo(Kokkos::View /*a*/) { return 1; } + static int foo(Kokkos::View /*a*/) { return 2; } + static int foo(Kokkos::View /*a*/) { return 3; } // Overload based on compile time dimensions - static int bar(Kokkos::View a) { return 4; } - static int bar(Kokkos::View a) { return 5; } + static int bar(Kokkos::View /*a*/) { return 4; } + static int bar(Kokkos::View /*a*/) { return 5; } static void test_function_overload() { Kokkos::View::test_function_overload(); } } // namespace Test + +#include diff --git a/lib/kokkos/core/unit_test/TestViewCopy.hpp b/lib/kokkos/core/unit_test/TestViewCopy.hpp index 27018e7f7b..6db2d3a4f6 100644 --- a/lib/kokkos/core/unit_test/TestViewCopy.hpp +++ b/lib/kokkos/core/unit_test/TestViewCopy.hpp @@ -52,124 +52,446 @@ namespace Test { namespace { -template -struct TestViewCopy { - using InExecSpace = ExecSpace; - - static void test_view_copy(const int dim0, const int dim1, const int dim2) { -#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_ROCM) - // ExecSpace = CudaUVM, CudaHostPinned - // This test will fail at runtime with an illegal memory access if something - // goes wrong Test 1: deep_copy from host_mirror_space to ExecSpace and - // ExecSpace back to host_mirror_space - { - typedef Kokkos::View Rank4ViewType; - Rank4ViewType view_4; - view_4 = Rank4ViewType("view_4", dim0, dim1, dim2, dim2); - - typedef typename Kokkos::Impl::is_space< - InExecSpace>::host_mirror_space::execution_space host_space_type; - Kokkos::View srcView( - "srcView", dim2, dim2); - - // Strided dst view - auto dstView = - Kokkos::subview(view_4, 0, 0, Kokkos::ALL(), Kokkos::ALL()); - - // host_mirror_space to ExecSpace - Kokkos::deep_copy(dstView, srcView); - Kokkos::fence(); - - // ExecSpace to host_mirror_space - Kokkos::deep_copy(srcView, dstView); - Kokkos::fence(); +template +struct CheckResult { + using value_type = typename ViewType::non_const_value_type; + ViewType v; + value_type value; + CheckResult(ViewType v_, value_type value_) : v(v_), value(value_){}; + KOKKOS_FUNCTION + void operator()(const int i, int& lsum) const { + for (int j = 0; j < static_cast(v.extent(1)); j++) { + if (v.access(i, j) != value) lsum++; } + } +}; - // Test 2: deep_copy from Cuda to ExecSpace and ExecSpace back to Cuda - { - typedef Kokkos::View Rank4ViewType; - Rank4ViewType view_4; - view_4 = Rank4ViewType("view_4", dim0, dim1, dim2, dim2); - -#if defined(KOKKOS_ENABLE_CUDA) - typedef typename std::conditional< - Kokkos::Impl::MemorySpaceAccess< - Kokkos::CudaSpace, - typename InExecSpace::memory_space>::accessible, - Kokkos::CudaSpace, InExecSpace>::type space_type; -#endif -#if defined(KOKKOS_ENABLE_ROCM) - typedef typename std::conditional< - Kokkos::Impl::MemorySpaceAccess< - Kokkos::ROCmSpace, - typename InExecSpace::memory_space>::accessible, - Kokkos::ROCmSpace, InExecSpace>::type space_type; -#endif - Kokkos::View srcView( - "srcView", dim2, dim2); - - // Strided dst view - auto dstView = - Kokkos::subview(view_4, 0, 0, Kokkos::ALL(), Kokkos::ALL()); - - // Cuda to ExecSpace - Kokkos::deep_copy(dstView, srcView); - Kokkos::fence(); - - // ExecSpace to Cuda - Kokkos::deep_copy(srcView, dstView); - Kokkos::fence(); - } - - // Test 3: deep_copy from host_space to ExecSpace and ExecSpace back to - // host_space - { - typedef Kokkos::View Rank4ViewType; - Rank4ViewType view_4; - view_4 = Rank4ViewType("view_4", dim0, dim1, dim2, dim2); - - typedef Kokkos::HostSpace host_space_type; - Kokkos::View srcView( - "srcView", dim2, dim2); - - // Strided dst view - auto dstView = - Kokkos::subview(view_4, 0, 0, Kokkos::ALL(), Kokkos::ALL()); - - // host_space to ExecSpace - Kokkos::deep_copy(dstView, srcView); - Kokkos::fence(); - - // ExecSpace to host_space - Kokkos::deep_copy(srcView, dstView); - Kokkos::fence(); - } -#endif - } // end test_view_copy - -}; // end struct +template +bool run_check(ViewType v, typename ViewType::value_type value) { + using exec_space = typename ViewType::memory_space::execution_space; + int errors = 0; + Kokkos::fence(); + Kokkos::parallel_reduce(Kokkos::RangePolicy(0, v.extent(0)), + CheckResult(v, value), errors); + return errors == 0; +} } // namespace TEST(TEST_CATEGORY, view_copy_tests) { - // Only include this file to be compiled with CudaUVM and CudaHostPinned - TestViewCopy::test_view_copy(4, 2, 3); - TestViewCopy::test_view_copy(4, 2, 0); + int N = 10000; + int M = 10; + + Kokkos::View defaulted; + Kokkos::View a("A", N, M); + Kokkos::View b("B", N, M); + auto h_a = Kokkos::create_mirror(a); + auto h_b = Kokkos::create_mirror(b); + auto m_a = Kokkos::create_mirror_view(a); + auto s_a = Kokkos::subview(a, Kokkos::ALL, 1); + auto s_b = Kokkos::subview(b, Kokkos::ALL, 1); + auto hs_a = Kokkos::subview(h_a, Kokkos::ALL, 1); + auto hs_b = Kokkos::subview(h_b, Kokkos::ALL, 1); + auto dev = typename TEST_EXECSPACE::execution_space(); + auto host = Kokkos::DefaultHostExecutionSpace(); + + constexpr bool DevExecCanAccessHost = + Kokkos::Impl::SpaceAccessibility::accessible; + + constexpr bool HostExecCanAccessDev = Kokkos::Impl::SpaceAccessibility< + typename Kokkos::HostSpace::execution_space, + typename TEST_EXECSPACE::memory_space>::accessible; + + // Contiguous copies + { Kokkos::deep_copy(defaulted, defaulted); } + { + Kokkos::deep_copy(a, 1); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(a, a); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(m_a, a); + ASSERT_TRUE(run_check(m_a, 1)); + } + { + Kokkos::deep_copy(m_a, 2); + ASSERT_TRUE(run_check(m_a, 2)); + } + { + Kokkos::deep_copy(a, m_a); + ASSERT_TRUE(run_check(a, 2)); + } + { + Kokkos::deep_copy(b, 3); + ASSERT_TRUE(run_check(b, 3)); + } + { + Kokkos::deep_copy(h_a, 4); + ASSERT_TRUE(run_check(h_a, 4)); + } + { + Kokkos::deep_copy(a, b); + ASSERT_TRUE(run_check(a, 3)); + } + { + Kokkos::deep_copy(h_b, h_a); + ASSERT_TRUE(run_check(h_b, 4)); + } + { + Kokkos::deep_copy(h_a, a); + ASSERT_TRUE(run_check(h_a, 3)); + } + { + Kokkos::deep_copy(b, h_b); + ASSERT_TRUE(run_check(b, 4)); + } + // Non contiguous copies + { + Kokkos::deep_copy(s_a, 5); + ASSERT_TRUE(run_check(s_a, 5)); + } + { + Kokkos::deep_copy(hs_a, 6); + ASSERT_TRUE(run_check(hs_a, 6)); + } + { + Kokkos::deep_copy(s_b, s_a); + ASSERT_TRUE(run_check(s_b, 5)); + } + { + Kokkos::deep_copy(hs_b, hs_a); + ASSERT_TRUE(run_check(hs_b, 6)); + } + if (DevExecCanAccessHost || HostExecCanAccessDev) { + { + Kokkos::deep_copy(hs_b, s_b); + ASSERT_TRUE(run_check(hs_b, 5)); + } + { + Kokkos::deep_copy(s_a, hs_a); + ASSERT_TRUE(run_check(s_a, 6)); + } + } + + // Contiguous copies + { Kokkos::deep_copy(dev, defaulted, defaulted); } + { + Kokkos::deep_copy(dev, a, 1); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(dev, a, a); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(dev, m_a, a); + ASSERT_TRUE(run_check(m_a, 1)); + } + { + Kokkos::deep_copy(dev, m_a, 2); + ASSERT_TRUE(run_check(m_a, 2)); + } + { + Kokkos::deep_copy(dev, a, m_a); + ASSERT_TRUE(run_check(a, 2)); + } + { + Kokkos::deep_copy(dev, b, 3); + ASSERT_TRUE(run_check(b, 3)); + } + { + Kokkos::deep_copy(dev, h_a, 4); + ASSERT_TRUE(run_check(h_a, 4)); + } + { + Kokkos::deep_copy(dev, a, b); + ASSERT_TRUE(run_check(a, 3)); + } + { + Kokkos::deep_copy(dev, h_b, h_a); + ASSERT_TRUE(run_check(h_b, 4)); + } + { + Kokkos::deep_copy(dev, h_a, a); + ASSERT_TRUE(run_check(h_a, 3)); + } + { + Kokkos::deep_copy(dev, b, h_b); + ASSERT_TRUE(run_check(b, 4)); + } + // Non contiguous copies + { + Kokkos::deep_copy(dev, s_a, 5); + ASSERT_TRUE(run_check(s_a, 5)); + } + { + Kokkos::deep_copy(dev, hs_a, 6); + ASSERT_TRUE(run_check(hs_a, 6)); + } + { + Kokkos::deep_copy(dev, s_b, s_a); + ASSERT_TRUE(run_check(s_b, 5)); + } + { + Kokkos::deep_copy(dev, hs_b, hs_a); + ASSERT_TRUE(run_check(hs_b, 6)); + } + if (DevExecCanAccessHost || HostExecCanAccessDev) { + { + Kokkos::deep_copy(dev, hs_b, s_b); + ASSERT_TRUE(run_check(hs_b, 5)); + } + { + Kokkos::deep_copy(dev, s_a, hs_a); + ASSERT_TRUE(run_check(s_a, 6)); + } + } + + // Contiguous copies + { Kokkos::deep_copy(host, defaulted, defaulted); } + { + Kokkos::deep_copy(host, a, 1); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(host, a, a); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(host, m_a, a); + ASSERT_TRUE(run_check(m_a, 1)); + } + { + Kokkos::deep_copy(host, m_a, 2); + ASSERT_TRUE(run_check(m_a, 2)); + } + { + Kokkos::deep_copy(host, a, m_a); + ASSERT_TRUE(run_check(a, 2)); + } + { + Kokkos::deep_copy(host, b, 3); + ASSERT_TRUE(run_check(b, 3)); + } + { + Kokkos::deep_copy(host, h_a, 4); + ASSERT_TRUE(run_check(h_a, 4)); + } + { + Kokkos::deep_copy(host, a, b); + ASSERT_TRUE(run_check(a, 3)); + } + { + Kokkos::deep_copy(host, h_b, h_a); + ASSERT_TRUE(run_check(h_b, 4)); + } + { + Kokkos::deep_copy(host, h_a, a); + ASSERT_TRUE(run_check(h_a, 3)); + } + { + Kokkos::deep_copy(host, b, h_b); + ASSERT_TRUE(run_check(b, 4)); + } + // Non contiguous copies + { + Kokkos::deep_copy(host, s_a, 5); + ASSERT_TRUE(run_check(s_a, 5)); + } + { + Kokkos::deep_copy(host, hs_a, 6); + ASSERT_TRUE(run_check(hs_a, 6)); + } + { + Kokkos::deep_copy(host, s_b, s_a); + ASSERT_TRUE(run_check(s_b, 5)); + } + { + Kokkos::deep_copy(host, hs_b, hs_a); + ASSERT_TRUE(run_check(hs_b, 6)); + } + if (DevExecCanAccessHost || HostExecCanAccessDev) { + { + Kokkos::deep_copy(host, hs_b, s_b); + ASSERT_TRUE(run_check(hs_b, 5)); + } + { + Kokkos::deep_copy(host, s_a, hs_a); + ASSERT_TRUE(run_check(s_a, 6)); + } + } +} + +TEST(TEST_CATEGORY, view_copy_tests_rank_0) { + Kokkos::View defaulted; + Kokkos::View a("A"); + Kokkos::View b("B"); + auto h_a = Kokkos::create_mirror(a); + auto h_b = Kokkos::create_mirror(b); + auto m_a = Kokkos::create_mirror_view(a); + auto dev = typename TEST_EXECSPACE::execution_space(); + auto host = Kokkos::DefaultHostExecutionSpace(); + + // No execution space + { Kokkos::deep_copy(defaulted, defaulted); } + { + Kokkos::deep_copy(a, 1); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(a, a); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(m_a, a); + ASSERT_TRUE(run_check(m_a, 1)); + } + { + Kokkos::deep_copy(m_a, 2); + ASSERT_TRUE(run_check(m_a, 2)); + } + { + Kokkos::deep_copy(a, m_a); + ASSERT_TRUE(run_check(a, 2)); + } + { + Kokkos::deep_copy(b, 3); + ASSERT_TRUE(run_check(b, 3)); + } + { + Kokkos::deep_copy(h_a, 4); + ASSERT_TRUE(run_check(h_a, 4)); + } + { + Kokkos::deep_copy(a, b); + ASSERT_TRUE(run_check(a, 3)); + } + { + Kokkos::deep_copy(h_b, h_a); + ASSERT_TRUE(run_check(h_b, 4)); + } + { + Kokkos::deep_copy(h_a, a); + ASSERT_TRUE(run_check(h_a, 3)); + } + { + Kokkos::deep_copy(b, h_b); + ASSERT_TRUE(run_check(b, 4)); + } + + // Device + { Kokkos::deep_copy(dev, defaulted, defaulted); } + { + Kokkos::deep_copy(dev, a, 1); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(dev, a, a); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(dev, m_a, a); + ASSERT_TRUE(run_check(m_a, 1)); + } + { + Kokkos::deep_copy(dev, m_a, 2); + ASSERT_TRUE(run_check(m_a, 2)); + } + { + Kokkos::deep_copy(dev, a, m_a); + ASSERT_TRUE(run_check(a, 2)); + } + { + Kokkos::deep_copy(dev, b, 3); + ASSERT_TRUE(run_check(b, 3)); + } + { + Kokkos::deep_copy(dev, h_a, 4); + ASSERT_TRUE(run_check(h_a, 4)); + } + { + Kokkos::deep_copy(dev, a, b); + ASSERT_TRUE(run_check(a, 3)); + } + { + Kokkos::deep_copy(dev, h_b, h_a); + ASSERT_TRUE(run_check(h_b, 4)); + } + { + Kokkos::deep_copy(dev, h_a, a); + ASSERT_TRUE(run_check(h_a, 3)); + } + { + Kokkos::deep_copy(dev, b, h_b); + ASSERT_TRUE(run_check(b, 4)); + } + + // Host + { Kokkos::deep_copy(host, defaulted, defaulted); } + { + Kokkos::deep_copy(host, a, 1); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(host, a, a); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(host, m_a, a); + ASSERT_TRUE(run_check(m_a, 1)); + } + { + Kokkos::deep_copy(host, m_a, 2); + ASSERT_TRUE(run_check(m_a, 2)); + } + { + Kokkos::deep_copy(host, a, m_a); + ASSERT_TRUE(run_check(a, 2)); + } + { + Kokkos::deep_copy(host, b, 3); + ASSERT_TRUE(run_check(b, 3)); + } + { + Kokkos::deep_copy(host, h_a, 4); + ASSERT_TRUE(run_check(h_a, 4)); + } + { + Kokkos::deep_copy(host, a, b); + ASSERT_TRUE(run_check(a, 3)); + } + { + Kokkos::deep_copy(host, h_b, h_a); + ASSERT_TRUE(run_check(h_b, 4)); + } + { + Kokkos::deep_copy(host, h_a, a); + ASSERT_TRUE(run_check(h_a, 3)); + } + { + Kokkos::deep_copy(host, b, h_b); + ASSERT_TRUE(run_check(b, 4)); + } } TEST(TEST_CATEGORY, view_copy_degenerated) { - // Only include this file to be compiled with CudaUVM and CudaHostPinned - Kokkos::View> v_um_def_1; - Kokkos::View> v_um_1( - reinterpret_cast(-1), 0); - Kokkos::View v_m_def_1; - Kokkos::View v_m_1("v_m_1", 0); + Kokkos::View> + v_um_def_1; + Kokkos::View> + v_um_1(reinterpret_cast(-1), 0); + Kokkos::View v_m_def_1; + Kokkos::View v_m_1("v_m_1", 0); - Kokkos::View> v_um_def_2; - Kokkos::View> v_um_2( - reinterpret_cast(-1), 0); - Kokkos::View v_m_def_2; - Kokkos::View v_m_2("v_m_2", 0); + Kokkos::View> + v_um_def_2; + Kokkos::View> + v_um_2(reinterpret_cast(-1), 0); + Kokkos::View v_m_def_2; + Kokkos::View v_m_2("v_m_2", 0); Kokkos::deep_copy(v_um_def_1, v_um_def_2); Kokkos::deep_copy(v_um_def_1, v_um_2); diff --git a/lib/kokkos/core/unit_test/TestViewIsAssignable.hpp b/lib/kokkos/core/unit_test/TestViewIsAssignable.hpp new file mode 100644 index 0000000000..fcf9f75f37 --- /dev/null +++ b/lib/kokkos/core/unit_test/TestViewIsAssignable.hpp @@ -0,0 +1,145 @@ +#include + +namespace Test { +namespace Impl { +template +struct TestAssignability { + using mapping_type = + Kokkos::Impl::ViewMapping; + + template + static void try_assign( + ViewTypeDst& dst, ViewTypeSrc& src, + typename std::enable_if::type* = nullptr) { + dst = src; + } + + template + static void try_assign( + ViewTypeDst&, ViewTypeSrc&, + typename std::enable_if::type* = nullptr) { + Kokkos::Impl::throw_runtime_exception( + "TestAssignability::try_assign: Unexpected call path"); + } + + template + static void test(bool always, bool sometimes, Dimensions... dims) { + ViewTypeDst dst; + ViewTypeSrc src("SRC", dims...); + + bool is_always_assignable = + Kokkos::is_always_assignable::value; + bool is_assignable = Kokkos::is_assignable(dst, src); + + // Print out if there is an error with typeid so you can just filter the + // output with c++filt -t to see which assignment causes the error. + if (is_always_assignable != always || is_assignable != sometimes) + printf( + "is_always_assignable: %i (%i), is_assignable: %i (%i) [ %s ] to [ " + "%s ]\n", + is_always_assignable ? 1 : 0, always ? 1 : 0, is_assignable ? 1 : 0, + sometimes ? 1 : 0, typeid(ViewTypeSrc).name(), + typeid(ViewTypeDst).name()); + if (sometimes) { + ASSERT_NO_THROW(try_assign(dst, src)); + } + ASSERT_EQ(always, is_always_assignable); + ASSERT_EQ(sometimes, is_assignable); + } +}; + +} // namespace Impl + +TEST(TEST_CATEGORY, view_is_assignable) { + using namespace Kokkos; + using h_exec = typename DefaultHostExecutionSpace::memory_space; + using d_exec = typename TEST_EXECSPACE::memory_space; + using left = LayoutLeft; + using right = LayoutRight; + using stride = LayoutStride; + // Static/Dynamic Extents + Impl::TestAssignability, + View>::test(true, true, 10); + Impl::TestAssignability, + View>::test(false, true, 10); + Impl::TestAssignability, + View>::test(false, false, 10); + Impl::TestAssignability, + View>::test(true, true); + Impl::TestAssignability, + View>::test(true, true); + Impl::TestAssignability, + View>::test(false, false); + Impl::TestAssignability, + View>::test(true, true, 10, 10); + Impl::TestAssignability, + View>::test(false, true, 10, 10); + Impl::TestAssignability, + View>::test(false, false, 10, + 10); + Impl::TestAssignability, + View>::test(true, true, 10); + Impl::TestAssignability, + View>::test(true, true, 10); + Impl::TestAssignability, + View>::test(false, false, + 10); + + // Mismatch value_type + Impl::TestAssignability, + View>::test(false, false, 10); + + // Layout assignment + Impl::TestAssignability, + View>::test(true, true, 10); + + // This could be made possible (due to the degenerate nature of the views) but + // we do not allow this yet + // TestAssignability,View>::test(false,true,10,1); + Impl::TestAssignability, + View>::test(false, false, 10, + 2); + Impl::TestAssignability, + View>::test(true, true, 10, 2); + Impl::TestAssignability, + View>::test(true, true, 10, 2); + + // Space Assignment + bool expected = Kokkos::Impl::MemorySpaceAccess::assignable; + Impl::TestAssignability, + View>::test(expected, expected, + 10); + expected = Kokkos::Impl::MemorySpaceAccess::assignable; + Impl::TestAssignability, + View>::test(expected, expected, + 10); + + // reference type and const-qualified types + using SomeViewType = View; +#if defined(KOKKOS_ENABLE_CXX17) + static_assert(is_always_assignable_v); + static_assert(is_always_assignable_v); + static_assert(is_always_assignable_v); + static_assert(is_always_assignable_v); + static_assert(is_always_assignable_v); + static_assert(is_always_assignable_v); + static_assert(is_always_assignable_v); + static_assert(is_always_assignable_v); +#else + static_assert(is_always_assignable::value, ""); + static_assert(is_always_assignable::value, ""); + static_assert(is_always_assignable::value, + ""); + static_assert(is_always_assignable::value, + ""); + static_assert(is_always_assignable::value, ""); + static_assert(is_always_assignable::value, ""); + static_assert(is_always_assignable::value, + ""); + static_assert(is_always_assignable::value, + ""); +#endif +} +} // namespace Test diff --git a/lib/kokkos/core/unit_test/TestViewLayoutStrideAssignment.hpp b/lib/kokkos/core/unit_test/TestViewLayoutStrideAssignment.hpp index 5e373dbbc9..583d135f35 100644 --- a/lib/kokkos/core/unit_test/TestViewLayoutStrideAssignment.hpp +++ b/lib/kokkos/core/unit_test/TestViewLayoutStrideAssignment.hpp @@ -56,7 +56,7 @@ namespace Test { TEST(TEST_CATEGORY, view_layoutstride_left_to_layoutleft_assignment) { typedef TEST_EXECSPACE exec_space; - auto t = time(0); + auto t = time(nullptr); srand(t); // Use current time as seed for random generator printf("view_layoutstride_left_to_layoutleft_assignment: srand(%lu)\n", size_t(t)); @@ -338,7 +338,7 @@ TEST(TEST_CATEGORY, view_layoutstride_left_to_layoutleft_assignment) { TEST(TEST_CATEGORY, view_layoutstride_right_to_layoutright_assignment) { typedef TEST_EXECSPACE exec_space; - auto t = time(0); + auto t = time(nullptr); srand(t); // Use current time as seed for random generator printf("view_layoutstride_right_to_layoutright_assignment: srand(%lu)\n", size_t(t)); @@ -620,7 +620,7 @@ TEST(TEST_CATEGORY, view_layoutstride_right_to_layoutright_assignment) { TEST(TEST_CATEGORY_DEATH, view_layoutstride_right_to_layoutleft_assignment) { typedef TEST_EXECSPACE exec_space; - auto t = time(0); + auto t = time(nullptr); srand(t); // Use current time as seed for random generator printf("view_layoutstride_right_to_layoutleft_assignment: srand(%lu)\n", size_t(t)); @@ -771,7 +771,7 @@ TEST(TEST_CATEGORY_DEATH, view_layoutstride_right_to_layoutleft_assignment) { TEST(TEST_CATEGORY_DEATH, view_layoutstride_left_to_layoutright_assignment) { typedef TEST_EXECSPACE exec_space; - auto t = time(0); + auto t = time(nullptr); srand(t); // Use current time as seed for random generator printf("view_layoutstride_left_to_layoutright_assignment: srand(%lu)\n", size_t(t)); diff --git a/lib/kokkos/core/unit_test/TestViewLayoutTiled.hpp b/lib/kokkos/core/unit_test/TestViewLayoutTiled.hpp index 2526a3e7e3..75eef2d69e 100644 --- a/lib/kokkos/core/unit_test/TestViewLayoutTiled.hpp +++ b/lib/kokkos/core/unit_test/TestViewLayoutTiled.hpp @@ -112,9 +112,10 @@ struct TestViewLayoutTiled { Kokkos::Iterate::Right, Kokkos::Iterate::Right, T0, T1, T2, T3> LayoutRR_4D_2x4x4x2; +#if !defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) + static void test_view_layout_tiled_2d(const int, const int) { +#else static void test_view_layout_tiled_2d(const int N0, const int N1) { -#if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) const int FT = T0 * T1; const int NT0 = int(std::ceil(N0 / T0)); @@ -382,15 +383,14 @@ struct TestViewLayoutTiled { ASSERT_EQ(counter_subview, long(0)); ASSERT_EQ(counter_inc, long(0)); } // end scope -#endif #endif } // end test_view_layout_tiled_2d +#if !defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) + static void test_view_layout_tiled_3d(const int, const int, const int) { +#else static void test_view_layout_tiled_3d(const int N0, const int N1, const int N2) { -#if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) - const int FT = T0 * T1 * T2; const int NT0 = int(std::ceil(N0 / T0)); @@ -680,14 +680,15 @@ struct TestViewLayoutTiled { ASSERT_EQ(counter_subview, long(0)); ASSERT_EQ(counter_inc, long(0)); } // end scope -#endif #endif } // end test_view_layout_tiled_3d +#if !defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) + static void test_view_layout_tiled_4d(const int, const int, const int, + const int){ +#else static void test_view_layout_tiled_4d(const int N0, const int N1, const int N2, const int N3) { -#if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) const int FT = T0 * T1 * T2 * T3; const int NT0 = int(std::ceil(N0 / T0)); @@ -1027,7 +1028,6 @@ struct TestViewLayoutTiled { ASSERT_EQ(counter_subview, long(0)); ASSERT_EQ(counter_inc, long(0)); } // end scope -#endif #endif } // end test_view_layout_tiled_4d diff --git a/lib/kokkos/core/unit_test/TestViewMapping_a.hpp b/lib/kokkos/core/unit_test/TestViewMapping_a.hpp index 5e27cc5e51..7bd6353c2b 100644 --- a/lib/kokkos/core/unit_test/TestViewMapping_a.hpp +++ b/lib/kokkos/core/unit_test/TestViewMapping_a.hpp @@ -77,7 +77,9 @@ void test_view_mapping() { typedef Kokkos::Impl::ViewDimension<0, 0, 0, 0, 0, 0, 0, 0> dim_s0_s0_s0_s0_s0_s0_s0_s0; - // Fully static dimensions should not be larger than an int. +// Fully static dimensions should not be larger than an int. +#ifndef _WIN32 // For some reason on Windows the first test here fails with + // size being 7 bytes on windows??? ASSERT_LE(sizeof(dim_0), sizeof(int)); ASSERT_LE(sizeof(dim_s2), sizeof(int)); ASSERT_LE(sizeof(dim_s2_s3), sizeof(int)); @@ -98,7 +100,7 @@ void test_view_mapping() { ASSERT_EQ(sizeof(dim_s0_s0_s0_s0_s0_s0), 6 * sizeof(unsigned)); ASSERT_LE(sizeof(dim_s0_s0_s0_s0_s0_s0_s0), 8 * sizeof(unsigned)); ASSERT_EQ(sizeof(dim_s0_s0_s0_s0_s0_s0_s0_s0), 8 * sizeof(unsigned)); - +#endif static_assert(int(dim_0::rank) == int(0), ""); static_assert(int(dim_0::rank_dynamic) == int(0), ""); static_assert(int(dim_0::ArgN0) == 1, ""); @@ -900,7 +902,7 @@ void test_view_mapping() { ASSERT_TRUE(offset.span_is_contiguous()); Kokkos::Impl::ViewMapping v( - Kokkos::Impl::ViewCtorProp((int*)0), stride); + Kokkos::Impl::ViewCtorProp(nullptr), stride); } { @@ -1076,17 +1078,20 @@ void test_view_mapping() { typedef typename Kokkos::Impl::HostMirror::Space::execution_space host_exec_space; - Kokkos::parallel_for( - Kokkos::RangePolicy(0, 10), KOKKOS_LAMBDA(int) { - // 'a' is captured by copy, and the capture mechanism converts 'a' to + int errors = 0; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(0, 10), + KOKKOS_LAMBDA(int, int& e) { // an unmanaged copy. When the parallel dispatch accepts a move for // the lambda, this count should become 1. - ASSERT_EQ(a.use_count(), 2); + if (a.use_count() != 2) ++e; V x = a; - ASSERT_EQ(a.use_count(), 2); - ASSERT_EQ(x.use_count(), 2); - }); + if (a.use_count() != 2) ++e; + if (x.use_count() != 2) ++e; + }, + errors); + ASSERT_EQ(errors, 0); #endif // #if !defined( KOKKOS_ENABLE_CUDA_LAMBDA ) } } @@ -1106,7 +1111,7 @@ struct TestViewMapOperator { #endif KOKKOS_INLINE_FUNCTION - void test_left(size_t i0, long& error_count) const { + void test_left(size_t i0, int64_t& error_count) const { #ifdef KOKKOS_ENABLE_DEPPRECATED_CODE typename ViewType::value_type* const base_ptr = &v(0, 0, 0, 0, 0, 0, 0, 0); #else @@ -1121,7 +1126,7 @@ struct TestViewMapOperator { const size_t n6 = v.extent(6); const size_t n7 = v.extent(7); - long offset = 0; + int64_t offset = 0; for (size_t i7 = 0; i7 < n7; ++i7) for (size_t i6 = 0; i6 < n6; ++i6) @@ -1131,9 +1136,10 @@ struct TestViewMapOperator { for (size_t i2 = 0; i2 < n2; ++i2) for (size_t i1 = 0; i1 < n1; ++i1) { #ifdef KOKKOS_ENABLE_DEPRECATED_CODE - const long d = &v(i0, i1, i2, i3, i4, i5, i6, i7) - base_ptr; + const int64_t d = + &v(i0, i1, i2, i3, i4, i5, i6, i7) - base_ptr; #else - const long d = + const int64_t d = &v.access(i0, i1, i2, i3, i4, i5, i6, i7) - base_ptr; #endif if (d < offset) ++error_count; @@ -1144,7 +1150,7 @@ struct TestViewMapOperator { } KOKKOS_INLINE_FUNCTION - void test_right(size_t i0, long& error_count) const { + void test_right(size_t i0, int64_t& error_count) const { #ifdef KOKKOS_ENABLE_DEPRECATED_CODE typename ViewType::value_type* const base_ptr = &v(0, 0, 0, 0, 0, 0, 0, 0); #else @@ -1159,7 +1165,7 @@ struct TestViewMapOperator { const size_t n6 = v.extent(6); const size_t n7 = v.extent(7); - long offset = 0; + int64_t offset = 0; for (size_t i1 = 0; i1 < n1; ++i1) for (size_t i2 = 0; i2 < n2; ++i2) @@ -1169,9 +1175,10 @@ struct TestViewMapOperator { for (size_t i6 = 0; i6 < n6; ++i6) for (size_t i7 = 0; i7 < n7; ++i7) { #ifdef KOKKOS_ENABLE_DEPRECATED_CODE - const long d = &v(i0, i1, i2, i3, i4, i5, i6, i7) - base_ptr; + const int64_t d = + &v(i0, i1, i2, i3, i4, i5, i6, i7) - base_ptr; #else - const long d = + const int64_t d = &v.access(i0, i1, i2, i3, i4, i5, i6, i7) - base_ptr; #endif if (d < offset) ++error_count; @@ -1182,7 +1189,7 @@ struct TestViewMapOperator { } KOKKOS_INLINE_FUNCTION - void operator()(size_t i, long& error_count) const { + void operator()(size_t i, int64_t& error_count) const { if (std::is_same::value) { test_left(i, error_count); @@ -1245,7 +1252,7 @@ struct TestViewMapOperator { v.extent(4) * v.extent(5) * v.extent(6) * v.extent(7), v.span()); - long error_count; + int64_t error_count; Kokkos::RangePolicy range(0, v.extent(0)); Kokkos::parallel_reduce(range, *this, error_count); diff --git a/lib/kokkos/core/unit_test/TestView_64bit.hpp b/lib/kokkos/core/unit_test/TestView_64bit.hpp index 0b7b9d425a..7dc47ccb0f 100644 --- a/lib/kokkos/core/unit_test/TestView_64bit.hpp +++ b/lib/kokkos/core/unit_test/TestView_64bit.hpp @@ -55,7 +55,7 @@ void test_64bit() { Kokkos::parallel_reduce( Kokkos::RangePolicy>(0, N), - KOKKOS_LAMBDA(const int64_t& i, int64_t& lsum) { lsum += 1; }, sum); + KOKKOS_LAMBDA(const int64_t& /*i*/, int64_t& lsum) { lsum += 1; }, sum); ASSERT_EQ(N, sum); } { diff --git a/lib/kokkos/core/unit_test/UnitTestConfig.make b/lib/kokkos/core/unit_test/UnitTestConfig.make index 97f4af5a8b..5c93bf69fb 100644 --- a/lib/kokkos/core/unit_test/UnitTestConfig.make +++ b/lib/kokkos/core/unit_test/UnitTestConfig.make @@ -8,7 +8,7 @@ KOKKOS_ARCH_OPTIONS="None AMDAVX ARMv80 ARMv81 ARMv8-ThunderX \ Maxwell Maxwell50 Maxwell52 Maxwell53 Pascal60 Pascal61" #KOKKOS_ARCH_OPTIONS="AMDAVX" -KOKKOS_DEVICE_OPTIONS="Cuda ROCm OpenMP Pthread Serial Qthreads" +KOKKOS_DEVICE_OPTIONS="Cuda ROCm OpenMP Pthread Serial" #KOKKOS_DEVICE_OPTIONS="Cuda" # Configure paths to enable environment query in Makefile.kokkos to work diff --git a/lib/kokkos/core/unit_test/config/cmaketest/CMakeLists.txt b/lib/kokkos/core/unit_test/config/cmaketest/CMakeLists.txt index 72fef0a3e8..5d59017394 100644 --- a/lib/kokkos/core/unit_test/config/cmaketest/CMakeLists.txt +++ b/lib/kokkos/core/unit_test/config/cmaketest/CMakeLists.txt @@ -56,20 +56,20 @@ foreach(KOKKOS_HOST_ARCH ${KOKKOS_HOST_ARCH_LIST}) set(NEWCONFH ${PREFIX}${KOKKOS_CONFIG_HEADER}) file(RENAME ${KOKKOS_CMAKEFILE} ${NEWCMAKE}) file(RENAME ${KOKKOS_CONFIG_HEADER} ${NEWCONFH}) - - add_test(NAME ${NEWCMAKE}-test + + add_test(NAME ${NEWCMAKE}-test COMMAND ${KOKKOS_TESTDIR}/testmake.sh ${NEWCMAKE} ${KOKKOS_HOST_ARCH} ${KOKKOS_DEV} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) - set_tests_properties(${NEWCMAKE}-test + set_tests_properties(${NEWCMAKE}-test PROPERTIES PASS_REGULAR_EXPRESSION Passed TIMEOUT 15 ) - add_test(NAME ${NEWCONFH}-test - COMMAND ${KOKKOS_TESTDIR}/diffconfig.sh ${NEWCONFH} + add_test(NAME ${NEWCONFH}-test + COMMAND ${KOKKOS_TESTDIR}/diffconfig.sh ${NEWCONFH} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) - set_tests_properties(${NEWCONFH}-test + set_tests_properties(${NEWCONFH}-test PROPERTIES PASS_REGULAR_EXPRESSION Passed TIMEOUT 15 ) diff --git a/lib/kokkos/core/unit_test/config/results/AMDAVX_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/AMDAVX_Qthreads_KokkosCore_config.h deleted file mode 100644 index fb5d214630..0000000000 --- a/lib/kokkos/core/unit_test/config/results/AMDAVX_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,17 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:11 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_AVX 1 diff --git a/lib/kokkos/core/unit_test/config/results/ARMv8-ThunderX_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/ARMv8-ThunderX_Qthreads_KokkosCore_config.h deleted file mode 100644 index 3865bc4a9a..0000000000 --- a/lib/kokkos/core/unit_test/config/results/ARMv8-ThunderX_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,18 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:20 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_ARMV80 1 -#define KOKKOS_ARCH_ARMV8_THUNDERX 1 diff --git a/lib/kokkos/core/unit_test/config/results/ARMv80_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/ARMv80_Qthreads_KokkosCore_config.h deleted file mode 100644 index 7259a9e964..0000000000 --- a/lib/kokkos/core/unit_test/config/results/ARMv80_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,17 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:14 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_ARMV80 1 diff --git a/lib/kokkos/core/unit_test/config/results/ARMv81_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/ARMv81_Qthreads_KokkosCore_config.h deleted file mode 100644 index e9fc71ad9b..0000000000 --- a/lib/kokkos/core/unit_test/config/results/ARMv81_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,17 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:17 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_ARMV81 1 diff --git a/lib/kokkos/core/unit_test/config/results/BDW_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/BDW_Qthreads_KokkosCore_config.h deleted file mode 100644 index e879e7e1fe..0000000000 --- a/lib/kokkos/core/unit_test/config/results/BDW_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:39 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_ENABLE_TM -#endif -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_X86_64 -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_AVX2 1 diff --git a/lib/kokkos/core/unit_test/config/results/BGQ_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/BGQ_Qthreads_KokkosCore_config.h deleted file mode 100644 index 60c7ddcdb5..0000000000 --- a/lib/kokkos/core/unit_test/config/results/BGQ_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Tue Sep 26 15:19:44 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/HSW_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/HSW_Qthreads_KokkosCore_config.h deleted file mode 100644 index 253dc35bdf..0000000000 --- a/lib/kokkos/core/unit_test/config/results/HSW_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:36 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_X86_64 -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_AVX2 1 diff --git a/lib/kokkos/core/unit_test/config/results/KNC_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/KNC_Qthreads_KokkosCore_config.h deleted file mode 100644 index 5f95a83c27..0000000000 --- a/lib/kokkos/core/unit_test/config/results/KNC_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:45 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_KNC -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_KNC 1 diff --git a/lib/kokkos/core/unit_test/config/results/KNL_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/KNL_Qthreads_KokkosCore_config.h deleted file mode 100644 index 6d179d82f8..0000000000 --- a/lib/kokkos/core/unit_test/config/results/KNL_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:48 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_X86_64 -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_AVX512MIC 1 diff --git a/lib/kokkos/core/unit_test/config/results/Kepler30_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Kepler30_Qthreads_KokkosCore_config.h deleted file mode 100644 index 410ba5ea15..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Kepler30_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:50 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Kepler32_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Kepler32_Qthreads_KokkosCore_config.h deleted file mode 100644 index f42d0cc5f2..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Kepler32_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:53 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Kepler35_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Kepler35_Qthreads_KokkosCore_config.h deleted file mode 100644 index 429f5e9e28..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Kepler35_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:55 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Kepler37_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Kepler37_Qthreads_KokkosCore_config.h deleted file mode 100644 index 2b8a7f8183..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Kepler37_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:59 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Kepler_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Kepler_Qthreads_KokkosCore_config.h deleted file mode 100644 index 021d18c002..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Kepler_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Tue Sep 26 15:19:51 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Maxwell50_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Maxwell50_Qthreads_KokkosCore_config.h deleted file mode 100644 index be1353365c..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Maxwell50_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:23:02 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Maxwell52_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Maxwell52_Qthreads_KokkosCore_config.h deleted file mode 100644 index 58a043c6a3..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Maxwell52_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:23:05 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Maxwell53_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Maxwell53_Qthreads_KokkosCore_config.h deleted file mode 100644 index 96fdbef3dc..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Maxwell53_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:23:08 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Maxwell_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Maxwell_Qthreads_KokkosCore_config.h deleted file mode 100644 index a7f1fd3803..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Maxwell_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Tue Sep 26 15:20:01 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/None_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/None_Qthreads_KokkosCore_config.h deleted file mode 100644 index 6bd8addd97..0000000000 --- a/lib/kokkos/core/unit_test/config/results/None_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Tue Sep 26 15:19:23 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Pascal60_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Pascal60_Qthreads_KokkosCore_config.h deleted file mode 100644 index c5a2d1d707..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Pascal60_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:23:10 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Pascal61_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Pascal61_Qthreads_KokkosCore_config.h deleted file mode 100644 index 958aac11da..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Pascal61_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:23:13 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Power7_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Power7_Qthreads_KokkosCore_config.h deleted file mode 100644 index dffa8a3f58..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Power7_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:22 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_POWERPCBE -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_POWER7 1 diff --git a/lib/kokkos/core/unit_test/config/results/Power8_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Power8_Qthreads_KokkosCore_config.h deleted file mode 100644 index 9da90f4f7e..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Power8_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:25 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_POWERPCLE -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_POWER8 1 diff --git a/lib/kokkos/core/unit_test/config/results/Power9_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Power9_Qthreads_KokkosCore_config.h deleted file mode 100644 index 5c5be2ed3c..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Power9_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:28 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_POWERPCLE -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_POWER9 1 diff --git a/lib/kokkos/core/unit_test/config/results/SKX_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/SKX_Qthreads_KokkosCore_config.h deleted file mode 100644 index 2e4b1d61ef..0000000000 --- a/lib/kokkos/core/unit_test/config/results/SKX_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:42 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_ENABLE_TM -#endif -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_X86_64 -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_AVX512XEON 1 diff --git a/lib/kokkos/core/unit_test/config/results/SNB_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/SNB_Qthreads_KokkosCore_config.h deleted file mode 100644 index 2f0216f9c4..0000000000 --- a/lib/kokkos/core/unit_test/config/results/SNB_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:34 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_X86_64 -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_AVX 1 diff --git a/lib/kokkos/core/unit_test/config/results/WSM_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/WSM_Qthreads_KokkosCore_config.h deleted file mode 100644 index d4a78790e3..0000000000 --- a/lib/kokkos/core/unit_test/config/results/WSM_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:31 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_X86_64 -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_SSE42 1 diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_BitSet.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_Concepts.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_BitSet.cpp rename to lib/kokkos/core/unit_test/cuda/TestCuda_Concepts.cpp index 5306ab3883..31b36cbd8a 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_BitSet.cpp +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_Concepts.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -44,4 +43,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/core/unit_test/cuda/TestCuda_DeepCopyAlignment.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_DeepCopyAlignment.cpp index 16793abe08..e8ce7381b4 100644 --- a/lib/kokkos/core/unit_test/cuda/TestCuda_DeepCopyAlignment.cpp +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_DeepCopyAlignment.cpp @@ -43,6 +43,4 @@ */ #include -#if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) #include -#endif diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_OffsetView.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_RangePolicyRequire.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_OffsetView.cpp rename to lib/kokkos/core/unit_test/cuda/TestCuda_RangePolicyRequire.cpp index b2e851d099..1317705399 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_OffsetView.cpp +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_RangePolicyRequire.cpp @@ -44,4 +44,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/core/unit_test/cuda/TestCuda_Spaces.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_Spaces.cpp index 800d589e94..d68ffb0865 100644 --- a/lib/kokkos/core/unit_test/cuda/TestCuda_Spaces.cpp +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_Spaces.cpp @@ -280,73 +280,6 @@ TEST(cuda, uvm) { } } -/* Removing UVM Allocs Test due to added time to complete overall unit test - * The issue verified with this unit test appears to no longer be an - * problem. Refer to github issue 1880 for more details - * -TEST( cuda, uvm_num_allocs ) -{ - // The max number of UVM allocations allowed is 65536. - #define MAX_NUM_ALLOCS 65536 - - if ( Kokkos::CudaUVMSpace::available() ) { - struct TestMaxUVMAllocs { - - using view_type = Kokkos::View< double*, Kokkos::CudaUVMSpace >; - using view_of_view_type = Kokkos::View< view_type[ MAX_NUM_ALLOCS ] - , Kokkos::CudaUVMSpace >; - - TestMaxUVMAllocs() : view_allocs_test( "view_allocs_test" ) - { - for ( auto i = 0; i < MAX_NUM_ALLOCS; ++i ) { - - // Kokkos will throw a runtime exception if an attempt is made to - // allocate more than the maximum number of uvm allocations. - - // In this test, the max num of allocs occurs when i = MAX_NUM_ALLOCS -- 1 - // since the 'outer' view counts as one UVM allocation, leaving - // 65535 possible UVM allocations, that is 'i in [0, 65535)'. - - // The test will catch the exception thrown in this case and continue. - - if ( i == ( MAX_NUM_ALLOCS - 1 ) ) { - EXPECT_ANY_THROW( { view_allocs_test( i ) = view_type( "inner_view", -1 ); } ); - } - else { - if ( i < MAX_NUM_ALLOCS - 1000 ) { - EXPECT_NO_THROW( { view_allocs_test( i ) = view_type( -"inner_view", 1 ); } ); } else { // This might or might not throw depending on -compilation options. try { view_allocs_test( i ) = view_type( "inner_view", 1 ); - } - catch ( ... ) {} - } - } - - } // End allocation for loop. - - for ( auto i = 0; i < MAX_NUM_ALLOCS - 1; ++i ) { - - view_allocs_test( i ) = view_type(); - - } // End deallocation for loop. - - view_allocs_test = view_of_view_type(); // Deallocate the view of views. - } - - // Member. - view_of_view_type view_allocs_test; - }; - - // Trigger the test via the TestMaxUVMAllocs constructor. - TestMaxUVMAllocs(); - } - - #undef MAX_NUM_ALLOCS -} -*/ - template struct TestViewCudaAccessible { enum { N = 1000 }; diff --git a/lib/kokkos/core/unit_test/cuda/TestCuda_Team.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_Team.cpp index 93aae95bac..fe57437989 100644 --- a/lib/kokkos/core/unit_test/cuda/TestCuda_Team.cpp +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_Team.cpp @@ -79,26 +79,100 @@ TEST(TEST_CATEGORY, team_reduce) { Kokkos::Schedule >::test_reduce(1000); } -TEST(TEST_CATEGORY, team_broadcast) { - TestTeamBroadcast >::test_teambroadcast(0); - TestTeamBroadcast >::test_teambroadcast(0); +TEST(TEST_CATEGORY, team_broadcast_long) { + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); - TestTeamBroadcast >::test_teambroadcast(2); - TestTeamBroadcast >::test_teambroadcast(2); + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); - TestTeamBroadcast >::test_teambroadcast(16); - TestTeamBroadcast >::test_teambroadcast(16); + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); - TestTeamBroadcast >:: - test_teambroadcast(1000); - TestTeamBroadcast >:: - test_teambroadcast(1000); + // TestTeamBroadcast, long + // >:: + // test_teambroadcast(1000, 1); + // TestTeamBroadcast, long + // >:: + // test_teambroadcast(1000, 1); +} + +TEST(TEST_CATEGORY, team_broadcast_char) { + TestTeamBroadcast, + unsigned char>::test_teambroadcast(0, 1); + TestTeamBroadcast, + unsigned char>::test_teambroadcast(0, 1); + + TestTeamBroadcast, + unsigned char>::test_teambroadcast(2, 1); + TestTeamBroadcast, + unsigned char>::test_teambroadcast(2, 1); + + TestTeamBroadcast, + unsigned char>::test_teambroadcast(16, 1); + TestTeamBroadcast, + unsigned char>::test_teambroadcast(16, 1); + + // TestTeamBroadcast, long + // >:: + // test_teambroadcast(1000, 1); + // TestTeamBroadcast, long + // >:: + // test_teambroadcast(1000, 1); +} + +TEST(TEST_CATEGORY, team_broadcast_float) { + TestTeamBroadcast, + float>::test_teambroadcast(0, 1.3); + TestTeamBroadcast, + float>::test_teambroadcast(0, 1.3); + + TestTeamBroadcast, + float>::test_teambroadcast(2, 1.3); + TestTeamBroadcast, + float>::test_teambroadcast(2, 1.3); + + TestTeamBroadcast, + float>::test_teambroadcast(16, 1.3); + TestTeamBroadcast, + float>::test_teambroadcast(16, 1.3); + + // TestTeamBroadcast, float + // >:: + // test_teambroadcast(1000, 1.3); + // TestTeamBroadcast, float + // >:: + // test_teambroadcast(1000, 1.3); +} + +TEST(TEST_CATEGORY, team_broadcast_double) { + TestTeamBroadcast, + double>::test_teambroadcast(0, 1.3); + TestTeamBroadcast, + double>::test_teambroadcast(0, 1.3); + + TestTeamBroadcast, + double>::test_teambroadcast(2, 1.3); + TestTeamBroadcast, + double>::test_teambroadcast(2, 1.3); + + TestTeamBroadcast, + double>::test_teambroadcast(16, 1.3); + TestTeamBroadcast, + double>::test_teambroadcast(16, 1.3); + + // TestTeamBroadcast, double + // >:: + // test_teambroadcast(1000, 1.3); + // TestTeamBroadcast, + // double >:: + // test_teambroadcast(1000, 1.3); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/cuda/TestCuda_TeamScratch.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_TeamScratch.cpp index 858bf599b5..63291dbbb4 100644 --- a/lib/kokkos/core/unit_test/cuda/TestCuda_TeamScratch.cpp +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_TeamScratch.cpp @@ -58,7 +58,6 @@ TEST(TEST_CATEGORY, team_scratch_request) { } #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) TEST(TEST_CATEGORY, team_lambda_shared_request) { TestLambdaSharedTeam >(); @@ -68,7 +67,6 @@ TEST(TEST_CATEGORY, team_lambda_shared_request) { TEST(TEST_CATEGORY, scratch_align) { TestScratchAlignment(); } #endif -#endif TEST(TEST_CATEGORY, shmem_size) { TestShmemSize(); } diff --git a/lib/kokkos/core/unit_test/cuda/TestCuda_ViewAPI_e.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_ViewAPI_e.cpp index a15bdbd8d3..754b90acac 100644 --- a/lib/kokkos/core/unit_test/cuda/TestCuda_ViewAPI_e.cpp +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_ViewAPI_e.cpp @@ -44,3 +44,4 @@ #include #include +#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_d.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_d.cpp index 3502e1762f..ff87b7802c 100644 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_d.cpp +++ b/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_d.cpp @@ -61,7 +61,7 @@ TEST(defaultdevicetype, malloc) { Kokkos::kokkos_free(data); int* data2 = (int*)Kokkos::kokkos_malloc(0); - ASSERT_TRUE(data2 == NULL); + ASSERT_TRUE(data2 == nullptr); Kokkos::kokkos_free(data2); } diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Category.hpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_Category.hpp similarity index 91% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_Category.hpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_Category.hpp index fc0a088700..12c69926c7 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Category.hpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_Category.hpp @@ -42,13 +42,12 @@ //@HEADER */ -#ifndef KOKKOS_TEST_QTHREADS_HPP -#define KOKKOS_TEST_QTHREADS_HPP +#ifndef KOKKOS_TEST_HIPHOSTPINNED_HPP +#define KOKKOS_TEST_HIPHOSTPINNED_HPP #include -#define TEST_CATEGORY qthreads -#define TEST_CATEGORY_DEATH qthreads_DeathTest -#define TEST_EXECSPACE Kokkos::Qthreads +#define TEST_CATEGORY hip_hostpinned +#define TEST_EXECSPACE Kokkos::Experimental::HIPHostPinnedSpace #endif diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c10.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_SharedAlloc.cpp similarity index 91% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c10.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_SharedAlloc.cpp index e42c464020..7b2db4f8bc 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c10.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_SharedAlloc.cpp @@ -42,14 +42,13 @@ //@HEADER */ -#include +#include +#include namespace Test { -TEST_F(qthreads, view_subview_3d_from_5d_right) { -#if 0 - TestViewSubview::test_3d_subview_5d_right< Kokkos::Qthreads >(); -#endif +TEST(TEST_CATEGORY, impl_shared_alloc) { + test_shared_alloc(); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_a.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_a.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_a.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_a.cpp index 4339c1b5a0..53f0371b23 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_a.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_a.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_b.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_b.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_b.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_b.cpp index bcbef94ab7..2e3685d610 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_b.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_b.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_c.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_c.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_c.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_c.cpp index 21c9fd890c..079a244d43 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_c.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_c.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_d.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_d.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_d.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_d.cpp index ef4bddc572..bc3843b2c1 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_d.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_d.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_e.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_e.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_e.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_e.cpp index bba5916a5a..1c80e05fe0 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_e.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_e.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynamicView.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewCopy.cpp similarity index 96% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_DynamicView.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewCopy.cpp index 9eccb05a25..59674ad22f 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynamicView.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewCopy.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -43,5 +42,5 @@ //@HEADER */ -#include -#include +#include +#include diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank12345.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_a.cpp similarity index 96% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank12345.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_a.cpp index 66d2d17e8b..f9b5608d1b 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank12345.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_a.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -43,5 +42,5 @@ //@HEADER */ -#include -#include +#include +#include diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_generic.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_b.cpp similarity index 96% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_generic.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_b.cpp index 609c8b41a5..bff68fc072 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_generic.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_b.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -43,5 +42,5 @@ //@HEADER */ -#include -#include +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_subview.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_subview.cpp new file mode 100644 index 0000000000..cfa9da5495 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_subview.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_complexdouble.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_complexdouble.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_complexdouble.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_complexdouble.cpp index 9c6589539a..644a825bfc 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_complexdouble.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_complexdouble.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_complexfloat.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_complexfloat.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_complexfloat.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_complexfloat.cpp index 1163da7285..f8aaed88cb 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_complexfloat.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_complexfloat.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_double.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_double.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_double.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_double.cpp index aee8ccde7f..9adeaa76ba 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_double.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_double.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_float.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_float.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_float.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_float.cpp index 0bfa8d43d6..ba7c6d9bc3 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_float.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_float.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_int.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_int.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_int.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_int.cpp index 8900daf81e..840f2dbd06 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_int.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_int.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_longint.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_longint.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_longint.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_longint.cpp index 9dcff92312..be30507663 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_longint.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_longint.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_longlongint.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_longlongint.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_longlongint.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_longlongint.cpp index 0f5a0b7df7..85f54dee14 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_longlongint.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_longlongint.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_unsignedint.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_unsignedint.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_unsignedint.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_unsignedint.cpp index eee44e84a3..d738b608c2 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_unsignedint.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_unsignedint.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_unsignedlongint.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_unsignedlongint.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_unsignedlongint.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_unsignedlongint.cpp index 9379a6efa8..ab25f5d142 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_unsignedlongint.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_unsignedlongint.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DualView.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicViews.cpp similarity index 96% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_DualView.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicViews.cpp index 5641966db4..0dae0cb9eb 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DualView.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicViews.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include -#include +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Atomics.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Atomics.cpp new file mode 100644 index 0000000000..dda1388237 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Atomics.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Category.hpp b/lib/kokkos/core/unit_test/hip/TestHIP_Category.hpp new file mode 100644 index 0000000000..8cae165c33 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Category.hpp @@ -0,0 +1,53 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_TEST_HIP_HPP +#define KOKKOS_TEST_HIP_HPP + +#include + +#define TEST_CATEGORY hip +#define TEST_EXECSPACE Kokkos::Experimental::HIP + +#endif diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_Vector.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Complex.cpp similarity index 96% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_Vector.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_Complex.cpp index 408d0c76fc..f628fb834f 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_Vector.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Complex.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include -#include +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Concepts.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Concepts.cpp new file mode 100644 index 0000000000..bfdfda15db --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Concepts.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Crs.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Crs.cpp new file mode 100644 index 0000000000..b01b787743 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Crs.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_DeepCopyAlignment.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_DeepCopyAlignment.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_DeepCopyAlignment.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_DeepCopyAlignment.cpp index edfaa08d29..43f9d4b5c3 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_DeepCopyAlignment.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_DeepCopyAlignment.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_ErrorReporter.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_FunctorAnalysis.cpp similarity index 96% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_ErrorReporter.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_FunctorAnalysis.cpp index 806a3c6ecc..f3ae5f47ca 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_ErrorReporter.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_FunctorAnalysis.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include -#include +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Init.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Init.cpp new file mode 100644 index 0000000000..16a73293b3 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Init.cpp @@ -0,0 +1,49 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_InterOp_Init.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_InterOp_Init.cpp new file mode 100644 index 0000000000..0dc279fc78 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_InterOp_Init.cpp @@ -0,0 +1,85 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +__global__ void offset(int* p) { + int idx = hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x; + if (idx < 100) { + p[idx] += idx; + } +} + +// Test whether allocations survive Kokkos initialize/finalize if done via Raw +// HIP. +TEST(hip, raw_hip_interop) { + int* p; + hipMalloc(&p, sizeof(int) * 100); + Kokkos::InitArguments arguments{-1, -1, -1, false}; + Kokkos::initialize(arguments); + + Kokkos::View> v(p, 100); + Kokkos::deep_copy(v, 5); + + Kokkos::finalize(); + + hipLaunchKernelGGL(offset, dim3(100), dim3(100), 0, 0, p); + HIP_SAFE_CALL(hipDeviceSynchronize()); + + int* h_p = new int[100]; + hipMemcpy(h_p, p, sizeof(int) * 100, hipMemcpyDefault); + HIP_SAFE_CALL(hipDeviceSynchronize()); + int64_t sum = 0; + int64_t sum_expect = 0; + for (int i = 0; i < 100; i++) { + sum += h_p[i]; + sum_expect += 5 + i; + } + + ASSERT_EQ(sum, sum_expect); +} +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_LocalDeepCopy.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_LocalDeepCopy.cpp new file mode 100644 index 0000000000..4fc7ca680b --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_LocalDeepCopy.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_a.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_a.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_a.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_MDRange_a.cpp index 7067d841e3..6bf23f1b2c 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_a.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_a.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_b.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_b.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_b.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_MDRange_b.cpp index 1f4ba9c984..d820fa02c9 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_b.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_b.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_c.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_c.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_c.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_MDRange_c.cpp index 37b4671d05..5c70cf6c6c 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_c.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_c.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_d.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_d.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_d.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_MDRange_d.cpp index 2bd1fbbfd5..a18fc24d11 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_d.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_d.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_e.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_e.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_e.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_MDRange_e.cpp index 659dd23d7f..fe011213d3 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_e.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_e.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_Vector.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_RangePolicy.cpp similarity index 96% rename from lib/kokkos/containers/unit_tests/hpx/TestHPX_Vector.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_RangePolicy.cpp index d42cef4b28..5c87418209 100644 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_Vector.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_RangePolicy.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include -#include +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_RangePolicyRequire.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_RangePolicyRequire.cpp new file mode 100644 index 0000000000..6cf9a36f9f --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_RangePolicyRequire.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_a.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_a.cpp new file mode 100644 index 0000000000..ec9331d50c --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_a.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_b.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_b.cpp new file mode 100644 index 0000000000..c51c76ae2f --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_b.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_c.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_c.cpp new file mode 100644 index 0000000000..42c21390a2 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_c.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_d.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_d.cpp new file mode 100644 index 0000000000..6014405c37 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_d.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Reductions.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Reductions.cpp new file mode 100644 index 0000000000..8bf8cc63aa --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Reductions.cpp @@ -0,0 +1,47 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Scan.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Scan.cpp new file mode 100644 index 0000000000..8dc06c7060 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Scan.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_a.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ScanUnit.cpp similarity index 56% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_a.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_ScanUnit.cpp index f3d3396520..ea38596883 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_a.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ScanUnit.cpp @@ -1,3 +1,4 @@ + /* //@HEADER // ************************************************************************ @@ -42,74 +43,55 @@ //@HEADER */ -#include +#include +#include -namespace Test { +struct DummyFunctor { + using value_type = int; + void operator()(const int, value_type &, bool) const {} +}; -TEST_F(qthreads, view_subview_auto_1d_left) { -#if 0 - TestViewSubview::test_auto_1d< Kokkos::LayoutLeft, Kokkos::Qthreads >(); -#endif +template +__global__ void start_intra_block_scan() { + __shared__ DummyFunctor::value_type values[N]; + const int i = hipThreadIdx_y; + values[i] = i + 1; + __syncthreads(); + + DummyFunctor f; + Kokkos::Impl::hip_intra_block_reduce_scan(f, + values); + + __syncthreads(); + if (values[i] != ((i + 2) * (i + 1)) / 2) { + printf("Value for %d should be %d but is %d\n", i, ((i + 2) * (i + 1)) / 2, + values[i]); + Kokkos::abort("Test for intra_block_reduce_scan failed!"); + } } -TEST_F(qthreads, view_subview_auto_1d_right) { -#if 0 - TestViewSubview::test_auto_1d< Kokkos::LayoutRight, Kokkos::Qthreads >(); -#endif +template +void test_intra_block_scan() { + dim3 grid(1, 1, 1); + dim3 block(1, N, 1); + hipLaunchKernelGGL(start_intra_block_scan, grid, block, 0, 0); } -TEST_F(qthreads, view_subview_auto_1d_stride) { -#if 0 - TestViewSubview::test_auto_1d< Kokkos::LayoutStride, Kokkos::Qthreads >(); -#endif +TEST(TEST_CATEGORY, scan_unit) { + if (std::is_same< + TEST_EXECSPACE, + typename Kokkos::Experimental::HIPSpace::execution_space>::value) { + test_intra_block_scan<1>(); + test_intra_block_scan<2>(); + test_intra_block_scan<4>(); + test_intra_block_scan<8>(); + test_intra_block_scan<16>(); + test_intra_block_scan<32>(); + test_intra_block_scan<64>(); + test_intra_block_scan<128>(); + test_intra_block_scan<256>(); + // FIXME_HIP block sizes larger than 256 give wrong results. + // test_intra_block_scan<512>(); + // test_intra_block_scan<1024>(); + } } - -TEST_F(qthreads, view_subview_assign_strided) { -#if 0 - TestViewSubview::test_1d_strided_assignment< Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, view_subview_left_0) { -#if 0 - TestViewSubview::test_left_0< Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, view_subview_left_1) { -#if 0 - TestViewSubview::test_left_1< Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, view_subview_left_2) { -#if 0 - TestViewSubview::test_left_2< Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, view_subview_left_3) { -#if 0 - TestViewSubview::test_left_3< Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, view_subview_right_0) { -#if 0 - TestViewSubview::test_right_0< Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, view_subview_right_1) { -#if 0 - TestViewSubview::test_right_1< Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, view_subview_right_3) { -#if 0 - TestViewSubview::test_right_3< Kokkos::Qthreads >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c03.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SharedAlloc.cpp similarity index 90% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c03.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_SharedAlloc.cpp index 89b68ae42c..c66e01fe0a 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c03.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SharedAlloc.cpp @@ -42,14 +42,14 @@ //@HEADER */ -#include +#include +#include namespace Test { -TEST_F(qthreads, view_subview_1d_assign_randomaccess) { -#if 0 - TestViewSubview::test_1d_assign< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif +TEST(TEST_CATEGORY, impl_shared_alloc) { + test_shared_alloc(); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Spaces.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Spaces.cpp new file mode 100644 index 0000000000..f13400d096 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Spaces.cpp @@ -0,0 +1,233 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +__global__ void test_abort() { Kokkos::abort("test_abort"); } + +__global__ void test_hip_spaces_int_value(int *ptr) { + if (*ptr == 42) { + *ptr = 2 * 42; + } +} + +TEST(hip, space_access) { + static_assert(Kokkos::Impl::MemorySpaceAccess::assignable, + ""); + + static_assert(Kokkos::Impl::MemorySpaceAccess< + Kokkos::HostSpace, + Kokkos::Experimental::HIPHostPinnedSpace>::assignable, + ""); + + static_assert( + !Kokkos::Impl::MemorySpaceAccess< + Kokkos::HostSpace, Kokkos::Experimental::HIPSpace>::assignable, + ""); + + static_assert( + !Kokkos::Impl::MemorySpaceAccess< + Kokkos::HostSpace, Kokkos::Experimental::HIPSpace>::accessible, + ""); + + //-------------------------------------- + + static_assert(Kokkos::Impl::MemorySpaceAccess< + Kokkos::Experimental::HIPSpace, + Kokkos::Experimental::HIPSpace>::assignable, + ""); + + static_assert(!Kokkos::Impl::MemorySpaceAccess< + Kokkos::Experimental::HIPSpace, + Kokkos::Experimental::HIPHostPinnedSpace>::assignable, + ""); + + static_assert(Kokkos::Impl::MemorySpaceAccess< + Kokkos::Experimental::HIPSpace, + Kokkos::Experimental::HIPHostPinnedSpace>::accessible, + ""); + + static_assert(!Kokkos::Impl::MemorySpaceAccess::assignable, + ""); + + static_assert(!Kokkos::Impl::MemorySpaceAccess::accessible, + ""); + + //-------------------------------------- + + static_assert(Kokkos::Impl::MemorySpaceAccess< + Kokkos::Experimental::HIPHostPinnedSpace, + Kokkos::Experimental::HIPHostPinnedSpace>::assignable, + ""); + + static_assert( + !Kokkos::Impl::MemorySpaceAccess::assignable, + ""); + + static_assert( + Kokkos::Impl::MemorySpaceAccess::accessible, + ""); + + static_assert(!Kokkos::Impl::MemorySpaceAccess< + Kokkos::Experimental::HIPHostPinnedSpace, + Kokkos::Experimental::HIPSpace>::assignable, + ""); + + static_assert(!Kokkos::Impl::MemorySpaceAccess< + Kokkos::Experimental::HIPHostPinnedSpace, + Kokkos::Experimental::HIPSpace>::accessible, + ""); + + //-------------------------------------- + + static_assert( + !Kokkos::Impl::SpaceAccessibility::accessible, + ""); + + static_assert(Kokkos::Impl::SpaceAccessibility< + Kokkos::Experimental::HIP, + Kokkos::Experimental::HIPSpace>::accessible, + ""); + + static_assert(Kokkos::Impl::SpaceAccessibility< + Kokkos::Experimental::HIP, + Kokkos::Experimental::HIPHostPinnedSpace>::accessible, + ""); + + static_assert( + !Kokkos::Impl::SpaceAccessibility< + Kokkos::HostSpace, Kokkos::Experimental::HIPSpace>::accessible, + ""); + + static_assert(Kokkos::Impl::SpaceAccessibility< + Kokkos::HostSpace, + Kokkos::Experimental::HIPHostPinnedSpace>::accessible, + ""); + + static_assert( + std::is_same< + Kokkos::Impl::HostMirror::Space, + Kokkos::HostSpace>::value, + ""); + + static_assert( + std::is_same::Space, + Kokkos::Experimental::HIPHostPinnedSpace>::value, + ""); + + static_assert(Kokkos::Impl::SpaceAccessibility< + Kokkos::Impl::HostMirror::Space, + Kokkos::HostSpace>::accessible, + ""); + + static_assert( + Kokkos::Impl::SpaceAccessibility< + Kokkos::Impl::HostMirror::Space, + Kokkos::HostSpace>::accessible, + ""); + + static_assert(Kokkos::Impl::SpaceAccessibility< + Kokkos::Impl::HostMirror< + Kokkos::Experimental::HIPHostPinnedSpace>::Space, + Kokkos::HostSpace>::accessible, + ""); +} + +template +struct TestViewHIPAccessible { + enum { N = 1000 }; + + using V = Kokkos::View; + + V m_base; + + struct TagInit {}; + struct TagTest {}; + + KOKKOS_INLINE_FUNCTION + void operator()(const TagInit &, const int i) const { m_base[i] = i + 1; } + + KOKKOS_INLINE_FUNCTION + void operator()(const TagTest &, const int i, long &error_count) const { + if (m_base[i] != i + 1) ++error_count; + } + + TestViewHIPAccessible() : m_base("base", N) {} + + static void run() { + TestViewHIPAccessible self; + Kokkos::parallel_for( + Kokkos::RangePolicy(0, N), + self); + typename MemSpace::execution_space().fence(); + + // Next access is a different execution space, must complete prior kernel. + long error_count = -1; + Kokkos::parallel_reduce(Kokkos::RangePolicy(0, N), self, + error_count); + EXPECT_EQ(error_count, 0); + } +}; + +TEST(hip, impl_view_accessible) { + TestViewHIPAccessible::run(); + + TestViewHIPAccessible::run(); + TestViewHIPAccessible::run(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_a.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_a.cpp new file mode 100644 index 0000000000..df7b474afd --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_a.cpp @@ -0,0 +1,102 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_auto_1d_left) { + TestViewSubview::test_auto_1d(); +} + +TEST(TEST_CATEGORY, view_subview_auto_1d_right) { + TestViewSubview::test_auto_1d(); +} + +TEST(TEST_CATEGORY, view_subview_auto_1d_stride) { + TestViewSubview::test_auto_1d(); +} + +TEST(TEST_CATEGORY, view_subview_assign_strided) { + TestViewSubview::test_1d_strided_assignment(); +} + +TEST(TEST_CATEGORY, view_subview_left_0) { + TestViewSubview::test_left_0(); +} + +TEST(TEST_CATEGORY, view_subview_left_1) { + TestViewSubview::test_left_1(); +} + +TEST(TEST_CATEGORY, view_subview_left_2) { + TestViewSubview::test_left_2(); +} + +TEST(TEST_CATEGORY, view_subview_left_3) { + TestViewSubview::test_left_3(); +} + +TEST(TEST_CATEGORY, view_subview_right_0) { + TestViewSubview::test_right_0(); +} + +TEST(TEST_CATEGORY, view_subview_right_1) { + TestViewSubview::test_right_1(); +} + +TEST(TEST_CATEGORY, view_subview_right_3) { + TestViewSubview::test_right_3(); +} + +TEST(TEST_CATEGORY, view_static_tests) { + TestViewSubview::TestSubviewStaticSizes()(); + TestViewSubview::TestSubviewStaticSizes()(); + TestViewSubview::TestExtentsStaticTests(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_b.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_b.cpp similarity index 71% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_b.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_SubView_b.cpp index 6ef5dc4cf1..5fdaefcf21 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_b.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_b.cpp @@ -42,24 +42,25 @@ //@HEADER */ -#include +#include +#include namespace Test { -TEST_F(qthreads, view_subview_layoutleft_to_layoutleft) { -#if 0 - TestViewSubview::test_layoutleft_to_layoutleft< Kokkos::Qthreads >(); - TestViewSubview::test_layoutleft_to_layoutleft< Kokkos::Qthreads, Kokkos::MemoryTraits >(); - TestViewSubview::test_layoutleft_to_layoutleft< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif +TEST(TEST_CATEGORY, view_subview_layoutleft_to_layoutleft) { + TestViewSubview::test_layoutleft_to_layoutleft(); + TestViewSubview::test_layoutleft_to_layoutleft< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); + TestViewSubview::test_layoutleft_to_layoutleft< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); } -TEST_F(qthreads, view_subview_layoutright_to_layoutright) { -#if 0 - TestViewSubview::test_layoutright_to_layoutright< Kokkos::Qthreads >(); - TestViewSubview::test_layoutright_to_layoutright< Kokkos::Qthreads, Kokkos::MemoryTraits >(); - TestViewSubview::test_layoutright_to_layoutright< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif +TEST(TEST_CATEGORY, view_subview_layoutright_to_layoutright) { + TestViewSubview::test_layoutright_to_layoutright(); + TestViewSubview::test_layoutright_to_layoutright< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); + TestViewSubview::test_layoutright_to_layoutright< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c07.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c01.cpp similarity index 91% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c07.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_SubView_c01.cpp index 5857f67d19..79bb42bc59 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c07.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c01.cpp @@ -42,14 +42,13 @@ //@HEADER */ -#include +#include +#include namespace Test { -TEST_F(qthreads, view_subview_3d_from_5d_left) { -#if 0 - TestViewSubview::test_3d_subview_5d_left< Kokkos::Qthreads >(); -#endif +TEST(TEST_CATEGORY, view_subview_1d_assign) { + TestViewSubview::test_1d_assign(); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c02.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c02.cpp new file mode 100644 index 0000000000..c38dee484e --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c02.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_1d_assign_atomic) { + TestViewSubview::test_1d_assign >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c03.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c03.cpp new file mode 100644 index 0000000000..c35f786d38 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c03.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_1d_assign_randomaccess) { + TestViewSubview::test_1d_assign< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c04.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c04.cpp similarity index 91% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c04.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_SubView_c04.cpp index 0ee4d6887c..3a0cafdbe1 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c04.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c04.cpp @@ -42,14 +42,13 @@ //@HEADER */ -#include +#include +#include namespace Test { -TEST_F(qthreads, view_subview_2d_from_3d) { -#if 0 - TestViewSubview::test_2d_subview_3d< Kokkos::Qthreads >(); -#endif +TEST(TEST_CATEGORY, view_subview_2d_from_3d) { + TestViewSubview::test_2d_subview_3d(); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c05.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c05.cpp new file mode 100644 index 0000000000..7b3710f428 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c05.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_2d_from_3d_atomic) { + TestViewSubview::test_2d_subview_3d >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c06.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c06.cpp new file mode 100644 index 0000000000..f0ac19f2c4 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c06.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_2d_from_3d_randomaccess) { + TestViewSubview::test_2d_subview_3d< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c01.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c07.cpp similarity index 91% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c01.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_SubView_c07.cpp index 1f560c24f6..b9743ab0a4 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c01.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c07.cpp @@ -42,14 +42,13 @@ //@HEADER */ -#include +#include +#include namespace Test { -TEST_F(qthreads, view_subview_1d_assign) { -#if 0 - TestViewSubview::test_1d_assign< Kokkos::Qthreads >(); -#endif +TEST(TEST_CATEGORY, view_subview_3d_from_5d_left) { + TestViewSubview::test_3d_subview_5d_left(); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c08.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c08.cpp new file mode 100644 index 0000000000..30bef76d7f --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c08.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_3d_from_5d_left_atomic) { + TestViewSubview::test_3d_subview_5d_left< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c09.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c09.cpp new file mode 100644 index 0000000000..2e63849f35 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c09.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_3d_from_5d_left_randomaccess) { + TestViewSubview::test_3d_subview_5d_left< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c10.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c10.cpp new file mode 100644 index 0000000000..dae65a4d3b --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c10.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_3d_from_5d_right) { + TestViewSubview::test_3d_subview_5d_right(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c11.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c11.cpp new file mode 100644 index 0000000000..570658bf55 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c11.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_3d_from_5d_right_atomic) { + TestViewSubview::test_3d_subview_5d_right< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c12.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c12.cpp new file mode 100644 index 0000000000..4e943c68f0 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c12.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_3d_from_5d_right_randomaccess) { + TestViewSubview::test_3d_subview_5d_right< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c02.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c13.cpp similarity index 90% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c02.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_SubView_c13.cpp index e4065d22b2..52a065f2bd 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c02.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c13.cpp @@ -42,14 +42,13 @@ //@HEADER */ -#include +#include +#include namespace Test { -TEST_F(qthreads, view_subview_1d_assign_atomic) { -#if 0 - TestViewSubview::test_1d_assign< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif +TEST(TEST_CATEGORY, view_test_unmanaged_subview_reset) { + TestViewSubview::test_unmanaged_subview_reset(); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_ViewAPI_c.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ViewAPI_c.cpp new file mode 100644 index 0000000000..4dc72a0786 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ViewAPI_c.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_ViewAPI_d.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ViewAPI_d.cpp new file mode 100644 index 0000000000..c96d39feeb --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ViewAPI_d.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_a.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_a.cpp new file mode 100644 index 0000000000..146f06fc6e --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_a.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_b.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_b.cpp new file mode 100644 index 0000000000..00f931ce9b --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_b.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_subview.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_subview.cpp new file mode 100644 index 0000000000..f0e76e0400 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_subview.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_ViewOfClass.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ViewOfClass.cpp new file mode 100644 index 0000000000..c673ffb354 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ViewOfClass.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_ViewResize.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ViewResize.cpp new file mode 100644 index 0000000000..35e3125915 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ViewResize.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_View_64bit.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_View_64bit.cpp new file mode 100644 index 0000000000..fed256043f --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_View_64bit.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_BitSet.cpp b/lib/kokkos/core/unit_test/hpx/TestHPX_Concepts.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/hpx/TestHPX_BitSet.cpp rename to lib/kokkos/core/unit_test/hpx/TestHPX_Concepts.cpp index 179cfcc7b4..197a99a1e4 100644 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_BitSet.cpp +++ b/lib/kokkos/core/unit_test/hpx/TestHPX_Concepts.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -44,4 +43,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DualView.cpp b/lib/kokkos/core/unit_test/hpx/TestHPX_RangePolicyRequire.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/hpx/TestHPX_DualView.cpp rename to lib/kokkos/core/unit_test/hpx/TestHPX_RangePolicyRequire.cpp index 368cdde95c..c76750e8fd 100644 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DualView.cpp +++ b/lib/kokkos/core/unit_test/hpx/TestHPX_RangePolicyRequire.cpp @@ -44,4 +44,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/core/unit_test/hpx/TestHPX_TeamScratch.cpp b/lib/kokkos/core/unit_test/hpx/TestHPX_TeamScratch.cpp index 14cbfb8f41..232bed509b 100644 --- a/lib/kokkos/core/unit_test/hpx/TestHPX_TeamScratch.cpp +++ b/lib/kokkos/core/unit_test/hpx/TestHPX_TeamScratch.cpp @@ -58,7 +58,6 @@ TEST(TEST_CATEGORY, team_scratch_request) { } #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) TEST(TEST_CATEGORY, team_lambda_shared_request) { TestLambdaSharedTeam >(); @@ -66,7 +65,6 @@ TEST(TEST_CATEGORY, team_lambda_shared_request) { Kokkos::Schedule >(); } #endif -#endif TEST(TEST_CATEGORY, shmem_size) { TestShmemSize(); } diff --git a/lib/kokkos/core/unit_test/incremental/Test01_execspace.hpp b/lib/kokkos/core/unit_test/incremental/Test01_execspace.hpp new file mode 100644 index 0000000000..9f118bfb49 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test01_execspace.hpp @@ -0,0 +1,111 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +/// @Kokkos_Feature_Level_Required:1 + +#include +#include +#include +#include +#include + +namespace Test { + +// Unit test for Execution Space +// Test1 - testing for memory_space, execution_space, scratch space and +// array_layout of an execution space +// Test2 - Test if the is_execution_space evaluation is working correctly + +template +struct TestIncrExecSpaceTypedef { + void testit() { + const bool passed = + (!std::is_same::value) && + std::is_same::value && + !std::is_same::value && + !std::is_same::value; + static_assert(passed == true, + "The memory and execution spaces are defined"); + } +}; + +template +struct TestIncrExecSpace { + void testit() { + typedef typename ExecSpace::device_type device_type; + typedef typename device_type::memory_space memory_space; + typedef typename device_type::execution_space execution_space; + + const bool passed = + std::is_same>::value; + + static_assert(passed == true, + "Checking if the is_execution_space is evaluated correctly"); + + ExecSpace().print_configuration(std::cout); + ExecSpace().fence(); + + auto concurrency = ExecSpace().concurrency(); + ASSERT_TRUE(concurrency > 0); + + int in_parallel = ExecSpace::in_parallel(); + ASSERT_FALSE(in_parallel); + + const char* name = ExecSpace::name(); + std::cout << name << std::endl; + } +}; + +TEST(TEST_CATEGORY, IncrTest_01_execspace_typedef) { + TestIncrExecSpaceTypedef test; + test.testit(); +} + +TEST(TEST_CATEGORY, IncrTest_01_execspace) { + ASSERT_TRUE(Kokkos::is_execution_space::value); + ASSERT_FALSE(Kokkos::is_execution_space< + TestIncrExecSpaceTypedef>::value); +} +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test02_atomic_host.hpp b/lib/kokkos/core/unit_test/incremental/Test02_atomic_host.hpp new file mode 100644 index 0000000000..4617ede99e --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test02_atomic_host.hpp @@ -0,0 +1,97 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +/// @Kokkos_Feature_Level_Required:2 +// Unit test for atomic exchange, atomic add and atomic sub. +// Atomic exchange test : we interchange value1 with value2 and check for +// correctness. Atomic add test : we add value2 to value1 and check for +// correctness. Atomic sub test : we subtract value2 from value1 and check for +// correctmess. + +#include +#include + +using value_type = double; + +namespace Test { + +struct TestIncrAtomic { + value_type value1 = 1.5, value2 = 0.5; + + void testExchange() { + value_type ret_value = Kokkos::atomic_exchange(&value1, value2); + + ASSERT_EQ(value1, 0.5); + ASSERT_EQ(ret_value, 1.5); + } + + void testAdd() { + Kokkos::atomic_add(&value1, value2); + + ASSERT_EQ(value1, 2.0); + } + + void testSub() { + Kokkos::atomic_sub(&value1, value2); + + ASSERT_EQ(value1, 1.0); + } +}; + +TEST(TEST_CATEGORY, IncrTest_01_AtomicExchange) { + TestIncrAtomic test; + test.testExchange(); +} + +TEST(TEST_CATEGORY, IncrTest_02_AtomicAdd) { + TestIncrAtomic test; + test.testAdd(); +} + +TEST(TEST_CATEGORY, IncrTest_02_AtomicSub) { + TestIncrAtomic test; + test.testSub(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test03a_MemorySpace_malloc.hpp b/lib/kokkos/core/unit_test/incremental/Test03a_MemorySpace_malloc.hpp new file mode 100644 index 0000000000..da808be219 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test03a_MemorySpace_malloc.hpp @@ -0,0 +1,80 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +/// @Kokkos_Feature_Level_Required:3 +// Unit Test for Kokkos malloc. +// Allocate memory to a pointer and check if the allocation has not returned a +// null pointer. + +namespace Test { + +using value_type = double; +const int num_elements = 10; + +template +struct TestIncrMemorySpace_malloc { + using memory_space = typename ExecSpace::memory_space; + + void test_malloc() { + // Allocate memory + auto *data = static_cast(Kokkos::kokkos_malloc( + "data", num_elements * sizeof(value_type))); + + // Check if the allocated memory has not returned a NULL + ASSERT_NE(data, nullptr); + + // Free the allocated memory + Kokkos::kokkos_free(data); + } +}; + +TEST(TEST_CATEGORY, IncrTest_03a_memspace_malloc) { + TestIncrMemorySpace_malloc test; + test.test_malloc(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test03b_MemorySpace_free.hpp b/lib/kokkos/core/unit_test/incremental/Test03b_MemorySpace_free.hpp new file mode 100644 index 0000000000..f7ee76ec9d --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test03b_MemorySpace_free.hpp @@ -0,0 +1,83 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +/// @Kokkos_Feature_Level_Required:3 +// Unit test for Kokkos free. +// We constantly allocate and free the memory. +// If the kokkos_free does not free the allocated memory, +// we will exceed the available space. + +#include +#include + +namespace Test { + +using value_type = double; + +// Allocate M number of value_type elements N number of times. +const int N = 100000; +const int M = 100000; + +template +struct TestIncrMemorySpace_free { + using memory_space = typename ExecSpace::memory_space; + + void test_free() { + for (int i = 0; i < N; ++i) { + auto *data = static_cast( + Kokkos::kokkos_malloc("data", M * sizeof(value_type))); + + ASSERT_NE(data, nullptr); + + Kokkos::kokkos_free(data); + } + } +}; + +TEST(TEST_CATEGORY, IncrTest_03b_memspace_free) { + TestIncrMemorySpace_free test; + test.test_free(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test04_ParallelFor_RangePolicy.hpp b/lib/kokkos/core/unit_test/incremental/Test04_ParallelFor_RangePolicy.hpp new file mode 100644 index 0000000000..5e50b51dd1 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test04_ParallelFor_RangePolicy.hpp @@ -0,0 +1,169 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +/// @Kokkos_Feature_Level_Required:4 +// parallel-for unit test. +// In this test, different elements of an array are updated by different +// threads. + +namespace Test { + +using value_type = double; +int num_elements = 10; +const value_type value = 0.5; + +struct ParallelForFunctor { + value_type *_data; + + ParallelForFunctor(value_type *data) : _data(data) {} + + KOKKOS_INLINE_FUNCTION + void operator()(const int i) const { _data[i] = (i + 1) * value; } +}; + +template +struct TestParallel_For { + // Memory space type for Device and Host data + using d_memspace_type = typename ExecSpace::memory_space; + using h_memspace_type = Kokkos::HostSpace; + + value_type *deviceData, *hostData; + + // Check if the array values are updated correctly. + void correctness_check(value_type *data) { + for (int i = 0; i < num_elements; ++i) { + ASSERT_EQ((i + 1) * value, data[i]) + << "Values in index " << i << " are incorrect"; + } + } + + // Routine to allocate memory in a specific memory space. + template + value_type *allocate_mem(int N) { + return (static_cast( + Kokkos::kokkos_malloc("deviceData", N * sizeof(value_type)))); + } + + // Routine to free the memory from a specific memory space. + template + void free_mem(value_type *data) { + Kokkos::kokkos_free(data); + } + + void init() { + // Allocate memory on Device space. + deviceData = allocate_mem(num_elements); + ASSERT_NE(deviceData, nullptr); + + // Allocate memory on Host space. + hostData = allocate_mem(num_elements); + ASSERT_NE(hostData, nullptr); + } + + void check_correctness_and_cleanup() { + // Copy the data back to Host memory space + Kokkos::Impl::DeepCopy( + hostData, deviceData, num_elements * sizeof(value_type)); + + // Check if all data has been update correctly + correctness_check(hostData); + + // free the allocated memory + free_mem(deviceData); + free_mem(hostData); + } + + // A simple parallel for test with functors + void simple_test() { + // Allocates memory for num_elements number of value_type elements in the + // host and device memory spaces. + init(); + + // parallel-for functor called for num_elements number of iterations. + Kokkos::parallel_for("parallel_for", num_elements, + ParallelForFunctor(deviceData)); + + Kokkos::fence(); + // Checks if parallel_for gave the correct results. + // Frees the allocated memory in init(). + check_correctness_and_cleanup(); + } + + // A parallel_for test with user defined RangePolicy + void range_policy() { + // Allocates memory for num_elements number of value_type elements in the + // host and device memory spaces. + init(); + + // Creates a range policy that uses dynamic scheduling. + typedef Kokkos::RangePolicy > + range_policy_t; + + // parallel-for functor with range-policy from 0 to num_elements iterations. + Kokkos::parallel_for("RangePolicy_ParallelFor", + range_policy_t(0, num_elements), + ParallelForFunctor(deviceData)); + + // Checks if parallel_for gave the correct results. + // Free the allocated memory in init(). + check_correctness_and_cleanup(); + } +}; + +TEST(TEST_CATEGORY, IncrTest_04_simple_parallelFor) { + if (std::is_same::value) { + TestParallel_For test; + test.simple_test(); + } +} + +TEST(TEST_CATEGORY, IncrTest_04_RangePolicy_parallelFor) { + TestParallel_For test; + test.range_policy(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test05_ParallelReduce_RangePolicy.hpp b/lib/kokkos/core/unit_test/incremental/Test05_ParallelReduce_RangePolicy.hpp new file mode 100644 index 0000000000..7c147e47cc --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test05_ParallelReduce_RangePolicy.hpp @@ -0,0 +1,154 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +/// @Kokkos_Feature_Level_Required:5 +// Unit test for reduction of native data type. +// Assigns an index based value to elements of an array. +// Performs an reduction over the addition operation. + +namespace Test { + +using value_type = double; +const double value = 0.5; +const int num_elements = 10; + +struct ReduceFunctor { + value_type *_data; + + ReduceFunctor(value_type *data) : _data(data) {} + + KOKKOS_INLINE_FUNCTION + void operator()(const int i, double &UpdateSum) const { + _data[i] = (i + 1) * value; + UpdateSum += _data[i]; + } +}; + +template +struct TestReduction { + // Memory space type for Device and Host data + using d_memspace_type = typename ExecSpace::memory_space; + using h_memspace_type = Kokkos::HostSpace; + + value_type *deviceData, *hostData; + value_type sum = 0.0; + + // compare and equal + void check_correctness() { + int sum_local = 0; + for (int i = 0; i < num_elements; ++i) sum_local += (i + 1); + + ASSERT_EQ(sum, sum_local * value) + << "The reduced value does not match the expected answer"; + } + + // Routine to allocate memory in a specific memory space. + template + value_type *allocate_mem(int N) { + return (static_cast( + Kokkos::kokkos_malloc("deviceData", N * sizeof(value_type)))); + } + + // Routine to free the memory from a specific memory space. + template + void free_mem(value_type *data) { + Kokkos::kokkos_free(data); + } + + // Free the allocated memory + void free_mem() { + Kokkos::kokkos_free(deviceData); + Kokkos::kokkos_free(hostData); + } + + // Allocate Memory for both device and host memory spaces + void init() { + // Allocate memory on Device space. + deviceData = allocate_mem(num_elements); + ASSERT_NE(deviceData, nullptr); + + // Allocate memory on Host space. + hostData = allocate_mem(num_elements); + ASSERT_NE(hostData, nullptr); + + // Initialize the sum value to zero. + sum = 0.0; + } + + void check_correctness_and_cleanup() { + // Check if reduction has produced correct results + check_correctness(); + + // free the allocated memory + free_mem(deviceData); + free_mem(hostData); + } + + void sum_reduction() { + // Allocates memory for num_elements number of value_type elements in the + // host and device memory spaces. + init(); + + // Creates a range policy that uses dynamic schedule. + typedef Kokkos::RangePolicy > + range_policy; + + // parallel_reduce call with range policy over num_elements number of + // iterations + Kokkos::parallel_reduce("Reduction", range_policy(0, num_elements), + ReduceFunctor(deviceData), sum); + + check_correctness_and_cleanup(); + } +}; + +TEST(TEST_CATEGORY, IncrTest_05_reduction) { + TestReduction test; + test.sum_reduction(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test06_ParallelFor_MDRangePolicy.hpp b/lib/kokkos/core/unit_test/incremental/Test06_ParallelFor_MDRangePolicy.hpp new file mode 100644 index 0000000000..d9e5a37b55 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test06_ParallelFor_MDRangePolicy.hpp @@ -0,0 +1,263 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +/// @Kokkos_Feature_Level_Required:6 +// Unit Test for MDRangePolicy without Views uptil 4 ranks. +// For each of the MDRangePolicy test from 2-to-4 ranks, we create an equivalent +// dimensional array implemented in 1D. In each of these arrays we update the +// elements as a product of iterator indexes and a constant. At the end, we +// check for correctness. + +namespace Test04 { + +using value_type = double; +const int N = 10; +const int M = 10; +const value_type delta = 0.5; + +struct MDFunctor { + value_type *_data; + + MDFunctor(value_type *data) : _data(data) {} + + // 2D + KOKKOS_INLINE_FUNCTION + void operator()(const int i, const int j) const { + _data[i * M + j] = i * j * delta; + } + + // 3D + KOKKOS_INLINE_FUNCTION + void operator()(const int i, const int j, const int k) const { + _data[i * M * N + j * M + k] = i * j * k * delta; + } + + // 4D + KOKKOS_INLINE_FUNCTION + void operator()(const int i, const int j, const int k, const int l) const { + _data[i * M * N * M + j * M * N + k * M + l] = i * j * k * l * delta; + } +}; + +template +struct TestMDRangePolicy { + // Memory space type for Device and Host data + using d_memspace_type = typename ExecSpace::memory_space; + using h_memspace_type = Kokkos::HostSpace; + + // Index Type for the iterator + using int_index = Kokkos::IndexType; + + // An MDRangePolicy for 2 nested loops + using MDPolicyType_2D = typename Kokkos::Experimental::MDRangePolicy< + ExecSpace, Kokkos::Experimental::Rank<2>, int_index>; + + // An MDRangePolicy for 3 nested loops + using MDPolicyType_3D = typename Kokkos::Experimental::MDRangePolicy< + ExecSpace, Kokkos::Experimental::Rank<3>, int_index>; + + // An MDRangePolicy for 4 nested loops + using MDPolicyType_4D = typename Kokkos::Experimental::MDRangePolicy< + ExecSpace, Kokkos::Experimental::Rank<4>, int_index>; + + // Device and Host Data structure pointer + value_type *deviceData, *hostData; + + // Routine to allocate memory in a specific memory space. + template + value_type *allocate_mem(int N_) { + return (static_cast( + Kokkos::kokkos_malloc("Data", N_ * sizeof(value_type)))); + } + + // Routine to free the memory from a specific memory space. + template + void free_mem(value_type *data) { + Kokkos::kokkos_free(data); + } + + // compare and equal + void compare_equal_2D() { + for (int i = 0; i < N; ++i) + for (int j = 0; j < M; ++j) ASSERT_EQ(hostData[i * M + j], i * j * delta); + } + + // compare and equal + void compare_equal_3D() { + for (int i = 0; i < N; ++i) + for (int j = 0; j < M; ++j) + for (int k = 0; k < N; ++k) + ASSERT_EQ(hostData[i * M * N + j * M + k], i * j * k * delta); + } + + // compare and equal + void compare_equal_4D() { + for (int i = 0; i < N; ++i) + for (int j = 0; j < M; ++j) + for (int k = 0; k < N; ++k) + for (int l = 0; l < M; ++l) + ASSERT_EQ(hostData[i * M * N * M + j * M * N + k * M + l], + i * j * k * l * delta); + } + + // A 2-D MDRangePolicy + void mdRange2D() { + MDPolicyType_2D mdPolicy_2D({0, 0}, {N, M}); + + // Total number of elements + int num_elements = N * M; + + // Allocate Memory for both device and host memory spaces + // Data[M*N] + deviceData = allocate_mem(num_elements); + ASSERT_NE(deviceData, nullptr); + + hostData = allocate_mem(num_elements); + ASSERT_NE(hostData, nullptr); + + // parallel_for call + MDFunctor Functor_2D(deviceData); + Kokkos::parallel_for("MDRange2D", mdPolicy_2D, Functor_2D); + + // Copy the data back to Host memory space + Kokkos::Impl::DeepCopy( + hostData, deviceData, num_elements * sizeof(value_type)); + + // Check if all data has been update correctly + compare_equal_2D(); + + // free the allocated memory + free_mem(deviceData); + free_mem(hostData); + } + + // A 3-D MDRangePolicy + void mdRange3D() { + MDPolicyType_3D mdPolicy_3D({0, 0, 0}, {N, M, N}); + + // Total number of elements + int num_elements = N * M * N; + + // Allocate Memory for both device and host memory spaces + // Data[M*N*N] + deviceData = allocate_mem(num_elements); + ASSERT_NE(deviceData, nullptr); + + hostData = allocate_mem(num_elements); + ASSERT_NE(hostData, nullptr); + + // parallel_for call + MDFunctor Functor_3D(deviceData); + Kokkos::parallel_for("MDRange3D", mdPolicy_3D, Functor_3D); + + // Copy the data back to Host memory space + Kokkos::Impl::DeepCopy( + hostData, deviceData, num_elements * sizeof(value_type)); + + // Check if all data has been update correctly + compare_equal_3D(); + + // free the allocated memory + free_mem(deviceData); + free_mem(hostData); + } + + // A 4-D MDRangePolicy + void mdRange4D() { + MDPolicyType_4D mdPolicy_4D({0, 0, 0, 0}, {N, M, N, M}); + + // Total number of elements + int num_elements = N * M * N * M; + + // Allocate Memory for both device and host memory spaces + // Data[M*N*N*M] + deviceData = allocate_mem(num_elements); + ASSERT_NE(deviceData, nullptr); + + hostData = allocate_mem(num_elements); + ASSERT_NE(hostData, nullptr); + + // parallel_for call + MDFunctor Functor_4D(deviceData); + Kokkos::parallel_for("MDRange4D", mdPolicy_4D, Functor_4D); + + // Copy the data back to Host memory space + Kokkos::Impl::DeepCopy( + hostData, deviceData, num_elements * sizeof(value_type)); + + // Check if all data has been update correctly + compare_equal_4D(); + + // free the allocated memory + free_mem(deviceData); + free_mem(hostData); + } +}; + +} // namespace Test04 + +namespace Test { + +// 2D MDRangePolicy +TEST(TEST_CATEGORY, IncrTest_06_mdrange2D) { + Test04::TestMDRangePolicy test; + test.mdRange2D(); +} + +// 3D MDRangePolicy +TEST(TEST_CATEGORY, IncrTest_06_mdrange3D) { + Test04::TestMDRangePolicy test; + test.mdRange3D(); +} + +// 4D MDRangePolicy +TEST(TEST_CATEGORY, IncrTest_06_mdrange4D) { + Test04::TestMDRangePolicy test; + test.mdRange4D(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test08_deep_copy.hpp b/lib/kokkos/core/unit_test/incremental/Test08_deep_copy.hpp new file mode 100644 index 0000000000..5166f5a9f0 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test08_deep_copy.hpp @@ -0,0 +1,207 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +/// @Kokkos_Feature_Level_Required:8 +// Unit Test for MDRangePolicy without Views uptil 4 ranks. +// For each of the MDRangePolicy test from 2-to-4 ranks, we create an equivalent +// dimensional view. In each of these views we update the +// elements as a product of iterator indexes and a constant inside a +// parallel_for lambda. At the end, we check for correctness. + +namespace Test05 { + +using value_type = double; +const int N = 10; +const int M = 10; + +template +struct TestMDRangePolicy { + // 2D View + using View_2D = typename Kokkos::View; + using Host_View_2D = typename View_2D::HostMirror; + Host_View_2D hostDataView_2D; + + // 3D View + using View_3D = typename Kokkos::View; + using Host_View_3D = typename View_3D::HostMirror; + Host_View_3D hostDataView_3D; + + // 4D View + using View_4D = typename Kokkos::View; + using Host_View_4D = typename View_4D::HostMirror; + Host_View_4D hostDataView_4D; + + // Memory space type for Device and Host data + using d_memspace_type = typename ExecSpace::memory_space; + using h_memspace_type = Kokkos::HostSpace; + + // Index Type for the iterator + using int_index = Kokkos::IndexType; + + // An MDRangePolicy for 2 nested loops + using MDPolicyType_2D = typename Kokkos::Experimental::MDRangePolicy< + ExecSpace, Kokkos::Experimental::Rank<2>, int_index>; + + // An MDRangePolicy for 3 nested loops + using MDPolicyType_3D = typename Kokkos::Experimental::MDRangePolicy< + ExecSpace, Kokkos::Experimental::Rank<3>, int_index>; + + // An MDRangePolicy for 4 nested loops + using MDPolicyType_4D = typename Kokkos::Experimental::MDRangePolicy< + ExecSpace, Kokkos::Experimental::Rank<4>, int_index>; + + // compare and equal + void compare_equal_2D() { + for (int i = 0; i < N; ++i) + for (int j = 0; j < M; ++j) ASSERT_EQ(hostDataView_2D(i, j), i * M + j); + } + + // compare and equal + void compare_equal_3D() { + for (int i = 0; i < N; ++i) + for (int j = 0; j < M; ++j) + for (int k = 0; k < N; ++k) + ASSERT_EQ(hostDataView_3D(i, j, k), i * M * N + j * N + k); + } + + // compare and equal + void compare_equal_4D() { + for (int i = 0; i < N; ++i) + for (int j = 0; j < M; ++j) + for (int k = 0; k < N; ++k) + for (int l = 0; l < M; ++l) + ASSERT_EQ(hostDataView_4D(i, j, k, l), + i * M * N * M + j * N * M + k * M + l); + } + + // A 2-D MDRangePolicy + void mdRange2D() { + View_2D deviceDataView_2D("deviceData_2D", N, M); + hostDataView_2D = create_mirror_view(deviceDataView_2D); + + MDPolicyType_2D mdPolicy_2D({0, 0}, {N, M}); + + Kokkos::parallel_for( + mdPolicy_2D, KOKKOS_LAMBDA(const int i, const int j) { + deviceDataView_2D(i, j) = i * M + j; + }); + + // Copy data back to host view. + Kokkos::deep_copy(hostDataView_2D, deviceDataView_2D); + + // Check if all data has been update correctly + compare_equal_2D(); + } + + // A 3-D MDRangePolicy + void mdRange3D() { + View_3D deviceDataView_3D("deviceData_3D", N, M, N); + hostDataView_3D = create_mirror_view(deviceDataView_3D); + + MDPolicyType_3D mdPolicy_3D({0, 0, 0}, {N, M, N}); + + Kokkos::parallel_for( + mdPolicy_3D, KOKKOS_LAMBDA(const int i, const int j, const int k) { + deviceDataView_3D(i, j, k) = i * M * N + j * N + k; + }); + + // Copy data back to host view. + Kokkos::deep_copy(hostDataView_3D, deviceDataView_3D); + + // Check if all data has been update correctly + compare_equal_3D(); + } + + // A 4-D MDRangePolicy + void mdRange4D() { + View_4D deviceDataView_4D("deviceData_4D", N, M, N, M); + hostDataView_4D = create_mirror_view(deviceDataView_4D); + + MDPolicyType_4D mdPolicy_4D({0, 0, 0, 0}, {N, M, N, M}); + + Kokkos::parallel_for( + mdPolicy_4D, + KOKKOS_LAMBDA(const int i, const int j, const int k, const int l) { + deviceDataView_4D(i, j, k, l) = i * M * N * M + j * N * M + k * M + l; + }); + + Kokkos::deep_copy(hostDataView_4D, deviceDataView_4D); + + // Check if all data has been update correctly + compare_equal_4D(); + } +}; + +} // namespace Test05 + +namespace Test { + +// 2D MDRangePolicy +TEST(TEST_CATEGORY, IncrTest_08_deep_copy_2D) { + { + Test05::TestMDRangePolicy test; + test.mdRange2D(); + } +} + +// 3D MDRangePolicy +TEST(TEST_CATEGORY, IncrTest_08_deep_copy_3D) { + { + Test05::TestMDRangePolicy test; + test.mdRange3D(); + } +} + +// 4D MDRangePolicy +TEST(TEST_CATEGORY, IncrTest_08_deep_copy_4D) { + { + Test05::TestMDRangePolicy test; + test.mdRange4D(); + } +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test10_HierarchicalBasics.hpp b/lib/kokkos/core/unit_test/incremental/Test10_HierarchicalBasics.hpp new file mode 100644 index 0000000000..a5e478c30f --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test10_HierarchicalBasics.hpp @@ -0,0 +1,101 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// @Kokkos_Feature_Level_Required:10 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// contributions of paticipating processing units corresponds to expected value + +#include +#include + +namespace Test { + +template +struct HierarchicalBasics { + using policy_t = Kokkos::TeamPolicy; + using team_t = typename policy_t::member_type; + + void run(const int nP, int nT) { + if (nT > ExecSpace::concurrency()) nT = ExecSpace::concurrency(); + + policy_t pol(nP, nT); + + ASSERT_EQ(pol.league_size(), nP); + ASSERT_LE(pol.team_size(), nT); + nT = pol.team_size(); + + Kokkos::View v("Array_A", nP, nT); + Kokkos::parallel_for( + "Teams", pol, KOKKOS_LAMBDA(const team_t &team) { + const int tR = team.team_rank(); + const int tS = team.team_size(); + const int lR = team.league_rank(); + const int lS = team.league_size(); + if (lR < lS) { + v(lR, tR) = lR * tS + tR; + } else { + v(lR, tR) = 100000; + } + }); + Kokkos::fence(); + auto h_v = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + size_t check = 0; + size_t ref = nP * nT; + for (int i = 0; i < nP; ++i) + for (int j = 0; j < nT; ++j) check += h_v(i, j); + + ASSERT_EQ(check, ref * (ref - 1) / 2); + } +}; + +TEST(TEST_CATEGORY, IncrTest_10_Hierarchical_Basics) { + HierarchicalBasics test; + test.run(1, 4); + test.run(8, 16); + test.run(11, 13); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test11a_ParallelFor_TeamThreadRange.hpp b/lib/kokkos/core/unit_test/incremental/Test11a_ParallelFor_TeamThreadRange.hpp new file mode 100644 index 0000000000..e36b8f9d3f --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test11a_ParallelFor_TeamThreadRange.hpp @@ -0,0 +1,99 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// @Kokkos_Feature_Level_Required:11 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// contributions of paticipating processing units corresponds to expected value + +#include +#include + +namespace Test { + +template +struct Hierarchical_ForLoop_A { + void run(const int pN, const int sX, const int sY) { + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + typedef Kokkos::View viewDataType; + viewDataType v("Matrix", sX, sY); + + Kokkos::parallel_for( + "Team", team_policy(pN, Kokkos::AUTO), + KOKKOS_LAMBDA(const member_type &team) { + const int n = team.league_rank(); + const int ls = team.league_size(); + + const int startDim1 = n * (int)(sX / ls); + const int modDim1 = n == ls - 1 ? sX % ls : 0; + + Kokkos::parallel_for( + Kokkos::TeamThreadRange(team, v.extent(1)), [&](const int m) { + for (int i = startDim1; + i < (startDim1 + (int)(sX / ls) + modDim1); ++i) + v(i, m) = i * v.extent(1) + m; + }); + }); + + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + int check = 0; + const int s = sY * sX; + for (int i = 0; i < sX; ++i) + for (int j = 0; j < sY; ++j) check += v_H(i, j); + ASSERT_EQ(check, s * (s - 1) / 2); + } +}; + +TEST(TEST_CATEGORY, IncrTest_11a_Hierarchical_ForLoop) { + Hierarchical_ForLoop_A test; + test.run(4, 5, 200); + test.run(4, 7, 19); + test.run(14, 277, 321); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test11b_ParallelFor_TeamVectorRange.hpp b/lib/kokkos/core/unit_test/incremental/Test11b_ParallelFor_TeamVectorRange.hpp new file mode 100644 index 0000000000..7e4bb2aa3b --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test11b_ParallelFor_TeamVectorRange.hpp @@ -0,0 +1,99 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// @Kokkos_Feature_Level_Required:11 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// contributions of paticipating processing units corresponds to expected value + +#include +#include + +namespace Test { + +template +struct Hierarchical_ForLoop_B { + void run(const int pN, const int sX, const int sY) { + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + typedef Kokkos::View viewDataType; + viewDataType v("Matrix", sX, sY); + + Kokkos::parallel_for( + "Team", team_policy(pN, Kokkos::AUTO), + KOKKOS_LAMBDA(const member_type &team) { + const int n = team.league_rank(); + const int ls = team.league_size(); + + const int startDim1 = n * (int)(sX / ls); + const int modDim1 = n == ls - 1 ? sX % ls : 0; + + Kokkos::parallel_for( + Kokkos::TeamVectorRange(team, v.extent(1)), [&](const int m) { + for (int i = startDim1; + i < (startDim1 + (int)(sX / ls) + modDim1); ++i) + v(i, m) = i * v.extent(1) + m; + }); + }); + + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + int check = 0; + const int s = sY * sX; + for (int i = 0; i < sX; ++i) + for (int j = 0; j < sY; ++j) check += v_H(i, j); + ASSERT_EQ(check, s * (s - 1) / 2); + } +}; + +TEST(TEST_CATEGORY, IncrTest_11b_Hierarchical_ForLoop) { + Hierarchical_ForLoop_B test; + test.run(1, 6, 400); + test.run(6, 7, 19); + test.run(12, 277, 321); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test11c_ParallelFor_ThreadVectorRange.hpp b/lib/kokkos/core/unit_test/incremental/Test11c_ParallelFor_ThreadVectorRange.hpp new file mode 100644 index 0000000000..c6998a5781 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test11c_ParallelFor_ThreadVectorRange.hpp @@ -0,0 +1,105 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// @Kokkos_Feature_Level_Required:11 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// contributions of paticipating processing units corresponds to expected value + +#include +#include + +namespace Test { + +template +struct Hierarchical_ForLoop_C { + void run(const int pN, const int sX, const int sY, const int sZ) { + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + typedef Kokkos::View viewDataType; + viewDataType v("Matrix", sX, sY, sZ); + + Kokkos::parallel_for( + "Team", team_policy(pN, Kokkos::AUTO), + KOKKOS_LAMBDA(const member_type &team) { + int n = team.league_rank(); + int ls = team.league_size(); + + int startDim1 = n * (int)(sX / ls); + int modDim1 = n == ls - 1 ? sX % ls : 0; + + Kokkos::parallel_for( + Kokkos::TeamThreadRange(team, v.extent(1)), [&](const int m) { + Kokkos::parallel_for( + Kokkos::ThreadVectorRange(team, v.extent(2)), + [&](const int k) { + for (int i = startDim1; + i < (startDim1 + (int)(sX / ls) + modDim1); ++i) + v(i, m, k) = + i * v.extent(1) * v.extent(2) + m * v.extent(2) + k; + }); + }); + }); + + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + size_t check = 0; + const size_t s = sX * sY * sZ; + for (int i = 0; i < sX; ++i) + for (int j = 0; j < sY; ++j) + for (int k = 0; k < sZ; ++k) check += v_H(i, j, k); + ASSERT_EQ(check, s * (s - 1) / 2); + } +}; + +TEST(TEST_CATEGORY, IncrTest_11c_Hierarchical_ForLoop) { + Hierarchical_ForLoop_C test; + test.run(4, 16, 16, 16); + test.run(8, 12, 333, 16); + test.run(12, 277, 321, 345); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test12a_ThreadScratch.hpp b/lib/kokkos/core/unit_test/incremental/Test12a_ThreadScratch.hpp new file mode 100644 index 0000000000..8eb1c243c5 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test12a_ThreadScratch.hpp @@ -0,0 +1,125 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// @Kokkos_Feature_Level_Required:12 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// contributions of paticipating processing units corresponds to expected value +// Use a scratch pad memory for each team +#include +#include + +namespace Test { + +template +struct ThreadScratch { + using policy_t = Kokkos::TeamPolicy; + using team_t = typename Kokkos::TeamPolicy::member_type; + using data_t = Kokkos::View; + + using scratch_t = Kokkos::View >; + + int sX, sY; + data_t v; + KOKKOS_FUNCTION + void operator()(const team_t &team) const { + // Allocate and use scratch pad memory + scratch_t v_S(team.thread_scratch(1), sY); + int n = team.league_rank(); + + for (int i = 0; i < sY; ++i) v_S(i) = 0; + + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, sX), [&](const int m) { + Kokkos::parallel_for( + Kokkos::ThreadVectorRange(team, sY), + [&](const int k) { v_S(k) += sX * sY * n + sY * m + k; }); + }); + + team.team_barrier(); + + for (int i = 0; i < sY; ++i) { + v(n, team.team_rank()) += v_S(i); + } + } + + void run(const int pN, const int sX_, const int sY_) { + sX = sX_; + sY = sY_; + + int scratchSize = scratch_t::shmem_size(sY); + // So this works with deprecated code enabled: + policy_t policy = policy_t(pN, Kokkos::AUTO) + .set_scratch_size(1, Kokkos::PerThread(scratchSize)); + + int max_team_size = policy.team_size_max(*this, Kokkos::ParallelForTag()); + v = data_t("Matrix", pN, max_team_size); + + Kokkos::parallel_for( + "Test12a_ThreadScratch", + policy_t(pN, max_team_size) + .set_scratch_size(1, Kokkos::PerThread(scratchSize)), + *this); + + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + size_t check = 0; + const size_t s = pN * sX * sY; + for (int n = 0; n < pN; ++n) + for (int m = 0; m < max_team_size; ++m) { + check += v_H(n, m); + } + ASSERT_EQ(s * (s - 1) / 2, check); + } +}; + +TEST(TEST_CATEGORY, IncrTest_12a_ThreadScratch) { + ThreadScratch test; + test.run(1, 55, 9); + test.run(2, 4, 22); + test.run(14, 277, 321); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test12b_TeamScratch.hpp b/lib/kokkos/core/unit_test/incremental/Test12b_TeamScratch.hpp new file mode 100644 index 0000000000..169491af3f --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test12b_TeamScratch.hpp @@ -0,0 +1,113 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// @Kokkos_Feature_Level_Required:12 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// contributions of paticipating processing units corresponds to expected value +// Use a scratch pad memory for each team +#include +#include + +namespace Test { + +template +struct TeamScratch { + void run(const int pN, const int sX, const int sY) { + using policy_t = Kokkos::TeamPolicy; + using team_t = typename Kokkos::TeamPolicy::member_type; + using data_t = Kokkos::View; + data_t v("Matrix", pN, sX); + + using scratch_t = Kokkos::View >; + int scratchSize = scratch_t::shmem_size(sX, sY); + + Kokkos::parallel_for( + "Team", + policy_t(pN, Kokkos::AUTO) + .set_scratch_size(1, Kokkos::PerTeam(scratchSize)), + KOKKOS_LAMBDA(const team_t &team) { + // Allocate and use scratch pad memory + scratch_t v_S(team.team_scratch(1), sX, sY); + int n = team.league_rank(); + + Kokkos::parallel_for( + Kokkos::TeamThreadRange(team, sX), [&](const int m) { + Kokkos::parallel_for( + Kokkos::ThreadVectorRange(team, sY), [&](const int k) { + v_S(m, k) = v_S.extent(0) * v_S.extent(1) * n + + v_S.extent(1) * m + k; + }); + }); + + team.team_barrier(); + + // Sum up contributions and reduce by one dimension + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, sX), + [&](const int m) { + for (int i = 0; i < sY; ++i) + v(n, m) += v_S(m, i); + }); + }); + + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + size_t check = 0; + const size_t s = pN * sX * sY; + for (int n = 0; n < pN; ++n) + for (int m = 0; m < sX; ++m) check += v_H(n, m); + ASSERT_EQ(check, s * (s - 1) / 2); + } +}; + +TEST(TEST_CATEGORY, IncrTest_12b_TeamScratch) { + TeamScratch test; + test.run(1, 4, 4); + test.run(4, 7, 10); + test.run(14, 277, 321); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test13a_ParallelRed_TeamThreadRange.hpp b/lib/kokkos/core/unit_test/incremental/Test13a_ParallelRed_TeamThreadRange.hpp new file mode 100644 index 0000000000..b5467da921 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test13a_ParallelRed_TeamThreadRange.hpp @@ -0,0 +1,105 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// @Kokkos_Feature_Level_Required:13 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// sum of created processing units corresponds to expected value + +#include +#include + +// Degrees of concurrency per nesting level + +using SCALAR_TYPE = int; + +namespace Test { + +template +struct Hierarchical_Red_A { + void run(const int pN, const int sX) { + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + typedef Kokkos::View viewDataType; + viewDataType v("Vector", pN); + + Kokkos::parallel_for( + "Team", team_policy(pN, Kokkos::AUTO), + KOKKOS_LAMBDA(const member_type &team) { + const int n = team.league_rank(); + SCALAR_TYPE out = 0; + + Kokkos::parallel_reduce( + Kokkos::TeamThreadRange(team, sX), + [=](const int i, SCALAR_TYPE &tmp) { + tmp += n * v.extent(0) + i; + }, + out); + + Kokkos::single(Kokkos::PerTeam(team), [&]() { v(n) += out; }); + }); + + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + SCALAR_TYPE check = 0; + SCALAR_TYPE ref = 0; + for (int i = 0; i < pN; ++i) { + check += v_H(i); + ref += + (sX + i * pN) * (sX + i * pN - 1) / 2 - ((i * pN) * (i * pN - 1) / 2); + } + ASSERT_EQ(check, ref); + } +}; + +TEST(TEST_CATEGORY, IncrTest_13a_Hierarchical_Red) { + Hierarchical_Red_A test; + test.run(4, 16); + test.run(2, 39); + test.run(39, 3); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads.hpp b/lib/kokkos/core/unit_test/incremental/Test13b_ParallelRed_TeamVectorRange.hpp similarity index 57% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads.hpp rename to lib/kokkos/core/unit_test/incremental/Test13b_ParallelRed_TeamVectorRange.hpp index c45433d77d..ada295591e 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads.hpp +++ b/lib/kokkos/core/unit_test/incremental/Test13b_ParallelRed_TeamVectorRange.hpp @@ -42,68 +42,61 @@ //@HEADER */ -#ifndef KOKKOS_TEST_QTHREADS_HPP -#define KOKKOS_TEST_QTHREADS_HPP +// @Kokkos_Feature_Level_Required:13 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// sum of created processing units corresponds to expected value #include - -#include - -#ifdef KOKKOS_LAMBDA -#undef KOKKOS_LAMBDA -#endif -#define KOKKOS_LAMBDA [=] - #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +using SCALAR_TYPE = int; namespace Test { -class qthreads : public ::testing::Test { - protected: - static void SetUpTestCase() { - const unsigned numa_count = Kokkos::hwloc::get_available_numa_count(); - const unsigned cores_per_numa = - Kokkos::hwloc::get_available_cores_per_numa(); - const unsigned threads_per_core = - Kokkos::hwloc::get_available_threads_per_core(); +template +struct Hierarchical_Red_B { + void run(const int pN, const int sX) { + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; - const unsigned threads_count = - std::max(1u, numa_count) * - std::max(2u, (cores_per_numa * threads_per_core) / 2); + typedef Kokkos::View viewDataType; + viewDataType v("Vector", pN); - Kokkos::Qthreads::initialize(threads_count); - Kokkos::print_configuration(std::cout, true); + Kokkos::parallel_for( + "Team", team_policy(pN, Kokkos::AUTO), + KOKKOS_LAMBDA(const member_type &team) { + const int n = team.league_rank(); + SCALAR_TYPE out = 0; - srand(10231); + Kokkos::parallel_reduce( + Kokkos::TeamVectorRange(team, sX), + [=](const int i, SCALAR_TYPE &tmp) { + tmp += n * v.extent(0) + i; + }, + out); + + Kokkos::single(Kokkos::PerTeam(team), [&]() { v(n) += out; }); + }); + + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + SCALAR_TYPE check = 0; + SCALAR_TYPE ref = 0; + for (int i = 0; i < pN; ++i) { + check += v_H(i); + ref += ((sX + i * pN) * (sX + i * pN - 1) - (i * pN * (i * pN - 1))) / 2; + } + ASSERT_EQ(check, ref); } - - static void TearDownTestCase() { Kokkos::Qthreads::finalize(); } }; -} // namespace Test +TEST(TEST_CATEGORY, IncrTest_13b_Hierarchical_Red) { + Hierarchical_Red_B test; + test.run(4, 16); + test.run(2, 39); + test.run(39, 3); +} -#endif +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test13c_ParallelRed_ThreadVectorRange.hpp b/lib/kokkos/core/unit_test/incremental/Test13c_ParallelRed_ThreadVectorRange.hpp new file mode 100644 index 0000000000..7df940c58d --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test13c_ParallelRed_ThreadVectorRange.hpp @@ -0,0 +1,112 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// @Kokkos_Feature_Level_Required:13 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// sum of created processing units corresponds to expected value + +#include +#include + +using SCALAR_TYPE = int; + +namespace Test { + +template +struct Hierarchical_Red_C { + void run(const int pN, const int sX, const int sY) { + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + typedef Kokkos::View viewDataType; + viewDataType v("Vector", pN); + + Kokkos::parallel_for( + "Team", team_policy(pN, Kokkos::AUTO), + KOKKOS_LAMBDA(const member_type &team) { + int n = team.league_rank(); + SCALAR_TYPE out = 0; + + Kokkos::parallel_reduce( + Kokkos::TeamThreadRange(team, sX), + [=](const int i, SCALAR_TYPE &tmp) { + SCALAR_TYPE out_inner = 0; + Kokkos::parallel_reduce( + Kokkos::ThreadVectorRange(team, sY), + [=](const int k, int &tmp_inner) { + tmp_inner += n * sX * v.extent(0) + sX * i + k; + }, + out_inner); + + Kokkos::single(Kokkos::PerThread(team), + [&]() { tmp += out_inner; }); + }, + out); + + Kokkos::single(Kokkos::PerTeam(team), [&]() { v(n) += out; }); + }); + + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + SCALAR_TYPE check = 0; + SCALAR_TYPE ref = 0; + for (int i = 0; i < pN; ++i) { + check += v_H(i); + for (int j = 0; j < sX; ++j) + for (int k = 0; k < sY; ++k) ref += i * sX * pN + sX * j + k; + } + ASSERT_EQ(check, ref); + } +}; + +TEST(TEST_CATEGORY, IncrTest_13c_Hierarchical_Red) { + Hierarchical_Red_C test; + test.run(1, 4, 8); + test.run(2, 39, 12); + test.run(39, 3, 235); +} + +} // namespace Test diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_BitSet.cpp b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Concepts.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/openmp/TestOpenMP_BitSet.cpp rename to lib/kokkos/core/unit_test/openmp/TestOpenMP_Concepts.cpp index db11017159..5480af5aaf 100644 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_BitSet.cpp +++ b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Concepts.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -44,4 +43,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/core/unit_test/openmp/TestOpenMP_Other.cpp b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Other.cpp index 6e7463a33f..7043432517 100644 --- a/lib/kokkos/core/unit_test/openmp/TestOpenMP_Other.cpp +++ b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Other.cpp @@ -63,7 +63,7 @@ TEST(openmp, partition_master) { Mutex mtx; int errors = 0; - auto master = [&errors, &mtx](int partition_id, int num_partitions) { + auto master = [&errors, &mtx](int /*partition_id*/, int /*num_partitions*/) { #ifdef KOKKOS_ENABLE_DEPRECATED_CODE const int pool_size = Kokkos::OpenMP::thread_pool_size(); diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DualView.cpp b/lib/kokkos/core/unit_test/openmp/TestOpenMP_RangePolicyRequire.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DualView.cpp rename to lib/kokkos/core/unit_test/openmp/TestOpenMP_RangePolicyRequire.cpp index ed4eb23a8b..284a65a21e 100644 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DualView.cpp +++ b/lib/kokkos/core/unit_test/openmp/TestOpenMP_RangePolicyRequire.cpp @@ -44,4 +44,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/core/unit_test/openmp/TestOpenMP_Team.cpp b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Team.cpp index c389ebac37..2409307387 100644 --- a/lib/kokkos/core/unit_test/openmp/TestOpenMP_Team.cpp +++ b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Team.cpp @@ -80,25 +80,25 @@ TEST(TEST_CATEGORY, team_reduce) { } TEST(TEST_CATEGORY, team_broadcast) { - TestTeamBroadcast >::test_teambroadcast(0); - TestTeamBroadcast >::test_teambroadcast(0); + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); - TestTeamBroadcast >::test_teambroadcast(2); - TestTeamBroadcast >::test_teambroadcast(2); + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); - TestTeamBroadcast >::test_teambroadcast(16); - TestTeamBroadcast >::test_teambroadcast(16); + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); - TestTeamBroadcast >:: - test_teambroadcast(1000); - TestTeamBroadcast >:: - test_teambroadcast(1000); + TestTeamBroadcast, + long>::test_teambroadcast(1000, 1); + TestTeamBroadcast, + long>::test_teambroadcast(1000, 1); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/openmp/TestOpenMP_TeamScratch.cpp b/lib/kokkos/core/unit_test/openmp/TestOpenMP_TeamScratch.cpp index 5c283a6226..b42bdf754f 100644 --- a/lib/kokkos/core/unit_test/openmp/TestOpenMP_TeamScratch.cpp +++ b/lib/kokkos/core/unit_test/openmp/TestOpenMP_TeamScratch.cpp @@ -58,7 +58,6 @@ TEST(TEST_CATEGORY, team_scratch_request) { } #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) TEST(TEST_CATEGORY, team_lambda_shared_request) { TestLambdaSharedTeam >(); @@ -67,7 +66,6 @@ TEST(TEST_CATEGORY, team_lambda_shared_request) { } TEST(TEST_CATEGORY, scratch_align) { TestScratchAlignment(); } #endif -#endif TEST(TEST_CATEGORY, shmem_size) { TestShmemSize(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Concepts.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Concepts.cpp new file mode 100644 index 0000000000..8896339f99 --- /dev/null +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Concepts.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Crs.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Crs.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_FunctorAnalysis.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_FunctorAnalysis.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_LocalDeepCopy.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_LocalDeepCopy.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_RangePolicyRequire.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_RangePolicyRequire.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Reductions_DeviceView.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Reductions_DeviceView.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SharedAlloc.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SharedAlloc.cpp index aa0d9cfe27..6d5645547b 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SharedAlloc.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SharedAlloc.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, impl_shared_alloc) { +TEST(TEST_CATEGORY, impl_shared_alloc) { test_shared_alloc(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_a.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_a.cpp index 6f6255af87..4be6218e23 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_a.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_a.cpp @@ -47,51 +47,51 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_auto_1d_left) { +TEST(TEST_CATEGORY, view_subview_auto_1d_left) { TestViewSubview::test_auto_1d(); } -TEST_F(TEST_CATEGORY, view_subview_auto_1d_right) { +TEST(TEST_CATEGORY, view_subview_auto_1d_right) { TestViewSubview::test_auto_1d(); } -TEST_F(TEST_CATEGORY, view_subview_auto_1d_stride) { +TEST(TEST_CATEGORY, view_subview_auto_1d_stride) { TestViewSubview::test_auto_1d(); } -TEST_F(TEST_CATEGORY, view_subview_assign_strided) { +TEST(TEST_CATEGORY, view_subview_assign_strided) { TestViewSubview::test_1d_strided_assignment(); } -TEST_F(TEST_CATEGORY, view_subview_left_0) { +TEST(TEST_CATEGORY, view_subview_left_0) { TestViewSubview::test_left_0(); } -TEST_F(TEST_CATEGORY, view_subview_left_1) { +TEST(TEST_CATEGORY, view_subview_left_1) { TestViewSubview::test_left_1(); } -TEST_F(TEST_CATEGORY, view_subview_left_2) { +TEST(TEST_CATEGORY, view_subview_left_2) { TestViewSubview::test_left_2(); } -TEST_F(TEST_CATEGORY, view_subview_left_3) { +TEST(TEST_CATEGORY, view_subview_left_3) { TestViewSubview::test_left_3(); } -TEST_F(TEST_CATEGORY, view_subview_right_0) { +TEST(TEST_CATEGORY, view_subview_right_0) { TestViewSubview::test_right_0(); } -TEST_F(TEST_CATEGORY, view_subview_right_1) { +TEST(TEST_CATEGORY, view_subview_right_1) { TestViewSubview::test_right_1(); } -TEST_F(TEST_CATEGORY, view_subview_right_3) { +TEST(TEST_CATEGORY, view_subview_right_3) { TestViewSubview::test_right_3(); } -TEST_F(TEST_CATEGORY, view_static_tests) { +TEST(TEST_CATEGORY, view_static_tests) { TestViewSubview::TestSubviewStaticSizes()(); TestViewSubview::TestSubviewStaticSizes(); TestViewSubview::test_layoutleft_to_layoutleft< TEST_EXECSPACE, Kokkos::MemoryTraits >(); @@ -55,7 +55,7 @@ TEST_F(TEST_CATEGORY, view_subview_layoutleft_to_layoutleft) { TEST_EXECSPACE, Kokkos::MemoryTraits >(); } -TEST_F(TEST_CATEGORY, view_subview_layoutright_to_layoutright) { +TEST(TEST_CATEGORY, view_subview_layoutright_to_layoutright) { TestViewSubview::test_layoutright_to_layoutright(); TestViewSubview::test_layoutright_to_layoutright< TEST_EXECSPACE, Kokkos::MemoryTraits >(); diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c01.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c01.cpp index 953c383bf9..3361efcc16 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c01.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c01.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_1d_assign) { +TEST(TEST_CATEGORY, view_subview_1d_assign) { TestViewSubview::test_1d_assign(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c02.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c02.cpp index 3a6245e258..c4887cf3db 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c02.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c02.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_1d_assign_atomic) { +TEST(TEST_CATEGORY, view_subview_1d_assign_atomic) { TestViewSubview::test_1d_assign >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c03.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c03.cpp index e9e912dd0e..b172b0c619 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c03.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c03.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_1d_assign_randomaccess) { +TEST(TEST_CATEGORY, view_subview_1d_assign_randomaccess) { TestViewSubview::test_1d_assign< TEST_EXECSPACE, Kokkos::MemoryTraits >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c04.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c04.cpp index 0c5b9c8c01..faf0ef7a41 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c04.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c04.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_2d_from_3d) { +TEST(TEST_CATEGORY, view_subview_2d_from_3d) { TestViewSubview::test_2d_subview_3d(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c05.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c05.cpp index 0e11c637e6..a3fb95fbef 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c05.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c05.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(openmptarget, view_subview_2d_from_3d_atomic) { +TEST(openmptarget, view_subview_2d_from_3d_atomic) { TestViewSubview::test_2d_subview_3d >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c06.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c06.cpp index e9a30a1835..056b392cd5 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c06.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c06.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_2d_from_3d_randomaccess) { +TEST(TEST_CATEGORY, view_subview_2d_from_3d_randomaccess) { TestViewSubview::test_2d_subview_3d< TEST_EXECSPACE, Kokkos::MemoryTraits >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c07.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c07.cpp index 7d230d7e85..033bce8633 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c07.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c07.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_3d_from_5d_left) { +TEST(TEST_CATEGORY, view_subview_3d_from_5d_left) { TestViewSubview::test_3d_subview_5d_left(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c08.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c08.cpp index e0b1f17a98..58ef423608 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c08.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c08.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_3d_from_5d_left_atomic) { +TEST(TEST_CATEGORY, view_subview_3d_from_5d_left_atomic) { TestViewSubview::test_3d_subview_5d_left< TEST_EXECSPACE, Kokkos::MemoryTraits >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c09.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c09.cpp index 0b5d94b527..6e6c2af8e9 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c09.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c09.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_3d_from_5d_left_randomaccess) { +TEST(TEST_CATEGORY, view_subview_3d_from_5d_left_randomaccess) { TestViewSubview::test_3d_subview_5d_left< TEST_EXECSPACE, Kokkos::MemoryTraits >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c10.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c10.cpp index da2605da03..2ad95d38cf 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c10.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c10.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_3d_from_5d_right) { +TEST(TEST_CATEGORY, view_subview_3d_from_5d_right) { TestViewSubview::test_3d_subview_5d_right(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c11.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c11.cpp index 3aa927190c..da8684d21c 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c11.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c11.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_3d_from_5d_right_atomic) { +TEST(TEST_CATEGORY, view_subview_3d_from_5d_right_atomic) { TestViewSubview::test_3d_subview_5d_right< TEST_EXECSPACE, Kokkos::MemoryTraits >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c12.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c12.cpp index dde0db7dd8..dde7d51762 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c12.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c12.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_3d_from_5d_right_randomaccess) { +TEST(TEST_CATEGORY, view_subview_3d_from_5d_right_randomaccess) { TestViewSubview::test_3d_subview_5d_right< TEST_EXECSPACE, Kokkos::MemoryTraits >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c13.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c13.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Team.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Team.cpp index f2d063c25f..74b74d784c 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Team.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Team.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, team_for) { +TEST(TEST_CATEGORY, team_for) { TestTeamPolicy >::test_for( 0); TestTeamPolicy >::test_for( @@ -64,7 +64,7 @@ TEST_F(TEST_CATEGORY, team_for) { 1000); } -TEST_F(TEST_CATEGORY, team_reduce) { +TEST(TEST_CATEGORY, team_reduce) { TestTeamPolicy >::test_reduce(0); TestTeamPolicy >(0); TestScanTeam >(0); TestScanTeam >(10); @@ -56,7 +56,7 @@ TEST_F(TEST_CATEGORY, team_scan) { TestScanTeam >(10000); } -TEST_F(TEST_CATEGORY, team_long_reduce) { +TEST(TEST_CATEGORY, team_long_reduce) { TestReduceTeam >(0); TestReduceTeam >(0); TestReduceTeam >(3); @@ -67,7 +67,7 @@ TEST_F(TEST_CATEGORY, team_long_reduce) { 100000); } -TEST_F(TEST_CATEGORY, team_double_reduce) { +TEST(TEST_CATEGORY, team_double_reduce) { TestReduceTeam >(0); TestReduceTeam >(0); TestReduceTeam >(3); diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_TeamScratch.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_TeamScratch.cpp index b0a75432d7..729e359187 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_TeamScratch.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_TeamScratch.cpp @@ -47,18 +47,17 @@ namespace Test { -TEST_F(TEST_CATEGORY, team_shared_request) { +TEST(TEST_CATEGORY, team_shared_request) { TestSharedTeam >(); TestSharedTeam >(); } -TEST_F(TEST_CATEGORY, team_scratch_request) { +TEST(TEST_CATEGORY, team_scratch_request) { TestScratchTeam >(); TestScratchTeam >(); } #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) TEST_F(TEST_CATEGORY, team_lambda_shared_request) { TestLambdaSharedTeam >(); @@ -66,11 +65,10 @@ TEST_F(TEST_CATEGORY, team_lambda_shared_request) { Kokkos::Schedule >(); } #endif -#endif -TEST_F(TEST_CATEGORY, shmem_size) { TestShmemSize(); } +TEST(TEST_CATEGORY, shmem_size) { TestShmemSize(); } -TEST_F(TEST_CATEGORY, multi_level_scratch) { +TEST(TEST_CATEGORY, multi_level_scratch) { TestMultiLevelScratchTeam >(); TestMultiLevelScratchTeam - -namespace Test { - -TEST_F(qthreads, atomics) { -#if 0 - const int loop_count = 1e4; - - ASSERT_TRUE( ( TestAtomic::Loop< int, Kokkos::Qthreads >( loop_count, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< int, Kokkos::Qthreads >( loop_count, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< int, Kokkos::Qthreads >( loop_count, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< unsigned int, Kokkos::Qthreads >( loop_count, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< unsigned int, Kokkos::Qthreads >( loop_count, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< unsigned int, Kokkos::Qthreads >( loop_count, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< long int, Kokkos::Qthreads >( loop_count, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< long int, Kokkos::Qthreads >( loop_count, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< long int, Kokkos::Qthreads >( loop_count, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< unsigned long int, Kokkos::Qthreads >( loop_count, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< unsigned long int, Kokkos::Qthreads >( loop_count, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< unsigned long int, Kokkos::Qthreads >( loop_count, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< long long int, Kokkos::Qthreads >( loop_count, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< long long int, Kokkos::Qthreads >( loop_count, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< long long int, Kokkos::Qthreads >( loop_count, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< double, Kokkos::Qthreads >( loop_count, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< double, Kokkos::Qthreads >( loop_count, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< double, Kokkos::Qthreads >( loop_count, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< float, Kokkos::Qthreads >( 100, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< float, Kokkos::Qthreads >( 100, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< float, Kokkos::Qthreads >( 100, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< Kokkos::complex, Kokkos::Qthreads >( 100, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< Kokkos::complex, Kokkos::Qthreads >( 100, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< Kokkos::complex, Kokkos::Qthreads >( 100, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< TestAtomic::SuperScalar<4>, Kokkos::Qthreads >( 100, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< TestAtomic::SuperScalar<4>, Kokkos::Qthreads >( 100, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< TestAtomic::SuperScalar<4>, Kokkos::Qthreads >( 100, 3 ) ) ); -#endif -} - -TEST_F(qthreads, atomic_operations) { -#if 0 - const int start = 1; // Avoid zero for division. - const int end = 11; - - for ( int i = start; i < end; ++i ) - { - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 4 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 5 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 6 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 7 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 8 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 9 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 11 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 12 ) ) ); - - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 4 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 5 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 6 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 7 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 8 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 9 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 11 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 12 ) ) ); - - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 4 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 5 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 6 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 7 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 8 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 9 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 11 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 12 ) ) ); - - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 4 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 5 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 6 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 7 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 8 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 9 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 11 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 12 ) ) ); - - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 4 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 5 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 6 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 7 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 8 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 9 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 11 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 12 ) ) ); - - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< double, Kokkos::Qthreads >( start, end - i, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< double, Kokkos::Qthreads >( start, end - i, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< double, Kokkos::Qthreads >( start, end - i, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< double, Kokkos::Qthreads >( start, end - i, 4 ) ) ); - - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< float, Kokkos::Qthreads >( start, end - i, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< float, Kokkos::Qthreads >( start, end - i, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< float, Kokkos::Qthreads >( start, end - i, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< float, Kokkos::Qthreads >( start, end - i, 4 ) ) ); - } -#endif -} - -TEST_F(qthreads, atomic_views_integral) { -#if 0 - const long length = 1000000; - - { - // Integral Types. - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 4 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 5 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 6 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 7 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 8 ) ) ); - } -#endif -} - -TEST_F(qthreads, atomic_views_nonintegral) { -#if 0 - const long length = 1000000; - - { - // Non-Integral Types. - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestNonIntegralType< double, Kokkos::Qthreads >( length, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestNonIntegralType< double, Kokkos::Qthreads >( length, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestNonIntegralType< double, Kokkos::Qthreads >( length, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestNonIntegralType< double, Kokkos::Qthreads >( length, 4 ) ) ); - } -#endif -} - -TEST_F(qthreads, atomic_view_api) { -#if 0 - TestAtomicViews::TestAtomicViewAPI< int, Kokkos::Qthreads >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Complex.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_Complex.cpp deleted file mode 100644 index 09e1ca3e24..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Complex.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include -#include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Other.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_Other.cpp deleted file mode 100644 index 7d54616613..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Other.cpp +++ /dev/null @@ -1,196 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include - -namespace Test { - -TEST_F(qthreads, init) { ; } - -TEST_F(qthreads, md_range) { -#if 0 - TestMDRange_2D< Kokkos::Qthreads >::test_for2( 100, 100 ); - TestMDRange_3D< Kokkos::Qthreads >::test_for3( 100, 100, 100 ); -#endif -} - -TEST_F(qthreads, policy_construction) { -#if 0 - TestRangePolicyConstruction< Kokkos::Qthreads >(); - TestTeamPolicyConstruction< Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, range_tag) { -#if 0 - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 0 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 0 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_scan( 0 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 0 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 0 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_scan( 0 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_dynamic_policy( 0 ); - - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 2 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 2 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_scan( 2 ); - - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 3 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 3 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_scan( 3 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_dynamic_policy( 3 ); - - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 1000 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 1000 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_scan( 1000 ); - - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 1001 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 1001 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_scan( 1001 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_dynamic_policy( 1000 ); -#endif -} - -//---------------------------------------------------------------------------- - -TEST_F(qthreads, compiler_macros) { -#if 0 - ASSERT_TRUE( ( TestCompilerMacros::Test< Kokkos::Qthreads >() ) ); -#endif -} - -//---------------------------------------------------------------------------- - -TEST_F(qthreads, memory_pool) { -#if 0 - -#endif -} - -//---------------------------------------------------------------------------- - -#if defined(KOKKOS_ENABLE_TASKDAG) - -TEST_F(qthreads, task_fib) { -#if 0 - const int N = 24 ; // 25 triggers tbd bug on Cuda/Pascal - for ( int i = 0; i < N; ++i ) { - TestTaskScheduler::TestFib< Kokkos::Qthreads >::run( i, ( i + 1 ) * ( i + 1 ) * 10000 ); - } -#endif -} - -TEST_F(qthreads, task_depend) { -#if 0 - for ( int i = 0; i < 25; ++i ) { - TestTaskScheduler::TestTaskDependence< Kokkos::Qthreads >::run( i ); - } -#endif -} - -TEST_F(qthreads, task_team) { -#if 0 - TestTaskScheduler::TestTaskTeam< Kokkos::Qthreads >::run( 1000 ); - //TestTaskScheduler::TestTaskTeamValue< Kokkos::Qthreads >::run( 1000 ); // Put back after testing. -#endif -} - -#endif // #if defined( KOKKOS_ENABLE_TASKDAG ) - -//---------------------------------------------------------------------------- - -#if defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS) - -TEST_F(qthreads, cxx11) { -#if 0 - if ( std::is_same< Kokkos::DefaultExecutionSpace, Kokkos::Qthreads >::value ) { - ASSERT_TRUE( ( TestCXX11::Test< Kokkos::Qthreads >( 1 ) ) ); - ASSERT_TRUE( ( TestCXX11::Test< Kokkos::Qthreads >( 2 ) ) ); - ASSERT_TRUE( ( TestCXX11::Test< Kokkos::Qthreads >( 3 ) ) ); - ASSERT_TRUE( ( TestCXX11::Test< Kokkos::Qthreads >( 4 ) ) ); - } -#endif -} - -#endif - -TEST_F(qthreads, tile_layout) { -#if 0 - TestTile::test< Kokkos::Qthreads, 1, 1 >( 1, 1 ); - TestTile::test< Kokkos::Qthreads, 1, 1 >( 2, 3 ); - TestTile::test< Kokkos::Qthreads, 1, 1 >( 9, 10 ); - - TestTile::test< Kokkos::Qthreads, 2, 2 >( 1, 1 ); - TestTile::test< Kokkos::Qthreads, 2, 2 >( 2, 3 ); - TestTile::test< Kokkos::Qthreads, 2, 2 >( 4, 4 ); - TestTile::test< Kokkos::Qthreads, 2, 2 >( 9, 9 ); - - TestTile::test< Kokkos::Qthreads, 2, 4 >( 9, 9 ); - TestTile::test< Kokkos::Qthreads, 4, 2 >( 9, 9 ); - - TestTile::test< Kokkos::Qthreads, 4, 4 >( 1, 1 ); - TestTile::test< Kokkos::Qthreads, 4, 4 >( 4, 4 ); - TestTile::test< Kokkos::Qthreads, 4, 4 >( 9, 9 ); - TestTile::test< Kokkos::Qthreads, 4, 4 >( 9, 11 ); - - TestTile::test< Kokkos::Qthreads, 8, 8 >( 1, 1 ); - TestTile::test< Kokkos::Qthreads, 8, 8 >( 4, 4 ); - TestTile::test< Kokkos::Qthreads, 8, 8 >( 9, 9 ); - TestTile::test< Kokkos::Qthreads, 8, 8 >( 9, 11 ); -#endif -} - -TEST_F(qthreads, dispatch) { -#if 0 - const int repeat = 100; - for ( int i = 0; i < repeat; ++i ) { - for ( int j = 0; j < repeat; ++j ) { - Kokkos::parallel_for( Kokkos::RangePolicy< Kokkos::Qthreads >( 0, j ) - , KOKKOS_LAMBDA( int ) {} ); - } - } -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Reductions.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_Reductions.cpp deleted file mode 100644 index 9e60ad123f..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Reductions.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include - -namespace Test { - -TEST_F(qthreads, long_reduce) { -#if 0 - TestReduce< long, Kokkos::Qthreads >( 0 ); - TestReduce< long, Kokkos::Qthreads >( 1000000 ); -#endif -} - -TEST_F(qthreads, double_reduce) { -#if 0 - TestReduce< double, Kokkos::Qthreads >( 0 ); - TestReduce< double, Kokkos::Qthreads >( 1000000 ); -#endif -} - -TEST_F(qthreads, reducers) { -#if 0 - TestReducers< int, Kokkos::Qthreads >::execute_integer(); - TestReducers< size_t, Kokkos::Qthreads >::execute_integer(); - TestReducers< double, Kokkos::Qthreads >::execute_float(); - TestReducers< Kokkos::complex, Kokkos::Qthreads>::execute_basic(); -#endif -} - -TEST_F(qthreads, long_reduce_dynamic) { -#if 0 - TestReduceDynamic< long, Kokkos::Qthreads >( 0 ); - TestReduceDynamic< long, Kokkos::Qthreads >( 1000000 ); -#endif -} - -TEST_F(qthreads, double_reduce_dynamic) { -#if 0 - TestReduceDynamic< double, Kokkos::Qthreads >( 0 ); - TestReduceDynamic< double, Kokkos::Qthreads >( 1000000 ); -#endif -} - -TEST_F(qthreads, long_reduce_dynamic_view) { -#if 0 - TestReduceDynamicView< long, Kokkos::Qthreads >( 0 ); - TestReduceDynamicView< long, Kokkos::Qthreads >( 1000000 ); -#endif -} - -TEST_F(qthreads, scan) { -#if 0 - TestScan< Kokkos::Qthreads >::test_range( 1, 1000 ); - TestScan< Kokkos::Qthreads >( 0 ); - TestScan< Kokkos::Qthreads >( 100000 ); - TestScan< Kokkos::Qthreads >( 10000000 ); - Kokkos::Qthreads().fence(); -#endif -} - -TEST_F(qthreads, scan_small) { -#if 0 - typedef TestScan< Kokkos::Qthreads, Kokkos::Impl::QthreadsExecUseScanSmall > TestScanFunctor; - - for ( int i = 0; i < 1000; ++i ) { - TestScanFunctor( 10 ); - TestScanFunctor( 10000 ); - } - TestScanFunctor( 1000000 ); - TestScanFunctor( 10000000 ); - - Kokkos::Qthreads().fence(); -#endif -} - -TEST_F(qthreads, team_scan) { -#if 0 - TestScanTeam< Kokkos::Qthreads, Kokkos::Schedule >( 0 ); - TestScanTeam< Kokkos::Qthreads, Kokkos::Schedule >( 0 ); - TestScanTeam< Kokkos::Qthreads, Kokkos::Schedule >( 10 ); - TestScanTeam< Kokkos::Qthreads, Kokkos::Schedule >( 10 ); - TestScanTeam< Kokkos::Qthreads, Kokkos::Schedule >( 10000 ); - TestScanTeam< Kokkos::Qthreads, Kokkos::Schedule >( 10000 ); -#endif -} - -TEST_F(qthreads, team_long_reduce) { -#if 0 - TestReduceTeam< long, Kokkos::Qthreads, Kokkos::Schedule >( 0 ); - TestReduceTeam< long, Kokkos::Qthreads, Kokkos::Schedule >( 0 ); - TestReduceTeam< long, Kokkos::Qthreads, Kokkos::Schedule >( 3 ); - TestReduceTeam< long, Kokkos::Qthreads, Kokkos::Schedule >( 3 ); - TestReduceTeam< long, Kokkos::Qthreads, Kokkos::Schedule >( 100000 ); - TestReduceTeam< long, Kokkos::Qthreads, Kokkos::Schedule >( 100000 ); -#endif -} - -TEST_F(qthreads, team_double_reduce) { -#if 0 - TestReduceTeam< double, Kokkos::Qthreads, Kokkos::Schedule >( 0 ); - TestReduceTeam< double, Kokkos::Qthreads, Kokkos::Schedule >( 0 ); - TestReduceTeam< double, Kokkos::Qthreads, Kokkos::Schedule >( 3 ); - TestReduceTeam< double, Kokkos::Qthreads, Kokkos::Schedule >( 3 ); - TestReduceTeam< double, Kokkos::Qthreads, Kokkos::Schedule >( 100000 ); - TestReduceTeam< double, Kokkos::Qthreads, Kokkos::Schedule >( 100000 ); -#endif -} - -TEST_F(qthreads, reduction_deduction) { -#if 0 - TestCXX11::test_reduction_deduction< Kokkos::Qthreads >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c05.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c05.cpp deleted file mode 100644 index 1e6b673662..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c05.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include - -namespace Test { - -TEST_F(qthreads, view_subview_2d_from_3d_atomic) { -#if 0 - TestViewSubview::test_2d_subview_3d< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c06.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c06.cpp deleted file mode 100644 index b2ef924f87..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c06.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include - -namespace Test { - -TEST_F(qthreads, view_subview_2d_from_3d_randomaccess) { -#if 0 - TestViewSubview::test_2d_subview_3d< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c08.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c08.cpp deleted file mode 100644 index 0bc591c128..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c08.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include - -namespace Test { - -TEST_F(qthreads, view_subview_3d_from_5d_left_atomic) { -#if 0 - TestViewSubview::test_3d_subview_5d_left< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c09.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c09.cpp deleted file mode 100644 index 45d878fcea..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c09.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include - -namespace Test { - -TEST_F(qthreads, view_subview_3d_from_5d_left_randomaccess) { -#if 0 - TestViewSubview::test_3d_subview_5d_left< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c11.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c11.cpp deleted file mode 100644 index 6bfd19ad65..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c11.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include - -namespace Test { - -TEST_F(qthreads, view_subview_3d_from_5d_right_atomic) { -#if 0 - TestViewSubview::test_3d_subview_5d_right< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c12.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c12.cpp deleted file mode 100644 index 9b6896d3ee..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c12.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include - -namespace Test { - -TEST_F(qthreads, view_subview_3d_from_5d_right_randomaccess) { -#if 0 - TestViewSubview::test_3d_subview_5d_right< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c13.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c13.cpp deleted file mode 100644 index e03190d514..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c13.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include - -namespace Test { - -TEST_F(qthreads, view_test_unmanaged_subview_reset) { -#if 0 - TestViewSubview::test_unmanaged_subview_reset< TEST_EXECSPACE >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c_all.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c_all.cpp deleted file mode 100644 index d8ea958a5d..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c_all.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Team.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_Team.cpp deleted file mode 100644 index 6a4d9323a7..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Team.cpp +++ /dev/null @@ -1,136 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include - -namespace Test { - -TEST_F(qthreads, team_tag) { -#if 0 - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 0 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 0 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 0 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 0 ); - - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 2 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 2 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 2 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 2 ); - - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 1000 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 1000 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 1000 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 1000 ); -#endif -} - -TEST_F(qthreads, team_shared_request) { -#if 0 - TestSharedTeam< Kokkos::Qthreads, Kokkos::Schedule >(); - TestSharedTeam< Kokkos::Qthreads, Kokkos::Schedule >(); -#endif -} - -TEST_F(qthreads, team_scratch_request) { -#if 0 - TestScratchTeam< Kokkos::Qthreads, Kokkos::Schedule >(); - TestScratchTeam< Kokkos::Qthreads, Kokkos::Schedule >(); -#endif -} - -#if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -TEST_F(qthreads, team_lambda_shared_request) { -#if 0 - TestLambdaSharedTeam< Kokkos::HostSpace, Kokkos::Qthreads, Kokkos::Schedule >(); - TestLambdaSharedTeam< Kokkos::HostSpace, Kokkos::Qthreads, Kokkos::Schedule >(); -#endif -} -#endif - -TEST_F(qthreads, shmem_size) { -#if 0 - TestShmemSize< Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, multi_level_scratch) { -#if 0 - TestMultiLevelScratchTeam< Kokkos::Qthreads, Kokkos::Schedule >(); - TestMultiLevelScratchTeam< Kokkos::Qthreads, Kokkos::Schedule >(); -#endif -} - -TEST_F(qthreads, team_vector) { -#if 0 - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 0 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 1 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 2 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 3 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 4 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 5 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 6 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 7 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 8 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 9 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 10 ) ) ); -#endif -} - -#ifdef KOKKOS_COMPILER_GNU -#if (KOKKOS_COMPILER_GNU == 472) -#define SKIP_TEST -#endif -#endif - -#ifndef SKIP_TEST -TEST_F(qthreads, triple_nested_parallelism) { -#if 0 - TestTripleNestedReduce< double, Kokkos::Qthreads >( 8192, 2048, 32, 32 ); - TestTripleNestedReduce< double, Kokkos::Qthreads >( 8192, 2048, 32, 16 ); - TestTripleNestedReduce< double, Kokkos::Qthreads >( 8192, 2048, 16, 16 ); -#endif -} -#endif - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_ViewAPI_a.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_ViewAPI_a.cpp deleted file mode 100644 index fad6473d20..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_ViewAPI_a.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#include - -namespace Test { - -TEST_F(qthreads, impl_view_mapping_a) { -#if 0 - test_view_mapping< Kokkos::Qthreads >(); - test_view_mapping_operator< Kokkos::Qthreads >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_BitSet.cpp b/lib/kokkos/core/unit_test/serial/TestSerial_Concepts.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/serial/TestSerial_BitSet.cpp rename to lib/kokkos/core/unit_test/serial/TestSerial_Concepts.cpp index 322e88a6af..aa2c1577ce 100644 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_BitSet.cpp +++ b/lib/kokkos/core/unit_test/serial/TestSerial_Concepts.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -44,4 +43,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_DualView.cpp b/lib/kokkos/core/unit_test/serial/TestSerial_RangePolicyRequire.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/serial/TestSerial_DualView.cpp rename to lib/kokkos/core/unit_test/serial/TestSerial_RangePolicyRequire.cpp index c1646ed13b..dcc77054d6 100644 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_DualView.cpp +++ b/lib/kokkos/core/unit_test/serial/TestSerial_RangePolicyRequire.cpp @@ -44,4 +44,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/core/unit_test/serial/TestSerial_Team.cpp b/lib/kokkos/core/unit_test/serial/TestSerial_Team.cpp index e85ea86f3f..1ee6946810 100644 --- a/lib/kokkos/core/unit_test/serial/TestSerial_Team.cpp +++ b/lib/kokkos/core/unit_test/serial/TestSerial_Team.cpp @@ -79,26 +79,87 @@ TEST(TEST_CATEGORY, team_reduce) { Kokkos::Schedule >::test_reduce(1000); } -TEST(TEST_CATEGORY, team_broadcast) { - TestTeamBroadcast >::test_teambroadcast(0); - TestTeamBroadcast >::test_teambroadcast(0); +TEST(TEST_CATEGORY, team_broadcast_long) { + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); - TestTeamBroadcast >::test_teambroadcast(2); - TestTeamBroadcast >::test_teambroadcast(2); + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); - TestTeamBroadcast >::test_teambroadcast(16); - TestTeamBroadcast >::test_teambroadcast(16); + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); - TestTeamBroadcast >:: - test_teambroadcast(1000); - TestTeamBroadcast >:: - test_teambroadcast(1000); + TestTeamBroadcast, + long>::test_teambroadcast(1000, 1); + TestTeamBroadcast, + long>::test_teambroadcast(1000, 1); +} + +TEST(TEST_CATEGORY, team_broadcast_char) { + TestTeamBroadcast, + unsigned char>::test_teambroadcast(0, 1); + TestTeamBroadcast, + unsigned char>::test_teambroadcast(0, 1); + + TestTeamBroadcast, + unsigned char>::test_teambroadcast(2, 1); + TestTeamBroadcast, + unsigned char>::test_teambroadcast(2, 1); + + TestTeamBroadcast, + unsigned char>::test_teambroadcast(16, 1); + TestTeamBroadcast, + unsigned char>::test_teambroadcast(16, 1); +} + +TEST(TEST_CATEGORY, team_broadcast_float) { + TestTeamBroadcast, + float>::test_teambroadcast(0, 1.3); + TestTeamBroadcast, + float>::test_teambroadcast(0, 1.3); + + TestTeamBroadcast, + float>::test_teambroadcast(2, 1.3); + TestTeamBroadcast, + float>::test_teambroadcast(2, 1.3); + + TestTeamBroadcast, + float>::test_teambroadcast(16, 1.3); + TestTeamBroadcast, + float>::test_teambroadcast(16, 1.3); + + TestTeamBroadcast, + float>::test_teambroadcast(1000, 1.3); + TestTeamBroadcast, + float>::test_teambroadcast(1000, 1.3); +} + +TEST(TEST_CATEGORY, team_broadcast_double) { + TestTeamBroadcast, + double>::test_teambroadcast(0, 1.3); + TestTeamBroadcast, + double>::test_teambroadcast(0, 1.3); + + TestTeamBroadcast, + double>::test_teambroadcast(2, 1.3); + TestTeamBroadcast, + double>::test_teambroadcast(2, 1.3); + + TestTeamBroadcast, + double>::test_teambroadcast(16, 1.3); + TestTeamBroadcast, + double>::test_teambroadcast(16, 1.3); + + TestTeamBroadcast, + double>::test_teambroadcast(1000, 1.3); + TestTeamBroadcast, + double>::test_teambroadcast(1000, 1.3); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/serial/TestSerial_TeamScratch.cpp b/lib/kokkos/core/unit_test/serial/TestSerial_TeamScratch.cpp index e70b3e34d6..5d10c0c5e9 100644 --- a/lib/kokkos/core/unit_test/serial/TestSerial_TeamScratch.cpp +++ b/lib/kokkos/core/unit_test/serial/TestSerial_TeamScratch.cpp @@ -58,7 +58,6 @@ TEST(TEST_CATEGORY, team_scratch_request) { } #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) TEST(TEST_CATEGORY, team_lambda_shared_request) { TestLambdaSharedTeam >(); @@ -68,7 +67,6 @@ TEST(TEST_CATEGORY, team_lambda_shared_request) { TEST(TEST_CATEGORY, scratch_align) { TestScratchAlignment(); } #endif -#endif TEST(TEST_CATEGORY, shmem_size) { TestShmemSize(); } diff --git a/lib/kokkos/core/unit_test/standalone/Makefile b/lib/kokkos/core/unit_test/standalone/Makefile index c910cc5fd1..d60422233d 100644 --- a/lib/kokkos/core/unit_test/standalone/Makefile +++ b/lib/kokkos/core/unit_test/standalone/Makefile @@ -9,7 +9,6 @@ ifndef KOKKOS_PATH endif SRC = $(wildcard $(MAKEFILE_PATH)*.cpp) -SRC += $(MAKEFILE_PATH)/../TestStackTrace.cpp HEADERS = $(wildcard $(MAKEFILE_PATH)*.hpp) HEADERS = $(wildcard $(MAKEFILE_PATH)/../*.hpp) @@ -42,7 +41,7 @@ include $(KOKKOS_PATH)/Makefile.kokkos build: $(EXE) $(EXE): $(OBJ) $(KOKKOS_LINK_DEPENDS) gtest-all.o - $(LINK) $(KOKKOS_LDFLAGS) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(KOKKOS_LIBS) $(LIB) gtest-all.o -o $(EXE) + $(LINK) $(KOKKOS_LDFLAGS) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(KOKKOS_LIBS) $(LIB) gtest-all.o -lpthread -o $(EXE) clean: kokkos-clean rm -f *.o *.cuda *.host diff --git a/lib/kokkos/core/unit_test/standalone/UnitTestMainInit.cpp b/lib/kokkos/core/unit_test/standalone/UnitTestMainInit.cpp index 8f8bac7b23..c5d4a36677 100644 --- a/lib/kokkos/core/unit_test/standalone/UnitTestMainInit.cpp +++ b/lib/kokkos/core/unit_test/standalone/UnitTestMainInit.cpp @@ -62,12 +62,15 @@ #ifdef KOKKOS_ENABLE_HPX #include #endif +#ifdef KOKKOS_ENABLE_OPENMPTARGET +#include +#endif #ifndef TEST_EXECSPACE #ifdef KOKKOS_ENABLE_SERIAL #include #endif #endif -#include +#include int main(int argc, char *argv[]) { Kokkos::initialize(argc, argv); diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_BitSet.cpp b/lib/kokkos/core/unit_test/threads/TestThreads_Concepts.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/threads/TestThreads_BitSet.cpp rename to lib/kokkos/core/unit_test/threads/TestThreads_Concepts.cpp index ec93bb121c..ed2d61ed3b 100644 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_BitSet.cpp +++ b/lib/kokkos/core/unit_test/threads/TestThreads_Concepts.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -44,4 +43,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_DualView.cpp b/lib/kokkos/core/unit_test/threads/TestThreads_RangePolicyRequire.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/threads/TestThreads_DualView.cpp rename to lib/kokkos/core/unit_test/threads/TestThreads_RangePolicyRequire.cpp index f6967bf0d4..7a10b82658 100644 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_DualView.cpp +++ b/lib/kokkos/core/unit_test/threads/TestThreads_RangePolicyRequire.cpp @@ -44,4 +44,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/core/unit_test/threads/TestThreads_Team.cpp b/lib/kokkos/core/unit_test/threads/TestThreads_Team.cpp index b931c5cb61..5d2e360734 100644 --- a/lib/kokkos/core/unit_test/threads/TestThreads_Team.cpp +++ b/lib/kokkos/core/unit_test/threads/TestThreads_Team.cpp @@ -80,25 +80,25 @@ TEST(TEST_CATEGORY, team_reduce) { } TEST(TEST_CATEGORY, team_broadcast) { - TestTeamBroadcast >::test_teambroadcast(0); - TestTeamBroadcast >::test_teambroadcast(0); + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); - TestTeamBroadcast >::test_teambroadcast(2); - TestTeamBroadcast >::test_teambroadcast(2); + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); - TestTeamBroadcast >::test_teambroadcast(16); - TestTeamBroadcast >::test_teambroadcast(16); + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); - TestTeamBroadcast >:: - test_teambroadcast(1000); - TestTeamBroadcast >:: - test_teambroadcast(1000); + TestTeamBroadcast, + long>::test_teambroadcast(1000, 1); + TestTeamBroadcast, + long>::test_teambroadcast(1000, 1); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/threads/TestThreads_TeamScratch.cpp b/lib/kokkos/core/unit_test/threads/TestThreads_TeamScratch.cpp index d793a9050f..a37369fc04 100644 --- a/lib/kokkos/core/unit_test/threads/TestThreads_TeamScratch.cpp +++ b/lib/kokkos/core/unit_test/threads/TestThreads_TeamScratch.cpp @@ -58,7 +58,6 @@ TEST(TEST_CATEGORY, team_scratch_request) { } #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) TEST(TEST_CATEGORY, team_lambda_shared_request) { TestLambdaSharedTeam >(); @@ -68,7 +67,6 @@ TEST(TEST_CATEGORY, team_lambda_shared_request) { TEST(TEST_CATEGORY, scratch_align) { TestScratchAlignment(); } #endif -#endif TEST(TEST_CATEGORY, shmem_size) { TestShmemSize(); } diff --git a/lib/kokkos/example/CMakeLists.txt b/lib/kokkos/example/CMakeLists.txt index c7d6099546..34157329d0 100644 --- a/lib/kokkos/example/CMakeLists.txt +++ b/lib/kokkos/example/CMakeLists.txt @@ -2,19 +2,11 @@ # Subpackage name must match what appears in kokkos/cmake/Dependencies.cmake # -#KOKKOS_SUBPACKAGE(Example) +KOKKOS_SUBPACKAGE(Example) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(query_device) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(fixture) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(feint) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(fenl) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(multi_fem) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(md_skeleton) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(global_2_local_ids) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(grow_array) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(sort_array) -#if(NOT Kokkos_ENABLE_CUDA) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(tutorial) -#endif() -#KOKKOS_SUBPACKAGE_POSTPROCESS() +KOKKOS_ADD_EXAMPLE_DIRECTORIES(query_device) +if(NOT Kokkos_ENABLE_CUDA) + KOKKOS_ADD_EXAMPLE_DIRECTORIES(tutorial) +endif() +KOKKOS_SUBPACKAGE_POSTPROCESS() diff --git a/lib/kokkos/example/README b/lib/kokkos/example/README index ec64004842..6686051244 100644 --- a/lib/kokkos/example/README +++ b/lib/kokkos/example/README @@ -5,12 +5,5 @@ Tpetra. MANIFEST: - - common: Header files used by different examples - - feint: Unstructured finite-element method - - fixture: Some other finite-element method example - - global_2_local_ids: Example of global-to-local index lookup - - grow_array: Parallel dynamic memory allocation - - md_skeleton: Molecular dynamics - query_device: Kokkos' HWLOC wrapper for querying device topology - - sort_array: Parallel sort - tutorial: Kokkos tutorial (START HERE) diff --git a/lib/kokkos/example/build_cmake_in_tree/cmake_example.cpp b/lib/kokkos/example/build_cmake_in_tree/cmake_example.cpp index c6bbaeca81..63875d013f 100644 --- a/lib/kokkos/example/build_cmake_in_tree/cmake_example.cpp +++ b/lib/kokkos/example/build_cmake_in_tree/cmake_example.cpp @@ -57,7 +57,7 @@ int main(int argc, char* argv[]) { exit(1); } - const long n = strtol(argv[1], NULL, 10); + const long n = strtol(argv[1], nullptr, 10); printf("Number of even integers from 0 to %ld\n", n - 1); diff --git a/lib/kokkos/example/build_cmake_installed/cmake_example.cpp b/lib/kokkos/example/build_cmake_installed/cmake_example.cpp index c6bbaeca81..63875d013f 100644 --- a/lib/kokkos/example/build_cmake_installed/cmake_example.cpp +++ b/lib/kokkos/example/build_cmake_installed/cmake_example.cpp @@ -57,7 +57,7 @@ int main(int argc, char* argv[]) { exit(1); } - const long n = strtol(argv[1], NULL, 10); + const long n = strtol(argv[1], nullptr, 10); printf("Number of even integers from 0 to %ld\n", n - 1); diff --git a/lib/kokkos/example/cmake/Dependencies.cmake b/lib/kokkos/example/cmake/Dependencies.cmake deleted file mode 100644 index 741db6a0c4..0000000000 --- a/lib/kokkos/example/cmake/Dependencies.cmake +++ /dev/null @@ -1,3 +0,0 @@ -TRIBITS_PACKAGE_DEFINE_DEPENDENCIES( - TEST_OPTIONAL_TPLS CUSPARSE MKL HPX - ) diff --git a/lib/kokkos/example/query_device/query_device.cpp b/lib/kokkos/example/query_device/query_device.cpp index 0ce7fc9eca..a563b06b28 100644 --- a/lib/kokkos/example/query_device/query_device.cpp +++ b/lib/kokkos/example/query_device/query_device.cpp @@ -59,6 +59,8 @@ int main(int argc, char** argv) { std::ostringstream msg; + (void)argc; + (void)argv; #if defined(KOKKOS_ENABLE_MPI) MPI_Init(&argc, &argv); diff --git a/lib/kokkos/example/tutorial/CMakeLists.txt b/lib/kokkos/example/tutorial/CMakeLists.txt index 2d8259506a..fd471fa6be 100644 --- a/lib/kokkos/example/tutorial/CMakeLists.txt +++ b/lib/kokkos/example/tutorial/CMakeLists.txt @@ -8,11 +8,9 @@ KOKKOS_ADD_EXAMPLE_DIRECTORIES(06_simple_mdrangepolicy) KOKKOS_ADD_EXAMPLE_DIRECTORIES(Advanced_Views) KOKKOS_ADD_EXAMPLE_DIRECTORIES(Hierarchical_Parallelism) -IF (Kokkos_ENABLE_CXX11) - KOKKOS_ADD_EXAMPLE_DIRECTORIES(01_hello_world_lambda) - KOKKOS_ADD_EXAMPLE_DIRECTORIES(02_simple_reduce_lambda) - KOKKOS_ADD_EXAMPLE_DIRECTORIES(03_simple_view_lambda) -ENDIF () +KOKKOS_ADD_EXAMPLE_DIRECTORIES(01_hello_world_lambda) +KOKKOS_ADD_EXAMPLE_DIRECTORIES(02_simple_reduce_lambda) +KOKKOS_ADD_EXAMPLE_DIRECTORIES(03_simple_view_lambda) diff --git a/lib/kokkos/example/tutorial/README b/lib/kokkos/example/tutorial/README index 4ba0b3a5d9..c46ace0d11 100644 --- a/lib/kokkos/example/tutorial/README +++ b/lib/kokkos/example/tutorial/README @@ -2,16 +2,11 @@ Build the examples by typing in each directory: make -j 16 To specify a target device: -make openmp -j 16 -make pthreads -j 16 -make serial -j 16 -make cuda -j 16 +KOKKOS_DEVICES=OpenMP make -j 16 +KOKKOS_DEVICES=Pthread make -j 16 +KOKKOS_DEVICES=Serial make -j 16 +KOKKOS_DEVICES=Cuda make -j 16 -The lambda variants can not be build with CUDA=yes at the moment, since -CUDA does not support lambdas from the host. Some of the advanced topics try to highlight performance impacts by timing different variants of doing the same thing. -Also some of the advanced topics (in particular hierarchical parallelism) -require C++11 even with out using host side lambdas. CUDA 6.5 can be used -to compile those. diff --git a/lib/kokkos/example/virtual_functions/Makefile b/lib/kokkos/example/virtual_functions/Makefile index 06186786c2..fbc54510da 100644 --- a/lib/kokkos/example/virtual_functions/Makefile +++ b/lib/kokkos/example/virtual_functions/Makefile @@ -1,5 +1,5 @@ KOKKOS_DEVICES=Cuda -KOKKOS_CUDA_OPTIONS=enable_lambda +KOKKOS_CUDA_OPTIONS=enable_lambda,rdc KOKKOS_ARCH = "SNB,Kepler35" #KOKKOS_DEVICES=OpenMP diff --git a/lib/kokkos/generate_makefile.bash b/lib/kokkos/generate_makefile.bash index 7ef477b9f2..555f0b30a1 100755 --- a/lib/kokkos/generate_makefile.bash +++ b/lib/kokkos/generate_makefile.bash @@ -1,113 +1,85 @@ #!/bin/bash -KOKKOS_DEVICES="" +update_kokkos_devices() { + SEARCH_TEXT="*$1*" + if [[ $KOKKOS_DEVICES == $SEARCH_TEXT ]]; then + echo kokkos devices already includes $SEARCH_TEXT + else + if [ "$KOKKOS_DEVICES" = "" ]; then + KOKKOS_DEVICES="$1" + echo reseting kokkos devices to $KOKKOS_DEVICES + else + KOKKOS_DEVICES="${KOKKOS_DEVICES},$1" + echo appending to kokkos devices $KOKKOS_DEVICES + fi + fi +} -while [[ $# > 0 ]] -do - key="$1" +get_kokkos_device_list() { + KOKKOS_DEVICE_CMD= + PARSE_DEVICES_LST=$(echo $KOKKOS_DEVICES | tr "," "\n") + PARSE_DEVICES_LST=$(echo $PARSE_DEVICES_LST | tr "_" "\n") + for DEVICE_ in $PARSE_DEVICES_LST + do + UC_DEVICE=$(echo $DEVICE_ | tr "[:lower:]" "[:upper:]") + KOKKOS_DEVICE_CMD="-DKokkos_ENABLE_${UC_DEVICE}=ON ${KOKKOS_DEVICE_CMD}" + done +} + +get_kokkos_arch_list() { + KOKKOS_ARCH_CMD= + PARSE_ARCH_LST=$(echo $KOKKOS_ARCH | tr "," "\n") + for ARCH_ in $PARSE_ARCH_LST + do + UC_ARCH=$(echo $ARCH_ | tr "[:lower:]" "[:upper:]") + KOKKOS_ARCH_CMD="-DKokkos_ARCH_${UC_ARCH}=ON ${KOKKOS_ARCH_CMD}" + done +} + +get_kokkos_cuda_option_list() { + echo parsing KOKKOS_CUDA_OPTIONS=$KOKKOS_CUDA_OPTIONS + KOKKOS_CUDA_OPTION_CMD= + PARSE_CUDA_LST=$(echo $KOKKOS_CUDA_OPTIONS | tr "," "\n") + for CUDA_ in $PARSE_CUDA_LST + do + CUDA_OPT_NAME= + if [ "${CUDA_}" == "enable_lambda" ]; then + CUDA_OPT_NAME=CUDA_LAMBDA + elif [ "${CUDA_}" == "rdc" ]; then + CUDA_OPT_NAME=CUDA_RELOCATABLE_DEVICE_CODE + elif [ "${CUDA_}" == "force_uvm" ]; then + CUDA_OPT_NAME=CUDA_UVM + elif [ "${CUDA_}" == "use_ldg" ]; then + CUDA_OPT_NAME=CUDA_LDG_INTRINSIC + else + echo "${CUDA_} is not a valid cuda options..." + fi + if [ "${CUDA_OPT_NAME}" != "" ]; then + KOKKOS_CUDA_OPTION_CMD="-DKokkos_ENABLE_${CUDA_OPT_NAME}=ON ${KOKKOS_CUDA_OPTION_CMD}" + fi + done +} + +get_kokkos_option_list() { + echo parsing KOKKOS_OPTIONS=$KOKKOS_OPTIONS + KOKKOS_OPTION_CMD= + PARSE_OPTIONS_LST=$(echo $KOKKOS_OPTIONS | tr "," "\n") + for OPT_ in $PARSE_OPTIONS_LST + do + UC_OPT_=$(echo $OPT_ | tr "[:lower:]" "[:upper:]") + if [[ "$UC_OPT_" == *DISABLE* ]]; then + FLIP_OPT_=${UC_OPT_/DISABLE/ENABLE} + KOKKOS_OPTION_CMD="-DKokkos_${FLIP_OPT_}=OFF ${KOKKOS_OPTION_CMD}" + elif [[ "$UC_OPT_" == *ENABLE* ]]; then + KOKKOS_OPTION_CMD="-DKokkos_${UC_OPT_}=ON ${KOKKOS_OPTION_CMD}" + else + KOKKOS_OPTION_CMD="-DKokkos_ENABLE_${UC_OPT_}=ON ${KOKKOS_OPTION_CMD}" + fi + done +} + +display_help_text() { - case $key in - --kokkos-path*) - KOKKOS_PATH="${key#*=}" - ;; - --hpx-path*) - HPX_PATH="${key#*=}" - ;; - --prefix*) - PREFIX="${key#*=}" - ;; - --with-cuda) - KOKKOS_DEVICES="${KOKKOS_DEVICES},Cuda" - CUDA_PATH_NVCC=$(command -v nvcc) - CUDA_PATH=${CUDA_PATH_NVCC%/bin/nvcc} - ;; - # Catch this before '--with-cuda*' - --with-cuda-options*) - KOKKOS_CUDA_OPT="${key#*=}" - ;; - --with-cuda*) - KOKKOS_DEVICES="${KOKKOS_DEVICES},Cuda" - CUDA_PATH="${key#*=}" - ;; - --with-openmp) - KOKKOS_DEVICES="${KOKKOS_DEVICES},OpenMP" - ;; - --with-pthread) - KOKKOS_DEVICES="${KOKKOS_DEVICES},Pthread" - ;; - --with-serial) - KOKKOS_DEVICES="${KOKKOS_DEVICES},Serial" - ;; - --with-hpx-options*) - KOKKOS_HPX_OPT="${key#*=}" - ;; - --with-hpx*) - KOKKOS_DEVICES="${KOKKOS_DEVICES},HPX" - if [ -z "$HPX_PATH" ]; then - HPX_PATH="${key#*=}" - fi - ;; - --with-devices*) - DEVICES="${key#*=}" - KOKKOS_DEVICES="${KOKKOS_DEVICES},${DEVICES}" - ;; - --with-gtest*) - GTEST_PATH="${key#*=}" - ;; - --with-hwloc*) - HWLOC_PATH="${key#*=}" - ;; - --with-memkind*) - MEMKIND_PATH="${key#*=}" - ;; - --arch*) - KOKKOS_ARCH="${key#*=}" - ;; - --cxxflags*) - CXXFLAGS="${key#*=}" - ;; - --cxxstandard*) - KOKKOS_CXX_STANDARD="${key#*=}" - ;; - --ldflags*) - LDFLAGS="${key#*=}" - ;; - --debug|-dbg) - KOKKOS_DEBUG=yes - ;; - --make-j*) - echo "Warning: ${key} is deprecated" - echo "Call make with appropriate -j flag" - ;; - --compiler*) - COMPILER="${key#*=}" - CNUM=$(command -v ${COMPILER} 2>&1 >/dev/null | grep "no ${COMPILER}" | wc -l) - if [ ${CNUM} -gt 0 ]; then - echo "Invalid compiler by --compiler command: '${COMPILER}'" - exit - fi - if [[ ! -n ${COMPILER} ]]; then - echo "Empty compiler specified by --compiler command." - exit - fi - CNUM=$(command -v ${COMPILER} | grep ${COMPILER} | wc -l) - if [ ${CNUM} -eq 0 ]; then - echo "Invalid compiler by --compiler command: '${COMPILER}'" - exit - fi - # ... valid compiler, ensure absolute path set - WCOMPATH=$(command -v $COMPILER) - COMPDIR=$(dirname $WCOMPATH) - COMPNAME=$(basename $WCOMPATH) - COMPILER=${COMPDIR}/${COMPNAME} - ;; - --with-options*) - KOKKOS_OPT="${key#*=}" - ;; - --gcc-toolchain*) - KOKKOS_GCC_TOOLCHAIN="${key#*=}" - ;; - --help) echo "Kokkos configure options:" echo "" echo "--kokkos-path=/Path/To/Kokkos: Path to the Kokkos root directory." @@ -157,6 +129,7 @@ do echo "" echo "--compiler=/Path/To/Compiler Set the compiler." echo "--debug,-dbg: Enable Debugging." + echo "--disable-tests Disable compilation of unit tests (enabled by default)" echo "--cxxflags=[FLAGS] Overwrite CXXFLAGS for library build and test" echo " build. This will still set certain required" echo " flags via KOKKOS_CXXFLAGS (such as -fopenmp," @@ -177,12 +150,141 @@ do echo " disable_profiling = do not compile with profiling hooks" echo " " echo "--with-cuda-options=[OPT]: Additional options to CUDA:" - echo " force_uvm, use_ldg, enable_lambda, rdc, enable_constexpr" + echo " force_uvm, use_ldg, enable_lambda, rdc" echo "--with-hpx-options=[OPT]: Additional options to HPX:" echo " enable_async_dispatch" echo "--gcc-toolchain=/Path/To/GccRoot: Set the gcc toolchain to use with clang (e.g. /usr)" echo "--make-j=[NUM]: DEPRECATED: call make with appropriate" echo " -j flag" + +} + +KOKKOS_DO_TESTS=ON +KOKKOS_DO_EXAMPLES=OFF + +while [[ $# > 0 ]] +do + key="$1" + + case $key in + --kokkos-path*) + KOKKOS_PATH="${key#*=}" + ;; + --hpx-path*) + HPX_PATH="${key#*=}" + ;; + --prefix*) + PREFIX="${key#*=}" + ;; + --with-cuda) + update_kokkos_devices Cuda + CUDA_PATH_NVCC=$(command -v nvcc) + CUDA_PATH=${CUDA_PATH_NVCC%/bin/nvcc} + ;; + # Catch this before '--with-cuda*' + --with-cuda-options*) + KOKKOS_CUDA_OPTIONS="${key#*=}" + ;; + --with-cuda*) + update_kokkos_devices Cuda + CUDA_PATH="${key#*=}" + ;; + --with-openmp) + update_kokkos_devices OpenMP + ;; + --with-pthread) + update_kokkos_devices Pthread + ;; + --with-serial) + update_kokkos_devices Serial + ;; + --with-hpx-options*) + KOKKOS_HPX_OPT="${key#*=}" + ;; + --with-hpx*) + update_kokkos_devices HPX + if [ -z "$HPX_PATH" ]; then + HPX_PATH="${key#*=}" + fi + ;; + --with-devices*) + DEVICES="${key#*=}" + PARSE_DEVICES=$(echo $DEVICES | tr "," "\n") + for DEVICE_ in $PARSE_DEVICES + do + update_kokkos_devices $DEVICE_ + done + ;; + --with-gtest*) + GTEST_PATH="${key#*=}" + ;; + --with-hwloc*) + KOKKOS_HWLOC=ON + HWLOC_PATH="${key#*=}" + ;; + --with-memkind*) + KOKKOS_MEMKIND=ON + MEMKIND_PATH="${key#*=}" + ;; + --arch*) + KOKKOS_ARCH="${key#*=}" + ;; + --cxxflags*) + KOKKOS_CXXFLAGS="${key#*=}" + KOKKOS_CXXFLAGS=${KOKKOS_CXXFLAGS//,/ } + ;; + --cxxstandard*) + KOKKOS_CXX_STANDARD="${key#*=}" + ;; + --ldflags*) + KOKKOS_LDFLAGS="${key#*=}" + ;; + --debug|-dbg) + KOKKOS_DEBUG=ON + ;; + --make-j*) + echo "Warning: ${key} is deprecated" + echo "Call make with appropriate -j flag" + ;; + --disable-tests) + KOKKOS_DO_TESTS=OFF + ;; + --no-examples) + KOKKOS_DO_EXAMPLES=OFF + ;; + --enable-examples) + KOKKOS_DO_EXAMPLES=ON + ;; + --compiler*) + COMPILER="${key#*=}" + CNUM=$(command -v ${COMPILER} 2>&1 >/dev/null | grep "no ${COMPILER}" | wc -l) + if [ ${CNUM} -gt 0 ]; then + echo "Invalid compiler by --compiler command: '${COMPILER}'" + exit + fi + if [[ ! -n ${COMPILER} ]]; then + echo "Empty compiler specified by --compiler command." + exit + fi + CNUM=$(command -v ${COMPILER} | grep ${COMPILER} | wc -l) + if [ ${CNUM} -eq 0 ]; then + echo "Invalid compiler by --compiler command: '${COMPILER}'" + exit + fi + # ... valid compiler, ensure absolute path set + WCOMPATH=$(command -v $COMPILER) + COMPDIR=$(dirname $WCOMPATH) + COMPNAME=$(basename $WCOMPATH) + COMPILER=${COMPDIR}/${COMPNAME} + ;; + --with-options*) + KOKKOS_OPTIONS="${key#*=}" + ;; + --gcc-toolchain*) + KOKKOS_GCC_TOOLCHAIN="${key#*=}" + ;; + --help) + display_help_text exit 0 ;; *) @@ -193,265 +295,79 @@ do shift done -# Remove leading ',' from KOKKOS_DEVICES. -KOKKOS_DEVICES=$(echo $KOKKOS_DEVICES | sed 's/^,//') -# If KOKKOS_PATH undefined, assume parent dir of this script is the KOKKOS_PATH. -if [ -z "$KOKKOS_PATH" ]; then - KOKKOS_PATH=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +if [ "$COMPILER" == "" ]; then + COMPILER_CMD= else - # Ensure KOKKOS_PATH is abs path - KOKKOS_PATH=$( cd $KOKKOS_PATH && pwd ) + COMPILER_CMD=-DCMAKE_CXX_COMPILER=$COMPILER fi -if [ "${KOKKOS_PATH}" = "${PWD}" ] || [ "${KOKKOS_PATH}" = "${PWD}/" ]; then - echo "Running generate_makefile.bash in the Kokkos root directory is not allowed" - exit -fi - -KOKKOS_SRC_PATH=${KOKKOS_PATH} - -KOKKOS_SETTINGS="KOKKOS_SRC_PATH=${KOKKOS_SRC_PATH}" - -# The double [[ ]] in the elif branch is not a typo -if [ ${#COMPILER} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CXX=${COMPILER}" -elif - [ ${#COMPILER} -eq 0 ] && [[ ${KOKKOS_DEVICES} =~ .*Cuda.* ]]; then - COMPILER="${KOKKOS_PATH}/bin/nvcc_wrapper" - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CXX=${COMPILER}" -fi - -if [ ${#KOKKOS_DEVICES} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_DEVICES=${KOKKOS_DEVICES}" -fi - -if [ ${#KOKKOS_ARCH} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_ARCH=${KOKKOS_ARCH}" -fi - -if [ ${#KOKKOS_DEBUG} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_DEBUG=${KOKKOS_DEBUG}" -fi - -if [ ${#CUDA_PATH} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CUDA_PATH=${CUDA_PATH}" -fi - -if [ ${#CXXFLAGS} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CXXFLAGS=\"${CXXFLAGS}\"" -fi - -if [ ${#KOKKOS_CXX_STANDARD} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_CXX_STANDARD=\"${KOKKOS_CXX_STANDARD}\"" -fi - -if [ ${#LDFLAGS} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} LDFLAGS=\"${LDFLAGS}\"" -fi - -if [ ${#GTEST_PATH} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} GTEST_PATH=${GTEST_PATH}" +if [ "$KOKKOS_DEBUG" == "ON" ]; then + KOKKOS_DEBUG_CMD=-DCMAKE_BUILD_TYPE=DEBUG else - GTEST_PATH=${KOKKOS_PATH}/tpls/gtest - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} GTEST_PATH=${GTEST_PATH}" + KOKKOS_DEBUG_CMD=-DCMAKE_BUILD_TYPE=RELEASE fi -if [ ${#HWLOC_PATH} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} HWLOC_PATH=${HWLOC_PATH}" - KOKKOS_USE_TPLS="${KOKKOS_USE_TPLS},hwloc" +if [ "$KOKKOS_HWLOC" == "ON" ]; then + KOKKOS_HWLOC_CMD=-DKokkos_ENABLE_HWLOC=ON + if [ "$HWLOC_PATH" != "" ]; then + KOKKOS_HWLOC_PATH_CMD=-DHWLOC_ROOT=$HWLOC_PATH + fi +else + KOKKOS_HWLOC_CMD= fi -if [ ${#MEMKIND_PATH} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} MEMKIND_PATH=${MEMKIND_PATH}" - KOKKOS_USE_TPLS="${KOKKOS_USE_TPLS},experimental_memkind" +if [ "$KOKKOS_MEMKIND" == "ON" ]; then + KOKKOS_MEMKIND_CMD=-DKokkos_ENABLE_MEMKIND=ON + if [ "$MEMKIND_PATH" != "" ]; then + KOKKOS_MEMKIND_PATH_CMD=-DMEMKIND_ROOT=$MEMKIND_PATH + fi +else + KOKKOS_MEMKIND_CMD= fi -if [ ${#KOKKOS_USE_TPLS} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_USE_TPLS=${KOKKOS_USE_TPLS}" +if [ ! -e ${KOKKOS_PATH}/CMakeLists.txt ]; then + if [ "${KOKKOS_PATH}" == "" ]; then + CM_SCRIPT=$0 + KOKKOS_PATH=`dirname $CM_SCRIPT` + if [ ! -e ${KOKKOS_PATH}/CMakeLists.txt ]; then + echo "${KOKKOS_PATH} repository appears to not be complete. please verify and try again" + exit 0 + fi + else + echo "KOKKOS_PATH does not appear to be set properly. please specify in location of CMakeLists.txt" + display_help_text + exit 0 + fi fi -if [ ${#HPX_PATH} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} HPX_PATH=${HPX_PATH}" +get_kokkos_device_list +get_kokkos_option_list +get_kokkos_arch_list +get_kokkos_cuda_option_list + +## if HPX is enabled, we need to enforce cxx standard = 14 +if [[ ${KOKKOS_DEVICE_CMD} == *Kokkos_ENABLE_HPX* ]]; then + if [ "${KOKKOS_CXX_STANDARD}" == "" ] || [ ${#KOKKOS_CXX_STANDARD} -lt 14 ]; then + echo CXX Standard must be 14 or higher for HPX to work. + KOKKOS_CXX_STANDARD=14 + fi fi -if [ ${#KOKKOS_OPT} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_OPTIONS=${KOKKOS_OPT}" +if [ "$KOKKOS_CXX_STANDARD" == "" ]; then + STANDARD_CMD= +else + STANDARD_CMD=-DKokkos_CXX_STANDARD=${KOKKOS_CXX_STANDARD} fi -if [ ${#KOKKOS_CUDA_OPT} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_CUDA_OPTIONS=${KOKKOS_CUDA_OPT}" +if [[ ${COMPILER} == *clang* ]]; then + gcc_path=$(which g++ | awk --field-separator='/bin/g++' '{printf $1}' ) + KOKKOS_CXXFLAGS="${KOKKOS_CXXFLAGS} --gcc-toolchain=${gcc_path}" + + if [ ! "${CUDA_PATH}" == "" ]; then + KOKKOS_CXXFLAGS="${KOKKOS_CXXFLAGS} --cuda-path=${CUDA_PATH}" + fi fi - -if [ ${#KOKKOS_HPX_OPT} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_HPX_OPTIONS=${KOKKOS_HPX_OPT}" -fi - -if [ ${#KOKKOS_GCC_TOOLCHAIN} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_INTERNAL_GCC_TOOLCHAIN=${KOKKOS_GCC_TOOLCHAIN}" -fi - -KOKKOS_SETTINGS_NO_KOKKOS_PATH="${KOKKOS_SETTINGS}" - - -gen_makefile=Makefile.kokkos -mkdir -p core -mkdir -p core/unit_test -mkdir -p core/perf_test -mkdir -p containers -mkdir -p containers/unit_tests -mkdir -p containers/performance_tests -mkdir -p algorithms -mkdir -p algorithms/unit_tests -mkdir -p algorithms/performance_tests -mkdir -p example -mkdir -p example/fixture -mkdir -p example/feint -mkdir -p example/fenl -mkdir -p example/make_buildlink -mkdir -p example/tutorial - -KOKKOS_SETTINGS="${KOKKOS_SETTINGS_NO_KOKKOS_PATH} KOKKOS_PATH=${KOKKOS_PATH}" - -# Generate subdirectory makefiles. -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > core/unit_test/Makefile -echo "" >> core/unit_test/Makefile -echo "all:" >> core/unit_test/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/unit_test/Makefile ${KOKKOS_SETTINGS}" >> core/unit_test/Makefile -echo "" >> core/unit_test/Makefile -echo "test: all" >> core/unit_test/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/unit_test/Makefile ${KOKKOS_SETTINGS} test" >> core/unit_test/Makefile -echo "" >> core/unit_test/Makefile -echo "clean:" >> core/unit_test/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/unit_test/Makefile ${KOKKOS_SETTINGS} clean" >> core/unit_test/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > core/perf_test/Makefile -echo "" >> core/perf_test/Makefile -echo "all:" >> core/perf_test/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/perf_test/Makefile ${KOKKOS_SETTINGS}" >> core/perf_test/Makefile -echo "" >> core/perf_test/Makefile -echo "test: all" >> core/perf_test/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/perf_test/Makefile ${KOKKOS_SETTINGS} test" >> core/perf_test/Makefile -echo "" >> core/perf_test/Makefile -echo "clean:" >> core/perf_test/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/perf_test/Makefile ${KOKKOS_SETTINGS} clean" >> core/perf_test/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > containers/unit_tests/Makefile -echo "" >> containers/unit_tests/Makefile -echo "all:" >> containers/unit_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/unit_tests/Makefile ${KOKKOS_SETTINGS}" >> containers/unit_tests/Makefile -echo "" >> containers/unit_tests/Makefile -echo "test: all" >> containers/unit_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/unit_tests/Makefile ${KOKKOS_SETTINGS} test" >> containers/unit_tests/Makefile -echo "" >> containers/unit_tests/Makefile -echo "clean:" >> containers/unit_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/unit_tests/Makefile ${KOKKOS_SETTINGS} clean" >> containers/unit_tests/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > containers/performance_tests/Makefile -echo "" >> containers/performance_tests/Makefile -echo "all:" >> containers/performance_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/performance_tests/Makefile ${KOKKOS_SETTINGS}" >> containers/performance_tests/Makefile -echo "" >> containers/performance_tests/Makefile -echo "test: all" >> containers/performance_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/performance_tests/Makefile ${KOKKOS_SETTINGS} test" >> containers/performance_tests/Makefile -echo "" >> containers/performance_tests/Makefile -echo "clean:" >> containers/performance_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/performance_tests/Makefile ${KOKKOS_SETTINGS} clean" >> containers/performance_tests/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > algorithms/unit_tests/Makefile -echo "" >> algorithms/unit_tests/Makefile -echo "all:" >> algorithms/unit_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/algorithms/unit_tests/Makefile ${KOKKOS_SETTINGS}" >> algorithms/unit_tests/Makefile -echo "" >> algorithms/unit_tests/Makefile -echo "test: all" >> algorithms/unit_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/algorithms/unit_tests/Makefile ${KOKKOS_SETTINGS} test" >> algorithms/unit_tests/Makefile -echo "" >> algorithms/unit_tests/Makefile -echo "clean:" >> algorithms/unit_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/algorithms/unit_tests/Makefile ${KOKKOS_SETTINGS} clean" >> algorithms/unit_tests/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/fixture/Makefile -echo "" >> example/fixture/Makefile -echo "all:" >> example/fixture/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fixture/Makefile ${KOKKOS_SETTINGS}" >> example/fixture/Makefile -echo "" >> example/fixture/Makefile -echo "test: all" >> example/fixture/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fixture/Makefile ${KOKKOS_SETTINGS} test" >> example/fixture/Makefile -echo "" >> example/fixture/Makefile -echo "clean:" >> example/fixture/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fixture/Makefile ${KOKKOS_SETTINGS} clean" >> example/fixture/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/feint/Makefile -echo "" >> example/feint/Makefile -echo "all:" >> example/feint/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/feint/Makefile ${KOKKOS_SETTINGS}" >> example/feint/Makefile -echo "" >> example/feint/Makefile -echo "test: all" >> example/feint/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/feint/Makefile ${KOKKOS_SETTINGS} test" >> example/feint/Makefile -echo "" >> example/feint/Makefile -echo "clean:" >> example/feint/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/feint/Makefile ${KOKKOS_SETTINGS} clean" >> example/feint/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/fenl/Makefile -echo "" >> example/fenl/Makefile -echo "all:" >> example/fenl/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fenl/Makefile ${KOKKOS_SETTINGS}" >> example/fenl/Makefile -echo "" >> example/fenl/Makefile -echo "test: all" >> example/fenl/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fenl/Makefile ${KOKKOS_SETTINGS} test" >> example/fenl/Makefile -echo "" >> example/fenl/Makefile -echo "clean:" >> example/fenl/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fenl/Makefile ${KOKKOS_SETTINGS} clean" >> example/fenl/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/make_buildlink/Makefile -echo "" >> example/make_buildlink/Makefile -echo "build:" >> example/make_buildlink/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/make_buildlink/Makefile ${KOKKOS_SETTINGS} build" >> example/make_buildlink/Makefile -echo "" >> example/make_buildlink/Makefile -echo "test: build" >> example/make_buildlink/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/make_buildlink/Makefile ${KOKKOS_SETTINGS} test" >> example/make_buildlink/Makefile -echo "" >> example/make_buildlink/Makefile -echo "clean:" >> example/make_buildlink/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/make_buildlink/Makefile ${KOKKOS_SETTINGS} clean" >> example/make_buildlink/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/tutorial/Makefile -echo "" >> example/tutorial/Makefile -echo "build:" >> example/tutorial/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/tutorial/Makefile KOKKOS_SETTINGS='${KOKKOS_SETTINGS}' KOKKOS_PATH=${KOKKOS_PATH} build">> example/tutorial/Makefile -echo "" >> example/tutorial/Makefile -echo "test: build" >> example/tutorial/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/tutorial/Makefile KOKKOS_SETTINGS='${KOKKOS_SETTINGS}' KOKKOS_PATH=${KOKKOS_PATH} test" >> example/tutorial/Makefile -echo "" >> example/tutorial/Makefile -echo "clean:" >> example/tutorial/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/tutorial/Makefile KOKKOS_SETTINGS='${KOKKOS_SETTINGS}' KOKKOS_PATH=${KOKKOS_PATH} clean" >> example/tutorial/Makefile - -# Generate top level directory makefile. -echo "Generating Makefiles with options " ${KOKKOS_SETTINGS} -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > Makefile -echo "" >> Makefile -echo "build-test:" >> Makefile -echo -e "\t\$(MAKE) -C core/unit_test" >> Makefile -echo -e "\t\$(MAKE) -C core/perf_test" >> Makefile -echo -e "\t\$(MAKE) -C containers/unit_tests" >> Makefile -echo -e "\t\$(MAKE) -C containers/performance_tests" >> Makefile -echo -e "\t\$(MAKE) -C algorithms/unit_tests" >> Makefile -echo "" >> Makefile -echo "test: build-test" >> Makefile -echo -e "\t\$(MAKE) -C core/unit_test test" >> Makefile -echo -e "\t\$(MAKE) -C core/perf_test test" >> Makefile -echo -e "\t\$(MAKE) -C containers/unit_tests test" >> Makefile -echo -e "\t\$(MAKE) -C containers/performance_tests test" >> Makefile -echo -e "\t\$(MAKE) -C algorithms/unit_tests test" >> Makefile -echo "" >> Makefile -echo "unit-tests-only:" >> Makefile -echo -e "\t\$(MAKE) -C core/unit_test test" >> Makefile -echo -e "\t\$(MAKE) -C containers/unit_tests test" >> Makefile -echo -e "\t\$(MAKE) -C algorithms/unit_tests test" >> Makefile -echo "" >> Makefile - -echo "clean:" >> Makefile -echo -e "\t\$(MAKE) -C core/unit_test clean" >> Makefile -echo -e "\t\$(MAKE) -C core/perf_test clean" >> Makefile -echo -e "\t\$(MAKE) -C containers/unit_tests clean" >> Makefile -echo -e "\t\$(MAKE) -C containers/performance_tests clean" >> Makefile -echo -e "\t\$(MAKE) -C algorithms/unit_tests clean" >> Makefile - + +echo cmake $COMPILER_CMD -DCMAKE_CXX_FLAGS="${KOKKOS_CXXFLAGS}" -DCMAKE_EXE_LINKER_FLAGS="${KOKKOS_LDFLAGS}" -DCMAKE_INSTALL_PREFIX=${PREFIX} ${KOKKOS_DEVICE_CMD} ${KOKKOS_ARCH_CMD} -DKokkos_ENABLE_TESTS=${KOKKOS_DO_TESTS} -DKokkos_ENABLE_EXAMPLES=${KOKKOS_DO_EXAMPLES} ${KOKKOS_OPTION_CMD} ${KOKKOS_CUDA_OPTION_CMD} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_CXX_EXTENSIONS=OFF ${STANDARD_CMD} ${KOKKOS_DEBUG_CMD} ${KOKKOS_HWLOC_CMD} ${KOKKOS_HWLOC_PATH_CMD} ${KOKKOS_MEMKIND_CMD} ${KOKKOS_MEMKIND_PATH_CMD} ${KOKKOS_PATH} +cmake $COMPILER_CMD -DCMAKE_CXX_FLAGS="${KOKKOS_CXXFLAGS//\"}" -DCMAKE_EXE_LINKER_FLAGS="${KOKKOS_LDFLAGS//\"}" -DCMAKE_INSTALL_PREFIX=${PREFIX} ${KOKKOS_DEVICE_CMD} ${KOKKOS_ARCH_CMD} -DKokkos_ENABLE_TESTS=${KOKKOS_DO_TESTS} -DKokkos_ENABLE_EXAMPLES=${KOKKOS_DO_EXAMPLES} ${KOKKOS_OPTION_CMD} ${KOKKOS_CUDA_OPTION_CMD} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_CXX_EXTENSIONS=OFF ${STANDARD_CMD} ${KOKKOS_DEBUG_CMD} ${KOKKOS_HWLOC_CMD} ${KOKKOS_HWLOC_PATH_CMD} ${KOKKOS_MEMKIND_CMD} ${KOKKOS_MEMKIND_PATH_CMD} ${KOKKOS_PATH} diff --git a/lib/kokkos/gnu_generate_makefile.bash b/lib/kokkos/gnu_generate_makefile.bash new file mode 100755 index 0000000000..42b26bf4a4 --- /dev/null +++ b/lib/kokkos/gnu_generate_makefile.bash @@ -0,0 +1,484 @@ +#!/bin/bash + +KOKKOS_DEVICES="" + +KOKKOS_DO_EXAMPLES="1" + +while [[ $# > 0 ]] +do + key="$1" + + case $key in + --kokkos-path*) + KOKKOS_PATH="${key#*=}" + ;; + --hpx-path*) + HPX_PATH="${key#*=}" + ;; + --prefix*) + PREFIX="${key#*=}" + ;; + --with-cuda) + KOKKOS_DEVICES="${KOKKOS_DEVICES},Cuda" + CUDA_PATH_NVCC=$(command -v nvcc) + CUDA_PATH=${CUDA_PATH_NVCC%/bin/nvcc} + ;; + # Catch this before '--with-cuda*' + --with-cuda-options*) + KOKKOS_CUDA_OPT="${key#*=}" + ;; + --with-cuda*) + KOKKOS_DEVICES="${KOKKOS_DEVICES},Cuda" + CUDA_PATH="${key#*=}" + ;; + --with-openmp) + KOKKOS_DEVICES="${KOKKOS_DEVICES},OpenMP" + ;; + --with-pthread) + KOKKOS_DEVICES="${KOKKOS_DEVICES},Pthread" + ;; + --with-serial) + KOKKOS_DEVICES="${KOKKOS_DEVICES},Serial" + ;; + --with-hpx-options*) + KOKKOS_HPX_OPT="${key#*=}" + ;; + --with-hpx*) + KOKKOS_DEVICES="${KOKKOS_DEVICES},HPX" + if [ -z "$HPX_PATH" ]; then + HPX_PATH="${key#*=}" + fi + ;; + --with-devices*) + DEVICES="${key#*=}" + KOKKOS_DEVICES="${KOKKOS_DEVICES},${DEVICES}" + ;; + --with-gtest*) + GTEST_PATH="${key#*=}" + ;; + --with-hwloc*) + HWLOC_PATH="${key#*=}" + ;; + --with-memkind*) + MEMKIND_PATH="${key#*=}" + ;; + --arch*) + KOKKOS_ARCH="${key#*=}" + ;; + --cxxflags*) + CXXFLAGS="${key#*=}" + ;; + --cxxstandard*) + KOKKOS_CXX_STANDARD="${key#*=}" + ;; + --ldflags*) + LDFLAGS="${key#*=}" + ;; + --debug|-dbg) + KOKKOS_DEBUG=yes + ;; + --make-j*) + echo "Warning: ${key} is deprecated" + echo "Call make with appropriate -j flag" + ;; + --no-examples) + KOKKOS_DO_EXAMPLES="0" + ;; + --compiler*) + COMPILER="${key#*=}" + CNUM=$(command -v ${COMPILER} 2>&1 >/dev/null | grep "no ${COMPILER}" | wc -l) + if [ ${CNUM} -gt 0 ]; then + echo "Invalid compiler by --compiler command: '${COMPILER}'" + exit + fi + if [[ ! -n ${COMPILER} ]]; then + echo "Empty compiler specified by --compiler command." + exit + fi + CNUM=$(command -v ${COMPILER} | grep ${COMPILER} | wc -l) + if [ ${CNUM} -eq 0 ]; then + echo "Invalid compiler by --compiler command: '${COMPILER}'" + exit + fi + # ... valid compiler, ensure absolute path set + WCOMPATH=$(command -v $COMPILER) + COMPDIR=$(dirname $WCOMPATH) + COMPNAME=$(basename $WCOMPATH) + COMPILER=${COMPDIR}/${COMPNAME} + ;; + --with-options*) + KOKKOS_OPT="${key#*=}" + ;; + --gcc-toolchain*) + KOKKOS_GCC_TOOLCHAIN="${key#*=}" + ;; + --help) + echo "Kokkos configure options:" + echo "" + echo "--kokkos-path=/Path/To/Kokkos: Path to the Kokkos root directory." + echo "--prefix=/Install/Path: Path to install the Kokkos library." + echo "" + echo "--with-cuda[=/Path/To/Cuda]: Enable Cuda and set path to Cuda Toolkit." + echo "--with-openmp: Enable OpenMP backend." + echo "--with-pthread: Enable Pthreads backend." + echo "--with-serial: Enable Serial backend." + echo "--with-devices: Explicitly add a set of backends." + echo "" + echo "--arch=[OPT]: Set target architectures. Options are:" + echo " [AMD]" + echo " AMDAVX = AMD CPU" + echo " EPYC = AMD EPYC Zen-Core CPU" + echo " [ARM]" + echo " ARMv80 = ARMv8.0 Compatible CPU" + echo " ARMv81 = ARMv8.1 Compatible CPU" + echo " ARMv8-ThunderX = ARMv8 Cavium ThunderX CPU" + echo " ARMv8-TX2 = ARMv8 Cavium ThunderX2 CPU" + echo " [IBM]" + echo " BGQ = IBM Blue Gene Q" + echo " Power7 = IBM POWER7 and POWER7+ CPUs" + echo " Power8 = IBM POWER8 CPUs" + echo " Power9 = IBM POWER9 CPUs" + echo " [Intel]" + echo " WSM = Intel Westmere CPUs" + echo " SNB = Intel Sandy/Ivy Bridge CPUs" + echo " HSW = Intel Haswell CPUs" + echo " BDW = Intel Broadwell Xeon E-class CPUs" + echo " SKX = Intel Sky Lake Xeon E-class HPC CPUs (AVX512)" + echo " [Intel Xeon Phi]" + echo " KNC = Intel Knights Corner Xeon Phi" + echo " KNL = Intel Knights Landing Xeon Phi" + echo " [NVIDIA]" + echo " Kepler30 = NVIDIA Kepler generation CC 3.0" + echo " Kepler32 = NVIDIA Kepler generation CC 3.2" + echo " Kepler35 = NVIDIA Kepler generation CC 3.5" + echo " Kepler37 = NVIDIA Kepler generation CC 3.7" + echo " Maxwell50 = NVIDIA Maxwell generation CC 5.0" + echo " Maxwell52 = NVIDIA Maxwell generation CC 5.2" + echo " Maxwell53 = NVIDIA Maxwell generation CC 5.3" + echo " Pascal60 = NVIDIA Pascal generation CC 6.0" + echo " Pascal61 = NVIDIA Pascal generation CC 6.1" + echo " Volta70 = NVIDIA Volta generation CC 7.0" + echo " Volta72 = NVIDIA Volta generation CC 7.2" + echo "" + echo "--compiler=/Path/To/Compiler Set the compiler." + echo "--debug,-dbg: Enable Debugging." + echo "--cxxflags=[FLAGS] Overwrite CXXFLAGS for library build and test" + echo " build. This will still set certain required" + echo " flags via KOKKOS_CXXFLAGS (such as -fopenmp," + echo " --std=c++11, etc.)." + echo "--cxxstandard=[FLAGS] Overwrite KOKKOS_CXX_STANDARD for library build and test" + echo " c++11 (default), c++14, c++17, c++1y, c++1z, c++2a" + echo "--ldflags=[FLAGS] Overwrite LDFLAGS for library build and test" + echo " build. This will still set certain required" + echo " flags via KOKKOS_LDFLAGS (such as -fopenmp," + echo " -lpthread, etc.)." + echo "--with-gtest=/Path/To/Gtest: Set path to gtest. (Used in unit and performance" + echo " tests.)" + echo "--with-hwloc=/Path/To/Hwloc: Set path to hwloc library." + echo "--with-memkind=/Path/To/MemKind: Set path to memkind library." + echo "--with-options=[OPT]: Additional options to Kokkos:" + echo " compiler_warnings" + echo " aggressive_vectorization = add ivdep on loops" + echo " disable_profiling = do not compile with profiling hooks" + echo " " + echo "--with-cuda-options=[OPT]: Additional options to CUDA:" + echo " force_uvm, use_ldg, enable_lambda, rdc, enable_constexpr" + echo "--with-hpx-options=[OPT]: Additional options to HPX:" + echo " enable_async_dispatch" + echo "--gcc-toolchain=/Path/To/GccRoot: Set the gcc toolchain to use with clang (e.g. /usr)" + echo "--make-j=[NUM]: DEPRECATED: call make with appropriate" + echo " -j flag" + exit 0 + ;; + *) + echo "warning: ignoring unknown option $key" + ;; + esac + + shift +done + +# Remove leading ',' from KOKKOS_DEVICES. +KOKKOS_DEVICES=$(echo $KOKKOS_DEVICES | sed 's/^,//') + +# If KOKKOS_PATH undefined, assume parent dir of this script is the KOKKOS_PATH. +if [ -z "$KOKKOS_PATH" ]; then + KOKKOS_PATH=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +else + # Ensure KOKKOS_PATH is abs path + KOKKOS_PATH=$( cd $KOKKOS_PATH && pwd ) +fi + +if [ "${KOKKOS_PATH}" = "${PWD}" ] || [ "${KOKKOS_PATH}" = "${PWD}/" ]; then + echo "Running generate_makefile.bash in the Kokkos root directory is not allowed" + exit +fi + +KOKKOS_SRC_PATH=${KOKKOS_PATH} + +KOKKOS_SETTINGS="KOKKOS_SRC_PATH=${KOKKOS_SRC_PATH}" + +# The double [[ ]] in the elif branch is not a typo +if [ ${#COMPILER} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CXX=${COMPILER}" +elif + [ ${#COMPILER} -eq 0 ] && [[ ${KOKKOS_DEVICES} =~ .*Cuda.* ]]; then + COMPILER="${KOKKOS_PATH}/bin/nvcc_wrapper" + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CXX=${COMPILER}" +fi + +if [ ${#KOKKOS_DEVICES} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_DEVICES=${KOKKOS_DEVICES}" +fi + +if [ ${#KOKKOS_ARCH} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_ARCH=${KOKKOS_ARCH}" +fi + +if [ ${#KOKKOS_DEBUG} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_DEBUG=${KOKKOS_DEBUG}" +fi + +if [ ${#CUDA_PATH} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CUDA_PATH=${CUDA_PATH}" +fi + +if [ ${#CXXFLAGS} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CXXFLAGS=\"${CXXFLAGS}\"" +fi + +if [ ${#KOKKOS_CXX_STANDARD} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_CXX_STANDARD=\"${KOKKOS_CXX_STANDARD}\"" +fi + +if [ ${#LDFLAGS} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} LDFLAGS=\"${LDFLAGS}\"" +fi + +if [ ${#GTEST_PATH} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} GTEST_PATH=${GTEST_PATH}" +else + GTEST_PATH=${KOKKOS_PATH}/tpls/gtest + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} GTEST_PATH=${GTEST_PATH}" +fi + +if [ ${#HWLOC_PATH} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} HWLOC_PATH=${HWLOC_PATH}" + KOKKOS_USE_TPLS="${KOKKOS_USE_TPLS},hwloc" +fi + +if [ ${#MEMKIND_PATH} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} MEMKIND_PATH=${MEMKIND_PATH}" + KOKKOS_USE_TPLS="${KOKKOS_USE_TPLS},experimental_memkind" +fi + +if [ ${#KOKKOS_USE_TPLS} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_USE_TPLS=${KOKKOS_USE_TPLS}" +fi + +if [ ${#HPX_PATH} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} HPX_PATH=${HPX_PATH}" +fi + +if [ ${#KOKKOS_OPT} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_OPTIONS=${KOKKOS_OPT}" +fi + +if [ ${#KOKKOS_CUDA_OPT} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_CUDA_OPTIONS=${KOKKOS_CUDA_OPT}" +fi + +if [ ${#KOKKOS_HPX_OPT} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_HPX_OPTIONS=${KOKKOS_HPX_OPT}" +fi + +if [ ${#KOKKOS_GCC_TOOLCHAIN} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_INTERNAL_GCC_TOOLCHAIN=${KOKKOS_GCC_TOOLCHAIN}" +fi + +KOKKOS_SETTINGS_NO_KOKKOS_PATH="${KOKKOS_SETTINGS}" + + +gen_makefile=Makefile.kokkos +mkdir -p core +mkdir -p core/unit_test +mkdir -p core/perf_test +mkdir -p containers +mkdir -p containers/unit_tests +mkdir -p containers/performance_tests +mkdir -p algorithms +mkdir -p algorithms/unit_tests +mkdir -p algorithms/performance_tests +mkdir -p example +mkdir -p example/fixture +mkdir -p example/feint +mkdir -p example/fenl +mkdir -p example/make_buildlink +mkdir -p example/tutorial + +KOKKOS_SETTINGS="${KOKKOS_SETTINGS_NO_KOKKOS_PATH} KOKKOS_PATH=${KOKKOS_PATH}" + +# Generate subdirectory makefiles. +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > core/unit_test/Makefile +echo "" >> core/unit_test/Makefile +echo "all:" >> core/unit_test/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/unit_test/Makefile ${KOKKOS_SETTINGS}" >> core/unit_test/Makefile +echo "" >> core/unit_test/Makefile +echo "test: all" >> core/unit_test/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/unit_test/Makefile ${KOKKOS_SETTINGS} test" >> core/unit_test/Makefile +echo "" >> core/unit_test/Makefile +echo "clean:" >> core/unit_test/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/unit_test/Makefile ${KOKKOS_SETTINGS} clean" >> core/unit_test/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > core/perf_test/Makefile +echo "" >> core/perf_test/Makefile +echo "all:" >> core/perf_test/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/perf_test/Makefile ${KOKKOS_SETTINGS}" >> core/perf_test/Makefile +echo "" >> core/perf_test/Makefile +echo "test: all" >> core/perf_test/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/perf_test/Makefile ${KOKKOS_SETTINGS} test" >> core/perf_test/Makefile +echo "" >> core/perf_test/Makefile +echo "clean:" >> core/perf_test/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/perf_test/Makefile ${KOKKOS_SETTINGS} clean" >> core/perf_test/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > containers/unit_tests/Makefile +echo "" >> containers/unit_tests/Makefile +echo "all:" >> containers/unit_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/unit_tests/Makefile ${KOKKOS_SETTINGS}" >> containers/unit_tests/Makefile +echo "" >> containers/unit_tests/Makefile +echo "test: all" >> containers/unit_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/unit_tests/Makefile ${KOKKOS_SETTINGS} test" >> containers/unit_tests/Makefile +echo "" >> containers/unit_tests/Makefile +echo "clean:" >> containers/unit_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/unit_tests/Makefile ${KOKKOS_SETTINGS} clean" >> containers/unit_tests/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > containers/performance_tests/Makefile +echo "" >> containers/performance_tests/Makefile +echo "all:" >> containers/performance_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/performance_tests/Makefile ${KOKKOS_SETTINGS}" >> containers/performance_tests/Makefile +echo "" >> containers/performance_tests/Makefile +echo "test: all" >> containers/performance_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/performance_tests/Makefile ${KOKKOS_SETTINGS} test" >> containers/performance_tests/Makefile +echo "" >> containers/performance_tests/Makefile +echo "clean:" >> containers/performance_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/performance_tests/Makefile ${KOKKOS_SETTINGS} clean" >> containers/performance_tests/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > algorithms/unit_tests/Makefile +echo "" >> algorithms/unit_tests/Makefile +echo "all:" >> algorithms/unit_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/algorithms/unit_tests/Makefile ${KOKKOS_SETTINGS}" >> algorithms/unit_tests/Makefile +echo "" >> algorithms/unit_tests/Makefile +echo "test: all" >> algorithms/unit_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/algorithms/unit_tests/Makefile ${KOKKOS_SETTINGS} test" >> algorithms/unit_tests/Makefile +echo "" >> algorithms/unit_tests/Makefile +echo "clean:" >> algorithms/unit_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/algorithms/unit_tests/Makefile ${KOKKOS_SETTINGS} clean" >> algorithms/unit_tests/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/fixture/Makefile +echo "" >> example/fixture/Makefile +echo "all:" >> example/fixture/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fixture/Makefile ${KOKKOS_SETTINGS}" >> example/fixture/Makefile +echo "" >> example/fixture/Makefile +echo "test: all" >> example/fixture/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fixture/Makefile ${KOKKOS_SETTINGS} test" >> example/fixture/Makefile +echo "" >> example/fixture/Makefile +echo "clean:" >> example/fixture/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fixture/Makefile ${KOKKOS_SETTINGS} clean" >> example/fixture/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/feint/Makefile +echo "" >> example/feint/Makefile +echo "all:" >> example/feint/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/feint/Makefile ${KOKKOS_SETTINGS}" >> example/feint/Makefile +echo "" >> example/feint/Makefile +echo "test: all" >> example/feint/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/feint/Makefile ${KOKKOS_SETTINGS} test" >> example/feint/Makefile +echo "" >> example/feint/Makefile +echo "clean:" >> example/feint/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/feint/Makefile ${KOKKOS_SETTINGS} clean" >> example/feint/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/fenl/Makefile +echo "" >> example/fenl/Makefile +echo "all:" >> example/fenl/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fenl/Makefile ${KOKKOS_SETTINGS}" >> example/fenl/Makefile +echo "" >> example/fenl/Makefile +echo "test: all" >> example/fenl/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fenl/Makefile ${KOKKOS_SETTINGS} test" >> example/fenl/Makefile +echo "" >> example/fenl/Makefile +echo "clean:" >> example/fenl/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fenl/Makefile ${KOKKOS_SETTINGS} clean" >> example/fenl/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/make_buildlink/Makefile +echo "" >> example/make_buildlink/Makefile +echo "build:" >> example/make_buildlink/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/make_buildlink/Makefile ${KOKKOS_SETTINGS} build" >> example/make_buildlink/Makefile +echo "" >> example/make_buildlink/Makefile +echo "test: build" >> example/make_buildlink/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/make_buildlink/Makefile ${KOKKOS_SETTINGS} test" >> example/make_buildlink/Makefile +echo "" >> example/make_buildlink/Makefile +echo "clean:" >> example/make_buildlink/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/make_buildlink/Makefile ${KOKKOS_SETTINGS} clean" >> example/make_buildlink/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/tutorial/Makefile +echo "" >> example/tutorial/Makefile +echo "build:" >> example/tutorial/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/tutorial/Makefile KOKKOS_SETTINGS='${KOKKOS_SETTINGS}' KOKKOS_PATH=${KOKKOS_PATH} build">> example/tutorial/Makefile +echo "" >> example/tutorial/Makefile +echo "test: build" >> example/tutorial/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/tutorial/Makefile KOKKOS_SETTINGS='${KOKKOS_SETTINGS}' KOKKOS_PATH=${KOKKOS_PATH} test" >> example/tutorial/Makefile +echo "" >> example/tutorial/Makefile +echo "clean:" >> example/tutorial/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/tutorial/Makefile KOKKOS_SETTINGS='${KOKKOS_SETTINGS}' KOKKOS_PATH=${KOKKOS_PATH} clean" >> example/tutorial/Makefile + +# Generate top level directory makefile. +echo "Generating Makefiles with options " ${KOKKOS_SETTINGS} +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > Makefile +echo "" >> Makefile +echo "build-test:" >> Makefile +echo -e "\t\$(MAKE) -C core/unit_test" >> Makefile +echo -e "\t\$(MAKE) -C core/perf_test" >> Makefile +echo -e "\t\$(MAKE) -C containers/unit_tests" >> Makefile +echo -e "\t\$(MAKE) -C containers/performance_tests" >> Makefile +echo -e "\t\$(MAKE) -C algorithms/unit_tests" >> Makefile +if [ ${KOKKOS_DO_EXAMPLES} -gt 0 ]; then +$() +echo -e "\t\$(MAKE) -C example/fixture" >> Makefile +echo -e "\t\$(MAKE) -C example/feint" >> Makefile +echo -e "\t\$(MAKE) -C example/fenl" >> Makefile +echo -e "\t\$(MAKE) -C example/make_buildlink build" >> Makefile +echo -e "\t\$(MAKE) -C example/tutorial build" >> Makefile +fi +echo "" >> Makefile +echo "test: build-test" >> Makefile +echo -e "\t\$(MAKE) -C core/unit_test test" >> Makefile +echo -e "\t\$(MAKE) -C core/perf_test test" >> Makefile +echo -e "\t\$(MAKE) -C containers/unit_tests test" >> Makefile +echo -e "\t\$(MAKE) -C containers/performance_tests test" >> Makefile +echo -e "\t\$(MAKE) -C algorithms/unit_tests test" >> Makefile +if [ ${KOKKOS_DO_EXAMPLES} -gt 0 ]; then +echo -e "\t\$(MAKE) -C example/fixture test" >> Makefile +echo -e "\t\$(MAKE) -C example/feint test" >> Makefile +echo -e "\t\$(MAKE) -C example/fenl test" >> Makefile +echo -e "\t\$(MAKE) -C example/make_buildlink test" >> Makefile +echo -e "\t\$(MAKE) -C example/tutorial test" >> Makefile +fi +echo "" >> Makefile +echo "unit-tests-only:" >> Makefile +echo -e "\t\$(MAKE) -C core/unit_test test" >> Makefile +echo -e "\t\$(MAKE) -C containers/unit_tests test" >> Makefile +echo -e "\t\$(MAKE) -C algorithms/unit_tests test" >> Makefile +echo "" >> Makefile + +echo "clean:" >> Makefile +echo -e "\t\$(MAKE) -C core/unit_test clean" >> Makefile +echo -e "\t\$(MAKE) -C core/perf_test clean" >> Makefile +echo -e "\t\$(MAKE) -C containers/unit_tests clean" >> Makefile +echo -e "\t\$(MAKE) -C containers/performance_tests clean" >> Makefile +echo -e "\t\$(MAKE) -C algorithms/unit_tests clean" >> Makefile +if [ ${KOKKOS_DO_EXAMPLES} -gt 0 ]; then +echo -e "\t\$(MAKE) -C example/fixture clean" >> Makefile +echo -e "\t\$(MAKE) -C example/feint clean" >> Makefile +echo -e "\t\$(MAKE) -C example/fenl clean" >> Makefile +echo -e "\t\$(MAKE) -C example/make_buildlink clean" >> Makefile +echo -e "\t\$(MAKE) -C example/tutorial clean" >> Makefile +fi + diff --git a/lib/kokkos/master_history.txt b/lib/kokkos/master_history.txt index ee5238be8c..f6eb95292c 100644 --- a/lib/kokkos/master_history.txt +++ b/lib/kokkos/master_history.txt @@ -18,3 +18,4 @@ tag: 2.7.24 date: 11:04:2018 master: d3a94192 develop: 7a06fc81 tag: 2.8.00 date: 02:05:2019 master: 34931a36 develop: d1659d1d tag: 2.9.00 date: 06:24:2019 master: 5d6e7fb3 develop: 4c6cb80a tag: 3.0.00 date: 01:31:2020 master: 2983b80d release-candidate-3.0: fdc904a6 +tag: 3.1.00 date: 04:14:2020 master: cd1b1d0a develop: fd90af43 From f8f69996eb81a6e0e63e629091fd6254e83a9634 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 16 Apr 2020 11:49:03 -0600 Subject: [PATCH 10/85] Remove obsolete note --- doc/src/Speed_kokkos.rst | 6 ------ 1 file changed, 6 deletions(-) diff --git a/doc/src/Speed_kokkos.rst b/doc/src/Speed_kokkos.rst index ab8444b845..1e88a2fc69 100644 --- a/doc/src/Speed_kokkos.rst +++ b/doc/src/Speed_kokkos.rst @@ -29,12 +29,6 @@ task). These are Serial (MPI-only for CPUs and Intel Phi), OpenMP GPUs). You choose the mode at build time to produce an executable compatible with specific hardware. -.. note:: - - Kokkos support within LAMMPS must be built with a C++11 compatible - compiler. This means GCC version 4.7.2 or later, Intel 14.0.4 or later, or - Clang 3.5.2 or later is required. - .. note:: To build with Kokkos support for NVIDIA GPUs, NVIDIA CUDA From 348118317c111b5541255e21f334392a82b5c77d Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 16 Apr 2020 12:36:43 -0600 Subject: [PATCH 11/85] Update Kokkos docs --- doc/src/Speed_kokkos.rst | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/doc/src/Speed_kokkos.rst b/doc/src/Speed_kokkos.rst index 1e88a2fc69..56490e8e84 100644 --- a/doc/src/Speed_kokkos.rst +++ b/doc/src/Speed_kokkos.rst @@ -9,10 +9,7 @@ different back end languages such as CUDA, OpenMP, or Pthreads. The Kokkos library also provides data abstractions to adjust (at compile time) the memory layout of data structures like 2d and 3d arrays to optimize performance on different hardware. For more information on -Kokkos, see `GitHub `_. Kokkos is -part of `Trilinos `_. The Kokkos -library was written primarily by Carter Edwards, Christian Trott, and -Dan Sunderland (all Sandia). +Kokkos, see `GitHub `_. The LAMMPS KOKKOS package contains versions of pair, fix, and atom styles that use data structures and macros provided by the Kokkos @@ -21,7 +18,7 @@ package was developed primarily by Christian Trott (Sandia) and Stan Moore (Sandia) with contributions of various styles by others, including Sikandar Mashayak (UIUC), Ray Shan (Sandia), and Dan Ibanez (Sandia). For more information on developing using Kokkos abstractions -see the Kokkos programmers' guide at /lib/kokkos/doc/Kokkos_PG.pdf. +see the Kokkos `Wiki `_. Kokkos currently provides support for 3 modes of execution (per MPI task). These are Serial (MPI-only for CPUs and Intel Phi), OpenMP @@ -251,7 +248,7 @@ one or more nodes, each with two GPUs: running on GPUs is to use "full" neighbor lists and set the Newton flag to "off" for both pairwise and bonded interactions, along with threaded communication. When running on Maxwell or Kepler GPUs, this will - typically be best. For Pascal GPUs, using "half" neighbor lists and + typically be best. For Pascal GPUs and beyond, using "half" neighbor lists and setting the Newton flag to "on" may be faster. For many pair styles, setting the neighbor binsize equal to twice the CPU default value will give speedup, which is the default when running on GPUs. Use the "-pk @@ -264,13 +261,6 @@ one or more nodes, each with two GPUs: mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos newton on neigh half binsize 2.8 -in in.lj # Newton on, half neighbor list, set binsize = neighbor ghost cutoff -.. note:: - - For good performance of the KOKKOS package on GPUs, you must - have Kepler generation GPUs (or later). The Kokkos library exploits - texture cache options not supported by Telsa generation GPUs (or - older). - .. note:: When using a GPU, you will achieve the best performance if your @@ -386,13 +376,12 @@ As explained on the :ref:`Build extras ` doc page, they can be set either as variables on the make command line or in Makefile.machine, or they can be specified as CMake variables. Each takes a value shown below. The default value is listed, which is set -in the lib/kokkos/Makefile.kokkos file. +in the lib/kokkos/Makefile.kokkos file. For a full listing of all options, +see lib/kokkos/Makefile.kokkos. -* KOKKOS_DEBUG, values = *yes*\ , *no*\ , default = *no* * KOKKOS_USE_TPLS, values = *hwloc*\ , *librt*\ , *experimental_memkind*, default = *none* -* KOKKOS_CXX_STANDARD, values = *c++11*\ , *c++1z*\ , default = *c++11* -* KOKKOS_OPTIONS, values = *aggressive_vectorization*, *disable_profiling*, default = *none* -* KOKKOS_CUDA_OPTIONS, values = *force_uvm*, *use_ldg*, *rdc*\ , *enable_lambda*, default = *enable_lambda* +* KOKKOS_DEBUG, values = *yes*\ , *no*\ , default = *no* +* KOKKOS_CUDA_OPTIONS, values = *force_uvm*, *use_ldg*, *rdc*\ , *enable_lambda*\ , *enable_constexpr*, default = *enable_lambda* KOKKOS_USE_TPLS=hwloc binds threads to hardware cores, so they do not migrate during a simulation. KOKKOS_USE_TPLS=hwloc should always be @@ -411,9 +400,6 @@ within LAMMPS. KOKKOS_DEBUG=yes enables printing of run-time debugging information that can be useful. It also enables runtime bounds checking on Kokkos data structures. -KOKKOS_CXX_STANDARD and KOKKOS_OPTIONS are typically not changed when -building LAMMPS. - KOKKOS_CUDA_OPTIONS are additional options for CUDA. The LAMMPS KOKKOS package must be compiled with the *enable_lambda* option when using GPUs. From 850bee23310f13e936d40069132c256039f993aa Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 16 Apr 2020 15:39:53 -0400 Subject: [PATCH 12/85] update KOKKOS.cmake for Kokkos 3.1. no more patch needed. --- cmake/Modules/Packages/KOKKOS.cmake | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index a9a5c01a72..d3b8fd4ed0 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -15,12 +15,10 @@ option(EXTERNAL_KOKKOS "Build against external kokkos library" OFF) option(DOWNLOAD_KOKKOS "Download the KOKKOS library instead of using the bundled one" OFF) if(DOWNLOAD_KOKKOS) message(STATUS "KOKKOS download requested - we will build our own") - file(DOWNLOAD https://github.com/kokkos/kokkos/compare/3.0.00...stanmoore1:lammps.diff ${CMAKE_CURRENT_BINARY_DIR}/kokkos-lammps.patch) include(ExternalProject) ExternalProject_Add(kokkos_build - URL https://github.com/kokkos/kokkos/archive/3.0.00.tar.gz - URL_MD5 281c7093aa3a603276e93abdf4be23b9 - PATCH_COMMAND patch -p1 < ${CMAKE_CURRENT_BINARY_DIR}/kokkos-lammps.patch + URL https://github.com/kokkos/kokkos/archive/3.1.00.tar.gz + URL_MD5 f638a6c786f748a602b26faa0e96ebab CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= ${CMAKE_REQUEST_PIC} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} @@ -39,7 +37,7 @@ if(DOWNLOAD_KOKKOS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() elseif(EXTERNAL_KOKKOS) - find_package(Kokkos 3) + find_package(Kokkos 3.1) if(NOT Kokkos_FOUND) message(FATAL_ERROR "KOKKOS library not found, help CMake to find it by setting KOKKOS_LIBRARY, or set DOWNLOAD_KOKKOS=ON to download it") endif() From 8c545073718077e597d06051e9670bc65bfb11ee Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 16 Apr 2020 16:32:41 -0400 Subject: [PATCH 13/85] forward Kokkos library variables from CMake configuration for LAMMPS to the downloaded Kokkos library build --- cmake/Modules/Packages/KOKKOS.cmake | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index d3b8fd4ed0..3aaba0c4fd 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -14,14 +14,30 @@ endif() option(EXTERNAL_KOKKOS "Build against external kokkos library" OFF) option(DOWNLOAD_KOKKOS "Download the KOKKOS library instead of using the bundled one" OFF) if(DOWNLOAD_KOKKOS) + # extract Kokkos-related variables and values so we can forward them to the Kokkos library build + get_cmake_property(_VARS VARIABLES) + list(FILTER _VARS INCLUDE REGEX ^Kokkos_) + foreach(_VAR IN LISTS _VARS) + list(APPEND KOKKOS_LIB_BUILD_ARGS "-D${_VAR}=${${_VAR}}") + endforeach() message(STATUS "KOKKOS download requested - we will build our own") + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_INSTALL_PREFIX=") + if(CMAKE_REQUEST_PIC) + list(APPEND KOKKOS_LIB_BUILD_ARGS ${CMAKE_REQUEST_PIC}) + endif() + # append other CMake variables that need to be forwarded to CMAKE_ARGS + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}") + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_INSTALL_LIBDIR=lib") + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}") + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}") + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}") + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS}") + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}") include(ExternalProject) ExternalProject_Add(kokkos_build URL https://github.com/kokkos/kokkos/archive/3.1.00.tar.gz URL_MD5 f638a6c786f748a602b26faa0e96ebab - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= ${CMAKE_REQUEST_PIC} - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_LIBDIR=lib - -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} + CMAKE_ARGS ${KOKKOS_LIB_BUILD_ARGS} BUILD_BYPRODUCTS /lib/libkokkoscore.a ) ExternalProject_get_property(kokkos_build INSTALL_DIR) From 822c396e3ac8b497cfc51c4d7315ef63d97f6a2f Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 17 Apr 2020 11:30:43 -0600 Subject: [PATCH 14/85] Work around Kokkos issue --- src/KOKKOS/npair_kokkos.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/npair_kokkos.h b/src/KOKKOS/npair_kokkos.h index 7650bf3350..c02c174b57 100644 --- a/src/KOKKOS/npair_kokkos.h +++ b/src/KOKKOS/npair_kokkos.h @@ -395,7 +395,7 @@ struct NPairKokkosBuildFunctor { void operator() (typename Kokkos::TeamPolicy::member_type dev) const { c.template build_ItemCuda(dev); } - size_t shmem_size(const int team_size) const { (void) team_size; return sharedsize; } + size_t team_shmem_size(const int team_size) const { (void) team_size; return sharedsize; } #endif }; @@ -455,7 +455,7 @@ struct NPairKokkosBuildFunctorSize { void operator() (typename Kokkos::TeamPolicy::member_type dev) const { c.template build_ItemSizeCuda(dev); } - size_t shmem_size(const int team_size) const { (void) team_size; return sharedsize; } + size_t team_shmem_size(const int team_size) const { (void) team_size; return sharedsize; } #endif }; From 1599d984259a59c9906624724fb79d2782ea4312 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 17 Apr 2020 13:33:47 -0500 Subject: [PATCH 15/85] Fixed the doc page for fix wall/body/polyhedron --- doc/src/fix_wall_body_polyhedron.rst | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/doc/src/fix_wall_body_polyhedron.rst b/doc/src/fix_wall_body_polyhedron.rst index 4b01234f0f..35be8e9259 100644 --- a/doc/src/fix_wall_body_polyhedron.rst +++ b/doc/src/fix_wall_body_polyhedron.rst @@ -15,15 +15,14 @@ Syntax * k_n = normal repulsion strength (force/distance units or pressure units - see discussion below) * c_n = normal damping coefficient (force/distance units or pressure units - see discussion below) * c_t = tangential damping coefficient (force/distance units or pressure units - see discussion below) -* wallstyle = *xplane* or *yplane* or *zplane* or *zcylinder* +* wallstyle = *xplane* or *yplane* or *zplane* * args = list of arguments for a particular style .. parsed-literal:: - *xplane* or *yplane* args = lo hi + *xplane* or *yplane* or *zplane* args = lo hi lo,hi = position of lower and upper plane (distance units), either can be NULL) - *zcylinder* args = radius - radius = cylinder radius (distance units) + * zero or more keyword/value pairs may be appended to args * keyword = *wiggle* @@ -60,8 +59,7 @@ those specified with the :doc:`pair_style body/rounded/polyhedron Date: Mon, 20 Apr 2020 13:15:25 -0500 Subject: [PATCH 16/85] Added changes to support SMs setting charges in kim_interactions --- src/KIM/kim_interactions.cpp | 69 ++++++++++++++++++++++++------------ src/KIM/kim_interactions.h | 2 +- 2 files changed, 47 insertions(+), 24 deletions(-) diff --git a/src/KIM/kim_interactions.cpp b/src/KIM/kim_interactions.cpp index 55d89766b5..d0aa0e3c4e 100644 --- a/src/KIM/kim_interactions.cpp +++ b/src/KIM/kim_interactions.cpp @@ -232,19 +232,19 @@ void KimInteractions::do_setup(int narg, char **arg) char * strword; strcpy(strbuf,sim_value); strword = strtok(strbuf," \t"); - if (0==strcmp(strword,"KIM_MATCH_PAIRS")) { - // Notes regarding the KIM_MATCH_PAIRS command + if (0==strcmp(strword,"KIM_SET_TYPE_PARAMETERS")) { + // Notes regarding the KIM_SET_TYPE_PARAMETERS command // * This is an INTERNAL command. // * It is intended for use only by KIM Simulator Models. // * It is not possible to use this command outside of the context // of the kim_interactions command and KIM Simulator Models. // * The command performs a transformation from symbolic // string-based atom types to lammps numeric atom types for - // the pair_coeff settings. + // the pair_coeff and charge settings. // * The command is not documented fully as it is expected to be // temporary. Eventually it should be replaced by a more // comprehensive symbolic types support in lammps. - KIM_MATCH_PAIRS(sim_value); + KIM_SET_TYPE_PARAMETERS(sim_value); } else { input->one(sim_value); } @@ -287,12 +287,14 @@ void KimInteractions::do_setup(int narg, char **arg) /* ---------------------------------------------------------------------- */ -void KimInteractions::KIM_MATCH_PAIRS(char const *const input_line) const +void KimInteractions::KIM_SET_TYPE_PARAMETERS(char const *const input_line) const { char strbuf[MAXLINE]; strcpy(strbuf,input_line); - char *cmd, *filename; + char *cmd, *key, *filename; + int nocomment; cmd = strtok(strbuf," \t"); + key = strtok(NULL," \t"); filename = strtok(NULL," \t"); FILE *fp; @@ -301,13 +303,14 @@ void KimInteractions::KIM_MATCH_PAIRS(char const *const input_line) const error->one(FLERR,"Parameter file not found"); } + char *species1, *species2, *the_rest, *check; std::vector species; for (int i = 0; i < atom->ntypes; ++i) { char *str; str = strtok(NULL," \t"); if (str == NULL) - error->one(FLERR,"Incorrect args for KIM_MATCH_PAIRS command"); + error->one(FLERR,"Incorrect args for KIM_SET_TYPE_PARAMETERS command"); species.push_back(str); } @@ -327,26 +330,46 @@ void KimInteractions::KIM_MATCH_PAIRS(char const *const input_line) const MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); - char *species1, *species2, *the_rest; ptr = line; - species1 = strtok(ptr," \t"); - species2 = strtok(NULL," \t"); - the_rest = strtok(NULL,"\n"); + nocomment = line[0] != '#'; - for (int type_a = 0; type_a < atom->ntypes; ++type_a) { - for (int type_b = type_a; type_b < atom->ntypes; ++type_b) { - if(((strcmp(species[type_a],species1) == 0) && - (strcmp(species[type_b],species2) == 0)) - || - ((strcmp(species[type_b],species1) == 0) && - (strcmp(species[type_a],species2) == 0)) - ) { - char pair_command[MAXLINE]; - sprintf(pair_command,"pair_coeff %i %i %s",type_a+1,type_b+1, - the_rest); - input->one(pair_command); + if(nocomment) { + if (strcmp(key,"pair") == 0) { + species1 = strtok(ptr," \t"); + species2 = strtok(NULL," \t"); + the_rest = strtok(NULL,"\n"); + + for (int type_a = 0; type_a < atom->ntypes; ++type_a) { + for (int type_b = type_a; type_b < atom->ntypes; ++type_b) { + if(((strcmp(species[type_a],species1) == 0) && + (strcmp(species[type_b],species2) == 0)) + || + ((strcmp(species[type_b],species1) == 0) && + (strcmp(species[type_a],species2) == 0)) + ) { + char pair_command[MAXLINE]; + sprintf(pair_command,"pair_coeff %i %i %s",type_a+1,type_b+1, + the_rest); + input->one(pair_command); + } + } } } + else if (strcmp(key,"charge") == 0) { + species1 = strtok(ptr," \t"); + the_rest = strtok(NULL,"\n"); + + for (int type_a = 0; type_a < atom->ntypes; ++type_a) { + if(strcmp(species[type_a],species1) == 0) { + char pair_command[MAXLINE]; + sprintf(pair_command,"set type %i charge %s",type_a+1,the_rest); + input->one(pair_command); + } + } + } + else{ + error->one(FLERR,"Unrecognized KEY for KIM_SET_TYPE_PARAMETERS command"); + } } } fclose(fp); diff --git a/src/KIM/kim_interactions.h b/src/KIM/kim_interactions.h index f92e58ca48..ffec48adab 100644 --- a/src/KIM/kim_interactions.h +++ b/src/KIM/kim_interactions.h @@ -77,7 +77,7 @@ class KimInteractions : protected Pointers { private: void do_setup(int, char **); int species_to_atomic_no(std::string const species) const; - void KIM_MATCH_PAIRS(char const *const input_line) const; + void KIM_SET_TYPE_PARAMETERS(char const *const input_line) const; void kim_interactions_log_delimiter(std::string const begin_end) const; }; From 1c15ba88f32011c8e655626740b00954b2b5d1e5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 20 Apr 2020 15:27:30 -0400 Subject: [PATCH 17/85] need to copy maxspecial and "extra" data to do a proper recreation --- src/replicate.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/replicate.cpp b/src/replicate.cpp index b3baf47c16..96125d4fe2 100644 --- a/src/replicate.cpp +++ b/src/replicate.cpp @@ -196,6 +196,12 @@ void Replicate::command(int narg, char **arg) atom->dihedral_per_atom = old->dihedral_per_atom; atom->improper_per_atom = old->improper_per_atom; + atom->extra_bond_per_atom = old->extra_bond_per_atom; + atom->extra_angle_per_atom = old->extra_angle_per_atom; + atom->extra_dihedral_per_atom = old->extra_dihedral_per_atom; + atom->extra_improper_per_atom = old->extra_improper_per_atom; + atom->maxspecial = old->maxspecial; + // store old simulation box int triclinic = domain->triclinic; From 0dfb1329bea08965cbd1032a371476f45f6943ae Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 20 Apr 2020 16:56:09 -0400 Subject: [PATCH 18/85] we must not write out per-type pair cutoff when long-range LJ is enabled --- src/KSPACE/pair_buck_long_coul_long.cpp | 15 +++++++++++---- src/KSPACE/pair_lj_long_coul_long.cpp | 15 +++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/KSPACE/pair_buck_long_coul_long.cpp b/src/KSPACE/pair_buck_long_coul_long.cpp index 6c731b73b3..db01cb8509 100644 --- a/src/KSPACE/pair_buck_long_coul_long.cpp +++ b/src/KSPACE/pair_buck_long_coul_long.cpp @@ -430,10 +430,17 @@ void PairBuckLongCoulLong::write_data(FILE *fp) void PairBuckLongCoulLong::write_data_all(FILE *fp) { - for (int i = 1; i <= atom->ntypes; i++) - for (int j = i; j <= atom->ntypes; j++) - fprintf(fp,"%d %d %g %g %g\n",i,j, - buck_a_read[i][j],buck_rho_read[i][j],buck_c_read[i][j]); + for (int i = 1; i <= atom->ntypes; i++) { + for (int j = i; j <= atom->ntypes; j++) { + if (ewald_order & (1<<6)) { + fprintf(fp,"%d %d %g %g\n",i,j, + buck_a_read[i][j],buck_rho_read[i][j]); + } else { + fprintf(fp,"%d %d %g %g %g\n",i,j, + buck_a_read[i][j],buck_rho_read[i][j],buck_c_read[i][j]); + } + } + } } /* ---------------------------------------------------------------------- diff --git a/src/KSPACE/pair_lj_long_coul_long.cpp b/src/KSPACE/pair_lj_long_coul_long.cpp index 94955d2d6d..ce6b6f57a2 100644 --- a/src/KSPACE/pair_lj_long_coul_long.cpp +++ b/src/KSPACE/pair_lj_long_coul_long.cpp @@ -427,10 +427,17 @@ void PairLJLongCoulLong::write_data(FILE *fp) void PairLJLongCoulLong::write_data_all(FILE *fp) { - for (int i = 1; i <= atom->ntypes; i++) - for (int j = i; j <= atom->ntypes; j++) - fprintf(fp,"%d %d %g %g %g\n",i,j, - epsilon_read[i][j],sigma_read[i][j],cut_lj_read[i][j]); + for (int i = 1; i <= atom->ntypes; i++) { + for (int j = i; j <= atom->ntypes; j++) { + if (ewald_order & (1<<6)) { + fprintf(fp,"%d %d %g %g\n",i,j, + epsilon_read[i][j],sigma_read[i][j]); + } else { + fprintf(fp,"%d %d %g %g %g\n",i,j, + epsilon_read[i][j],sigma_read[i][j],cut_lj_read[i][j]); + } + } + } } /* ---------------------------------------------------------------------- From 2ac7bfc9cf1ba16fcfa3bb7df56d8042f0e78cbb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 08:26:01 -0400 Subject: [PATCH 19/85] rephrase note about kernel JIT recompilation and Kepler vs. the rest compatibility --- doc/src/Build_extras.rst | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 5457494c87..4465fc884a 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -320,11 +320,12 @@ to have an executable that will run on this and newer architectures. .. note:: - NVIDIA GPUs with CC 5.0 (Maxwell) and newer are not compatible with - CC 3.x (Kepler). If you run Kokkos on a newer architecture than what - LAMMPS was compiled with, there will be a significant delay during - device initialization since the just-in-time compiler has to - recompile the GPU kernel code for the new hardware. + If you run Kokkos on a newer GPU architecture than what LAMMPS was + compiled with, there will be a delay during device initialization + since the just-in-time compiler has to recompile all GPU kernels + for the new hardware. This is, however, not possible when compiled + for NVIDIA GPUs with CC 3.x (Kepler) for GPUs with CC 5.0 (Maxwell) + and newer as they are not compatible. The settings discussed below have been tested with LAMMPS and are confirmed to work. Kokkos is an active project with ongoing improvements From 729646d7b52f03115a14d1027d55a9ea60efebd3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 08:27:00 -0400 Subject: [PATCH 20/85] update table of Kokkos supported archs and indicate HOST/GPU designation --- doc/src/Build_extras.rst | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 4465fc884a..1b74358b36 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -344,65 +344,101 @@ be specified in uppercase. :widths: auto * - **Arch-ID** + - **HOST or GPU** - **Description** * - AMDAVX + - HOST - AMD 64-bit x86 CPU (AVX 1) * - EPYC + - HOST - AMD EPYC Zen class CPU (AVX 2) * - ARMV80 + - HOST - ARMv8.0 Compatible CPU * - ARMV81 + - HOST - ARMv8.1 Compatible CPU * - ARMV8_THUNDERX + - HOST - ARMv8 Cavium ThunderX CPU * - ARMV8_THUNDERX2 + - HOST - ARMv8 Cavium ThunderX2 CPU * - WSM + - HOST - Intel Westmere CPU (SSE 4.2) * - SNB + - HOST - Intel Sandy/Ivy Bridge CPU (AVX 1) * - HSW + - HOST - Intel Haswell CPU (AVX 2) * - BDW + - HOST - Intel Broadwell Xeon E-class CPU (AVX 2 + transactional mem) * - SKX + - HOST - Intel Sky Lake Xeon E-class HPC CPU (AVX512 + transactional mem) * - KNC + - HOST - Intel Knights Corner Xeon Phi * - KNL + - HOST - Intel Knights Landing Xeon Phi * - BGQ + - HOST - IBM Blue Gene/Q CPU * - POWER7 - - IBM POWER8 CPU + - HOST + - IBM POWER7 CPU * - POWER8 + - HOST - IBM POWER8 CPU * - POWER9 + - HOST - IBM POWER9 CPU * - KEPLER30 + - GPU - NVIDIA Kepler generation CC 3.0 GPU * - KEPLER32 + - GPU - NVIDIA Kepler generation CC 3.2 GPU * - KEPLER35 + - GPU - NVIDIA Kepler generation CC 3.5 GPU * - KEPLER37 + - GPU - NVIDIA Kepler generation CC 3.7 GPU * - MAXWELL50 + - GPU - NVIDIA Maxwell generation CC 5.0 GPU * - MAXWELL52 + - GPU - NVIDIA Maxwell generation CC 5.2 GPU * - MAXWELL53 + - GPU - NVIDIA Maxwell generation CC 5.3 GPU * - PASCAL60 + - GPU - NVIDIA Pascal generation CC 6.0 GPU * - PASCAL61 + - GPU - NVIDIA Pascal generation CC 6.1 GPU * - VOLTA70 + - GPU - NVIDIA Volta generation CC 7.0 GPU * - VOLTA72 + - GPU - NVIDIA Volta generation CC 7.2 GPU * - TURING75 + - GPU - NVIDIA Turing generation CC 7.5 GPU + * - VEGA900 + - GPU + - AMD GPU MI25 GFX900 + * - VEGA906 + - GPU + - AMD GPU MI50/MI60 GFX906 CMake build settings: ^^^^^^^^^^^^^^^^^^^^^ From 2348d6db62360a91b3717ce02aa2c0045734ebcb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 08:30:16 -0400 Subject: [PATCH 21/85] use HOSTARCH/HOST instead of CPUARCH/CPU to better distinguish from GPUARCH/GPU --- doc/src/Build_extras.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 1b74358b36..9f097b3fc1 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -446,7 +446,7 @@ For multicore CPUs using OpenMP, set these 2 variables. .. code-block:: bash - -D Kokkos_ARCH_CPUARCH=yes # CPUARCH = CPU from list above + -D Kokkos_ARCH_HOSTARCH=yes # HOSTARCH = HOST from list above -D Kokkos_ENABLE_OPENMP=yes -D BUILD_OMP=yes @@ -464,7 +464,7 @@ For NVIDIA GPUs using CUDA, set these variables: .. code-block:: bash - -D Kokkos_ARCH_CPUARCH=yes # CPUARCH = CPU from list above + -D Kokkos_ARCH_HOSTARCH=yes # HOSTARCH = HOST from list above -D Kokkos_ARCH_GPUARCH=yes # GPUARCH = GPU from list above -D Kokkos_ENABLE_CUDA=yes -D Kokkos_ENABLE_OPENMP=yes @@ -504,7 +504,7 @@ For multicore CPUs using OpenMP: .. code-block:: make KOKKOS_DEVICES = OpenMP - KOKKOS_ARCH = CPUARCH # CPUARCH = CPU from list above + KOKKOS_ARCH = HOSTARCH # HOSTARCH = HOST from list above For Intel KNLs using OpenMP: @@ -518,7 +518,7 @@ For NVIDIA GPUs using CUDA: .. code-block:: make KOKKOS_DEVICES = Cuda - KOKKOS_ARCH = CPUARCH,GPUARCH # CPUARCH = CPU from list above that is hosting the GPU + KOKKOS_ARCH = HOSTARCH,GPUARCH # HOSTARCH = HOST from list above that is hosting the GPU # GPUARCH = GPU from list above FFT_INC = -DFFT_CUFFT # enable use of cuFFT (optional) FFT_LIB = -lcufft # link to cuFFT library From 3c144600a55058b5ab92ab86abe6842f22786e75 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 11:46:16 -0400 Subject: [PATCH 22/85] update Kokkos related documentation for Kokkos 3.1 and refactor build info a bit --- doc/src/Build_extras.rst | 57 +++++++-- doc/src/Speed_kokkos.rst | 124 ++++++++++---------- doc/utils/sphinx-config/false_positives.txt | 2 + 3 files changed, 111 insertions(+), 72 deletions(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 9f097b3fc1..5d6f2c65a7 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -440,8 +440,8 @@ be specified in uppercase. - GPU - AMD GPU MI50/MI60 GFX906 -CMake build settings: -^^^^^^^^^^^^^^^^^^^^^ +Basic CMake build settings: +^^^^^^^^^^^^^^^^^^^^^^^^^^^ For multicore CPUs using OpenMP, set these 2 variables. .. code-block:: bash @@ -470,9 +470,13 @@ For NVIDIA GPUs using CUDA, set these variables: -D Kokkos_ENABLE_OPENMP=yes -D CMAKE_CXX_COMPILER=wrapper # wrapper = full path to Cuda nvcc wrapper -The wrapper value is the Cuda nvcc compiler wrapper provided in the -Kokkos library: ``lib/kokkos/bin/nvcc_wrapper``\ . The setting should -include the full path name to the wrapper, e.g. +This will also enable executing FFTs on the GPU, either via the internal +KISSFFT library, or - by preference - with the cuFFT library bundled +with the CUDA toolkit, depending on whether CMake can identify its +location. The *wrapper* value for ``CMAKE_CXX_COMPILER`` variable is +the path to the CUDA nvcc compiler wrapper provided in the Kokkos +library: ``lib/kokkos/bin/nvcc_wrapper``\ . The setting should include +the full path name to the wrapper, e.g. .. code-block:: bash @@ -492,8 +496,8 @@ common packages enabled, you can do the following: cmake -C ../cmake/presets/minimal.cmake -C ../cmake/presets/kokkos-cuda.cmake ../cmake cmake --build . -Traditional make settings: -^^^^^^^^^^^^^^^^^^^^^^^^^^ +Basic traditional make settings: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Choose which hardware to support in ``Makefile.machine`` via ``KOKKOS_DEVICES`` and ``KOKKOS_ARCH`` settings. See the @@ -519,6 +523,7 @@ For NVIDIA GPUs using CUDA: KOKKOS_DEVICES = Cuda KOKKOS_ARCH = HOSTARCH,GPUARCH # HOSTARCH = HOST from list above that is hosting the GPU + KOKKOS_CUDA_OPTIONS = "enable_lambda" # GPUARCH = GPU from list above FFT_INC = -DFFT_CUFFT # enable use of cuFFT (optional) FFT_LIB = -lcufft # link to cuFFT library @@ -541,6 +546,44 @@ C++ compiler for non-Kokkos, non-CUDA files. KOKKOS_ABSOLUTE_PATH = $(shell cd $(KOKKOS_PATH); pwd) CC = mpicxx -cxx=$(KOKKOS_ABSOLUTE_PATH)/config/nvcc_wrapper + +Advanced KOKKOS compilation settings +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +There are other allowed options when building with the KOKKOS package +that can improve performance or assist in debugging or profiling. Below +are some examples that may be useful in combination with LAMMPS. For +the full list (which keeps changing as the Kokkos package itself evolves), +please consult the Kokkos library documentation. + +As alternative to using multi-threading via OpenMP +(``-DKokkos_ENABLE_OPENMP=on`` or ``KOKKOS_DEVICES=OpenMP``) it is also +possible to use Posix threads directly (``-DKokkos_ENABLE_PTHREAD=on`` +or ``KOKKOS_DEVICES=Pthread``). While binding of threads to individual +or groups of CPU cores is managed in OpenMP with environment variables, +you need assistance from either the "hwloc" or "libnuma" library for the +Pthread thread parallelization option. To enable use with CMake: +``-DKokkos_ENABLE_HWLOC=on`` or ``-DKokkos_ENABLE_LIBNUMA=on``; and with +conventional make: ``KOKKOS_USE_TPLS=hwloc`` or +``KOKKOS_USE_TPLS=libnuma``. + +The CMake option ``-DKokkos_ENABLE_LIBRT=on`` or the makefile setting +``KOKKOS_USE_TPLS=librt`` enables the use of a more accurate timer +mechanism on many Unix-like platforms for internal profiling. + +The CMake option ``-DKokkos_ENABLE_DEBUG=on`` or the makefile setting +``KOKKOS_DEBUG=yes`` enables printing of run-time +debugging information that can be useful. It also enables runtime +bounds checking on Kokkos data structures. As to be expected, enabling +this option will negatively impact the performance and thus is only +recommended when developing a Kokkos-enabled style in LAMMPS. + +The CMake option ``-DKokkos_ENABLE_CUDA_UVM=on`` or the makefile +setting ``KOKKOS_CUDA_OPTIONS=enable_lambda,force_uvm`` enables the +use of CUDA "Unified Virtual Memory" in Kokkos. Please note, that +the LAMMPS KOKKOS package must **always** be compiled with the +*enable_lambda* option when using GPUs. + ---------- .. _latte: diff --git a/doc/src/Speed_kokkos.rst b/doc/src/Speed_kokkos.rst index 56490e8e84..3269564d21 100644 --- a/doc/src/Speed_kokkos.rst +++ b/doc/src/Speed_kokkos.rst @@ -28,27 +28,30 @@ compatible with specific hardware. .. note:: - To build with Kokkos support for NVIDIA GPUs, NVIDIA CUDA + To build with Kokkos support for NVIDIA GPUs, the NVIDIA CUDA toolkit software version 9.0 or later must be installed on your system. See - the discussion for the :doc:`GPU package ` for details of how - to check and do this. + the discussion for the :doc:`GPU package ` for details of + how to check and do this. .. note:: - Kokkos with CUDA currently implicitly assumes that the MPI library - is CUDA-aware. This is not always the case, especially when using - pre-compiled MPI libraries provided by a Linux distribution. This is not - a problem when using only a single GPU with a single MPI rank. When - running with multiple MPI ranks, you may see segmentation faults without - CUDA-aware MPI support. These can be avoided by adding the flags :doc:`-pk kokkos cuda/aware off ` to the LAMMPS command line or by - using the command :doc:`package kokkos cuda/aware off ` in the - input file. + Kokkos with CUDA currently implicitly assumes that the MPI library is + CUDA-aware. This is not always the case, especially when using + pre-compiled MPI libraries provided by a Linux distribution. This is + not a problem when using only a single GPU with a single MPI + rank. When running with multiple MPI ranks, you may see segmentation + faults without CUDA-aware MPI support. These can be avoided by adding + the flags :doc:`-pk kokkos cuda/aware off ` to the + LAMMPS command line or by using the command :doc:`package kokkos + cuda/aware off ` in the input file. -**Building LAMMPS with the KOKKOS package:** +Building LAMMPS with the KOKKOS package +""""""""""""""""""""""""""""""""""""""" See the :ref:`Build extras ` doc page for instructions. -**Running LAMMPS with the KOKKOS package:** +Running LAMMPS with the KOKKOS package +"""""""""""""""""""""""""""""""""""""" All Kokkos operations occur within the context of an individual MPI task running on a single node of the machine. The total number of MPI @@ -57,7 +60,8 @@ usual manner via the mpirun or mpiexec commands, and is independent of Kokkos. E.g. the mpirun command in OpenMPI does this via its -np and -npernode switches. Ditto for MPICH via -np and -ppn. -**Running on a multi-core CPU:** +Running on a multi-core CPU +^^^^^^^^^^^^^^^^^^^^^^^^^^^ Here is a quick overview of how to use the KOKKOS package for CPU acceleration, assuming one or more 16-core nodes. @@ -133,7 +137,8 @@ atom. When using the Kokkos Serial back end or the OpenMP back end with a single thread, no duplication or atomic operations are used. For CUDA and half neighbor lists, the KOKKOS package always uses atomic operations. -**Core and Thread Affinity:** +CPU Cores, Sockets and Thread Affinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When using multi-threading, it is important for performance to bind both MPI tasks to physical cores, and threads to physical cores, so @@ -147,15 +152,16 @@ for your MPI installation), binding can be forced with these flags: OpenMPI 1.8: mpirun -np 2 --bind-to socket --map-by socket ./lmp_openmpi ... Mvapich2 2.0: mpiexec -np 2 --bind-to socket --map-by socket ./lmp_mvapich ... -For binding threads with KOKKOS OpenMP, use thread affinity -environment variables to force binding. With OpenMP 3.1 (gcc 4.7 or -later, intel 12 or later) setting the environment variable -OMP_PROC_BIND=true should be sufficient. In general, for best -performance with OpenMP 4.0 or better set OMP_PROC_BIND=spread and -OMP_PLACES=threads. For binding threads with the KOKKOS pthreads -option, compile LAMMPS the KOKKOS HWLOC=yes option as described below. +For binding threads with KOKKOS OpenMP, use thread affinity environment +variables to force binding. With OpenMP 3.1 (gcc 4.7 or later, intel 12 +or later) setting the environment variable ``OMP_PROC_BIND=true`` should +be sufficient. In general, for best performance with OpenMP 4.0 or later +set ``OMP_PROC_BIND=spread`` and ``OMP_PLACES=threads``. For binding +threads with the KOKKOS pthreads option, compile LAMMPS with the hwloc +or libnuma support enabled as described in the :ref:`extra build options page `. -**Running on Knight's Landing (KNL) Intel Xeon Phi:** +Running on Knight's Landing (KNL) Intel Xeon Phi +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Here is a quick overview of how to use the KOKKOS package for the Intel Knight's Landing (KNL) Xeon Phi: @@ -213,7 +219,8 @@ threads/task as Nt. The product of these two values should be N, i.e. them in "native" mode, not "offload" mode like the USER-INTEL package supports. -**Running on GPUs:** +Running on GPUs +^^^^^^^^^^^^^^^ Use the "-k" :doc:`command-line switch ` to specify the number of GPUs per node. Typically the -np setting of the mpirun command @@ -277,7 +284,8 @@ one or more nodes, each with two GPUs: kspace, etc., you must set the environment variable CUDA_LAUNCH_BLOCKING=1. However, this will reduce performance and is not recommended for production runs. -**Run with the KOKKOS package by editing an input script:** +Run with the KOKKOS package by editing an input script +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Alternatively the effect of the "-sf" or "-pk" switches can be duplicated by adding the :doc:`package kokkos ` or :doc:`suffix kk ` commands to your input script. @@ -300,17 +308,24 @@ You only need to use the :doc:`package kokkos ` command if you wish to change any of its option defaults, as set by the "-k on" :doc:`command-line switch `. -**Using OpenMP threading and CUDA together (experimental):** +**Using OpenMP threading and CUDA together:** With the KOKKOS package, both OpenMP multi-threading and GPUs can be -used together in a few special cases. In the Makefile, the -KOKKOS_DEVICES variable must include both "Cuda" and "OpenMP", as is -the case for /src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi +compiled and used together in a few special cases. In the makefile for +the conventional build, the KOKKOS_DEVICES variable must include both, +"Cuda" and "OpenMP", as is the case for ``/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi``. .. code-block:: bash KOKKOS_DEVICES=Cuda,OpenMP +When building with CMake you need to enable both features as it is done +in the ``kokkos-cuda.cmake`` CMake preset file. + +.. code-block:: bash + + cmake ../cmake -DKokkos_ENABLE_CUDA=yes -DKokkos_ENABLE_OPENMP=yes + The suffix "/kk" is equivalent to "/kk/device", and for Kokkos CUDA, using the "-sf kk" in the command line gives the default CUDA version everywhere. However, if the "/kk/host" suffix is added to a specific @@ -344,7 +359,8 @@ suffix for kspace and bonds, angles, etc. in the input file and the sure the environment variable CUDA_LAUNCH_BLOCKING is not set to "1" so CPU/GPU overlap can occur. -**Speed-ups to expect:** +Performance to expect +""""""""""""""""""""" The performance of KOKKOS running in different modes is a function of your hardware, which KOKKOS-enable styles are used, and the problem @@ -361,48 +377,26 @@ Generally speaking, the following rules of thumb apply: performance of a KOKKOS style is a bit slower than the USER-OMP package. * When running large number of atoms per GPU, KOKKOS is typically faster - than the GPU package. + than the GPU package when compiled for double precision. The benefit + of using single or mixed precision with the GPU package depends + significantly on the hardware in use and the simulated system and pair + style. * When running on Intel hardware, KOKKOS is not as fast as - the USER-INTEL package, which is optimized for that hardware. + the USER-INTEL package, which is optimized for x86 hardware (not just + from Intel) and compilation with the Intel compilers. The USER-INTEL + package also can increase the vector length of vector instructions + by switching to single or mixed precision mode. See the `Benchmark page `_ of the LAMMPS web site for performance of the KOKKOS package on different hardware. -**Advanced Kokkos options:** +Advanced Kokkos options +""""""""""""""""""""""" -There are other allowed options when building with the KOKKOS package. -As explained on the :ref:`Build extras ` doc page, -they can be set either as variables on the make command line or in -Makefile.machine, or they can be specified as CMake variables. Each -takes a value shown below. The default value is listed, which is set -in the lib/kokkos/Makefile.kokkos file. For a full listing of all options, -see lib/kokkos/Makefile.kokkos. - -* KOKKOS_USE_TPLS, values = *hwloc*\ , *librt*\ , *experimental_memkind*, default = *none* -* KOKKOS_DEBUG, values = *yes*\ , *no*\ , default = *no* -* KOKKOS_CUDA_OPTIONS, values = *force_uvm*, *use_ldg*, *rdc*\ , *enable_lambda*\ , *enable_constexpr*, default = *enable_lambda* - -KOKKOS_USE_TPLS=hwloc binds threads to hardware cores, so they do not -migrate during a simulation. KOKKOS_USE_TPLS=hwloc should always be -used if running with KOKKOS_DEVICES=Pthreads for pthreads. It is not -necessary for KOKKOS_DEVICES=OpenMP for OpenMP, because OpenMP -provides alternative methods via environment variables for binding -threads to hardware cores. More info on binding threads to cores is -given on the :doc:`Speed omp ` doc page. - -KOKKOS_USE_TPLS=librt enables use of a more accurate timer mechanism -on most Unix platforms. This library is not available on all -platforms. - -KOKKOS_DEBUG is only useful when developing a Kokkos-enabled style -within LAMMPS. KOKKOS_DEBUG=yes enables printing of run-time -debugging information that can be useful. It also enables runtime -bounds checking on Kokkos data structures. - -KOKKOS_CUDA_OPTIONS are additional options for CUDA. The LAMMPS KOKKOS -package must be compiled with the *enable_lambda* option when using -GPUs. +There are other allowed options when building with the KOKKOS package +that can improve performance or assist in debugging or profiling. +They are explained on the :ref:`KOKKOS section of the build extras ` doc page, Restrictions """""""""""" diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index c19349f3e6..4dd258f622 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -499,6 +499,7 @@ cuda Cuda CUDA CuH +cuFFT Cummins Curk customIDs @@ -1544,6 +1545,7 @@ libmeam libmessage libmpi libmpich +libnuma libplumed libplumedKernel libpng From 9f923c51f8f0cd416c08a43a1c249df0ac906386 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 12:07:34 -0400 Subject: [PATCH 23/85] update singularity definition files for ubuntu variants to enable more LAMMPS build options and features --- tools/singularity/ubuntu16.04.def | 2 +- tools/singularity/ubuntu18.04.def | 4 ++++ tools/singularity/ubuntu18.04_amd_rocm.def | 10 ++++++++++ tools/singularity/ubuntu18.04_intel_opencl.def | 10 ++++++++++ tools/singularity/ubuntu18.04_nvidia.def | 10 ++++++++++ tools/singularity/ubuntu20.04.def | 5 ++++- 6 files changed, 39 insertions(+), 2 deletions(-) diff --git a/tools/singularity/ubuntu16.04.def b/tools/singularity/ubuntu16.04.def index b6833707a2..ea661cf083 100644 --- a/tools/singularity/ubuntu16.04.def +++ b/tools/singularity/ubuntu16.04.def @@ -8,7 +8,7 @@ From: ubuntu:16.04 apt-get install --no-install-recommends -y \ bc build-essential curl doxygen vim-nox wget \ make cmake cmake-curses-gui ninja-build git \ - rsync ssh \ + rsync ssh less \ ccache gcc g++ gfortran \ mpi-default-bin mpi-default-dev \ libfftw3-dev libjpeg-dev libpng12-dev libblas-dev liblapack-dev \ diff --git a/tools/singularity/ubuntu18.04.def b/tools/singularity/ubuntu18.04.def index 4285f8d3a4..31c14f6830 100644 --- a/tools/singularity/ubuntu18.04.def +++ b/tools/singularity/ubuntu18.04.def @@ -20,15 +20,19 @@ From: ubuntu:18.04 gfortran \ git \ hdf5-tools \ + less \ libblas-dev \ libeigen3-dev \ libenchant-dev \ libfftw3-dev \ libgsl-dev \ libhdf5-serial-dev \ + libhwloc-dev \ libjpeg-dev \ liblapack-dev \ + libomp-dev \ libopenblas-dev \ + libnuma-dev \ libpng-dev \ libproj-dev \ libvtk6-dev \ diff --git a/tools/singularity/ubuntu18.04_amd_rocm.def b/tools/singularity/ubuntu18.04_amd_rocm.def index f653e65130..0338ff3c45 100644 --- a/tools/singularity/ubuntu18.04_amd_rocm.def +++ b/tools/singularity/ubuntu18.04_amd_rocm.def @@ -24,14 +24,18 @@ From: rocm/dev-ubuntu-18.04 gfortran \ git \ hdf5-tools \ + kmod \ + less \ libblas-dev \ libeigen3-dev \ libenchant-dev \ libfftw3-dev \ libgsl-dev \ libhdf5-serial-dev \ + libhwloc-dev \ libjpeg-dev \ liblapack-dev \ + libomp-dev \ libopenblas-dev \ libnuma-dev \ libpng-dev \ @@ -53,6 +57,12 @@ From: rocm/dev-ubuntu-18.04 rocm-libs \ rsync \ ssh \ + texlive \ + texlive-latex-recommended \ + texlive-pictures \ + texlive-publishers \ + texlive-science \ + dvipng \ vim-nox \ virtualenv \ voro++-dev \ diff --git a/tools/singularity/ubuntu18.04_intel_opencl.def b/tools/singularity/ubuntu18.04_intel_opencl.def index 389c75699c..6dabb94cb1 100644 --- a/tools/singularity/ubuntu18.04_intel_opencl.def +++ b/tools/singularity/ubuntu18.04_intel_opencl.def @@ -22,15 +22,19 @@ From: ubuntu:18.04 gfortran \ git \ hdf5-tools \ + less \ libblas-dev \ libeigen3-dev \ libenchant-dev \ libfftw3-dev \ libgsl-dev \ libhdf5-serial-dev \ + libhwloc-dev \ libjpeg-dev \ liblapack-dev \ + libomp-dev \ libopenblas-dev \ + libnuma-dev \ libpng-dev \ libproj-dev \ libvtk6-dev \ @@ -51,6 +55,12 @@ From: ubuntu:18.04 python3-virtualenv \ rsync \ ssh \ + texlive \ + texlive-latex-recommended \ + texlive-pictures \ + texlive-publishers \ + texlive-science \ + dvipng \ vim-nox \ virtualenv \ voro++-dev \ diff --git a/tools/singularity/ubuntu18.04_nvidia.def b/tools/singularity/ubuntu18.04_nvidia.def index 9392821d7e..bec17adf7f 100644 --- a/tools/singularity/ubuntu18.04_nvidia.def +++ b/tools/singularity/ubuntu18.04_nvidia.def @@ -22,15 +22,19 @@ From: nvidia/cuda:10.2-devel-ubuntu18.04 gfortran \ git \ hdf5-tools \ + less \ libblas-dev \ libeigen3-dev \ libenchant-dev \ libfftw3-dev \ libgsl-dev \ libhdf5-serial-dev \ + libhwloc-dev \ libjpeg-dev \ liblapack-dev \ + libomp-dev \ libopenblas-dev \ + libnuma-dev \ libpng-dev \ libproj-dev \ libvtk6-dev \ @@ -51,6 +55,12 @@ From: nvidia/cuda:10.2-devel-ubuntu18.04 python3-virtualenv \ rsync \ ssh \ + texlive \ + texlive-latex-recommended \ + texlive-pictures \ + texlive-publishers \ + texlive-science \ + dvipng \ vim-nox \ virtualenv \ voro++-dev \ diff --git a/tools/singularity/ubuntu20.04.def b/tools/singularity/ubuntu20.04.def index 37c67b9373..028f5a09c7 100644 --- a/tools/singularity/ubuntu20.04.def +++ b/tools/singularity/ubuntu20.04.def @@ -20,16 +20,19 @@ From: ubuntu:20.04 gfortran \ git \ hdf5-tools \ + less \ libblas-dev \ libeigen3-dev \ libenchant-dev \ libfftw3-dev \ libgsl-dev \ libhdf5-serial-dev \ + libhwloc-dev \ libjpeg-dev \ liblapack-dev \ - libopenblas-dev \ libomp-dev \ + libopenblas-dev \ + libnuma-dev \ libpng-dev \ libproj-dev \ libvtk6-dev \ From ea31fc11a61e9aa39d526eba8e74d4b9e897a0e1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 12:44:13 -0400 Subject: [PATCH 24/85] add more explicit note about lack of support for pair styles in compute centroid/stress/atom --- doc/src/compute_stress_atom.rst | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/doc/src/compute_stress_atom.rst b/doc/src/compute_stress_atom.rst index 48e8b9c69c..b8b3cb0ea1 100644 --- a/doc/src/compute_stress_atom.rst +++ b/doc/src/compute_stress_atom.rst @@ -2,6 +2,7 @@ compute stress/atom command =========================== + compute centroid/stress/atom command ==================================== @@ -223,15 +224,14 @@ The per-atom array values will be in pressure\*volume Restrictions """""""""""" -Currently, compute *centroid/stress/atom* does not support -pair styles with many-body interactions, -such as :doc:`Tersoff `, -and LAMMPS will generate an error in such cases. -In principal, equivalent formulation -to that of angle, dihedral and improper contributions -in the virial :math:`W_{ab}` formula -can also be applied to the many-body pair styles, -and is planned in the future. + +Currently (Spring 2020), compute *centroid/stress/atom* does not support +pair styles with many-body interactions, such as :doc:`Tersoff +`, or pair styles with long-range Coulomb interactions. +LAMMPS will generate an error in such cases. In principal, equivalent +formulation to that of angle, dihedral and improper contributions in the +virial :math:`W_{ab}` formula can also be applied to the many-body pair +styles, and is planned in the future. Related commands """""""""""""""" From 0f9d8efe69817b3f8fc478bec2d29dce2712e05e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 12:50:27 -0400 Subject: [PATCH 25/85] state in external Kokkos error message the version 3.1 or later is required --- cmake/Modules/Packages/KOKKOS.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 3aaba0c4fd..eb549519d1 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -55,7 +55,7 @@ if(DOWNLOAD_KOKKOS) elseif(EXTERNAL_KOKKOS) find_package(Kokkos 3.1) if(NOT Kokkos_FOUND) - message(FATAL_ERROR "KOKKOS library not found, help CMake to find it by setting KOKKOS_LIBRARY, or set DOWNLOAD_KOKKOS=ON to download it") + message(FATAL_ERROR "KOKKOS library version 3.1 or later not found, help CMake to find it by setting KOKKOS_LIBRARY, or set DOWNLOAD_KOKKOS=ON to download it") endif() target_link_libraries(lammps PRIVATE Kokkos::kokkos) else() From db4c6e4056027e6346e24b3829ef0f8895c868d6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 19:31:18 -0400 Subject: [PATCH 26/85] update include file conventions since we no longer require C++98 for LAMMPS core files --- doc/include-file-conventions.md | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/doc/include-file-conventions.md b/doc/include-file-conventions.md index 132f2ec4eb..1b8e79d71e 100644 --- a/doc/include-file-conventions.md +++ b/doc/include-file-conventions.md @@ -49,22 +49,15 @@ include files provided with LAMMPS are included with double quotes For headers declaring functions of the C-library, the corresponding C++ versions should be included (examples: `#include ` or -`#include `). However, these includes are limited to those defined -in the C++98 standard. Some files thus must use the older style until -the minimum C++ standard requirement of LAMMPS is lifted to C++11 or -even beyond (examples: `#include ` versus `#include ` -or `#include ` versus `#include `). +`#include ` instead of `#include ` or +`#include` ). ### C++ Standard Compliance -LAMMPS core files currently correspond to the C++98 standard. Files -requiring C++11 or later are only permitted in (optional) packages -and particularly packages that are not part of the list of commonly -used packages such as MOLECULE, KSPACE, MANYBODY, or RIGID. - -Also, LAMMPS uses the C-style stdio library for I/O instead of iostreams. -Since using both at the same time can cause problems, iostreams should -be avoided where possible. +LAMMPS core files use standard conforming C++ compatible with the +C++11 standard, unless explicitly noted. Also, LAMMPS uses the C-style +stdio library for I/O instead of iostreams. Since using both at the +same time can cause problems, iostreams should be avoided where possible. ### Lean Header Files From 5eccaecf9b59fba1fae6408a87a896b5a9ba6cac Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 19:31:57 -0400 Subject: [PATCH 27/85] use #include now that we require C++11 --- src/hashlittle.h | 2 +- src/info.cpp | 2 +- src/math_special.cpp | 2 +- src/timer.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/hashlittle.h b/src/hashlittle.h index 75380d366b..aafde922b7 100644 --- a/src/hashlittle.h +++ b/src/hashlittle.h @@ -6,7 +6,7 @@ #define LMP_HASHLITTLE_H #include -#include +#include namespace LAMMPS_NS { uint32_t hashlittle(const void *key, size_t length, uint32_t); diff --git a/src/info.cpp b/src/info.cpp index c02a0499fc..9cb6528f7d 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -53,7 +53,7 @@ #ifdef _WIN32 #define PSAPI_VERSION 1 #include -#include // requires C++-11 +#include #include #else #include diff --git a/src/math_special.cpp b/src/math_special.cpp index d4abc36f25..c8aa248910 100644 --- a/src/math_special.cpp +++ b/src/math_special.cpp @@ -1,6 +1,6 @@ #include "math_special.h" #include -#include // IWYU pragma: keep +#include // IWYU pragma: keep using namespace LAMMPS_NS; diff --git a/src/timer.cpp b/src/timer.cpp index 0a5e56ab35..41a0166a89 100644 --- a/src/timer.cpp +++ b/src/timer.cpp @@ -21,7 +21,7 @@ #ifdef _WIN32 #include -#include // requires C++-11 +#include #else #include #include From 0288bb4b6b2d0eec681ee428d57cd81b18e1d081 Mon Sep 17 00:00:00 2001 From: wverestek Date: Wed, 22 Apr 2020 13:27:10 +0200 Subject: [PATCH 28/85] small modification to fix bond/react to allow equal style variables as probability o On branch master Your branch is up to date with 'origin/master'. Changes to be committed: modified: doc/src/fix_bond_react.rst new file: examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability modified: src/USER-REACTION/fix_bond_react.cpp modified: src/USER-REACTION/fix_bond_react.h --- doc/src/fix_bond_react.rst | 6 +- .../in.large_nylon_melt_variable_probability | 55 +++++++++++++++++++ src/USER-REACTION/fix_bond_react.cpp | 35 +++++++++++- src/USER-REACTION/fix_bond_react.h | 1 + 4 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability diff --git a/doc/src/fix_bond_react.rst b/doc/src/fix_bond_react.rst index 8daa52a73d..3467932500 100644 --- a/doc/src/fix_bond_react.rst +++ b/doc/src/fix_bond_react.rst @@ -419,8 +419,10 @@ it occurs: The *prob* keyword can affect whether or not an eligible reaction actually occurs. The fraction setting must be a value between 0.0 and -1.0. A uniform random number between 0.0 and 1.0 is generated and the -eligible reaction only occurs if the random number is less than the +1.0 or can be an equal style variable. In the later case the variable +is evaluated during runtime and adjusted to be between 0.0 and 1.0 if +necessary. A uniform random number between 0.0 and 1.0 is generated and +the eligible reaction only occurs if the random number is less than the fraction. Up to N reactions are permitted to occur, as optionally specified by the *max_rxn* keyword. diff --git a/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability b/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability new file mode 100644 index 0000000000..f169f19504 --- /dev/null +++ b/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability @@ -0,0 +1,55 @@ +# 35,000 atom nylon melt example + +units real + +boundary p p p + +atom_style full + +kspace_style pppm 1.0e-4 + +pair_style lj/class2/coul/long 8.5 + +angle_style class2 + +bond_style class2 + +dihedral_style class2 + +improper_style class2 + +read_data large_nylon_melt.data.gz + +variable runsteps equal 200 +varaible prob equal step/v_runsteps + +velocity all create 800.0 4928459 dist gaussian + +molecule mol1 rxn1_stp1_unreacted.data_template +molecule mol2 rxn1_stp1_reacted.data_template +molecule mol3 rxn1_stp2_unreacted.data_template +molecule mol4 rxn1_stp2_reacted.data_template + +thermo 50 + +# dump 1 all xyz 100 test_vis.xyz + +fix myrxns all bond/react stabilization yes statted_grp .03 & + react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map & + react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map + +# stable at 800K +fix 1 statted_grp_REACT nvt temp 800 800 100 + +# in order to customize behavior of reacting atoms, +# you can use the internally created 'bond_react_MASTER_group', like so: +# fix 2 bond_react_MASTER_group temp/rescale 1 800 800 10 1 + +thermo_style custom step temp press density f_myrxns[1] f_myrxns[2] # cumulative reaction counts + +# restart 100 restart1 restart2 + +run 200 + +# write_restart restart_longrun +# write_data restart_longrun.data diff --git a/src/USER-REACTION/fix_bond_react.cpp b/src/USER-REACTION/fix_bond_react.cpp index 44e2bd172e..ae4c977f4d 100644 --- a/src/USER-REACTION/fix_bond_react.cpp +++ b/src/USER-REACTION/fix_bond_react.cpp @@ -39,6 +39,8 @@ Contributing Author: Jacob Gissinger (jacob.gissinger@colorado.edu) #include "math_extra.h" #include "memory.h" #include "error.h" +#include "input.h" +#include "variable.h" #include @@ -175,6 +177,8 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : memory->create(nghostlyskips,nreacts,"bond/react:nghostlyskips"); memory->create(seed,nreacts,"bond/react:seed"); memory->create(limit_duration,nreacts,"bond/react:limit_duration"); + memory->create(var_fraction_flag,nreacts,"bond/react:var_fraction_flag"); + memory->create(var_fraction_id,nreacts,"bond/react:var_fraction_id"); memory->create(stabilize_steps_flag,nreacts,"bond/react:stabilize_steps_flag"); memory->create(update_edges_flag,nreacts,"bond/react:update_edges_flag"); memory->create(constraints,1,MAXCONARGS,"bond/react:constraints"); @@ -193,6 +197,8 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : fraction[i] = 1; seed[i] = 12345; max_rxn[i] = INT_MAX; + var_fraction_flag[i] = 0; + var_fraction_id[i] = 0; stabilize_steps_flag[i] = 0; update_edges_flag[i] = 0; // set default limit duration to 60 timesteps @@ -251,7 +257,23 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[iarg],"prob") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix bond/react command: " "'prob' keyword has too few arguments"); - fraction[rxn] = force->numeric(FLERR,arg[iarg+1]); + // check if probability is a variable + if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) { + int n = strlen(&arg[iarg+1][2]) + 1; + char *fracstr = new char[n]; + strcpy(fracstr,&arg[iarg+1][2]); + var_fraction_id[rxn] = input->variable->find(fracstr); + if (var_fraction_id[rxn] < 0) + error->all(FLERR,"variable name for fix bond/react does not exist"); + if (! input->variable->equalstyle(var_fraction_id[rxn])) + error->all(FLERR,"variable in bond/react is not equal style"); + fraction[rxn] = input->variable->compute_equal(var_fraction_id[rxnID]); + var_fraction_flag[rxn] = 1.0; + delete [] fracstr; + } else { + // otherwise probability should be a number + fraction[rxn] = force->numeric(FLERR,arg[iarg+1]); + } seed[rxn] = force->inumeric(FLERR,arg[iarg+2]); if (fraction[rxn] < 0.0 || fraction[rxn] > 1.0) error->all(FLERR,"Illegal fix bond/react command: " @@ -447,6 +469,8 @@ FixBondReact::~FixBondReact() memory->destroy(nlocalskips); memory->destroy(nghostlyskips); memory->destroy(limit_duration); + memory->destroy(var_fraction_flag); + memory->destroy(var_fraction_id); memory->destroy(stabilize_steps_flag); memory->destroy(update_edges_flag); @@ -824,10 +848,17 @@ void FixBondReact::post_integrate() comm->reverse_comm_fix(this); } + // update reaction probability + if (var_fraction_flag[rxnID]) { + fraction[rxnID] = input->variable->compute_equal(var_fraction_id[rxnID]); + if (fraction[rxnID] < 0.0) fraction[rxnID] = 0.0; + if (fraction[rxnID] > 1.0) fraction[rxnID] = 1.0; + } + // each atom now knows its winning partner // for prob check, generate random value for each atom with a bond partner // forward comm of partner and random value, so ghosts have it - + if (fraction[rxnID] < 1.0) { for (int i = 0; i < nlocal; i++) if (partner[i]) probability[i] = random[rxnID]->uniform(); diff --git a/src/USER-REACTION/fix_bond_react.h b/src/USER-REACTION/fix_bond_react.h index 84cb9401f8..6f5ec9c7d7 100644 --- a/src/USER-REACTION/fix_bond_react.h +++ b/src/USER-REACTION/fix_bond_react.h @@ -64,6 +64,7 @@ class FixBondReact : public Fix { int custom_exclude_flag; int *stabilize_steps_flag; int *update_edges_flag; + int *var_fraction_flag, *var_fraction_id; int nconstraints; int narrhenius; double **constraints; From 48ab70f9eefe9748330e6888cc2ced70c6d92475 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 22 Apr 2020 07:30:06 -0400 Subject: [PATCH 29/85] avoid segfault when using compute_scalar() on the initial step and no scaling has yet been done. --- src/fix_heat.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/fix_heat.cpp b/src/fix_heat.cpp index 67d445df92..65ca47c46d 100644 --- a/src/fix_heat.cpp +++ b/src/fix_heat.cpp @@ -300,6 +300,7 @@ double FixHeat::compute_scalar() { double average_scale = scale; if (hstyle == ATOM) { + if (!vscale) return 1.0; double scale_sum = 0.0; int ncount = 0; int *mask = atom->mask; From 1751a27ff6c6fbcc19c15a97b9c7c952f7aaf975 Mon Sep 17 00:00:00 2001 From: wverestek Date: Wed, 22 Apr 2020 14:07:11 +0200 Subject: [PATCH 30/85] removing example script from nylon melt and adding to tiny nylon --- .../in.large_nylon_melt_variable_probability | 55 ----- ...tiny_nylon.stabilized_variable_probability | 56 +++++ .../log.22Apr20.tiny_nylon.unstabilized.g++ | 199 ++++++++++++++++++ 3 files changed, 255 insertions(+), 55 deletions(-) delete mode 100644 examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability create mode 100644 examples/USER/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability create mode 100644 examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ diff --git a/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability b/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability deleted file mode 100644 index f169f19504..0000000000 --- a/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability +++ /dev/null @@ -1,55 +0,0 @@ -# 35,000 atom nylon melt example - -units real - -boundary p p p - -atom_style full - -kspace_style pppm 1.0e-4 - -pair_style lj/class2/coul/long 8.5 - -angle_style class2 - -bond_style class2 - -dihedral_style class2 - -improper_style class2 - -read_data large_nylon_melt.data.gz - -variable runsteps equal 200 -varaible prob equal step/v_runsteps - -velocity all create 800.0 4928459 dist gaussian - -molecule mol1 rxn1_stp1_unreacted.data_template -molecule mol2 rxn1_stp1_reacted.data_template -molecule mol3 rxn1_stp2_unreacted.data_template -molecule mol4 rxn1_stp2_reacted.data_template - -thermo 50 - -# dump 1 all xyz 100 test_vis.xyz - -fix myrxns all bond/react stabilization yes statted_grp .03 & - react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map & - react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map - -# stable at 800K -fix 1 statted_grp_REACT nvt temp 800 800 100 - -# in order to customize behavior of reacting atoms, -# you can use the internally created 'bond_react_MASTER_group', like so: -# fix 2 bond_react_MASTER_group temp/rescale 1 800 800 10 1 - -thermo_style custom step temp press density f_myrxns[1] f_myrxns[2] # cumulative reaction counts - -# restart 100 restart1 restart2 - -run 200 - -# write_restart restart_longrun -# write_data restart_longrun.data diff --git a/examples/USER/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability b/examples/USER/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability new file mode 100644 index 0000000000..2c101ac77c --- /dev/null +++ b/examples/USER/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability @@ -0,0 +1,56 @@ +# two monomer nylon example +# reaction produces a condensed water molecule + +units real + +boundary p p p + +atom_style full + +kspace_style pppm 1.0e-4 + +pair_style lj/class2/coul/long 8.5 + +angle_style class2 + +bond_style class2 + +dihedral_style class2 + +improper_style class2 + +read_data tiny_nylon.data + +variable runsteps equal 1000 +variable prob1 equal step/v_runsteps*2 +variable prob2 equal (step/v_runsteps)>0.5 + +velocity all create 300.0 4928459 dist gaussian + +molecule mol1 rxn1_stp1_unreacted.data_template +molecule mol2 rxn1_stp1_reacted.data_template +molecule mol3 rxn1_stp2_unreacted.data_template +molecule mol4 rxn1_stp2_reacted.data_template + +thermo 50 + +# dump 1 all xyz 1 test_vis.xyz + +fix myrxns all bond/react stabilization yes statted_grp .03 & + react rxn1 all 1 0.0 5.0 mol1 mol2 rxn1_stp1_map prob v_prob1 1234 & + react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map prob v_prob2 1234 + +fix 1 statted_grp_REACT nvt temp 300 300 100 + +# optionally, you can customize behavior of reacting atoms, +# by using the internally-created 'bond_react_MASTER_group', like so: +fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1 + +thermo_style custom step temp press density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] + +# restart 100 restart1 restart2 + +run ${runsteps} + +# write_restart restart_longrun +# write_data restart_longrun.data diff --git a/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ new file mode 100644 index 0000000000..9fbd807c85 --- /dev/null +++ b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ @@ -0,0 +1,199 @@ +LAMMPS (15 Apr 2020) +# two monomer nylon example +# reaction produces a condensed water molecule + +units real + +boundary p p p + +atom_style full + +kspace_style pppm 1.0e-4 + +pair_style lj/class2/coul/long 8.5 + +angle_style class2 + +bond_style class2 + +dihedral_style class2 + +improper_style class2 + +read_data tiny_nylon.data + orthogonal box = (-25 -25 -25) to (25 25 25) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 44 atoms + reading velocities ... + 44 velocities + scanning bonds ... + 9 = max bonds/atom + scanning angles ... + 21 = max angles/atom + scanning dihedrals ... + 29 = max dihedrals/atom + scanning impropers ... + 29 = max impropers/atom + reading bonds ... + 42 bonds + reading angles ... + 74 angles + reading dihedrals ... + 100 dihedrals + reading impropers ... + 44 impropers + 4 = max # of 1-2 neighbors + 6 = max # of 1-3 neighbors + 12 = max # of 1-4 neighbors + 41 = max # of special neighbors + special bonds CPU = 0.000278722 secs + read_data CPU = 0.0146239 secs + +variable runsteps equal 1000 +variable prob1 equal step/v_runsteps*2 +variable prob2 equal (step/v_runsteps)>0.5 + +velocity all create 300.0 4928459 dist gaussian + +molecule mol1 rxn1_stp1_unreacted.data_template +Read molecule template mol1: + 1 molecules + 18 atoms with max type 8 + 16 bonds with max type 14 + 25 angles with max type 28 + 23 dihedrals with max type 36 + 14 impropers with max type 11 +molecule mol2 rxn1_stp1_reacted.data_template +Read molecule template mol2: + 1 molecules + 18 atoms with max type 9 + 17 bonds with max type 13 + 31 angles with max type 27 + 39 dihedrals with max type 33 + 20 impropers with max type 1 +molecule mol3 rxn1_stp2_unreacted.data_template +Read molecule template mol3: + 1 molecules + 15 atoms with max type 9 + 14 bonds with max type 13 + 25 angles with max type 27 + 30 dihedrals with max type 33 + 16 impropers with max type 1 +molecule mol4 rxn1_stp2_reacted.data_template +Read molecule template mol4: + 1 molecules + 15 atoms with max type 11 + 13 bonds with max type 15 + 19 angles with max type 29 + 16 dihedrals with max type 32 + 10 impropers with max type 13 + +thermo 50 + +dump 1 all xyz 1 test_vis.xyz + +fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 5.0 mol1 mol2 rxn1_stp1_map prob v_prob1 1234 react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map prob v_prob2 1234 +WARNING: Bond/react: Atom affected by reaction rxn1 too close to template edge (../fix_bond_react.cpp:2052) +WARNING: Bond/react: Atom affected by reaction rxn2 too close to template edge (../fix_bond_react.cpp:2052) +dynamic group bond_react_MASTER_group defined +dynamic group statted_grp_REACT defined + +fix 1 statted_grp_REACT nvt temp 300 300 100 + +# optionally, you can customize behavior of reacting atoms, +# by using the internally-created 'bond_react_MASTER_group', like so: +fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1 + +thermo_style custom step temp press density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] + +# restart 100 restart1 restart2 + +run ${runsteps} +run 1000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (../kspace.cpp:332) + G vector (1/distance) = 0.0534597 + grid = 2 2 2 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0402256 + estimated relative force accuracy = 0.000121138 + using double precision KISS FFT + 3d grid and FFT values/proc = 343 8 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.5 + ghost atom cutoff = 10.5 + binsize = 5.25, bins = 10 10 10 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) pair lj/class2/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard + (2) fix bond/react, occasional, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +WARNING: Inconsistent image flags (../domain.cpp:812) +Per MPI rank memory allocation (min/avg/max) = 34.78 | 34.78 | 34.78 Mbytes +Step Temp Press Density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] + 0 300 346.78165 0.0034851739 0 0 0 0 + 50 262.63913 -492.10749 0.0034851739 0.1 0 1 0 + 100 766.52962 -29.714349 0.0034851739 0.2 0 1 0 + 150 503.86837 50.220304 0.0034851739 0.3 0 1 0 + 200 456.51295 12.312892 0.0034851739 0.4 0 1 0 + 250 391.54928 9.2335844 0.0034851739 0.5 0 1 0 + 300 336.6988 -47.193937 0.0034851739 0.6 0 1 0 + 350 254.06985 -9.2867898 0.0034851739 0.7 0 1 0 + 400 259.41098 -25.657321 0.0034851739 0.8 0 1 0 + 450 258.10364 22.5086 0.0034851739 0.9 0 1 0 + 500 272.13412 -6.5391448 0.0034851739 1 0 1 0 + 550 202.75504 54.658731 0.0034851739 1.1 1 1 1 + 600 344.79887 23.798478 0.0034851739 1.2 1 1 1 + 650 328.44488 -29.908484 0.0034851739 1.3 1 1 1 + 700 280.13593 -8.3223255 0.0034851739 1.4 1 1 1 + 750 300.67624 1.0632669 0.0034851739 1.5 1 1 1 + 800 376.64234 12.488392 0.0034851739 1.6 1 1 1 + 850 321.07642 19.814074 0.0034851739 1.7 1 1 1 + 900 332.23751 30.814079 0.0034851739 1.8 1 1 1 + 950 311.14029 5.7853136 0.0034851739 1.9 1 1 1 + 1000 253.14634 -37.560642 0.0034851739 2 1 1 1 +Loop time of 0.580684 on 1 procs for 1000 steps with 44 atoms + +Performance: 148.790 ns/day, 0.161 hours/ns, 1722.106 timesteps/s +95.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.090707 | 0.090707 | 0.090707 | 0.0 | 15.62 +Bond | 0.18541 | 0.18541 | 0.18541 | 0.0 | 31.93 +Kspace | 0.065715 | 0.065715 | 0.065715 | 0.0 | 11.32 +Neigh | 0.085003 | 0.085003 | 0.085003 | 0.0 | 14.64 +Comm | 0.0068229 | 0.0068229 | 0.0068229 | 0.0 | 1.17 +Output | 0.096583 | 0.096583 | 0.096583 | 0.0 | 16.63 +Modify | 0.047377 | 0.047377 | 0.047377 | 0.0 | 8.16 +Other | | 0.00307 | | | 0.53 + +Nlocal: 44 ave 44 max 44 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 3 ave 3 max 3 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 722 ave 722 max 722 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 722 +Ave neighs/atom = 16.4091 +Ave special neighs/atom = 9.77273 +Neighbor list builds = 1000 +Dangerous builds = 0 + +# write_restart restart_longrun +# write_data restart_longrun.data + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:00 From 34d73a3c67075f837b928d4a9e59308ebb1a1f49 Mon Sep 17 00:00:00 2001 From: wverestek <46591944+wverestek@users.noreply.github.com> Date: Wed, 22 Apr 2020 14:10:43 +0200 Subject: [PATCH 31/85] wrong script. --- .../in.large_nylon_melt_variable_probability | 55 ------------------- 1 file changed, 55 deletions(-) delete mode 100644 examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability diff --git a/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability b/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability deleted file mode 100644 index f169f19504..0000000000 --- a/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability +++ /dev/null @@ -1,55 +0,0 @@ -# 35,000 atom nylon melt example - -units real - -boundary p p p - -atom_style full - -kspace_style pppm 1.0e-4 - -pair_style lj/class2/coul/long 8.5 - -angle_style class2 - -bond_style class2 - -dihedral_style class2 - -improper_style class2 - -read_data large_nylon_melt.data.gz - -variable runsteps equal 200 -varaible prob equal step/v_runsteps - -velocity all create 800.0 4928459 dist gaussian - -molecule mol1 rxn1_stp1_unreacted.data_template -molecule mol2 rxn1_stp1_reacted.data_template -molecule mol3 rxn1_stp2_unreacted.data_template -molecule mol4 rxn1_stp2_reacted.data_template - -thermo 50 - -# dump 1 all xyz 100 test_vis.xyz - -fix myrxns all bond/react stabilization yes statted_grp .03 & - react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map & - react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map - -# stable at 800K -fix 1 statted_grp_REACT nvt temp 800 800 100 - -# in order to customize behavior of reacting atoms, -# you can use the internally created 'bond_react_MASTER_group', like so: -# fix 2 bond_react_MASTER_group temp/rescale 1 800 800 10 1 - -thermo_style custom step temp press density f_myrxns[1] f_myrxns[2] # cumulative reaction counts - -# restart 100 restart1 restart2 - -run 200 - -# write_restart restart_longrun -# write_data restart_longrun.data From 73bf1874c5f8f284da7658c06b4d40460395e02b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 22 Apr 2020 08:12:56 -0400 Subject: [PATCH 32/85] update code owner entry for fix bond/react --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d44b3dfb4d..87f3dd1f22 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -45,7 +45,7 @@ src/GPU/pair_vashishta_gpu.* @andeplane src/KOKKOS/pair_vashishta_kokkos.* @andeplane src/MANYBODY/pair_vashishta_table.* @andeplane src/MANYBODY/pair_atm.* @sergeylishchuk -src/USER-MISC/fix_bond_react.* @jrgissing +src/USER-REACTION/fix_bond_react.* @jrgissing src/USER-MISC/*_grem.* @dstelter92 src/USER-MISC/compute_stress_mop*.* @RomainVermorel From fc10e885b20888bec0077ab9a0391f7f3d014d74 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 22 Apr 2020 08:13:27 -0400 Subject: [PATCH 33/85] make description of eflux as a variable less convoluted --- doc/src/fix_heat.rst | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/doc/src/fix_heat.rst b/doc/src/fix_heat.rst index 82a2b6e7f8..5bb6402d46 100644 --- a/doc/src/fix_heat.rst +++ b/doc/src/fix_heat.rst @@ -47,16 +47,22 @@ and the specified geometric :doc:`region ` in order to have energy added or subtracted to it. If not specified, then the atoms in the group are affected wherever they may move to. -Heat addition/subtraction is performed every N timesteps. The *eflux* -parameter can be specified as a numeric constant or as a variable (see -below). If it is a numeric constant or equal-style variable which -evaluates to a scalar value, then the *eflux* determines the change in -aggregate energy of the entire group of atoms per unit time, e.g. in -eV/psec for :doc:`metal units `. In this case it is an -"extensive" quantity, meaning its magnitude should be scaled with the -number of atoms in the group. Note that since *eflux* has per-time -units (i.e. it is a flux), this means that a larger value of N will -add/subtract a larger amount of energy each time the fix is invoked. +Heat addition/subtraction is performed every N timesteps. + +The *eflux* parameter can be specified as a numeric constant or as an +equal- or atom-style :doc:`variable `. If the value is a +variable, it should be specified as v_name, where *name* is the variable +name. In this case, the variable will be evaluated each timestep, and +its current value(s) used to determine the flux. + +If *eflux* is a numeric constant or equal-style variable which evaluates +to a scalar value, then *eflux* determines the change in aggregate energy +of the entire group of atoms per unit time, e.g. in eV/psec for +:doc:`metal units `. In this case it is an "extensive" quantity, +meaning its magnitude should be scaled with the number of atoms in the +group. Note that since *eflux* also has per-time units (i.e. it is a +flux), this means that a larger value of N will add/subtract a larger +amount of energy each time the fix is invoked. .. note:: @@ -71,12 +77,6 @@ the energy flux for a single atom, again in units of energy per unit time. In this case, each value is an "intensive" quantity, which need not be scaled with the number of atoms in the group. -As mentioned above, the *eflux* parameter can be specified as an -equal-style or atom_style :doc:`variable `. If the value is a -variable, it should be specified as v_name, where name is the variable -name. In this case, the variable will be evaluated each timestep, and -its value(s) used to determine the flux. - Equal-style variables can specify formulas with various mathematical functions, and include :doc:`thermo_style ` command keywords for the simulation box parameters and timestep and elapsed From 623f03e3225a01f1cee996addee51e9364ea6be4 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 22 Apr 2020 14:21:34 -0600 Subject: [PATCH 34/85] cmake: add support for latte super-build --- cmake/Modules/Packages/LATTE.cmake | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index 4ce8888f37..d6eca1bbbd 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -1,4 +1,11 @@ enable_language(Fortran) + +# using lammps in a super-build setting +if(TARGET LATTE::latte) + target_link_libraries(lammps PRIVATE LATTE::latte) + return() +endif() + find_package(LATTE) if(LATTE_FOUND) set(DOWNLOAD_LATTE_DEFAULT OFF) From 68dd6d0f19b669c29b60ebcc4fd069f8e8cd5d33 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 23 Apr 2020 09:20:38 -0600 Subject: [PATCH 35/85] cmake: move kim-api detection to cmake config --- cmake/LAMMPSConfig.cmake.in | 4 ++-- cmake/Modules/Packages/KIM.cmake | 18 ++++++++---------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/cmake/LAMMPSConfig.cmake.in b/cmake/LAMMPSConfig.cmake.in index 7cd782b3b8..969bd6e929 100644 --- a/cmake/LAMMPSConfig.cmake.in +++ b/cmake/LAMMPSConfig.cmake.in @@ -20,8 +20,8 @@ if(NOT @BUILD_SHARED_LIBS@) find_dependency(ZLIB REQUIRED) endif() if(@PKG_KIM@) - find_dependency(PkgConfig REQUIRED) - pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=@KIM-API_MIN_VERSION@) + find_package(KIM-API @KIM-API_MIN_VERSION@ CONFIG REQUIRED) + add_kim_api_imported_library() if(@CURL_FOUND@) find_dependency(CURL REQUIRED) endif() diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index b4e1fb3502..2a9cb739f7 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -14,13 +14,11 @@ if(CURL_FOUND) target_compile_definitions(lammps PRIVATE -DLMP_NO_SSL_CHECK) endif() endif() -find_package(PkgConfig QUIET) -set(DOWNLOAD_KIM_DEFAULT ON) -if(PKG_CONFIG_FOUND) - pkg_check_modules(KIM-API QUIET libkim-api>=${KIM-API_MIN_VERSION}) - if(KIM-API_FOUND) - set(DOWNLOAD_KIM_DEFAULT OFF) - endif() +find_package(KIM-API ${KIM-API_MIN_VERSION} CONFIG) +if(KIM-API_FOUND) + set(DOWNLOAD_KIM_DEFAULT OFF) +else() + set(DOWNLOAD_KIM_DEFAULT ON) endif() option(DOWNLOAD_KIM "Download KIM-API from OpenKIM instead of using an already installed one" ${DOWNLOAD_KIM_DEFAULT}) if(DOWNLOAD_KIM) @@ -55,7 +53,7 @@ if(DOWNLOAD_KIM) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() else() - find_package(PkgConfig REQUIRED) - pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=${KIM-API_MIN_VERSION}) - target_link_libraries(lammps PRIVATE PkgConfig::KIM-API) + find_package(KIM-API ${KIM-API_MIN_VERSION} CONFIG REQUIRED) + add_kim_api_imported_library() + target_link_libraries(lammps PRIVATE kim-api) endif() From 5a9cc9e38056472cfa192ca24ab60ca3a9d7b37f Mon Sep 17 00:00:00 2001 From: wverestek Date: Fri, 24 Apr 2020 09:35:32 +0200 Subject: [PATCH 36/85] updated log files --- .../log.22Apr20.tiny_nylon.unstabilized.g++.1 | 201 ++++++++++++++++++ .../log.22Apr20.tiny_nylon.unstabilized.g++.4 | 201 ++++++++++++++++++ 2 files changed, 402 insertions(+) create mode 100644 examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.1 create mode 100644 examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.4 diff --git a/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.1 b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.1 new file mode 100644 index 0000000000..16e4deef51 --- /dev/null +++ b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.1 @@ -0,0 +1,201 @@ +LAMMPS (15 Apr 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# two monomer nylon example +# reaction produces a condensed water molecule + +units real + +boundary p p p + +atom_style full + +kspace_style pppm 1.0e-4 + +pair_style lj/class2/coul/long 8.5 + +angle_style class2 + +bond_style class2 + +dihedral_style class2 + +improper_style class2 + +read_data tiny_nylon.data + orthogonal box = (-25 -25 -25) to (25 25 25) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 44 atoms + reading velocities ... + 44 velocities + scanning bonds ... + 9 = max bonds/atom + scanning angles ... + 21 = max angles/atom + scanning dihedrals ... + 29 = max dihedrals/atom + scanning impropers ... + 29 = max impropers/atom + reading bonds ... + 42 bonds + reading angles ... + 74 angles + reading dihedrals ... + 100 dihedrals + reading impropers ... + 44 impropers + 4 = max # of 1-2 neighbors + 6 = max # of 1-3 neighbors + 12 = max # of 1-4 neighbors + 41 = max # of special neighbors + special bonds CPU = 0.000385045 secs + read_data CPU = 0.013443 secs + +variable runsteps equal 1000 +variable prob1 equal step/v_runsteps*2 +variable prob2 equal (step/v_runsteps)>0.5 + +velocity all create 300.0 4928459 dist gaussian + +molecule mol1 rxn1_stp1_unreacted.data_template +Read molecule template mol1: + 1 molecules + 18 atoms with max type 8 + 16 bonds with max type 14 + 25 angles with max type 28 + 23 dihedrals with max type 36 + 14 impropers with max type 11 +molecule mol2 rxn1_stp1_reacted.data_template +Read molecule template mol2: + 1 molecules + 18 atoms with max type 9 + 17 bonds with max type 13 + 31 angles with max type 27 + 39 dihedrals with max type 33 + 20 impropers with max type 1 +molecule mol3 rxn1_stp2_unreacted.data_template +Read molecule template mol3: + 1 molecules + 15 atoms with max type 9 + 14 bonds with max type 13 + 25 angles with max type 27 + 30 dihedrals with max type 33 + 16 impropers with max type 1 +molecule mol4 rxn1_stp2_reacted.data_template +Read molecule template mol4: + 1 molecules + 15 atoms with max type 11 + 13 bonds with max type 15 + 19 angles with max type 29 + 16 dihedrals with max type 32 + 10 impropers with max type 13 + +thermo 50 + +# dump 1 all xyz 1 test_vis.xyz + +fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 5.0 mol1 mol2 rxn1_stp1_map prob v_prob1 1234 react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map prob v_prob2 1234 +WARNING: Bond/react: Atom affected by reaction rxn1 too close to template edge (src/USER-REACTION/fix_bond_react.cpp:2051) +WARNING: Bond/react: Atom affected by reaction rxn2 too close to template edge (src/USER-REACTION/fix_bond_react.cpp:2051) +dynamic group bond_react_MASTER_group defined +dynamic group statted_grp_REACT defined + +fix 1 statted_grp_REACT nvt temp 300 300 100 + +# optionally, you can customize behavior of reacting atoms, +# by using the internally-created 'bond_react_MASTER_group', like so: +fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1 + +thermo_style custom step temp press density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] + +# restart 100 restart1 restart2 + +run ${runsteps} +run 1000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:332) + G vector (1/distance) = 0.0534597 + grid = 2 2 2 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0402256 + estimated relative force accuracy = 0.000121138 + using double precision FFTW3 + 3d grid and FFT values/proc = 343 8 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.5 + ghost atom cutoff = 10.5 + binsize = 5.25, bins = 10 10 10 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) pair lj/class2/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard + (2) fix bond/react, occasional, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +WARNING: Inconsistent image flags (src/domain.cpp:812) +Per MPI rank memory allocation (min/avg/max) = 33.78 | 33.78 | 33.78 Mbytes +Step Temp Press Density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] + 0 300 346.78165 0.0034851739 0 0 0 0 + 50 262.63913 -492.10749 0.0034851739 0.1 0 1 0 + 100 766.52962 -29.714349 0.0034851739 0.2 0 1 0 + 150 503.86837 50.220304 0.0034851739 0.3 0 1 0 + 200 456.51295 12.312892 0.0034851739 0.4 0 1 0 + 250 391.54928 9.2335844 0.0034851739 0.5 0 1 0 + 300 336.6988 -47.193937 0.0034851739 0.6 0 1 0 + 350 254.06985 -9.2867898 0.0034851739 0.7 0 1 0 + 400 259.41098 -25.657321 0.0034851739 0.8 0 1 0 + 450 258.10364 22.5086 0.0034851739 0.9 0 1 0 + 500 272.13412 -6.5391448 0.0034851739 1 0 1 0 + 550 202.75504 54.658731 0.0034851739 1.1 1 1 1 + 600 344.79887 23.798478 0.0034851739 1.2 1 1 1 + 650 328.44488 -29.908484 0.0034851739 1.3 1 1 1 + 700 280.13593 -8.3223255 0.0034851739 1.4 1 1 1 + 750 300.67624 1.0632669 0.0034851739 1.5 1 1 1 + 800 376.64234 12.488392 0.0034851739 1.6 1 1 1 + 850 321.07642 19.814074 0.0034851739 1.7 1 1 1 + 900 332.23751 30.814079 0.0034851739 1.8 1 1 1 + 950 311.14029 5.7853136 0.0034851739 1.9 1 1 1 + 1000 253.14634 -37.560642 0.0034851739 2 1 1 1 +Loop time of 0.379454 on 1 procs for 1000 steps with 44 atoms + +Performance: 227.696 ns/day, 0.105 hours/ns, 2635.368 timesteps/s +99.6% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.069723 | 0.069723 | 0.069723 | 0.0 | 18.37 +Bond | 0.14802 | 0.14802 | 0.14802 | 0.0 | 39.01 +Kspace | 0.044252 | 0.044252 | 0.044252 | 0.0 | 11.66 +Neigh | 0.072359 | 0.072359 | 0.072359 | 0.0 | 19.07 +Comm | 0.0044748 | 0.0044748 | 0.0044748 | 0.0 | 1.18 +Output | 0.0022775 | 0.0022775 | 0.0022775 | 0.0 | 0.60 +Modify | 0.036509 | 0.036509 | 0.036509 | 0.0 | 9.62 +Other | | 0.00184 | | | 0.48 + +Nlocal: 44 ave 44 max 44 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 3 ave 3 max 3 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 722 ave 722 max 722 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 722 +Ave neighs/atom = 16.4091 +Ave special neighs/atom = 9.77273 +Neighbor list builds = 1000 +Dangerous builds = 0 + +# write_restart restart_longrun +# write_data restart_longrun.data + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:00 diff --git a/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.4 b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.4 new file mode 100644 index 0000000000..527d71ce87 --- /dev/null +++ b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.4 @@ -0,0 +1,201 @@ +LAMMPS (15 Apr 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# two monomer nylon example +# reaction produces a condensed water molecule + +units real + +boundary p p p + +atom_style full + +kspace_style pppm 1.0e-4 + +pair_style lj/class2/coul/long 8.5 + +angle_style class2 + +bond_style class2 + +dihedral_style class2 + +improper_style class2 + +read_data tiny_nylon.data + orthogonal box = (-25 -25 -25) to (25 25 25) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 44 atoms + reading velocities ... + 44 velocities + scanning bonds ... + 9 = max bonds/atom + scanning angles ... + 21 = max angles/atom + scanning dihedrals ... + 29 = max dihedrals/atom + scanning impropers ... + 29 = max impropers/atom + reading bonds ... + 42 bonds + reading angles ... + 74 angles + reading dihedrals ... + 100 dihedrals + reading impropers ... + 44 impropers + 4 = max # of 1-2 neighbors + 6 = max # of 1-3 neighbors + 12 = max # of 1-4 neighbors + 41 = max # of special neighbors + special bonds CPU = 0.000431282 secs + read_data CPU = 0.0129571 secs + +variable runsteps equal 1000 +variable prob1 equal step/v_runsteps*2 +variable prob2 equal (step/v_runsteps)>0.5 + +velocity all create 300.0 4928459 dist gaussian + +molecule mol1 rxn1_stp1_unreacted.data_template +Read molecule template mol1: + 1 molecules + 18 atoms with max type 8 + 16 bonds with max type 14 + 25 angles with max type 28 + 23 dihedrals with max type 36 + 14 impropers with max type 11 +molecule mol2 rxn1_stp1_reacted.data_template +Read molecule template mol2: + 1 molecules + 18 atoms with max type 9 + 17 bonds with max type 13 + 31 angles with max type 27 + 39 dihedrals with max type 33 + 20 impropers with max type 1 +molecule mol3 rxn1_stp2_unreacted.data_template +Read molecule template mol3: + 1 molecules + 15 atoms with max type 9 + 14 bonds with max type 13 + 25 angles with max type 27 + 30 dihedrals with max type 33 + 16 impropers with max type 1 +molecule mol4 rxn1_stp2_reacted.data_template +Read molecule template mol4: + 1 molecules + 15 atoms with max type 11 + 13 bonds with max type 15 + 19 angles with max type 29 + 16 dihedrals with max type 32 + 10 impropers with max type 13 + +thermo 50 + +# dump 1 all xyz 1 test_vis.xyz + +fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 5.0 mol1 mol2 rxn1_stp1_map prob v_prob1 1234 react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map prob v_prob2 1234 +WARNING: Bond/react: Atom affected by reaction rxn1 too close to template edge (src/USER-REACTION/fix_bond_react.cpp:2051) +WARNING: Bond/react: Atom affected by reaction rxn2 too close to template edge (src/USER-REACTION/fix_bond_react.cpp:2051) +dynamic group bond_react_MASTER_group defined +dynamic group statted_grp_REACT defined + +fix 1 statted_grp_REACT nvt temp 300 300 100 + +# optionally, you can customize behavior of reacting atoms, +# by using the internally-created 'bond_react_MASTER_group', like so: +fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1 + +thermo_style custom step temp press density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] + +# restart 100 restart1 restart2 + +run ${runsteps} +run 1000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:332) + G vector (1/distance) = 0.0534597 + grid = 2 2 2 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0402256 + estimated relative force accuracy = 0.000121138 + using double precision FFTW3 + 3d grid and FFT values/proc = 252 2 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.5 + ghost atom cutoff = 10.5 + binsize = 5.25, bins = 10 10 10 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) pair lj/class2/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard + (2) fix bond/react, occasional, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +WARNING: Inconsistent image flags (src/domain.cpp:812) +Per MPI rank memory allocation (min/avg/max) = 33.66 | 33.88 | 34.43 Mbytes +Step Temp Press Density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] + 0 300 346.78165 0.0034851739 0 0 0 0 + 50 266.5092 -90.813802 0.0034851739 0.1 0 1 0 + 100 559.41271 -53.23688 0.0034851739 0.2 0 1 0 + 150 489.90516 31.555817 0.0034851739 0.3 0 1 0 + 200 326.18391 7.7889992 0.0034851739 0.4 0 1 0 + 250 339.78203 2.3919541 0.0034851739 0.5 0 1 0 + 300 370.90263 -32.01673 0.0034851739 0.6 0 1 0 + 350 294.07547 -5.4019813 0.0034851739 0.7 0 1 0 + 400 287.76477 12.254133 0.0034851739 0.8 0 1 0 + 450 293.36482 66.372956 0.0034851739 0.9 0 1 0 + 500 246.84496 26.132317 0.0034851739 1 0 1 0 + 550 253.08778 -15.350262 0.0034851739 1.1 1 1 1 + 600 358.83641 25.007371 0.0034851739 1.2 1 1 1 + 650 320.51492 -32.34823 0.0034851739 1.3 1 1 1 + 700 310.87976 -8.2306669 0.0034851739 1.4 1 1 1 + 750 307.54142 12.025818 0.0034851739 1.5 1 1 1 + 800 272.51724 -22.92823 0.0034851739 1.6 1 1 1 + 850 268.66181 10.069534 0.0034851739 1.7 1 1 1 + 900 265.5531 -10.471377 0.0034851739 1.8 1 1 1 + 950 259.43086 9.4546712 0.0034851739 1.9 1 1 1 + 1000 247.14622 20.250308 0.0034851739 2 1 1 1 +Loop time of 0.357762 on 4 procs for 1000 steps with 44 atoms + +Performance: 241.502 ns/day, 0.099 hours/ns, 2795.157 timesteps/s +99.0% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.0003917 | 0.015545 | 0.033317 | 11.9 | 4.35 +Bond | 0.0010131 | 0.030153 | 0.076975 | 18.2 | 8.43 +Kspace | 0.092857 | 0.1462 | 0.18688 | 10.7 | 40.87 +Neigh | 0.043786 | 0.044014 | 0.044189 | 0.1 | 12.30 +Comm | 0.03636 | 0.038345 | 0.040538 | 0.8 | 10.72 +Output | 0.00091578 | 0.0012541 | 0.0020923 | 1.4 | 0.35 +Modify | 0.075379 | 0.080791 | 0.086052 | 1.8 | 22.58 +Other | | 0.00146 | | | 0.41 + +Nlocal: 11 ave 32 max 0 min +Histogram: 2 0 1 0 0 0 0 0 0 1 +Nghost: 40 ave 51 max 19 min +Histogram: 1 0 0 0 0 0 0 1 0 2 +Neighs: 191 ave 529 max 0 min +Histogram: 2 0 0 0 1 0 0 0 0 1 + +Total # of neighbors = 764 +Ave neighs/atom = 17.3636 +Ave special neighs/atom = 9.77273 +Neighbor list builds = 1000 +Dangerous builds = 0 + +# write_restart restart_longrun +# write_data restart_longrun.data + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:00 From 7a366de0a9b50541568d1b27868af5e67d1fc96a Mon Sep 17 00:00:00 2001 From: wverestek <46591944+wverestek@users.noreply.github.com> Date: Fri, 24 Apr 2020 09:39:11 +0200 Subject: [PATCH 37/85] Delete log.22Apr20.tiny_nylon.unstabilized.g++ --- .../log.22Apr20.tiny_nylon.unstabilized.g++ | 199 ------------------ 1 file changed, 199 deletions(-) delete mode 100644 examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ diff --git a/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ deleted file mode 100644 index 9fbd807c85..0000000000 --- a/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ +++ /dev/null @@ -1,199 +0,0 @@ -LAMMPS (15 Apr 2020) -# two monomer nylon example -# reaction produces a condensed water molecule - -units real - -boundary p p p - -atom_style full - -kspace_style pppm 1.0e-4 - -pair_style lj/class2/coul/long 8.5 - -angle_style class2 - -bond_style class2 - -dihedral_style class2 - -improper_style class2 - -read_data tiny_nylon.data - orthogonal box = (-25 -25 -25) to (25 25 25) - 1 by 1 by 1 MPI processor grid - reading atoms ... - 44 atoms - reading velocities ... - 44 velocities - scanning bonds ... - 9 = max bonds/atom - scanning angles ... - 21 = max angles/atom - scanning dihedrals ... - 29 = max dihedrals/atom - scanning impropers ... - 29 = max impropers/atom - reading bonds ... - 42 bonds - reading angles ... - 74 angles - reading dihedrals ... - 100 dihedrals - reading impropers ... - 44 impropers - 4 = max # of 1-2 neighbors - 6 = max # of 1-3 neighbors - 12 = max # of 1-4 neighbors - 41 = max # of special neighbors - special bonds CPU = 0.000278722 secs - read_data CPU = 0.0146239 secs - -variable runsteps equal 1000 -variable prob1 equal step/v_runsteps*2 -variable prob2 equal (step/v_runsteps)>0.5 - -velocity all create 300.0 4928459 dist gaussian - -molecule mol1 rxn1_stp1_unreacted.data_template -Read molecule template mol1: - 1 molecules - 18 atoms with max type 8 - 16 bonds with max type 14 - 25 angles with max type 28 - 23 dihedrals with max type 36 - 14 impropers with max type 11 -molecule mol2 rxn1_stp1_reacted.data_template -Read molecule template mol2: - 1 molecules - 18 atoms with max type 9 - 17 bonds with max type 13 - 31 angles with max type 27 - 39 dihedrals with max type 33 - 20 impropers with max type 1 -molecule mol3 rxn1_stp2_unreacted.data_template -Read molecule template mol3: - 1 molecules - 15 atoms with max type 9 - 14 bonds with max type 13 - 25 angles with max type 27 - 30 dihedrals with max type 33 - 16 impropers with max type 1 -molecule mol4 rxn1_stp2_reacted.data_template -Read molecule template mol4: - 1 molecules - 15 atoms with max type 11 - 13 bonds with max type 15 - 19 angles with max type 29 - 16 dihedrals with max type 32 - 10 impropers with max type 13 - -thermo 50 - -dump 1 all xyz 1 test_vis.xyz - -fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 5.0 mol1 mol2 rxn1_stp1_map prob v_prob1 1234 react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map prob v_prob2 1234 -WARNING: Bond/react: Atom affected by reaction rxn1 too close to template edge (../fix_bond_react.cpp:2052) -WARNING: Bond/react: Atom affected by reaction rxn2 too close to template edge (../fix_bond_react.cpp:2052) -dynamic group bond_react_MASTER_group defined -dynamic group statted_grp_REACT defined - -fix 1 statted_grp_REACT nvt temp 300 300 100 - -# optionally, you can customize behavior of reacting atoms, -# by using the internally-created 'bond_react_MASTER_group', like so: -fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1 - -thermo_style custom step temp press density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] - -# restart 100 restart1 restart2 - -run ${runsteps} -run 1000 -PPPM initialization ... - using 12-bit tables for long-range coulomb (../kspace.cpp:332) - G vector (1/distance) = 0.0534597 - grid = 2 2 2 - stencil order = 5 - estimated absolute RMS force accuracy = 0.0402256 - estimated relative force accuracy = 0.000121138 - using double precision KISS FFT - 3d grid and FFT values/proc = 343 8 -Neighbor list info ... - update every 1 steps, delay 10 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 10.5 - ghost atom cutoff = 10.5 - binsize = 5.25, bins = 10 10 10 - 2 neighbor lists, perpetual/occasional/extra = 1 1 0 - (1) pair lj/class2/coul/long, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/3d/newton - bin: standard - (2) fix bond/react, occasional, copy from (1) - attributes: half, newton on - pair build: copy - stencil: none - bin: none -WARNING: Inconsistent image flags (../domain.cpp:812) -Per MPI rank memory allocation (min/avg/max) = 34.78 | 34.78 | 34.78 Mbytes -Step Temp Press Density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] - 0 300 346.78165 0.0034851739 0 0 0 0 - 50 262.63913 -492.10749 0.0034851739 0.1 0 1 0 - 100 766.52962 -29.714349 0.0034851739 0.2 0 1 0 - 150 503.86837 50.220304 0.0034851739 0.3 0 1 0 - 200 456.51295 12.312892 0.0034851739 0.4 0 1 0 - 250 391.54928 9.2335844 0.0034851739 0.5 0 1 0 - 300 336.6988 -47.193937 0.0034851739 0.6 0 1 0 - 350 254.06985 -9.2867898 0.0034851739 0.7 0 1 0 - 400 259.41098 -25.657321 0.0034851739 0.8 0 1 0 - 450 258.10364 22.5086 0.0034851739 0.9 0 1 0 - 500 272.13412 -6.5391448 0.0034851739 1 0 1 0 - 550 202.75504 54.658731 0.0034851739 1.1 1 1 1 - 600 344.79887 23.798478 0.0034851739 1.2 1 1 1 - 650 328.44488 -29.908484 0.0034851739 1.3 1 1 1 - 700 280.13593 -8.3223255 0.0034851739 1.4 1 1 1 - 750 300.67624 1.0632669 0.0034851739 1.5 1 1 1 - 800 376.64234 12.488392 0.0034851739 1.6 1 1 1 - 850 321.07642 19.814074 0.0034851739 1.7 1 1 1 - 900 332.23751 30.814079 0.0034851739 1.8 1 1 1 - 950 311.14029 5.7853136 0.0034851739 1.9 1 1 1 - 1000 253.14634 -37.560642 0.0034851739 2 1 1 1 -Loop time of 0.580684 on 1 procs for 1000 steps with 44 atoms - -Performance: 148.790 ns/day, 0.161 hours/ns, 1722.106 timesteps/s -95.0% CPU use with 1 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.090707 | 0.090707 | 0.090707 | 0.0 | 15.62 -Bond | 0.18541 | 0.18541 | 0.18541 | 0.0 | 31.93 -Kspace | 0.065715 | 0.065715 | 0.065715 | 0.0 | 11.32 -Neigh | 0.085003 | 0.085003 | 0.085003 | 0.0 | 14.64 -Comm | 0.0068229 | 0.0068229 | 0.0068229 | 0.0 | 1.17 -Output | 0.096583 | 0.096583 | 0.096583 | 0.0 | 16.63 -Modify | 0.047377 | 0.047377 | 0.047377 | 0.0 | 8.16 -Other | | 0.00307 | | | 0.53 - -Nlocal: 44 ave 44 max 44 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 3 ave 3 max 3 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 722 ave 722 max 722 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 722 -Ave neighs/atom = 16.4091 -Ave special neighs/atom = 9.77273 -Neighbor list builds = 1000 -Dangerous builds = 0 - -# write_restart restart_longrun -# write_data restart_longrun.data - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:00 From 47b06cf541c1671ffeeadfac1a55475debd94c57 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 24 Apr 2020 09:51:13 -0600 Subject: [PATCH 38/85] github templates: turn comments in real comments --- .github/ISSUE_TEMPLATE/bug_report.md | 12 ++++++------ .github/ISSUE_TEMPLATE/feature_request.md | 6 +++--- .github/ISSUE_TEMPLATE/generic.md | 6 +++--- .github/PULL_REQUEST_TEMPLATE.md | 14 +++++++------- .github/PULL_REQUEST_TEMPLATE/bug_fix.md | 14 +++++++------- .../maintenance_refactoring.md | 10 +++++----- .github/PULL_REQUEST_TEMPLATE/new_feature.md | 16 ++++++++-------- .../PULL_REQUEST_TEMPLATE/update_enhancement.md | 12 ++++++------ 8 files changed, 45 insertions(+), 45 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 91b7e2bf48..0d1d3b0364 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -9,24 +9,24 @@ assignees: '' **Summary** -_Please provide a clear and concise description of what the bug is._ + **LAMMPS Version and Platform** -_Please specify precisely which LAMMPS version this issue was detected with (the first line of the output) and what platform (operating system and its version, hardware) you are running on. If possible, test with the most recent LAMMPS patch version_ + **Expected Behavior** -_Describe the expected behavior. Quote from the LAMMPS manual where needed, or explain why the expected behavior is meaningful, especially when it differs from the manual_ + **Actual Behavior** -_Describe the actual behavior, how it differs from the expected behavior, and how this can be observed. Try to be specific and do **not** use vague terms like "doesn't work" or "wrong result". Do not assume that the person reading this has any experience with or knowledge of your specific area of research._ + **Steps to Reproduce** -_Describe the steps required to (quickly) reproduce the issue. You can attach (small) files to the section below or add URLs where to download an archive with all necessary files. Please try to create an input set that is as minimal and small as possible and reproduces the bug as quickly as possible. **NOTE:** the less effort and time it takes to reproduce your reported bug, the more likely it becomes, that somebody will look into it and fix the problem._ + **Further Information, Files, and Links** -_Put any additional information here, attach relevant text or image files and URLs to external sites, e.g. relevant publications_ + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index a3a70c0d5a..0334e086fc 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -9,12 +9,12 @@ assignees: '' **Summary** -_Please provide a brief and concise description of the suggested feature or change_ + **Detailed Description** -_Please explain how you would like to see LAMMPS enhanced, what feature(s) you are looking for, what specific problems this will solve. If possible, provide references to relevant background information like publications or web pages, and whether you are planning to implement the enhancement yourself or would like to participate in the implementation. If applicable add a reference to an existing bug report or issue that this will address._ + **Further Information, Files, and Links** -_Put any additional information here, attach relevant text or image files and URLs to external sites, e.g. relevant publications_ + diff --git a/.github/ISSUE_TEMPLATE/generic.md b/.github/ISSUE_TEMPLATE/generic.md index 15d2763919..9e5d908bbc 100644 --- a/.github/ISSUE_TEMPLATE/generic.md +++ b/.github/ISSUE_TEMPLATE/generic.md @@ -9,13 +9,13 @@ assignees: '' **Summary** -_Please provide a clear and concise description of what this issue report is about._ + **LAMMPS Version and Platform** -_Please specify precisely which LAMMPS version this issue was detected with (the first line of the output) and what platform (operating system and its version, hardware) you are running on. If possible, test with the most recent LAMMPS patch version_ + **Details** -_Please explain the issue in detail here_ + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 9e43aa0244..6ef945d8d4 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,14 +1,14 @@ **Summary** -_Briefly describe the new feature(s), enhancement(s), or bugfix(es) included in this pull request._ + **Related Issues** -_If this addresses an open GitHub issue for this project, please mention the issue number here, and describe the relation. Use the phrases `fixes #221` or `closes #135`, when you want an issue to be automatically closed when the pull request is merged_ + **Author(s)** -_Please state name and affiliation of the author or authors that should be credited with the changes in this pull request. If this pull request adds new files to the distribution, please also provide a suitable "long-lived" e-mail address (ideally something that can outlive your institution's e-mail, in case you change jobs) for the *corresponding* author, i.e. the person the LAMMPS developers can contact directly with questions and requests related to maintenance and support of this contributed code._ + **Licensing** @@ -16,15 +16,15 @@ By submitting this pull request, I agree, that my contribution will be included **Backward Compatibility** -_Please state whether any changes in the pull request will break backward compatibility for inputs, and - if yes - explain what has been changed and why_ + **Implementation Notes** -_Provide any relevant details about how the changes are implemented, how correctness was verified, how other features - if any - in LAMMPS are affected_ + **Post Submission Checklist** -_Please check the fields below as they are completed **after** the pull request has been submitted. Delete lines that don't apply_ + - [ ] The feature or features in this pull request is complete - [ ] Licensing information is complete @@ -39,6 +39,6 @@ _Please check the fields below as they are completed **after** the pull request **Further Information, Files, and Links** -_Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. DOIs or webpages)_ + diff --git a/.github/PULL_REQUEST_TEMPLATE/bug_fix.md b/.github/PULL_REQUEST_TEMPLATE/bug_fix.md index cea04c6873..a5a0b8c489 100644 --- a/.github/PULL_REQUEST_TEMPLATE/bug_fix.md +++ b/.github/PULL_REQUEST_TEMPLATE/bug_fix.md @@ -9,15 +9,15 @@ assignees: '' **Summary** -_Briefly describe the bug or bugs, that are eliminated by this pull request._ + **Related Issue(s)** -_If this request addresses or is related to an existing (open) GitHub issue, e.g. a bug report, mention the issue number number here following a pound sign (aka hashmark), e.g.`#222`._ + **Author(s)** -_Please state name and affiliation of the author or authors that should be credited with the changes in this pull request_ + **Licensing** @@ -25,18 +25,18 @@ By submitting this pull request I implicitly accept, that my submission is subje **Backward Compatibility** -_Please state whether any changes in the pull request break backward compatibility for inputs, and - if yes - explain what has been changed and why_ + **Detailed Description** -_Provide any relevant details about how the fixed bug can be reproduced, how the changes are implemented, how correctness was verified, how other features - if any - in LAMMPS are affected_ + ## Post Submission Checklist -_Please check the fields below as they are completed *after* the pull request is submitted_ + - [ ] The code in this pull request is complete - [ ] The source code follows the LAMMPS formatting guidelines ## Further Information, Files, and Links -_Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. to download input decks for testing)_ + diff --git a/.github/PULL_REQUEST_TEMPLATE/maintenance_refactoring.md b/.github/PULL_REQUEST_TEMPLATE/maintenance_refactoring.md index b3599cb36d..b7bf40a1e8 100644 --- a/.github/PULL_REQUEST_TEMPLATE/maintenance_refactoring.md +++ b/.github/PULL_REQUEST_TEMPLATE/maintenance_refactoring.md @@ -9,15 +9,15 @@ assignees: '' **Summary** -_Briefly describe the included changes._ + **Related Issue(s)** -_If this request addresses or is related to an existing (open) GitHub issue, e.g. a bug report, mention the issue number number here following a pound sign (aka hashmark), e.g.`#222`. + **Licensing** @@ -25,11 +25,11 @@ By submitting this pull request I implicitly accept, that my submission is subje **Detailed Description** -_Provide any relevant details about the included changes._ + ## Post Submission Checklist -_Please check the fields below as they are completed *after* the pull request is submitted_ + - [ ] The pull request is complete - [ ] The source code follows the LAMMPS formatting guidelines diff --git a/.github/PULL_REQUEST_TEMPLATE/new_feature.md b/.github/PULL_REQUEST_TEMPLATE/new_feature.md index e9d16a0fc7..563a9be4aa 100644 --- a/.github/PULL_REQUEST_TEMPLATE/new_feature.md +++ b/.github/PULL_REQUEST_TEMPLATE/new_feature.md @@ -9,34 +9,34 @@ assignees: '' **Summary** -_Briefly describe the new feature(s) included in this pull request._ + **Related Issues** -_If this addresses an existing (open) GitHub issue, e.g. a feature request, mention the issue number here following a pound sign (aka hashmark), e.g. `#331`._ + **Author(s)** -_Please state name and affiliation of the author or authors that should be credited with the features added in this pull request. Please provide a suitable "long-lived" e-mail address (e.g. from gmail, yahoo, outlook, etc.) for the *corresponding* author, i.e. the person the LAMMPS developers can contact directly with questions and requests related to maintenance and support of this code. now and in the future_ + **Licensing** -_Please add *yes* or *no* to the following two statements (please contact @lammps/core if you have questions about this)_ + My contribution may be licensed as GPL v2 (default LAMMPS license): My contribution may be licensed as LGPL (for use as a library with proprietary software): **Backward Compatibility** -_Please state if any of the changes in this pull request will affect backward compatibility for inputs, and - if yes - explain what has been changed and why_ + **Implementation Notes** -_Provide any relevant details about how the new features are implemented, how correctness was verified, what platforms (OS, compiler, MPI, hardware, number of processors, accelerator(s)) it was tested on_ + ## Post Submission Checklist -_Please check the fields below as they are completed *after* the pull request has been submitted_ + - [ ] The feature or features in this pull request is complete - [ ] Licensing information is complete @@ -51,6 +51,6 @@ _Please check the fields below as they are completed *after* the pull request ha ## Further Information, Files, and Links -_Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. DOIs or webpages)_ + diff --git a/.github/PULL_REQUEST_TEMPLATE/update_enhancement.md b/.github/PULL_REQUEST_TEMPLATE/update_enhancement.md index 52ef91e6c1..9edfb587c0 100644 --- a/.github/PULL_REQUEST_TEMPLATE/update_enhancement.md +++ b/.github/PULL_REQUEST_TEMPLATE/update_enhancement.md @@ -9,11 +9,11 @@ assignees: '' **Summary** -_Briefly describe what kind of updates or enhancements for a package or feature are included. If you are not the original author of the package or feature, please mention, whether your contribution was created independently or in collaboration/cooperation with the original author._ + **Author(s)** -_Please state name and affiliation of the author or authors that should be credited with the changes in this pull request_ + **Licensing** @@ -21,15 +21,15 @@ By submitting this pull request I implicitly accept, that my submission is subje **Backward Compatibility** -_Please state whether any changes in the pull request break backward compatibility for inputs, and - if yes - explain what has been changed and why_ + **Implementation Notes** -_Provide any relevant details about how the changes are implemented, how correctness was verified, how other features - if any - in LAMMPS are affected_ + **Post Submission Checklist** -_Please check the fields below as they are completed_ + - [ ] The feature or features in this pull request is complete - [ ] Suitable updates to the existing docs are included - [ ] One or more example input decks are included @@ -37,6 +37,6 @@ _Please check the fields below as they are completed_ **Further Information, Files, and Links** -_Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. DOIs or webpages)_ + From cb2a9e4329e5e13fd169e6d9607c32e7db234a9c Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 24 Apr 2020 09:59:29 -0600 Subject: [PATCH 39/85] Clear sharedsize for flat method --- src/KOKKOS/npair_kokkos.cpp | 19 ++++++++++++++----- src/KOKKOS/npair_kokkos.h | 25 +++++++++++-------------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/KOKKOS/npair_kokkos.cpp b/src/KOKKOS/npair_kokkos.cpp index 0de8d5173d..cbea210693 100644 --- a/src/KOKKOS/npair_kokkos.cpp +++ b/src/KOKKOS/npair_kokkos.cpp @@ -219,12 +219,12 @@ void NPairKokkos::build(NeighList *list_) #endif if (GHOST) { - NPairKokkosBuildFunctorGhost f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); + NPairKokkosBuildFunctorGhost f(data); Kokkos::parallel_for(nall, f); } else { if (newton_pair) { if (SIZE) { - NPairKokkosBuildFunctorSize f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); + NPairKokkosBuildFunctorSize f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); #ifdef KOKKOS_ENABLE_CUDA if (ExecutionSpaceFromDevice::space == Device) { int team_size = atoms_per_bin*factor; @@ -232,7 +232,10 @@ void NPairKokkos::build(NeighList *list_) if (team_size <= team_size_max) { Kokkos::TeamPolicy config((mbins+factor-1)/factor,team_size); Kokkos::parallel_for(config, f); - } else Kokkos::parallel_for(nall, f); // fall back to flat method + } else { // fall back to flat method + f.sharedsize = 0; + Kokkos::parallel_for(nall, f); + } } else Kokkos::parallel_for(nall, f); #else @@ -247,7 +250,10 @@ void NPairKokkos::build(NeighList *list_) if (team_size <= team_size_max) { Kokkos::TeamPolicy config((mbins+factor-1)/factor,team_size); Kokkos::parallel_for(config, f); - } else Kokkos::parallel_for(nall, f); // fall back to flat method + } else { // fall back to flat method + f.sharedsize = 0; + Kokkos::parallel_for(nall, f); + } } else Kokkos::parallel_for(nall, f); #else @@ -264,7 +270,10 @@ void NPairKokkos::build(NeighList *list_) if (team_size <= team_size_max) { Kokkos::TeamPolicy config((mbins+factor-1)/factor,team_size); Kokkos::parallel_for(config, f); - } else Kokkos::parallel_for(nall, f); // fall back to flat method + } else { // fall back to flat method + f.sharedsize = 0; + Kokkos::parallel_for(nall, f); + } } else Kokkos::parallel_for(nall, f); #else diff --git a/src/KOKKOS/npair_kokkos.h b/src/KOKKOS/npair_kokkos.h index c02c174b57..6ed1debf7c 100644 --- a/src/KOKKOS/npair_kokkos.h +++ b/src/KOKKOS/npair_kokkos.h @@ -379,11 +379,11 @@ struct NPairKokkosBuildFunctor { typedef DeviceType device_type; const NeighborKokkosExecute c; - const size_t sharedsize; + size_t sharedsize; NPairKokkosBuildFunctor(const NeighborKokkosExecute &_c, - const size_t _sharedsize):c(_c), - sharedsize(_sharedsize) {}; + size_t _sharedsize):c(_c), + sharedsize(_sharedsize) {} KOKKOS_INLINE_FUNCTION void operator() (const int & i) const { @@ -404,11 +404,11 @@ struct NPairKokkosBuildFunctor { typedef LMPHostType device_type; const NeighborKokkosExecute c; - const size_t sharedsize; + size_t sharedsize; NPairKokkosBuildFunctor(const NeighborKokkosExecute &_c, - const size_t _sharedsize):c(_c), - sharedsize(_sharedsize) {}; + size_t _sharedsize):c(_c), + sharedsize(_sharedsize) {} KOKKOS_INLINE_FUNCTION void operator() (const int & i) const { @@ -423,11 +423,8 @@ struct NPairKokkosBuildFunctorGhost { typedef DeviceType device_type; const NeighborKokkosExecute c; - const size_t sharedsize; - NPairKokkosBuildFunctorGhost(const NeighborKokkosExecute &_c, - const size_t _sharedsize):c(_c), - sharedsize(_sharedsize) {}; + NPairKokkosBuildFunctorGhost(const NeighborKokkosExecute &_c):c(_c) {} KOKKOS_INLINE_FUNCTION void operator() (const int & i) const { @@ -440,10 +437,10 @@ struct NPairKokkosBuildFunctorSize { typedef DeviceType device_type; const NeighborKokkosExecute c; - const size_t sharedsize; + size_t sharedsize; NPairKokkosBuildFunctorSize(const NeighborKokkosExecute &_c, - const size_t _sharedsize): c(_c), sharedsize(_sharedsize) {}; + size_t _sharedsize): c(_c), sharedsize(_sharedsize) {} KOKKOS_INLINE_FUNCTION void operator() (const int & i) const { @@ -464,10 +461,10 @@ struct NPairKokkosBuildFunctorSize { typedef LMPHostType device_type; const NeighborKokkosExecute c; - const size_t sharedsize; + size_t sharedsize; NPairKokkosBuildFunctorSize(const NeighborKokkosExecute &_c, - const size_t _sharedsize): c(_c), sharedsize(_sharedsize) {}; + size_t _sharedsize): c(_c), sharedsize(_sharedsize) {} KOKKOS_INLINE_FUNCTION void operator() (const int & i) const { From e114a8d15bedce7967346ebf9ce8deda063d3bf6 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 24 Apr 2020 10:14:31 -0600 Subject: [PATCH 40/85] Revert accidental change --- src/KOKKOS/npair_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/npair_kokkos.cpp b/src/KOKKOS/npair_kokkos.cpp index cbea210693..5a5bd6eb20 100644 --- a/src/KOKKOS/npair_kokkos.cpp +++ b/src/KOKKOS/npair_kokkos.cpp @@ -224,7 +224,7 @@ void NPairKokkos::build(NeighList *list_) } else { if (newton_pair) { if (SIZE) { - NPairKokkosBuildFunctorSize f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); + NPairKokkosBuildFunctorSize f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); #ifdef KOKKOS_ENABLE_CUDA if (ExecutionSpaceFromDevice::space == Device) { int team_size = atoms_per_bin*factor; From 4890c328d91c49de44c22a279ea6c8feb66b9966 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Apr 2020 13:21:38 -0400 Subject: [PATCH 41/85] add comment to trigger jenkins rerun --- cmake/Modules/Packages/KIM.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index 2a9cb739f7..06e513bc0a 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -1,3 +1,4 @@ +# CMake configuration for KIM package set(KIM-API_MIN_VERSION 2.1.3) find_package(CURL) if(CURL_FOUND) From 261b826cfc8a39913b74230b264665efa9717af5 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 24 Apr 2020 12:49:50 -0600 Subject: [PATCH 42/85] Remove Kokkos deprecated code --- src/KOKKOS/compute_orientorder_atom_kokkos.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp index dc1bca8afb..375d3fea71 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -91,10 +91,10 @@ void ComputeOrientOrderAtomKokkos::init() int irequest = neighbor->nrequest - 1; neighbor->requests[irequest]-> - kokkos_host = Kokkos::Impl::is_same::value && - !Kokkos::Impl::is_same::value; + kokkos_host = std::is_same::value && + std::is_same::value; neighbor->requests[irequest]-> - kokkos_device = Kokkos::Impl::is_same::value; + kokkos_device = std::is_same::value; } /* ---------------------------------------------------------------------- */ From 0a96a8c3a521329783d42164ee0700a5c1c4447b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Apr 2020 21:23:21 -0400 Subject: [PATCH 43/85] make check for running under hybrid/overlay compatible with suffix styles also improve error message --- src/USER-MISC/pair_drip.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/USER-MISC/pair_drip.cpp b/src/USER-MISC/pair_drip.cpp index 020216f503..bb28d056ac 100644 --- a/src/USER-MISC/pair_drip.cpp +++ b/src/USER-MISC/pair_drip.cpp @@ -33,6 +33,7 @@ #include "neigh_request.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -116,8 +117,8 @@ void PairDRIP::allocate() void PairDRIP::settings(int narg, char ** /* arg */) { if (narg != 0) error->all(FLERR,"Illegal pair_style command"); - if (strcmp(force->pair_style,"hybrid/overlay")!=0) - error->all(FLERR,"ERROR: requires hybrid/overlay pair_style"); + if (!utils::strmatch(force->pair_style,"^hybrid/overlay")) + error->all(FLERR,"Pair style drip must be used as sub-style with hybrid/overlay"); } /* ---------------------------------------------------------------------- From 1de3995598f46cde09fe6c4bfb5cb4a1f5cbe258 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Apr 2020 21:26:11 -0400 Subject: [PATCH 44/85] rename src/MAKE/MINE/... to src/MAKE/MINE/.gitignore to avoid penalizing people downloading LAMMPS via git on windows --- src/MAKE/MINE/... | 0 src/MAKE/MINE/.gitignore | 1 + 2 files changed, 1 insertion(+) delete mode 100644 src/MAKE/MINE/... create mode 100644 src/MAKE/MINE/.gitignore diff --git a/src/MAKE/MINE/... b/src/MAKE/MINE/... deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/MAKE/MINE/.gitignore b/src/MAKE/MINE/.gitignore new file mode 100644 index 0000000000..9c45e661e8 --- /dev/null +++ b/src/MAKE/MINE/.gitignore @@ -0,0 +1 @@ +/Makefile.* From bac681b9dcd879f576b6adbcc8e4c21d883990da Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 24 Apr 2020 20:14:30 -0600 Subject: [PATCH 45/85] cmake: fix linkage against external latte --- cmake/Modules/Packages/LATTE.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index 4ce8888f37..d6e893b025 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -35,5 +35,5 @@ else() if(NOT LATTE_FOUND) message(FATAL_ERROR "LATTE library not found, help CMake to find it by setting LATTE_LIBRARY, or set DOWNLOAD_LATTE=ON to download it") endif() - target_link_libraries(lammps PRIVATE LATTE::latte) + target_link_libraries(lammps PRIVATE LATTE::latte ${LAPACK_LIBRARIES}) endif() From 643ef2e2bcc382c7820c479fe389144ec08bee64 Mon Sep 17 00:00:00 2001 From: Jacob Gissinger Date: Fri, 24 Apr 2020 22:59:20 -0600 Subject: [PATCH 46/85] return of the data file --- .../nylon,6-6_melt/large_nylon_melt.data.gz | Bin 0 -> 3745227 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/USER/reaction/nylon,6-6_melt/large_nylon_melt.data.gz diff --git a/examples/USER/reaction/nylon,6-6_melt/large_nylon_melt.data.gz b/examples/USER/reaction/nylon,6-6_melt/large_nylon_melt.data.gz new file mode 100644 index 0000000000000000000000000000000000000000..c620b879a883817b8eb7abe4495e585ecacfaf02 GIT binary patch literal 3745227 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

    jvCN-1fci9jV*WTOxi}t5{v}* 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%0D<~qsLRr`ebA^2Yibe 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Ö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¬BsPA27@GIC})fb!o?l+LarB=%eBjVNS;W&QXkSbaH|5rAV{&}zv-K_11|x$ zL)nLRH7!<}SEd9x zGCUVqcBK3vU4VS;zs>pvevV1LYvaMJiC@)Fv$T{ax$|5tR!_l;iUpOqoxeq!8U)R+ z$SfsSE0rwo!Ai+{l1w*{<`Qt&5e3X0tsFtADK3^$T(nZ3cc$JS z=s-Dhp#iDj3l?Rl^#WR7DN!IMN`;FUXn7hXQ( z5j!O8lWn6A%|9XVNbk^owjFN~}o zppB$9fUM|yVf*YMe|D)FFlU@jUx6u)=@n^Oc@*j%V#0awP09~*jP&?XNohzGN+Y*q z1o(W?X+bj1%O5j*8bg%TM=ZTmjstr9Pq$NDFUE$lXibZMM+Qg$16fyuz1&SEQlw1% z36s`+9iivoK=1W8H1l|o52mLr0zx9Hg~NUPdLPdD)6_ATWZxdPMFc^bNNe z`Wd&0ka;CF#*)_c)haYNByX}*qUS@TM?=YC_CT0;ew4bx2_}u03*!`k)+vtRHmbQNR!rKcK>loyGq`5HLTM#(6q`b2HtcWe0R13;JNq)M%pa~jDr-Vn=6JN@F*gjk4 zoIU^oyT4OBITkbWU_3CB!=Z5|uQc(2Z&tq?$eM_7cD%WU->&BgEC`GJx&^>=PaKV| z3;Y4cVPF8)Ry~c!R)#(X{KJg$@|(wNfA{3Y447qJ1JN{}3>MV{`7!}*Y|dKAuxvFu zMdP!S&y!W2>{oUU5tBTFNlSIoN~34f7);2h-UaZRP_}f!5Jn#RVzVB;86^NW72U|( z{Vn3UNokSsGmEa22X+nULb5_@&hq_c?eJtkJMck3L(KxmBOFJ^rW6FDYH&boWeAOE z==Cz+TG$OQqo3`P3>xiX6f%u`rt1i;p&i?5e5N1}tq?Sl0RHIZgB_dw@D`C0rS)>*v&1NR^a`Db$!^>_gE|+f+LVt#KS>F#1J3-F&Ox0I?abWjzL0$ zwJ3lUZIo@X8p`3xCgn!N<#^2kes^EPYI+-9Fkrpi9#q#N!F+~XZa?_2DqNPm;SRPMDyBF4(w*17d>nxQ^ zq>HxrVX64<_@TH;e-+~IYKlV+qbjq_gW!A#>G8C%m1mHZLEmB(HR3U0&Eol^#7}p| zOA25>Lsm*qYF&r}@RpVM6!*N!@#$PdZkS(jSS>8u9kBiFvpe<;T_+V9Al2Ga?xc}5 zFeQcG#+V4LBoJ{w+1-j26$OC#j4OFnc68B<0x0dMB%IRpZc(#tc?W5pz#d7!rA`o} zgmDY6gc&`TDd^?+qE7+#0%DMI{N$>ZT$34>pL4KDw~9H24~xjR1tTUdW{`c}&P!DT z9W+zp`1nS0;h%=jXxwJi^_|w4OKu3d$poh(9_8n{YZlltZLjv}@6rZ8+c0yO=wcPY zXB^id_G75xAcYrYm*QLC$-Khxy&T!t>9i$G+$-1t)F!=Dvb@W}V?oT@4wp0f?5%?f zVG9Fmdt1efe1H}rMuoGYg}s@J>y63V7eYhk`5bO#HyS;8ZlE&9+&2l6goC84ZEZ_( zxlhn}bc2&9)lwK$vd{2x25l!WU;GYb&OKzE=3kZ6RIVS3=ShqiZE{UrQ1v%bE-`7gVRF2_s*X(e_ zmwOj;ba=tCcz8g|K}J+m++b?AwL(0-L)v7e>*V&QS;^ItoJLBf|SHrgKmouLugza1DjE_CXCa*D>KHQyj`IM)ry zk1+Oorlu%MnlWrBpPTGT2yGUe&kB#ak?G&2(VB{t&2~$g{P%8 zKEPJ_a@g^q?+Ni^E+6WLHki-C5Kt6B;L=0bGwvg^s^Nqq>LJ%M<`v&my;lbbfeq*!O~tEGHW?zdY;!2!Xg=}}`y!Vqs2 ziVy!|6gC2?ErfzRKk{EG9-0*JTDUc+l2Ea6rZJhp#11JSa_q1>bjC9B5n`t8GmU>} z`(v|{iKwjRO{7jo1Z&oe_fM@)kpTv-VvFY7n->J)2r6ePn49c+vJ3M<&Z3Ht91Ql@ z&U26}k5s1YgZ2%T0}<`irsI>tzQuDgdQTAh6tL}Nrz82L4TVWYm~a952XbV0t|jA# zoHYv14e%g#AET3G1+u9w9*W;MlTWG6S3z`S@6wI)j6vbBUDlM@vpO1r5hh2bIa$-I zqDNkx^0c**z8YEMFpIKW00>bW3hkc#N7{Z+-;80C%JlxMLOx zorKF?$`c@qnTQ#1gmGj_%gB5@NTf0( zp4ftW_^tVgefhIy719sT4DgJ}Zp#!U9$hgkz%rvfZcV)U7(=J0w(ARE?t7Y9a&k~5 z2aFG9b}d(#fi})!tSz_q`G&4Rn<$j=S?(-@*Ck;*aKT_i_{3l2xCw|jZ;nUwEXjHZ zkM8;4$fk|Y0Y9Vs z;DL}y0pCWo+$#?pL#+bF4=Opny>(fu%bs<7jsST2vtCI9Qik*jMw7;EUjY`nGlmw*r1$S~#~k+ZSRer{LcsW~$~X;OYV<50M-6_1 zhV%jPIi>H*Jd)ltyCdZRB)MiAY(eC)Nds;Fw5P+11`{ga*v+N%4bJD}3;Y?b!+^LU zLi&IvRxFZuy7bHu8~#d+Q&n_@{teFc6u=6@1v=6|v4>|U1t%a&urN67E@O)+k6nlz zhCYDeFQ;jo03~9NSBpx4`qQs*FjZ`{3TNh-W@fbKa0A5Vy`}#-<>zbMk_Bj{Kn*N7 zdE*4MwTc0hJ-k?^DHf)@`|xh9-;H^;&Q{w6@ihBH)vN8SmIDKGP}3uC8eSsg@NXIN;#YSsZ!ZF;vAR0sK?U2;KDPd12KUtY3$gNL)WRpN#5}toll^d zSQns0i(uDidy66013Sjzukaz*Xy<3BCp{@NfdD=PS3yFz*RllwI}Gr@;}r`h2QChl z2tY@GMlZ!$0gp)ZpkUY=>wc?Zrw2;TA_Dx55AY~WpgF(r<#_u5yc0w$Jj0w0{|L40 zgzTMD@?#de&$8TJ+m;@Stj3PA=V zx82RBwU`)z%%yYjB#`)b0Lep8Hw?$Rf~1l~97NL@>o!z}vknsChv;4e9WUiUG5B0_ ztb>z`C~ctJ=-40@>L_qek#E1ayL6g};q*gU4GMuo+4*$nqYh?D?9<}+P(lF*uLfX; zAI5{dhy&moWQWi)%HnWEXPg&F#ehTE>8$B<&T>5OMl7bl{@V6%%mYHFNCMMN zz_R^OU%Kpsz>C)OZPA}3Jvf?-OOb+@PXdV#-#~Fc~V7L<=H(v9)hea~cQ?>7WDkgf-&5P&;E*4{Lmt z0U$dr8YaZRad?ywHp<6&wP#mlP=1HiHLYoN3>!V{p5YT=YYG;=8< zAUMpPp9n+aB`L?MixKo_V266NVMc!iUcu0O<(2uPlshm^;#zm0A3Y(2ztLozxqj_H z&icl7)KH&7yQ9>{$;+-WZAw6S<(a_c>txHqDa8I&TRn<@0cOz+5@fgQDKhOJ1}L>N zS!%DqJa|6!IX?4s3@T1-1Zd#6vZ_tz@SlQ9D!C2_-r}-totqRNSq306e3fhK8JEvx z0mlLGL3@aNpcm|X*-k;{cs{*!WXWLY$SrW!fj{Y&M~s{qf&%ymFCi%jy;3+nZ6)-? zk#n$p%3>*(|Jjyj-P$P5(6}Ux+(bCxDohijQ7-1VMpBSB4tlX@nxl3Rnni zTz}M7eYt;7RHieJT(DT_URpyuXZ*lC@evO~P6$RM2GHqawaap6vTng%q%aEw4&gLe zd{v1X@E;#6pm6LFYYv#T@f%Xk(^@OtAl64tUk}f6qV#}q0zd2!Jt5rTJ6I}faXNjL z>&G^)qzES;Ph$_KexZPb+zoWsJbc44_EuvU34&Zc;x=a-Dy%_71!tG^y0h-_Uw}T5 zCLR!;xMxP?*f>`@jC*RC=K<0Sen3i(4ePe*uokJXOM?kwjLSwyNEQh^D#p_O=a8Q# z(M*D%^9782o*q{uQ<$Kct$KAnt0r)ESftC*M*YCnNM(OYw3F^&>`wc2CZ{~WZiQWs zUKUc#E~ zf9=e%mOvpe=%8f8#S&3$=L%)E|I|R8^wo;&#KNhv}6sm%~j7{7Idy2yzsU%X|Je-3RAIsu~f`Y6i zY`>4EDv@qbMdhS#%y=sOdF0iRC^M#yfSz67EK1puA)tMu=MI37h7ml?!oEqof(tk~ zABHA7vLFaodsx)C+=*2_^CJs}FjlMrG{Q6~JBqj;fVS8+P=wkcqx-sEqJ=Lwgxm)L zySws+1q!?-CjIiUqoZR#l469&u`Q28oA){`u|gw+DL?AkZeS6B1vQNQnDxBjV|Ib` z0}@*neKISC(U~8~%+ZwcOE}*FRs|I|dwaTgbNC>!PiS^{hmatFEym=wNSJZ(2dGfQ z{F!(r@e9F-E{$-EN+?zrzzFAmc$4 zHN#_2|5(Bj7n4j{Q+v3i8l*>1jP&EjzScaU*_mBK4T&Hx#&p%unq=lS=twTDOS+=+ zE0+n*=<@^9ABRn!K!0&RT2|PXt_&|x05JC3d?j@B4M_mmq;^Q&v!uvfB^`ZY&(%XbC?`*AyRNgaW-G}lLLmG)fKXT_T~te zHeQHGVTY8zZcOK51}AAOZZdvB%}0_}+DH@>E;rV+e&OJ^P@2Rk^6sTb&u;uwuZf6A z;vg$Y*ARSI16~Hu1=8e}lRnu1BGmQ|@FSZe@5x6Fhp{Lww~_jfyxyN37W{6=gQ@|yMSsopAJp#y@|pqcg*Gm&Z8ZhK1pzEAVZ9qAMLP)3LQXJ$bsY0 z=&TaH#}V1iNBKNjKg44_nkXFhlgmSM!-OLsREs^Zr``dIH5yBk%5WPG0c<|3#T1Kb zix*kLLqfro017hg>hfg6AfkuBK*@Ew0hF~j_^ZeezNQ-Wz>aj ztGvN%Go|mLJ_-c}Nu>3W0^mQFg~cn6_9HT(^C@iXE&;6HuqTQ!$9?D5bUM_?p40IM zNKsq@1leGGH0kHoHAu$2E24~uT2^3sz3-5A+942zkhB3bSG`=aU{ZvwO^Dt;(nECX z(QV^3*HHIUHV!)^(wy#0=_h@G^0*e#1ewTW&PVwdLQIy!Tc^UUpI|l5?qgu1hzrz$ z?sNd=00A_n4j64b7zk=I&4uuI*e>hR&o;{$ICq2DMv>W_xfC&%6??Yjg=^rJ!O2T@ zyD$s$?$8nrBPjX5b>Q3}N&ED;gdzlx4L0SJ(uO>ANBAGl%QFrcN7SJbDZY(Z zJ7DM->30x{{lexzk4t|&ru^lj&r^{WAVnh%k|0Mo${&?5+dv2uAh@&86#@%jW(8fW zf0QQbp-4*t!~k0@(s6V*4BDua)3LgHxhRlB7N*c*L*9$ecxp^!>A9dRnDWce0|*mi z3_M^*@OR6MzS2BEE_sBF|3ypwzma|-_(-!6UQYs7WdAg@a+$2bpO4=xp$-6!6XT&3Ek--K`j$SAKX7&IiCWOz}u;rt3GzyIjMC~0yfN=Sn zCU|iOGgCX%#!^C0~zY011m$#fOH;?El;a@a7d=KlSbPT z)t2+=xvE<2_Ako2(&6v}pa#h=#G7Yg-lQKd<>$7>$_p)+b3c8t3B|WF!lt+G)@g91 zQNF|wHM*X~l;#Dwx~v)Zi5i%Z6AlvCo>Cj;9;mA){&&bScS^CM-wJMk4+we0cSa0S zF#V=WAd`rO5tcPpwLe%TS(uYVMJ`g``c*!&m})|n+CQ3(S^4QRKxKq|GZEyWz#>@& zWq|(61Ilec1Owd+noFOxj!IXsqyvd+&Tz{d#R+iLJgdDWvbh0bKo%jp ziWt)N8FWm+-?D8&zAevVu;Oh6TqXEz-JKA05r-Gvad5R~8T( zMyWJNDgtmhe90}x#F4&rl|OpUKEY*C zn%F}rk;{)rOhrA8?bxwna&dk;`Y_Wu(>>J zd$d;{7ev&b8JJGMkntsT&YM+37hlGGt$He|nXq>;4iUk2Xf`-Y#<_O3M|QDIK$VlJ z1r+h#K24BzD$l_EKns&JsD~@$=@7|FKr7a*CFNAmftRLwY`gDi8b_c8zy9FI;-TGK z8H|ruQG7;?@gd_*^uxH)JCU=-50bPVk!BK5qkSl8+ed5@**65U>5O@;!3yvNxq0To zQ(Q<=zC=I4f8~c&P{0#w&AZQ2I}Rehw^!uocgs1+IBR<}U^gcmDQ=v$!vfY%k6OjV zFiO;uDwP`l9T<|xC6$K8*4>;qRsDA2WvoIIy-XB(Jt!dx7*+OlFnj&cT^q3cQQX4R z?^}4D>AkQ~B_(1{Qu0g7kowlL4U8?9!wnA?xCw~-aQWv~-FciHQS4+FwCRAIJXqhT zg2irTE8C_+Q(#ony#j{-I^^q&b+-M2p9Rnf@Z;-7K`S&vi-c%zWQju{tv_I>#)EHn0cDl=>s(j_1;g!a&EnWx#CLe>!9Xi@<=~0VL%56oL*@k|G=}^5k0H| z9!Yje4`)DhAmE}DJmaw)BYN6uxP*PA)JHriMsg2#x>b|Gf|2AE|B(Y^8o*Bnt7yU|H>V%z&`y=DBEW^!!+)*-5L2X9Jz{o^hg< z1apBMa7$%3)ClJb09^;vA>pEi^av6Fgrpme)=F-VxIgy-y?#*88X4Y6OTN?i#{zL!&vsH*HbeiD*tf6heaV|BmEjjg!t1-|AK^e-GG}`yz+D4oc z?Qv99KZ_+T_T#HrsiDav84VHYUX1Psu3L>Ude95wZ)2E%X6H5F==1Yrjm3UZ*DBlt zyd^P5Tf+iuC;$$Dl%iLntcXYBoWn~2t=%q#v9%g>o8!?QvgJtNynrsO)tJAd1CCx; zxg;dm2r|m1g%(iJ4kP+<+9P(bf4|8hzkmoz(Ef7=$?})}Fesfx~m{_h(~xXID0^bP`y(U*wQ5s3j#>{9Rq;_hR~NKL9?cGFC`y zQp~{s6D~!jqiKtet6qq;{iYJ@i^F zf{s3&H&F7Ksf>si`99p7v&ub+q;|OXiOiQ^(pw^iL`@s}c|*hQ_ibalPil35DyBmn zaM4DF3>}zoDdurttZb!oPkL5vB#B2!`YosTI48%4i6FL-YnL!`CdWXH1Ca{dc?y%V zM6@I`2y>CPV3KM%em8J0+0uLvqJ248{~0(m;LX6TnYohmh3a1fC(sYGz$)|H_j1@C z{nvkbg5o4x)zh@9Z>e5jI6!X6$d|@^UI#J3O^0xVU(|ZV{w_}rjCMy`=F%`-s2aDG z^)4-9pj^$&wTx?+6GQ~RfIbOXOEAZOUfCpl(BGR9ULkHMSSsG>$E8sz9qS?T)+M;8 zxZEJxB1&Raz%}!D?~}uK%Q8j-dCur3uOZQ&&b0}w!T#Z7q!X9-t0ga1P{Jw3Rwll$ zfz%Ju;A9$9)FrYo~0#zB|ai(D`99SjILdh$h2No1^wPB7QGlD*(D8Y4E43D zXB!B^A`6Q?KI-W2JC$(q6IYEYFSGG1h2_?sWSOo4QJIiE)-Ogh%`g&6ofkuIy~R2I z`z6Vgfz?o5U~5h*ZM`dMC5)7l6jkr2l>vZcKqlbDZ^d$t$YK0?Ch7`N^}0^LEKZ1s z9obnqLcqAYGm>cm9=IzartJy>&r0RL`ZHYN)Jm0(I@h?XTp6Sw_j5ISs9>&@267tq z1_qK7VGI21!SXX{<$z&DV|gTVR6yoQ~ zKBVNfTooP!A6(2HJQnkjh|x$n-ad4?;bCB*5ssNve^mes(dX|iX*C#N*@0&~&f3>f z{JF5x8T2Kh=lYo_>XP_SLvh{2twgjU;=i7MoizLmfimF*G#1K2nMlGE0vWrwP)oy- zba;&RSA$0R`A+ukqn7@wKd&?UmjTA$6>d?^vmQ%KVtX*VGvK~fW@D8|mQrQv_ z?xXTw`&o?+?5qNmrh(t`T%~WpfdM5WDNAQJFAPWoHr2{0yw93?hNp^6|1ykA*j*v6 z*NBgj^u_f(%lcy=z?Um2*F;#G>5BLEj`?Q4(#IS%y|Y9YRW<)+g3n3N5V-*F8sZ8= zu!rQnlFIv=pOM>7oP0oIOWCx14ZOzK;y24zQxGd6(r$^rt836)hIVBvbMT8 zV|Z;7CAWuQ(#ZN@$S|{Zn|N^R3`%HbL(o|Fd4)fLXD&tRa0u0{it#)6(_E)uz-MAE zu=$??zAY;h7a(}4++}Y7=m&r+Dr0S1m7V_Kv{`o5I8Sg3mPZ~CwVj8#vXDjb$_;WtVEek zRF&@Yjq*p96!+wAZ};X=T1N(JT)7)S_&i%WwSI^}yn>1}bi64!84+_(V+vZg zev4`!&_7wqiV)u4>4#rC}#+gS2LhO75bFv6a1>}AG`V@^yFR_6Bm>9Oa=A(DdJ=72rn&!}(k8taJNeSm30G@D z>;No%MB;pJOWG;N<`0|;iwdbS@x3$2@i(fPwsaE5no#>%j$r`(bnF?B0e@$bJ;!4e zAO(CZ*3m2sF7Jk?B^oCh0bjj^@ZXdr1v+dz|N%e-HF$lRD?|_1Kse;-RGTQ#>R&b;f-78;HEqQJxj9vP@D~BisxLePq!ykC) z3^E6q`hWwby7I}F%O?(VmLE@T@|eh629CRjEd^0R+OuoIXO$^-C>YqsrSB8lr zxBJBLfjbl2&gqWv6TOZpCH)XkiG@+;BA$-F5J?-NgO(Q9FSPDdT^uZ>QDyzU$z#tB zA{#{mWBKsl>n3wvY=G4;xjT}=0Wr}p+CRu#zZ#Mt_iVMFM-Ie068QFpdR)kLvJ;?9 z*q~2IY(45A5vz8j5}^OTO98A5wA!zMdSt#P#UKDu&+IUB4@}IP+hXPx$bvbj9Ht>z z)4rO3X+NJ0C3S+Ath|>O3Ke5*mjos@yf=5Gs2_=qKnDSJ=}`F4x#x5Hf)hlXM+VTc z^hbWCPzYqfmh;_H9gMM%JI`_mOSQk^GJWO$M)}oJ5REOUvp$^vk*#HNTqFWkKbih zGFASxXIei2A^7g3IUTxmO1??(w@0p})4E(eWq_!VcIE#%-Am^BY~ct@pkT84Nq{BP z?N*4C@N0o+gm70|MQc>!89_B_lJP!mAe{ARKg^eUDI{flwWsEL6C)UYznDAfdrwt zAa$BtTu&N|{6q*BZTbDK;U1k@?I(N-GANcqbb?0p&fvrj2kT$jTzOrj_^`@`x*#O? z0wzSYC+lIZ2haj94*Mz0Rn|s_DvGHxP=~nuupwXo20*KoUQU1ac>z{(v;8{SwhxOS zrw~MzJ_eVz#TAe~kPrF|8>e;y*ntZM>s@RoFBNTD{X;L*aw-JsC6H9tPERBxb_Bux z*`@lRMvE+DbVY?R_8xXRR*H6{APQp8pc(4|J7C?3^b`cokUU5#yQJ#{2g$GVHM6wS zHh!J}4As$EfHzf&ZxWd&;PP#W9rJ)^L{>mF+Ck{Ie`i>$CHV9IrQct!NJ|a#r_r4A zV!uU~bun~!Qi!`>SpE)aYG)DM(EWU6<(X;8DN&#)SuDSsgsH_9ERX_w5r+v)x8gko zU@Mxez`8EAze^4z{!RzHNPCY2fKq442aqWuP*HW;qBZsIOi@4n}RimcgoEsP50bn^%(p6p+0I~N^~ zS5|V&$s;rDB0PZ1DIEnwBt*kw;&|a`F{?ljNJC#h7VxjEB#U+24p2}KaD(1b@`P>t zRhI;MGh?b8t1E#HU?0f!g5-U_Nb1C6+si;IXkv=eA!BEIoAH$>1QLaw&WW;p9Q?tk+T!p;VUq2^v0>^y z*Re>E-;C*pebL!AU0W;5jtw;wkAdrPkmpjc{bL2;kd<&nbpl$rJ`lim+&dan1^P2( z`))aBTl^ zlvd-FEt{jU`n(`S+30#15p>P_;b4}Zj)3idj%9-A3CP)Fvi*BJOTKJZ7i^zf43sJ* zP}^`h5S9-UbSdUPN5B$=Ls()z7w?vIx9Y5I(;G9IaNLK}~=Ipi_~L{as)AtV(Q-cDv`S8A;( zrVkc69wv(tOO+)oiB4Jh7LuIkfdFX*B5-e!!dnFjST! zLWm+tqK3>Ut{E*RSpZgW3<0I^Mmk|!d#V*Xb05HAQQiz=jk+6fH=G^^BB}j;k@nJO zmLM#7YWlAB4^)R4AiokK0CqbY#xeq{>S#Qb8Q0h$0V4|?pIEZH^jYn=C2`nlD27xF zHG=1HRm@d3YM}PLSEJVh?`Gg7FmAB0ua=K3E(`Nm9id{5-(7J4BS>L9cyIPD^c z)CcYG+n`KgS-CP|aZzXjLGkLMLf@z{JQA$DvX2}v!ziB*cLum}w(VdF2fs$be^By( zamqA`SeY(d2mEgPHBc7-Kos+5pZp6nS&D8Ls{_DzXq`pmsK|gi-*e1q5V5HMK-E}WSu%(?KwbTG!0zDLEilV5i1R&ANm$&7D=KSBnsGm2z;@Hx2J(lI z+n16rrSiq;`~ytQa#xaK((RbM@dSPZ)pHE)N?CtgQ0+vK5Oi~E<(qLGmjk>CMYfWn zE?eRGSA4DBNlTPt-ER^bPi95@v6C$p{<s2Xu-?$!ZJ1g24dfB(0aDJG4juXc zbo<8s!`H=NPhNI`BfVZV2^N(gHhY&jS9sw&jwmPTyCA9wyErFTrNq_J&MmMXd$j2C z8-a$lyob5-_HIlYhhYO9tqQIK58d9M>$)>{wc?EU;luz7!xl-vN`Pu~nSV7ALjL^{ zGx-j#0vh5CFX}t80d`X-6=l^Y1tlnrM%=HBPfW~5F##YsQ(81Y9pfSivi~vhz}eS6 z(i)F~&c<#VIZX(mpS$yDA!b*ml@Z{J;LWr}rY0CMH?m)W3BVen7pBV=PjCjc)Avq# zW#~AX8jP4m~bnoV7P-8Jj zC}ym%XBjbY1v`b((OX|}t<(=2gY=DiBXgm|hdZYm4L{w9_2;~kZ!%;Hcz~KZ-Q4%i zu)taWEBz-}3)LUqy5*x`$r5nrhVaIi;v~D9mBS72kxe9{g0@(FQ^VPYN1RG1cqL-8 z0+48|jX|dhWi&2OMqVosfGuu+mtJgg3hR0_{JZ+^PljeW((K4S-4l{O{5cc@n5?y= zMWEo>m@Y%@Lz6CSQz83BI;;I^z=PW%4d4n(O9&0g1Y{7Hz6H#f%6-JdIkSBmu-4A~ z4eN%3c-Zx~x;f0)cn>Ly)ZiH%B9nAs;#RNUv8TY(IMCi!Z7DwK92R)FV zdl6urKyGu&`D_(tklp3;t6BU?rsy|LS#8-zdtc7iV)?Kbhm02aSjF)HVft#H5WI^O%fo!%qTW9W=CkaHJBhGo{a}{7^_<>F#=SR<*;7sdop8} z=~33-Vh1rCQ!Re@lA{@2nia@%S)jk zQL$78;Qqe2gp*YG>E(+sotTv%gee*cbCkI4N3db1wlsG}$5R$Hph#w4JKH=Qpt_#>tEH4jDsL47T0W&_Ew^@aq`U1=vl?lE zM&}NxKi^>`q<9I3z3a`!V!!B>Y`v%xz!`SfI1G+Tf4@-zu0RrHYoF1LfwMI~atP%h zhk&AVk$W!#-3OeAvlrHt*!$*yTsxvv@ou4HP;#5~ULM;nL5=qp-L%r_dnxM-x^pn%XhniOKkd?s@W?rX;e=KAsz{2Q<) zMcTAp1o-vG9OyYNGp=2HnO@Z}2>OguHzf#NW?4vFN0&H`zX0!V+^_kva5rzc$ zFqY)1La>YOEb>+>NoZ*IV5}$ne_Z$_d#Y}C3Jw0DX~2%WOeat&ZAI>TL_}+S1|?hy zloXK{_w;!zACgcqa^04w&7+}5sf!ME7BRfr#Q2c&B* z4dr+D<><6E#a$uUfp?L7RLJg$0w;0`SNacoL8?I91G#=yJ1cNv>&bW(SawnYiSaKY>Xrcy4&+e=N|XVh@$6E}yIHj+q?am?oD-W(}s$`GJsbXx73SsAl_ zY(`QQZe_-LEv!mABJ~DF5(lX?^XE z1);9S&yiL`_@&1;g`jgwM|la;+ksNCw!`=Eki$N2*(_?}afX)zD z*0Gn{b}HlVJxQD2t^qVAF{>N%K~Q6+Xg7F}QDAqSR>0a7i4v>$(g*51kCY*aAzKEA zSv4*pUT#!Gau^?o+vU&)WCAILumo=(g3?H*X9Kb++XAo$+1ucf;)Iu9+^$bJ8%t!{9AK{j4^Rkqa$Mz`$IS z)ysPej<90Ui|x72Rk+y&+LWq*&F$s;-NJ9YEToBHzdPnbOls;XrcjLplSPV``dC^8 z6CZGWPVCF_{Cu}?0K_xo3U-eoTuSfYPE_aLj)*15B`|m4{z4VMITbQYv{8ZiEH_UN z2R5N1okc5YI`)zi)g-(KU9gu0mzuIg!qot~!o0)pkCT&*#gUa4_y%ykT`2%jR#3BD zoyq%m2pApW>dow9kypLpRF9&cL8da41HwK!X1tK^14vGx_T&K2LS-o;Kq+mLVdy#j z18WojKtw-_oiY}N)%K*aWV~aiU)`MTEE{aw?cLQ1Zf4C9b^}eU%Qpb?Wd}4fcEDc) zh3s1z;huKb^^SWVK&Ewdul%kYD;!iW0sBj?`>D9en?>iE(sqk}EKnRRa@~q^tGH33 zIYL}Sk}$XprXLB5@zuUYT;WCsA}G&eH}^xnB< zWZw}8rub+J8o;z1&oo45M(f)iDMuU_@Eua@iST)LJ{0mJc-K_?jH8DUo}CbYU_Z(l z?>z$H;Yedc*nddqKpL`s*x+d*DjI1`dgB@=>fWF_*vIT|eRcTY=cyjnE0-oCv#0FJ zAc9gCRCCgNgi}%F1EfFXl)h&`_HbvA8wTewY4j6U*pj3R<0#Br5xid123oU3GlA0b1L4S1FG*cJ=qj6*|;ulkk;W ze2_k3c`4P}_}TwQNB|8pS(VxW;2v{MZ$fB?;g~u^_oIQ4D$*CCOP%*?w8S$GIHB;@ zFU8xJY*DA!$4sN9^}qugQ04`LD=&}mS?stSk#NKL!R}ImP;#-dD#8Z2v-5g7{Z<)X zfZ4sBLtbc@v$AeM`h(`Qt=WegSYt_1ndivi>#mq4BR^S`%jP|MVyDJM!!9$GpYt!m zE0m$m&!6=nLN)l5U>`zprovz83V|adK9yKmHi*EN3*$|8OX zn{--@+#tzAn;HFZf;MbKR2Le=#=1J?vQ9>Bnqg_LW80DC*hvHAZhOH_u=u9lmXB~W zr_^Zj2(CB;U3A)&9YVRikzSW}JCgXVyg(Qupnz?u=!?BTYquZ*M>M?eH4yAT6|p4A zX?|BbcVzHRv)GWSj*92wcCRwdL6`^C|CRkP@2jd18T@VR1^Wl%j7z8D%M@k+A)Gja zE+C%FvQ2ZN(2i_gSMLUZM%aZhV?B`^=~1Dq!fX(H`<;)7s2Aw502-UodAfiWeBbh+*v(TPsmQrlsU6Z^T zrGO&!ftVVdu_~D{S+&?Joq2ANgvP>|E=SeID4lfQBb0^d9wg!le(HXcD4ihEinmq4 zw6MQ>B-|LsLaGm7d{WYC&}p6IqCIE#Knnnm?}0<3M>)`yARff`hhx5RwuOii*Cn1q zw#KjpijMYTLwi%;lGb?B|B{6k`6UXeZlCeqpfN>)@)XD};mwrm<4ZH;a3Bb;^4AyG}R zSs-PS`(JS#0DF_PXL3{@+OYg~Xm;Ye^v+4>%bxi=sF4XGnSjJN?a+$pqCdt7vA#*g z9R+s#sP<(y^{IB&m_|+w5tYvU(duF|N<4^MCjjCei^7aGXxC%$OXdyVZz<-H=L<-B zph#@r*xNkd_YyGmp5a6+Nh-9SsdPe+gi+i`j<)~LFER=o3+)>k|8P+g$hab!Bkg=6 z;Am$Iv5OEBBlY?mw_~}1?;wb@hA&pXqw=5pmw_5pt~j<9#@09yEHJ{xOqJ3u_P`$; zpAJeYz+AYjCHjop62^qNSVMYaEJ?H^M?QvBF{DSVdlh;f7hohMWk z-q|Tj6$NH7Go)jg-g1>~wsM#Q)6ua=*ah5pm>G6AQ?Mm@Yoz;N{Q)*HaZCgwjabNh zOFe)Dw8AE`M&zNYjmpjHM!ul?16`dk+k>@tRw`Ar71&VmZ(AJqUF$8>ir^t?*vUOe zxkz`Xfrl!n26!C+J_0~k#A6|^mMc;+_)_A*4e4@g0%2Et7MfNGEU)DHav}l`#&2P_ zL>|#4O#y(~-UllLpS8V3Ms1rMnU2U*T8+je!BVfen&J()cZ8vk-l}t*I4D}8Jln5W zO5R}}mH`~lX`n0cq(ZV7;>1#|w--$LC;5Zy+L6qMpyx4`?Q!EVtG+y-{9tDfBsV~t zh2q%tMynO2UD}nN1_eQL8kCq(RzCRP?(zxchyDw?MHE$Z$yQhzm+DNs1q7r3Y_D_i0P^1+p|TZC1KnY zTE!;@Hm<+Z=yGNz?ey>5tPTEj&(h1W3%%_6JIB17zF0!tfEc;lwEt+rjUob;bC4e& zA*0K{bJB-+Q|CZ=TMF@CJ2bCxfxr(<_y%uY1FIlMj+a)SONTLYV+3DO!10;epY`F+ z_)G|GWChIjqY?AG zOW=+wwlGaXU*6_IdkUA(hCx{B+wBH{@;G>qR~gcY+VAU4f(ydZl8Xg|z$&|OQJy#n z;Tj$CzS=)P6F^`x*uvvzjO1!|4W|lD2P%NBQ-&5AbP*Vyt$wS3;|Z7*euP9R?T{~_ zvVQSMVQ|VLE6uMr#n=fbOgntEG_6v&(4c^4YKM^NVcM7W_Rw~5hq)h%t2%h}u$*y6yb6KA@m`Mh)^)2Zu<4K(h>+*;k0wMg?T4C1VL(bJi< z{|~cbcGbWiDaWJSp`@0ErWUEX*euc&Q<{+((qQrp0>Y|jR-MP5kXSx?@=!~NdmtA^ zPsTO+;08dwX9`gAGfxlnvN`g2i|n`r)zF7VLX%oA`DqfFZ2j0lYyr$zm9sA#G=~|+ z3PC1qj)g3CszE^BaO zr`zM;w4aFJmi-T4nT3MRc+%sq0h?s*)<-Z}53dok0Bq8bObYEbJGCd1^dO$(Ks@fY z@%(!+FOZgzUsCui7Ej*{?LygRQ{cs=g+>}QPzsT?z;M!;Wss0%5!j_t{4m^3JTUeh z)Lbsbxy;HddYBUsAp@2c?njvNZw}CAKo5^idX{r0o4wz1VKNGs71jUZ0NslhHpK?- zp?a1znT$!vH-60F?DspiewY(yOrav>kxyk|tfGiyI{^;4BMjje0Z1l`44a$~GvMO{ zpwn1^&&GBi<)!vd0}6qw-a_y{PJ}R2Nhqyq`0&8ay;jukP*}i+YLo>M7G~bkI#kU= zjIWkmngZ4UCYfcQfaTL?0|(I1xTnjxQVtvoN|Q%J6bs8g8)6FVfBc_%+Pl^{w?ixj z$4{q@$v@(F3o_NKOjJ{lpG?--5jB^&B!F?d29kCumD)#I znSqjXn#(Pfn;HMUW%6OMepNK|0?9z#8-(`?a6QtFbb)Rwh9@2d6=q6rpDQh&?oVv{ z=)3`t4GW(Ix!;O1&BY3N$9jz!Mh@?*QfU9r{W(srks*8*C9CJht$-=cm=shvb!IQI z!E7Zt99XDM<+E5nELJa1ExV_OC~FJDG59EU&Oy`G>WBm+SHP^p-S{%;N{FWxD_Wh* z3TdsB{18`B0td7eFfLxL!F(Z+Q71&Bw(a53ikZVVV~UG<1!7};EQ&ZpW6sl*4|DKu z#>F0BQv>(j9DjMT6Ca(b5cWGaV_$%Glt41t|8jw(#`XvTil#}%$@5gn~N$yb0Y{A$1gQ%J_JfCTe7a= z0wj)I5in}OImS;Da-5ow%p&=40}k$;6c3oQ(jI~ofH8|N*65U6oQtQDS&N-Eh}Z&= z{!8z5wUN-QvnsRDbA?!+T>~84ewkA;?|Iw$+-PUcY8V2bAaq4X*s;Mlqww7J$(HfE zdR= z8X*k`B|CXRgHpRuY{TZc#62MeBkj>pMlN%k3R$i@Px#1+^zcB~*7BabFde84MpRv( zdClSFMNlxdZ#Oz9qzxZwWyfK$C>Mwe3*47gf&e7wX;vx7Mc@4xAHjODObKe#8;nUq zWFF?(d5R;1Xf@Wj#m&g2$PF|gjpkDaG)Eq(Bmej|GQ^o~J8IxD00A-)C)a$Fi3XdNPSRi$W9utOR_9Rs|?7g3Hr7BwrEYEbp_K5Np;o8fn7spGl~x2pmPS+|<4r0k^2{o+CW zke;A6&>-&S&+gY^m^q{$5ee2|@0s6!rUJwVf7& zvoAOZq=B|}2rviwfRe6@eyvfHb`|Yb;nvTalVZnvLaJ9j7Oo2q&Yr2WE`F>0%gKf zu94!0Rm_Ndf=Ym;u#D6lhHuwrls1Va{iD1WLw)vmgTf@XheE7zF5|vt1qM#Z^sA7U z>+un^kmd=xl(nR?$B=q@G=`Go_2rsOFQ0d&P?vx?0MG0nt>LPS9b}SI?`Mbf({&BA z2KJpjp{-RGhJ$MZapOdITp|H~QB0M3lG^5EZ<1cyO5DdQ1Eui2q>6{u2^6)ZSp zZ{XI8qD{vnuI|=?!_dAtc6-1)Bj`WDjI5D4ZG2?wp!b&GQe{;*1v}Qb)h-~(!)5yi z@o0&RafhkJ{-gne={CkuwcWn06P-`FZR3i;&MATdXmNp3u8N|d|pN~D1ToFsB@14soFJX!JaeiSH873>Z{}3zP zEvD$HpogMQ;u;r}T9gUJe!1aTfYmlTpIiT*L zy5Lh}9A|2}D(O%47Ce2ECXEQ~Q}#O!9H&VE2p={b^R>^j9dQoaPvAwUH_;aHRzK?R zAb=@wy(P$E{Sr)WM9R->w6ruX+zZTU2{_mz z+gnTbl((V0C?G9$CGd zIY>QAHhO@QMt{KpS{-SvE*w72Ve{6_pp|QHcVZ|U$1a~24|3y4{(E4LGk3~(%%S*J z$YG;&lw5~iL!Szkm$5lf+#GcG6dJ1n!px6Yv z$vbT#oou$aW0FLWY?C`Q3s)Y}T`M~=XIKP8a1b4>K)9SOwvRnpJUYKg_1HcIyTkI5 zhg~W4GwJD-N27yoIC2^siLm;kju<}^3y=n;SvM%Z9&#lD>s{(#kHEUUUs<0=DJQia zcBc+T(?5$t9FmiUFpSKo_ZG&d1$j-!jCQ2g*c38272x7T|7TNa%4g>{P+$n90O@fw zyl9ZbcOoH*WnN?>GKuR65=Z^sz|qY=kL*hNFH=s>4eh#BWrJF0CM(2N^bA@0L%{T< zE9ob5*>PHq@H_tjazi7GaZnvE(^hEkWL8ra!z=%>y_(5fka$VUUjB~$`E&xf*z8?d zh;MXrYjf8EWDqf?=ZX7`1cP4;@^~Qhlhc}fEcr-ajz4Kimi~ym!ca6wfo6#w4w*k( zEekyEZnP8k1ci2y#LM`f<>ukx=%IFaYjg${znVrX`khC zJuP<$jgUiub$*l`h+WLBGpN!ov10YWY@gCBBIirrhdWTd@XUw;$70Yo7s0YI;l>9R z@EppU{%nxeMHXl1JLC6Nj?+HDl{ujm)NxtKehDB1m!oDXv*fi=f(QU;S~Df9-&c8% zvq-u~Ymj*zo*WD74}px42t(hn_+>m?k#Z{XyR>${AFiBUrF>(6gVRfM>=|s-iQyt+ z{NllDUZ`>IJ^Ov$4l>uPJZ%%%Cdq70Bvf}>LFx@PC8(RP)e54cZ4XY>vROyR!qNFP~_F!0tCstAV{-dem`5z zhvSB_ctQ!YN+_>APB~ydJ92qpDeI=IB2f_)qym30A2k%gkr0De*Dl1lvx&L?21jO#{Dd*H%-^wdva8dTX4h~TU^ zS%vkq+z9>fJJ_( z%9BBa{VpYLwL{#RQt$`)P>cQhD+#KSma{ugT;MdF(gBbL$Xmwj<9*yFhIaGkd&K^) z%3%YYlQq{H5{AtJR^?^6MpvZ^KnC@#K8&dKT;=dwA}AsE#C8m`J4dx+A|NL;ED9f! z04a$CnMw3_X-`L@|2Nvt8lXt0tPn4#ocx>F+8~c;9pzLKh?`flz{j|n z+FSgMsYXl1!s|d6%~j7~CSh5H{n{AOyG1R@!dN4S4fnv_Ka-&*EVUrEnrjVC@&>qw z8I(~hF2SJ6DhjO$GjS6Iw5yRP`#nRXxl0w#UT!PXLa1Aifr@Wq_D920GQtvs1-7>m z2B@(7Tk*LF=`IC?+Tud1;LDxBibsz9^o?Jb4`-9 zKu-h5k2K)d{=n#KHh^h#y60yxt44k=ra7Ca$q0R?rLB@|4JPC$p4<*EAhb%0_R881To>|feiYIG-Tkw z;yS$EM~Ly*B%v>0cPL)jP>UDj4LCBQDn-Db7JbG8Zx$XC^=K^{%Q2q~vTHgg0NAUb-9tJN5UdV8i^+i^G>r+hHjC@ETqU;HrNl1v7;0M!%(C!r&74~oHil} zTJQ~5kd@RSS}+>A(nN#2uXYxWq(N@!#<=?Y&Zr6R@T^h+ zSF-}WaL*8sI>g4Q$QL4(&uZtAMhTO>%Va6dV$xOy<^_Z&T`kIr6_eFOvo{IvJ8o=I zRy(VUikfPfX_vR;qCEi^9jX~&wK*mprD@!Iz>tKo)uKrK9WkaE>W?gxt$axi)@6KQ zSx#r@O$&S7ZZt+J=03KK!bqQIJMYOLG&h3Sr2md10gi(ZdVvEIgRh2O4Hz+OBid)R zvojDvCIZ2*_rha(j%XjZ+K}L_w|-((+(FcSq!B)=9iL5(v|Wa#t%b5AKPkJRy;}&L z_f+`alN}re9?{MPd{+AhDQiK?#0MHnZ4=W1tV)I*Su~pNCK}0q2l*;Tu(`w&p6_;+ zmj;C-E)g#X!-M*?$}Uprta`$-`@0B3ZtfN_vR zdq6|In3)nKK>ENfED+gW`7NGGKgnJs=H_9kIZ8Wn07(!=bLmf!4AT3Rs*~NY^DSZ_ zG|j2-g+)M$L2ohoNI3^Fut+_yeC*!3L=WN;fZ&4KVsakp<&*5=Inb4D)~rN_E#L`JAmY_1S$8{Hod|Zn~jtGvNBxg%Z z+f(us4zCeiUi{%P6phQ=x^lJI&y12s%{h2wL+*n#VSzo^%AS({gZ?;EP{gny6wccZ z7ZLTyAiW|tN4H=dYzQHC-jmp?AB}oCkv}DoNt>AC(hh^wvsfYcXCSZ;m^H-ez;-5H zjjRE$v;O*K7Dtb#n(H2lJAf-!{;T|LDnrH(7(>Lztr4y`rdH8`n|Fd7sjkilG1S^o zI&RT3lD>ZJ_^24zxQi!JS`7M6+WIyrT76f_yK?M(C!pDK!KqG?pv8HE#y039KvP}T)0V>Ms`(SLw+>H(%Ol8Mo*D6USsN*$k3XXPZ zg#YSK(m5zh_+nXJuzj6sGIKz7whzE14)2bT`jGiRAK%5hP}4eXMrDpxsq{C-E<#`v zzOzx`u2fux-q2QI8mC=!kS5$ww*m;vkd0ZbOL4d}6&g4lQ32-aiAYZZzmok8tAEEk zUa>>QVTUl9=02mN+E(J9`Ib1jkjU~HSCWPOdBR69lb@vVIcT~+e+m>w%*Pn=6phN) zNo$f0m8lE1@}7twPv6ia1He~5tNrfQF#r;>(&*=h5H7)ptn3@Ax(={V3bSI#qE;taV z5r(3fPDt1>4;Uq}+OJ>?qY&#d1ZGEiEH$#ePmvE{U#kfi1_uV!tr+V*UJFFK-}*O9 zJ`0i&R+mkudo|2&iUg5!Z0@Cry;A5Bw719_^XJ*dJU!bbUd`AYR?>Jt))-dyOH6dE zekfgvsirx+`X0Zl4OaW9bgn9t8Z27ea;RdK%(Qel8o2+p9JC*?OmlV!)xF&KhqRw6 z8?V3YzsbGq?A~zJ>3Q#u_Wo-vKz|osjw%kNk86pS7F6gA>z8)I${N|AK;@{T-(ZQ zWFmi}?8=4M$lwA&kF2V<0uzVtpxI1wE~c8}iO!(g6h$vHjt>^W9^gMcZYk057);ka*2-2`s9UG+Ui&1 z3=Vflth&CzD=axWHzMtmSlmW-gWr2i*?=qD)Guq?~>$g%;M z-Z=cIjLVQ0P|RnCB-H0l@NxDWbD@Ub$SNQ3#Uyh;`U6T^$oDsfZPFwxJ7+EbgI3Q+ zR3v0~8pSlBml2P|)Tx#%U;)7y4vvS1o9Iv?E4enwbCI4;n>0BmZQ4W+bRi$mmyXc4 z8JKr(APnJ%ZXxUmh$JwrO^p1^}2!3v!iogM%~Xg z)RzOQqd^VVgn(vpc2^ldH*}$z)Ms20j?ou_(nW><9|%c2L1$qZ!)DY6Osii#n~Z~j zo#L~;UL>$tVUS^!_V@+I#1l9Mw?IbaMP4D(?a2q~fT9IK?Qxwdk|mh_^oYI=AB1TFeS-NDby65+aPc zTHYON^${9UQALs(pRX2vHk+8}0cI+IE2X8pWDz*h6HaGJWu)f%IStfllay$!AD5#O zxOAX;S4l2fSlH}>EI7Av6!5J&mjO)#CSf3;ixVXMn;qqk?WK_WK-aUoxrE0Dw9Cg) z;NLV|rx;Wtk=ov72;WiVk1(L#Q>p0e1H{!@#f3 z-{b5qk4nq3Ng7=niPBv<%lP1W?-Po~0E)w>t8LG-;1{Q#YEZax$m>uLLPw3OdZCGj zE<$lnV?Gv~CU6g2}Ss4-*=Qmv0ben@Ui{A zNAPhLl(`_k!OQBSjR!j@mAv8_(`WL?r1%SgMGS%R@qhNRRYqx-E_G@dun-P&_Bhm%%UjRJZHrgu;6(KDdA76p32NyyThI?_&2|0RqkxPc z`_|}arjENXZBax$K7h9v&X#k;M);Bp`>SglXY`{r8tN&e;^7eiS0;d9bmOi{NuTJL zi{QU3`8t@0?gJW-eWIMkV{WOP!*GM@h{c9T`P<3nqBzyPmVweKo1nI5aE;Q5*e3%v z*`T+T)(Tp8uN+?mUO_(qr0U2@VRW4&=T&Vg+$ zCO!E-V1FE{A%~CfS*{*4l4SRd$QKbw!?t)z5s{axGUS)5)$%!5Lex<<71Q zUCQmSO7Q4#OEJXDacdY&fOv@0u>izoFlc4r+1; zRfSlCJ{HENvwpu_?dO+?QmO3*TPrOreu5`wMNBU2b}KN_!`iBvBjRk<{dzui>= zmwXuwt!4s4F59OH&E?^A;y1}e1o);yQH1LIvjEq$=ehT3*PbC#YZWw0Z zM@w)Gm!gL8z={VRpS$o)1nvY5N%%d#x7DH)eQ8mb(aOr2nXDDfO&He$vc_0QKuwADX->Ucb~(u{lG>li_ZOA{Mv@bCx*BT!7=Hn3pc^v zMY@phwdd0mOKtQD#;XH&)k|z%2w9a76L1>v&d38xmuiRyyFIS+jq4iqKcPjN5_tJ zme$Xsbk!vvfe>Qz1JGy!fr`f8WA@JhINPw>rHQ_$Mam9Z-lfD6q=~7$GasA><1wl# zG}b{#e^xsq*X>nh;UxjE_yiM9CmQbz_yHlW2_~~6oD)z%4ZB)*{fG8^hKwcG>tv)WlE4LNtZ=JwX&cuc4*>A*$`OCq!^*0aq3wzYK- zav|>%oEgS{DIHwjJMvPYA;_>82k1lvAV;`GHu+Y%gbD3kWI2;I(vF2YjTF(B03_AX zmB`_-MaK<7Ndn-vH6(yv!7WtqHJqt_Hp#I@#ZHnQMv!o0_U;qxw%X=pb2TyvbYpcvxtOcC7R<8Dhinig!?-A(RfEm9Jg8QS8gXt zb0t@o^ozERZI7xo+y;v+gft(iz{$t77HvJtJKF|= zj^T_=0DHjg6=*F#=rlxG=>TAZes$rm_7i|pngT%y^r!ta&I}maNJ-Yn@JGFoXIYj- z-wJ0J?55wOSYTLr00kj#4xQ|ga=5mqrFO7`ihT#~dp40UMe62j9mCTm$q-IfIn=AXrmyq#n z6#h1U&h0GYnCCb_s$%C&qXx)wssB^i9~G1sStD4Jn4#2r zXjgQR!_1%|I;(Rjnpj_mNDiHi&vNYy@n~cL^pFZvq~&G9n8u1yW*}HAwa2Z9E1aMi zt(N+qp3`~!5Jg4>Voiiv*fd}ew*TqW0k3^}PMpaBH6Ehsw+U3wr9E&9_~$Tga+vPG z1<%YgeC)j^2xQ=n%X|Y5`rS;9?q9QQJGiPARw8pKr(gN{B(bZ2NYcx_F2u=(9jUr<;Wa z(6Ys1dd@9?48&qMbHv-lof>3aaej_?IVB|lFgh)F$=%kc;Fcv1WkpPmh12NIqCL`y zEv9dzoQHUl&>Z0EC)erDst6FT2%dK4%IXU-fwMovLK?yHUhC({!r{p%0R@mHFwJ{o3HEemDd z`g`xQ_EAG`vNtH9@Suv*fpEknsBM6x{RY640M9d;Bo;sO=QS!N`T5agVNa?-N5)m9 z)nJ9vggIO(&ByB4%YYde#Q*I*&UO|zWo`|Hg9x&;-34-DUP~2kIbZVrk5xYw2ssd3 zv76vZvb3V1q;cS_l7vd`uX`y7QojQR8jK`-vToa6Q`AXgJ<7V$1yDe(NpoVX57TP@$dA+lG79K+ zXMCTn`~x-<3{Xp`LoN}q2xbTO5Hz+0C~)~LTy-EUA{72VO^ahA%}%uC9SpZvFZ!Dl z<_)Kt*?i2*tQt@63NsOu^#&F`8Yytv3J?;hnpm)0O~Oh;7wHpAQZbBr6#MAl4(3X} zrM&we4=oG(7uesx-#KgDQP6OT(KQ`>QKyI5Z-n>{CeaQs2o5J7Cqfa!>;#M8awmUD zyGWf0*XPCMVdPSVgtzfn3S*a9L_pI#FY-WNmFf3jZk`;29Is9u zcnkr8!XvPayN)c8Ku*U`IwD@~FEb)|L;U{Cd9(8y82^lUi@_Eb5<}@7)AEUWWJ=+) z*f_KivP6Xt5ui!#;TX=`kohg<+Wo}>!}{{dH(U5C3}<~Klydkj@4*@)&^yb0=k#+2!FyngpJVZ63n1p>#&GmAp^1hgvfa= zM)OqDZqQF?PZ*K6K^J~^u1*aiPh6oOM9Kc+_ptTz{-0Rgtgog_(Yz50tJT>xts!D4)hs4@>x3z8#ewIP%fy~?&6CuIxrp-30y;W$8a zMUD+&!hO&-(iy$gnB_WpZ@R=T;;>1k)O0|7&|DzSqL+*W<5y|uI70+Yi0_^K1m)$A zHxFl+-OfC8<(8nP73M+gjIGtmeS5fRNa+eRE5>F^AWg<>$}4G9=H`mY49QTYW#aOg zAPNY6D(Nwln^OcV+htyg5^TY%A;Yy4952}o+4W#oozo{k)^v~=QWlk@>XKT2>a}|+ ziY8TCGz5S|)qo{)ElYaM(*dImViV`4}J@>N#EJXF(?zL3=7chL*nxhn))%JQ}I^teL2}CBz z4vgdEGaFbJ3=A?8_YLSxEA9+WhVca26SwEGy55s#ria@kc?TEZ?gFEyjoutA)37;1 z!|?ovT04kjYxjS1ffzI{$RjD4l6LU7s4}i>xHqBHx)8NN zAT$Qu(x#1%Q)KGQzb7gNyZ#ltf+N(Zrwd(Of$6(S`(FlJ4RaYXl0K@#eJcv#P=U#I zw*!uk^_k=|q$L1m(Q?WMP-|&ik|&+zciu;nhcoC7M($;X)b9GJ4)>cyp<{c{%{twkBM?YJInGqL>Kt! zo&!l0r;2u*n}aO|L|N(phQRUNxtM6O{gwy^R+hl3Go}fC0I*f65&jJxH!nmuq+^Pn z2;+4p9nW*C$uflslpFUKPm)0cRW>A?-$%R&WDJ5zB%il<@-sp~knH#xf#pIi278ko zMbc%pIUQ2GNdoqGt^Zyj;w! z{XI@(w0~>kX9)yaj*RmDd#bwLn*oK1rC6!pWrRLAwK|)heIxZMMAd<1z zbnq7}D4~-&Mql9(6hXs6h>q7TGm1v}>2qZ|T41L}p`kxkf)J&KGLf5r(AL&H15gH8 z7IaYCCPr@Okq7&Qj0E1GhFD0xWm^RTN*#`RV5kD2m87rlOO3-j4Cr*wYVQ|J zWGO#%>5AdjEeDZRwL*rcS%MAZ++;B=&pbTU1g?Pq9}?i@PVVid9-uhv<{z-AqC85H zi1PSVhak1BICeSTGtC&)AlZ;(y;2_BV2da+@w~}dj;OL&Jq00#=4;*R8DjGBEF;K7 zO4o54oT3Wmpe(|p6HR(`)3F)BX zG-c-3wvPDBr=}ye0(O@V908BIU(`B ziY1H#HAxz0I;IEbAvLc0xiF9~-0ss$`#B?`Jf59x1ni2xJ9PShVQ9!Q0I1&({v1?&aw;IrROa_Lz#O2_$Sfo7YjMMDN zb^BOx{9KBM#YJgcRKMC>mLAR+`#s2RH@<8fEV+@7c8}Xrp+$J~Wyp|lf>30x*KAcF zN}dhjCW?mca*^`m1W$*m$ELTOW;>G)3yPP}->@ZFg;GT!$AX4@3MqX1`rS}fRa zMeKp&n71{FQON0JP8T_}b?tG*g93-}K)_Hnhay|Jr1yLypYjc)I$@!5EiI->LFT)_ zBw!L!uUC8ZCJ}Q?WZ_oTjC~u%(>AoQjYt^C;ZfWnL~5}1oaFp=Wam1_Qey42RwJ|J z4`2GM-9oJ|V&NR#YUkBjs)Q-S&+_S`_J)d5v1c-i;j*3r5;7o@{NxsGQk{BqTT+Y2Sh>9gvWHs*9_{ar*L(wD4=V^ z_31aZ6J`}2M#MB4Do0$5ooTUyRv7v3>@LfM4;CCj2*rIh#h-rT{0CVYTBAsyrn3AP zbc8WOl(#WZ}ps^~QWRv-Bngno8s=U}*EZ z`C*|ToY_d1a*G8B`|q}-yAUUZMIg8CSd&9vkfs_c;Oqh8wpc$qO#}o01JEG20xQJ_ z)dko@evs>$%bb%g3zbXtd*LWtPQp?eQ!V)V|M?qW1(^Skf$o=H_5_etmvt%Qx^AjbvDhIMfR!(r4=;$i1>JQfdG!mhtS3}# zNYZY@t6s^y&+9OwL`N5 z#63`kE_5ZHNhDaX3-F#7q1gU5hL{$zp=-ywxlmzoM}P4b-+S7dLAFx>T9@>cR%s^? zXW4bTLaSvgK>!NGaCbAKGnJRX0dgHgXo!xl$!c<1%(OJXg{kS=Av*|!o=$7sdoA-+ z$1upMd^EVSsXac9MZ5*XeA81;2YL4v^t9teC3u$Vr(O$kdKH&jv_ietGP69iJ7T3} zwYoJmgGGR9y?xMkSwp~on4vw@z`w2w+UaE`G+wBbt0#W`D(!SVvb0n!0S@@%anHJJ(kk?K1M63*+ z(-9VILnLD+oA;Ah{fiU^{c9eMF6j~;nDl$F4B#dxev=`CO!F~H^<*n!#y?m=O(sXc zchK2e#wz_UO-pGQL99yk8F*c?rKpNp*}W&I=WaL7;`Z54hQ#Z95kW0tR5<$-(KGaC zlt*Vt(!}ZIaC_^o)`7s<&*=odg{8?3Y6(G0?GM`?Dm=?5ea-|jkJ8glo2GXA)<3pE zqz^|4L;ElEX(*C=Of+kF)l}9oGk^}xH`<$gw2mt!B2HETQT06B(VEdRCKu>nZWwnm z)U#LwM2;fajxipvG_nm$#+Zl47*|zI!yBxzT`;rMyaNv{v_*`Ge@@FPaO;>U<&(3` z;FnUl!4oB;bC)-q{7_h<>%Mf)Z@;8}5KFPN6gQzJfxpFV15`%ALdyW+Pf31vQWS92 z6`anuNd>)--;#f*D#JA^;1cQ@VsY%S&LRuV!DswQ_A*0XvM-&cxUSA45Twh+iv5oU z)g#c}br*B3LY(rUh)_vP9vNbMa)KBSGe-c(Fa(F}OC2apa$$K19ac;lvr9i!$w{E` z7M^%@=O5*ef8bRGIgr6lX!DVzKngM;y$bci=bI|cP%S}PVpB4t6kx5Nax*33S_cZY zx9;v7v@d~7g1e0i$VgEDkE-)uBs=|+#+|iLRU`o5)MUv4CkS;?p;Mzbm*bZBEIlTq zbjEH0Yg_E_$>`V6Ht&Ky)bxN-2`R8bi%V9k^BOKoa!gx4Y1~=kyUTIA$l+>KSKY46 zF8bx3*NVSJXwh~W5of|uYZEQO`2P19;{)*i=m^)FA2$EeHK6RJ+KVrq9a`dCW?hn( zVdMTYK}hK*&n`o)p_7AM^z!_*%BDzFx|aZ0T2kp&WH%lRQ2<+Rx&Ohm zW;<0&YRkfNx*>NxLMb!SBSCBx5{$J+?EC>^Mtp#N-2($75eo=;0@d5)?<~DL(#VO8 z*q29HUq9%Df^7sc(hZWyLZu>yY}c)9zL&Iyk(AZt*IfokL&(H zoR7#=^W1mt8?7eVCZ}0BS_V1(QL$th=ish^~baQodx(-H@-)yx@=Q4BC6& z=mAheNE?3(O)}oD5!2QszJroDL#8Bhe`lDrWqt7&M~f zFt!>K1r?&n5U?phtmz>x%qz6fzN%#tw6S+{Dw^Ptf*XJmTOP}zEGbfcgFGJI1LO<) zy38?#HS~K#L&v(=lBrA((?WSX0IfCq^QiAaw{FRZDrxun>ff84o@b z*h5aJFrKvmwu88V79?rIy3#0ZCKyzy0DO=;M=&EUve-LC#HYt}|Ikp>%uP~Yo!$yj zpAIu;&32vt_w_J{)`hW9xLy20J zs9?dPjK}!~^WzSJs_H8_?EwY42qmI#*vUV3$Jn2ivrZe{IT^+J3edpC=4TPe))Eyg zOctI3FAg-SIMyLuVapJy3vrKPGET%DJ56LiWt+Ao#P=lo(3m;BzR(x z5SMoY3Hxa6cUDZ)$4(eWkp=%lpyV=v6gO=(nrOQKH(w;2(RXC|*%&W#^ii<{IO~d9 ze?d<&gSQO|D#IDU6CwSG&UbK8-lwH>oD2>|tcZZX(Q7`2M0BM~!6S=s<1MAw@JuaumA3d9&5)uf zvQj7;;bB+6C}c!pPafJ0_9{1t5{2L*G}u_~jYG=w1L|AHQ61uVsi{N&`GtNV@O$(q0r%G~ls1mW}E-q{r(0}Fk zaYJMt2@1$IOQL5;$r%1%y*R+vaYI}m4iGK@4077zp!i1$bU7YYgQSHPYykGPRBE9Y z$((qiXVAkPkL%y7vd##}fyo)$YG475dy;R%w5%aO@sKNMjRE{6ro_8dQPk$NTZmyi zG5O=!ax4rdz5PfVi>dKr4@Nc>7_zcoeUip&+Q5*#XSKn=x$xW@jZ z;=~moYGBG3TWxY#Qf73R=}r%zlBcWI&b*UV8Lby1O@@yI35qdqnI~}ITP`O zSdq$E{muk84Wn;4r7yj>iFVIGEDL$Amrz4QgJm2?CXqQKwzz{Hk4u%12GF0jfS&+# z-at3t_7#N#8i_5=4X}~JKY0IX>I$ih=Wy0PVGjwSDBxjR+oT}^Jg|7@Kl_!_<39-g zf*X*eRbp>AJVf?%v_jEMTt-dE)D;*_!oRifiIe}}kd3iGk$6tZo()s9qpuw={f_CU zTWoSbbwKI%Lc5K5YK;V@ND+U@G?wWd9MfzYfmsn|@M%>WmZ`#GK`Ty*Ra;P=bl~gn zyL5K~b3WY)0rW6Gg55-0#Qodmz{YW!HZ!sUbA6SKEQs=OT;P7W#YZo4tI zv&$NO8-1v*w~NG&l>JH6r-Y^w7L7#c;w-d(j(yjbr^WIg`eMI68H)dwmZNnZmfLUr zJLIbed6v{}UaQ$J0V;<%5vlIuvKH6X*3SfwA>hl9bMc)dl)tdxF6*K}LK*K6$xMLK z(DpfEHtq8&$CsK#I7mq_mPX%1P>Iyp`akS^*4w+r84Qa-4U+e2JL>g~yWv zt|y8IZKDpN9sS?<-A7PLPOQK`r7ka4G?bG%1_e#n6-I=MMX(Ono9yF^bT1Z9iy^+- z5O9`Z66Lnit6xK@rbZi^dLD z@VZT^jQnZqGM)M?R$1&PU&gXDhA~ZAW^rB47L$-SPDyqdaa9{Y?Yh;XxTD45u*dZt z^=ReiN7L73NHoK@w3H*hysAl& zWwSQ;sl$^IIFXljA&Qz$qbcdAoy~mIA>jZ6+rMeLeuo9Pa z%-)ZrafO4Y-OfljuM3AUdL?nNC$YD`o$Xl9*V`?(E49shx_ zTacr|eH59a)!7|bv)ePUS-Vozb(ta)t?HyB?6>po3S7AU^AMol0tAaBxx2b>!aNVD z3FLCIfBAD0@{qegmZsRpehGT0+nWC&Z4C%ek*vXg8m=)WQ(L&24W8|Km5^x)6|6K@ zUx`9g+IobI6c7cV08!)$ZB0Q7AFUx2np<3EirhD3e6*>=Ma`eq#j$iNjCKn!4!e$* zX>|dd7!i^jh=rG%Kx2FIF8Xa-$=B+Wk{`=bndn$?!LT7LapHoNFF2VYD8~izxFThc z1WwYVt$*&)+utSc}fQ%#q zvhVhnz1Xh!wrMVDtAe*lUbI=6T1hOhDc+LusFQt26FPZ5YCQ!)*qDB@DRyX62qCqa z^1vNr9|NNBA>yqU*-tNWB3g{=BouWg5o9p&8T>w8U3mdm1sA|xE$Sw!pT*kGoP?PV zG1jW1U>8fA-A!7g0D-_CVB{5C8aluBNR6?_bFSB7^{^Ns$OXl40ZTnV;^IcaXI0Nd z$oIttCatz2vMA%Vm__hm0pS2;!dO9GV<6kdqh^M@d61;_qG(tQk!po7nO4NscQh8; z^2q$4oY(jZDKD2O2X!GR6N8k6KDUyTHe?CBNRR_%rIqvEAAI+(!o4i{WX#xDYNcX@63X2PAt~B?w)F!RSq6X@`nE7tMKO z3FT-?&oVn}foqLMD*?6;OcpE*#}pDscB_5Z`3e2y6d=)-?2H)zMU~}tgX-R3pCr1P z!$W@(7qQEAzLrnukK?cyTs1hXB&c~cy(d}UDxrV{JPQ0N(#_z(hC^K;bZA&B%` zWf%_s86=NSwIiSdG)-|pTA_bl4(Jxl;2o7u#LDsXWF3$6Xf?WJ`3uU&r3NVnId?ob z@|vRXTUmihn@PS?pT)xA$p+$26fdz!qI%=z@qtcIw4O3=MGXD%>2FBeSgakDMx zxJLdasF*U!xAZ-35Tl59>i6L^LRRP04p7{2nmyu%2fBZvEp1!Jr(CU9=Gw9J_(BC~}zu>pWebYS6R6 zje8QL>vyqyxY8#43e-*~iZW@5dtd_2P!fr`x=8cfGDt*A5j&LBx7P?#`M)-Q>)csX zNb1I*ptpE55jF$Ppup&|m!S=1O<8tP+s&<3qcy`~ze=?UA~w?Er_PPbF-X#wT`2f^ zv4gePkS!j7!HHq@#`Nwq;eQYGkc>ge1>M2vK$Rly1eS0Wy}SH8S!D`rc{FatAH-}p zc67O7>^)hUn!xw3Q(ZCSwkNYo1(&CF(12nz)U;_n^_M)Ym4$Fh|Fg39CpLhVqO@1Q zF*GkPB-PI>4K?U-wfB)@kP&REm-rEof#hZm%KpdA2^rnjVUi^wK~= z1{7m9oE8@6hew0xhV(S4o6G!KHIMcv;3>fAzyQ?ssdR0m`qZobwXF@qCp`~pXn$iA zA_U=T`y;|;Pk?fBapGSEy9nGUqKs&k@98A9JW)E1sjH=n&Jwba+&6P>12!go$CfTy;rN1rC@#VCQW)$=4-{!d-Ztj8ODHXnD?se# zo%gd#0GSgd%P;Uf(?|$;U@g6*DFb<=VWA9Ry0LK85`+OI0roh}v4`YRPm9s5Zrs5L zYX|q;um_X9*pPf#_QlW@0ykJ8KD1B#*OUE1&PuF@p&4JKIO-u|Y8#n0sfFi+dK{fE zC|aTG`FXT)xZ2Q=ve$@7^SCV^ulmVSgOLMfA5hrt#kg66gqtDOZECnYT0dNE+!4?i zX^`g?lCiG^F%Xc`9e&_RM*{L8A^_&F(G8hWw9}JeYgf72;7B^^4JZ+O&B_3=xR46H z5(H`BX;~!syvBOEv=foB&|H_YXK|YYpw5VEqdgschalLG3jnGqBi7G1>!&9}Y>a#x z^Vrh;n;|e&!X^JPM)Ji_og%`~8!6@UWc8H$NROVMfhEB68mYJ=B_pBU+e^^FpkYPr ztMYw~@%S3yL`DR=)lOQ~6Qlu7yoKDJT~@@(t0Gzik_#<Bz|5-$V?cWU& zPESU^763yf*!AprmW3pK_k_7dSXmu;QsJs5eAn>JSM%wcq2>$|x{n4*LL$!NQmf^DXPi3&R=)#4kkZU={fV9 zxv9xx-%CI6Cmoe$1bIxQS>&i$lmf~%<^rF(rfL>7D6<08{`SJBAeRDDs2n7~Fj7X5 zsAI(GL|YKT5QWh63k$_pE{<6S++=5)CpSXWSwY3_Gj}?BzXMOQNDbM-{_3|iULsc>R@D2nB8tW^!DHQ zxfsr|*bP+q2!!ZXpuiJz5*4F7cTH#B0e%Ca@U~TIWMAXdVv4*#yY+|CIQQhDAIX_# zPjpvLvB+Pfr$*~0q>lqqJUd_%f$LHC!$hq3ObhmAhVYlHwq1>5RmKuC0xTB4EvC#@ z``r>}Di0*JGJADTE^GvugQBe3`+c(Q!kff1yL0K#e7a|6ElokfQT(`Mau*Z;q5gt< zsFX1JLc=5fgsY!zN_ly`AI;AHVT+)$fw6OdWD=?q<7BD~@Uo^mW!72@)G${D<`iF0 zm_K@tL#?`>6B@dxO(KbD3Exk-xivXKDDz(+CNKkNG-r^6AChCRg~so54g3U?(+Ndl zNwqK}bcKKF9}Amd;HTUAPGpN`xkTV8jchCEbguJ;oCv;W*yQG= za0#dg>Aa|`K9m<6nA2_Pc7}Ufewttu*>^L`YL7>50@ls7PxdfZYrHTsN2ni@&r&y$ zDO;=@7YlfA0ntUBXn5cv!$Cd>;BHutRz!V7j0v>nF5L_#_`oVoNUM_v#4r(0Tzp;x z(~G>@9~6z+P~PTBvF?5t4kBG43qMFPk<+uuB7Bs{Z+C;qV?Kz8dg`VgD}( zIR1oGr}iM&Z%j|fd0NDwxOtg1?u*&(|NUf%CaT>tRnp*I3Kk}Y04Ngo$`c|7ZyY*=y>T{}X%OOKH z;m^kLd9rq*?>A)5I^aK6TeBbB)`MVk8HJFQu?~*gx^A*VEQ7%G~T{Fvq%+nFiIE!8VO~de~10DMG+tJrnz` z>uujGp1zq3?XjIfo6Y+^6;%2sl%I>pH7VldD+{ER1+(fvyMQR$LTpk{U}qpRsQ!G&KweK91H8iqKD zS<%>PUNAJF<0Ye>UtF4rAgB@QK%?fm!F8x{O2-7CTwXPw4bqSI834$pk&q=E z3o6CsGI=q0!d#>6AV@kMD;20Ou30;6v;KovKfX0ch(uJxAM-T3{)MbYWZ6AK3BaUn zGAtjZf0DKpc4oJ5&LZU>ZJP3-mx_SqIKJAJ?u#d@D{Jh9^N<-kh6%x>_ zx3g$@pzKp+u*Sp0#Q{h468JF+vN)T(-y}Z8MW7dm%%{= zO^OFBC{L7XK23OgwnG!XDgs*2jTmGsd_I+_xA0up*=sXR(Jhq44x_?3^9#Gk+>i_Nw!AJrr!0% zsO<<(0nh{SEk|(SVFj&A6sO7w*J`Kyv<3M%Gzuw0=QiyM^(Vbcq8=cZFcaYleoi(e zsN`tK6y0hnM1ei*RiyBS`TR*DrN#q~CZj+G+m-&o%5?v9Qn!pt1WHtdl>2035)5Lj zLnsa}D8L`NzMpk6z`d4?K|Q3P`H15J27tX{C0os&KuQp&AyR?S_NT*?*&{!ZXO~@b z%N(rYe8Yi90TqX|Q`TAx7=@!oay#_4)u8rhXJ_<+jvuaeMPf0|qlthxLA+Qvi)%~P z3-Zi$CvC!gE@Tpdnuo6P7>u9A@@X+f?Zjkd zICWWZ*n0v|jO}8t*^5x7V^sGM9#;LI`C2*6*XSooi63g=vWgh?eW>B^9z&fvulgG9 z1oPKPN)ldtq-(XxYQJn~fJ4!uf_^u`lE9%u(ipO~Btse>)YzAi;i~A&?eiY%VVKvz z&Mlcj2Tdc@9uJ@QUL+3#B5z59QW3hHxjD*Tk&y37tjLY_egpfcz#S!u% zG_#UDE8X9iz8`JmBO`;OWG_(3Ve~tcTT&_}_@2fkM^NZ|b-GT#ZsKR}k97EEO}5Ec zt0DvWEM{32ghsBkvP6mP$s{C0(TJ~ee-B`x#vI@Pw4iw=9Om{mR{g~6wIn*=fj?d0 zkyucDfc@gCtyAUWM#P0lmx2rdbNuwj9T|Qt(@*Oq~G{#6FS_DJ_Iw`1-7ttI&5Lb zH*3NI{tooVrZPxw{12k@8LcDin^4qoFDvjVMLu~2-L=F!~n31~KZa#Sf#t|-Ec*7oVd#-oQ#u0>e6!{)cg0qn~c3NH=wNJ~fXunNq7 zB|}MuE7ZF|EUZ0(ooAwqK6uD5kSNh!|_ZKoZc6)B7s)L5J5V%Psr+Lb2U69 z0;*O3r}{%T(J-cSSJmO44X+`|yL1`ozE>k|o?1SDcet1bRZ3e)7PD6*SYeR0Rb$Z1 zN=%he&u#X%Kd6fEFD5aeNuU-`Z}wC~xF#e)pykKsrqTQv8A{*+-`IbypMZ=at&tGb z&&x{%|DHl`A@EPS57tn_?y&x-Ge-Vwk|TW{j$}iFA^u0s&vw=2*IV?rX*4&pDIR!h(lhNyRRYSa8n_Rv@2<;UOL&THt88;1-Uiimt z<^2P@cPo*Q-z*4cJo&2n?3SX03iSW8+F6NAx?F>5G|cquN&XLN&j3-X4Bw8>{evf)t+V@wmt#yu^sQ}ivceo zN^%*NkoO#+=-U3plas!f6`@(;hHLvb*ji#1=J(_TSMG|}q80Xbn}<)1P)-Sn?JeX( zBU&XZvul4NT(Jt96MvEU#1RPL^5<=iuYGcaV`s2k+*zmqt*+IqIz)ROXC|p9mUXi2 z!X5|~0sbs~11Ls2@yD)@;G|G`TOn`ssSv6jS+`vy1zA-Ty-MO$#>vy^uYc}6g6Pdp zon%)vP%^fZ1~c0{ zJCv$`F`Uu{+db=G?4LWj5UywrCQ!zYJqUJl@+#DMTRWD)Aox4Z72K)VKrY>4l#= zJxHq32g3owe`_IYxp8(D0umNbo1KqRGd`Occ`4o;m7)u<4F;OfvBU+~u|D|EoL?nB z(;f{?k>XNJSl=*92FNtiGF^cq3a&28H@bY`_ovbxRBGeV>|j|6k%PJp1usDT`5Wx5nAcq4$O^e9sH)$FRa(-tWy={JQBj&Gijr2!Rh z@a?i9a#kvwJd4KCdalbWul^14EN)X|*173JN|OK3km(g@BEpaslG8)0;Q&M$dh+Ux zZl^?9f(Ir#Ywg?moTtUGq7lx%gUxnFTLQ*FZX8{X7Cew-K-~;DrCs(pZD$^X<&Xd& z6M%{NTmZ~221ceC##-_Ghq)$-6@xq%WB0elJw zn!n5agXKLv3oI@%jq^b>;Az0{Xx5GBtY&rc;8{Xas{ivc=NTdZiI9Db$Ir|7CxXh1 zIK<1+Xf4NOCj%K0udzR!rLXglE7KD05iMQGUaux-zMN@b4k5|V9BNTXJFWbhIyhUS zJdd-nVwR{|MT;7erOO|WY8g3}^O@V|RR%O%5^QVEyfeWGmGKC94lv{7QEodhxfv#^ zfK2n5I%J3H;-xFi>IR%Xe;#fg+fE3t0#vtsDJw|Nx{w&n$jl**<7(poqZ5KkG8fxv z?!eTJ*@7Kqu~D&1XpcY#c?rclitwpdXV0NJgj75g(N+rZaOYBhBf@{~R6FR$cj)+Xi9+q6jtYPZyDCrqKBbBShB({~m@^{%}@k zapgddr90nz>c)T?x&!maxxo_fjyvk0Sw4*B20E<4&AKc&TLvy@0-&QlJUAm@51~W^ zpl?&*ROidaluSd+L%#`7QiMu?f8JOS6{u09TX@<4#EX4zD&%o^kAaD&3qjwR*sM-^=OKYxFGoAPEhDCSz)krxmm@63-~x^ zKs@K|>^Xt^FGlfL9}K_2)f*KP7SXf#D3=OEh*AL?D}J++(`Xh^M81s7hmvzTOF_0Y zfTDm8;3b@N&v6Vy4kUht&OIJr3GfUpVlZQ%)m6Q#P$i~B<`0t5C!y&Dp zNf|2WSzc1{+<3O9P?;&c=kP}5Sn+Ty;1C8tdy+A3T$%`~7l(A$p!%x$gy zAxK0c zY<_05kz)^r>CDPKBS*RuBN9AkLF%tZ12O^V5X-s#RW`5b@X>6;j!XTZXfEnr=fI7D z-p~{u`B@AwF^XvICA_w>gX7+B2>Nlak%fArkTOtaVPohs9nuc* z>cUZX$zY;d^_ck*Ptw3l@HgMldRRI`;X3|IsO{#G`x7E!&ARNLz zZbppo_GbeOc-$q}AnO*^b?k4F$Ypt=(%_QTG@WiNQ12l( z$ngkGlDwThg+Is&(Y@xp3w=DJfDUg>qmA+@%`fKiQ^4w9g*XSK}5P zB5YIuc^`zwdD=j?0w2N-U9B&vwTQYpJ-Z+|J-=|GI`?+Okr9qtqCil#9OzeFBM}TP z-2tpayW2o3X?<1 zxT8Y;DA^Sw@hG9LCNuCciWMXQIxW9m$h&JXUK|JV7ce7SbTaLNMK$|V89<}<>JwkP%v&V7Z%-P@9Pp!8$oJ^Ogqxb%o%;7&4$;g z-L>Pp+_Aie1_4|wNmU}W2dZUn)9!ALbIESYOa&|n^d`0Buk><0s3GGLLf4LTj#-7% z4zNl>+z`|9oBj?HV1|5wBd{0Pc-!`DMGmrbe%HtfxcAC8Zf-1PSc(ORTl7T=lLu%!5xJLP_AR!_Hi5pt2ehp|$RY+Jsp*_@9 zOlL^j5u0h-H6VL~vzZ(hJO);A3hM`{X{3@a=>@$=99j_6!$J8?xV)p+I7Khq z`0#C|Q?j(t5~1Z5lnYutES4~TL&Z1SeGpw@5z9fU7N|e-wOF!*WZ({sp1?M2%P@a< zk3Yf5M07f56fM~W!~pPS=*{+gDLA`7NKXM91^w+^>%Y+B`V9sR%>5CQBY6$wRd!(K z+Zo`uJem*FNtY=RBzd=?lc~fH6nLvk$>OS%ixx9+Qgwidu{@bM*XzoOYKmI)Mk8mV zz|+P*UpY);EypNW2&Dcpfu2d`B#0fgSEC$4xTu${Y#t5B-5rNS87V4|{T8Fb9g``% zElk+gv~6n7^7v1naZ0sE+5+w49Z4qcO+QC_ojzOyl?XZ^c~1ewH#(bxpfTgR0T6nD z90|;+Eo<~Y(F=ipphA-CKzFh)7hQ}n>pr(r0MEZv?{jgHiWA=O7XN~;&#w~AE(UH% zdGJf$!hQ|LCTMll>8m08e5DJi_irIk&IA>q66_~PJu!Lb37JLgDdjWl&(>%>^So$+ zwlDeYh#2cQ6C%EV9`>47Bbx#G0GUGMx9W-|YA_@QH@uPj?HC@X+hYiqXm1XtLta!L zgqhIFudqYH@YSH~mP>RZw)y>TN2CnxsfcdJl(5jEF%?M}fRIP4=g}ML0>x$lc|JbS zwrfsu8VHY(z0k*ZokiJvMJ3w^8O7jXa)?HS%*UXKx5X03sfX2|?UZZsA7dFy;bJ0x zKM?A{&%HKpE2D_P=mnFwJ2!u=)>-Wr(wmlN0CjAieYNKY%B%w*qvg?~ci$wDs(I=q z_PC%VYqdm8bvgm$kQt;+!^dlt!ileil;jL5h}U<^@F8VzGr~JjxOT}nW79w-7DOx1 zD4ISthfLLYbUXX5B1y4Qki|L8L0>X)2^7RG?f# zYxtgkGwx2^AZ`^j_uPPs#?lm0mrrq%X&ll4rkv-eNu3O=h<)sGx` zlm$eEbQE5gLJW0ie9AK@?zw9?xN373188Gl3h2l0(n8Zd4}`*FdxbNa7&L@vRJE;z zQQ+vFC@T1QA##Kcm5aQ@dC3#fM()A&60-Dcs8%V|Q~4mb&Zbz{8-gLnyL~$N8eda^ zyaP9%myniJfHEYbKt8bTExa>)acaDk$?u>QufRo@5X)Kw0^^A3;fx1h&y)ALm=RCv z+Ru7(7JjjXMU$zokPKCiN*9DlU&eZX*ij?mxWM>JyLgkmnS+EjylDpH?cyD#)i0T9 z+k#2BRNodXhxP^Y4P`b0_OKZENWat%kFUiO{hsiS6*PnVb$$kPi%Vh;SEKB*8Zf&Vw`52obyGe^ zXDpoVwuH{EeT@OwV=T!8;KPs(@Zr2k9QtZjx$+B$+7#yZCXMZIZ(G(+D~VDjj3*_T z3_0v-u<%PE>X*$#el1*MRA*th)bv>h4qMJwT-p z_KM?7J`kIJ68)v!?+g{?a9!i)wiqfnFoKH590e1cR6fV;A8ZY1IiZRw%7h<)fT4G0 z*oOB0YGR{b2q}78RqHz@qs4ER%`f9Xq=0S9p%~Z}B8AH)Qu&Jf3#fdFd(g!PA1n8mGr>NjmZkca6C8?U498 zZO4k`l-*&H;12Exhr@5fn8+T&LbEq38AjN)K~`_R%WWPG_kkmF9fft7HU-QGi%+_N zYRyLViyUYdcwQyCb71UbKsZ)qHmf`0Qab`~1yS&B zC|@Y(poX8Y>>CaQ)f9lxMV|bKXd*V>Bym3? zUvKNWQeU0yCF_vAa0N0Dt2^n@8>Jgn?1sBw8QR3sdPN{%HYXcBG5IW;P%qhK_%!x* zTz)G_(iI~bQD+~AV@V4Lg)uf8DM=3>Z?}f5C^JwL`JGytB;{e76_KqloV|fm1#J1M zOW;d7P-F6!&fNrL7oi-|q4G-rE_wozD+^^;&LJ=3HCB4Hb%f8e9fd<6xJe0W&^qo8 zEJVYGv=;33qjHL-;1H~kDrby6Fqd!`EGDU@Lsf3Ut@|pyA$5Q3X`_@EZ)C}ojIAVc z<2!S`_J964d`4Ubl{v66gQe@jG?tjncuDWKE;XAV1KE1LC#<7prm|Z|w zndWSpoh2=!aJWvh(0`pO&+q%xzE+a?-$VdvV;zu8o(Ewhr+Ax^ z^7OjeG8r09rj6C>4JMERi>;G||3=U)?id{ac!wH*0U<7Ibd$30e>(34X-Nzyv(v_B zmK3QismA0Eb}I8YnnJCh$m+!cb9rn?%XQsBuF-om0z#|anN|ep!A)%j(Rw2VEmZP3Ko++Le_~9c7&`K5ENMv zl2jI)dC_n z5rQsb|hc*y}FSyLaQNmQdyIT`(h709&eThlGn?sil3xvcHSgMx9$2>YX4s=nE( z5|IbFxYIa`mo)~)0hl{+{2eHsk%dx|L);FT%;dre zbl$UwC^47NR@Gmz;DBW`=;6nzZmhUjp&~8P*LAttl{(q!OuNT{npFQtzWI z93Et$J{)c7BORWxMt}!q2YfXnMB=7PVzEQIf_(wvqArzQWWyf!`K6t}<2I?70HJ3F zusbEsT!T``i2!3*_l*T*>0wP?F(Zmyp#O~ZLvANBNaMB{uE0W_N{bmxeHb1;iJO8z zTttaxY{F$G#-QIgH<_E}kf#vy@tDdhJ>vzSY%J-zwsAQ)-p4Kw!xX$jT9lS?c)VmSb|IgG_L$2# z0n?CHJGimWt4#f@Fln)&AY?-a3C!}^B}kFWO`c1qy8$p3)u?-ty|y$yA1)m}9LmpB zm=^94u>fd5m%m^5I~q`cZc$mf`Tx33gR~N`8N^Dke=uCRo=oQHS3%|=MU4-L3*HOL zfwa=?Y&ri7!9>fHso-dhZQ8MR=y|qZ?v@ez0gxk_HLV7dOvORG!iZRSZ;K@ezQFgH z^n$`y?4p$uN|VT!E*XuU{k#Q%KanCu`C%?Bdj~#7AMhexZF6b+bGglppk zAvAK~$}dXRI&YGk07nUUIhJql;vWK6WA1Nv=0HK-l|fOE0po~BNpWu?R2igbHCnrq z%-3=~weyvONOFj>Q|?{`BkRSNv!|4O+T*?fDwI)?eYUV|N(dqUmEZQR5@Cd&A%l_f zbd>2?L1ab7c`iNU8RU)v->p;Xd|2H7z%arOt4JXi&fKEbI$bA$h^w@E|g9`LCtlG+i$K z37u|+;Gi2+6VZu+&6;nDnwFbbDB?pvhO}v;!x%lv?2XIe7{p)7&-IPc^g#BD7d;&6 zfr&4|d`-%^VK;Ct>6i(jWYaO0;Z64WTm!UX>9tvQKJJHT5I`(?F<7zRq2>MA%D>3$ zp;HK$9KYNLT7{xF5>}w|#~qm)autw3i9y)W@6f7_y-xVKOKvIZ4E%rTz5KE52ad~b zOpv~eQM4=j-y~gjgeK*0QMRO#4!{XDqs}c^OtGxAys%smoD-0G+UoWgc&}E4yQm%! zSjM&k{w&NNcM8M;G-IOV3GZvpt|{BEL1F?>x$Ljprw%X>bakN3sqCos{tqJ2SSo?Y z1Vx-)-jf-m4kKy!H||NCHKi(*20>pY1#2vTIqb2s!0}GxS#(zGGK2&eXXy#HtaM4% z;8ch_QGp}X#|J%`^M5V;HbfPZ4fAloT)voH4~Qw-HPG{N$7p|Xzhb*%No@b?E*^qI z+cDJ(F#LhFGe){o{6FLd)C3*nAn2HYKZhm{hzmaGzlxha}$Lzk#Z4$j#(-GodY0ed_GlEkO%P zxGLW`?~9mLyVPG1KZvf)h~85!(uKyB7#4oo)NYWwJ$B^LXI5gJ4dIFOZ&TK4vD z$FL0GG)&mJZlBU6yMyvM?T*i4lf{0CNf8|^Qlg}W3XAtjBF3au-WDTWC!kSf5l=u0 zjoNlH343Iov0WF)I)kPRu8vMG&7MMJdK9o$w4{SM8Lnb?n*V1@o}JAD5-c2Ad~EMl z-5*>~Mp5WM)8OKIXPvl+E^E|zYoqNa?hL0##}Yd!F4(bTUH?pa3WCV>i}(}nw~5A; z#xM47l`+2say=EuC1^dWREAraUBP65clMwLdfIqb3G^ZNR+Y zLFC?^0$I}4FvaM)Ej&GuE68OLubKItq?Uh?<`S66o@BhFPwiT@y=w0mDF>oVU9n5V za!W6gCiGj8#hVO=4iV-|0gW`g8dF>xCn&*8ouyQm`?}>s@5S<`)29tP<|IJ8JB)YQ zb%of;vTO9t-%w-W1yjdT=9CpDYm-q9BrA|7`LkL+b-y%Dp&qS#Kv#6iP!&kDx~kF@ zx~O3zQY*Bn-Xpn7c(SE`*d>&!AdkCyy#WE?>cd0`{c_JwP%EHWRx!KkU&+vZ=0SA( zG<3lQpA5^X0Eh=C!m7D?+p=l3D2;YtqGI~)yClcMcSC?E%l_Lw{&3|ZK%+yRd3eQp zudUI#ouV1z5%Jw6IUn22n9o8?#6ZBO1Pv2Mrrdnji?6HiW_5?%r3GGNej5hgs~ty< zfsd82U$b90JF+BPyfE}gfrogWhaC~U2JX&p3&rx7)3c%YNV<*UadSD#me3Ldc59bF zbitbej#VCZRQc(90^&UNf5{}_fo4jh$V!#+4tGnDVESr zrVlD@Z~YQ}zeIC7B+o98oae-R!Jm5(;eKU zz2t>{e+szqvw+J0@W7nNseEJ)8DVH_3$Ad2AYQMr7O?>fDl~6LBP|wHE&dvA;v?6| z>wy84Fg?_xEnLtK8sU<*(e_965av*pYRtDb?T1I>{fW4UHQ8`60E%u5S}))AKKv@B zQvw)VQ0M-6w0^9*CD{WWqY zz@KEJ^!$0UdOBzgzZozDcW$vbPMb?o{0Pw_si_JSD!CVkiVmG>p#!52Q!o z0zQwXlO@URf`wme6aXxb))8Lzb)I%imS*lTXD2_ts+#XQq!ekzWcfdPS%bR0bd1E8i{FEmPfrGvj|(ag7w+y)LqIUY zV?jNIYumd&WLc=#sxsK03_{A$I4|MeQjzDhHyR)5;VR#V0EV}^mEF83$qk8v{GgHk zT_|xAdHBQN(1!*O~v6}7kCgZV>hM7u&o{omVB05C8d{ON}c?SNmqXKE*Q<5U* zSsnXynF8WFQpe91$p{lPYr24I3;RT@2)dkSsA09yM6^@=1ft@9tbW>Ymkbms2!*7Q ztz`!Y!JD!09O$!^b&(GVQZTQ=q_6L+{CYO?EkF@S2Iw7^iA++%f0~w*Zl{diuuy=?icId-T_q9o&8XnIZ6d)?+0ex>emqgy8p=2rD zJC{n6c0>hn$!#B_N?Y!XfbF8FgA=kJQ65VbjEE7&%5U%!EnwzJ8TqM)2kOfml_}8C zKqF*om(BRxrCrK1g;A|jK|7!Zau*mv!^@hr+?nEMhYLgQ2vH{ivFCPsfYCSz%&WGkjP+skCOd2Grs zXvXCa4WGI^0PQh`Xo?hcl$zs4KQWDO`X$KYKiOpN^$@=7WYYoanaZXP2VyAwV9W=4 zz$chkNm94Tw|un!x#W(`v?`0+P9GPC{hU1ns-P^+d!-@+HZJcqSV?VuAu6EwYUfeBw;YN;4bty{p(*#r`mSv=_}mk>Q($X=9xr~w#9 zFTzm;0U{JU&5_YJ2O}zS*7{kFQb~7G1UjAW<%nuYgA_C<0~P~9-D3&>Py{J|-eEXg zZR4r~CCkJzb+!k${pj&eb%+E9UaW>*@iz z1b{7sP+h+~b2htYQ24C%vs)oLX+cJYDVQ^IhV%(xGFp6nYI>5tB$aL^?`2=C96lJ9 z6uHWE2L@(*Ha#~1p&x?}uL;;P3>aXvq|x@Z@@Xy06z!36mBV*@a*-euNt0(s^p|Km zGbs#14`};F4DnR-VpA@i!~6jNxwBxoGy8vMD?d#Q3T z1?IP#KiSLv2QfN&+*qG-H!Y4S(_NGfhMZdw^Sdh=2%-Z!^vjrPtFY}CINX{L4+pM^ z9c#+&(ic?&A$zwKwOp^}Go=9Z-i*S+)>*a0=2DD|s`t2$$$$9A0Tw~)`NEc1+u z%3p*T)J(RjmjHXzG*e#%Ya6i7esfBQG?L!i4Y{O18x~pS440>O?v0P(N9wqv0k!AP`nDTVrJ z3x*Tw4P9uJVG_MvGs6oNIV@O6ihkj=sOzKfNDR66Aw3BHV_ngqOLIFTF`aK58(cmF zl=%~q1pC?ddVEAQR0hgpeOCv~|G*hxVr?6(GHr_0RbK}CyrNFm&>86WF6nf%uM z9(GSMi`?8bKRfU!;tY)e?QXuWDj>TwCO8W(=LYFcDxgQoQ*a&#vN9m|@ES~UpAZ%%TS znS|Pq)F(z~!((y|^1cFuKwo6RgJJn(@hy=){j7E#E|U{ybhkh{7KaZ4h)LnHQ;c?5 zuOmQ>oAr-KkNciSj#H6=qUw;DdBTXy?O0)2CXKh+Bjyjkr$qJZxB|j{05S(4{saVA z1uBVYG_kkdzgVkFwtbn0N)*3>>M;Ndf^3@6|SgU<>i27%F)CnM{vjxlw01&@3`8lv`7x-$dS&=1-t#nXtnRLvfN zi#iCIlRX1$A^g_zauaIEDT1Ay>UWLyfmh^sn)*giz9_CkEG{dIl#9C)CDl3RI@$`w z^%5_oBmP+|ouR&fhV4KM zElDKQiQ}YLR$(!)7`J$hQc3#n6_hpE-{u3za%Z?3!+HX3!Op`;o-|F!Xdztp;Q5dJ zwX5z547IQWEU@z<0(B@*ULyikMd7tRTb{2jVeK8=L zH~V8+f#@9%ixbA;K-cTY18S6aOZ-lS;ylZ~P}Gv}RH#JmNG|{>yAKX>^ZOjumpv3y z+xc0}LPOy$gLvsWdZJt)@Y z>B^uDO)nBGrgH&M38SOiWvCLrXP_P_OEMvvQ3lV>kb*_WFa`uL@Wr-fQ0OC2d?Bjt zESYPYR4S>T%>;x&r`R8$sN9eqO*o4n%3N)8x^oiy7fw-Va#h^PSQg({?H6B<=#NGS z_?UG!g2|G@ll@mz-{3Cq?IJBxn=!&PuOF&LJEsX5l*LGBa4vauEGyC_G?utbn>Qsf z#ze0Uy{Rxi#E@~con<;`Ckjb#cza8<7Oh9#43@OLc_xYUO$5Fk1@sP|XFJagffQJA zPnKQQo3yPbes%%p&5l^lhLUT7*u+64;&!YOvB$^&eFD_S<+fAkucZrv#EjP8 zBq({TG|-qy-|uz|B%Q#|R23v_bImQhb}EEOa=tXY0q#_8}5$(3B^zcXmi5%`Q=}ih|^!{$=hO30r zR8!y$zjDdSfx}?Mo`j(2Se&Gq80+O3|JsvB-7g8PjD#E$72|rg!HkGMkYjvY-wiXw zN&8vGIFCG;XFHpJfY%Wt9GBwhn*A~*&KOA2*jUeIhk3udah+Y=2)2>)^wlSU zy9B=1sVDR!p>$}0{UwgzZ_j+lfP&K4G!3O>+Ykk>?TJ&8UmB|>o+P#Jb=SL{qjkwOrVefW%& zd_sM~90W=SYiukC1q92Cc3SU)K|t}Xj}kDJfN6?b@P^nO%WcZvs96{M^6E*I{o+id zlBgQViLnU^F2>vmmAd=hx6O2vsukA@mMAdu{%daGr%%cmKK9oZ8|3-vja@)0GRzq1NWud`Rd zXiDB|(Y^5DqwtDdv-<~03Hk72lZ43##*OsS+Oj3ifB@{YsYOwvzewo)IBUyV?)hjm zhmZ0u031LvAv3vf8We-r&tBS&tvC%G?OG-}_WEHUyf#Vt2XPm>eNh9U|G6lPGYq5L#nq9QgLp_%D@)OXq-9-%R6M&AQ1;hq zXI3D?tc*AaI^m97;#g}cD~w%8{%n%(L}it%{Po?=E)wiLd}l69nQJ2;WSP)LMBMcH zoY$Z<$s++}{Z#&XwqqyxsxfF$Lw|Lw1FsDA`7|*j$ldc1$Qv2sYX0?C;3~(yg#=7; z30-4{x+vEZ&E^pT--6VkE&kP4V9-1zdSW1Xzh(OS|C| z<(TvhUIY|B7A!?;}1$U91#39_~;{ z2t(;sP=>XdWPd>i24)LmQ621DXk>|AD2=xIngUxwewqLj$ZU3v+D;fbxR@{_fN5JA zyyXbaL;-LLf|yaybL0$({geR7D@aTbAl2P>WWb4%h{3G4^fkIiK!4!gWE-SD>|e={ z&({qSx9HYmY_m8K6YfF>YDZTlXYUe13P*5>U|IUZu!u(XpFF>3q;L?WUQ}Z7*&f)s zjAR0nr{;7RdNC1TYezu&VM}kJcCyxI4TXj!YzUH87b{0Vn@S%g9@lMwPE8j~>Mt#n zS1xWD!uMJXG>Q}!Bam>PSym=u@XW>WUl$O#9j0NnJ;HeAb+%SKyhA#=NJT*1Y1t9# z;N&Z1BTN}$dX|9w3dgVcEWGL`=RUgfmsb#pQ$yoquHnq{77Khwe{m~~%^;*A1_nEBfC zQTy=Q4#2Kw_yo8P-QZIoR+|{uc;sgPU`bXViMdsMupE)2JbW;#CppBZ!CG+KNW~+*}Z`UFSInrdh%GPBxmy0;@=Ck;&EY7>jUIWC;qUO zjKF$_FNPYVKbJ;K7==QdsJ;(@=>S&&*3%v=0yKDz!MDn`f#RsOt+N11+|pohHWpD< z4-J`-I%Lj{xVe2dgy3VaLWi6twJvrSe5kHHMH%meOn0O@7Sp5$Qen_h1UPz4TE z8{>(e3>%j6u|FLm>=U^0)+v0%}0UYl6 z4%_zy&4ZyL2um1B*X%we#K0#~Gb7>cmnKXRSy15d_6qo^9v%$0j6pAN0F2#hfvuA| zC5Wu(fvp#xxR!Y;CwC4M4-z!&hwT{b>1vPt-thP3TID3EQHo-PK*A+l&Ag^!2rNZDppC8P0)U)JKCUpP`M002=J<(rQgTK|W!MP|Z} z#W23cbyJciy;9Um@voUa?#i7Sx2jWCMr7U`bHUnMcE=NrI;f%#b&42p%?8lMR z7r`SET$bOn4f0C#TM`1<-u*+GlJTV7LlUi7Dm3v2w=dvUKw`%D2OMYIUet*Epe6y~u$Oh)(Az~3oCGi| zf9EBz!<(tNPkaTgNg&2e1&4>RBxZq90yV~vH?(a&VaJUwA(E{)Iy{=T-2ANeEoO*j zgZ;8#c7`MAAc6v}L*$qW;P)nh4<-@42hg|n>=FNi@bSc4l94s^zTv=a+v8b2bzr5! z@YrPmIbACDpaSO8$fFD%?$a2EA1OI;v^bVXJVa@D<Iq;bJKL)0{DI)4-?yaAx~v@N9>dd*^QoQ4hZ~1&QfSIm6ep36a0FP9z!dRG ztc>PXHi3FKk)XqceQlFckCrHa$^=;MZc}VU6at%~Lj*jq7P@(gr%Kx{ma?v#+otS? zXUiQsNmNnLE*$gb$WAQc9_yEi|AjY;jDD!9n99FbEB&xbGD#@gi$T_ERgfB?q5~H+ zN^*Fe0N~veC2h!;;=Niqyh)6wkVv$5Lvz(xP_bLV26;i;1@E`pElYSw^iz8d@6}FL zHW)~#`ABWF%-Z^YYAynRY=uEX{sj{Y07HDvMuig}6CkRtgH$Qb_o z3ruYxzqke^YQgph4KK#>^b4_gR=9D#K#BC+;O3&a-F75FKNH;@^{k6iKq$N*mJ&wd zGWh)6I3S--GOXalk!gXBQ}eAClQhd#vU=CoWY3@k%l-ErT_3A@Cdg@AX1I(|SN@$a zu0%Bk=)nd_k=Zp!#xhlVf3|dj_XC-*cSAw_g9H9F0@M!z{|NQb)l#Dz$2&8Od#mm; z#cK6niY3-FQ*V6AmSD*LhHc3VC!7)*^Of-1l9ZK{3YN6kM|x1MP&qlljV+fUA;;(a zCdFg{7eg+2{|DeUsc)=I=p=9Ddj$P}N>!ZdYCv_Q88Rif zY-W~-#FA;@u;G3BrTe50ktORKoZi(K^fwj)r4d$EK2X;0G{V5Rm8a|<`rD* z(ZNJ?_|;Wo>=jc05X|ugilWk=h2SD+U5I2 zCY0jnWikm_XwCmk$h8r3S?@bcRWY`*US-35 zUYtlk*5$ce?<`loY8jQ@!4wBIzWSIDvD(?UM&w}n zf5KNT3m|5|_>1GVid&A8>cwv1s>f96O>#VYm^DXPn}4BNy|+-1K8>CQJz@(^`uz z#GNle3&tz-5xYynBf?`xumKW?PfyooKkKM|$t8xjZ$dV4JA)!VPI1r~K`-AxM7x;I zG54nEolhUXJmU#=Nyq?f1)i+BLRi#lWk~F@^xaaMFtM<`rx1Dc3oDMs7MGCX)_@kec7Mhe6v5btyj0tkfsC0_DXFpmTVBIR2woPt_5GI*uzwN)j@oBNydw{Ft@XcmUjk9aGf@ zEomu8kN;3`mk`bbFA#&TMFXE(6#nJS{z`!RegNESDp+Mw+g)-8umNLC{U<2g6(13s z1|n{sQrynxbA`iNgUUtIT%Zh&M8QO!*_)Iv=YEGA0uabatf}%`>qJ@rp*gzTV+sJ+ zMF2-?Pi`l0SiDIniRYxI=nPw^{r3*bVXc9_JLzh%LtP!U&5Ru8H9c{A!COfs5Uv?6 zLO*#v7g~_t&n53E`_dpNXIsumd_+k?W~}6D^!`6B(g@WZ7-)RXeEVU~OPPXlb`+FD z)^iocz<9mOW!hzdF}XuC66NKv$9liD#$hdcg%e4A`L}jQL|H5$S~f{dw*3yJZVreR z@5=ThnbdyzUXsI0+KOr6-Y4`iiWVtyv}K9Ln4W&d0Ai0t&68w;ILvq4;KD3Ip;OVU zvy4EQD!@pJpErFN+`7GpjE44nzQYzyaRc0I#KK72Xy3=?C;b-^*?xUpIVX;^)z#hhG;I)zid@5iM27Y1Q;7jq+ zs5@qF40I9cC+$W3`3F4*Q=jB^Vmqi-uL8-0D#Z572L36C*TZQs(D;x*X`If!!aeY8 zu5BRO>1tVDUH+l>FyveC&~U&S?WpYCI6BAbx!w~3!1grIcGEsW>^(~3jX88 zna~WPkn5GDXkU+}={i&a3q5wNy{LETj4R?yH@SdJdpRq$niAz3h}7AyQHzhvMM*-? z4!x)MYDa_$_6d~#nLxBq90Qp#fObs35KwUC0gk`Sg28e;CqZnIaX8z!sL+)_OusiD zju&XXfuRz3Sacy@r>HEy&xdBx2CigO6 zfA7VP@{`QH;WN=~%Zqq`5-BMZnk|4NU0IX%%+PS1eoRfT!`2V)5xK>wyUI4-5>vAK zvdf{&Y85rwyFXees0G3GZuP;xV6k>M*%54w=)zVlg&H08W%+_csMV?6Cp$|0sYCh- z&*m+Dna9%IiVvDocID7z4BL@<`MZPVZ~N12mf{mA7H;| zd^tMNVtK{42oZ_3b4W)LwQ#0(#^dDGmN<)wU?@20#SSbuh69}K=c+SEyJeZ(ut(t9 z3U5)t6+IMl8FC%)De%KD)g_#bn^PmG#b`+YboXis2k#=KCJU+yy8S<&7TQldjMQ+; zO5o=#Q2Hq47x+tOnQ(_qsO9JZAmc#ymNBio6)52ud9uQjfi2k2_Fs9jv zil7U$XaoblaM@=|aI-(2tsI5^KsckU1P{{gs-^sE_cl0&aKV}Fg3Bu=<6Jhu8v$J$ zPxM)~Eb}nI2Hn66Luj}8i$vu=@gNXyjB1s+tfpkh=~&w>yBL#ef{h~NSrJuUDHAJQ zQFk3Og4+(5Q@dBH51ZljFhikA&dzjLZku)|pC*RnJ~&d#xHNl@6J3))bc$UQ4j15N zlXea$?ekac>gjahU^ECDfKl~w_|ZW`0fckBEEAOi$(sQz3=-$%t%!Y;C?)Vg6}JPB z+v?xye50W}P&tnqfQ-qsRC6KWrSg1}wogvZOjtSKy;??3In$Vj=dA(l- z9PSxFL&Adn5PY^3C!B+=Wg0d_VR%2=@q9Po4gt!+taiO)Dm17l_Cxt^i&3N53|MaP zT+K=P>%jekk`?Mry0mCuRezPZ6o4oL_F3C-@7^fKQG_A6@ZZawznsNHfDKcy)!@R| zfZ!UweL$l9T37rGoQf=|=ht#)bt%Tm)P7VPw&n7z_fAe}^*!3W@g^r!P^$s;k#l=L z-C0}*5r6PW)ZU?Ov3B0_pl29dr;eA|iDfJ$&4BlE^(<*_=T35hQ@tm5_`$Us$4Z(h z#b0Ky>;$a|JO#@0i1RX!AOyHRbR+5OhaUIKv~QXiQYJnAI(1#>Cmd!ICFOg$vyE3o zPFY&^mRW9B=|%=j*e;TJbxD6+`3&^|ZMIi}l21?-8r6&ryGkDCmZ8uH(g0`A?)ATF zDS|Q#ru;h{J3)!@fYg%i_vJYg^V}mLJWVX5F_*Oq&owMMc9nK(bXXNn+o=XP{+l+J zCF~(M2VIPvl07NdMz7`Ws z>r*~GK*$6hn1-wLlPfT9qv=i$AZ<|S-1r(B;=pmXCX*3Hq#=%exdTiQBDNDn zcMv+5E7&DYfMPK3^nr?*mJc34mc>UXSHo#(4K`(Rbqdl z`NHW&MT!N9s(krIcDL`6bs}9^z{#tS4D#-ca!>#Hqdf+&$M)p3;sXpO?c3UYIn*e~ z8_@?#OKnVZFEpex8j2))@2Gs#;Zs`;D>o~=b9Ib0yioL@Xv^2?jhhafmSz+ciL;x2 z%gubWN06~rkP!)S!pXh}IR`+<_JUUf%|4u+5-Kr-Bp$l2zgF)VKz>yhXqNImog5wI zd<=Ms+-|jc?P|hi5*;m=K#%#?v1LL>p`s3nEmGar4Yh%UM2KL+sl|DVah@F>HvJyZK=Ox-}+SHV~d=95pdAO zDK|<1by3MIkfSn;flK?jlPLHXtSmGhV36|y-<-OxsKqjylX`?(X8p&=bco0g`FxX$ z?M@xT};4dRwFG{Ff30bCIpcgc6+&)N>D7hz2r56uVQ@+aN-f^ zli6_$^dcmUy+v#rSe8c^gXPs7T%E{}ZJP&1(+|Znj#@e#HN=MPtAijF+I}51xvIl} zp|t2@Q&70Fk;*}@b%s~-BA>n+xFi@70AX8P3>0z(y9Vegw-KigfsuBRXEzR2<;Ac( zBZ7-4#x+QPwQnYaq|L~{0Fk8i)v#=+w5Srp_Xma#d=n(ZPe{C^oGpw?rErby3u+nm z`a1a7=0=!A6nH#1AP&FX9e{t9G6#p=5juhg(MkBF0pxqozFr!}g^K|O%3wA%X1W1ba-@|J2?-;=oC?mW5AaL| zcwlG~+w*~IT$5B)AX_dTei7cTc*3^y*7L8YW_ecAkFl4e$(C4e!PkV1N)F^XNsbmL zaef&Ljz@a1H0qz&zt3Bdl?zBr*dCjvgkkhxGRyl};f$?NQQohp>D|cFS137V32=~N zmz@P-G`p~m$hT1uHKsz;FWyGdz#JoI3tDv`GSOi=;bd z#Yv4(0~DpG*!+Zf*zJ2<&r)N1V^MU!vI%CQ(-pF3LiRdxjkszDK4Kyh@_f4fgmG#l z;1UL;8AFL>*C)U1tBpskI$U^jWS|8Y1135b{ngsahdvsr1e6;Py~CE0lan2t69^J* zc6aJvkb%4h43sB#TKJ_C7=l>B(92Tb=@{mMh;`8gfTl$CsEjV*#QYaSqPyvXl(@_J zbkh>!zKTMz%tf29Pyru`swulI$Nx0_KsYo?R4@F_;cr{A-Z^%0*6e#=TF{mzC=Dkx zrAf^bV)&la2IM#yji7lye_j`>zlE>upZ+b_I~4P>xI=BY)Jl_X4g*ds;M_V>Mow%i zTG+oI@;l>de4U;y(+KI(D#B5Cc{V|f9Z(djWekhdIqZxEO<^q2L{^NWl=Sf;tCiy@ zAM_=vt3bJGcGIQ+E1UZ}iqyIAjTz=pZ9gtvR~2RO#(Zn7COiiC=MLRr?gD`+ zEi5qXf$c| zV#Jg7Ga%JVE18-q?E;x?C_j>nN#@V*^!Fkmyr#oyxWPch#aIiv-?CA~Vja#n0*k$E zKOj3)@&V|Ye7;vJhfTuQW(Y8-0h@Q`k^ZD9W4}M*x@!WC#1B%)(Kf0b?#F73Ad)doc6`iI??o@rSO(k$HYH17W)({(yQ=T7>N+(yZNK zmUcnD{oO_7KWXY_#^SRgruth7YhVIPp-=m{}I7f*2Q7@Q^q&`E}|^eG*mCH{R2Wh3=sm! zP~yst5J9m+FLfH*#LZ*mwc22{uPK;aF$_}3M)T@X^T#B1XnxXX{?-2fLqP*&cTrm{ zv8co2zimj1WStoK$-|vu{nFtAa?+Hejx4uMGNVhA*XhsdD2rXTN`-Xu%haBOlk5GPP( z-2-@EUbi-QWzvdJwA%I2eqkiZ`{V@oquq+ZEv9a%FIp^;x>Y^BQr(Uj#1-cxU_OL| z`tN8v6W!wG=>lklvr4C2V2gEala^DtNylIV^Q7HNfs7RHsQ0JiUADu!9P}q}+mg;y z^3|ZfkheBUQ*TaEw9&(`m|P_5|5`1xTKTl~B9#jiX#jQBmqSYx^H|1-s|oo(fMbks zqqK}Mq4}QX*qHGb*15AATZa+zY zG|@n?dM3=_FF1%3%$bSx2LoJ1j_sX!wh5saLxVjTPZ<+X;y$))H#>0%J`3=K2>v^qJ*~nBBNg9Q9^);JnVTaN6ALK=%@{A#R7F8WjKoOBnW;ieDR!=oBvl)T#x>johNIQi6($${N)#}j$ z2u9vjl2J`>=T;D@s8<&}uHDWI=Ry>0fhgoljKNn!8}#&SfK})>LJ!DGKT8@cLHf+V z#-bzQI1Cle3_@6r;d@F95xk_O;L`J)RU zG7Bh@38YPtqf;RUP$6BM-&6g)f9+Ha3>8UEeVvHC#wE&Ty5mV%1{VX=*fr{H*O+3<*3Xa655 zJPPW+&{OK1Si99J1%#@O=x5gFv!x?UzoC;rI$%j$ zTRKAt!UManNpg2AF*JPWQ06UQuaLxiJR9$_on6Vn<)l_AplWq_oJmszRdA*ReNlK( z7Y0tHX1+b;Yq@kpv%|6nCOi0{GlqTQm=_JTbK?d(F-K*ttNimPFt&yr5YZ0T4V@*# zMH^AF-Z}~uz%7<+)xoy30V3KZf|K<}nw;?L`cwP2Qwda+A#`(HKGujEFlU*X+Kk{L z05~7mZw7}DbjDS1><-uQvw`7l>PX1>c(_zJy+V><Jjnc9F2Vd1}gH*i-b0v}=aM)nw^+Z5YYh(h?C>XG^H`kY+Ph?v0^u$A98&T+LUy0P9)cbjG6uL_wa zxw-!9a!nxvZ5aR*gv#`eC1)8irsWZ)-i1Tjy39M{4G4FG2|k+%F6rthu?-IwvT>#C`KZrC%bd+Rkwcm z)mD}Hzy8<%&>yhRNj-O=UH=NqXX61_+JI+mSC*y0toxyXUW=fI$Moit%qO{gF>$z< zE%yQ3Iq^dKi5m-@b_h3aV@U`}mV+n!t=ul3GfkETDl9^7W+5Z8JD z=bPp#DX-a;C3=FRR2X7I_`k>dL_P5^ID#A|aFay@WGz;WU19on^q6btPUf=YkNO;n z6&ZcF^+YYO)q`nrxun}KgU{|Y6)quA{RW8W?DQNUX)VF4N2;&Bs?)Q^Bi`zgh3#k~ zm$fmaRLJnC0TXhR`$*zhbHiEc5ZY_C^BIS~NAs$QOukk_?W)la${YwEIZiN~*aV>n z(_?*Pm2vVOKLIoxHt7I3K*zsdB0tzyv_w@jqp*i|WJ~J?hc_i+-z1~&uY&O`lR_PA zR|}nbW?Zgc{RL=Nv4AUiH2UL?p=sRN>HAIANXv&G6O z6H0uw%WlHX&Wg)P5xL>Bik@V0k|r=6lCg$ASbbjKrLx!;J<{R?XelciX&kL{9i`{Z zC<;b--crN%3L(~}``fjSNf=gp@^xZcpf2Ey~ zzTRUyJQ{x;W*MqVdCBc7g(yQ-h05K7i=mn>ab&3JOxiyW z`IX>>!(xaZ&}Xlg3z0VkaZkZ`0LjRO66T;);B08LHU)v_H><}gfVl#?G1!FoXf(ix zoL57nE)p+5d%))GUT&xU+WYl%s)>WR1)={N~dF`iEN5Y~sLw?ybKYlD` z%O9FfAl4HcHsp_kE9E1)$w-usNl;!hOyEk`k8r>D>8O(HzD5@B&nJPLHdvM9D-%?mxYMYj?~21V9CZ zqLoI9-A8%VQ0~4_CC9)E)naFecMTmnC9@o6!KkZPc!gZ2qqWB-LlGKJku?SD|AD=- z9H0ZzXWo8m-DQkuPT-u5{3lbpc!{O03$$Y`U^gogv5PuxPX?t31RzF-{<~ct4gBw6 zf?q^$tQbYo<=PW`NMejmu&V#5zB5cgijX|$0;PA+oBX=2`Eam_xYRB*$-)1x8&t$n z`(^{iWLnj|Y+*Vq1l;-J>zb(wSzjOz&J#P2uU9?s=UjuGDblz2jgS6!S*}-c2?6HK z_dU}Nt1%s%2!3;XwxJZd9f+py z)FhJW&EGTI!y!hB#|@Kzcrnk1E2kT~cUb`isYOn|M3pGZI$5a0;&3Dqc8G8=q<^E* z{U*!t#-?kWS38k%7i)Wcx_P`Rp{e;-|m{ zl3PGl0D?KQ8ue3*45|#S7hDXDGfCEuBICUWfXnvJp_2wO5S^1QjHx&7=yKXN2OQJp zl3Xm(y8u`@G1DwLz7`v&wjFZFu#XFQuy-tgb#_W=&|%Z%-Xoq7mmMGZ#Qn)Ak-2KV z4t7Sn>Bk%_*{cZ){_InGWEdr$r4%8gp+0Aj6Zb|M_^o<~{_s=mMr1meoYYB56d2iy zj?$NtpXNmDT?k2b>&AO!$W8c(OlE)(F&S-z+}@RU2)h+)H7sWU#;ma=rx|&V5-GpK zW3AZ_Yh~ILdC0DHW=Digzzw*O^1*V>z88`9z~W6*fP15Y7kgL>lUU%b0y_8L*eyou z_7#zXpl7m7_!uI>2ep4n<@;PK9Y!`(d|+|V)o3H_&cB?O5WUVWv1`wz`6d!1Xv5|7 z{9f^}mSpiU&BVxP=IHNGa(i}t31RChkXZfNyMqvC&zzs%Yo4A<06rLiDEEyG4XDhq z*oi3N1@}iRmdDZLMR$6<_F+4Xz50;7Z;}*{Cv)gFMKl(nOqArjPre=(ID@(NX!L*? zIPF9Dsd7-0cgJn$3r-U#2QWxax`bMe6091}cSx)C)WM<|%{a1Nig#^)FuWNU$R`v9 zR|W#|84x`L8TzBoofr>KhABZU&~5>1IsIjF1PZ`uN{qG`DZrI;6U85F&V2}Lw`S6< z`3(#U2qOjhDP>VoG@7C)MbD(^7+cXEB+$(4imr?gd(2% zex9C-j1latU@p~ZJ(3||fD96Cx>$Y%0s(0-H6T#s{>8AQI5P}7X#Y~=`sb`w1RsHi z4@i5#Z5t3LwSbRduf@z-o+o;qZWbDw_*@s27T&sr?m}KjgMC5AF#}3hLzh&i{$_^0 z)+qub;W+X41gNsq(69_-N@2&Hq<68M(f#437Q^6WfMFeI+im3d1=6KS z707B9Kh}OAIuYpU{4B%0Z%fDL&-lzc>SY)YrmoK7$TPr0P-~EVnA-vyGnNipHL3D>L}&rOdc+6xUFpB{M?MTn@*F2Vh0)q3rZQ5 zUOS2jv3T?f8p8X{)0}Xj)Dq0BQQrf#GrAf*@`z$y0Z8Xl-iUf~l0LW9g5_rI2Pmg9 zJ?;ICy)5NCPXk{KUmI-zr)khl6;Ten@iOE>8W#swF;)O>wI@(L%}>m11{z4Ef?pbp zBnOZVb#@duV|9aXUSP0`FVVHah7cq?gQx+kKaeaWk?{r@0t)fOykNbs&Zrwy~VXztHp+()wZIH%SJ4!%9%!wJn zEci!xXTzFRMpRxxsY?(A4SAH($+}t(;{_Q!i)lmd1!t2XTDI-q)R|sm&q-aq%rKCf zsj`)lA837z(#}HRlRZxF5kJ%F#TmMbxQikjye`&(NS56-lohn(V|+c^dEUy2MnO7U zb*4iUxmMxJPMj{55kaMlLV|7JDgIuq9#0!cxdc!Z?Cs3Svqw7B-~iCk7#{!mTF{5o zVkmE@=Rfeh#6cKjGG%$wfD8fM2fw9@X11~{^i>(xW44ge8xDN-@S}(fFq-)Ro2Nl# zfiNEm2_ZL^q6S-DWuOS#^R?Phmmdxfb{n|4-~;FxBnQjly**@GbNLQq5d;R}2>>u( zC!ijulIWT9b7gP1sx*6(oF0(mRYS?(Q8H+Dp96YJ$DW!Yx6;kve&zB0h;7;*PpUmdJ?YL{6wx3mzD z8}757Zb8}xL_NX1`?Wyh0+q4|Vx`UTB3Fh(BT%{(Rw)rfdTYs%o)X(Za%zSppPK(0 zk}(E1iRbZi;)=NZVKD$7jOjQ*eJRwz#eR%q&Ljhbc@q=f z=>9s$_C*Znfmf6ju;Q;=JEC(fnL-X5>N;A4j_d)`Iv{}oMDr_KPHqVAcImUnXK`5n zL1c)2YLYj?h}mJ6LkbyIi!xU8B5K$>q^E01E-BC>JoYjV42A-~Ws;yargXvKLI}Hq z3KUe^RVt}XyWE)p%Et%&w$oes{Ai58DhM7BrLFHCI9_Z>sv;$R1SqR{dl~zi0S;-n5hc{_mXbYp1RB0}Qd&&mwe|DioF!xiU~x4(NE}UC z#eApVf;jyMd+J4Ww|C#rC=L(CG~K{@@ciOtvi(N8Hv5nS?HhD0D%GdkFv5ya6uOPCU=@q(kFHoWurTPq!&3#V!9UI)_i)#D;m-pLFEC->|gCOl7- zNHV>h+@EX3!&6tQm4S>M>>M^Q zggywNl@v>#EBVopNy7 zgv&I?Yd44u%94rH zu{cc<2LY*4!W|29$uI{+nn@c5{@DAw9ottHR)ZV|tZKpM$e%5uLWbZW0lE8Gi}Vlx zK4X6L5FyARReA+q;kb(-DWNvz8h^R@Rnmj91rvc)qgYYvVg=yS-1@=uh_wtv z`&VNi+n*vAia!CPJhx7unUs~WLfgNOf*>-Sbuln&WwcX}Wm@5%Dz+)NrI5+EKBF(Ms%{bXeVL|F-jWx!9Q(#dEOJWvsPgf}v&sGzO2ZN2tBr}KIbgY)Ufd!RE^OBEG z;%}i_0}Zb|pDZ1oOs?X9dZ)y}{K=Z!kR|Dh#+-Nf6XQ3v|3feL3S;5|o$^;j$TqZ0 z26ho`^tBshMotj3FdY_dPyGTeaG2y7`LesZ2m>+}`!?_cC{Ty2R#*YIdd$D`f>@JIpYz+~6pUE0aKmi}87(Az^6bwZ{yhri&s!|MAC z=N1M2EFHs{9Rd>-qw$8XSha3T?mE{1KTp9k~WfBBA;lNT8aX?{=OgM*|Y!;D`@x3|C!o4g@yWKL@?$xmld?Y8Ut0l zNOO;xhCMRQM-8kZpnX*7>w1$wG#FZ-(AAep#enJv+7d0FNz3)VN8opUigf8*i`Sz& zxNJ!n4D1jn?7|%EzP}{}7U58E=;cSy-#UEh=-Pq1P*b{!tB=#zQ59*n+1ZzQ;n)7h zo^0TZP##24;@O5l-{&BBW^t8dgeHIYm~Vb?-9%_mH0|W zKyQ&-N}Dg%aTBx!o6lNb_b51*DRphKVV9xAHVrdGK;|L1zec(Y@M63W3E{C=Zl?#c z^xmQ`41J|g&L{*i2r4Yee%Sh9Aq>^uFa6MOMt@70p#A}3s8HZ_iP-*PKO6yYe zTN2eMN%t&*9#UnmcUVqqAxno3EV2zf?eCT7ox;9}j5SthL`==1D6_YImHulj2{9d; zFc7Jjvq)CqFCQOG)&#b78%2a5z!@CSwhLreY zeIe`Pfs)xKu7yabD!Z(d|V2EHocJ%pd?cFu_2MrNe|56cVI=1<5mMjBu z>*QTyoBUQ8)gb82hrWC8*psExlhLV4+>a4mTE}TyW(cJOt*pMNz?Onf+LRQ=xE;3p zTb!0a9HKBHIYWM>QH-OFdBoaiS_;qazmAzMHuU~@*tMH>1UV|dNcFr4V2OOa_g>hY zfes1aQCCJ~q-SBp?jpO>*B4%Nw0Sn50+Kp#lt_|+2#)5#14Yt0OuM$u44pB}Owa&$ zaKy-V{=r=cXE(XJb3^%Pq~W81TNkkLUVMgOp;Q{1foo{qg{wfcSP=O#@r4zy<|=Ti=-ggB@3OsNhgvgBI+QDi}T0|P&7UCWqEjC z4Tq1D?mR#cb|m*Um<*@*B@z*=>iKrj1#|!-0|FQ-zHjCn0^XlBfIEKl6MDyt`@D7F zSrE+eukc+0p9WTTfR_1k7Pas84;sKzQYA1)80D|kEO{$*$N*OlN3e>HjP(O~U3vs% zb#{->M%hlIq9mnk>jVg4fr%lgz3#4a5WwxyXy~rxXDqSX^{A&g80=^Gi=3c2z1c6x z5ZjR&Iak+{W$=rrcuFm&{%niX$}aiJ#*rzGmnUnQE@#gU!E-UwT#9aT*Hm;@_;Un> z{@NtRIR+?byk_w&vasmxG&z+awZ{Rydu&TRtJV+#kNnH+nUT~Ji&4_$h}y()^H-qk zW4JdE>Ksn`h$4I2OTV;J(vz$c>c8+=PY{(4p9a9|HLDIf?lp$bai0ghy zc!RJ_aRqGU^(Mm+9t(d1-iNICrq@x-zaqffOAe^{<(B2yftvyCo7ZZ`wjkFRuL`w5 zc}TC2Jn`+teyaCP8A=jYZZx^#Sn8pBwKIRLplQI>FCj=zO5}?KZ?fVyvdM8B$*&-7 z$T<6Jwe#e}ZYk`D)PfIwx+5Koh#e>wZQ9QUg$I*9;&gef7XL*}7O)kwHArxtD04G2 zl9^Q?&$Sx)EPhlO55e-&} zG_`HTGmDZ8GokmO+*Y6Tnfxy~Ii(6>*I6PJYra4rhHg=0NAFi@Wd?^SZ_(#_Ob*95 zOb+3pWsPJoT=c@;IvnKY_dj!4#K6d22jwTXl#S?wQQ%pd@a`$kt z^);lN{{izuhMN+$ZKCq8$(rWTm<(468vY}>aTfCpQXj+F1&)W+G+(l!WBaRyhdK=w7u9}V5_M-mBw=P1~AX`yH#T8BL*<l&JfKx4~BT_VWRq6VbfXd1?TNAAE91Juc%iyfi;Tw*}==?BEko{?uS1X@7O zTRj}_JgJOJW;H*b>{QT*wIJyMIc-NzdFZ`nS(f7MlXm|s;*v@!mrH%5JP=*eiRfCm zunNXL@brBs1S67?OzFM*K>_JQ@HbH=^cf#Cg3&*(GqPglBSZ^S&0L^D_!Gnoa8V3( zt;GcIGB>mjbhmfD9xR?z;h@{2`#JG!anwzb#&uz6kCyA^)LP9Wads8i<@R87s?Q~F z^&RniNZQCQ@P>hO1 z8?GaPnYtBP<)TloPQ#k5jqu$TZ~T^t#-c#eTRM%70!r6ddpJ;vyBpk|MH<}k>RrMF zwZ;>t1=u-88-)0!bVSgH-vpSt2$i^t>jAVt;F!6(K)&cM=Ruzq$u&N;ge8UNV)=Nc z`R`K5v{2qR*H4`^yWkjftUe^|eP?HYd zOh$pwgV+qYZ|?^C4H{n(VH58?5~3RN*BD8qhm-<=cpg22;BsMy1Y9(FDo5KtBfcW5 z&$=ePfPeWVntVRT-Rp*wFku?>sg!Tgk2H!;UtOLv;Ov8O1kJHjcMFTNLeXQdy|?m$ zZ}bCvgWi!HGfDc_&74G~KT=#suB=r$LohkWM9d*#g;hBQnq|9-(>%lOjQvv_1cPQnn21N% zZdz^kB}i2AVK^@hT!_uWz<3G*6)FI!29=n@cCg|iwd@rgqdM-eCD5@4-BDJPV~A># zK7A5eiUf|(_@ejYjR}4wysjh+u;g)n->e*6Qq)nh^e}O#?bCVt3J79F6KoLB#=?p) z_`=CCAXyt~e`1%;9yf`5KWJWJ^>eH@5GnjK5pIWz`DEbfs6Yy<`^fguEN3|XsV`Yb z-_dn0cX%v-Y^(uLPl>&F7DC2|&VnG@_bnnV;M0>8ju$Mv(3D09Dy!dxws|rt!AwYfsDD9wIEd3` z(Da}Q8XeW?pk_cQ{Rfeq+i}@W7%3%@Ys~s;7#z!LULNx4%t|chk8TqIe${q#5i`yQ zlcF+5l9j?fKhl@MB8(ti_oN&> z(87-Dt6_e{V(7W2CXaj)C%6TOadh+23oiGhL9i3I1@N4le9fj^$k87Bs~Jfz8<-0nB(BCvWJ`-!EoBnyBRFIgw@^9M_f9THDF z1f4=AB1pW9k~eimz(*2RSf}o5Lt}zcJd=r!+YX^Mekyet_mR`#Xq@(`j`+dpwg+~0 zo1|sx5Wu9Cgg+oKwn5HUS^*Ug@GlC7?$F;zJi?4mqL6E`bS0HZw9fkMIsOBb$TmDh zUIyF~+>#EUYQy%xwz=oUECz;-WTfM|^Lny&WPDTtNDN{o7N=-hrffF})+HH}SMSWB z8;fNIuHa7{d9vqpbfl1`3>6FfTnBAfc3RQ;vRY!go9uu&2F#cNGZVEt0?b~{F$V{R z9>sb}(-}GPA_9UiL21~j_R5+eGSzlQyT0eAG-y7y%g_k4Y@<*Q;cMnKq1A2^95{Ft zA5)@ig;Gj}_uigXbTmm$;7&>PBy3dyvF%16{^*uKX!F7!l@k}DpI;}t|~`+ukW<(Gp%8w-7>1{G8R zRt`u9dQwSivLT}jr>#CxetyEq^p3yOa89;`vLg-95=6@n5Z!3b7)Izs<|dV5>){W< zYdrIlVKMd#_FA*^lhJNs=s1vsu3@L)Y+L!oOZ@m|{sO)CL{eh_9oXO*ms(fBnpohq6F#bQzi?e5>(rB1@=+q4JlCkZZBS5d!|tv#q#sYL zaVlpQI{3+YJ5U$BwvOO_gPL$XdZ8xE7Tg5sn&)_LxhI+($Ds^k#Ta?4dE>C#0c=v6 zCLQW&o4?>}2$uy;T6@qwNQ~#nwIKij!FTX#a668=YWiZSB|dj)t!DT4K$C28;e_~v zi064oMJ(a0Q>_4y^2xPX_yZM;h%2|PE?K||p_DEX-tDv5y?)k9!QVytC)En2g#{;W z!nC53#1+`wtdq)vp}@?r!&`pUg-5Iz*f}`?qS8Iw{ivc53h}eF@>A2hCU^MKQ5ljD zr3bDDrP)I(t0=1v__1)CZmcn33w97}4~M=4O`OP+FlSo#ofA;o;cRE%Sdbn7!!8>U zHTi+W!_z?ew7Vu3Oino-Cn%`*vrP(_55wJpHlMvna{d_W_8H5td+F7p|LJ2O46Ni> zl@MqjF9uEcuCGa_8B}!iICm%{IHDDbVSCOS`b&d>vrc2xyOLK6hFk5M#7>FURkUkn z=DEm#7SVx?(;;5E1A#DrdLiJDkn-y-mVC;5VALYf9Mov^(QXnHxXHb#4Y!|3;DE8@ zZptE`#M*NQhTc(^abVMa_wFOM(+ok$g1vn~N3{}Ku(VlRvqjG=<lsPp5KneTts3v2vuDq zJt%X@C5FWqwjDA)**Yi>*)llV7oU*R$D&1n!AOOr(cE+cQR7bUixI|XkDiEypmrd! zy8pq z#a?G82pyy|_8!QqNq^?P8nPfqmKAz6WRL(ttz_zM>6cT(5*oMrGFQx!zmAOPhDazc zaiSv>9VInDxUq?I?7Amu@OMLQH^+xqYz8nMtQ^BsP7Yu+4 zm}u}z>n?FVoUb5O3pSW&7Tl{|Ig1{IL75i=X(n^(#mUedF*^@b7(m8d6PHJ|e}Fl5 zjx9fAYUv4<@!dEsB9CEr1%Ti0P*_2PPECJ@8(kt3nGq;Oj;Z%ser$)28OG-gYB5|| zZ1!cUYq?^C(GoHXw)eWjrx9|Ih-j0cYrNl}JlV+{3+`S;Z&!|m&F2cznWxhMn!P(> zDIjFboR^_neEKF^_Hv{T*u@LeyF=06UTyezgJniyy3DdcL_}}OpNb7{y{E?sA>;4* ziK%x)tF}vQ+WX;_6B0|(0b z7-aCFS?$wdmA(qzfv`rltC^HR=@z1qT()|1lT87ajVmg zEcgRxW}=7Qhu0tUd`6_b*=q{#Sjgpu;ec{$-c9)#~Zl7_uU0TCmI9wm~o?J4R~=u8r#0V?^lyE1+$@=X1!n!{Ia;b%fQg}MD%;Bh zPOo6pWcofUg;k765?8~#_bkYNkFp|I36n0`f=CrP9=E99RdC3KEAR3?@Tid!#5n80 zeB#|4`-9Sn$9t||AMTiQS(`S|!9l2$4fPjPaR#aP&)c){CXZcRiZx6Dq)j*7{1HM< zMX#JvF}kXtMHqxr8(=AT8u!)G8U9-m-deP)vH+D|=`42WfPKNxa$Ad44JHaviW z=^t?K*t_t}P)4bK0PILL?pG3(F+G$p62^H3LaEE~`B&@z;F}Tv)BxFpD7u+XsmUrF zKcc>e&UL5}K*j`+@A=i*5x6>0pMgEt?1Guj76wrf^#@4yZWGD|sYi%oG?wpsgh-N3 zaSP1OWYkL#cDqS*o-7j)0v$d_z`zIqYPie9$-57tJ4}tS{r)$A$!jab~qQ zwbvVZV8MsGlWs+)35aXMwgI67M(D>LYR+=6ZTJn2DT%ZUlDMVQMC)}#x&7@;9xqa)xo9wA?}%#s&JqAH;mwz^MDagH%?DpFsV^#G@Px#9R?R^4WiDOmn6eDg$t znGz##wDt9D=lM_~G?4ydCGK#@cp0ve@Wa6J+yM_hsHif3Z}$@*Cec}VmEkI1-y%Uw z4h0^xUauKSDEk7)8Tb^(rK5fIN)pbb#)fK0$10g3$1TXny5->1fOdK%f__-KDh3L^ z*R##D7;sTx51!J4uUbx6nvn(BKN$OSCh68;ooj1Ww>#J*kD=^0m)OHjV;713kn~w z%2m&jk1!nhxMIGCt7P=m><{o`#E%+%&n-xdJ1-=q1j@cXv*dObyF^Z$Vk2G7l4~_A za|MRO%O!7*!=dYaQU>H_Q0505P!_aDP`v=NR~GFqYfeRfw<56@y)_EdElMgUpyAZ- zF&VTki+y^QXLy>ZsWAcAB6TuHOjuIG#c-}KA(BxF%Fp$A10d+}Ex*T)?d4|$D(2}n z#p||bXv%{?@C%(+kkvE7M7i7nc6Qp16ykKLED-z$zpz{Mf^vjSs5Nak(Hj9M#e5P1d2yk64Dy$>)6&(E#jrX%g)r(f_nb{=qV!$k78% z4(QdqRoxK4NB;nHydU`j?G&NoD(|%i#tu`7?+So;!L&0bHJNT|G_>k#DuVWT=9-{O zg~W)D>E5H40GRf)8vazB85)yt-~ZTJOca%I`rgdIOlvFsFmH==wL2H-SW8*KRzSnr z@djn!2SAi~xDTU`r}zi{!iUAUf+fuvCPFN34S?5V_dg`c+{xi2<~UwMhJ8y!4%;Z5XP?B7zgAa z{CEnl*JugC_mhFPL;?)3Rp0C+$<4sDLvdgaq$aAoAe)ke{$5)@<U0WyA212tIN=~)Sp2!*pCqz_PiF0r>zg_y#R)yDetZ{G)GW_q9q@) z`w`P~6?-*ENcsVYx9j^D91E3NknANbLLW|&x5c7*+HM&)h6<4uCC9qnCF(a(gAW_KU-{Ofe+o^%Zc zLRl7@YTv4BC}Yc%Ui3#_?0?r~t8gRYJ$;Tyuhve*KH<>&eLcyoun~HJz z^7C??mU;YaQy*J>Bj9t%RmeK3T4d<3s2#*e^Z0@z@GjnGtsl>tN_WcU;PQ7ovBc$R z3fpNf>(LMks&>>6kg4&Jha}n=+XlEvK{1E!XL`2>&rbIN%WZ}XxVShL4a*U-JW@+bP`zg4Uq*|w zV_WxZ{Ma4*E%!~oj;0v+N=mSuyzy!CrQtY+b5`v>kWc|Q*jj74*S)q_J}j0L1xbLh zwDf8Mn7#UU^fIbnK@jQ5&2e;$CEQVVTx{jE{}F?T$O{hoKkhox;Hg3M!U4iZ9YEwr zGzT5NXGHF}Qy=;;39CZHX~Fp{&>3$R&dsD6w%^3D4{Xy!U!0~%8TqN~kn5qLm7*lC z$=-(BGiscC!84Io$xhSYGJpzSK-xK&;P+%_1GIt}1p=GFlHOUig{WK~nCp=W*PS0! zkR4No@bM`LhTD{dkuNNcTtuemN$3+gz?69;g2N0<98sI)wZOO@M5sgX6-DgPjs-T# z?4^tFQv05_PBKW)H2~d8_pCoeP)TSAr&>n6J(}&1bMtrtxuxJNv?aE`1DIO6w&dY^ z3X3;9Oc$hQd!Nt6&T6mdi$DpnE4uF~?38LVU5X(ePS3LxzcAHA_58Wmx#1(fkpUBy z7DU@j&B}0aN(m!-ThNk`ATeO!m*)L7q6Bhi!8C48GGNO-LvWc%8PDVb6KS^9bd@YO zM1O#%Bh?!Z*0O{C52yeNwT|`&cgHe%l3hAZDL5ioG8?v(BCd-J8!sB<^P8P5>qzP+ zUZ}*8xn+@%>6bxWp%gRHb4-_kji)xrDr^5j_NK}ArI-lyY*SXwi;_zWDfc^WPqUr(n0#3 z`Q27MYd%?6uuBW}%FNNbAF!*SdqKYK8x%RE`CV{Jqi_8fb*1_bL|FbJ<}}#l_RWS$ z!XpE>fg|YXUD%_OH;L&)dR1!wpsCCZL(QI&wg}P`3Y6lltI6x9Vu&4Z(fP*Xv&DZP zD4`k45du(z<~qv zuswUC8xN`_;Q8`u(#3Q-Ybq>2;x>Z1W2P)ku=*%Vtv_u{LIYw2-3M}IdJTG$1Y*95 zP$rEGS96l6_{P~V)w4Z=Pt$ObDTZN~f{EhLZ$3C|e@mav`pu*PFw5;TO!qlKTdk-k zl9~$^UYbKxwkQ^a67wrF?qtTFxN%Mx*q1Duf(H^2a~$};J|wM@uP%~#ZKFNvYo6_R z+B#c|4jGJrHHoCkZwTcU5sDUvfN_4~2zL}WK~>$JEt8>~0tvW4Z2Y(?=4~8=(OavS zEk)1IIfNBe6HBq|-z}>Ty0VcY85SsdlI{lDf@zm(0~bi(MrpQ<$po{72O?TZ@tLm1 zVY2veO8a}|IXbC-m+-#nsew^(KGSY?_Wz5?e9>zQ@9t5^FQwrq=2F)}hQ-0(l zC_y7bs@&p?$NbY_#ONSWK1V-)eqaFEbUq-W#Jh-mW)sMlc zw_FH}k8M+obq9fSz~Y%(o7?ThEU;jGP7*3s_6a;q#V68LF9E%aE){+bQx}R!>}=un zFZ9keMl1!y0q=&(H=W;v~#-x-Vopn8ht5w z_Y943duw#)Yxkqwq(PlD0Zc#)XXUhz#cjoZ><#D-dwk?J+zo|B(Mw8p24)R$4jH{XKzF zfvW%!)AQJu5YYe;H2F+FhllBih$qG-PD&LCeP7Vr2ukiM5?9_0g&oq_Jk8Y%_Gddz zYO1;(xbuSa>N_R}t`FOoxMce&q!Ps+Y9P5=(>;=KEYFOPpxTl)98yLbTY*mHw6~Tu zx${{VSzT7A7lqx&OVNSw6Nxu!aH{)0WA zCVe&eu!+(hHjRmG0D<9}Y zc{rSm#zBL12{(p1oc7B2I^d6ns9cZRLZ-k^wLe5NY|Pgr`{T90e->;kay{;^be7#Q|SO(3iYj00oguY({LEJcyupY|)LGX{rzO z8A6YzEds%id0xI0FkGo!3SzVa@n#RhZ`KL_81!4Z&7sz#9SICLjM%S=L4c*fF8S2a z|7Ek1$L-!iN1(*Mjua=tn=)#cnXK}CY z7SD(^9EEK=c24LcB0&_l4pgH7#UlVStDCY7Wv^MN9&w3Ld3AUeFv9s|Ko3BQ$$Mp$ z5d(t&{BOtHW-9{+wvtdvPEW-Q@G(bwLj;k4Gz2V)%l6#~;F@fg6-*pm&J^ce32Ff@ zYA*!BF^T|vwHuqb5bE;0!5o?U0JOWpj3?+&vl&lOxsFFq%g)7dfRb>5N3wC?STy!l zfX&YfuFW%)bTvmX<(o+EmirE2%Fs?wAG+THbyhrCeZa-z*p)hg9k=M%3Tibl<*+I9 zUl`VMfrSUtpx@-M5fDc-)n>w!XJf>OW6W$333;QO^InZ4bZ@q6I@G z;n$1=#V8FkD#qir*r~$cN=)__84F^^?l&l(gsx-Ibk_%OXoL@d&j@(+S2+_7i&=a} zi^6Jmnvo7hsf@UTas#XCy}-aHW>>={17dL7WbAiR=uJPN$r?Rz}dmBXq~-D65|<+V88p&d2haCIu$P zw!t@Z9{_(4JiRhG>04zeA~-5@m0IF!v3Ytjt5^o`iln}}??(K0EzQIIIBb~!_y&Sz zSr$8&Blv!e?X(!2!GfeGfT_Bfr*I1x1t9P3{Z1|eOg5p|!_Iy^**Lt$2Hp%w0(c!` z94Kc<=j=Sd5JzntB$FtED( zs{6Zb&=0S%!9j!OP17uUsF)LimEFqBu%d%zDd+d!Xt*y~ZGUE852B=mu{g zArD;fROvUn6)>(uPz)^XL)X`9JVlU(sS0FN+6J5BHzXz-;D2k{%v8W~+`ek;q<2zpE(|hD*LJe$QAfg?K5u{|Kgm|5U2s>JX7DZ4Otz*8P>=Z)4 z^ot&F$@loFX0nm+Q^y0_OY32^ff{rdMl(N3!amN>M1Z8CEP$^#UOMe938oS9b73zF2;JO#f_Z^RoQ=byZOWmeC@`0`eraP#TWn@?TMp(8;BrC zzJh1im`fDjuuy~^R9}bsV2D6QjV%U!xBvp!^KT|0LKnli9vex`w25gUxT;WJuW_6f zi}IJW8>Z4|%r`+UY>>H9>mEcEwRCYbvYo$FTJ~#9Cu-1?uq7lJ#4dc6CK@kO=D9sH zRP;14wHs;&<^9d#X|W+sxQ_P+gp3VthAz!akKy**lc9z!3hJS;yt}ulpI#$*QbvFt zqwBHF2JxRlI|;sfYw+1)bdy?RCeblcP`|(&2`L zxA0EddSp_Ac`a_)etRO%3lRcc)3h)TdxwNm*k>e+J_J4sb;IAOHv%2$DP;b1C}4}~YhlX=ob*963FD|eX@8m72aNFoU);N?d@`&brbS%8V-h}n(9q$O zrH9d`eeq*A75xilgqCSAP%GZZL>?7@V`B)~_ug+BMdkvWIzAUWOUB7BOP=p)0ei1| zNb;1n(cB^q=sD1{ZK4jp7dy*5fdUU?y?95svNFGT2dXBKjJb6cP^y=AJb>=`2OU`6nq&6wLi*il-(L6>MSDJgFBP=Vaq zX~M^44#$?F3L~rfPRI9Q|3|@bq#_}4gI`>e&Z!fyE!{`L6;y()iW#*^(8VOv=6eFFha>PgQ>I}3&aGMlmywf$e`hV@^j-k5j9=vA8B5C*70z(wi)XaJVt znL&mU1WucwC)5)gzCHt#*d>TP()} z(cU^?6dmS5 zJ_WKX6gEDdAT-Xlh%F{wm^zN0o`wkciyjpW!KVT9wFo(~M-rR`aWSOnN5bR692l8% zmm+3cU%Mn6!M|{6VI^QuV@tUG!azZ`a1F>x%#%pi<~>P0yN~o*?L2XXXM(mh5Y@8J z8@{|v5QfxOVU;BjX<_T~oha$`-NHXWDJrubx*#&My{Tu?a3ww}SMCo=JFN#Ap1MH#sB^$Az_A9mo^FT_HF_l-w}tLVaov7SW0ruRR%#e0@ML z_Pav6W^bmAf24iI@E7q_pM@em9OW60f!X_XA5TEkkPAl#@m(FEHxfE5N+{iJ{OUPa zWbQKb%kS?Nj%XsFHgu>e)81CM28M(Y8#ui(w@o&Rk?J&eHA^2PiF!ty!C!}E#r+aD z+N6KNViVX34#sNuBg-8k(_BrWI_-RxMjT9I%&d6MJs>{GQID zF%EwAGAnsVV~laO)v_N6m=1b;S!@gqSs5T;z^9Ike@fsG_@dH1&My{C{s+eZVCP7~ zA#A)w!7O2=%S2b2CfbVA0G!bK434EFN6S0*VbFwkTv)snU?m z@XR5hWsQsrY~cLTjjQt$Ax?Xc>6!FSVM)8jYhs92m6Tg-DqH&?qbLWbV&)snfwN|- z_0Jy3<+;>5f|{DujGI_QyTqj!kFOw&;uWGXS;{7*KUT8`K7-i?_?;q|qiDwOzG_m0J8iwGMfrQgKsk`Ib;AztcZpZ|**9qwD z6iV>HVOkh~-)_Dn?tu1B64_qzq?N!EyCiITT3CVGi>!xDLM|gfEZPHGc|Jp)NtcUc zPu@zi!j8P`LXRvnsM~6%Fgd8B?AKMcHuA=D)+`@-s}}RECwUnKGV-f!KAXGH-p<5E zxQbLSa-iM49zI;@@+6tQcdSf}Xr9sPMmyuhwK|VBnEY2XdJ}Rg+cuT|9Uc2r^ijRE z0ltbeM_^FYpTx#|hNV}#Fu|bP9hbM5A$UGaG;CAGcxwTnOJX;##LMogRszNRL#=^- zwUp@!jbk4X#U`tJlE31jEdZPF_yPB5DbpPpfDGXIvmt^DsS&KmB5TP5H^7f5q#m(s zsbFL-E&Y)r?5r>EwPS4$^c+*ftah%G2_g{_E++`P%`S$@Y(a-vBCUoeT-M(FiM58F zYLe%Zv_n^QhV2KCjv@PEXRRUG#6&oA4aEMW(wv{H%SRSvu>!x>znc9~CQPF9?KQ}N zd_EaLP`kDI#7&(o>>3}X!zM&v;9f-m79f<3;afyldt3yV#ij@19-!orxIk(PyQn3Q zmm6$@WCp`gJVZT5w$dFfeaiwH>)0D%NJ)6+R3}TT< z@~t26TjOidlbkz^Yzzv3l>?vrEBT41)sUF9nlTO<|*tgUGG*__IxsP^&co8nipt8}xV6YLEMdvQY2TdrI zaVVp3i=HaLkU5DUGdI}^teSmZ46&X`Wcde=&!#Mr+gSt|5Awu{f)-gK zne_oQLyjnK5Hk4j5Rf>VMIzotRWW-9hk2uxG`UoR!04Vs;!FtC8q+oV*TZA6voouN z3#q{9c9*%>2>gcYr>)LsbgdcdYv zLF;fk#v65K0XPLGqyYd{Y>EvUv{SjJB{`4RD60Kg^$bTmd~oQ6j133IX4--Wa#y2z z#3E#hh0^BO=Dokw&K+G~42+`CP)+;B=Jm?;wg7%}Z2(K2m7-_bq+>q6+Bp{y=T7mT zlfBtTg;^}p)iBJwg+{xu^9}{je9*0s#X4d-m}MvBK5!^D78;JNpYMQH0%;RB${N%fIrf#n-B!a}9&#t6)FfDjb=Ek9+7`tivG zd7!B-X0@ZF;AMAMyA)-s0m62~@d^e*mrlZSv18zG^jVN68GtOjZb3dBaX0%+c6)N z4GshyrMV-MWv{l!!Bh=b!C{2WtgT?b@|1!{_3AA5nv{G}$dB$_K@ji=hGsQlipyOh z7JzW6dN$)#UFSe`{RvdD-*E_r4$ZZ1ZG(Z2&ji+AUF{OsqE0n@nm)s8v2-Zqlfdm5 zKFSeeZXYc!RS455Z_H^H@ehxoh>OOPBp1>+ES8gWmnH^^vUUHErEtp z0aIu|py9n(KfFfXKHBVPhPFNWN7{#}RF=#4Ch!+@Jb8l^71bxPF@$+otX#?5MCWO= z-Rxnm42&Yt`SyvZ>J`+Cnz(YW#d18n#wgd}$<4vuyNTQ*)x$@pp_MlzQYM?I>*lBa zOdtOss|mvoAjqJ7>>1WY@~hmcj1M>B)D8$jK9&i!Wu^LSno(Sw%<(`Bc1^KS6Rw+1 zBcV17AA58#m1P@pLGJB+?$Rl1LZk_I+wl3$)&0r~`sNbs;RW}tx zZkQ2&hqe)*MQVv5O0c@;_hRv|n5+hvfk4yT#P4?5yy47Bk?nUH@siH&l!9b>Eml5X zBakGVX`?tUx!&yJ=8%{^7{%&c1Dx7vB+&lJv%MmJ)NA|-B9jORmQ03KW!qN(L9ZaT z0f_sfQO-4bSpX~M>jsVab31A*jp8(AAqsS*oz;N$iuf zH_j|HD;r(<(H|VqoZ88ciIj6nxwGD)AkDgb8H-9l*0&=8lNmI!#D36z=oG8-PIwVU zX10&3;=Bu!LSHU0iNNwq?}now!~`fItN4l`v_8+MGwApOb03_o-0%QXC_qJkqmm1f zk(x&dQX+=%knxeT){&f)(-bBVZ_woU$|-Tk0?Y_GY^Tb>m_jrUQosVU|8V{QosN|n zyl4ysDacl)h+v$3P=I|&di43GACb9j)jV%6iPwA-!bS-O2M`*zeK%II@*3EtN4!Y9 zNsco66b>T@`~9@M{|CYld=K15y?mRw z28DE@5o*a`sIS$IZ4q7>s}-rG%0jfqILySr)ag)sAgyO52$z+T^iQZ>&m; zSSzjWTfRrb40K^Y!Xu~GcRRQH;SOMM1)g#ZvE>VB_Z|K}F{I4^V;Y+!z6y+QyiUNm zU4b3hL^*EQxvg;?HqeI9ztvLgXIF=TDc%c!CU4>4812Za9Sp5R>f=`I3Ue&2d+VWZV==lR3`V zV!)Z^5=@@r+}n+ZOou@p^DGRJMw1n{2nz|P02#pilp(`F=}-QAG=a_03P2`*!GvTmMHJ*- zK|{;6?>lp0yLH)*X}oyn?JUpRC^KmMgpfSD3lwbNt#Lq38%8A&m!cDc55;5m{|g(I zQ`3+NvXsC3Kome5N3BYY$;I-D6()2^VL+B#>oZGeN6ZMtk_Ln@Aex(a+Da(5q16c| z%Y7{Zqe-NgXzlv2_v*2p*|2hKP)pp(&)K(87l1Q>>)6bVxux$>gRs-gh;yxQmMr$lW$ia-XWyU4w;@ein3K&6B4P#<#|bgKTr zLRy6=B#gNA&A2@^Zjw;&&2);sARd4dfbI+CAICwS*Df!x#Gpn9McX)z+Zogu0dba1 z>XA$I`bS^^@$z?v-3Obk}2hx2gQhqsD%nh*;+T)+oMmApcS~!P{qC& z6cR1aIo^)#XT1RBq@-EcQo5s%91{ypT}hzG-)gj*Q9UfQ7s5m2o>@L`@)Hq&k{jCu z$=tNP4Dp1)*|T6S=p7PiUlCY11#9%T?7Lz;>t!HYUz1b|r60JTO}mk4QQGphRxl1~ zN?bQ%oR5yRcD=gaecNya|$=yB( z`fhvN%7l+jE3(b&k8zR!R|jnt;fvS7KBEHgn~u~ofh=gN8q)0@EsC-5Tde@A>rMPz z%-bKvG!|hk?;oE76q31yb{aZ`X{*z<3;dQvxNzgE4tBir+(nXd4Ln~_I8g;8R9uSr|*3@Y}}V!a}uDqOYjj0D`*&mp=hgC-y{e| z!-9nz*58NiANUJg5{P4|AssdXho@q|g1yb}A}#+>ARy$3$LDwrnGpcu*}l5}fJrUz zG6Llcduj)M1zru4*992Qa?NB~50%=U{Yk0ke@^GkZmyOK!m3!e`L$hufNDq%2fnOl z!|;tvk|tkBkMm}ygZN)Qg%HR-5lJcdbon)ktDk&1EKdCnp#>6{%t)3A6m!!txA@N{ z$)|`MfK+QNp2tFZs?ZK#m?j~u1%EP`;o=F3ie-Bc>KQ<`Kec{Vh>(&lWK9}NN`$2G9rP~w&5y%r(tp_2sn6T)sS zN?V5>!f&aH?Kv*c3?-ntm-|s;KgPp@3C0W~O%#H*L9D`Z5~wFSGAsDw$tMK^XpeQi z-r~2Gx%6&Ok|-M2wYf7^*!u+wN$DQ1#n`bBf+0=B_Xe3~c|-eK4GEZbyjl?%kMp@&`v>tBNVoJ^r>ss~P!1|RkTG)Pogs9FY=AmIPQ|Cgl^vdw zzyo$|4N<(>Ar?Ct7?(bHROs4yfCM;6)oO=3wl&<3i{RK#K9Ld>3JJw1ur5bUeCegZY z5g?7{Nff>|q*csfy${&vQp0EiRh51Ta#6A;;zkBaTptfN=eH-Zd>@fjpjJYEW6McY z;yg5+3h&CV8r~mfPC9CjtA<^D_FG0zo-HoT5eH@2ML7knX6luH1+gWOKd=W_e}s0Q zVWgkQAc%c1hXw6BJs{)x5d|RuE$JzdrRy{nf_T(5^jFY2bC=~DWH$<$g=PEAVtxR{ z5+Zt^p4TPr_Rg#!IF53!cBY=#eW+Qx)n~)C!|i*LjM#BiXDzIN9AL>6op%H?!n63z z#~xZ`n?p`TcW}6hvxM+Tb1Gc3vdbD8d=xtwzl-@=?JPQ5-4g8Rs>G_GXnG=` zQl}^Xm|PSol^`$t>e%I@qA1dw40q|&w(Wg`bC6Vu;I3||fWesv(27wT&-K+tm}ibg zr?riSEY{Jk1A>$ymjY_)3yx#Y77N2?kvQwq16feXBVn#EJqI6FaN^slBXr#-wkOps z-OEoNr^=7{Wn@IUb$pXkZqYMd!ys?GqnSv5q61jmBU)q-$;bO;8%B z3f-;sM?%8EK3+EV$tN^83;w;{y5j=h3BFrhHG(X%cC}H;%x;^oAMIqp(=n2w#YA7L z`(jm`p&)5Nl=b~RVr7Q)IpR6iL;)lmx;_QilSxJ6^1^e!OVVwIVXn?W6R*hh#R zo)3h7P$F|1rei~hw*bD#eWB9|{f!~Us0Ei8o>29K-r#p963P`F7sgl?q+D?U0H&Q? zKn_T;t&**2tXWYPoiA})nq8+&!nEF!E#Us(!Ce3cSWbX2BHrt2*JU|A<1Qz71k^{@w4$Pft(qYOiSrAAVHTyf~_68 zx=g#!W;M_{7*xzj@Oh{kj)U79*C-p@f(189b(}0UPQpxxLC0_eBNSb`BL=_!MkZ}O&qMre03)Ez zd0*J$@MM8ml4TVL^0^PS+@|VfZ)MSXX&h6mp$r3Umag-oG_-4qWc8~rh$9olQ(%L% zjZ!DIj}lEPcDbfCUVsBWFk1p*aVrdk3aDp?J|yoEp>CSjIQR>1O_jow8Y!-mRuNT! zXVg(u?(NZp?}vF855QOe8;zcPDGFMwuBMcMe_@Hi3E5+mff+aUqccKd{U1Pzm<2&z zAtQIr0^>*|rS0iPb4a{xd!)QBck({UGZdfo;gJ@Da95-b;X~1ZT2ZqF6YRt8X%^js z$RrzTe@Tzk!Z?nX2Y#Zc>Y&zhbF2Xl2AT;+tQE)#G@~SfgKZ$3nBRb(v#>wOR02)G z`L6!u>`67)YFNzd98$PJ3~dnAe%zt9cRn`>_LM?!Gd={!SGQVF!sI6*0kS4gbXc)) zlwgP*!tk8bFm^tDwhHhD>OSUqyPBY3E1`)t)dX3~6*VGJb3u@`KeL0g6gLxJ?ip@S zVv4gkGg#J&a7Ei1^>(YFS{9f)=QY;9~k=%X$Wv<#_o_9 zY2px{X*WNid|{m7ZoDTz{UXV=u}x$yb|^leD`#Ls(#*{Qc3~6p*pNjwY~Ri5idax% zvW(_{tFBtE0Tpb>OEn~~=*4Z5!01>$##@VW)<6AV=|z!}=noDU16yW4<7R@$6W*x4 z`!SorZeSpo^G^KFyrD8cvC3SHCc;LI+hf2jp!G9+E<~psmmZ3f)xzFT*36@QwGS#m z5b8XVL~Uz@W;$_1=3(`(gH8$jmMMYy$o-X!*qLRqPtCe6y8_5ON~$Cf8eSyD8tYf9f7ReJCyYhh^&z5)IIXT*_@<~tf;-dTKn9P5{_k$v-hbcoIykShI;@A#^$jMJvmUx z#K+j5FVenRVX@DC7UqohBjJ=VPjDe@+}R7FA2R1y+n*LFaAh3no(Kdww8st;cfCAi zqb4XWxYGe#0}`p|Qm)0UY^B%6-HQap>pk|vd&Ic~6d#lFbkhv7XaUdxozJ>mqXx#T z*v_IgHOdP$KH6dTYrZdJ6n*N=z2XH97>&?J9mj;*D2XaO24JtRCo89OEsGe?h~(sZ z^P_`=S53zJt$20}T&i0ZhIU>bucG(tpkx_UKnVffXuOGc;@u%T#Ua3h5AzC0(;|79 z`k--IkUpxF()$<~Zl)pz`t4rJc#zO6n{ma*3QUHA3Pqs$5GNpt9Pc$ThcRlRd6nF` zr7>t7G^s7dFDV4I`ys@Vv4Yhf&lzm&2duwPDuCh}_LFgonb@AkcDW;RsENagTH8O^sHL`b*um5Xo)Jz`1!1N$;kt@x&%%+DY~B90j*vkX+u zwiXzJLCF^a1|GYfr)?(beI}#%3F8R$h~Wz;f=(c-qmMo8MHa)#nSjvk=spih_%T}` z20HjEu`4_A;4Xyr%n%``L{E)DgwPAGc!g}M9O};~ZFf2EJ}n>YBL6eK>zRRuGHfA; z7dO>@-H-wM1B^K~7Sir+8k2NbLwIn!%7~|LCg)mESIA&ERR@j%G=r$Fi2w1xXej7FYNFp0 zhjXQC2D*wo5xu9m+x<9%Q{80@WzuVhq*MAhX!K+5J+P-3TY{s4~NhNq9<_87`e zUcx)YvYP6YV#(uN!lAJ*79c_s1^PA9YP!k}bcpaCnMLq_=PQJaad?dy64Ogeo!i9I zZ6?I1w|By!cPg-jC_}IV(Cd$U&erb-L-mT=IC{XgqjPt>;II>3rAT1KY4E*|Nub7f z%v2Ue^CtiWLh?Aqz>5rI3my2Jwt59FGFg7ab6MgP;HPNgS*q8dujSWAJ8efgewh** zKY+2B86-mG5(O-Ar&xkMa0VgS=NH4JF~I(cSF|I50@Ig`+rujphls5<%2a)A}^=RycdjCnJh*Enu-JgX1}`7s7&k93vm>WC`B(Ml%81!qt9 z#39M+&|i26PsQn>DoXS0eq7BrT#- zb_~jESH|<&X>2jv&kuJ!?^`w^goQ0ngwm*qr+)KFXwB)8SdiFt(<3pV!{rB+u{49e&r zLlK1?R?TF9P6J#~Hu0ODHvt5Hao8}fswfcP5_YqaV3NSp4(V+_0aQMA?Frr*LV9tE zQ$O7TQ3mypONe1}J50oWbpSQ2U!QGY#$rbUS-zJ0`$g6>UsTv$^5hs@USWu?jqNQc zd5_DaBWROM*>C>!*%X%#tV#`>_}f++IaQziA)^HZ6di#e%|pRH1bPi`cIw#`hfOWA zd@6l7u+F{>JkCnlWOqaMX*Mo3L@xn}-+0LM56BTVS(D*sX%5mFsPjo-P%OQ*8vb5t zHV2VRU#p!PB;=q?hV=+HxCQtW(-(>@wo|L|kNmQdSE*J%N&xz&M?}26MXnpjc)d9l ze4v0sCdoP6(#}(bNkoiFHovb4b2+ifK$$@-29PqHo{FnsC2C<)v-AZmRj^zz$7>kY z@BVVvggKvCJTw(iI4J-QHWvy(JlNTmZFqkk2sTRL_(t06d55Bon^CAsJL4UPZ4qo6`xyRc6mIm)2NT(c zq<@5DeCSyKlH(QwTM)OJD6`Kj(Oj~KQk+u^)U_ZqL6MbSRKPPNETGbb*t@Xc4!(yE z5-IK(;rXlvw1VB^llGb&?AN0OJ=$mEQ$yC01TgZG7Nx*xnPX$97#$6dk)FK>3uT}b zU)cMzn-QLqlFS`2G*aIkJK`>Q4taTa%n}_-+oa@2ZyY=_=PZ7r1}nTR%TGlD^)>_5rBtvrU+!*0S;i*UY3U;{TGjV+Z_n!lg~GAA5#~}Au^#XV^k+edZccG+o6*k{AFN%~Xw^GcVx5NWQCtY{je(s7hXfPm> zfeGCh?akh=|Da0=?KZ0U-{R&SCYqj7g#obT`yWui)GW+?nJ24^d0y^ccPK644&s5) z;mCWOH@HL*(U?wh1bivF9^P8QLcB}FBhQQ96bWQhVM6jmE2GU$Lj%-lbE%jt3u+{3 zkl*@CnC7U0iDS}aVr)fQOIv)qg4iyS#OupYOn_kEI+*JM{dlue>ruL{FaqteJ%}5| zit{C{_o-@WJsMUD@EjrFre({#r0W<+97X9t@4$d#Ub9Ibpgb{{Zd_}5I;{*Wd5b{Q z)5!TvssD%4z5zqBAW#2&I!1khR~j+|w@hrUrr{8o3bqifzgIg83R#*1PzqWvoFpgk z)4J0Qi|V(t0W;bH#A8bbb9}Z5ZLtH-C0*L##Mzs15u!oB`51Q~b+QhCP*XJtmfz+b zg(FL`BVm*_C#5X@!S0q3Ae&!2(&&XCEHB7%;%A^V6kgq?W1T@S6EV?xxl1H(6T-k? z)6mZA)vuc|30M>#7@a<^n@O9nel{&YgD?cGvTXOVhI>W=@-*J-R%WVT(vV|7fw4bx ze{|vxw!uNF^HSN{g26f!-q;XBqPR6WxrY9F1*N&RL8#0OEf0oWdNjb|blD+`^|}%9GQ0vdi>#1W+Ex3OV%sW? z^xh>UpY|kBC_WthmvqD5C($v$zK7x$H{v#^-n=NjoS23xP&iJtgN5 zGJz->Gw%2g5>AT6c3#Fqy_%8KDczDhDm$?;;&V|6n2!}Z0Se<(Z#>_uW#Cb_au?=C z!#keQDtI|xT6Mq@y+mZjmcr$(=&a%<2@vo(u&HnTk>7?q3Ci)JxLIW_MISrDmB!9&I>Hn*(4c=F`+cx|)f@l7(&$no0{2ra`_7(AR)(Pi zhMfHr7Xwj8S2+w_*!*7ZSO6oOVjG1qnB1&g+WZob407c#hCFUVXLzfEP~qYF*K$W*R79Yk z#u!-m;1+Pu|9VD@l~?I6lM!`{Rvmyk@3%wuTkeQ|gAYgdg`ADq{7y}z7W+Pr(soBxbR$4ci|8^Gc;l11u{7(`xB;~7~ zw0Ez0T^2lW*eI*pVBfB1DFxzD+ERNzT{v5x>&uG@f;;E7ox>76(fiQ=#M4TCGsIJq z?(>yk;F%NFL%_m;PPfOAVD5iGR|@x>pm;wrtnp(YOHd0vNsK*s6Sdl zM7zvA{>5Da9D{!ddVTI5$wb257EuvaSa8xR-n=MvPfV&;!nrT0uvM;2o7rbmbSESG5TPFjC)(Ee>FzS z0au&l(PWo18fn4tpkZ{m*$=YM>e@z~LWOjKnR|O>d~`mJukw;FpRQs7 zehpQ8#pw0MD$+TVE;Dj!AwF~+6UK_CTO3*aB9o2`PONx18PbXDsKgGJ2}uZ|qg{Z* zYI|zPhkvkQskELfFe7oxgxwE7p~8#8B}A`zN|JUh=Ac%VJxtA5?cDO3%sUeLMs~qC zR|)yoi46)M#q75n+|`0%8%MB=_iFVY9C%v-v>}yIe^HaOh$Zo%_NV(tbr}5zacW zzlYtgMcR}6p|~Qb&|3vF{5Bn!$e^eQ!D8$|{z!0+frQe2cs4V_KNuf1>isI`42%Vw zGg9$Lw`>4!gXC#mfeXYTM8fll=3FR?}^&;I2Y;2d6H)os4zeLI5yuDA` z*~h+MaS_CY4?S+e>|h$w_(LXwj%A5pMI)HTl;ZnM9>)-PN>hRhftkHeLVAisA5Bn; zVBV?>*BF}lX{k@=@HXNdK?WXg8)~_iBJO1Ty$~+#-Ux;roYD|us1~Vx}@c`7YP9(V^ zSx!g95ul-Q(AV(xy`QskuD5|Hz;R^qy}j%$=^CiMTute9&Qd>Z z5QP6Jt07KzcjC=RC2-Fm;JdFiJ{ja~7z1`Q&DRErhYdn90wgXn@hg6ZMmc=|ctrzi z>(%4fYl&qY7uMyuSQ;m;+k`2BL%9{f-62RB%cDvx$5k_K!O9Bnnkk6gO5^Syi!j5{ zft{P0lA=pQc>DX>p_UUP*f&?lM93OK6<0*QTi*RJLFt4Eg6jyS6U1zEMwkSXAm&X( z=|gmrjRq3YZalm^bAG+Y%wk`KHk$aT;-f#}SaD)VSI=JL*w(hHwFP(jP-GPCNt{Ce z@APO)e1VqmBNkwhD=jicFA%ljQo2ID0M!W;3@kVu)xUAMd%Xu_cIiznu z)-N1{#mN&xmby({mAqazzTj8YvwAYs!HDpfysX3pCJY(=QFJTQg|(P ziu)FVB*#F3)qRH zXSR4NbnGBSR6)+iU9X$X&*bUU)I!|?k~xjs(f4ZP-%J{T=Ef~o&$SLs%s%HB`L!DJ z+0WHLB$Dw=8ZO<{9s(>xxLm^1*DS(GKt09jYWIkr5$ z+?DtrwQ>eV?rn$});EtEctA~85mlOJS{;R0(1lP$!?T0}opOkh%>S9p7a#%I>ors; z?7Jn*BOp$BEFlulCV8pY-zmZ|A3@`mFDH!F1`fmT@A&RTG@ZN~gN-pQ5=l_k`(iXN zPm^^v12c*a(mOcRR1z%Av>C>RxvRBE@{TV(jg0u@9}`JFlb@;{nH5R_e|dMsWtt{& zRoLj+9hT^c5MHcKfH(fmN7^wYCu(N(O>e#=0-*^^Ov&aq8`m9aI46^K;-fi^`pvO9 zf?NU#l+25FOh(-{ShXqL74Q5*ltOSgs?GOkvvSt@+4PPcxEfe8DDjfsA}_jV8ZmlP z7u+d2nShCr#CxrFCNZJ;j~(FPC%CE2z*E<5S03+X!w8^*Aujqkt%cXg4rgg!$P7tU zE*)rRsYez0q~sml)P0x2O(s{7n*JjskMR#JWIWN>koNWVBr#&+14%JT_rxbQb~Y`+ zM4hnZRo_Klt(;e@j9{Sf1sC(D0c(Lipay6Gw5IB_FXeTe0Ar`KzgCOqhP4RH7?98# z@riSRDuC`H{=?0Q>Htz<41jfQzBvxJXG^wqGx zl3iRY3xEVB8ng?ZV1U4Dd#*Om?uht2Gp%8?R{PD?pmERGw!nbMC389~kAQ(%Vu=5G zwqv8UAn8LN0_VQzI`R?NJPkD5_i9^v60Rq-S&SkP5Pdz{xzXC`PD3J+qJHt!u&1Ll zjdr%T(D=nF$T*smW$6+4YUOO$h8i;xI7pWIv(X->6`85qiVrRM_v~h95)&->{@sXN zXAT0~W!vqE`DAwCAGuiJG8{q6xn~vT7Yx~Y!4vWkxhz#VPVI|Sp(5DUbg#EN(*)b2 z;6(G-#BtKCCUDeP6wn=%k0N(n=3an-aLn;hbC!}w%m66IW-}pogF=7?0`tM-qyKZZ z2OO)%2s4^j{e3BFgG9{KnHhVD}en%)) zvQLXH`KZ|*6dOT{t=vTICB0RSfh(a_MxXf7S8}BL6GJt+v5 zZ5@*N4mDCs4GO3THU7#bwM8h#`ltbT7sn)lIh%!9J47LFmk1ijhz&u{sk@&C7@e;~#y(tnLQ24U@o8*{ zdbkb?a)gckfu;|gsz^oXY1%gPan44)VK0&MOy#ANDf%V^XNoE_pwD{nQMb6=()C)ycsAc`B(MiUP7 zW@uB7>>7m@HKG2ME^+ZbUgW`a#CF)eM-h}x$xNFS(~!x+Qy9aquyc}**%InjE%yh% zhzaR2b`|wy=uv|__H%4|AEHe{uDC26ONsz+R0LMx80PEduAdasACQU*If^>yvOwrj zNf<6B*VMLWYZrDG7uGnRB|ZQ{K)k=J#m_t;$zNIuuni-zwrjVGH4Zm2EcpiBBtY%T&=d?P@t%hM@aHAvU@g@bxz31?3whsoX_)xO8 zaaE#SgRFQCMK^!+^nR21^xe?(rHO%kKE*oke?6N>)?f5NG?(ou5Y*s=ZSjyM(>M-d3hp;N8Bky{&=}>u zAoH|14+jph3$9d-Yz<-XGV%Nda8_T3||uafD*<7Z(&!$fr$_F%&s@O zbO4e2CTmUNF_sHfKuv#*_DEJCAT3|+!YJ1s8K=NCA`0sOsHL0i)Uc+@6(5!u7MHXl zu!@{Vg*QSc@x59;9qta5Nvg!y<=i+NK;luQLIKnpp%{SSaxf*d^w(&)qj-N;0*Igu4E4-HUR<``RVUD)HXJ${s0x=MT~vMJN-FW=efG)FQ@o zP@>z6^&OPQI7AXa-Atu`A7hKYY0otZEdv;+rY&heGRXV@FZc0Yt(~5YECU-lriYt> zrad{TG;~mbUaKXpJP6KEj>0=F8U6HZU1_of*o4KgQzO~=q^_u2Zt@`Zj|D@)!pj`t zeFDzLyb#T#LY-k+=n{YW({j}=(|LH4kpw#n@=Rx^?;D`e zR0}w@EJ-I?%GhqwGDR%=ue4;u)0?ypmypbthrBmJ@vT4}sL5);FE``}h+A?4uJf;` zd`j@on+@XtdWCrIpit=4VMhT>WY+W!w@e0zbps z6RESYo%fm=Gh98kWPE+M@tp+GJg{^NYrBC`pXXe5tI4o|Y9Tw z+Q>UfeCFz1=(!h<&r0v_5p8J##{jcH*v9?v7_|>@V?(xdj!c$rR+bJ#k@voW}>JKjgOw&Qyw?gQ%f0n4hXVvyOJBwfM~SM z2<>e2^}Kl8XS9}ql9x2YU9inU*|#5_YAGZUxE{xhu8j-75{W*nNnOI9D3WOgqx(*T z8xKD`GQ`s$Oi-VS@f~X0K2(PW3}1+WRhV9u+DT}V$!OGi4|I-2l}}&lBod_^B+5jZ zI1b)La~Nxp4zH|vu4N$w=4nDCwcG{N5}&Lc1wABJVAm~su0+?^1Kb40f-8NG+$w20 zm=MV3u|K8&{p`%k$%GjPCb(r6>g0~1;Y&{(4y1FkvZ(WLGvmnPjylqtIkmTt*~4y_ z9a-Hn3v~etA}UBxL3Cq5KeTC1`rPZ;is|c7Q$OCC{xK@=t4@VNcop{g3?a?f!KY+;@ zJW)qk(B;nd{iyLMt`x~av4<--pz^OOV1fPulb$8r?58hJwv9T4HH(xm0l7HlqFio{z_}Ptyet;-(PBX=x9Z9R z$6EWbGgv{Dh(t2_{V7EhOd|PqrMHK@h@}e$Ss>tG%$2$-c6`$tmM5eB3Av)?yvuXiF4%F8lKbx!D%$ zEcVI&MfGw_^)1rRPgw%<^pmPcSv9T;n}HalnhFB;>6DJr@;p4*kpFd%?r8B1{U2>x z=t;=YmXOv*1Gu7>K&L4^$3*sI_3&iO!y(Yrp)!3v*+A``xxkbM<_cO}G!JqI1lQhA z*7amxw$v61#iq9;oH49RN5SXE_c9Zrd^-kGWpEMFj_R+)+VROIvO5r-n3}I}Jh-oM z?nK6J*(+3t{j!h)CfV9}wqp7jwjzgSoR44tgqwFt5OSOmQC{9Djd?TbZAJd$?Pg7? z@~NB&f~e><4fhZM@g|xjdtl zeYDlEv&#Xx3kHMZHPaB-=*xJL4=}LQ!;#LXdXSTtlb9Hp-PGlx*jGJqJ2!wFd z4;Rg(fr+hB;lg(IBiBFNm;~>9bdUWI4msIIXUYENM*mOFA_ zm>t7BFOk-;>;DuvZK63;8DDfiZP+=ZO;si8^hR5pVPc?~swS_H&%HqGnnI!5r@{An znHG()!?0?Nrt|X%*z2&8ZG4+`RZyi$=5ugjzr!rYf>Mlm#zcGaaI#d@Iq8gz*1v1eVTsC|AO1FoRdh zK%BGK;8QTyU#0z!uNN|AbbX)nC0Krk#p0BZBS0V}{GLhLTdR^r#2eK!No` zra*W*pJk$?eWH;yhBFTCxU@PO7Dzp>B)NfhqJ4wW&`W!cU3p9tV41_qW224iik860 z?ewFRZwJp25KMj%4*_L6LVI%RNR0lJ@kvgRav9(vz`D~74f*dw#18Cj+Dc0V8AV2S z00w#llngNcyFE@V3h{&JMc%dBXmlH?IV{oZYfIX1CYf)970S}5UZTHD!;kr0$ER5# z14A4UOeA~10iz_$cl&xt-n?Ba(d7J65SZH#i z24U0g-6q~&fYVy3Sp9I*Gy#Jrc360@1?OaseCp{HJwS+|IGKgH_Z_GCFRFc&$@_Rs8{#q>^R%=p#v8O^AH^)^15A_O2ToZ1a(|cPG4p6OTD3Hc$wHOa? zQbwMo2d4Pcp@J#Fa{ zEnk~NsR+V^`p`AMS1ZTW^2DJFDgmtewOYsBk0DDyka;CQL^q&Dvc7RI)&1Q9t9=>~ zOjLKl7+}QLw_nS|I>>UJ#_#MWfC93Mt5xiB`0L@c+?RfS0t~~nQr1KslrdMBB(=09 zy-_GyIVu%Y1Iy@ht;PvDvCinPla&LANx?Zj3?cBZMG7cvIX$H2P@10%Q=8*k|K~}` zaj;!QCBwWNn^iaM&1hVqIY)?zzAw?PK`^e^!-X*J?PNMR)EwbkKpYoRT3qt^c7=wb z(R@N|A}?=>jsc0%ummnV=lp6a%zA2J*vYn2(6D-?u<{$OGbl&KYeJz|tI;+mBaGtr zl~-bZrp%&1l2EqJ(zbF$0>vkK*C?>8Ms)?g8!<%Y0<`OAzCYbKGTlh;#61ICI?FZ^ z!lWDF1d7*?JfCF8a`ccEe-IS$MTmdqH{4>-S%3yMrNib(XeRmBn4>Lha{tf5>d>Hv z3asYzsuo8*`;{OgLu@J#?OU#A_Iwevi8z~}#{PbvXW476t|}!zP(d!;KWrTa zwaQ5x?@GfF(fh&n9WD*M*E>stHf9R!LJnY0?(~E6tuzG_Scr8VN>i=^_0Ue{GmtSM zY2UX3NsyWb*vta#b>UMSnc1*%b?a;Nf#XiZT@gg%%ug6_ zSm-A;$BDa){q+)15L#TZJuNDcs${XRmIm}ZJ5QKXu;9)zlP(}M6YYZYy-5eN$}qLN z#rr0|or!&yxonevPjgY@gliIDxr~B|x1uVBc@13_0HV1(pY3c?$@5G47nGs1!_X}& zN#cmfZQX2}0AZ#fCdZSf$}ke^M>;+&1kigNx&`c`ro;LZJu3=z#|FtM)!rbb4@0^8 zYIcdtLq-eB#ey>=DiAxaBZBT-61CgzjB)FpRKPQ~OOp#n+)~VOs(ZwKMy3*6oinIr zlw&s&PrFNJ*b`f121s7)^t-dxS}ldsvsp?`HGVlXjx9w^wC)mMnp@eUGn^o6gQB0~ zUzJEbJzK>t5eRX!Y&5Up7<)>hD2@+y+4)_NU^NBCkf?pXYr5D^l}HgO7rX%eK29}d zqmypoh?CQf%(!sb7ELmO_^UK%r<$&Fji7+R5Y+Dh6wgq*4djArY|H@w;){`hC442k zcS)GXLZs1x&6nQi=8^X(2W@~DVF{wDUM++I95iQm?-F~>hwp}TF^n6sbh;QWY#`N% z!L+k>C*+g((j#Clhsfsp+4|wxaC;j7;j6U$rX!yc4K90Z3d;133y=Wp44sTSUGc3&h_;Ny=ec5-6owBe5_qf(4Xyi z1Ryr>T=62gtpkToRF+B#?OK1f4)Z(@MD}xSf3J-9T;tWzdr! zxY;B`W655aB);UD%@z(d$&bSRtUQ4kA&PX6Tf@uA9p%FB=~xtO1dI{2{GN`HGXmfZ zgZS0F!;qkfwk~V!^4ElTeoly~Qw!*Moan`!SgRrG#7r}RL-fPeWzI+X5tWHO>j1<* zk7{bDFmvq;T$KF|Kr_J-5@Ei|e!4^p2?tu{)eGz%*QTv=Gi3jI$XXaT~D|^wlT-k2DLIkITQPGE9szZ%mfFp zo)^O%uTkdt*vE|4o{JsfCKg6978Rc&R-d54A7tV@Ep*jZcP#~In!cgZrT$#(sMwIi zOt+X`D5Z*@Z1hlVcXBM|GB_n@kyxSy2q87q=Qlg|Fs!Vu`KM}Md@C9%0A4|zGJr_IM99mT|gEVbm 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�Kz7aZMyaL=W=KdZYAqr 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%0DN%IVKSkb?tkp)E8bOdHDe%6puQgS@J;>&0F> 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 z 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ĤKAnmV3q&I*DJy*a8=V)*ieAek$q*C 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

    EC2$`+i#FY2OkleukhBRVb#K zf66ZH6&X6QdK-o6EXc2oPBERcb?iiMFNYVV`ok_3s0YnheTSot&VoAD#AIw2Tn0yjK zXfHDj`-{1B$~O%wRer$!hr7}xb&;Yff|I~MaZnPlJfexff#5KxC3f@973N~(T27c= zIU;Fy3bL??8`1m$7`luoD(Ytn?0BdE5?9v!Y2}ke0->~xZEr+%X+Kj@ywuup;1)$n zL88+S?FOvXdx&!t=^;g_5FepclMG7g$(FY29<>8=D6G)?9y)w#1<3A~Ex;=P_b^te z!8@E) z*kogwXzr(tdAS9!J;1?;JT9=a{j@e{OB3C0_w5ai2iD(-@eJ{OnDpz@2GJ#1G|m0P zeZr5(7{=w%OG>b&k6%7Bg7+<8JL7hAkzm%j-1_LtvCEzYGE#&`zX;KJUUOu z(y%A9%NSQJe1Lo+oDdI_wFBX)pIlru;W3!2;ZCJ~LwCek;yG~Fo*!?2*WK8FVh7Ho*PmWZPF3fPNmKWqJSFB<1hi`xw`jpd&B3Eq|!GWT{o5xh)6?kyYT=8 zvIP}T3-Y+HpBGt?~QR-ilrexzkFTdOYs>(>11~ky0ec zre{443LN?&4&uI>?S1=LoOxiqJJS9JE7lbIxNSE)C$xa~iP{b*cq zYwK}vm(ri|eHu0x4$10-*3s)&^coX019Sn?r$$hEJI>*_qn{r04C5kC`{qGJ7B%2H z!-q7y{|K_NpLM9=T#6?H)8ti#NGF)~pKjv4KF{s*n;YJg@@sR#v;u?eX%U<`dsuZ<3v?0V&k{@Q~?}s?5N$=GpcShxUR> z2)=FX@5kLE_(-tr*gsP~_w683m2^y05V1iH!cM6luyD(5*7xJC=!u*OPuX zw+&V3N^)5%rEc0%d(M!lFS)YxpT5zn-g%EvW^|{Q+yTWfsmO; zzGgU#(E*|IWt>CD+nB90GK@~ygm^1UDlEElTT=*JLm>U)oXnbhtr4sRzJE#JY^#Lq z{vM%trkfHz(ZmyNGB+ux6B(+648s5NA^x$h@e(R7usEs_wO^_^BgpOmP<&;cw7#)J z+uMtpD5_Iecyx>{CQ}tqFXzUokpt(b zaz%Pl>2X}UHvB5`GklTgqI3x0*j=;tE3?bhfaD=#6f(Uq+dc;${LwekCKNbk>zvCi zyXz^5e+4lqsT|8Gp+jr5$~lsG&j6&o+bLmv^mnsQok3USn*o(qXZ16?*#|J-C>x$GN?-h zY`82T!v|z0Yky2xd={Ad3WJjY-+9CFCGU>*c$h(uCiisl*zJd-3Q1(g=o;`Z8Np6$ z`OBj(9zq~YDDM&D2o3c2P9~dcSy~;QgNm%C*xa=&30HwSivDS&^X*^@S!Hrd7>`q4 z4ShNOC~>Wc#BSy0D38&1!u)RHN<`CriXiODzo?Fg)q(Rdhe9&y){9|WEbl}p%0Ab@ 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%0A64L`8kwyM=eV$tS55Xig3 zSB60gSdeyKPL3Nzh$+cWW^ULgQZ1um8_NAuUoKejij`#~pn1NKW6u5t5Z0LSqdl2h z^$Q2bFU!sc)>%hGiw}2~8&6E{cymc4aPO0qsIiviL37;lG{vs&SarJ$&VMj!JhFVzidCX2(MF}+COro zZ;COAvZOYLWC9KY0~K!U!m`(1hzF#j^t;7ZQ}Z92SNZB*Am2jC-P_dJW;O z?m%IP!6KZY-2>`yO%o#DU=#A5Fwirn3q?nnc`ofvpeE@wQ$qPvt*&>57-Mag-ss=$`tvWt@q9DVY~rSU_$@tFE{i%N|q$V z?r#a@^~V%;YD~(A9Hdv=!26SE1o`MoOalwLH!AmcYi% zI%KNQD#5uWH+rP!Y`@kdtF5iqml^K7B4wvaDm>K-$_{Z$caiAnaSHi(+e%^ot>$aHQP4|frq{p- zq)pj@&IWaey8x5bZ6uhGEvEcQ<+P3BBFMLkfPN$6A27PbQ#y1W=vzumxDN*s22r`0 z5I~Nt$3=iNU-^3GIMy+`7?8t7jpsC9@1y*}RvQBpxJhV0ZuJys(H&AMqNd))#*mt3 zDDmHN+f$kN?oW%LJw!<h#dbCX!t%ZfZ`7&!JxE z+&YRxV(Rf+mXcMoV@<_OI#DFy?yLQWaYwa4{5^(`)a{s62Nsn0sq*ia*xL2Wf_eFaB*vhTAZ6_<<+ z$Lt~Px0t2CPs!%y&`c=mM{3hzn}y8ye2W%Bu4xt`8RYy8Io8rWgxHU@0u2V@L{#o) zwI)EM{Tb$I(4g zAUzZ8ar^?e%#jx^6%8bS{(&jpizrkBnPSlBiES&`PC-a1sAqP;nuhR6lGv;q)SkN^ z8|OdmdyX}*wrjX>0w?jdQf`paFfG8%ru=+1uD&2XLBI+3p!YJ>xz43frujIDmJ-}C zU@#K{Ttb-NKv1BeDRA106%65ZU0)k%1Xm$)0-hv&FIEtpr)>x}Vtuy(ZxwZ%03ouS z*LA)3nrc$y9dwDSb2dT26hu;!*iqS|NP_Qzn{stsF<XShWB=c2CVYz)kq0 zwjJM_@TO3+!+7C`7*v8+ub@0G`mM!&WdCN9{~Thn|{4YD|JITIEzmJ~v3Y zd;h4mWg^eb=v_b}ij`<&UTr%0mT4T;GT#<4s`T!K?gB!n*PFdElqClc`JH9ppehb|JLg~;b=X{uEB z4T5T1d&e%(hP@JB4b0@L2!#hU*ppxVNUX*KUfKEVPCFf_@W7tKr>A(wT2ma!Q86Sf z;RT4V7n}@P08LK0?DV{~>+DxR?BC*iZM!zb-vbu*6khms+U%yeoVF@tcqi#iV~69W zp=sjz5SH@;pxg_mTBaa zb)B_>cQdv<05sp$fcD-0w6C=9(LUxBa8RhuoJCKa$a|Jw$8p24r@@i-r7qJ0T zN)PDsz*~kq(u$~c*zBx8Va_m|=knLywPC(OjVMCxv(aF$F09#TQAepMBdEAGi7r*7 zQ^KeD`}}UW7XHcKCDcj$;j%}yHLDZlJ6>AMM}fs9KiMNH-Lz+mCy*EOeH4wy+V`9UUvZDWeM#wK+?XxnoLhpAKOX-x4I;2#cnWs>YB82 z#r6?O?jXm5KsnDHVnzDhK&+68kb4YuaU6|I{}D12%Ie8W8o|OC;BW;#@L`|T?!K^G z8&wc7s1jQb48Udih@~&9uLi!W(y|l~b=KqAsO_{zzUt6`LqkwZ81C$Q#Qrl|C&<>t zyMpk~dr}K8#uFT1izOEOD(Lg+yiu&%J+cAZQT<2zMl?j7y*!k?0MoIzKH_^vYPD~@ z5q?;fOhrQg!WW}v#wb7xo3XpAm6j8Rfwdmpezm%9Ks&sC5TzvI)a@V%>YgSBIGwm5 zad>tjO9}D4mqUu4R$aWHc7eNusreJ0dBq1%w90wf0ZMJP>VlluDkz<4rR4jom9JYw za-D<_gd3&%>?7BEWW zF}s0!WklA20e^dU>f)_ahwLA4en_LEZ}I}@P7DP=DEi2Rxw&Lw<>K^GcD4lcw%A0J zr+}{Mt!z#d&YZX+AW^#IrI?X|4Wgt33;9~?)`QFp)iBN-AV2*zq7ui{xoQ~TkX8t@ z70bXZsqp7+q``D`v!JJM6-t8TGPZpHecTC?QE8lKBUO@991=Tc@$kgqq}9t6ioC~= z#0QzEb8Kpt$&{VI8fWn?Ok>_Gu{!Kp4^?w{R9saQ?a|=bkbv5S<1<~jV}Qa?%_yVo z0!nme&I3*CHx#+u%=3r}O|uyI|9$Jjg8{N18RR|T{Ve-nB$g;Mahtx9$a+g6Nz~-5 z-Z%j6LfFVwGh*qn&V8@Z-J;W9(W(4rN8ZkwT_TG(lJ_d~{qKV2W@>!{$08^W^jbz@&?;Een&|1DDv z1ao_hqqjDJ>6fN*V*?4}~ibdOjzF+=uqt|M6)+kl= zfd28Z8r_j!@C?L_0;L5OzwBPjq?2Snez+}1)A+{12p%Q!K0lF>cNWo{*_NN23EUvM;Ha!y)WQMk8Tn#rO(9Pv$wfRHcV#G0CwN*>(7s68!+V)Pui^NBfx7?rN+c#I1S;YnHcn3vPTc7iCW-#r+e_XF=jF`e%Ef!?$9p z7TWGu(>extL0R9{I2&XrZ4?zYrJv|{2Di8S4FOa;t|<4=PD|T}wlcA%VL?gfK^f>v zPfQ^&&U~Hjc|F}oYf^>*q+2E<3^9RQWZoKwE9^Yk?mheaP*G}l_0jUJVU1o1Hd}Vu zz`=)Yyz}8ENr1ivKLK1pIPYX|Psa@a>**RMX`b1O$k=(+OBv=G(}7It$`#x1ysZ{TO2)!z94i@w zzUMa3!;y@ePlaM%CxG^o3>kRu;q?Du?#!cog|m`_+AYu_qi!jGs0`A{0pYYskrhZu z#TG*Ur(c_YWlyZUAD6-LvFQ zx0t78I9l=w|6MTvPP%=w(hpr!q-(Co03f1vNlZp`6`_4}1>q07B&jH( zpcfPMl(!=bm4ezr(6drM+mZG)Ze3)CQ4>zH6)w|R3(P<9)j|g~c1MK;%!$Fppt3wt zJgK<#4vDlM+G*S&RX3cwW}ANK`2cTh@)^SEePBn3*kgDRf9q8j8{JT*R)|c-r8y5y zSS)){7qB$-#sx@W@>>Kn#=DP}ZkvQFs$xhv_*38iTqG4b1<$=ZENa78M?QMR=tVYcG z<{rtI&E6I`hq3#Ppm3m2*7-3>T}dQjF5c!Z$E^~B*&YtYID7xr}+g+vh`-zGHLW)sgvQP0IuKO9WktFpD{38MGO@6vzj|BbTDjN1)=^sF&jtE!1#1Zb4{?6R2a#;q_P8UzN z?QgpQP)D3z|59jUS4OYA)dOJ~Rceg!H63SkGBFlsJn0B3v}W-lmeO*X>u}S#XI>Nl zU6pzA^l)VPN_-doKFjKyS>YD9qIn?BV;ft_wv)+@nw7f{dd69hG9en@lYi9wB@8)5 z8+J!Fu%`oOQ%q{s;f~0b*qsX@IOcTZKdctMqMFqIkpd+4?PcpV@t;eTccy)%wvzuu zT_=k?vkwj6OQ1T5KjAkcn^9;GrTm6_-0)zoSIHp5Pk?a{iAmp*}{{Q{RY~6+7 zX=x!$Ha?b~E-;Jd30~J3!iWoYFh{gcX1^J-LuZXh5A}B8ppFCNi(%|i^ZxYh2ACrH z$-DZ+YhY0SN+kXXtyecpGasG;>?|boQf*pbh%;q;S;VyG4kc9jyOKjO^+C9_Q_&;Yv)R zfqu&HWNUKeeP9v5JA52VMc(8>-W(C+^RIjQk6b&{*@BqRLji%hk^PCBeIGs}nslo> z5+&1%HlKfGbR$FfK9Z7Z5sG%RZ>v$F#Du7-+Hq5PEPHGz7Mhg)w|{OMi=A5Ro5~zq z@E|#4dOE>J8|167H9L4Z$8!e^nZU?&CR6QPY-+J@pDlnAK}AA74E`dSR81I^rR3dd znxe;NL?2)k<#Vy1#lG%Hk|#Sh{8#K-vJ4h!_~<#-;FM9@{FT>>^I9pXzi@W9S{oA; zgj@I#Ts!XH3se{?KS=zts^5VP5R#ZRU=Mpn|2)I(MPdSjcCVvAE+EY@Lh=kE~1=UKa@&E?kD}=`sHLX(P|u zo5Ve+@YMrYJLkMutg!dX2uwJ_)wM`Sq)q9s&)2PuL%_BC#d;Hpa6*l(ZLx)!(0HbK zl{bot7NvZ6@c0fby~bbTGXBDl4@(j3;`^r3fVhKdh@=ei18e*xa}pt?VRP0qZ2f{= zMn;zz!lSq8#|pPV=I639UZS6*cD5%ANSrQ_p11Z}x`#=KWehAEUaVVVh1|PAh$Tth zGy@n8c(6Axi{UjTy*X?FXe;$2J-~>=l_U@p;!nYtr!}}&Ol=6wHH;Pd>C|L_sNOV` zvh;pXlAK;aYbX$a&}K&F-Fc(ptbp9H=mASQI5+ov!;A)ntNvje zco9ryR@5WMcJCxBrG6<&aTQ|FiYT#P7Rh$mCJa8?WzAYwT7JhN4ak`ns;0?ms zhQU63)=;4uqi&7;d~WTvSh*Z-OF@BY1W2&#fA4<|Y{#)`Qew0y6l5M*1u&`gJQur0 z5^OFzpivN~qk2fjPmDHC8NzU{APF6olalSowD5Y3D6xHiGTa(zyvUk4u7NCt{l~2Y z0j0L?HtrcPsJz=z58oeNW4e4ZyI}@?Ex^((r`h~UJAq*SfjBMvX=5l%f&wfJBGdbu z#alquM49*x_^WL1QnG-7mTRXizYp4{56s7lhgFmOu5aJWQc}i&*niMa+;%)wuaI$O z@}6}@Rvr9bVZamLPnK`5kuj{~+PmC=-R`g^+aL(DN&$W2$C*z_EvkjX`-jEq?VO=u zgtVeibxsN-rQ+D}A@gd4*w*hbktYNhD!KR8*P;IIhzUT}_9KAS;4*n#P6Lb<;eb12 z%VK7w9;Mw2Ugun`+_obYIb3R4^76er{C`vgGD)w&FHw~Gm~_(uP2s&mt|6q;`z@Gk z;+o;+PyvvGB?A1D=5${u){QP2DN%lh5S-<{?+`!}C>TZX%Fh z28SnTr=eb6J0#cJM~k2Nxhy$q^@%nXJ*2A*qt&mp>5tDD zPU&`~Scp^R6-c14r1g)TI}BrEfm z@FQe8;Kc9uSZ~)Sh!p-+u7Bvvo5~qK;uURAB`GtII|L3#vgBFMda`jl*2rHVk5}<> z3u6Ou@U`G^>E>l$tjQ+?X{K5G@fvMMl?!!<79^ZWxVEMFcARLKz=49u+2c+_;0oex z0C@QzXd^#yi~II42~nF5Ys_sk5{&I2>^8m$D_}9p#u}YwA`kwe4ymB|MlTR8I?C@1 zFurs2DrU+w`Ry(GJP&>bT{+PF3HeON8EZOJ73VJ~u^3v>QkO1R z+=eF<7;H!IUyE$g7--;bEjg_aAH&K|A3pS3XWSw_08jcLc^IxQKr=~KN%n=4}>HRsDsj2MxBA)cLROW-lHof4R@ zi7bILOLVPbn!NDGHP~BpuqRbp5UMW$g`zXb1&;rdw&F>KiVo-nqT>pc3BhSPq9i75 zzUivzve;mF9H9|qa;Ui_AHdE}@!iH;+tRW}ET4etSin953c98EuLGY_|ir z_0!x@?oPMcl$}_Rm2INRIS~;(Sc}e$R$AS;9e6_KX|{E8J@JDS<<}&+N{6zN0c;3W zpr4A?N)w0Lr3z3bAMlPVLyY>m-{Lj7LwFb^8tMnft3=6vP^wyl+IW=$0He1bIPy`{ z+uy#PY(yc4Ai(my-Gok3;7l66cTw%i^IH zg1#UM{M}nIG(M^CAVR`JI7CeI9gCJ2DIiBcm%JC>B=8xg%-Vvxm^KiA1Ew_s{O%{~ ztNjAhtr7~gT$+#lF+$9;*@7B2qpyb72-tDl$xjs$R=dl}(Y&>Ak9I9~Ih$ty9SrAb zWZ*mtk_jUwF$rR1f4#};Ws1a(eT~fRHkS&j1bcai4A!j$$K!lNlGe64nu;jt^q zP63EtQaK0XSBdnYoB)>An@!?YNTiR$*bfU*kwolE(0hRca={vNQ(fVaY}XR7{pDI_5*?oE-+NPiUlNXs3czzd0wd~(v?Li02KL324oAt zH%s+{{P8`~z(ItMomQEzlRbVR(x+xIDRKeT?9WD1hU|N2Fze4IZ<$E5gO=%w)!8l@ zJV~ITZZ(b_gX~yj5SpD_7PX}4)DR@iWRHaXSUtrv7%nlb`RYN3hT_2O1r4j>`rOQR zZSM%^ytr=mXwvrrs|7)1<^%Y{Zo0Z#TcU`RenH;9ISf9dO#jiXtPUHXyA`X%{$Y-{ z(GJRLx^7A7O3@MoHkUlNqs2gF4SWhW_nni_2cw-x^ZqSq(eLy?`L_el(%f^cR-o-< z`00Wwtkr@Pmej+?&g!+=eHtr;+4&j5FBPgHp=rF*atA$jw9@;Fj$3{qRs&ZE*%Y!vXW8JIAcA@zVfQ9E zavdK}Ag6ET+fK)e*nFR&LlTlCHYl4l zE-!y2{ck~w-V#x2JsY`_bO1i1qStEIG#L^Xl<7)OtvY7QBBn)Yhz42GOe;(>qGf7S zX`1HwTCM$JVy_VjO~^LfE*b1LjAkYltvh8yPCEQuY=xK3*WQ!YU80{Tt8r3r7g(g1 z9B|f<3D%7JyI~Il0Lbc&`rakiR1#?@Xt$E*=+2IcQuUnjSI@y`Qn-bRao6b$jrW_p zrpYuy><3rmF%j5wdf<=>4!oMMz}9N0K}tp%jay@$O1>qN1AV&#ir5zx{Dk=RZefLz8!h$c3F|?E6o@PMs*|Y_^SmIZ~ldP zk}S*pU~@s?Siw1-+ozuV9B><|qhZq;k{tIKa#}K5VtwJmZa@o~oI|2@7+vMLxmdPN zm3YR{AD(sX)bbG77L-?LU-v9@PdV6rT}&%yEbm zqrqD)lE}8VYs%Eyvr=X{^@Su@Dv#4K5$s50Dx^4ez24+!d%)hZbC_Oo&$-?ZRJQZ*OTdRT1t+5*Ol6yf5{r-IH2aT?Ce1ex z9^?Hc+l@p7ZpwlbCHJU~0|uPW_&I_+i=HGSGmMfc2fi2A7hP}io{@m16VMqH>^9&6 zLk`Y5>Hl#>eB=tIFs~Uw!v3mmzV8w#WTU&vqyU99Z(A3fl?z}8SYY1&!E8mnH@r~F z@g|YFXy0|?(M!yDtJt*(0ej7f>|dn;g_up=*jo4n5|@$d9$%0p%tzG54giSyd*=e}G1`o{7dvG&s0mmg!vcA55aGbMS4~*H z-unRL%Xb4SOUetZ4GU&BTf}Wwp12WJV$WLb_eYA?j$QpXD5u+-M3tccMVp|5VUq~Ncl((A z1TM>FZ^{n=5L%o*CuJ94)Yfs^_9<{cp#<1sfRPoCG=VYot&&3HgkQMBeQa)Q zAwBJZt_qx*=7Ed-X;BBiry2XZnRa(-z$SsKpK5oBF#vm_f7PXChR?9KlI?Fz33DU8 zG+sIr?e-#*9?OCs!P1?{(O72y5wOT9Wji%kicZ;x7f^2VH6*<)rgs9fA9~U#TSNft z&7eDxv7mFgR{PzMxUn-HMtfyIaolo}PF=)kp@aOI`>^5G44N>yU!OF~xLZ-hhkx1L zhizW71g?9~TMY-XvaQ&y#^yJH5$vlWERaD|(&sKCy&HFTm1zs{a$c4`=C=J6l|%N= z(~XiFWNu6oVnB{O&+vMa^Ln}Acgn3PE|FgVu}ew_(`eXI-rUMUu)x=Ash`&kKJ`}_ zJ(?^~T*xZj$r5m_6h_h3+UA`!dyx)AoCP%fYe$CL*nUcKq=+#weYkDM4&)Yc2)0$+ z#i`QRO$dRZ)_PEFs7X~xedG1mc|uB>-Q4o-Tib1p(LL}I7-yc7;|T%0kP&M6r%Dt* z_FEr;jHU|SBtBT~ zh%pCmThPy|I1EG99nTtAEQ)cr^hR!x4@8)4TZkW~S(Pg1o((X&FVNxv#n3rTFSgCR zL#if2HNf{HY)4wlh%jwqCW}A$@QkYfU;fPYLO5Lp;2hm0*%Egf2-l9?fOFC(8uDm4 zSppJVMIK`m(la1V{Pzi!;SaAy+Y~v>2LV@Y$zaf9T{r@n4SR0}DXI?S7aHw*fIqKt zTZ}CzqXB-pbPb7SLnoxsQAS+OG2U>gxu_wtl=52bDsW16#cV2}@Dg0$G)Nl{Nd!8E z!!cFRau|apbODZl!cMvOuW5{7(V5h7*=mxg5aA98qIm9|f+Y>!$sEQM{@E$l(OZWu z1i#;E+tA&Fk$EBrPkd;QF7#^-r6*9*SkwGu3(xh&z0Zq>B@I?hcB4 z^Ue^-X`fd=|6Q-&UDWKCs*-KT?Z{bm*k&QSDCF(-_rR!-Ar+nTo?q)()SR~%O{Pb) z8fCuhf{uV%0wY->&h%CZ2 zTS`rPH-IDo&+I3|({$=&KoMIIwJM5#ku~3mV*y}$4PRDOp(dmsW8c9qgRXMqjAKmK=tXkW1X;;V@yC|Mvr{AyC&$12mpIZ(eSlgzg`An zMWJH`-y!%&45N41&;&r?c^z@Olfo!aiN`qJ%iT+2BtsBF0Zr96M~mp3W%Y&1NAsSL zeKJen6K2n2)Yo$Dj#Qu>8mMhhS4uw2lz$36=YpQ!Is+EKz?9MYOSP5oe!6jgItgsa z%cfPQPLUSG(DY}mI4o!afaSa~n+RjRpYEDCFgER6*C6qtD<{*6907cul~~JMo~ExI zcXU@XA-eywRjzj(Gn+;S7j?3w5Td7>@*)GrnSQQ!TaFezZ5+_)A+`5%*NYspQ_dG6 zE_Jy72DPh|q!_M6KVY^TGN|(69bs+*0$=WW*TK3)5-OvgnH;dgkQCWNV1{XV;n~gv z`>pP%?a)|HS87x%E@KuoTtWPkX)V1+z;STU7#JijAiv2$wG{anTShZp>3ZSsd?&_p zanjNoSWv{Z8k8G3OBIOSdpZW&O~Y2&;4!^S?&G)$bpomFn6D_~-)`wtkg~?8bz682 zb_&}Uux*PkVdx8qN`9eMBM$sMu>5s-NdWZmb3a&C>(weQB&4H5Ess~Vn({?E$08qb zUsOGkAWxl9Wh-bO0)>bUjzCHoTO>#;XSIq9*ZA|*Q5M4k-DZGii+{Btam*g%qq8ta z>`3OG08_AAIq3nmSYomNUD2TiIDiDp2h<9hx?z7-pC!00?_l+OH<3Jns5uMd}-hEo%N#yY$?1kY90 zIz@&$Ym*?<7C+vB&WJf7?J>9cI)Nnv3s2E&0@;D#hmi5+J6(#< zCB0U2n$GYII3MD7tpkQIh{Y8 za6;M>TNu`G$ESR{$~hmlYvaytLdnJsFz9v57o9}QYKV7Zyc4Tmah5)FF0-shT0WvO z8lIQLa&!rqa_b;V>qx7L)=v=X-cg1qLL7?elmomM^cde*iHMngY!sUo1nTM#8h= zJLP2#w;jXxR(k2LZ5 zA>&lVX#+gCd95E0cz}4!xi{6ch#>@cJJkBJFAwwUVub%r4;g_<_Ke_7pI z9A$z8yamiE@awGc^&0DKgU}qrZj3@{`22Lx+JHoh1;!%iSXyq|6QLe#2}+*t-FTy8 z+J=WThr=CB|L$2b%s~(zVtRYpO3l+ml)#-ezZMH$7vrL#KZqhCC4Jgc2>fdScz=Ap zJxAs+qR^bjJUza-e(KHR8(O;E9hTU)xt-Oflr0vofSSCny46m&^Mq4(AwSJSMX z^roN|R$YKH4 zp?(orX)QOT=nL!>(cSLQAksSA4MAI`@vb$>RbCP=NH(P=`|Dj&u3M1AhzUo<;g)z1 zB&LNdiE!JYV4~=b9fa2#b9Mz<(4cW?u{`i(W1xzBBxJsv@Z*Uwf zIQ-Q*(6adYZr3Ik)^m1`T24X^865R0k`$?(?b#JJXahA{k4yo;;VF8@ZGKhZ%>ZUC z0q5>))lYzJ=MF*xQ=++@m6<%krNJqv&GEVeZZuQ!T=4f1@Ic#`F1quu=BdsWe84W8 zQDiH}Zva&A7(iG;`se%QCfZxp1;=3D>-r2qfldM(00$Y;B7_;%ibRG_sIqOy?}%Qz zJy7Vw5spOIO-i`}Xq>=P*kHBBeOExDGa)H28d|wf!>A=}Ljt>pwl%lT2JO#*0N2d> zwy`ZQp=J(TKdoNNxC*gk2?aB<vQ>=D$9c`rf4z0s0 zWYqme@g{>*PmXJpH5?*7an7@U2A21Bq}c%x^7$Y?j!vASNp2y(OV}%Vv_e1xF*oj? zd=!QtBHGmtvN7btnAd*eN3Tw(-GZrd+Fm;hT#zV44Wpm7B82@bZ3HSf4&SJkrtJoX zEKmSvA#1qlj|RGZ%GV)}Q(Syh5Zi`cTSp;Fcv?Mtlmd7kO>{qqN`I>{v&vDG?Tp zOxiOBAieBN1h7W|hmCT0KhGM7=3mfDi)1ZCLTLMB1DhO@>&~_Bdd>1?OQ^Zuu@HFX zt9-ZX7=`jh`2hfc;;r}$D_HKll)i4zmF1w4K<&oE!ThsJuErvWv}HOz;skm!E|@h} z9mV_7<>>-@Amjthe3tQA?T%!Ls)z)-L9`=o5sHQmZTX0E`9umzCZM=bfkKtnp1i48 z+S3EaA0mz~D|p+J3^VAy=Cr*IBrVK*vwyH22fvg~h@jBA-hf!Ck?_1&%& z;>XULA#y?)Y9)1m6|lXgU1t@qx5o?77(gy2bN!vL-iJ~2t&mijMMFD3-hh#rp5nz= zSDXwuP7O$=GDeFpm)`sF#up3!7lt*}mC`ag-gE*naIbE^mt?`o*vP(Xe`(ZOFl(2@ z&I(qwv%01j9=d2G1^dArPq5}ro)I-fyNaZiThbd9T5h<6z=Qz;OdIZls7})$@jUG!N-kL=5^z1A$#%i!jo`nFUK2t ztX=Hy4j1fzo$gdxbPgvR) zl45IuibJR21U-m@s0{(`wco*YL+psq-M~}|f@VISD_+(DbZId%4&;Lu8w;avRJrWh z1|Cp-42x%Wk{dR#f!3=h4V%9Y`0Pk z5OM=jWcM}!!=DR3CkXusPq6h4yUxC4$N>gIK2<#0jZ{jNNfHUNzwPKzkq%1F zB9Dit5_0nPKgC5qZEsj`5G8j+QJc=a(Jt>$_EdwiMILxNd5j^WyzSekK>>(!XOm9726S%{dh1bAeJ&% zn-5$tY~YF&NR#2}c%emNxx!2F_L{P@4oiyU$-bjBRi5YJ`%GxAwc|sUF?MQ_vx&dJ- zl7JwCyWo1R+*B;jp)G@pvU`g_ffz-uozyn%Z1UeNOM;{wkv65)^Lh~HJI2+tg2pbT zBpi;=a0cvij)Lgc{Hb4MGGR#o(nVH14_6e1zCrJw^gBc^HwwZ%Xy!7no#!5b#&?D9 zp)7&K8t&KGmBOtSRSU>!1+2Z-*Mt#CGGc+QfJa!T?FZ%d3mIH!niV`o#EpFVJ1aP_ zLJAhr&F7OAL<(|2K^&O&HpxmilPvIt@xwNLvfu%J^4L=lS?}LL&qM592A3xX435yX zZvcE0{vWUcdsVK4&V1VnT|nKix*ajdoC;bi6VXR~Ar;&?e$l2F7`8&~%5yQ7P)_UC|HWzdx(pr+9W7qh@Un7ahMqj*f&k<>wTc{%5reO0y_B zqlYwJt6dvDSXTnAOUy;PZ@`J}M6i4NgL(M;ar`T|Zj~mw1c=YoenH+A;fVkUz;2tS zp+=o4)DX6L`HnsYK*TB|Wa z!^~LHFJnEMRJXRiAYT*4PyuL6Xok`*<;ip-U{%USWXKw=6@6S*IxV+pE>NH0J zq_32h`~l7VA)`~q)xFg{ssy)1g$H*N)#WB(NMPo2fj`k`Hj9s2(TPQGAiR>XP zEPn1XyEF!q52Wu({5To;<55OmcO@XpOlwnw^XNTrs3JrzOIhMvkut)?p~M>cs`(|G zU$0CJ%d5z?(fDU})i0+lD*%1^`#+^xgqYUxtCqGvs&&%~ zSnVE7L~cj=lm1o=+sq8~G@~GCJgl!t9`;f4Y5H(KkEYcyK+b>q_%1#Kms_!qZaG`wK(zNJ-d%rCf52Duk<|3WZ5WcLkI1X_q1& zgz9^LZc5(d6^AC&1i5R|_{sMPBoxi^t7Z=CMn&00vKTnB)$8`t+&BP$ekF|9(tVq0Dlp&;ckSYJ{i_SG^DLseKO4`-hTgGgfkw_X~d z`4i+DARzYw1}97pvg2@`mc^we^W0%eDb3gVgFdjzZL_Z!R*qU~B zM5!6nGfP1Ur~W(_%#&1Ab937tWHzSlS5+Ct;Y{iPOF*>0C+VQWjSC1rP$~QlGpxIf zK2Q!pJ>^m7c!!ZI+D+r6m{}^z%M<7=eCli4j5^Q26pIj9fDy#46}) z;#m@g8|DrQw8=lD_4Knv62{wLWEsIQ^nR9aw*9M4+c#aAoGCd-jETX?51Y{a;NqCL zthA`%=qzdMj(T}}+-#h+d0C9TK%Ys{%UgM6NF|9Gvu)S$Q$bpMpf^v`Z;)79#r0e* z{6c;mBm>YCs{qARS}_u9DjFy`ZHGp9tsjjbNZW`vpE-$bs;{O&a?2(C;R@zs_?{Gu zh0H_vjg?8F2~W49HK@lk{5;!7SB$CppH#o=iUA{QbdfDU_$&_}39?CA2f6!sW9G)J zxl3%Kp1#BL7iJ$(PLl}XpqjjZvP{8fe}MIHndtnNj2x#H?9tOlSZP-r?2;M218A{Q zg)zxtb3{@52uMh(&+TIN1pf-G1+4Y7RFH`!sQB4k zspkD6H`=9zPRWq87#+rcmb-a4+uepdOlS7c;vPjYJdschO|7}^QYtUdpVGdpAs?CR zwAaCE-&%N(PWbW=ujWIs5B5{lmIRIG)E8zCOp_oqhxvN8+Apg`^t{xJU{>XF{Dp== zAL2-jHA}L~EdU%4-=gJ@%I5Rgt}b0%p94u;z>?7+0ieZXDFI`mRBz$I;Xq#={^&=T z_gJl5y|>X?>5VcGxpf!6LT5&T`k^eGo7HYIY_h0kr@!}E-rsGq+E=4eVqZt*Mk!fhyt$ zZJBa;h*knJ!C09NB}|?*4`3W7%A0i4|2f|2`rRrrF7_Fa$*=Big9a7i{_)K!6+#MO(8h+DKMJu3iZEx#VFW>)*wFp&@k zIX{LebteqGVHh?bx_>Ue|K?wS?!W;P=bVnoe@|?(?Si|JDA;vWVU-wq$!LLun-&45 zys3K;Jq3W~qVo1xOIkq2p%tFwKmWGT`(8v2b!TeWXIXO0~T7E_cTnCP^=}0=G$T zE)hwu0UB_bumR=rJ-oas-&8hn9+Y7 zbUU^yR_b*wrK6c`_v*d9TqQ1KNiy%!8(uInVW->e31Pqu^k~N-ECOI7#r%Gi5Pemosb zjd5veU@I8Z8U+gFFii^2NGBBQpG8cL=s_kK69D09^T^aCT}pQ-eia9$8<;g=?hko+ zCPk=E0)3fjcbT&$-~r>E{G`Reo4Yn+e~_l|g8O!tqPZY6Gh>d0otS?i>T(@v4nNv> zw%MpR)gAgOBg^(`@F)^`#@-!D6NAH~NIC0vS|LZv04gnYZqJSe2Yg=Ap>7+}qOz47 z7+0mO7K=s@0{{#lR<6f%K!slfNz-RPHYJ%a4g0SyhxS64BdaI1GrcU6YQ*oUBhzk( z%>iCd?Y9Gx!HbMvU!u3#uxw+kO z1!R1sDULB?*iJ1B9mGb54B1zx95{b+ooWsQwp0z`?>9|v>*F6LQ0ViS`7lyFft2IxmXs(!ZU z7Dl=9l%fHM&vLO;hpc1QFgnynB_8Tsh6Ug)gMy0lWu1;zj#ywNgdi%C%0I6X8-odv zO8z_L0pa`rKoYO=+de`6ianXs=`BvW1n(3i;EJ{4&uaJ+itcR}d-vrrU9MhvteV0?ykeqafv{v2BAu40tcvq_KP4d zOMlqQek*~nwhmZ=$Ci#RLy=rh`1^)$k%A z&^W3f%C1S|2tgKFTA}eB4U&i6bNd3pS&_97= zA(4i>((Vbs5C&WcDRF!>93BA6a-ZW0QNxH%lEZteF!#erHNvS}nL3DA=7E5g`sdR< zAc24`E*a*a6^h2O-P-7Subo1sQa%&qv?M*!hv0+d4AY<5@;gTV!eau}b=0tHcJheD zOyZ}SYjoGU$7sf%2$2P@r<&#~MwfbdI)vM>6rCu;RWFdc?Vk7<%{LUW9bJIk5^hoe z<41Uf=&TU^wLnJdT#>B1dkUuxwYr9?AITXLA;-BTvh{t$cGb)ak#4%EnrY{fr(o4l5UcsfNHYK zptqRbmtDJkH>jDiU7OMraL*AusAWitm3I57vKWB~mc_5Z2>x03a4lY*t!v6ah-MP( z13_>!Q9>r2;vlZohAcy*U>@-1I#;vce5vW+GC}$lc60lwAf`e$8<(<$I!JO1;cTdj z&*301oKb>x5y|Qq-+S`*-DE&gq%NOR=w7cj zS~yWtW7{vy|2T-^Nw1Cc{rEHi7Vj6gv5Yfs4&-|nnNK7Zj=e86?dL4_R=ixX4LJ5LN3Pm0tKrm(7#D>NRQ(5@2Xt}H-QX{1Rqm{PmcYB z{mxsKM<)aF9YBrL9InT2jyM*o8!KA(zq1Lrk)=j9OFw{!c8)GBOHIDei_l%|8uRwC zO(kq=xz!8a9mK_tKIXh=bJT{Ka8429vRoj^M` z>CoP0^8EER5=aQTqPIhR_PLzZT3}c4$;5PeHS^)GB7jDX_W{y|#}u$$3y;(^ARs9z z3(w5FWniF)v=5yApEgOR-by<1nci1BhK}_P3@j)$Q02L(bW5)x>EtNe@ztP=y{!tpNpu)rN2`xOPH=W3HVOH z#YnD7cBpM9LRTS{;<7U)KL|T~V z7GR2`xh0Nwo9o(Oo^U5A-0*q`TlG3*xQ8Sud9F4$-GoGz1P)ia;777W2LC60m9Ci3 zByp^!|1zEVDypdE2bM98xk>v`($w&6q_TLj#~2IU>J3~B1<#`$p7$B(Qi)^xV|^C4 zl|}`}nR)Ra@i)hu0RH;ED~Dx2utwa-V_T;_BG3+Zm;{U~FCA}^p1(cWw>~`?H*7{4tkbm?P<9xw z6>xGNWw=Qcqic1!i6tkRhCJ66`#OWbKphnd@`PpUKu3cfjb*d6FS>JhED!**!OsjR zXM3%NT;12PzKriJ=z-}7$)y&syuq2NNJ`V?MxqSXM$@71>Al$ezDEG%(ZmJ$I+JH4 zno7vm0l9Kl(xOF!W;>E^XpX-ZyM)Omk=`nWl%Ac;H~3|zWwmdc)zvsKWP-ZF+$C)S8`T=NYjyxX>BzA|!uQ2=Ez^Y;c&vMd z5I+bkJ5CluTuNO7`6i?0_5(k8E>`CE#VlHB#xC=b=zh$6kit;7@Ili)5=beERS!qI zzn`pq|7NfbG)Ji1Hr|mWc)&(xr0!ZL_#*`V#NGyCK;u}9OFP{zZIUJgCCQAEUx94svwYVb9` zU*jbf!@z{!SrM?>dYwVuYDjgW1M6>>>W(hu;7;fzz85RspA7g2|1KD=GP>6^AKP%d zvvbdFXM25M5y>=l{s^r-7whr+lXb-0X!}GJ4qK}Q@j>vR;Co%|s>3*v`#M9w`reK0 zvKuj5qh(5q5HB}p4Z}?6q7_BoxQ%1P^sfevk;FmygHa*tK@U z=aZoh5pnt~CD8#+34{qJ{4iA{A^C-HddFf1gsJpr+-rfGxiw*BR`|5iUW)W~!`Yj# zr#s;~wh0B9eaM)@r4=WJ`pT0T#r5iXS>ODiSKYp-X4+XxdRKe?{xSEXDdR z3PoupP4m^{h)2c>DA|FO$hHOzUckEB#(F@XlA7}0S>Ks1I5JNngGDE_Blm4rOMvT9 z*H{W0>x?qEMH&kW;jk6OyyL=m5(rNY$LcKkSUsZMOWG}?%{Ab&d&ctiPOGL{WSeJ0 z(yp6JLlUk-r-n$)`6HHASy{lI{J2fIs00+V3hom1h>v8<6XAXrzJWh7!Ikp}4(-1p$VWV z)tEtrL)+P&EjLYj{&|zvYru{aT3iU#^%~ulrtx!?4t3%DR!Bo|5Lz7AlJKhCtkPUT>_oStE$1rph|a&Q_bFhjEl4?YBFSQ@nSX?2xUp0SH=&YklIEDkuI<#0bNz8|-7 znKHp72B*LJ2|_Y|h~`%ComM=^tMYK)k}n2Q*z=B3lG2AXLoW z4Jlie;;C`MnwgPCZP77hl>2C%qgPzQzdf}(_h^C}vo8!&a?a_}YBJg+!7Xu-C)EeS zzqlpoft7yx2FLqM9q6*{{tje~_KwF&5_7RdF@$nNGexNsAL5elIAY~pY=L)0EzPuM zJE<3#BQ*Q!j5fVfdx-P9r08bGlSKTCT_cMRf#R2pQ%_%HdpfSdxuuXm%08_VLKvF3vXYH>m{N8-+lJUf< zlt%X0@&`=A2-&S~sSZ|;nKF~1`ae9ba24KE3O=(w{DU?|X@@2sVk2=uE9s?+#*i@p zZJ!?8u~F`_G+i=ijPUIi?GH~Cpo@t4k|em`I+E_CDciIw;dnY4vKQ?-swCiL_G&0r zU0An&M6>NSKvrcX=#20!6x1Yxj~1RRRJatkjF}(C=K-Iy`e)Kkq{OLe=`KR0<**jF z0$~Qb)HV+g3q^6d6~)MIFp-2XA2ziR_ateR)(1a`=1NuCgcV{s%KZkG{sM-8v`6QO z*+I+>ZpS+e9l6pM8&i!87+8aZlKXo+)us|z#h=)|i~CIZ$J2U4xN7tDW&FOwo&_dghQjG1UrSmfJgXsD17P8j|=*Kg2-1cNoETnt`HnE4)< zC&T9?Yir;ZPQOdI2L}WM@Z4~AP6dEPuNE{*3$K~jJzXHv5myFfgS@FnSvuBen1VSk zeu1MSgtHxA@Kl|$JK~P$MQMkRhj?Rk5EX9cwn+$!q%NL$!P2DLg$-Bi2fCe!&y}77 z7#rcWApva%w|DXq60NCBaw!~QX9jB@Zu2}rI<^TqbDVEN5>nJh!=I_mDBI%}m>lRB zwGLOtY!R8t8){le=@5(Lud&#-!b+@2AObYB-7*YUxqxjHZQ13VIZz{AzdGvMB98S~4_-HmORI ztxXhLi_G2Wf7myWBS|~?gaeJctnL66-=l=!E&O<50y!SxPh#+*RG}4yI687FU|h~O ziO0_se}_kKU`8qx2j`LiVX+tm%OP&R3mliA3j#SkbcCTMBZ{~dpt86 ztJ-!T`&N$+E69XpC>@qk^7&|Y9d`-|%nBNsily)UpM=hw=z@jqWniBZwh-{0&_j7` zlDkWwLbB9BF+d4hQ5V{9N5l$1xL*zdrXCi+ke%9VwR@0cQi)I`?YXqiw#cRQ@UbOq z?i+5&QiI5gB25{uu$6w{z+x|_VK171$9SSZ%>x?-*S=-OLnwf;FeHE*VtO67Uznm` zK!$REgg8Hv?~*K_rp04fiT?aCb~8eg@hWOAZ^U=_&ZZKStJ2H{_#3io9?&ZsU=r*# zmNh%-%w38o%``Tl5`T0sS2cW}<&*os&Sf}n(aSway8I%jlv7#;YDnS}Uda8>1MlOF zRJdQ>Seefbjw$!yg@>e5?f0-9fkx(94sb}OjV6G@I2n^vg11x9WZp`=hcVcvQ{kq- zt?0fm&+@kD2>fBExv*pe9{udQ`f`#sYeJqeR0sWGo}8JKN^{5c`5KG|DfDE-w8v|} zu2TQ2F=6cm+o-5+Zr(#iRGI7`;0RdjgEu2VHaR8zlfmAo0h3uG$XaT)C9X~eJ0+zm zgU8}UPN_{K9T-5IkW+p9K4obdKQQsC@?Ue_yqyh;M(N|-;gtY-rk0$itfDbKKO0(! z7eZm<@@C}BO1W*UKBHQitpHiwc9-IWs}yf8%9W=+cfGO@7`i6NQi;<&w(*;6OTd&N zXXR9g3}luLtd#v z=^5FjKr~gc_gZb-9U3ZT5)i7xXq!)Krvb_1PLSCbHxfnm3K4u`#QS=-yDxJ>K9kZu zz#oZQGlCgPgzy0V+N(N5`k=!?0_^`>ZrAXS?+QgBAH+^<@i*B?Ct(3G&RqCH3ppS& z`Xr5r?VRM)i}(O1Eod~1rhj=@EG9H&XfRRYgcu6Jj+x>B@=6NJ0T?bSUr z+OmLive;&M+b!wf0gtK3j~vnzmI?hr5DD)CI<869($0NG-GF>mvy(N$M8_it>4!U5 zjb~$?4N|^u5T=SG!;-%an~NMM_wfgSNZ~q_2v{MrO9_C$$}xKb=g)FqK3gR zmKMFJ5NtD|M`T&^0uFR_uiv_Fs0(;*IUp9N+WEh%&6^s|iR(GJLU6Q1LEK=CX2kX}yi)1k37KI~X z+5JyixKQ2ZW3*`rD`qg92aDctjt&w>9A72yFh-X>sQTQ zrV3IW8}Q7g??>@iNn_F2bt;%etQq7UVsF2vv)zi`#q7C?5B!>+5A=$Sq$%FCFa`EN#JNBV&j$$L;Ag(11AUxV_Jq11N?Y&&n%lwvW1$tvNjPZW+JQDW=X{Qs< zqQ?>#7#Z}Vw2b1}Du*C_JqO4WA(O6|?+k8p1Sqp`y8sV$g0-x?L9$i)56>+5Q$}4A zR}`!OI+GjZ8r+NuBdprwBbHa0i!3pR9Kv!Fcl9uFf?0FLUs$#ahLx->EO!!?iyzBM zBI%OLgF7WP`@-Sp9zTk0`-l0ah2M0#J8BkXZkRAmQpl%+NL%GEwRTskjE61|(eoY% zSBb7kf7fDThh*xbL(BIn)>|~GS8H_qMMNSa!A{hvyE$IdDyvLtjX1DS&RG52T>CltDhA5mHhq;tIX2x?~+HJyw?lof+?(`I%j zAY4f;jS!=0Oy`cHs0JV@qumqQILWNDeBF_32NbC+L!G!=B{yZJPncQXevQ%nmP5cO zsr)VFnJs+Y?8zPWM%AI*yYjQ$Y(cvm=w=q6WZ`!~vrufu(JXanbw1nsV( zSZwnEplbG!D01AvKt>6cFBjAsYd>QN)+JY2$Ve9#nH~_r#jRrLPFDm5g$VRMVP{*y z9$}8(%6qwM{~Ceq1P1^&_a>R%*)?83f&Zuse=zzDlo!`3eH8Z&j7S926+l()Y$?+) zzaDdYQC(aMF0d^p-EoAsD*<_;zRR76REr*%mmJRVGfvFcZ$}d|P>Jd?cglrmmumXh z%^W-d!$x-CAdMc_?C+O(hw2FK%&$tTB+qSVQ;}>yk=fzA{xV1$YOQeu8AcOB&v znm)o)!BBMb@;PPoF2@q+2!8IM5Rd>05PuFk=!8MH{@PduiUI10IN~D6*xb-@C%Vn@ z&|{U`6j%IkCX!1$_4}t2iis`);)bgXrVn5}XI)Oi$(0h-EL!9sCGDe~b z9jhf~**omWkx!GQaNQ+9dkeT5yXffkxa40&aBc!D199Y+f$Xaz4;>NxI7H(zzKNGS z)=sZQFIsn8JTYwgmVlW8P-l1Sgjz_v!+is))w4DZzlhC*BM6zfX~672V(AVI{C5x| zSi!Pk*#dtUi^SRbTOjrBVjwFLIH$stY{n@zV^rygWOzyh1OylH$o;Y2@QPmOi(HFU z{9N(PlicHqCNTUuK)?j9%n_mm;$laqFI1FL|EV7PWjPe2p-*JlN4f+u3e2CJI?GAj zS=aU&DE*kDgeu6N7?}!qF^8f zC*dahv$HLHB88uHX@50|#;LD?6ZA3|QS2k~}GiD0j4wr6PxdXbTlAe~f z5FGg`HX*uhG3WW~RjG%|q0Y2>i2Ns~u-*9ZmT9dd)NH#Xs=$_s6~%wlf4!MBiQ1uh z&RNZhu-FsVo5|@BVKc4+&&f)#Q9B~HfS%@e$L;i)Yex;tH|@m;-bN`3k;lECGf2j)t-N$Va@b#HIL!aNI;CMO?tyY1xU$y}Isgld_@Etmaf z+G1k+4`8>|Pu%pNbH#^Z%L+!#a@v)Heo2KO*wSLr@y=UdXs+yaL3)mN`z@w9pIUK2 z+vA7)SCi9bqnwVmx1l7O4mDvR;DjB?L zDdjHBHou(U_jEkuN7})_Nk%$b80?KM;c<$zhj%Lbs-`b^uW9M|&E)0d%@L1m1z_8X ziPi;aCkL&i6Td&ade{&86-jFKcR{zc^|wfX31dgq>uXBX0t0S=!}@zasDD6a6G~|7 z74~-E;yyjo%gV4C_g43~8GC9ZKfx8I3Vq+qcDR{R@sl9J-P=by+Nd;{F*TAfy+ho% z4{RVb0Dk?t^GKu;QHpAfHfZx`RA658Q91C9)^_)%iq@)76TkyTsBy86ygPdL>G%Ro>NfAu$xY93nnfeBn^DAMj{NhEGyRmR3r@>d}E0_I38 z&;AB-r<25fCP|qIsv{QEcXGNp5$-2>CcYhzB!z0NUbM?`lyIjGE(E+vBp>=o)SG1C3{CliKfiObBXktsgaA_=Vb%WS@eAp zvY{rufZ6@LU=~5m8NpDegiX`}`(W!AfSu$EbOF7LP6Z3uBJFw>SPTbK7Y8SP6m#L6 zUAP8=oAWmVgq9s)O$q?YA}oW>u(*0RD3K1P52D_gPmq+GgX_&fSKCsrELJN8{d?oh ziE30q`*{!^FyNjphNPI3_{$mOZzKtOjToJPPSjt25ZNdm$(ee+k@m~_$vlwxmk}%D zk#V~PmskBK7h+xI2}*VQZwVMXuI}E=&O&73_+D6Mr6n_@uFYW*_AS_*L^FbVyEgBD zO+-vZhxAb&7o(0H$8aZHZs0Em*n{c*?@N&$gI1Z{lj8YuIPX9^`n#|^Z#ji7Fp*_w zctS1?@0}62bE6iHTV!CLAX|X2LboyeXW5F}%5Mt^-I_^%TP`#o=1%40CQ?`#5BP>! zn8i|m0t$@n`IfZs6<$Y)&TLkJMlgr>``@u&Fw;@Gvxl+Z@}4!v@LMBS|NnM zt~rUVaYzlM9hn+@0H4p|zkxFd5dn?{L_g(@(`CEj=<)TG+9FEJpv57D9gQ6- zONK&FraLxs1HwkWw@3(grWSi){2F~!6`rY}bQa~DoM05lR;!5QLMUbHiW;H^`->nh zsN<2y1?&2FMipd0qb@4g&0L;jrBilLPqz*EOkHvc#BTHcMlw4%gj~{N&XWv3{7Ava zszf*0>Pz<~b+61Bh$Aoqt7!jGdZDXDFa7@d+wCL$Yt~U*s)S_>;J#99rw_!lWV;IS z1QHt`KP=2sdZ(S!H0&zh5ZXWWER=}T_d5RfD?{7;^N7TbFzJq_9$;r< zm34Lfw1dX=Wt3EXeoJo*#c^a}*ZO0DWJ=Z!Q?d$b4;ld-uIVF!fg@r-Tfil@Ul3cr z6zPdTeU$Q;lG&$s^eLnmWSOxV4)55iB2kb{nDEE}{U;9syP1px>hUmM-pOMeolL_b z>+?4Icr)AP$*M~f%UsYh%70RW)zBfXF249yH69Y%Y$YcN0rnTdoy{f#CWkr^nf-8d z5mrn4O39VG;X z1M)d-A1h{ur=XGpiFD^|+#dnes9K zq4;d&t$ZJO9*{J^%dou;g}_JG)&M*iksSz$>WUMgXk1{cy6!-iL>L4uGzl<`{IL~!)lgKzuIJbtD+#6H72=nlIDSvM9SAd z)5SbCIy90URCyLya7S9~L8^2zQzpFi7@mwbUSh8H6{)M_wW;+1Esqy+%48%9f|<`s z@Q9P1+LT%%$NGFtu*e<}S4nYLDnM-2^xj1xkp%!BxpQS*&h|mE^%&Qcev5*LTJcpI&kabJto`%?`gq{9NJ09s z_2hrQCLrucT)#k&wYsLJ3eka;A-*5nv0VsljgTYqmB#SgG$lMj_~j(9Vhj_p8uZuUSy0v9 zUrH+L^Cv)fBw-mam4fF16&g02>xcnc$FwZim;H!K*0Yi>*0hQj_GhNA1uUF}h7S~3 z!cN})L>x5=?i5y0$ta1(YUXfA&-RQov&6*JeaI zOnVhVxwD^syO&rZt90OSX4?)jkm}-sYIolQNdE3w>DfNDUi+#2P0lziu7L*MDOwaYYs}oHKIgrRPR>*-Lh%xzPD+8@37OL2;^#-L#fcVx*T z2%D9>JhIFv^7^63LtT>XS19;&MY}M=VeoDx@wmd5*1F6Gj+zXyKnUseQug|XU}HgT zXiL|{_W@_2v|WaMGe!^NrMBZfR0ge!0J@)BIRRlQt?Vx!(LnSa!GhG77la!6#!O}H zhQz^NfW7fm!6sF(-|}Sw+9Nw}0{p(wkD-qh)JRF5V$UJ1;qoRjoSVP)fuk7%b{zu` z#v1kwg>A-Q&Wv+%jMZ^S6!XF#Afp)zj1#;NI`eiSKGX#318!<{FDxSsyP-7SMp#Q_ zL%m@2A9+)KwEIg5_v$BoZ@=Q4%22=1h`8QeZX_l=l?dCkZlqMH93{JS8_&;;Gs@8j z-q^P)eJETA-ZiJUO|Ah1juyRs4fMw7ujA^k{q?=2Q_qB9X{B2t<-Q+=rE=l60X6hG zh$QME4m#N_X+B;_1QUlXN2Evsq7!(jooaygn=HaC|LvM}BYg>^5uh|#Bgfn4mJgp> z6$nO10N}jdS3qKEYqiGAIjr$RzmCi@SBBbtT`itgE-RzRPs@YPwe)S*0op>xPXEjA zWTFPL>J@sza|_@D_`}L2JF9&M*kU|lX+$OL38EVo^gp5T4}}CM%q~6Lt7Yc!KXHB) z*8?^uYlzl$YHhQ$0%LGSAZ*s_TAa@9ox(iVdU~8XC|Qo5Hb08z5QAW79t{Uf0?>FO z#d)0;F;v@XlO)#|PqK6pTKd#6A%(6Y)B^M7Z9D{&9dLx*XQXhe*VUv{hblJ1qJORv z998B~Ib-_@ky{`JQ}V1TqMGgB&*XwzwXn+|fK#(5`650yI1c*9Rk@DKJj0rs1S{?n> z#As*9El~!1;n3pu>=bNDRp*kEp_j|(~(jrOWxT zP12Ajt#~j#L^ zTyx!C%5};iM7#{NLfroR49K-dk$Ee>%4dk9U-gnq%_iN#j+P0J( z#exjo-WudGEv&}|m=Kx_nf7VC&ZglHj&n>K9615l_2xm_$|)t{%zj-+?l|uR84R`m zDL|h_JP?I{IOG(;&P&sLX7Ao=9&`ABx$EBmNnL`e${_JRd5_b{J1X%7@-Tn8XR&}| zsEVIK$F|P-qaxg|$b(8+@`kXuBcmSLulB(0Ga&(qL8Y_YBMfaqu*9l!?g-;SnX4e6 zgdScOYln+5u%RU_g6Y`VegpPrBuoL+{gPr#%??n(u;P{Zx>*0JXi=STF(QCG)ak>H zLTx84Hiyu4F(S6J)K_A$KP(W~OHRwA{RE`k*s$8!-c%HN%=*`U3W5>L3h8V4ZE<41IEX08WuqKW z@!R9(_~J{ZUDA|XxIQ>0o+R4PFs$RrDI;p6{PeFq6O6QY7Aqcu?8JY~Q26R7%7(|V zAQNZ&$;^?F__IZs&M@CVUk4L?MBGp|j+h0s7G<VxcjOajOh_JJ3pRBxO!xuqavL|8u+ z?1tdX!_uYWDQqr*;5{8E(Ei8sDd4ipq~QYa6Hq!k)bBRaPhV&HoK72LaV%o!QeBi9 z>0t+Y7EFnJ7Z49b1|{Cse!m*aayb1qHL`J3fCt*HEz&h)xWkOo!zfi0fX1CdYvGq6QeFo^*u?@ z{@xt9;XKfDTW4YPa?(Bx@j;$yg&?)Uw;Ip>mJ>jR$h`}w%e;eRD&+ZrCIM>V}WN|iGoU)gWk*?hz@C51`$Qa7Exk6 zfoMrWQJn7)+%dm-@G6UkotcZddH^*@6qBtGBkk=O@-JA98*PB+EHj-ooA%$~)vHoj zE!{FrLs}SipdltSj^K3y<1qH81ny+Mj&QRcnhF4C8Ie*~THU_`UOV-^z3bvA?9(va zS||Yk0iQqsQcaGhVafK#l`c7bOhpDeCqirxr0e-a!2Yov`hxOy9%Cxjt$tXy>UHF> zl@=h3$CONDY`Dbi7o_N1Sm~n^aTSd~!~9sc03n=2(oG3*J=tHh1s@zSYo~`X5z=q* zD}ZvV*r{arYUcYBINr%XPYZoK_T5z!6EYxx7~nUK7k=yzK$E?}{?Ggzi_s4~R+H2? z1M5~An$xUW*^ZB7W#Od>WSV;lZUm~P4x|AX8b+^B0Vhg3&&(vk-neDcas9iY~{8fHk zEgycHm5jVv6K_#o@df=_wjfpxIFud)k9a$xRUTTo;=A68Ulp6kL-9@%JXap|7D62Q zxbUK<#fy_AT!O*#Q{u{Qw~1XDPBL6_jotFrJHF zZ%I5nH>km~KnR`a`4Cu0@YmsyDchCFDu9BSeHQQR`?-zNnv8m{$S}9fUnEt9r1Z2( zrj)-W6w`#rO(@3o`P{hL>9^Sm3*QZv4l4G1OEG2~KsnZeV>bq2wMjwn{9p6?YVGh& z(oJK62W*Daob}rnGXxgtfNo@q)sl!*_9fEdeqSw~zPC%kq z0lS#Jw2rr`H}g_{`@DJ2(U1{%9h!@t=q39bikut*1+!~Nk`?0CE7~h@Oe(1cC)&^YwhoDR22&|I%o8C@rW$!qF z7^r|-(u$xLbQA0Mso)}1I9v*oKIS&d^CB?)7&POnYrn4#AYF3J{%qeJ=g*nu06|Oj z;)?9dTDrOEa)9U6mx-F<NTR5PX688gH zV|OtNvyXXb%%DJJugMCcaN-{RYH|QH$5|kx^pE9Umph?qNY!GlH#{cQ7O}Om^&(3tBeM3c}s47Anw>682V^icv^e;?fww#mkGw9 z9aoX5w;SaH;?h9kwNeB*2GDZC!`|WZ-yLwUXil1l%Q{yeq9XEk?8YETjh6x`&;Hto zoXm2Br%~ox(Kya#1jWdL`C#tgipH$$Oq!6yVh2B%vUxMlK#?-@>$$~pD3#$k+nwR8 z2%pGxudJI`tO)1K{<$?}=?4%wJ4>|vtpsn|Xki}& zst9J}1sL1oYJjPZ$m|S@5&2{wx!iR+a2^$(UXca*)}7gX0IQWvf4Yf7&)t%cl$F5o zurFl?iZ09-1+D=AT|lD09mUmm;>dxnS0L-sp9TSX;b#G57fWE0Z<(71dsrEk_}0iY z+`3*Uee`DR_Twjvua&ZXH`FR`m^Df=nY4oJbsQnTIKri|KYR5jJCt*o*tikx{i3A& z)%{SRRjYKZNqVupcuC1Pt{1*kFS-b(srET?!C&XaR1R0;CoRCb6KrwZoe7qkJf=l4+=BQdRg|DmzQ%SF2>Z#!U=XW^K+*1c^^# zCH%y=UJ_ams2>xIjPR@#q?tP>hy;ymXik8rSRWkO*w8nI_$hUpR&XKN-H3$sJ_O4s zz0Lz+be1TCNe-VrG)=-a+p!y{SzF~RVrj%!`5JTn^7rM#)D(Uj4TKJ1U{izaFJ8!) zikRyb7@1K=CXWRc29S{PzS=lgI{>aQ2MYviCP#fB15~63i6@KQ!er4ZO1lwu$fSGo zRL1=w-8%x`h)Bn4b~6lNvQ^>WGN`oR&_wzVbixAJ=Mf({|b{;~8lgl-) zG(Q5GYw_M|)%T7p92aGO7$9mpJ8G+rpkgr+KjelxJoytFlilBK7tRBsww(t^p_zR? z%=zuyp|9fE05qRi;hY%3aUN47K`p&G=Ky|;eV1smY#(@E?KsF`zJXQ^3&h+=TbLAB zDxyY+`%s0Xjlsz5>TTYM5dfzsV86Cs;S1AvvJWnX?O#VclR7uFbk}>(Fv%Qz28N+o zU(l2y6u{TuRXgJ({XGd|^W-W@K4e=Y6~?70$4p57wDOwTUn2L{1UKx!^4AzT<*uup0=gdck$%QusEOA3^%lvi#eiLeN8jZcJPWxXU6 zE714>9klwe%d1&+nk`bPRshG0Ws+}i^)jw!Ne#Vz<@_odDy^GZ-}kYc$T|doVcbaQ ziiR`Da1z>{myl<|TKA{MWF^D+fDAL=SL=r}73ef_9|E|&;I+Bxs!ks;n6IVe9C~C+9`omcP%_S)v1H|Q2hL9K+`$9(*CNK0 z)Q8$zd@o$*oH$fmJbUSFr$@aiR94bBaHoAA^qZI$uv}6r&#R^5NVpA7!AZ!@5FKSj z0#PYS2Ljl;EiwS==qvyzzp*fMwQ$rB)91zNLw;)yV;6WdY;a-19C7O|?f`6nuogI| zzV2i_XJZZS2@_zl_56^-0+Yy2V8QOI#ADjXV1lluy~vL{X@Au}xCyPU%T<0_JDY8k z71*^Bbii0t5v!H$Gs6^3bTtRe`^sf|VgEzOJ)sU$t-RviMO%@@d9iKjC0XBiUMLd9dHp^N#YxSHehK-0+l?42j&5FqGNj%WRbUp|Lh8KC14d zEmLt%AC#VkO~E!KFG~ zu3QPDdpEMr0g%GkAUy!p>ETL>*FdDe%&fT%HENn%_MMF!y%y z?rcJeb+&U{b+3iJ3Z%(_AV)6ySe9%5!(w9p1yX7t;%@IE`zHP4sbP{=UDA)%#4C(# z;&p(l?GFamsQgNjE$Vb-5L*E0zC#4OQT-%<(H-!QPMP&}xqfadNEVdBvDDPi)CgXKZ`LHNa5qfpPR72fCg>BEZ z@7NKH`6jz8yyX7=b;oX3R?=;@zZl)fv_0&(=&2De8LD3n7~zm4k3ap_<&FnpfkKn8 zc++vS_)hIyhk_U>V$18Jg*AH zIHexwP&arWmmq>(V72aIdi$?n`oK<)pZ?c}a6W;MOh^wB=tuJ;r%IwG&5;1wYKve4 z^jQ#g_<4GK@qBVVb$zX7vxS+odGNH3yaC&;PFm)QzCfccLkp=m=kgqV(2qE>;+5G^ z1z)|TywZs!5AFOvtX}ejG#%sDjz9nAC1muz($c;euKskVC8W5@6VGfb; z_jg6c5X1&4CR((emy4+oGzaJ9?JDH_Ms7AOl`voNk4h@CH}YHEJQX&L!!v8N;!5cZ z6c8z|tUK$cO)=I23$(q(@#%HVf5^Qbuz#V*K_zzk7UiQ5h7m8g|2RZ)(ErtN&-HcW zKf9E{lXe8)dnH4=+lRqog0vBi_AuoGXyZ2>O3 z+)C3z5}F!Z*7#gO~E%#y>a+XZW^d!A`SlOUBH71T8?})+{j~kqtCo(ia z<8Ycu%7U@-=K?MEzOS7FSUQV*CG*v{z@$Q0w zq+r`IM}m#Rhjhg`Xc1hf6R-$M?(|f^9+OEb0tixgp&gVkH&y{!DK#<2n7nDk$dJ&Q zC=>Xt03WBTHF0Z$Y#zl)l;E~`6R2oQ_5e!^N}a@26sh?clu(33I>@?+^ktNec4ad? zF(otBZi-KhTa((FdawzL^ldrjr}c`s{c9^bLBj)83TV*REan;r%E^bPv+5Ray7RLl z=Cs3Cd*MotFyhQ0F{%~7xz82gaKC{M5M5YzJQX3Um*Ge%bI@{HZniKVxas~Z##9)g8-P}B&Hj%8hS~V{=^RI z`Q0fwuKgLC_EL)^Rk;DI!Rch zTB5P*E|6oS1s2?@6x3(G+D>OO9xHr;bt8Prs_i=c@(vWK^C$aG%Kily0e)gH@0;0< zrDUS)hO5untE8RAPHtzCn+agc`gK$;6HS(MFTXmJXQ*eF=tIo}mN5TygIbOwc|y&* zx?HHhscNn8OgXHBL2uwfxrD>Nthinoci>4pfLvLOt&^e)G&m5o1uV;6LJ|T65 zO`Tyxdd-E{OU#8T=FFZC+h4BM%%rEJr?Z^P9m`2-(S(kLmts$>sxnvk3jlI-+AN&< zCJ?&Z($B0T#CAsozwQ~e!&jszcWB$a*H=VOWjuw9ScA+J!Gn|%44PJ-DHmpHFL z-pQG^eBiVdS+V!kIw$zu4tpGE<(+>g3iM-#68aX7e55SRvyOnKjth!i`Yl!l`YatV z&TnI+*YbRF%n(3Mg9)f>D*2|}44faWaHS;~{7eP(EP~b|)H1#tGbd0y7}jev6?lZp zphj}19XP;Q$(HFGk50!(2sFliwnOLnlY`=9rMF6cTUXpLfZ`WQ3{9c1y?!Jl*nXe7 zG>7dyMy=<)hYAM{3GlvpL*6JjiY9j42LTX8wCKST*t(ZqSeR74qBhBxgg~Z8PJ*{5 z^r$aM;62{kov)2^lj_g@xgA{RjS7>>alRs}2Uv|n^NIk0r6T|`BhE(T5VuU4(+-ND zW@$IrD*I5AkwJI9l?{@AM)nO^-Q|?T2oP6hUm@Zv_h2U>o4}~9E5N<)G)qAXF%T5$yj4^}VJ%FPu2jS)JubH6shef6 zN$m|n)=4JRuZV4tO*l0|0x33FD{Qe1zt8wbYk6QJ=4h=18IL^0TUv?DYs-BhcGtKno~I7wElmFK>75A_9M!ACduDl&~xg=RRRy?Sa)@eV68;ib^_F!^yL za4Og(-?Gh!9;Mq7$SCBTPUv>%FK9$OTnqM0Crk{^cp964-a3lN; zX(;3%D%y(Jwt*3iW9jrdl;8QpPy)|53$1wGwD8Dxt9~arSSXhr(XjU>Q4ZLi7KdO~ z;R(C3%bn*O_AxaGgH@C4y=YftH_%6CC@2OMTmFh6Z>mIgXy6of5*YP`s9;Sywu2bd*rP)@)zi&SRW;IP z){Q-Qy^}D|(a}p6IDTyc$3r)5nJO4WltI(qN=Q;s#8rEXJiy7GGr4nJ)Yo4jN5|M9 zXaeFLpf6uuWGGAtMR*b0wz(P)>n!kMJMvi7()#JDSv3K z6*vc%tE48+r&4G!s#J`pD~-_JltFe58Kg9GUfEl{p2c{){f#I|9Fo4J(rRNel)$8p zE#J5Qc21bv$)$UT7nE}l3Xnl6#3InF*FxyF2!=?g^!K9+O1p^^^!6H+@V=MlRu>A< zEaL_G=rtFB5Clt_{%%^3GQK+cX;FHG8N)lIu+-BOV&HP6gH~{)O-GgvxFe9hDO){# zOBvgF2)KRIbH06SyIkIg$K2qVxn0EBw)a&{^^t(Me+2vXtt zEJ_uE`mTH|AoO{9F9^xfkRuyS*{cCdi|8Esn<#b!Ah>a)HD4zq8SQ4y&e#EdVw-y5 zyuKWkw;9|#%*7Z*DV9gcr^$suN#BHhcWmOWG7QqrF!@3A*q+G@v!602nB37gV=yq> zS)N#3Iy(-r4Gv;z+-$HIFxj>|bhRgss%$G4IZ;s;;NYt}bRvQR7Sv#6de}+{1XyEE zy+5yhVa}(_H1%ig`Qn0D$aKo(#>->BF6&3{q-HWb;g7SXJmNG$K9@qIL6cD%nRyrY z<^W&HLJ#AXsrzGN=)wjbk^H`5P}*4|4d8OB?g6LcIbX2nGmdj|4N|+U%68xjS~^Ef z;f-TGEL=z$37m>Le%nbmZn}c)os5jJKu3=aWElwxqaa1JJk2@hY;>%5xX1Cu%+>nW z{v8OI!#0mwc`YTd!WpQNci&%Lfn>*uLpC&c%ZT@mK*ZdAnZ%Q)phvji&W2IMAWdwJ z5b^1AA{)Jsjs6waMW##@u^(&JdQa5amfE({dGS_PQ-U9ayAj%a_VCiFhiCgnP^KMS zz^$;dHv#?yF9XghKc7-^!3-nWro3mh`50u0tD#{g;s_IOdnqOAAm`Q|oy+zsta#~{lj7b9aa`@n`D zbZ~cANfHR2&UDk?)0xyvuFkQyi8Z7!1IF za(?58Pf0*Dm5DaV@>ILsLdg#ZGikb)>4@wJ)(8(xgfsdKltJ}(XwO@DN~w+Df}$qx zkj^PyI=gvu(>!Yqa2hB=CCBoFABXV=34P{0r!`NHe-*E`L*sx&&)9|!YDW;zm{qY z+tSHUwY>O2boWl1&Xm9kDYm^9&iAKs4Yu~`sI#yb`1~4!IXm&;Ln^-(=5W3m+F3xI z1m^g{tjmK-7vjkmuh{{g&;hGN61`9QN1GpuL*aV#)>iTm-yCk7igDAH+_~42sFoW) z()$9p_S(@ZHo$H(B^43El@UrvV0MJjrrg@uSy4dHxm$Ymm-EpxDFGC@Z%K z+`2t}m>6lQ_q?QfG?)W76C*YmHuv9_2=s&i`xS96ig`hnI+u`)4j;LzO;Em;{Tm=( zmYDd7(z%oe0T%w>xy7t*R*E<*7~Fe$EFss4MNJ6wt;p^lzgp_caQolRl*uPDH|iog z&<{baJYAA9xhk_EgU|CYODfIEP&G^a_&5uUdG2T1*Bv1nPNHm*SInH9XfcWR<9Q*G zp;iHd1S@;KvcBveaT@q`&XGJ$tw+)Op8t^><8_NxbLkPogLKR9kp6%)XIX7pW0Dnq1QH0;yP zpQCAm{u>U*d{BKP&Nw!Nz$G+|)VXa=IZtX>pt*$P`Ra0wn!vzu6kF64 z*xZ^UyM#)y5+dLOUcr+zX++ZtsQsb%y@q3>vzq+x>V$h~52(onj4;`k6MJ{M@PGC> z)Lk!-Bn3tb0z;nfpu&2-m9}dJMsJ8={mGHJD&Jk!@oF7E>|LGIn&cmqKKkpmO!M?w zl1ZR*S(anbS*cZF#_1zN@eJ`ssy)Wa+{-hdfm-PF;0PX{*u@zBEjD-mmwDO2ZCH`- zYE^vtO%}39$ZvepMCTbsbG>GCap^GUHLxng!NYWvK0CXmuuGUi1b6fu^*;|a&ZkqV zhOpr6Ikok+R%Xl!WV+%wtcwuNxsl)(pdeLRhc|e<9Khp(J`#BZ+bV1nGPxIBG-sN> zE+P}Zl36ki-||R9p_MYvpb<>loPgmvr?HuQ0XNuGO0FLWDgBaiKS~(Rb z87U!0V)Ajf^^~><9aFe*cDh*~oHWO?OS(#>{=Qm2ypw!paBuMQIe!)7so31|;g>zE z0<9Rx1F~{vEbQm)YU6M!E%T_#0y=g?n{}?MUD+jBIh_tCyj?Ayo?GEu zMGl&lj(Mxj`B9T-<}K~*m8khZX^k)X(a&ZcUCzvpN%TV?Ai4x^!Zvi7=tIW^gjwGk zpF|N^j~6q(7L#&XOdy322Zb&vPqz!u^O+I-1srrQnC-(xOa$z)VC%pCINQ-r6Bc$3 z4ePN(6mQd@xX#kgkw>)_uBMn!_C0__>6z1JzpS2?NkqYvt3cJN^Q(iPm`#0zu+CbU z&=1&um77~1{0)0-)TDOm_&W1Ih(_x_0r&ITya<16-?9#l*Ka6x90?$Pak2*jLholP zyB7YwuY3vxXJi_5_VNYaZOGE$gPSzI%I8`j38mBCb8mGM?BjKb~c{JHf3ogXsf~%!w$@ zY~L*poOH1Fv79y=opG4e;w|$-2Z#+@v0y7E=kDcy@}DDyqBT5HeZ7yVo)%=Hrbt`I z|J6P1QHs-0NkNsmYF(`}f51FG_f%`YkCK^xcL+ev0{%WRv->;32L?)!lm6%XwRa@q zVW!~>4LbGbIXI`&ay$_Q4=cwxVLNqSm8G3z=#_*O2x`Bqa*WDVR)t)jTaE4g_Q=Ws zg@Mh+ihAWYI+A!W#YB|PpD|rgkdRS|B|Y)8y^JKipWSJ&=QSL4$@733H-g8Jj)6*fNu z2l?MVz_9f~fBux_>R74f zv(!RkdL&bzhLHY(xnA*;)Z{n-n{1RDsT(#+Wo85_BB%I-o1fuv6GIze*%3?VhGg4$ zSZS4#MEg{j0|61-IN%6Adm)L>N`(P9t_h)!U}1a2>`tW%xdGhFD-tsQaOkPApWc@{ z=WCatY(7Z`=0>-J>!qCxV{{eY{5o2A%DM|}X{T@H*6Bq-x?YD`YG{mnnrXWxuN503V=)tF?6vD!Va*79MQRLiNzkud5ejw3R( zJ%>?o!KwK9ylD*CQ>G@0z2t|ri6-q)Wr)Fszb2=LTz12}(D;JGm3^*9O^)?Ds6)ls z^3lGdzB^49f#^$wpXp1Fwt=>1wM5ATUE&h$`Y7B|K3 zBnJ!pysW{wJA0#Ei0q0y1Dxcep*Cq^xBh(_z=6YLQlW_1kKE%*;t{oIA37q67Gf`2 zo-@8axH@=j-xMuMQMFg34FP4`Df3|(U}j3=_SkHZCgPZM_W4AsS#5M|r%}{b4moUF zo6nM&RT3fse53oG)1=YEn=D<{tDKCKliwJW_SQ2NqAiJI!VhnN+?jQQc=j@gqLY{z zbU9WUhG#k1&YeQrH#iS+m~jpf)Cj03MeLWlBqrsb2De>_q0OH3vvYxJ^ymA0DhQsC z)dio!ooVxOaif@bf)CzQK1h1@NW)hQ>NPXc_I5hsR7SB@7ZkmJexRCIOb|=pH0*s9 zT_R3nIYKxZ#^a0w8vHow%SAK_a#zBtK(JFWddsj7OWDVO0zgYa3Gi84dutlc=K!m+ z6&whmE7h%O#C^bK)PtW``M8T*{LGH$e4G~HgB@!;J1dIHM(YpRUQ*TFpzr{Mz5bAE?|M<;kaHfU=@)J0TbLo4a1Z zIs8Bl@eQ#pxJ&quuOCN~_d6Js+7-V47^N*#gKgeciBZDBi$b3H`Eg2fUyA0AOP$v&)*eh&fD6lep(mCfc#OPw3r)kjEk=_V>L! z=M*Xc3hgK7UkBb`=C=Lp3O5Kj`bU8I+ctR9+$> zhU?nq6u}X&QD&UK<^Aiuqx#9d5S;H5Zz0MX~TD9no)meB@Tm&Nzi)#y0g4J zH7yS)CX-L2Kr2Xlnn9UTsIOnw8ifpjR(eHWv;(X1+SeFy+8=P0*wIk6c)AkC$OfOa zkA=pgg~Z{Ti5Pa=XX!Vv~~z$lk~y_e^mhgd~wEc?HVCFE#A%JLT&5}!JE zpI0g~pP+ryUV(mmq^FyyRz{L@euTPLFg|_kGh!HdNXb;W!o)7nxt;IJ9l-$7b5Tp7 zL7Q%>A~+yh-HM#YPRo97gx5$y7+Y?wzkc1>SO_4S&O|1M(C3-J2PtzSE6wVw+vTjf z44BK4nsD!r{G6^)5xWuY3WZ|0+>mb>34^lSZs*j7;k&WpkvZ_VoIP%4EMIYy%I;%O zB%Zexr4{3;DKssw!cCv6pM7iRoq<-U)98n=$QOr$ z5k(MTYC=;_ZgwS*K}<>sAM2A7Z_oJb2c^L8!p~cIP`$kn1vj@hlSX%1`&{9RLv@Kq zdppvkf5^=0o?w9X2WbSaK%sV2U`HA|sw#*QiBNAfp$b5pL{$c- zA0*Uc;j%;V$qvdxvwJ|&PxCc-0y@IDOvJ^G&1qzA3`J%|S0e5Ecvd2nF2x6}UGxI$ zKJpxGQKXP%Rr9ZnDI@qEB$`jbIjyS52=%M4mI4UsHMG^6LvsiS*u|Lg;R{s?pCJB| zmY<=PG-}HCMvbk#4bu^^^WHGSd>SjWHo(W^U4AYGn*$w1gNL)sr|V;@GaR-6o|wG_ z0(l@q*exir9V!*XI+jxfS?!Q;aSGJ(cxsfG<7c$*$2fs;licIY+mv1QYHkgJLZ7e< z+M%o=k$|WEYe_!iir^*#r6A9-`Yo%V2T|~%9LjBVd?A}dsl+)?8}QXSOsCdi5U>>e zIB*|VWLMl4@Rmv0@Y!%f@K>nid4F$|DSK+%$;h4jdi;jJ7ocl1tjRvpCo2&iJ>ePI z%LEDOaNyFg>h<;9>il{&R#HHTVK%y^-Y^JedcP(8>sw;K zZDxjFgb5YbH(_xa!%l_FAc_1yT#J+ik6s?ouhU~Afv(V*$aMN|)SHOQ5aq3{*8bCwW1-AAW8_k z_^kIQ2N$2YH9gvvU+>BJBrGcyeqE7S>fXIe5{Sn3+PY_E8NM&AORLOFe_3mBE1Z*! zL7i$imGXTb06xo3O&{OK{Yqo8oev!htLbw#P>#(t+_U(prrO!j5j#Rl_d>D-vviYepau4$m0#jS_(29PGoa`a%x^k!!rC75E;WE0;||Up3Qou%*PSZRK3M; zfz%2QI%<=85?+yr8Cz~RB*|mXNKf4+-Q3e}qfEVmPHk7t4t`2xR$_8eYoxEroRzC` z`W9{T`I^9^>Zm`ylHFj2BK=m8w+o?0?5M2swi~&4h@cS8Q&g}|JU!at^KcBe9R{?) z`{xJ_I6_c#vN%R-(;-iZ5vZNuBJaz4GLV=Ie8V;h7RPMER){4vAu7aH$}ENP&vvx6~~dsq}jAzf~XlP1MN<80co#4Giolv*$c>?NE5+HMuvy(T+ka`T_fw0iV3DaWEANkbm#R{1XbU_{AW=*ap^#cF0M zPdY|@zHZ{_RYWC>h8WIWS$$O;P2k!|)8@tZ`E!sHbg-J@gL$@Fdp}(ZA}MJOkqym9 zQ$v&;Sjx0Ky=$$(BQK$?ZEf{_{2rd9`jDJs6w66$o{bwA1SK#O_B0;uAuR;H5`g68 z^@-KP?;>2C5N2|X=Fa~FH%5?oT0{JA8hc}QXg7=b{62%$c z-HNl514%1+twC(<;QrDMM=>gXWl55(29E=99DFl7z2^E@faA%?!M|j08`EkSL|%P> zYmY*nr9HKz)7JFgjB?jK7DY$}bVj}=@qll_EyWnW#LfD~kWhzCEh)SHTGg`@S93ul zKb?_O|B%H=J$7ZmK*YM8)I&&kgiZ604S~_A^rEsQ%0Ye zpM62pHT~GCrdG5+(mw53!d73iYe^v5Yq$+GWM0A6%Yyvyv7%Ewp09!A0DoxIq{A)2 zgbOuI*YT+2bpjp){Rd+}(J z1+hW>NZ4raXH3+6DHRy)*i+6${=^VRc$ba+P&W3a9>>7()^6sCNZK_JXUr6Jt4Xjc zgJ|cn@%h_IN#8r;$lu}baLnWLa-C)Bbp!_T=*VKpY=CVRs&GeOgU*5VFq{8h&({t+QEbK0~C4TIAu^v(!_qfk@e&Tuzxd) z@MmjpA0An6r&1d5eacH(cSX)Aj&n|;@OoXWpBy7q?|^Lq)U7TIK&XbSjv-=PvbX|` zh68e^AwmP-b}@UI4$rKjC#L6NOTb*&EJWGaKe4SYQlE}+b6+ClA`l9detvDE{pj_K z6TK{PoAd+S3IixblII@0-;cnRO0qNPL(%b|O`?W4z5ATlquSi4<9(iuDccHW(oRBI zx_Bg&oUA1U)H8nTTaU^_b_z^w%+P9xfW`8q}=p{qI-bh{N>m#>Z|eR?4SkkL%O8H=7{*#|;DHdu5w zK4M0P!N8mr0#!uY+hvPqIvA1ogeJ zv!Y)^bJ|IE1^=#jj)9LIhpr!^Xqq8xp($#+!0VS;sr7vkDMS+4kHAxBWsuLGFyUzW zA2pX*zYJ71kOl%J$9OLyNBjf~zkv(D8-Vl^z_URQX&jHt)Q%Qx8NmShV_lJJio!;J^WX2=LRVmyoQAU62b9 z@nP+1Bvndthf}}T*B08s$uCy4}|R7}{(f~fOVLbiB% z{W-k^aIOT+4&OuB4j7Wst1kZf7rfWVmK6~Y-m6GFT09Z@67<8&Q_mO3d@a?|N+MRF05<#_5G!EPBTRO@n4!1O%^69)&+~myv#38aX}J<8+44 zfllUKBDvijoZH12ZANyJAmXuK4g0EylXRQj{gLyhJu)$gkjw3A)ko%}5FqM-7q!}5 zEOJ5Yi%AyU43CyS(!qvw@LPX`9Tble@5uCqb)s904jIv2k84S01BGfJJ!{UdOi?@M z9KLNmtgJz#Qk*?;2ftFCpj`V>b|Re`n9?DZ$}?jfvkX;a z`5HoQe^(^Aoq1RGh6S?tf@ZSC=B}lLX2d>CM$2Qg{352Mc|sj!krAk95MO!ghvN&N zF*?k{n=uiJYf|Pp$NDFFi+b~DZzBT3?g^!-E%)W-)?8hf}&0siVLeg6w+=p<< z3DUV51yuqkR~Q%*_0!{C;%7fuJc~WLE_IJU9&SuTTt{#avD!X^WzHw7LnGsU*02S5k zh>OA?kfG`vKYKGW!(}^*x1N26Q$rH2Eh_Tz%jTT($t_#Rl*S>ISsasdaj_z+M5XV$ z3v)1uAa1bB^!L?D{Hlqu-^Td{az#aN>IiXK86BI8oiuI5S>HEpM7{~c<~gTVMt8MZ zxqpwPsfbCXNF`CItQ4 zcPtUbgyLnd<~rU30cIiZq|k=?>kG)Iw*cOB1ufHkag6z?ADu>JIU$_+|jMJ@dfCT=_ntNWF8~6%fC%t=PuxU;& zF=^~fG~5u+*9ojyB<|m&o^xOf42#N-K~7t}$6IYHySA5@r;8&o2U_idz>A#d`8LxX z$FmSa@aZ65kDJqACkbLeKnMU5bXpZz3x%QLL=y2Pf1Tx#Bu{Dp%8Hc7WTzmC!=>_{}=-sseA#o}P#l4Sn7%xo(P=x^Z zw`n(FrkOyHxXU)9+$_2&YX`qXdxdJfO3 z0U|Wl;Q|xjOIfxTR-73fOA0ho&yCSVdH=R>_-#hR3cW;}7U z!Vm|JA00VYb$SR{0I;Xg_vPg-u#Es)oMg<<_F8%i8qZ5*)4zye;+?im zGA7x2d^a^bEmQXF%R#WokAmjPv-434mML2n$+Ob{#=kj?!}U5z*dm+r!^#Th;AEUd z8^U>z?quk08&srKrBt6cgtL8`g4`2t3YX?}HL{<-|29rA0EL;w#^l{!^hfpwV}rwY z;a7ty$2m!vG4HF{dh-2hkt4Vrm>^%f}ljW{hDBir=|o$_Amw0aQwqt z$?vjP6J~!;n@_-rSGS2&Kfw^!m-nup%k;LnB14?QV*?+agDVr1Kd z=5pl+tUCAr%Bk(~{Zh8Wt%Tm00i@{+nRcwBCLE-ZAvE_+8xgz^=@6yH8Q!l+JzcF` zb8q~O@Fo4h>1xn*WaaZ_ls-2lzQpi+DJg~WVMw4UJJn>NNOmOGU>Hpi4#T8+URqKt zHN$G0>h0;~?sj_pj=Il4w+ES0MW;a@BmtI$(_BRo_g)k^MBEJ2MENnbVmyQM>}$U! zL$kC`oLw?)XQ}4>cBTq4*!fSRV+E3ceZA(l7Vo?ZFoUJ#YQL*BCy0Zf1Xw*NvxYZN z>?C}J6R1{u4vEp=o;VGdcW_Ktb(7q}7cggCWS3HgQ*P}0AXGJyay%DDZK+XFY5hSU zEnGP|2pT^AMhb9`D{ZIkhk3305M1@xAT0bxb>`u$O)N50gQJy3CL%eEMJ$&Cc-80M~Z#hsD@5Q9)k~l z&*&KGD7b#5j}NYKyzXQgr)UXI7$C)|Hg1OCilXBaCD(={X22*BkIqE(u37$6L8m)u zZ==0o_N!>z7l*vgYix!k7x}l>T(*X@U^6m-bN;xKsI`u@c}M+ZFF%U;HvCqK<00y= z0^NN#g{Q1cG#YH>{ZgLxZW3+*fHEfrh3YRQnMwF%CoQVYMk!fs2rF6~;dpx~>#3mB z%?bEyh9|C5DKuJM1oef!$I_(DY1ag^)JA_lIDK$m$D8!8yUg|&!~8wrc`412qob?M zfrRK32S)H74|_eib{1213e~0&@ED%1MV(4bK=o*MH2QFdW(hJgD!peY6dyr9d<68E z0i$tZ%hl0$Y}-Ks*nm!X3qc@Fb>uY2%HCC1?x$UcH4!;ni^|4vf(W_ARz$PcMjw+Q zRYlXo7C~Ug`&OR$KqMkSiLDwl1pjeFvrd?4R&RO-NrR85hcGU#_3^5_BE}ieh^yJ_v=0^hXm4Yr-EQpgD-jgU+G6fkr(BvbV)$mYeup{JSzVb_!ubKGW*#4-jNvH1ZX=4$6EmIGjB)*=D4A3i!!N4BBa|1sunRd${( zlp^G8&nzCR7fyZAsq|iy@&esuAE%;C#Uom+wDo*pRIv87;WmNt^weH)syOmWI>D}0 zaf&#JT%gn>cLWDoHzkgi8)(ZUR(p6Trukft22kp{fC*7=y|m>N-blv6g#HNS?fAZu;RcCa2Lj~u{M;dqEp%u8(+We9O+mTr#O^Z zyolNy<1(&gj(8aMy)6p55sTb_3iEhNxZ1H6;uwmSoRgWYU9MxcIs~I4ad&xo{3v=K z&aJl9lT1`!ck+xmwu)xxZRm0c`*Ry8+wfYUxQ$MBlB*U((7qG_8L%r(Y&d77HRrn%X^)9Kj|0)uf1rv_+$gLL?kXOU>sjS#o&3@%Ci0)`1G) zjMbLz&tcgQnDl9#xUn(e;lgS{*3f(?>!U3Y_3M4asc8E$MN}u#&@tF#h8OZ-)h}?! zH`^dvPKC=d9#9(*)(*JzaS@%SYSQM88IGlmm`L`{R(w3)!__&Q|;!i_%ds;N%hX{qyy~*Xurb3Hn=fXa` zL79VM#h9Sw{>oRGCxipT-o}dF(M#6pIdkg$6N!)siS_XFsmNBjlQ%fdCr8IcE7N_V zsnx|V$h*~rlp4~wtkBEW*=BYS%qt=Z>qYv-^Bv?~e?!rT%3{U=$dv2H?LZJRe) zuM#tfxt(5nTR48(FvDosF@W{NO6HCk+BMaW*q}Fows3jM=^F%n@E5op9E*;7@?AiiygJ+ogkvlDaSwoSWXs#&6Q40_Mc^-fudq^0#KtK)p%0L9qX0@k%%xQ}3}6F-4s2DyLG% z@y_m2>w6E#2Xrm2e%ek$kri8%N2DphSR@nKg^oe@zLs_n)x$#r$DZwttUG0t zq7~RRDiOUj~g&hxq&U{pS~Z&Gl(kqnuYB~d-)q%e#SuF8tMQ8JyL(&c86Rl_@I$Wjgx|y94Lc$y?@%sDMof~*~V+0%Mf<1RnIUzz% za|Zjw{hI?v284}Hiv3&jRR_gCN22Y_Sw+@Xzx1c z91Fz+i1Q!JoasVJdv!$W0wmj($b?yI<6H+(A28snTN2MPP4p9}YzmCf5^WKny(s9-OgAaCzOswfDsDn>ixpN$;}oXCEK@`{PomUrZPr!WbcBO z6#sLppyry~t8m|bWuRrS+->!Gidu+pJ1EG&EL246Qk|#1b<3m3-Pgd7ZK2^L3!AEz z6x;B=ld>gz4|vDY2LqnYtM@1IF0;f8gf!DJWT5^lhxI@){e&Z-0gopQxUA09{SZui z^9EFegVXjGdndiyKwbh|RG{-MzT$W6R-Rr;rojs9Lc5>Jyg3Cpl@m4Yu!n0^PRjC1 z_&|T@+w)1gPnH5lLd;|9-{-f{PUfEyxZ)*jOiJQJP!z%oK+JzNST|sw()$o zKAvo_KO_@C2?uMU@KCpRkXB6MO{4%Rjv<}{2N^9Lq)X2zM=m$cL(_r2Far-6iY5w!ml&cJg0tQo*-O{eaAOb(ktmSP3Dc!M}QOvLSE9JN$FQS z$9epQy$;AM;PB*LIJVG!MadDp>BkP<%3)RXMdAssbb?bs$u|(NKnUu|>DRf=q!TmP zCK=5+HB8(maWO6K_{ZB07mt+*X3PYhzoS!IZ(s%Y6O_PP$jxvMJ!%^P2$Lu1>=*M7 zN4PpfL8UpdRTx9jYfPDgodx#x&4X0HOQqxXK6#v#3MBhvcAP2uxSzfw*^?-rHOt(S zQ)MX;bQI?+x0ri*Mi&8U25Jb{qxx82NWq)Z)pBxS1S+UVQpgmCzC7<`KZoBIMhf@= zZ0+kil$p2Oeiepg5bI9T9q4q>LXpq=ju$$Ab@sUd1F+vklF(*%k&9MDvdw9$>FI4p zBFrHrg~wcg_Qvs`!gPJJ4uuOK0Y=23I<(;nNF~{beN@4e)L9(QI8@9@f zikBCLM$IqF#SGsq7ZIQC1gBnr{>`1Of=?b*O}xpZ`Pu>;xqjhJUoS~N*b>;r0ISg? z-&w7gdWG6l#NiEoYzw3ITCCZ@w6 z{kgSm#I)N>UI={@Zt7~TK}A#GOcsdo&NhLHcpQvTnxlG(_Fwlb64=yQTdK+iU(UD+ z)qLfP`}AdfFqZNkkPhUNspW!_Z|rjpp`Wyw;9N~7nj+#H>ST~l{gi#!+WOPKSIqpY z31OX37>?#cbpl2r4C#Urk)y6%b0AN%StE7A#jOf+eJpDCY2-WJ;b+l0dbHCH;M zmBP08U@3|L4Q&~1%zdTD5$JS~NG z*Y71IdEZH7QTtnOvrJQ7C0d|7L)u7dIOITEIG2~lls)(3V?$a9S(C**?~(o#5-0B}!@%I4;VdT8?zeYxA1KZda*px*Wm6aX z&M&29PFfPS09WG8ON9;d3?-Y(c+g4F>mbuQ_WAs2U03_&%VCiWI`j&Fx84O*dCG9N zKYa@*t5%#OqBYCR>xG=>V}O z5f#*T_~5;BP7jf$7I{b04?jVkeKn-z$$S60^UWluG!Rpl2t?itcUYWcV^U1JEO06u zw$k_GKoH-PxZ`LH8MhQabJ$Jm8$m$YBVBU7yc?8u1a;ByC5(`tOXbMN1;rjbT&$>3 zmmjkk*0hTEvj+w`H{x_28t&3)?9WfU94`jkiSkg8SC`D=Ktgh)+c>=%>s%T+15a~2 zg1c??>Zf%XWJ!T|Y#&qIi4Q!LNPih&Rq|iPK{(s)i%8nazlUh;dPlzR-Q*Y{Xu`F$ zt@ym**kL$h*S$9&^s-_Wm6RPMU$=4g({1d8SPyyYI6E~L?bDTESwuYH1tkffEOm_@ zUv1CZIL2{VMoZpoT_%gLg|fqPCf1ZG%#V{(?55j29O|yH^WB$an9OHBHzX@O|3UAb z*9k1sRDN8u?+l%OwO@M{duLZ%9EA~)pH{AkY8jXmBFw(?8G`O&l5e249gqTQwil0o}4h)+y$BotLjd8V>K$ArL{~ z`v95mwqPK?TXa;E;rZ&>SjmnJ^--NuTmO{wwXYyi5*QJd_vEhOgpx!#JW5?$y;+o` zg(F-6soGu(Wj^E9tP-_N)&5t-#_BjsEPu8^Kpu0IG6DxGWqw83e~WcF6fZ|39OR*4 z$Kt@N@2R?)OH9GY>`9HS4yP$Vqyxyi_Ix$%ZxO%VOC*HMW`&iZkzTfVEj3K_e0obx zY?UpCMpZ-9*r`5QpY|R7wC_zCI@SexBkdp8G15~ntSaDuqqk-`oN_{mpg~i3(o-0? z9;+c-^PNtNddE)TuoZ$KH~1+3Tku-iPaE25)d74oY2sB`e$R~(f)0K#ERLNnLtn6r z3w*G%G(%Lh*ii8OyJn;uZ;Q;Bg;kvj%?I=Jl3&?C+WA|tT`1# zT@z2iy&qQoU|cCAi}$+@&|Z}B2YUi&*MtTe`fGH4N>WHpQ7+;rZhk5#T6!f~$?E3* z(l4Xl?B4}fOg)MMPwjwK{N#)79A-5ims1FMW|MSumb_Ir-Eyjqs~0;6z_GBm_4$D_dW@$YlvHmQzOH3g(tw_~lY+jAuxO(azYDu5V^wY8 z(Sx$9rNh8Kt}&Q*ZGz!$I4(~#`f60-*o zYB?-#_p+YvCH-mYAqhTQy2e2g)H=I%>TYgCOf-@ZzoopNT&suQ7C^VL?ruNomqTw_slCzM=LVrTi1`_|ye!XoA(!O(Qr0q6;-N}Bq zlMvkom=dxI+eU+hj#!y~c&S_PK7u;F< zC|HLBJ_}@GbZS;ohMkBpNJJu$9Vkxt{cZQ7z>yED>(!&s@}-2Fc?3zFEVbReL4047 z<`(;dIdOCC-dJOglYvav55;vM7QqduO`la@^n#hud-VX_gMyY^ z8Rgy*Y%_Iy4;lurgjW_0heI*M_F(4CqP^Y3o#Q3C4Q3bp>4!jxezwFhb&fQ6n4dTR zkbnaSu!vu13A-(cF8+{(dMxSht>JY%SkXd;Q*WhEK!mqySdphHYADPWV@D@Ob#|0( z_G(tbh&>Y4@f%o4pbBz1#84)2G6#;tf8r?4Al*Bhb^9LLGev>RopCMHAWY>EcMrGN zBHdK#1bnCkGh$_q1k(*puf6_06d#rD9bUZ<`^+EQ&V}0BUX&yeTl6CkfiaB?5y|Gt z8+3bS|1-@)-N&L?>b{w?UgvMf%=Ly|VED*Dqzkb7epQYK$A;0mE5V0QZx<6>+PtB$ z!ycv5VIyKk2^ginpIthN*tjiJHzL2ZZJhz0LX?xnboplWMX=FOF10d$-OS@m0wFCW zE1_lWrrsg$m&KHkbPscfqtbaOUEt~QwtVE{Ob!C%MA{ozqP&BsX!O&YqTcJO+ynfa)^f)k1*hE2%U3I7nXAXgDrBOa8!h%J9}k1alK zCKDoxl&^Nws4|DMg}wEDRxOfhkU#|SXODe2E(4^2IbGU#pl;OaE zfR5_@HugV68W491AVy~SJxyhm{PaTmt?dPk2m7QV!NyYt!t!^N0!}1&wq~#?-WWv?FYR$mO_CmdAA%=wRLJ7VWO+Ep^n(51i-W7+lZvc>ZmVLk zrH;p38ouR8qDr$1Ll9_lq!r$A;_qIoLfqC;Nop6vgh998s+aJnEt5jyYCH(9^`&()n&SuHK!ajd+ zd}Tq7Ox_p6lNrNhj#cq=6R&Xh?bTLDp?&E@kXigvfgG1)JF`G(qn|NKnLEk=`95DgUAwgD zT9dvgBnix#^{tglOymCdD~X}&Mvkl9X}gIvj#$G=gYSOQp;3tj z^Nfn5plL*;k$LPhhk|rLZC8TF_i-}n*jEV)Y2z8if{f_!QsQkbq8<&QTAXB!uekJ! zFyZI8K18i+>U*X56!7$L4mo4{Kotkxa%D3&kn5bXQHd8P==OiIYT`jEO7MNT{_0s( zi2)glxP7lBZAKmR!psTLYR49Q+tYkCG23eB0q1KI7>7HFM5wbq1zwo!A3-D0auT!_ zXbky)AM?AF<%7L`#MkG2T1yI6Dus5~S~b0yhml=abztY)>kdp3U@TCq9%g=B?DWeB zb;LnWzEImEK1$~Vl!H2Tv+LoKkh7EUvn+JuUQ6m>EurlRtAY4dAU@7s&dN}`s4a7A zyfQxiOjL<&JneO{aJU!`oR|jcY}+G!D;;*6u%#vFMeqp=!BGK?qJ|VtHy4goF7{1x zXn#$bXi3skXIs(fm3JpWwsK5IWSF1Qb$A>3y(Fi@FDq&%VAp2T?9Ndkd%F{LUl10L zT_x-5N5U5uf@*Ku^K>zkBgk3+h!h7C+d`OvT838gY>YNeUV8Ue)$|a-a?Tqu$B4}bH8q5Ib4i>7N|kcIabE`Gi&;yD>JHGy>Ur{ z6lW~O3gfbeS*E5xAiGLbifSX+bo*CuSVe}oA$p{gZ8cFXWnL1%-R}>rogNxkB8K*q z%FBe%wYvg12^{H)qo1ZWgnFfZ<)_q&^ZwyJ!oL?qsY}A?ORl{bK|z8Y2lLHN530lJ zW4`M8c=yp#920uTS0tQN$qBxOKxaidM1#v#G#8oRVN^s5KBs5bf(rTc_9LInoM7xs|iVKNaxF<3=!=jh!& zZVhIP?oiv)mBd13-y&e}@k=c|&o)L}O$it;?))9bNZ3ou7?9|cw%tI%L04(KmHh0x zjz9E4!870`A<&7WP$$WO7M#LuhU`YsN~_6UOSZl^AN$+*LytGo9D}<@n%?$M&8I)wAk{FiaQmsUF~Thr@*h}HqYgzbor)*Ua& z+49}ks%ZP65!x?_ctV6^+YTPb7SKS4L;!BDd!F(2)XtC{v6Wb?h>I?}WQ;0zGBd~I z#U05WgRvO3?0B@d#vi6Cy!{!;En>bjw`iE96Kx6mTXub%m8>w(LP1g--`<3NCYM4u zhkOcr)tkm3z8P|o#olfzD?T=;O-w=3Yo)~C_%qwrDw%{#$Zm9y>TXMRD8c+NL>}I* zhZ})H+V&|~q958nj{IEhTU$nxNuneq`g9$fV9R!QlLB`RxfKxOHsfO zCC58~&5o)Ck$ZlW<>L=iT6@6>4`;g7JefwRz&PmxWkKIHEy={Ti1*8^|G*Mw`pZAD zekb}M5GZ1j(cxWV6Phvrmyn&d-G}Wkj1=sOBL1ZUKam?%v<+fxkpDTmswz>O1GOFD z?dRmO#~b#BbX!l+^|t=#l#>yZ_;FtWLTvqnWk$`Lw{V^a62ecISglid)=&vuwWgbo zuN#);;d28i1B`m|nomE;FeL?Zl>o$KZ)bEMG!5q{wxbkYQrq~4%`H^bH00(iJTCpT zMxALZ6obC$?fR*uv$LStPW4QwqR{x6-vfc{4N*WPjh5+m(#pezfma&d4XU6)Xshys zT|L&{ZI3u?&-iKet86*YMI#whWbdt^?n>Gt z+=kY@m&SSD{t}>CI4gT-E~9fodimet>n-8AozKEisq=tKk~bz9w767Bn1Ww?{} zrs9WFBKSQcTFy(GHIwz@_fp|kKjqV*&3R97ZqCu9N+D8P0xPC-aq4V@2xCGCX1T3V+7(HyyN& zyNLS`G+W896Wj?Qgb*KWI;oXOL4hs9-REf=$9Iy>cWf%FZ*L6oumcUWVydT?s4Vtbd!Tk3S@B!?}wbSOlkYQ5s-~h&ev- zl@I3~HZsd?B}1}M9>ZCCL(kSs{IS%C>>*>vBH}GA^3v0w_cr3t50=1c=J~W!jXyA1 zL3mX9#}LhjOITQb2@0c*b1wjTx!HAEw5qb#N9rlu;4?bNc4B!*s=}Zg@eHp7Q6_C0 z7fm;Ia(c=9$E&3r*Ts%i2|j8&u5{)WRNyYGs&J2(v(tQaSqo7c2^BC1;TRql`vZy$ zDykjfQTx?fToj9;;y6M5_>h|hG#OR^QtN`h`o+%SHG|@ijz3a2Cxd0uI486&_`HqBK1tN}l_40C`r{fW)B`BUddL6Zz!41xSd(ELzMk0`AjkV1MZIKb zy2Z-Klo5u4f-GBAkEa-_uGrK0{>)e(6YJx*Ca| zv0Xj-&M$WE$rP|hfGHXWTi=>lf*EHrhKs)auotic4F;vTm&eL~UW_>^1>^^XqS1-f zFsb;v7JL-l&sVs*Ft!p0FrVjMQ(Z(@(eIxcYg_*nyHevA@%_sgjvLt7v5J*9Z){wnZt zl}t!DQ4o2*{3wNJ)KCXL6Kbt~ou}fMeBi+5l{ib~9e`CKZC4hT>_06xb*^n0B?sU^ z0HESLUMmrKNwr~L++K4DX`P(nCp4$LElvd4X2?=uJlOEu#&}w=s<4_-#G&p}^mvUD zaTNlX@$J*TF5qqU#Htg*{VrO`-{yBHd;EQGibE@kp)GpAlf3;<*{5LkveKkIf6z}XL3xpBVaF@ zA4L&G{U~h94IdaH$j}|@_aq! zJiQ+DHwf+q7uvnv=R{%WcG`yNrcpy*K@4Pw_R7Tg`p9ZIydLxbAiQ%fEPdPRSnT-{ zh~rsdHJos4GsRxTVliWV{jzr0J2i>LwGipB=3O^3sOKxN39l~_c4#teWdL#VQwa&a&uG8O&Y5`D|_l<= zRS}AGhAKKAM<*x?oF|C{ZqucxChfcCFEbt#f1cT?mLm^sUhu*Z_ez1TGqNxZ_8ITN zbIQj3PiBw(d-YjeoiPnoyhjdW$OqFlQE;RMxlK4LmS?Yt8z*gGbzmf3W$HW~s_ z0~Xz7%54+O?Q6Dsj3v12uU&*$#RU)}8|HhMkxs)5=3Ikp%@pi~+}X%ud925G>M+ePYhh<`%E!i6|6hTZL?9Zh~8gT-g%c;=#1`Q9(q zeXZMfOb?V|4qRZ}LQIlJl>;rOL3nI3HJ$1Lg41b*Fn!5++aQtAu@Xj|u)Q17kv`Ds z#|;@?FaL46hN}{Ey|Q8bnPs}PojGZtE}y%)qPxpKB46lzkeTK5hF}yVs)^?8hJ4#c zX4hx?M`Tp?R%gc*1}9Jtda3WlI37nC6shD7+c#VNkVYR+F#~p}9#s)O+i%%{ODdX>veN7QKz0SS0fLU%-iO_K zSdOoK*%oxH#VKsQSQj}>iACL;O<3os{D!!V@x5k^c3S)+7#sADNN4wnodPvtpC#d9 zM?X+%0+&Hrk@~L{@;F?>Sc4#v5c)W8pA}P2drQDdZX{|2!Xyba$+eHG*~e)$|97*J zAn?kBLeT0nYuWVhix=TKoJ9{ncCx4rf{$J(@tXe7T0;Iv|Glb=a=x7g79!lxaos~O zrlG3(YkO?k)oRNl%1Lr!0<>sOxeW!g5)sgVs;aM%9jzwIJZ}Dy-x7p27#o(aO^QKW zBkA)YySqh%cPu;9|It&(yHc)+O~`tapJPMD)JNGr3IkBgbZ8fP3Po#`))K*S*+zK! zTh+>UzLvOVrEV5)XY~}5IVMT=^3h!No7n(7vEg7G3~}#y>U55&l+f_L+#hg9kyZr( zj+t|SOW-rFqf)u~nD-C>&4u!~V5z-LJtuW=LO`KiALqT-Ti6~cP(c`nybt<_nF`We z&e~5ami@LrB$1Q3VBZjha@{X`V=Rk3OD)5?(HfZ5dktTCDc%i7EM;!p8ws%dA}qge zNH}sn$&6-dy))h5^IK6&%N;iDhNkJJqy2y+^{8DFX<|nb3gVZ_zYL+IZ`_^eZ;`{i z`(8+ONl>B*YO^n)j;Cb33xx8`K{t3K?W^V_?-?{KlD6tzStRg7H=c(|!8ZG>u$T0d z<6Et9D)1zmMgj?4)bAN#7*#Sjs}VzUXEin|@-)Diq$gn#hU#f9B)J(o2o1)zi3L>= z#_;+SA>^liTRH6sp~tT)lgd}EGk$I`oX}Ah&fJEs0C(ZcqQF)!5*R??q5>G&>;1sZ zmwoa^*{LbPmINe#Fu-pZ>DhdRXd(Re;?`wKulZ}O&p@G>&uK{jMVUZ#$uWIa6G(8R z29u@6H8GfgClEgv=k1{iV{tiyA4-=MkxhDQEBMkl`-AoYb45O&NQA1|U$p zoZgaaUWUgK^Jf&&;Yk``aUT{rc$bWUNe-(1b3Oau=*$GV8PKp|U{1j41-yxy{|a z0qnrGP}&FWgG_wJP2502hsJXldoJ(zs}f63L#}LTBuD=VLMK4JaF-O4G#K7UZl33x zNDJ;T|5E)wBKgOiHOzBNhC&hOl*9V+i(PU)WzLU>V>M!HKT%|$eN-lDSK_9tb*JqK z6Pt3uaj=eVxE#2XJUxgyub&nVU00No$oQ#+NAj%Yrh+R7ztR?7RiCy5tw{W#8N4ob zYVq2-gkmTX{?Rv4p7^~C&49*r^M{63nM%E(>PX>zvD45}brZWN{JP<73e@CCdyuYD zs_r#XMu!I5Kh*wuXs5{ylz*5OR)153`#Nt$56PX%29AD8#EytNm%(Lz#j9IcR?Z(b zwlA>D6_miXoM08tcnlfkx!;ovQ-)me`=Q_l6BDDz~nm~ z&1~o(oclwaPushIHQ$N-jI?C;hW8kqJ7wz>UWrI{#n`CNeS{Rp*XV+%je z*B;2W{Ta`&9juFg=%zuOwksyI; zeH$oHj{|$O8aWhqZx6Enk>xrXFCeqLaloer47hS}H0*o$}wo|q` zn+k~!P>CPH4y-8ctItL!Zn9enX(}$}Y1g@wuNxHYs*Csp>@Btmk3u=;+Fm}Jv%)$_ z$Im)sTdG?OW>excf?5y-Hyab7N;2J%i2n51gtKMOwoEc81go?^$&)@&u>x!Yu3GCZ z6PW5CBu4e0%ez$mL-C3)Ne02dzUeQft!4NVnMe2T8ID8&5e=F&R?p!LM?dquV7O8q zQW~#O$(6?@MgpG8-Q4cTkl3W?mCRD#t|dP4`t{)z{2FMml%}>_OW5Uz((9Pihj;Ed za%4%qbAPPOEGhj^m=EO5h|+Cit=$zzEXy2imBu%A^m-8Oh(Rt*zxL{vMCEsV%N(K2 z$ixV}nU1_zVu9@2jEpBftes(C#}aTsld%-s9tHtjj0=i}@izHZCi?C}MiIA`-g+~WjGLiMHwuq#j|cdYK&&8$_a zt)uJMJnA#Bg4Xs=Dqpc|w(iXdlEeP>=-u+n!I*!Hd2gR^y8cF4tPj}q&vnacq2o4S zH-*((hS9nEGkEA|2n7z^3)p~{G+G&xlnX=-;;Zr+=kzY+XyvIHw139*q7r{wMZHh| z-YEPyEZUiX4DVM7JI`nQfeN1WUvYvyVi5aZNNYz2vjiF)^C}$aQC@fQd>Y`mGN)Dp2__Van$-~8G^cI)w72u4H?1+fy37HbipV2Ex%u`;)5W_oZ78=S|f)M z)_dsat|qwDESbrvvMfS>Zv*Gl7WtaRh7w)UyRRgxHTBRqZ~IayW@i#H#17->wJ@Je zV6sj$q2w6Gxjvu1Kk4nL_q`em9C46-q4IiiSJD+O`ZWTI(%TjY@Vm0oyPgHTN|z*R ztb8@Rpx6PZlR{$UySp9%b2Voi2F`6d zY4S=tZ`xJlWAiN94*?k`CigpraLr0}H}>r({=-B3Yc;?tM3b+9E_a-1>337H^m9_4Mm-CdwAW zW-@P*%{*nJot*5wU5=i9aL7|-;}{gmg*RjqMLyW88}!XNQ6nd8WKkq%@c=*@Px2~sXZwjykkmuY1~0=NZ2Q1=NdqXJ6x4MmgXY zkxC)d$wq_XuFkMBXK8!q;iQc#Gi5s&=QqlxA2g{H9~he(h`t`3+&y`Dq-qfwXy+TRh=j39I|z6b3+A4UWdMjFeM zt-GV_eqNNCFe?Wmd!LzJ7sp8`^COiPKhO?b=c6ONlT0y87}TDYR@jbLOiXszeN+Y- zJro#MxjtXZ(RnSu=3J4*fteJ5W!}d&jTi8O5|nxqchU2*+6yvae2SMr)Nr+LC;q4` zX{1squB=2V$Shhvxsh!}>}u3V7##9xhK;X_&3sCQ6>)S@(|c^zXN0dp zfzs4-)%=tYl!KS;?{1~S5Q;b#SwB%H&kq2(;&HT@2y~iil%SXP+5inhWv;@Jz}vG$ z4Kjvu#W%nGO4h?m5|kJTo=I_^o9oK)j^+?0i6bVZhvLY^MiAa~P}@e%c#RA`&1%&F zDa|W`Mp;L=7lDnzcL6Ff(hum_hi69{1LQH-rwWWEm!hkFq;5pX$Z>}>a{o&dbkk%; z2@mx9$sG^j?A5mH;cO@nVtw0Tj6^hKCR5n=0b6_(J4zhpobk1##`?O zr7W_L)58--HWDOiD`nq5gI6aK0Em7d+}x-Dk&szd@_F7GsCo`uAU?4pq>(M&!*1Y& z6hI-oF7f8y?M*QffFoWa_g+u(O+s$a0|7Bu;WK>885A#-7Xn+?6VTYM;@%Z|crTH! zptXlX|A+k>;CXK#DX<}$he*nH<^#Dx@I^${=aHM2=^=F`YD;P?NBhEeV2#3TguiP}v*Aq*KFWS)}i$zze-}X5;y` zgX06OoUhB!o8o^k>F3z}lsLV?ae-P z24ysz_QhFkNCrZ9$=vNPaUaTjV!yhu`Dpp2Y|03hcxIr(6dItb`F*)Fo1$IxTA;l4xZL=FnL9-wK~@vpY-$;GNG5NqJyO?nxjzJB z211~~AWga(eX~{Ro7!H^(y`+?C(#+Wv1FQg-^_E*68%0BN`z^1xtf&V#gvK`VsJ6G zVgf1m$UPye83xo#TP&66vyma1+Jx>yyyATSx;{>=L`1h-uwm77b?8J>Q)I%R9kl)y z`I1c|lv0G+E3wr+^7?h?GJu+DXxwJq^kn4CK|5bmcz`$Iy0oP{&6L6~>B(^ypLCr> zbmfnA7O<_$z)>P`6QlOM8)Upn1=ZJBVl?k+Xk2!>9xX#FIP8xFrqs4^s{jmu56K+V zjm$ySgcw`P)w^mULeswr3#w55D7C3l(%6pWCb_Ks8hPx1JK>b=6r$Lg^wP7527F2u zN*Qi6v&*`~(3-X~@}rbM*yc4#n~h*08Jh3xvCCqTPcjBjmdtEGI87H#&=G@Ufyw12 z2T4j1pqz#on(`ZAdn_B6e!*QCjOmi6|5X9bI*^l&x@AM$psWGj=C4!V2-|cD(`F$8 znn-lgyy+NdoN|&!pE!0*B}fo9z_hXFJEkw5G67{S#Dhn>Vjt*aC*zqSDe5lhw4;KY zoxI7hzLWFL8uW}ykzsfxDq{y3DIqd4jE);%MDh-O4j8STWgK0F*wew&H8`GSMku(i zr?Y@*pacdzNfIBQa#mD=%v`KUoKIXR&iK>fMfOLNrlpSRMx@3hyyz92WGZ=!s?cks z6*ya&Z?RXHr?4yNOT@h?@X%EZ_EbQ&RQR^7dYS;%FCkupaDODeW!BoC{9VT;zA!n} zc;L3wP+RW8GPILDhS6LkYV<>oMKwpqKa^cfV6{!4z<%b{yOG-(E4m}R;5 zxlvGqjiH#AScrJAoM7JS2(aRNO+FNQ7=xOyoZw1wX~oy%iN$2njVj4qRxL+XZ~C#Y z7GC4qd^*WN)DKBEDlK4pPK%P1A&iOxx1BU%>*egsA-u?7b<$`4R(09NhAUE|C@PNI zPqWt^R`v*Wt4V2-5k7C<1U!`2L?Zts^OMyCH*H7D;CfW1`S`h{sM{q(3Uj(azA3>3VmCS4Aa>?mU^auK{V zIHkb$@*Whns`-C<#Y^Nbo|L-?q#-A(3*?`w&D-ho&LNyfZySE|I#*d`D* zB!3_6P2?Zg!K3FopT8_0yUb9za3m!1thV%pXWEC(c0IS zk+Hs=EqL+MdSnzpP3{@COWXf;;4Ps*prSFi$MAeVNOgpFXg&$c5Ln@@a5miy6=e@ zd>k0)v9r{b_$DGTxirw=6-wg@B0F)jaKc4h)9+h0K|Ouc#QafD4V{m695~hVF$Y(#;U2jXQgIsk zpnwETUgC@&_etZU{2yP-f5hOnn~*pRWpD#$kWyw2ZWFRw@{kI@5TF*J#%K z#PaQj*^MU*4V)Coa@P-=QVOt=kftq7@qhZqaN5aO#(%{Aq<`$!s)uV83@jp2M105B z11l=BG>o8q0)(AE^gjsXOm$FN+G}i&`F1h(xu5*~hh?f7`yFhQD}Xb?^DJOf(B=R* z`21ez`bu3>!im>mWW&1V~4~2Aqx7I}$H_y%d%nn*yf=^dRR1 z#S(r#G*u$~92bVf&mNXl;mm!bXMS60LjrnN3QiCH)NHqfkSW)CSH0}N4fw&&=-+-? zLzxD?EMZOi)B))qu8JsJ3>szaKWt05CCRkFd7iIhoSvCIHIzbJ>wg~(Imr^4!V*$Q zLAu`ate|Im#jRp(1dd!6%Y5(jN7YChS2J;6%%0izA7(3EhLS7}eE4i$>7V#*+%9;f z7s8xtMREQMe-D>W!y8!RAa@Y;9%5sK{Px&v zcdYRH;nzSjUSAuHLB=@@OruNp@!CP=Bd3jc#M?5WP54wCR5I6Wvx?xT7p5zcr)AYi zSFWhz9TK+^Edy*Y;DzP3judH2%C~Dl&b3`*fI;o6O#5%*P-Y@Ml7`ab+G^rIGTi`0 zK)S!9A`$Tuk9zxQjQr>6EuqqY-yN`3ug6wUSujN!(Em0;_DxxSz`B zT1>tJ*Do^A+@BjFg2PKv6e~qu6$|^P#Q!h#q5KzY7qQh$cB)2>qq3g= zyY=GpY3NJ=3W*x+h?+QSMJ8_nfsQEW!(S4WUUWk%N5?T9??2wHuRl%i0BuMG{(U~- z1W>&Rk2tD^V(azC$8Dt-j6?7d&)b*|RULCB))1Tyb$XAis+^n53@L~EO2Q(sg%C;5 zvouQ{ckv|SLUjoXpW2Js!?R%h z!!C-*2JjgA+RyN0qLK%U4wpFDZy2leVT3O#Hg#(b;jtX&lK_Iz1th#AIYV9fOW2?% z^Yg5i?`o-CPtEF8tI)~Ho|iE2{?rale?7HJr4nV+kE-Wni znts0;yV}RmfyIpRnL$*Rv)K#Wm6}lIY)H25xWa{`D)3rRV zKi2BW&QKS$?ChUc!S?IR^@-gsrVHrc&#dEBDf8fFPd^S28{(x#3vl?@gq9%6tW=nmjAH*+pT?RdwM-=UUbEpQj%hcG-R?_$7`te{xd%qHgmZuBg&|Vt zoZN(F%cqy^GV+jxBl^Joenn;3+N{aul?I;acu0XUe%K_K?^ z`xv|kSq&OB$9eyKjfncuzizBZsRMtgt!A6Jjq_fB4T(&1`qU>7&k!Ew403FwXVWPk zu0_BtJQ7s%wib7PQ3`T_Kxxb9W;LBI%Xa`VSgsh=TQ^OeyRX#=I4WR4EF7QVLHSpO z#tpp?K+!+tzU{O{;i;JKV7c6X7b?a>aT0+!abPFEEvyeY{}Ui76uB^w@vRRIr(%U( z4c0t7`Xu&Y{LKFK08By?cowXt)8{o5uPAZtkcM7)?Q!_+ta`@_lsSGqq;FO`oL+v3 zB^ui_x%Sy#{sEK=Whn=p@%h*W-#j%R<^yKw{ay$$Vg7O@4vBCRS*0-Nt-5?%ph!8x zruzeJ(XkJGG6NJpB0cKzqsyU-n1IuRZhToFI@W&$n9sD_H5uT)0D;B5mXpzV9 z{lEbt2%;-JxVcUiR_fSl*%6El`+obLYM>|-Eylh*!X;im?0AsM8cSm5qYPQ$T>rAX zm!zkn`fh7u(VRi4=oirZEzx^6P)9xlsscM~Ws~*kl@V6QcO2Sn z(JvhBS>W(UKQ~bT&m0v0chg$_SQ@I8V_#f^-UI}Ra+aJXKrf%ol4&rBi(RK724=UD zBFo6(rPO(yQ4~XFT3O*!kzCnl3_=Tlr`75I#|UvKex2fVzH5Y&5RIWY3vb1wWsjw; zQaNRv`iDM`{^{-7Lak6;oWW&iSoJPmk5ei5DxA_P45C?9hl^&JK$BDFw_THP`lmYM z+pqQY`|^49Qd@~ij&Q*Cxu5!)BZ)%N;9Y*g>+l?v?+1gjT(-#dCD6wIIx3Q%2RSmG z+}%v3VQI%1N^{&T{Zn@cB2Vv{Zl-~@0yE^4 zR)rw=B>}BCzekSG3Spe)ZByvM#rl^0g~=)*sq_$y;cBR3-ftw+*yG>}IaJZ? zmr;6H{dkO{#9Gnm%rm>r!j>uxh!BC#3t{I+Z5mGBTRVSCq(6C!Eo=nQNU1M#sLDckxX_r2Q2i-g%i5zqw#QA(k_Yu#) zaXiY}ZJVeD^TB@_j<$&za7w$hUJ-1v0TBtE$?B=&*VV?kKLV=~fF$W=?z5#I9)+A? z=B>W=DyK1L;<{6j8SiQY8rP~v$~RRvB;nCFf}yJEw5)sp2PwD-cbMG{{yYqE%AhLb|K9>{UCJK1`vgu-Lxl z^0kkD0HW+vg=the3@?=8;9wV7zk3_Eiy_5H6s`H|A&QBlIsrX|b$o%zVK)m`8^J8u z)kg{HzMCvBpnI7`OCCEu$MGNDf; z9Z7Wv9+Z9-KZooI5N}M)6)_&>RT|iO$sh;ORYg5}zmG6|PfyKiaK1DwSCvN05-)Y3 zYDhC>0KC>RWmpU33pO=AhF>6;eoFni{FB;7$OC#-2*>McI2a3&dHhW_m_f8&>MUF0 zLYj|-B%IrWwtK*^EUXP_`3<=mBIMF^##(6zSs2aAz{9?6t7hB%w+#Zp$M{w~at=&P z6r>zY>(zrpRqTZTx$2B%t5GsV7u0)(q$+&Ux)@Z5(;JC%jt>~!P#j^+ZHQD!q^Cpb zsGp9DhH$XdNH=8)K3j}E?W{ZUYmX%SEAE`6|DbZjF8>0Bmh+{pXdQYJD* z;h=LdzkH0|VV4ux#6~#7R)~fFLpJ?YL3s5n=>A1U$1AQY{iBg9e$Axn8~xKitDr1t zRdZUNIo`H5+mh@M@@=Q7%5Xpfk5*~9GymC6O+p$2(Oicg>-n5)9l_|)RbaoIT@u_lPw2k&TY=imueXC);BQwa>#8R9_!_gECFNKvYmUWfmDB);) zvO&f1V&$Y`U+bEF1)X`}6!~UjZ%bvyV3m&@8(mfv!o{ajLc^MbuLoz#!=cF0Oj_j0TPsY{A=e2K?f}+ga;$+O`AbJMo+ZyuF(m2Z>bR)6Wn-TMG}r8uJ*02 zn_2N(=t5fdDI2_eyM3HG8OWy3#T4Mq3W*(Ng!sBx{(3Q*B52+M_EAo>Yc)n5Q?N2a zHm+&7toADV3vbZu;dQZ-Ud!&CLfoTJ@6+E9(K%V3GVa{f=;EIgJkwRLYI$BPo-}r} zjRg%Lf^zsTqjeVG_QRCOzHD-0wZA}OE%{(%?!WA`icC6?tacf-{a6iTTL+1jY9F3( z{ah>n^|o~^i7lax<`2MN(@)U>%;~9YG@@S4T zJ2~h&D%oB5O+&)-xWzvaRA?NsWaM=<^wouJoFtXl;$3Ce&f1?Y_%uBx1c=$+M@p=U zx~C$;Thi+c9tF7}9{(BY>lHbvaTtAaA`+-{7pxRRwsk=xAp33XQLvSj1Ox&*?(g^U zsK!Zl^Ct1iY6p8!*HxPGUsSVfbtQRAuNIxoHm?dY9xF)t)Cv+T_Un>g4CNp+L|hfs z_aAlxR{Vq^wvU$(?F8ac30duYZRZSPD5AG=QEd}^#nEMa{#b?#l0S9y5c4S?q=M|{ zf|Z0U)ZBC{lGoyNf=0hY*3-|!m`m+=S8*Sdd81}rcd~FNzn#}OwlmJ{n!)(e&+@`> zn?BPbelotq_rTZQh{$;8;wdG<>6ndTC<(&ZB(YqVLsU+WOmFO`f{a)N?a*7;1+j*u zhYSI-!l^(&Q9wKp`(;`o(FJ)v^=}!PRR$N3be$Ed)N+^SOe@K!?^#ZxY(7>*hzL-Y zHM%Ggau6R(a9@gE9S_mG8Ry|^3Qzw;Ii7t5;l%MxG=21pBt-I5S_yWfy+-!muF_)= z(IGQ>Pi^L>f1>_D9SjNDHe!3{BjZA!arMfhDMi6}!v~q&%J3Gnwe?##_x0ocaMZTn zL90wkoHYnd|2XY1TL%5fJY#JbnRIR}0n{(?@#}a`j@=)t(h^EGdkblCtq=SHngm$ZjQ6HUzasI-qnpgqZ9oCoi zMoheNBpra38=pp6SCo836=Um7n>{|SR_3`SAF0Z%c4VZ!QqAT4xnTjNS7ZCgB002qQBs%=rAo=UFJpu(^}8 zl*nB5q{FN%OlYpPtd-+GY75pnsv+`5YrG3BNYy-6LdYaFT9}-#``EK|n#&a-mTf4j zjDU;Q=o2a}JU+3p^lMI+D`*L+G*FU8|8v3MOyTqtF|`|$JussK@YM=V>d?~yy%mMoJjfQjS0(xk3TYAma!ON z^*p4R^ze?KIY6sM``G@@V|oXnVG)F_#i3;B&F$~ZZrhWV1v{6Q=iw@yd*)j0ZNo-$ zzq}69J};Wsilvg(QhzLNb-ebZvD-#d^W(>%N;tMd6C-nST~JuX5t7MDE8QV zuF?oTrDB`H(LKG1<8a;q*%7;*9h72UP~dyp#yN#z5AD-3M94!B7l$Ld=?~ZCI4@tC zB-`VWA+oybOcF89a_sK?Bk8se6!-~l&}Kg^)klNgR-WT+yZ}n@VQ7+U&q$El(Y8>& z<Vm5;P*PnF6a8dUPNw4KTglHBc0ZM|?8o-RKy3H6k{Q_rnuH0^ z8lVd$7tE)mTsUki!Ch{jP3PR6XPSbH*4E!vn};R-lk1;HgqJyex>|!&20QLB8zr7$ z^!u`GpZnLx1{Zb=$-E)|t=Q*j_g784!t{@sz|umX69T>=7-@U5?ZP}pHZcf z{OBEJiD^bo&-r~12jdyFK}A$2OQ6?rAg6F#Mj>iu`&6lPP3$khwcrguyC(SFep2{4 zdVoWmfHSobLSKC*T0!>maXesvzbXVM)#ScmazK7~FD9*qI!W!qpnGf&$M#bC)-KJN zC`3?L(0BO!w(?JdmH-EXNlr_*7m|MHv6gH~&y`-U-tMF=`$O6BP~;av4|f)sR+Q_= zPuqA2fyPPvk4u)Q^A{1z!DwM$4eBG+bP^Aya;48RZj6O-zkuEH0^nOu}NAAR1#u*<=MskFy zG8Bngr$=5sgDB+15uw_i!(a$Ev^L`0Dsk<&Ws3L0eF0tRTA z$HMz^{cMAQ!w)$aEb>?{3fnk|1PCSivbZ6J$Vh#g;4?kEUzBtdpIY^%sSTu%**$kN zYNfC{O^dU(dRQ%6s+X4uiti#74XHOl$#CeopqejMi`#q1bU zm_mCx3XLZ6b8Wc@xqXOf<6lAXLR>S!;B(IB$ZzDMH)Y5KZ0{t%HHTM5Sd^Mj#ZPNo zdq9>pb6zP^FBaT5Da)tM@kCKJ*>D#X3i9Wq(ZKNib8fP-3p6|LH(S#d>3pu0PHupJ zA={2KIC?frl|BgIRGi4If3|3ZwH3{1QYzsLFUDOx-9yM>wvAB%k({=c{v<;ku3S)G zYitVKg$WtuCoyohYca{?rT>N{q`S#$#Z0(6dO{NnMu<77JLCZ)UGbrO4h&WAVmLnL z@5DtiHo!(lQM-NAO|+mL4cRNxTyoU^=mLi;D4srp)t~nlABX>$f<=vQ8?aP2i$#ui z6v+*$6^_SYZWC~Y*F*EV*L#oris(9s;ZndgBoY-p>#*Ra6y9(^nJR{|+L89*)7F}@ z0<B&zlkyP2)kqn6Tr@ z3jpLUJ8zL_F-lhKZS~VaMra-smBn-n0mZ{B(px(Gu%t-nP8d9SIcvEG4?C1I0MqG1 zaqL)evIOXWn%0rPzvz=VL9jncU5Lkhr;b77$w9r>nLiKs+6Rmy84qdjB)FZ&|!;yfnXR378Rq{1dA+B3Mk zv3keY>(NxB7W)K9sS|@PjkY~~rXKD%Hi+wAe;Avl0#_M7N@Vc)o&lmv*`u)bY(+9k z%&tWBN#pQw6Z`2Ci;2ejfJ}{Xc=;aL_OVf5w#gx`X%~WlPP!&a-r4U{Smtv_!Xlc% zi6Vw$^lG;Ze8j*Opi<3}UHq&FH2Igg(*GoIX%2v}PJ2gf(irHi!aYj@dv zjRG#^nm%6gnRBpT|YEj0qz#w)F;HQxQ$L={j*QB1k z^Kcd%wTauygwqOCZ}|XvWJ9}REvAc&n4WS9B>Q}{a9>AwbjK!4!>)(JK9Q<7-6U0r zpa6$p=ZoM_L}+ZxPKOm)_=O*n`tz#AsBYqFK#?`Ph@qQ6<}d$<3`Hl^Of-1*aq#iu zJKEY^d(k?j!I#<*9}O&%j|V$%o9`f&R9VZhI%TCW!b`-uPg4CJZFpNu`r&v6e2>05 zu3oHUH#97`aFjT0P3<~OODLznlVfY~j*r12I8PQq*iT}QU{0OuXhF?J=XQt>(z6eI z0Y;6`D}+wcTa*y)Ec%ySrajJ_v&R?GrIwxyN&8y?-M-r>Sdta7MTbn>N*{{Op@`5dsd@JB zlB9G`xmd@8SIIML2g16_TmTbe&^7b*pG^h(n!Ty^a2)kQwV$s{M81y4GYkDRUtsoR z-x2##$Sw@akV(44`eCfFJ6qw3S``QZ;fYO}GnoTx4B*e~7}8L)a;5~i#iQ*kLJa*ueP9;(bqo+Zq{x+!H|lD=ASZUV9b-5j zL(uA>`^AEW*OQ#j9@acXT9_n#oH)?G#Q)>SV79fLz$siO%~>^^Mp=iOisQO^gRr-3 zwVa~gwQ;|V3d{Mr2orJ&Q?QVl;Qk3Kirdv!B#X=S8-ON>mu(!d?kF^lxd&4?u0VT* z*=7L+6o0*&u-J{XUDUIA{~a)MH?hO#c&x#!Uq9b1xD_)4=U7DOb6Yv5J%7q@klDip zD;X{>r=B;c7P$Y8svQ`I4QTg}TYM zmX)d$Q{P6_RAn7v2wy#%Gtw82Q+aK5*7ksphkEF{AVp&R1%SYibzO_&lAYWr@Js9~ zLy9nHTOCQG>z^>O;CbHRJeeWwL4yw(-MzV6NvAM$DOD`8wZ#PGZgUi9pM5>tpW9hk zN?M)$yNZ1X4o_u1BH1pg%n{wL6m+nIxQP8Sy)X9%3JF+ec5CdTV@vMoL4tb23+b05 z<7i7A&@cwb>502)JLleC^1XaJ6xhh?oE{Lt6?yXRC z*??dMC1pMjQR%2-V%))OCSkpbyDb9$18qfZD`11_tHULs7QMC0#C^ZmDOrp>j%xpMtzgKbzaU|1iEqJ2gge%{7;bf-fFuoPJ>anW}Rj6aso;>j;HiUdwn#1G}=K5PTLt{7u%8t>nBCTABVq_JSIa#dfC zX_XJ^ApY~{;WBY(JdRN^=K3mu{xIYHu@io^D! zCMhNS!PiMGlkgGPP09-xPzn_zK?w0kFkM}MFKMwHt_&|#99{1gxBf**_ba;c%FYue+A9ScLJ3SMtS!j#4XfU&<8 zZ=M8n9Rv%bDxLEY=W%8b+QvZ=XH=qA^m7LK(kQ%jB*ZPcGj}ku${aPO68HYQdqIws zzuhZBd1#%|5y>lm&W^)G{ff$mc>P1h0SUqv4csEs8y8K;pTT|nhPlP*ME{-)i{KjW zgjWthD~^wny!DFSci`!U?$Pfm2cnryluF1HFyE9gw**ma&Gw2%qLg?kK2ByiEfwgA z1093Z{SC3Jo!Knk*gchOHhIF;obilxpAS=>bY?lfH1{ektwKH0|uG?i*_EpbYuiiJW&^_Bg*)-%K%!Uq^%Ltnf2F?Ryb7ETtP zMUTNxFC8+}04OxZX4zqpi#Tv>7p=2A?_(%u4KT^7@?cb-bXE<#@~FymYzyQ|*=(;p zJW70yape2efJz>xuSv+z9!?q^ZLeh!d&dk~$9 zmH&OjT|mZ5x*4v0+{fAApr?|v^C-_yAmlK!f5&Tqdf+^5WmdY;{;_?vdM(Mf<42-< znTM!(HRRhnLU!ZN*X;TZqR&nj@-@wLqwj0)rhm+D-&T8+(6kV+&F1%KE$Piyg0&3J zD2)N)Coh39!B#=E(n=y!cLq^Zi)t;0e*e(m+8i#1z>?6R4ozqk{WytXrbnj8eC*vL zWnkLaDV2!m7~At=2x&0;0cA+lPZ7vk)N>_!;H{bk5c4NnM1-ajHsS-75}xpk2-p7hOVA zzIytA;BZbh&9Bny1L#LVSYq4Yt)|Bm))|92Z{VYcOF4b`TVSJ8JJqK%KCG;MjIJ7Us{5y#KUv($xh?Hb6qz?U^esO5tWvA0plC z^pRa+Hi;6tDN<&Ba~5$3yE9Cv9bs?G^oKQNelkz+YSjQVHzjgCiwvZ;bRM@ z%4gEkM*ts`62A_H7t9|*s^*}dU&eHdf=_IRTKel^@uaMqlIt;rrF-O|L!7Hn!@yAN zCHPs5iT7mI9TisndPTlJv?j1s7iOnuDB=_Ou86sjsR-Iy{mF>{f{Vs*E?(7sXz_3{ z+R%J!UFkC2o#pnoZ&>u=5J7H6QOc(kt0Y1+@#g_auuT}%gO}5 zLPTL18x3(c=+j>v1d=U@ov|;T;q*;i zWG{3(6?VkcR7Mm-D9_K0toF!>RE=CQ>{<(M8H7Xv%I|as#j5s0GmF&7Mhp&v(b8@X zSfQ&qrbch><7Ws8P^0YwL*UsuPW5;=4D3g|kervI+h~wImnhWu@&Tb3%uE-Rz&qN* zW5o-3){oGAgkq-D@#ek#R)x&&YfcB;-YVZ~y=3`9be0XVSmu=2{x4^y5;0RTSj(cnY#@=SBi?(ducx8@1+h zkxWOmvy8iT+a^HpP=d#ku*?fS4jyNLgy@@(%W^zpc#2rn|2>`R1NA(LM5S1E&y1x) zNlAx$_|D!Hw<7{=j39B$V+SCC@stN06&6Vg1WnO~4^Fi5h2}m#WF51aY-fT;1H_!i zV3gl>RIAu(2o)KxVFYfrPW8&}yK+JL3Xsu()XM34iJ(%?ua3ppO-~rTwr#?pvisIR zt$(mTc@4=qY$zkQB*X;$S(4a0cKo>EaN~O$B>ybmnw41vVZJh}F^YtWj6Cf#s(F5HXTDqIj9F7tOj&S^5q+5` zxTu|Wg2OA|LSbzXStI7x$9>-0`0o_BuuY`yg&YA5NyRuXf<*Biny7PZZ@icBd9^d| z`I6is2qY0YX0H-7BPaU@Sa{nqZhLFUEm3ITW0|zOb53Pz6v;zuUE5rO_uK^1-^H-OZ@G|=Xg->s5 z)(X-Qvwe?}nXGB_Do5(+EXr`dixaK)W2|r=XhujDbrCS${^RApXEq6 zlq2*|5!6KF$7yAJ)qkX0cgB#w53F2Y9W=GsssgR*vV`4snzOMcpop(nPxx~-N0G=! zFv1|Ol9ve3>~VPwty%T4J_azi-gi?Yb9!tFE zrbcDdYlw{;ta&ge*FlP0hw_ddNkCSy9Nw|2UVyl_%;qayV-OeCL^$q?z`sjMT7tz76WfXWE3@VHhwT?;-sqcRS5bA{=V zfdz-M)0c#8ej6z$->~9i_3q|a#s(6o# zF||D_@NgdUM!+F~*(XUdYlH^~6@Mz0hELR@-VQV#6TLy?6?wKP>>r*(n`jZpZ6QU& z;>5!(AxeOvI8~>|VY0Q=o&**^|Iet!bB{Vgk?lg$(uiCTX*$4!1mb)7%+d9R44DrZ z%c3iak2mBn$Iw@Xc6t)2Qn$jMUN{rW0Pno|7Y#ft;@Pn+ov@r&bLkxZM%P=083s^k zu{X*U4cMuHNB2T5@%1x7LWWVF(}PSCqacWh)y(ath1aA;cz z9V9R#-DdBC!sNSICmXhatPaIfFV@>1##v3xs`yEvjA?0NQ4=90pz4^j6o300|3N{$ z%^Upkxtw`HXc~csW(Wg$Y-yr`qe#za{0`4o0>j4X5s_PL?_YPEE2E7jp^`b3=}fe4J6k(e_f_jFa*PG!<`bX_B^_H(-s@ISR!Yc1J;l2m zfcNBRU!cP+;vc;0<)y5|7*U!`b>#?cUDYE8x5CJ)pdNYUU-gq12HODA+`u4w?&pJ} z94nb%1K>5Q80C$2!L=36`|!dO+L)iLzRr0h%t3wT8OqLrO%lh{VA@ z8gi`iE!JH+$aG48D^WdhcmYmr{;x^p3{4ieA5l`Dc~@=X2XMuSCiwN-tk^mjm+`I_ z4zU=DdvnVidrJjA27R{e$5xq;G0&jedwXp5^3Fp@pzWiB);@0fyrJ;wcH$iyC?5pg@3aXJ|9ndlsH=P41=zn4~QhgXRY|9uwwS3QP zMW78I13k6N+^YBuoKDfux(LxeZ6p}BEL+K$<0Fk3y3*0V#@K2!rG3%?S#XEOyU4UO z^Ud$<=N`qtL@Glw=w=2iXEQN__)Dx58T_wi4}JnP>4Qqy-gv!^NkX5bU4d0=hP!jw zUTgUYz7+`#w_lcxy)K9$y>A5*bFY}GJ0xtvCm`galW_cqeCU4(;~dz$iDp%gZdD`@ zb~3imK>H&&*MXv)s3>&)H9x*ILb~CaAVZDZ5__jr5spLjA}AhMf3?@g&TN z{RI+T5s_oD#bZvwt2C0D%Zs@;4tLQCtw{=6%CGJpm8DiyfUB^@EKTe*@_dRX1-1O zFOL*4`zFunZxI8zl@$n_({OAR6aw3MvV4|0If7>qDvwN=Lz&JbB>&y`GKj+^J~ z#%k`=6goCAJY!9^`7F*(&(kW51@IcPd11E&#YhF|pRH3;jWP+=O$DyU?>I zhF*jTdvA~N3~Sl(b3;z`Imv3_IqO7~MOELBFU+A~dv<78uKk(C|{`|K8G<>b& z+&QMIW9oz7)iG-og%+rJM)&oKwIf)Y4lm0O;H})^GY;p-qY?bGDYIpGgeiY)Q+Js7 z0^ELcEnGBH(CNc^jqzUnSn2eW#sQWQl$S-3Q&#pSD+zB84LiV6pH5Tyr*lVz_6&s0 zgHf)FwZO%`)#6m~l!Y@Z`E`Riia1#svsPb_VHFT*LjZe?&ui6rxK^Qi4~T+tKDhzb z{zWEjv?)c~@ZW`Nda(ABij$t#((n34k|26X6w->i(UbascXe%}VYE-}mXv2r9fJ7C zs+jOzv%+D`vYn(ADf`K)h@KZidIXCh6v`#IC)PV7z&V?44zQkw*id_|jd)(}#v?a%d)Y#Lb|oe%Mq(MOYmO^!Urs5j?6Do1Eh zen$Py+5xHrX$01kA8cEYd!CL7Ci;~yjjaG@8PCxb^VbIrtotZA;5wlxBe*0_UxfzM z5DVh#^+{d&m+8x()Z(1^(5WSh`Ko}j*z{)kwga0 zPh+7TTu*ThUE^6N$Yyhhp6|RdT4qyJZ%4@i{@}v$1Bqg* z&d96*7z(YutO#(#>UORxR1|avTYr3N{qU(Z9n9t2;g@V)3&|~1X;EnH_42n-MNz?S zwLB;{>hKW{liB7OS2Lw7aedh&Ar)xXO7(Gl52r|yWNg{y&{giGIB?&i5THYDCIgoC zZT3?QoAl&L_EXBTMA!!a{A%Kq=y0j;xl?v)*=E9b;|_4bndrz-%D3Iz;oF543hF(% zr2#r71unqict@ykE01*+$!-*hO6gh@zVuHKLyUkkf8{F8u*xwta3BY}0)j2plZExsOF~r(B%7mKddbet zX}&`tloMSA&JHJO5yi&j%f5`^%_j`MBy>i0zSZIIE5l&bh*OT3>DukY>HBY`+Ts9Y9U>T`1vgiDrXOmQ*-cvWH_O1e-#9|-v4 za%V)6{kj1H2cUEDggy~i?InkH759{xB;g=UDW~Syo;?!#d;FyDiwQ-Ion+AmFe`OJ zBxrMr2wJOc>HmqHML0teJl4qjaEK_qVzIin9AC*D}-% zLO8ve1og++TR8I&{98U^-$h_{>lFhFv(eqMZFo2-~@-C(aajN@~* z8Hum@fLRL_p`7h;(U*BHbQxS2H0S0K@8mQ<4iE(T{Z$`T56r-cU#eY;Mp|EWkz~qh zF&T)<8fQZyz@(`D{1}e~8K3|7Ap_@YgPgraJmtP1z^M6Y?kh_b+D~>nmK9r+L;)$< zNRQ$!wR6k5(_(Mj&2}?p(@;aUyH;qDHgukMlmyu}^*mrMigm)2P>MHW zs=y!}K%=ecaX&c7YzVxjVj~}~WjkAZvG?bprZBbC(j9}6jp9<{`W~wUvNfdPmQ@hw zydOFKyGqI9af;ForB|>MOD+>ow6x z!Jc(1t**10ktE}CI|Rq;VrPxTR6PZ?$UZPn-cdLp{L85J#d0v%|HB?7N;Lbo?uKGr z>>T4rClz-X*$Ar{QSrqoa1kLxoPM!M#=3$ZX?Mi_xY)UnB(^T}hGUee{mSM`7}el? zz#3mcMf5`@SMQKe?7@xaFFOX3Wo2I4x5I&HrEeBOGAhZph_%8BAW3j5DD!Z~k^~T* z7dt0P2doIlA6eMLYR1EgoH_&)g0cN*gVefXm=JM&K5yeVSO0nnsVE3{9CI}0b=;YY>8u^p`@JA z>WXfpsKbeFPZ#-A4zG{;c+Q5W5EPbT-&>u@qYY6@s47)`xh|Ho66F)n_%UCv{<(|B zC>#EI6(A`2FGG69YB@;eUXA#O2w_6n4Xnej7vy*`)FK>a02-9(CJ>x+9rdMcqjX99 zR8K;U9a^!9u0q^@+3}e*h$KUtL6AEB%ovX#S|pq<)wC~0j5lCKP-N}-%g(@RJmu4l z^LA*lS1_+B6v4KNrxWVTUwx%#2WddV!lIo*?t}q4?J}HtJc8Qu4sFEzrP_?c+F#U zI|ERVT(Ul|P=xdkm0lM!B1^>kX`xm9Ui;YWWEV=^BBaZc<0b-^@ zuexqLDJrea)3vZ}UAq)h!{ldB`}4?{7I-i1GY!>3;CxW}3bgj(@hrW!`;-|Y1Z5Mu z-3lw2U2mY16v^-ez7J)_O-DIXgPe#UVt7b*Qd>J#+=~@k? z6vdjIL6Qc^~yG@-c7z2Y-fAbiLwRFs6TpLS&GCnbMXpqM23MGtthS3~U=oZ!1* zW*4{D)(S2?&gW0F)#}`U5!4sNLQCMc9hZv-1i*H0_afEK+wy{d^$&BrE_e1WM8$K_ zp2h&(yuM-rMb;TdnG~nD=%Dl=*CER+)%WGjkpT>8Y`q{51c3b#2V$p%Tvw4(?G`l- z_$JxB+-{G{alSdt>BX86un0w)_w@r<{fq^JuRHjpNJ|xrkB$}OewIlH(+|cBQpxZp zqx4^glSUl^{~P$RCiTAV(^^F?4~MDUPw|5+F^wD)<&o>{S>*6G1DB1b#`F z?9GP2%o&Y=P9M)HWfS)1>+y49cD|OakhVPIXE_i`c@Y|$`Jbi z&aX&Cno=nJpcAg|jfST<+iKvHag)OY*p#w$wpXvG|A9onN@O*6f{WUcGi&X92nNO$ zS{ij>#T?@CWXH%Hw3gj%ttRY@KkPVP08v1$zY)Zo$~nd=9cj8*0-7K{Y)S^YKJX@$ zGALS!yPuElY`nr_LBP1(J6?DPmUkL=GVG@hGVddc!N-i;r^RyLNu@rs^^RZn?a&J# zo#qlJ%bJQi+sUX#N#1qMPjxJT))-f;OnX|1DH~|7mah<20G)%ZtXRU%r?l4(fS0{M zDR_krWJjJb2IV!}Llq_3Iec&kvJ++y^6^@UuB)rO41fc8d*bI4AUPNf!eH3G`j!6F z&eJDe5d?s?ns|qpla9i^?PP|8bhlv08)`ytliZu$i}KkCf>q!4NQBMk0YASDt`PMb zSGAQn>{7u>3fwjrU~+z4&Nh2Q58ua>ER|i{uIkd?W=|{FZ{yP_V-`VEY4gleRxY4Po^EGlya)J;@WRJPGXS3prP-$=~I)7Wb(!-T8 zgZO6XdQ6NqSG2%?WAIGqUAj+~?OPl1@U0=39U@$3{6WPV`@Jbs90uw1!H|9J)&4ou zS$bdf)$c#wN883ay@O2Y*c>G*K^Oufh-72kM@%jO&@&PBeZG!tcFH`wA_?sc;b2&- z+UPEc3|2ss3`~ssr~JtOqT;diS7Tdk_sNN!v5)Ol>E1_`d)|r@Pc+2F2xzJ+(b++E zGL4gEG3`HmOiqv>oSRIOuN5&}R+6|29x5qV)X;@k%vF=nxx^(b`PY!yBbygcVfiUQxb!Cgb0Q(Gyj}wMT?pc6cj!MqCJ_)P^l<#g^ zOigQ?0d6b8*B6z!{nFu_O>=6+ko*I-CwGrVptnqR9^IFbU9QN2T(C;bw6mozf2w^; zXFCs0yGSRx-SR%MhchMA9+RRE@tfc`i1v{~{8IcMzi`SDF#sV8Zp?lLFb4~U_Ez#x z8IX|@u+zTC54sPG4_mpuF3gmT*d$mOts;zGE+>2W5(PURU{|%W1z>5wjYGfwDYCYe z;&c><$Rcq=z`pnTHGo5y61(EpTwgeHh|C8%q+ojN11Zm=F$6yd%LZ|4F%74Lk%0iT zn!)K7z7al!bdVw`uHLLW`R!bBgj<0#Vf{jj7{^YcA}|nYTx17FJDi+V6@1OOKNP`l)$PT1XB^_#udu8a7#tMq!--tBn~QRZOx5 zefbE&;D5Mk+dpDM#_@UVJYxBGyJ5}sXxCR!N}75SO=0D7Lvl{_J< zEZxvHqzg;Z8ueOyAXNx{?7~H+)$#Z!t!q3kB~X^5A`%7}KW#|^E{;{45_t|eY!cN1 zr(o7!`QRR?AKu9P^^IhQLwQ9)QN-Eieom`CpvE+`cO@(dNx^SJqgKfMr;nen%7anv)V zQXK272$7G35Bgv;)c2=dkDoSvU-YC{Iz2fXYBj8!i}BW0Wnym;p85jKG1gyKt9oqT z_HLGVLXk!o9~#Fezl9wPEdqu3T9Y$$8fKQNH1oSKspad{XsSW+OmYi_xzl2L=s^DX zGTJ&&C3s4suo!R>Z85&C*5lz$5?M`mDRIg#PU)aGZ}+Px*0J^V+Xx7qvRNiMWZzdy zr{@+LbG>AxZpg*$qvbjTvpvvNTUTqCrvbL(!fpAz0rYUVljOuG9gsHO9$d14*`kq< z-T?Pmzs(*QGN?*97oNgC62|Rcjo&r^A{ne;6q&`YTK1WWw7{kXYC2JX7K6qSozFcX%sE+9!r# z3`s{wzd9K4)WMjtcriQY`8R)X_Om8-8wH*Q=Y9?j21&Ytb!z>%W3A9=hjV@ea5GtH z8|L4&PF69M5nv-P56iT{_#webW%S<11DR(R>!*vAel3I<$hem}3CSA>32@TMw^Aj5 z;esG?tftq+nts{WNhyVP!9j*B%BS1**Q9kU26Fv`k|a(z9GZz#lf3-(%jV%?BvKAB zhyjJU(iA8UlXZoQb=L>aqCfR(6KGIyt+XBte>^r!5&Y6ImT0}uI#XPK#d)o_Hp&osEG(P;=ftOZFyt~ zVKF)#5^-Y}1wJQq{=PnHJ|=Q-0@txVYa02D{CGC+r-O*gB`)_(i9gjSfmLqh)vA%_ zKS_+b3}FbGtFI!oob2dE`MmDs+S!DSJPOjJu3^|jHR+1Q7D2}l^N41AeE@R&3W(b| zH~0I^)UQ5@?E;01&*73kWPsfU=q;~Iu zBZ!hmGC0UID@ry$V3KY_bSfy$)SnwEL;QpLmu?Kf>4QGKdt?!Fp`Ps|SH1!Tx`C|WKD_E)l1l@gTd}42{H@M)+RGwkd>Hgj) zv7i2|4@Lw;1Sb02?f^D6)hgWnpi*7RErvy4f;dr%r+1UUCA+InZWwJpY6MQTec77p zAO3fQg%34IU%%LTR%Ox+&bj$Yu1VRD~5#r`OfQTLrEVbLBHhAX=M zsqIL2h98{=X)piuN7 zgiGf2EdNE!rT}vA-rY-bdi-akS7jk8O0PtTgsB74KrqhQJd~mHTPOpd7X~dT0ZX`FkHzb#%IB!gSOo?|=pH92 zjyAJ;v~p|Q!giXZc^Zfe;v+=5~*1TlAW&| zwH*!vR_TKUw!iW~&$rAQC{2KZa8f{;v+*vrLnzG_UBiRd3RCAaf#%RR$j57N=Y2=z zSBTII5U*4Z59e0xScyh~gxc_$a~yTvwn8-|D|}%P8g?2MuS3vQu;c^?tV96f3jn_K z90gEF9jOyokvQ!R1TD30y4Mwtf-PiCrZ3ke+zX`WZB1`ixzH#V@@J5IQi=_qOQ_y= zWe&%I2LEbLP6`2H)_`1g#)I*75@_c@h#^HB`6?KK))NEf$F_rM1+%Bioj^iFDq9w| z@;nLjexBtQ)RTj8Y_}~jEwQ(}>KzEI9d-8Ql$=P$rY7v+b-8xzsb#=Mtg)>4>nMR@ z4qGvH2J#TQkNP-sTU}|tF_??=zTDZtRF#$o+Kz#gCm2(M%gc`xFRZ(}a&u`~S_u_u zd_T;ihlxIt>~xX*p}17NXy!AYBTn(_pz~Wzuz=Axgfo`kmpezo30%;b6sA1lO6kFR zAYrD?{4RSc67`0mM9uN{!#sP>I(Yl4FxMZXOoC0wDq}ETx|Bz7P0th$+L3H~qW2b0Rv&P8H=1v*I#ea@f(ZO0J{g-II&%8$=~tG@aYsg|n;$ zm6Lr1iP);NJRM9K$g_kqZ@ai}tLVJ5@^**s5&LrEJYs|trYm-$lj6-|glD||;L~gB z&4xiiDi&*h|8{2v5fJy#g1n^kR-Gx_u}XrT=0ET^lYlxLClWZezdnSs^aDu(if%?G zYf4|hB-SFbg;KWr`tCRm3roc2bDL=Xe!KG=f{+6;9x*qix|~MXZfMC!&70D?9FAn$ zR12O@Hlg?Bj)rH>i0qvOMMQEx4v!a@>qJ1h_4~L@6BG^vY-7AXgnrflV$*{*!TF## zTNrp`2nu9GN3+&U=&rIY&`*l<@!PeQ56lb5jgb3DEziqdR)F5kbPaLEZdyMajtjhU zoOqUu;nvhUS77vIn5J~`ELSzstGZ2L%7fVA zY?Uc8w@c?T$M?PEe7G9ADYhO)8FpS=Kw63J$b)0OO2y0c6ohk0IzD;P z0P`pUM`^V@YZR__`rXtVwE~WW5j2wP>!z_DSU*9a`;+8FWz~V{+QPHm<7)MAHDrYZ zOOk%-j1HfO(kFoei;+C>iX);I^|yxEeG88b z0|Q><5X$>^BX0QfEeW*dIp;E9TPlL_NBLvuvIRq$(Z4qYFZ6>e0;0d($#S|{RxOKi zV}nAteVeCh4ylYtd)G;UNzI5lG!^D3-uz9>SUZh-ibc6^ldYYb~LwM4nIZOKNeO7-6Us<&2Lw$H0|<*!eL5u$5yULm$HN#wBFuDjq- zR_ZNygN3l(_iJ)wHQOuMD0b{%O^THT6X3$R^aKE?hD> z>`0l29a=jzy=G+fa4`bIkvx!o*otfNfI7jtLA#SvUz$`1e?*f)oJGt3Y})APgX9W8dGY}0bSP`CfK3Xz?T}(<4n1#e)}xk~B#1~IUYQ8^txY>|$TKtQGJojM z2#YZ)pmnzXy4cB5g((rQOwOFGd}tdYJXHZ9nVHv9b2W+R=B4co;&Z z*!4TjA&5gw_b>+6nh?;W5J2&(=Ib}><0NdsbI?REjyKhQ!Z$b+f&?flK(M&LwD zFRg?d!Hh=+K$MAyYm z#$-W3Q2$~ut$Dxt0G`(4TmGZLXsA=! zkJG)oh1MNY9vsTEy*{+w4?h}S1FC{VZ4vy|DBHU7i0JFOI26H9n#f7SO-WC~-9LB< ziA}+#1YmKGNf9Jq#wO+@4|jMoit76R2v(2d#eF>c`z9zk`z;{M_u{C3SsE4Shc0$y zxMhHR=!p;)fU6oW?&HA&+OAX>l%P5hZUv>ieRS|qjG|^+qa#~OL3k=*F6Q#&5uKZp zwO$g0Yy0xgjTBxaxMmb z%FvIVz?3a}(6lQ-c0U2x!uW{x%p%H*A z|NTnbq}xF0e2T!Wsax&71>k~i=+8M&_1D#oV=)#(j!Icx$?TG~44fLGM*x4fzJQ_M zv+!GDA$wen`S{7SVwVvf&aRn*&rY#k0@%(BWn)_pQjP(nOZd53{L8d*0z(G`0pOhm zCj7W>O|00#IH#}Uj!f6E?{G<5DcQs8L7qSEtga05Mtk*~=?d%s1py?du__%H?O}3c zR697&{>;ZX6D`R~Mxl90xm-QK9>7or`^8O;&C*DRHG}I#Wov4D z0Ry%4%W9G8C&GlLWJDB0B#QlYNA;9yno2~mTdf(JyAfEBiK9Y@n|C~n&ZD+`cYv<( z(~=oG-7<|XlGFBBb%`jz8rPZwT?d9TmAVwq@3N#Giy$P(v_J(g_Cp(DN&5_wOx_DN zmBFjvJ10a~b>B-EaZZi~Y5}cwa7OC8nnZau1c|d+-%o9{(3nnD#(*!iVOCbx!MIyM zKW2nsHO&1^;tQ=D4VZ>4s4?ulLe2^2uCOzoR-tg5(OMDI`G(j_(Q3Jh%-#ny0!otg z{f$XA%-+Pxoa@U=JK{f3jTsQ4E-bD?W;g9X79kNNd@Jh{=y)bG++0bppW~a6j}zgj zP-V_tw$06cGn5y`9x@xnT0CBeb9NKSuBPXX1B?00Fu`UYnR_W=sX`g{+)res8Ul};(?b{Y$^mt&R?e}+r$RzMsd`3K?n=M6} zIgIE|?G@h{I7iJ6FJ4orky-ioZ#T$2mYstDzEyWsArP_*dhvl4;kWFkU#jy_%}t9C$HRhSccELcffarzQ%Ac(7o56VxlV+)F1 z$6gR-e<7FfxEh?#qiz72_Ee@bLbSyuWr-x7f``_^ScfXyoAxX@0hLtCyU05pbA}>K zIJVG%yaAC?k+zK9O`q%KL11Z>XA;ajhV)dppNkV6hw)zqeW0!b&oo~Ga$+m;(!%&a zfkA>utIxLkM#O8fR9&GOb_A8;Sz3r5G~lgU0nj z2E~Zxpi^TU@o}+urud)<0JL=FGA&@J7{-Ig1%GmsA8`Padtj`OCNMoN#v3xu*mCB- zi1Fxum!0uyH!yL^3liS3A?a zyJEs1TVtor?kg>j0x_D$up(Q)@38?k+%6!ApYLNlJGXSQAvM`{>Du;llo*_|svU#< zVi|WFO+8Bak;e1oKhwR3;xVGta|(u7OA{~=?sQO9##JcWl1pYKf5G5W9>3W6d>>H7 z+pl6PByuA6XED3S%#I;=tTRB7pvvC+j_iGw=VLr0uxZE#X({kQ`#Bz!0^%FN-STp6 ziBUmz=)_%_=kw0aGa?d)^>mn+c$LHAe4XL>h30;Y710NaH@$@C#q#lOq;*GLi-0qW zTMl%XbZ7h8Nfht?7|DnRK%=m}wi*w=?<^l*kf`Itz_f}6e>w>m-$q87V_)0v-$wL} zypM}vAzmk;^--UR>;S+R$I?^G&C4DDigfN&v3d>%&JX4-Bp=rWDZU<~$T)|x2V+4- zJp{J3_)&xAIc+rEBk1(#;@#|%yI-q8{%+ENElXRYA=@&VC*uzEkQTmF` zwL8NwkAXlbMj^b8zo~HiEngH!T3ES7ex2k10~()P4UbQ5-byCVi#Al$3SJ+COZ%JQ zLHIiTLYL?XE#iRNw3y0#qt^>wh~BG?$>JBYO%>yQEYE=hwdyH^+fGPi*hKsWea}bL zClk_`5zVSq?V+kqPV=p`XA~>yhxv^+!zW0;!j5A0ZAX7alxJ*jWZ;wX&I!7GrPU+; z>*)?k#5$5sX0#y+e?kunUjFwS8NJaC59F$Z8dhmAC8i$OBk1b)b%Q2gBHxM;4E!HX}Ycz}#H@wBZ0%wi6%Ff3O0N-maXLe`wmy#9@a_H~A)`n_hXSWM*nly)(z76&FT^W|priviB73WW?&~r4)(-bZ z%ZM2oVY+z6SL_WX-BkDnG}7hl#=eEND#9u%&z?MnkoxH`LbnCkcP7!eLiPg`rkDtL zf+TqR%ls}k=^Dzz0;?sx?ON^ZTTgTYWr&Y`&6(^riq5E&G&|+n|L#r$XC`t4--f^J zTKVKf6O-#oMog>t$#%kR#2^8D>Vb{)cQrI+*r^I+x%f8a6Z&*u0N7r|u$g92TVZYG z5AZB2fP}Y69DRS!62V+0d5$x9h;MV)$!NzXYex)b&q(I>e1oV)DAaY0vh@vsE#$O? z13UKj)k-`3a-7`ZxXOgJQep~FO|1S@1$3^L*OahSRk&Cr{`T3G^6hO!y~tsO3pTK- zWx>>JJ%+$Y8YC>Iyw)!=*U>`rIBzhWg{BCHv71JGrS)E4Q-E=r0t9J) zXvK(|@94H7l?pL#DSC-Xp<*XS)ckb2$Ll#Zk#xS66An+dkg$s&v)CjZD^qmrVQ>*0 z@nI+LUZB6y5X-mcXm40Q#jIJKKpKtuE6bt+;S!z$bCj`U@mE)#j0xm341wPwv3^u| zK(%H(0#h?@6tGV8fV#%?N}XfG64D94KH_C%&L?>O4zC-F-3^X(7mPMpC5Z~LVr$V{%B%7`_S%qh?j&kRupeDSkV zCgsFF)WFCMtE{)l3oci7J_H2O52}--OpfOqhSGyv$n-NDa2t(0L!=cG|HO>0UIzwO zgl}lqGgI#eMlmQC2KcMVy((p(T;m^3zyPN^#b;lYx%4u{ilENC-ZoS}2H@MGU(dYY zeohSkXMc}D_4*Yhim#sZ$trbGTKi4MF-1*|HPp^@EB-Rz8%)Tt!<_Tp{$b31Zdb0`?Zgn2+oZ z+F*yQ4mQ&&p*q^@Es2LV@(^{{&NjBArtB(c5p1q}DPD?o!XalUz-F>t-qq{tE#Y$I za5*r9Se)&XgIJk8DvTVhk#+D6y?M8ZAgdhtmC2QRT#mGcQ#%3YS`~68Ni4h^`JyY4 zm6Qkp@_tjg{7V5v+sesXhwgMf;gi#axzrB3ZKbxO*R06siN&#VR$Gk{C6=Kabv3c}#fdNOW7S3h**apP+F8(OI|GHLmTVE8aNAe!XzJh(jH;cw~>k%UfitldUj; zx^6~qm-B1(sR$%1**AS`T}}njHxN}o*NPiutWfy=XJ}5T+zPp^*X3AdaPw6H3fte` zT|0Am{f4?gIu&4+!M)s5~oH5n4 zlVfr%cr&fUofi%NYMnFpiBZO}^!J)6SoI-gk#z!5BX*Jc`|gyW5p$&iBWRM7oJGfyG5Zcf>Vy`#x;?8*Jb%#2UJ`{*1u@F5apK=mb?f~z+Usdqq8OYz}l z&L32Bo%rQ~I>Ikk709S3oMWs{xS?I{>?ncd)O8M~=e%1|_62g!2%_d(kkq1f6mU`6 zr@g%5CX@hCzO;=f^pR39l<;AD1oUQw7Q~|7T&z7gwLHUi6Vuw z1AX&Eu?F6W0ArReH$hmvLa|`=1a$KL?8Y{AW4{ypg3N&-gH#*qkEPE63biT7to!T= zK_Z?(J5T33n1UgomD>N!&m&}!=Gs13#yCBcTapIHHk{;Rcy0kq;V>kz0-XH9R=0Wr za?=yclynL|Scp`;UtEs^UmPo6l zr&jW!#}VI|sG|8u=e(zOApWwy=4W;j1u)7BTK-{$O+DHgxlu9R(~k@vY?nWHFEt8BW$snQ&q1mcy&DC_br~vAZ+Ns zEgPe<>?1wE@%SD)jOsi}@hT58Ao{YRGs`QsqkJyP3Y(AzH^GI7D{;2+1JQ^rbVuuA zQQ|ma@3nQr&NVI02Sk)=ULlX4jQC2-=@2|FZ~HSrztjT?+jGr3V;3eqP_}ZukuRfM zaPuExsQ|8~L8wFNE;nJSPul`IDrNt5Z+r~_NySu$p}tITwj!tadFW3NxFT}N7;gDx znmSl%oH2;Dyfb+&sRbwn#BEykgs!hdy~B|vWg{?jm>48TpXQdgSOoI zV`OEY`%(WyJRSjP7!sWOiUL8Y>E;i>rHvFKeMdrt-mh*%L{_LE*>sdFw_CFvG9M<5w06<$ zG|HM5R!>{f$qtB^=~7z9ZcW}vlA+{k{qdvGj{a|a@;sB?Ie0Z;v-G$z^u&Nlr@H7q zX$(?iFsAFNzHP~8D=pGt{2;`Wm2DDhf()=O4Z3!|WPwwYmlr!yec6)BIaeOPK^Ikk zNxi?3U6GMPqs_6>pfd=50kzq2TrT)qk?rlx2jLn)s<=glN{VgeW)@A%1ER?~ieHTR zCs>=&UPN0r9Lf{$ieYQwLtl^YGga z8ukMbSRBI|Mc7}Rbebmgb_lM?v!4=6$3-f7z&6xiJOZQ#^X~!W4 zZU*X0>|uc7+0T1?1mObkJ~|OlO?3>eICR@;m4v4GcgKH*i~YC!gYl&LCrzQ1+lqW$ z?cBKl^-2rYJ|qYqYl>Pc%oEz`tfA$qlI`Zyzq8e|vv}t5y4;zc3uTF+03yke9on80 z(tyH|%%K+6<=6q?GBa%%v%fC)4;)YXV|Dy($io&{ze!sFzFDWp{QKqT-YD7;a9(@X z$#%6f&z8|JlPRXL#T5fU;wsdfs4^j~s|Ak6j9HX2ke^pO2Vmj+L_*UwbF6-7!cWnO zEtfWQ-5Y1PC_a2(3jVse3aZaVjkt7ya*AN)Dt#R+jAZykU2C2Im6t(3CQ8a`NUlVV3D<)0Ym{-|)Cgx&#W6N()WVi8B0fGE9O5$4jIJlRPA_z3Dci>+9 zKRB)bjdsY$wC{%V27_~-WMd-1B0ps7zfi2j;*xSym_ zIVLGVCbbm{y)NlB)f0RF0B{~d2KxCk;Bz@4Tn1{$ETH3~DQVmPX)tWdFsDvNq1aWO zaKIrEAPwbYynyxNM`1Wzeap`dA z>m$qft$mR1nRv66+8VY-i}u4&O(UMB2#rrhH42hr_ZnpaOcszYjly%hj5oVCY`f;j5G)(>H^P&?paPr8L(E0eX-$RM|cGVQV?Lpv-|`Syq3j{H}y z^{F11C}=b+w4cg1?m{;t5b>op=~}!eO{}7-WU2;TQZOt;W}E`eHqz& zp;4piBmabC1w&Wn!@eLEu{^Ie4%d=Mp`j0L*p3`z)6gQ==>YWWwl~R#1}>GcL#g-s z!p_3AzPf}Y_YrB16Kk1+uWf~rk#hif@`C+sXJV$xo$sb=2kz*)Pqlk;^d+ms)Z;bpN8vh`F zR_elp+GckORYrhOKN}7%uRKz~$L(=nV}7nvit{4q46zKV4YyaLWr5VGygV=ZIlkFC z&4`m3`14x19u61*Gh!D}xYf0G*h#>yLGpub-nPHE!<2UJB&nDwc#QARw{i%5BNlpg zh?6OWl+b3K08}Sa;{Tw}_ub32@}S&-gf~<xhmMb))HtLy$_9wsRU*ee1-hjG0rMVdyE%i{1B6MHDB*;rDse!f*=poI?SHCg5eDv{}+EV(49 zl%2E><_smqUIH8DvwR%D21a;48pl823+84!YX-ui}rK#nZee^#|S|H$g zDGs)$Ln6j@!*T$rdUZ$!mT$a`6p}BnnZ1Ze%a>Uu3^|_`EZ`76M-*?f>6@zy4vON1q@`&^U|N zL3rmA1Q5IB7GLeiV~4P+3TlkEIX|q5r&ocTZJS0PAJ<7VvsBX-N+Pz6hw;;P=fi_+ zlu!)n0%c`gI&XYvf%!9Fw)qP`pmepe?}G=PctTtk~-uSsAS zi%AUYM)ThdMN?&>5!zqg7|iyk<%=z{O`Qf2OZaOtrP{^YH^%N+7vV25p}$sU|GnwV zTauOQl?2Eh{;in8Uq z^nhqZCdJ=A0PS4uI8cFHHAn`ayjZDuQ(h@s)3TCqx;M%p?WHTqiNR8RT`isY?77lZ zpf0ToZ#MoA6Gp~h$8(YQM4bUJb+5V&$q&UbYP~J>|%i3w}OP2@_nZ_$}odfR)N{4GSYYxMb5qx%2VLWkM z!}K#&*LQ@AM;{e|JM+s_k&feZZ0ktdSRQ^Ux7Ruu1=V0nL+QPmu`rD2Isg&cEj+y> z;G>W7Ez&5P@S}|&dk>pNhk-C`;=lJzZbofyKmf2#r~8!8ZtkeNKwd6TO7#TnZWT5#peSUSL#q99s$`GuNXm zj~|W%^zWuJXF>pw_|R%~q%wVGe5Q!4!urSdmO!-3tp;)a?r@@Cy!+YT&B-DmgJGeZ ztL25e>EgCWc9`baE>-MoQHu0_fPmXsor98^HH)xnTJ)<};D;=NpxOIb!>{KB!#7a? zN^}t(u!u-)^ItzqXK{jYzy!hQ(K{%#NWN`ZZ*2Nq4Q!I#QYV|K%}}1-w;ki^Cwd8m zA8bJAu=m~}^t3U=+;0nNV(Vm8sX)$W#oqB=OinCpS_mO3s0+dHHZf5aNz=_Fs`=M# zCF~He2-tpqFDB<`YkMDcZm{1N9@1_v1EsJl5dvC#vV*mc3|zvQYJSmV&lmvu^GZR@ z2&*=7xXHm(<-A+GUb~v?ZcONA@UhuaF@|wmy4Y|s-bfBLH9DFiaMTYRpQtz1F2L!V zLkDiIH0vX+nC|L-xA2zszLIdw3niV`}|fleujYkXg=bG5J8z~IkI`X3zO{ZaNp z$PumvAa>4nn;QF|`=Cn7??+h=KO74XX&LBcQgg};pkBlZL?8bGXs=_}E=LE+n7R1yU+ROB7xrSU#e9m!GwbgL$rXoMZkPPdTq z0VQu*&6}(vGO#yr>20-5HZJ|REKh1E_^s?*E6iyA8Iv>`Jd%kLc};a-p_0Z69G|V= zb+u!)Y`=QLI)&Mw?f3=l0rn9DApm#EHN#IDUP#Agim$63i!K6*WlF*bzpS&$7G|}jy0BEeXoos!&W^*fzXEFXTj*ff3OPiDNZGvDZD1D@~RwUOTej`KvT(?j~J zR!FCplF=*U6u$4$ZZZ>!61*GPlL%1F+w-2vd{du&Nnu$ zV=oxTRa$X73egELV9^Kek+ zL|K3ETs3G|Q(;EH$jA>FHgu%(8BV@V#!^@{JhBB1Tecg+C)LVo8^UC56@xw_t9qB4 zPy`<&=8aleCkZ--H~DD>(Lmc-4b$LVLx=-Yf#@Tb=e-fnd0tKkZvYp_HeOa~Y+o;s zJ3C-RMEFZxi^d~LLOK;C{OXyU19&pobl{kiyl1PEtuuy#W9eaGcXPZI`pU4VMUz%X^>@UL7s$Q3{-?Rm9xU?17$gn?C3FQ4cGf0oeQjru2PQe-m|0455q9DM3~)>%J!=!1l<^dKVt*o7;ars- zckQm;&z-&>Li zB&3PKMEQPiNSOW`-*NR+3ecMP*yiGZRol%F(n#_L>7)NXfkNO9hdWC4SjTJa`iEvV zQhyEvO~J43M8h;Jd7dyw>xaWT%iGU#7y5Yk-r_h%#L7Anq%UVsGyKp9Bc#ZU9QUkU zseq_et;|Z{vFq4JI1ei&OS(NTrd1d}!;S|O2&m&A$KZc`ZjD?Jw6+@Qg#PH#mm0a) zSNpXC39LdR=C+g1Io;S!My64Xb-g2ve+5Gm6SRAPo?Q%*;(z%Yk;N|n;;{s#=4nZi zKp7MqO_O8PMcJsp7FZ?W#&b}Atdb2t)@YwEWWPvJh!%GUV1=0ixt}0w`!PdZ%N8qY zRH{5@;qrWrC2_US*@{)vbVG6Cm(?q_kCj?1GY=?Vzk+IGluLed*ZAz==w!z>JJk3f{ zAX>KK@&O{7xo=Tg#o2}2D6h%K?nV{g<-%>)!WZNC*uM+y> zHKBMu39}iY+d|0M2{!tIv$af|y?p~2jKM1KVAWe;jdQs51&4KuKsnlrAQu1vg=68A zXe@qJ;mEuZt`4F%2}78p;%&PAyH-9~enLbYz%;Cn>@mpb2AGpkI@{l4Es+_vyDB3b z{N-gwsE2ETHnNoh*+C^>*-=$weNId(%Jy}CbtRm$67HJ9NOy5Noy2qA+l=ToD|zZm zw+}xJK1IWhub4c48&QqgAt2G$$g@7*kC{$Z3&j4){J}mOR)-Y<987Q0E9%VM#c}*= zfdfd53$^1`i+Xq$BcTPc*?_$WlI)|^MZ04FxA zUWxBy{8r*YP)Jee1ZTAF!ceL!5}g>?mUhFm{rr%JBbz$q1c$PWkRV?-U?VZCN=TN& zSZ8g!*A% zUqgpRNFFt-BvXrLBkf*5undi^`v|{-iX}b-T4#9(JvjXyf4QNN1LdmRL&aS(jkbJ; zyqi`kpgm!vNCb#b9ry97>*_q!K2#9d0*?IurElgJ_+lm(UGdyY zqXt|FLT<*)bOHXQ8k@*v*QV#zhA9n4Uc#|cw?W0fpQcd$=An9 zIlu(MqF9G0e$65$BbCZ~w zdm*RBAXlM=RnZV;p@F&rGifQiG+I3p`&hvHq-WQ{-rf!y;;XU)F@}XBBK6#(si5q` zhESA@>ZSCk92AHTK@IVYh2`GH>3btt&HfC{F&7fbp0GW{jM0<%RO#KVw0iwxiTJs%p7x)0@dcJHr}baxn7? zL{!ggT=bclMTLkoFO;db29p3n=Tn=_ZBksY=t|}BjYzn-)JLIp+>E=H1 zKz6LRn;^P{1Rz&zfxm4G!%!Hm<91iBBwOqh{NjDJd3cl;uB{=sjy-$eNz&l$QbFSa zS{+cV5vqY$T2pynt#h^f`E?I)C-xxguTs5^)lfrdzVNO&9E%Vq7SF=WXQZcD*#2q$ zug>qKD-!G|0cuV@pCuS@%3qEwF06FPD7`J#KW5c;0aE-wTfP4wtx28~u`v^MpB?18(ugSXoIq7h)!Vp446es+#zVP}d zFvX{aKzlJ$*#|4g98@Q?1s-h~yhi=x%(SP~@SjMK7FMRjL@8vuEvD35{F5sbc~-pj8Qr0IF8rSC?b@OL?5=qJ^tJZ$B&e)3W%nQ>T)aGU@jd7Z}~e<;S6 zlp3Fy5&{Agp=uWMY^?Po;U)`Q&c;Ris(In1Ig4!Z96!A9vYN1RB&uK^UR~aH0>Q8y z7vyt-g{}?Nt{k{wMJ-k@mu+jag9`3sR_ylb@}592Or4R~q3Wp3%U5i4_8d{m$sm7! z`wQu&w(yksphQC{J(&pcq|jMSmp^eGhMV0d(Xi?V`P*Ry>&0x&V9lS*Hrw5frw;j_ zsX+*U31!i?GyS$i3z;!l2;Nw03M9*2Ns0NjndW{L7xMVAY(=SnHdq9?YeT1b+q=h5 zep=Ii;W6d=-}Nlh!HuTJ1CwRRmnnNpLg)UNfUG5a}V_!k2 zNkAnwoE5l4@yOV)$ux^t&0iENJ~(G_^j)jm?Y%rp{s3Mx#O&mpcn8XAc7RNs_1CuK zRpfCvzyk^@rmQ35?Q%!wE(3~|V#W~3TlpFs(g z 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

    5t>52 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%0D>Ocyj{OO*mcaMgq9^yqV3cd-~J!d$m z$m|TOdax%QaN?H{X>+WqA}s1#IEC!f3aerhk{PF!h5yN zaKNx;;X#BTmdJUjI)u+so>|@Fxj+c+T-{=$Tzo|$kR(v+N+Z}X-jzHl(`k`l8pD6B zLVk7tFbID^Y)WW1ys){I$23Zb#LW&>2Wv>z~3Zo z9E};W1TSE)ApRu-f)&u{6Y6gG%a*Q$j?J zngE_WYyQ~lUHAic1$5^X1i(M5N%e*{lz}Z;#4^{*s-`$Xd`m^$6Kt$lf?bT@>`Ynsuei!ZyBd;%t}_<$n4hQxW_SojF72=!ZMLQ-pS)do zoSeINPM9o*P)F~&pD$cfIt2WaDP>xn+qTMmiRq=tu(pz!#u$UsAKgw>6gF90Vgwtl zF{^WIlY&an;$*H&YwftV@T#|g{|J?8F{A#JZJM?}5rT)UDE0VVgmOBj%oh}N8?umZ zCnWQS&k|xFW6UTdiD=?07gIgi<+^Ik+wEl+;j(vWymnnIWNPSe*lFFd-KSM5!U<7$%vyDV2*Nfmq2^MAZ*bD z9d*t($IzjW&JEqxmFDm^<55yxoE(PxMWz9aqd*W~v}Ls2P%ll9Jl0gwXN{r(#OdpDDPf#`Nhm{e9^iQW; zhg8cwf1>sw21ObZe&t~^Fq&CJsUr?;AD9zANi8aiY54FK`COSdQz zsyfBIf^X!W4_YHS9J0IFXoF}a-k%9+z)Pdk5|sNVq0FKL;1s3eR)Qdw4h)GUif;r- zrtT6C2P8yMGE;K%seE`?iP1ihBTN;A1DLct)Ji@GuE*%~>IY%_V18Q)jqDtTc z3+$s0A7y(py4+>G#r3K$LhGL@T$t{ggGWNlIhh=+YkfxBwCa$`vJ22;c*5TIDq2k9 z63dr<^LZUdttC8`m{iu&sIqYlgh3!xVx=b7#EMh2Xn5UenDq?W*uY%?05cP~88U(f z0z53n1Bmu+PaefFV1hps1T~)ZYI#%#zi$~9r=6Y%0KlB^;6Sm)rz5iJI$NG{GydsQ z9AKoNJvk_}M-4zOBEU))zrzm=1l#uyO5sF=4Ym-SQFd4iz)sN0hSu5Ii>4LvhfxKa zVUP@}7Jbfkg{Bk3r+wZKv&-j7ze2%%x$X$1MS0kne&0aN-xfC6jZX4N#L-@-{i?eL zT73t`P>FKz^$0uQ6y~r--U35bC|8uB81%;*B{1XOqiCmzP&1vMD8pH;SdKCr7vH%p zJ)lQr7b4ps-lT7JNAif;QIUK37^5a>65GIvSovW`4&pBU9k$bxlc&jn8Fd1$@r@W( zRiQMClo<;n&37cq62s{+S0}W#;8LI2d-}?20y!ifh)`98!-xWjYat}hvpo1>N|RvO zlX{)YnL&%4^HM{H!pI@DVx4i6$TW29TyrQ6wc36HZ(F!2JcShKLzh6Yg=cp?<0~^M z4!sn%!#rZ+k3+#V@`liZ^z&|rimPbPXs9;*jf^6bbxq|iaXtMytOSvvo|&arpWjST zl0Iop-IZ=W#n66PMeMajc_>84tynHD-3qy(!PleutR)7Ifaey_G0Ei9j>80kdqqyu zh=^(CO%@PXl=fHkO#T>x;R}jB$)ARx=(~>U#x#vQnNRqKiIxE=0t>UkN`jxGKz3}{ zUopFpq3>)Ua!=TGA&%_)fgGd3?K9hKLPDn8;d|eUdQq&)@4 zJIcsDbv-HOxZ+WP)Irse zN=T-8>|WUa=<&q&S|Z0Sz$uq-je$(iTpGU0i#D#9G=iW!V=btFPnm8;Ua z#<&%V6-Dd!=L9b!vWucoLr&fxwQ5{{f_O%`AM|vUipR~#b2HXN=EQ^Rm6p>JwM@oRn5bR%E^=P-=BXt{`9 zZ!y0`+@vWM$GrC$H4u|3O^5`Byj(gu@nLA$}qwL7t5sO4*6{hYE|EjYB~p z#M5Kqc|)ElmJf2vLQx-06}2Z|7EB>QUs^`hC7`Fx@T@=0rw3rG>wMMn4&`x3ZmwmtH ze9xrEbjF2C3nN043TvpD6c#15hy^f#wMK)CdhT_n&gK`hdZF`ODMvz+%<<#u(mLCn zbUu$;7kL+HJA;9loPlj`;vo$#av~+u(sc1#JrTuthX^38=2f!$9DHD>%=7Lezgu>1 zA-e+4TEyBX_==;4pVb7AwaB=lFjUMKtYC4B1Z#>)6Sqd|>u2S@=&>3kqo^@4`Tl1T z!ULN~s;lAfiKS$yjo3lCFeS)aqy+Nhk*7;rFS=l^zs6ZicT&L6(7vE^R{Sn9*f=UR z4ZH=zRPA3+mN@1Gp=ErOQn1?!Q29AW+)Reet;U?}Q1@RXMd;CjQ>n|PHdt?J(=*&6 z3Hq_07-0e_1@^N-MZ)F-G`bj7_i6imCJ3~UQ9K)3#(_@>UyvlxHT2*UnwcC=X$aFg z3C%R|IyOZbJV_ibSQIll0&cD)YKmia(w#?7{U8k9E@vIjHIUjY9!e){ZqA`mjO)5BAn0YT-*R-Nvsxtn4VjU!hJ)*SCm)%JBB`pUCVA zLiy77()cv<8oU-Da+zfjKaP=y? z_l_28_Yo0Md>G8PF(qBg%uxm!V)5+fDKW`!mBA8k`>X*%Ct`Up3FNtpWrs>v_wjb} z7a7x6KPe6;XfGLBXTN_B;bttiDB-6+wj49vsW6$@fyhF~;@Qi9&k{d#vF$iyfwEt0ye$Tba+Q;y6)M&u!zC z)51^ZQzD*eejcOD>NER%yQy5ka20msEkYO`YK3E# zTp{4%F0w6Oq}0LpkX-?MOOM)e^~pp=_!2>Qry`LZ;r1Hc^ymw z2@f7l(!f7K;UPcl_lf7J7J9K!C_@)|zd#R0SpL7wzba>hwIO0i#o%vEfooq)8#t*7 zFWKIGfav(F*{xPgE528kHx6>cm=2DznH~x<6wpjc&-*YjJLn~dp~u;>oi|3oKS2y6 zUDBug2e^ieMt#T{pm@qxU4J$_;^)LyYU#up(v30*#|UPLnQ~`?yL+{$4iJg7YSAQE|5PO$p8&nc+@O3VIZ5aQCMNW{PQ6a1Lk8l*h>Z zn*{46B_T|WouS3-l8gh9(Y5t6p|;GNN|Oe?1$#x$qdGt-8tYWRD<(fM8mPbEF!G)U zS)wcZogCsJxiO5=dEc00+A;~bjL6^Y4J#s^sf-f-&dMR;)-elZ0@6%@Ei(p$wjgB< zEX=)Q6JZ#JI+oKimd4yD<%U-Z1^u=wnBrS|7^Tr0L>t-j5P~#j0fHPVV4{8+&9kGS zI3GlPMs&;3j8K7uYA6YoZYrKK7VF)=^UM#zyaP$NauE#AI8V4T1himn7 z11Jx@MF4OK$CZ^Q1`|Wc7BrE_Zu4MKOJ$_DuoTfsGjQaF#9^|qAmS3;3{#%Mtt(=C znlr*Jnlz^Ap-xUzAZOYL;oI`=`;t9xff}rtlh846$?@Oru6d4TsDeib+b)*Bd?k-9 zulTU;85$YBB}vE#+A{ zSl(VWu$Z_PrCx|08#m<=#it}A=9DL7%I&!Js-jNENREi~kpdVkiTy;_@(U-%Ce*9# zRehA;(DtUz0KM5Fr6OzpO21{t5mD4aCG0Y$%ad|e(o$59X~SL81HejRR@xMRb{=57 z%Hcwg9Lj*an^QqfplzzCqZ#GkJs$XuSPK$p;H zP?w7)9!-EVG8T$dQfXaK_`*diZ!R*6JuwnM22|*~zB&n=C|YX;-Se5R02#v#Su!7PNS#o`jd?$z^LNF`{-{f$q#}q$6?cA;`A$TF)=4* z18x9oRDFDXt(8N$i?nwWpE1axt4&GIJHHvDtjjrRN^gX!Gd3Ui=HEK{U1O5>Lg6g0 zZGp3VkyhLQhVxldK}6UM=w(7qoUiD=g2a<^aXkZ6ktfKjzHO9D#X4WbSZY)>TMei|VqYJ8sOpdn^#?s!8po8>+MYckF{`1c8x>ilCfB;0!69M*D z1_q26apr2*bQ<50N`Wv-jh$G3nAiX(Ko`4u1_FGm4>DPXL?$y5Qx;%TB!U z69#hl?+E+^#_g$6L74-g5IsVuBm$ zJo|ivBQcmz4c@?8cG3izG+xB1e-)oob)@`c5#v0K?clso2rVc@6^jBjIa~L%;_}b( zQdB`#!Yn2#6WJ;l5L`j>oqQ~$R9@SvSJ?x1OsCG!j|nEe^78g16I*D0Imdmkk4)UZF0)d8BVN>WO6X&hJ1@u6gCY`GRkczC-M!eqpBU!Ugz_lc1gf-o!>S zP>PaBPSgh)umCWfqSB6HdMI~}WZjuA7 zmV{^{Urscez^*ByM82wIjG^^pz`jeEdNAVRc2I8UcOhT ze%67Bt{bhygrP8(Y|y{(Fs_K`z@cY{0fbJXt5BD;42ayy;bG02Nx@XFka>>T<=sQ~ zJ*{II%mDKQ^Ihy?IfKOQLfpZ!$zAq9h7v9~XI=P}LoyAFTpC@m=yDK80U5?+@SqAy z#}$b_Frp)v0+A~Ht-CC~`ABR%;H8RABz12$7szl35x^O8Jdi`@!%C#1j7yUglIa<1 zvs&uk6p)Sg;Jcd-mWNrLLjyfnw;m!0UW}_X{U)fW#M`|bl#IF1gudrzN(2az#T5)? zS*ej>5I|8sF+3P9%#NpOfgn((rv_&Laa$hU>14pr8oczuMn|zo!ZCOkGeL_j(<#cRh^6k{z8@OI$ic#4dk z{KXaf;pKEJCJW-N6G*a4k7eMg!a1L6h$A)>v*dzM2xekWF{2_*s4S|S_)q?Mw0eUp zv?|oTl@2K!_7Pmr{dlXg)9K?AO8o-QXe^do(xpgkJq+(vXxaN z^2K3D7zk{;o>MJ+q>LK?dc_1(Gs`Uv7P;;tD4m=V%_1<>XQZ`7xBJo28M4x`0xfhi zeP}F!U7%~8(CD*$SXki@bBN-W|1fn^Tw$2?c%Sxpo+0!mO!L6>&61YACS?mWFiIr$ zWaMiPzPw0;Q}}wFBMVx(Z+QG^=OkKN0}v;L(zH={i-(uma#7J^NFXOHM(mTc%Mc$! zr>#43u`xiH;T;_T?NU^OkK(wsdDDa;%VWG=F7Pi!(k~I-a*2gIxj@j5rpDzt4>(mM zRX+$5Z*Zg+rV9LU1)8!)FAsgOBE`sDin(KNT~E(w!V?kW=JiuB^8#YJsxBv;yO~d! zo%fjsD4MCA@grE~I1BlJ)<^_+N`GK7+OCYC<2{fj7$!hls_BDzqNJ1ozjxtjWg0x{ zjDQ+c%$U8w7MDaj(sME4nhsUOR=445M{B+jV#i33=J@j?)T`hpuoT0iJ?zsw5)*lXUCA5^Az%r_icW_8%`ny31ns_@l`(cq+)z3hlf8Ru-&!Pd@n2EBoNtps+;3&m=g}I z)kiwm{E4K!;q%%W(|Q0E%ajK6{PLzbPIdl;wR%ohF+7FGc)mmc1T>O0TI&E$?!V&>Qd&B)*s>P3YWGG^y-K=DtuqVEDkL#{kaduP2C{al7I9B~^HA%~fRar`|nJpW75efyNziL)pa%u;?L`2F2 z0>MTBv!2h_v{g)Up;|I(f$l!=90r9o+?QBdRE}KnEeE#H83Re8mN@?6XCuToeLWx; zXfsYpJ#9uyaA-H3F}fwvhY4q zb0I>=yIZR4qrk~|#ZulSCL`@Cv?PcbB8o^}Xj+F2YYi=nOdG0#Qqy8&R_qf>9{Xv= zU(OJ40O<3^$ZZ=9pCy06JIXK|df^;#A+|7AkCT=}pp^>@1qH9}eg}u61Qq;pa87bv zHEs|U^YMH!K5D8Zj98aSY@IHT=7FT{4ZmA0NfdmAOP8=F>D07}*z1_*{rX5w;n(0@w zc#o(l1V>}lqW8w&^Z^QBJt<2;2-;qEy6rJD>}r{%cl5WgE`xt7P?SLDnZpGq6tEHw z4T460?ZB=c0*Z8iOu2dZW#EYbD9$rB9=d`S!?zr>y^$52lWVB1jJq%qx$sNhO>>8$ zlsw*cu+@od-?V#~EFeUgSv*a-CK;($)z5y^qIgn-p#uB3V2F{!J_VWz@Hdm18p);T zGwFfS6Ol0a=4Tm(3?U*zArw{VU0d?Nb$Pa2PvZPz)IC-3@#|48yx&!W)9(V%_Yof5 z8&89zFS3r9bRpV#czw178LJS=wD*)15#~Xz3VV+qCTuO@5Wr_ZlU7Rd{rj~%HbOm* zOKJ33Vo$>oWaM$Kh95s5fTPy3WD^fpPl`I^+AI-tl8Xve;GAciR|_3r~}zftLVhw>|WFi(yM6-O`T^Uj+0MPm!9fu z`ZBg!E{iE=rU{0oGQ{?cTB^r4tIK4#-+4kw2wQmY?1{lRI+)&ZAf0^jF-;T9zQ0AZ zxfT@1ge{_ETQfZp^(zZ=^o8Vk;>zs3Wm~^{WEd!sWr>8k{%h)KMg-7s4r!*IjWk#b z3`vK=NPes(obQ<^Eddnrl2v1Vm7%hV66m=l3Unu7O33Pref?WSNNZ)<#y9Z5F@3Y+ zvKt?2_9R&I8!_3DRtSfU zuOpodPXZT-a#AK zXmzA(YkmLZr=c9^0|Q9g*$x-K{g4xfK_k?-<9e8*G>)7=m8%%>JZL_(&FE+ z08%?Lwc~oR#jeoNkYuw(u10wnhMccX)gGb+i*wmkqITATSEs_SMkB~H8~$q2V0>hJ zQX)tio4Fol5Mp?RH#9{b_pl$Jwgz4xW=XUpx0d^&e)F*u?V+`2O0xxI@jKcAKS56u zX-bT$8IWMUE<16bt$|mka^-2OW7@v!FJ@O1ut3frzLd+2%0f8Jb6gZEKbgsAX zYt#k_N-}W9@TG+93E9N<}%v5VHFF`v;ERc1oS_Y2eXh@xL{J@(?e^ z;ObEK`A#(@V(17EIAG7b_=j~I5Mh_W9Fgnm6r#zXPNA`T#(Y>9<{IMBF4w#^J+7Pn zS{I;#-zTkdPA|H)TyR-sL>GmXg0m_e5j1RGg?`J<_g9sAfoOlS~$(_rhH9i$0>#`MZhF1 zB9LRg+H(IeV7`*zB7>*@&__6bzxAx3&z5B7&R0_(t5Ol66BYP9;?K;V>WL4kqAk$@!_a0s8K8IRA z!!ok+c*JphqR^kB1;^S7c%8w5jbVEV;_6lb2S%09Rr;4H3_vDPy?qve%sWRX#w$arDZPZ{tBUQb^K}prN+z@x3GN-*a>LPnwy3A zECV>8Qz%rgV18EoM!JVYvmh-RPeOL!CJ+O*M67t<3n3Y#3zf)pT?3v0JC4r+MnU0n zdrATEK7Pw1DZR^sQ+VpDq<6_JA2_r94?8)i6j+D>zC#qSBZ_(LnX!0e<69sl&?6RTMXwjf19Gk(r*o1usv7XTD ztuaGY2Rq*_jtq+wcdbzGATRPQ^XEn}O(P?_j-(ed0$EB)S>x6DSNdCY0i=<|7KzUL z{!^obdYQ9k-}}Y;eamqZ2vMOF`Dus$_F}2hFh0LowJ97F$R@DF47-prBotdzu=Kjn z|GW6$Z2=aN7V3&=*?gDn9*hggQMlspMYVGMwA0pvfijmJSf2~e@1Lr-2e&x6bnQ4a*)O>PlkO29ePj#bvP9~+nR4au@qmqn& z<#Qp(K@+e>YB#$E7xMe#l!IDZ(yWDcXTl>St7Mf-!a)O#>4zb2+2j4pZOPeaWnf#P z)eOGYrJr@EsS(kYOd40REB8x)pxaVaC(Jw+2%RzzPT!NLRUk`*pj?Woi1AXtXd&|C zP*&jw#-}x<$Xx5ZYVJ8ox{#@i851f)vZuT3YC3}M0e+6pIr+=h=fLT~IbXw@ob?dD zj!jd9wJ}%jA;Q*`tI@39ys6Jx&Vyr;j7W{!5S)2&@w*bZCSKHC+9~Ah8~`-)^|LS}*vD2-jOY_FnUFcKl zor*Upsw&tKU^~Bsg0{@e&k{zV!2B{A-?wQ79;I3JO=Ci8n*1juI-&K7>dU0WVv-f> z7Y<1)mY$dWN<^kDKo~hB-}*yV7ez?PMsr3F`=_lXq0=kmlAftD@L`GvWeZ7ku1m?=(cGe7(Tk!@AxiEe9)-OXn81w2!>ayl+0kQF4v z>fC6=$Y}CFu!YlysIS%tG5@}qHFId}ALs!DEaw*+YJL=XpAxuq5zf^#ePi%pY2Oz#gBbEk42XwSF<*5vCBz-7<)6BU@IT^h=nU^b=v)q_EJu?z z{(8p;XOU9-(KeGzH3b_So0ZDK$=XnTLuR$XRFzesJtR0ucG4BIR3T2V7^x(QXck3T z%}HV9+QZX8j|EZSEG3!XhJ`CqpwoM1E8S1v$C-vQ(cp-wUf#-6Vmc~|X`(W(i0n(< z5C%zXKO>js?_D0kd9eMRS9ppi1tp5yj=mFAD)3NKem5SiE>}tFAdtiyHIqmw%));N z3Ntjv`~F74SgkMI5V`3$G39={92j-5J7g7|;WEN5C{Iy9&-ap!nO28;6o$MND2SYM z1kprx_)T;NY0!YBYV3aCMKvtLQdg=EYYx~ae3pz+=(>O>>yhHb)Y$xzNN{Ql-YVUU zZ=)U>6^EaLS(azSuuQi7Gl^ zi+4%c%|q$7t9f*zMrE$exb)Ir>cy3OnZT7J85@OL&%sCKMB2n)!L9oS~b>u|Qql0mjT&$@n17TTG=EcPopDx42uVnPVJO+&MddwPT-AibD zotaZZ2v~F%8M!Y2XVcaK`rV#OMQtAMVVp{Q@XfI*{T-$orR0# z4QbhJBPZ4jw*gu!s;s@cQcc=Y=zNq!!(PoV=p6$k(3K8FM*m75d9OFc!KgoxH1rX^ z7X{zsdMXAP?uR-*+ne^69cd)8Dk_pa?pnPpWWXc;$90@)#w;10isBLG8Mh_Bfh z;MgsjEm*7{A|&!6jA#cRhxs#YI%zq*xZ`k0Vl95aY$URjbBINFq5af=RGyTvs;$7` z`rJx_h5Pr;QG?QhhH{f;G~^{mL?i|?E5`hoGOI%2aY~+4-t1}bC8QL5f+B-P-UZ0< zP9`fkx~;~^6o&$bBbL*Z0nw{h0*w6Tt z>+&xNg?0pq8>3`~9f_5AsV>0mphDAIr@mwO47IvswB0rG)m3{3%wWNT5UzW6T@Xx`GLIKVX>~rK?eu-_%LqVvqLZn;CWO_jLO=|Die>fg6k2m?L zGDhTzXg(pB(A7NtG#hh5$y3j^i}R}9M?^1tEl%?m&HnnX-I<_#2_{3E#q+_W4{JEX zaZUSUdzn)8eM)2b(^}4`N_q@~cx4yu$mP>p@C=*pl(~F`BaZ+KLg$P{q z!AMtVWwt!ZR@J$5m)Ni3G{NL(%g>8o%db8Y&+WqAD#y{n!q9KdJW!YcVv|!hW#hD6 z$PqvdacBC+z7@psCXeDy$?)qLLJIOr9IA=XBxeqc6!5w-zC_xXXVRi>5jlLS6mc?^ zXWAI*DqeN5L&PM2R8gdzL;^1Pgz;}g&*<5N!UddG7S)-~K%`&;Q0>q-*7$^)ikf8>xypcnD z0$pNkhaB`usvv+5;viK2YLz^-k&n=-0L|t20Z@HoEeb{XF!WtVTPFdam+qlrFX

    wiD<2bi&6|l2aHkvm8qCee^}v-FtsLrXU#_)S|$QOFto0t*LfoiB;wyJ+MDjW?Q$x1`J zTE)Q+F$p`H`Vs7kBj{}S10|cI8@A&u8m=_Pvy6BYX#r=c$LC|m*~+hJK^f4Abt`Xo z>VbVptJ~naMcEaM-2fKHkJMvymqh>t)SG>35{=E7efqyGN|UE>A_ORy&lrXzP~GH^ z)aRR$GvkN98w?(hl8_ z*Vp&aWP9T$%?#Zm84%r7!35Pp8M5F2T;4H$YR&z~h%j(2lx|&NHl46ZX;n~P7277|>q z-E%^M@p|YPQ|&`hE~(wb-HLaMt#vj>7SI~lj#4FOs0pPoyhOglMK zm4c?L(_qwihT3giYbjk8zF#Y z1AlMQ_g}IHa5B3G!nfcZys;*BW{$H=gKk3Ag}y=-$I;xWjg^y*T*X{9&B zxRUO(Vsb*TFDE(T6Th3EnlwVOrYNfoVzu{5ze5I&W()wGg$$+HnzKjA>_8Cv9$z+8#@qEn1rTs%%k~pWgoaviISZ{?yQ)B{<7*f(qhIFCUd&k*H`G5!EGV; zCzXEmm-2)^O6kkE3Owb5j?;fWPA2AvLtB58Ch{fl^&U2>@XB#CBQBSLRs+RQLU%Sr zaaK}0DT7@A*!^&xn!{i|t0yp@2;~IsrbI!`5h{qqoTBm)L#)p_2^%^hIkYg} zqmgNpq;&vl*2Fwsa3;9A#@}kVF(y^<^^-h|8W;l?$c;CLYWO2@j4OU3>_XpX;WFuT zj9{4pD)+d7|FrF++$(Z|RgYv=3KP%jl7kz4b$qYB%iAEue2x-3LaP5dLF-e;^{jrc1?&-~I z4!SIar2s!bz`v^=J2~KwBy5UDW~Lfd=x{m&O$w_Fu9b%if{N4%HYZy~+$xe+GmNX~ z4WD za83ENs?ks|8gJRILBB{h-e!{;7-W_7IkmmJ?A(gecv6a^Q*k z#z1_`;@6w#7FqVtK{7-4hm2K_8O9bt=Mtp4=S=N52avg4h#$>XnvH@%RwXy7y=%l zX8;DuO&&`0W!r3IL)4d|wkJF>)PVW5q&Q<>ip_$iuLrw2z8Tdxtt`e=BO6H*jVBQW zumkRWpQe;nIZcp{;{1QgV#(bqN@N`6k6geEoJJz%u$yCD>YHG*aMqZDjP@|FVkJW; zYe~F6q+SvB8WGh5yjGv8FON6^TSgBQHF!@w5={drO5%*gT#@$+wrS^d!no;aBMc!7 zB({P4qsHndcJPTWL<3yZKP3lVQ_|24mT2xBA$;F8v$s+$03<|hQJ21R2!++REg&a} zZI8kkm(f(%39n}KmrV_Tk&xr$D3V_#*a|8vH8@k}#NvF%S?G5c^vzbxRQ$~A-6pM91uPVI-oWB&-X>pKR8t`mm6xiIKr2Kvn1tG!{8Vd2`y;w0XP`MyTb7(E7#E?RXe8d?^&roLDz`B06l(hzG+$+VGJlbOjLMhFnW>T?n^bu zUr6Xk=5MPrnRO@tEX8AOX9ixJWDXh}H02c#lkyCdQnJ*`OnR&s?#hIbUUq05-Sdf;G|hH!9RYO^=EA)R0>q0=mA< zU?|Y^#yNz35#V$H2{&?!`7piULdj004nR-IcFuQKkq#c}m09vis+`gC{$0-*;R)3a zTL_;{mu+j8^@CES$71q@9Xf3DK2nH~WsmzS8g_eW63jw)_4(qcD4RV4+fEeA zq8?-fB@(8DrJVZd8krP{CI=P82WB^i_@Y~tq03l1!13^rgbL*#=vhsF$m*94ZU71x zyfEWfuM~%2fn=6qAh89qG_pWm{d!w;SW86#m{S^XDT?|yFEM>-%+0quKcTaY`Gg>G z19edJal6v23B!UN*C5zOteg(I3K${@kAEnmhnn1&>SJ~X^Z(iP5+myhp!&T49zN=a zQ!Lwz`zm=hkE4T@p$eOa|8r!$X%J&NnFN3fhh1|VLoCrCbC1(QfCl)cII$WuiFb5h z3A=dWI0$SF7RL@=2g*dAUq)p&t#UNiMf(ROLToEcY43jkOJ?Fz^ef)+szz&nEd1T zkoi;9kF_Ltn8y@LCaLMIy|&0z^kP-Opu1oAl}4%Nw|4}XlpQZ3`rsq$%u*?&5iLKE2B;b<#z*Q)fMtb$3P-r z*8}oE$Yw*X%X3Lw;3xvVfI}R^`pM2l8(axEn75v_$?;bi?9Px+wnD;E1 zvuZO4it74G!fFt- zdvkM%7=g;+f=s~_{H(AXe3+1NC|srzow5l+K>N;yoM9rWo=ym#H3TVA4EZ`INq0m2 z3ouaNPiq<|u3#_ZZOm_qpJx93=gC0YqWSn$`#qEV@dCQk3&>(*seBzS0nQGkuDpG8#uIUOmkWx`H&+gfay z-gwcQ;)lW|C(qqgwo~Vz<-ksEWY_EkISeTy(f9k_O%)YJJmrGX#O!I%y+tQ9V!*cB zK|ps2&DF#JUjF0xW)^&7xV7&^7V|u#LL>|)OBNvD6N!GmnK>w-(mQnghz10x77asu zk)?$6RK-Bjhv`gAQHjGOEddEC>F?Z}PIg66qg)dke&S!sY!`$QeM_~kz}B}7)1Cx{ z3;JQC(z`h}54y{d!)m5UWr3q-r~=$+wj{ftO{E#Ob)vt%cu_>CB?rojUOXF7>m%L9 z8c;L^$ot$@_Z=n)!#2_09O(AF$ds zIwDg$;!RHa2P8~eJMaEgUz3DLe8uglH_40>Euo3Rk!qQ19a-vV`gM4hTTCGVL@{mX zFc`0wL08lp3@s}!^JCh_LcyDVf6U25qN3sl3lnxO{lslT zIVuyj_IaGaNcUDmXx5fn=%U1PC(VD=^8irnq`-wC$fCQ>;!i@$?KY-kLvUPuz07 z5RH(JJ`#&g5(sub#T?hS9+K!hC0gZ;%PdRQ8ul#(3+gsc~R&K~B@!PbvtB zdPQI}=-{a;RCYPd+&T{*H>#g z8F41XmUBeC%Y$CKLbGjjOy_1_9ljxT@ewtp<~3t=6_(UICfIsobj1U%abBy^Y^Bvr z;8^gog&j7?eD@qv>7o?DTBK1?=6_zyINv!_*%@cXgocuQG^HFCH>Wmzn9B^*+2fqC zfl(%`7SuJuFz`n=gN*svJhf~j&5~4yKCH?H0l18^lIrFMDz+pQBZZ#Aq^ED2O^T)< zAo?0}W^`-He}!=<92~i@DcHE0a>9J&;L>ZVs8HfnGv=7}#y$&s%y->sNRf1_N-Zhu zs%V;+9V4R7I7~KCt+)hZmpGaBtMW-+9a=?K*;_$){gx0?=mBstQqBF7x){gi5RoIl z*PX`v21d@Q88=mn5iI5*OmB3`QOJkb7)mrXJbbh?A%DMdsWC!jd}RnAe>B>@tkV)N zF6NMK#Jg}Whk!MmJg@UUOKoaB`kei~Bj4^N+R;qQ@HvR_@iUfZ^i21P!(u-XB!D|k zShFMXgV=T}Fawhi8&(*B;MRS>X@bh|S5DF7auV`=PYR+6Tv-w?8h_c_+yoL$RUC>A zO{EZ~)lMmoV9P#>1C(502r0k_i(_409Jm19Xr|WFjW6i?c(33pa;SE3{O(3TWMf19 ztUTBH4B!&ou!Qp><)4#hMC>-11UIroQL|ZJsw$QdXdt|@%twP94?dMU95~?bUVUYY za4cx&5?gn>P1~??f?`tuZRXfWwhv$d&V!IxahNQk3iJAQ`D*f3TBDYzQMzrA1Bbif zNb{2h1M&b*TVPzsXOiTfCUtDQ%xN`<8k04M<~dlf$cch^c7fhj{sGPbPr_HVENVs? z_V4eD>EY+7!w{4eJ;QQvwC<&y0)1hLKi`60wfA*v%7g%=hp<9+F7K77HBn zsqgjLxVXLz8E8TeMtC=Q3wj?$8;V$R<~QXHx+n~#Sdi~X{{@0O684A!aTJ<9Yf3rI zzRfrhwZ;eoCHxi~uTzGcl0LE}Dt;wznoRi{qO&f{B&aRP@Yy6wf=^K#QHd&e(jCCE zw<+Ick_F#u2-qrVwZKZh2ao6&PT?N0OHm6#qynagYUd_;xN)#Y6v9)V)fag=dlCLJ z`E&UeD@Tw>*6{Q)p9^Ta8e&^@m>CiGNWFl?9c@+H&=p1vMs@#ZCjhYmwmUvu%#CHx z*2L+riLO_5P&bIlsYKG4DpYd-^9LNP>dA91vxh0ck9Z9^AgKQtMwIY!e9d4XB3cj7~vtw<*UY-u)0r^8a3bPr{FD${G#oy!N4F-}+<59>bpOf<{e zZcQxO!_^7604PUgSTeAslM)FcKr65wNq*gG_)FyWC8(A0oyec08J2{>oGEv5=cFA2 zvk8ls&Oh@R6xbu43S;BbRadq>b$HJ@>^smbb@eO8mz-lGB|C&N-ld~qezBn;_XGqd zDfD*mE2b-=BtS{xHJ>F0Qz*uH8D}?dUp^B{HL#GclCGZqbRTG8?xcxJN3^A`i#`{+ zG*1oaz#vn8S838XAZ4!BCp`AQJ?Mrvm(Dv zpz)j<7#Qw*g{NHfiCYFuh7^n!h4b2isnVZ!medQ*m`n`=(W|WGMq?Jp6deNxXA^p0 zv#us*5lei#BYO;Z`Uu!1BkV+i>mZPXj2hlK;HEvFR!frLD6@s=032U^%h7xfU#x`7 zd1NYzv6uSy4okPx<2tZAPMyE>`r&JQY1?EKRQcRnUrE+Il$x+YK~e1;VOrlSWlS@c z^`j~JXi){ANXE-bUDlg-Jio0OMGX#gY^XP&h_H!W7Y;OyY0`F$17$u?cC3_i7)Bk5 z%|Rov7E!cQdeU4eVjvGw2DNdGSS1Pcq{&dMHZ@&_Tf*!f49Y>a?&zCi#4w3H^(PAw z=%S1s<<~=5LgBL32`v;nTn79Epx>Ioliy>l?d6)GoHUd(vaekgu}HKlH@U}D_Htd- zT17>cKFqG8IYVkGodvSE@NH3iTm2J6*sL#sqlDqU}R_=S>*rxKM+A3ZBg?IFs`5bPZ2 z(r6j;wj_ul$MpE4gnEeiN0EzQ4EHl?)kif;17TFfd$I&qKYq}Z!-RRhHU8AsE7Kk4 z=hGGl&K6&5+g0WqQw5Cg0gRw~-qkA8{5x!AvWuhL;CzAYV*2*|)oj|Om-a_aBj1wv z6J3lo4hDVKU9*5WBsl;gYQE( zre=5Z`!G99O_J9uio5gjmXHQ_a)xjko|!6{!@6%wG^U@nRBO{U@+NQ|)TD#})|p`G zN}@R}P88NT2q6oQCdyV8My%A|Usl*NWEG;^<`E!2n*xjpnP<^PX+LAhA)mgy{|x%= zdlAXTR)JN7I`li~U-O5n+$HQ+@+i%xvT~Gh3Q;%-C424sV#DDhk`RbzvffU~_)NfY zJoYh22WZ56dC(k}b~H>!VpO9Y>B7hWyq|FdxtQezzF@a(vA7<=I3TpsZC@w9S2d`Q zkab}3?_HrbQ%0koblR-}Ha-?=Nt;Z}@03GWdy%pG(ZF2WU#5+*3^i~Gq~av5OB4Dk zT`ak`H9yRR2TO)&xK-a(ty$BfujC8s*nIP?pTHXtvI0I{PuQ|##-SsKM}?jAtXHIT z{IB0>N?N#)&3HX63oZcfo8~%%|8X*9eH*X8qlkNE(u|KH`T!l`kz5(N%1jb> zQJ6a|e9#Z9Q{Tfjqq~N~e`?k>A#;p}6(;-(9jj%VCUn*^t>s3*JF8jSb48$=g4Ur2 zy=Ugi>A>bvleR)qmOrVqf;=-c0hg%=?)fOH$X7)4>FfGjU$VV)& z{3%hzaRg>N#GK7hgVR`GhrS!&WulaQjBQ!VvR?%kf)yTzH?6}T6!s>x08&0J%e({I zLMvb!70j9?tQlxWVMQSQVTNL@G{b0cl4FJ-jn{0U{Gjjw^MItVbLPi}6KDox_lV#% zwz?&)CrovTEd)7MMt-rgIi+zfW{ZQsWTZI-UR!80RBHCw2ZAp|A?xU(NVt3fh*sVb z@-F@g!n+fsF4`GG;5I7BmkP?K2slP2*?Nzxk+O*PKr2Xu**f_RCOj}wF$X=XH$G)w zFUsO*ntbK2lo*jXUbKUlXh)e@FA;5miI5|~8IQlhfr7kOYL=Z2b*M#>xCs#eGF1e> z@`JO0K={>0tDO17zHox*zv5Xs;ebKw<6KfAJ(yzeP>%1MA3h} zL%_sHL%MB@JTYKPcCCoB_c2wc&rg!fmoUgGyp-X0 zzJxL+0_Vi#%xrMfn+xZrN3x2=2RXKidYa=E{|KF`;*Kg5Xi7v^*dYfEP-ErIF=r7` zwQ>d+FIdI!_K3Z(94jVjZ}v^}@Q|`w3+C86BrlXPN`M7u+X5Yed(*Y@s3wsfbJXt1fZf#h94@i-<(7e~ zo)vK;MqWPlrd`MqNFA*1HRhT19L6kkmmP+K>{tnZ!W7Fu2vuDgz2M~jrxJ*GD2Ct| z%O2X`!i2eSx6TfT{rR@CAukuiqHAV88++68+w@rv)Im}VcY<34y5JAtwColv&VscO zDKDU@wMGsRt6)3GAUYjEb?|6ED&gk?C zRDJq*^ZN&n1RQ*AK!12<`b?`Av18~3f#&R;$&Q6lYZus9BZuf;Z5=X~SlI2#=^8W{ zw(2gQnS!uG{Ha^WR<))19XZ-m?-F4*nRqx!Yu!J>;sObPHKtcrjj8CSG0oA4t;=S? zw8f*{$DJpF8pdS~mhqn;2W8WAR2zXpeVW^wvA4&Z@L2}!<+QQ|EoMUtPb%KdqO3OB zIypwV^bN^R6rVicuv?i1axWvc=MDhd%Zpk6v_g6?Aq_|vD5nC(fijkq?XT&xJ z;c&DNF9)3PG-&^w3V&(nlf_35{gLVDkQ@?0uoA6>)s&{}RPvWk{q8az7QEv{5}jhR zdX6hdxNPKiFO5H9STuP(lvItB--q2O*G%Om)TOw*qn&&p=!~&*k*YNA%PVFI#j%#w z8AN&K9(`+-h8glePzBF^&O_j@p};@bwd)3g^;>P}NwTH`G9LS(OqLxIzNZ@X2`9du zQGf(e8ygekcJI$|d}Y-{8@T+Jus4}TOqgIH&is0RI^ zy|D*qx1zqWjyA4vp(prNmk4{YB6-RhAGV)wVfiVMFHH4^2=S+zu9{*wC)F#v+PLwJE%J3$OIBlyqz{SwQ&cE(R7INA&?u7&jUxx~oeic;$U)ijZQ|lwKu_OSDXR0M6=3 z6WCrgvWiR*ZkiWhTjqGo1EP*!yEqoCr1F$%j(;un(?u4xE#qBXcDxKL=ti9}uyfqn z6FdB!w9x0%>RVwp)o-MeL*aW(YtIXCodXAz9(EQNvc=?L2}qB zkycCuA*t`jMDLEj;0}lg#LNlH(BX1B!2Ym| ze76mCNL^#Tc98;yAc9oRoSx$GT_!w~>IG>407&Tdkx_==tP|jAtw-ZQIjD>@_pQX*T-;le(7K(nmr{xm88FzNd;TSo-c;+N)#=T2QB30$#jT(sgdt`k9+cSU5|SAv8=d+Dcazg9^;rf5 z`F{76+XN}pJFi^nBPG({JN2?CiPrCJ_wTiv+PhoQt+;Bmo}bbf1d| z&P-x9zw$tKsi2Tm3vDf+Cn{Xj63$i>Q{U6bEJC=1N65FGQ|#OC>O8Tt@e*hhe#@7z zapj43$%kTLB^h#^nsFucqLDpxEQ%!-en^b}DU1nE2_D8$qZ0%Ek;GJ+Q^P)fgjtS0 zY^W?hjzdPKfH|dbQY=e}bMwgqCIMe!+!D~UqtcTgh|TLL#&-q((DtJtSr+2)$;j@! zyeD>5QMe&qXa5-OBby}&Lf13c__Vq`?xCp+WQ94ALdUd{_$=uVPqFjRI6kQ~)S=<+iG zrOzD)WzN@><<^s|fqee{yEo!iWxHoFHvR zG0b6M;yzyXD*ng+9-Ltf=^I);blx- zs?sl++yW3<`G6G|GIUE(;PZU9GGcGVa>dUfny{9U{wjgS5p)W1ny}7#^?WylX7Zl& z+aD>0V+1ETj-?|h`%F?c^dMCB+gC7?qGCaYk3+M+A<7#8TW>&^5%U&pd{O?>lOs`T z7^Uec^EJ8E%&tkd49qG^U4px>3>D;qt)It!LN#T2u`CvXV)Hu=(>+nfA^B9OpxSr` zNlJuE$Rv;7dAOl(IYAEsMs>9JMw;eW9``Dz0dC#bpN#4%z4pIwe;jTn(W^3q=JN1R>v* zF`xgl#%)>FEm;cCc~GRJ&|~^Rf?%E%qb7A8?JqUOH8#;1U9|#+ip`M>8+>Lrd^{Wh zs>T|dv&Kkq#!!Ae_SncEN#!M!SXxo8uG)p3R}zTDklPD1irM z2s4Z^bG;Xnk?jmL7#NkhR>IjpC*#YONBs75k6|?at_2$nu=mGRzLI-`nZu#Zt{lvh zt)49kO%Ma4r7i~7J(3sfhSw$gf8rolIRj|Yh~zj&2o^YZibsb?vpw8P(=?i7$?CDL zL&b?UqArmj&;`^|J#o+6+%2rJvNn2hC%Y1S_&kRYn~;SvpRp??)YY7$l{5?-H2GL8 z7_UBguz2Vkq{&6_m9^<8gKrjpD8p*HmuVpS3O1y(vH~=>a5UL>h=$^4oEnh`=x;Hj zF(TjzhL~4xP9)G8z!!(8GEOuOX^l_;b$KR3REYyh=a`B%n+u7-YCkUwy>(*C;2gqZ#?uzLJb z*7Hf*vy#OWt#9^h)D?$rXoh4^lqR#SFd$##el&*L7XB$_ zJC=cF=45(QBECke7n}_KQ;Y36Kcs^1M>E|f!KFVQpbRO5SK+rRIAwwpiO!XA7orNz zkR#Q+d|i4GkV~1#Bs^5=6@1Z@0!>8g9nb3+qL?%9RDevpT}(5-^@*bd+^}d~RY4Eg z=}*-;ewC1{|4+{a{rD*}kag&6im$$?IEB|(Mk>HeRdbh0lgpGpjQ{L|6$Sm(ne2L? zn9hlYLbwut@8|$G>*im)HQ;#}fSgtnT8uLmi4lP7u;nsExx(zijjFpoJdTPj3KkTF zG%9ah&z8ZNgb$kR`;W2=6&v!JJmB@d_0Z1bl(c9?Qc!T9g)536Uh!ed2vs63i{hppy2*s#Q8}pkVE!iJ z3+@4W1RjY<)26YmL|Ku==m(JTmirg1i=sXS)}xnUfRB#}9jThp1JxFygECuzFnUcQ zwQOj^l10#?kwq(!2O)<7R2d#;2WU`oQ@hY|*$B2ZoQk52X5Wwkk`dTrM4~wU>WnEL zdw5)j_og+0mlJEc$3ZqY1&(90l&UwMIK4c|Bls2_ht6}gwxVITFvCjYh{V_~C)kym zP5P*j4srp{1v~u~DPQrwZ*@)ik1$mbz053Hisli^SCGJ4-x5u;2&_508570vQ5=z} z$S!*xox}N}Fqn@qtVi*>W3q<0o)lAz+E8naN6kmcnuj@!R(>Y{H8VQaKfqFxca+Jd z!SgMj01YF844Pg0y@wYCznVH5W_$$p-htyZdXGdU&?x6bpu2=2gA zk2MWzWc^v7X^viO zGZ6EN+@=NBi|tcKxbHPBGPpN14*6DtOXA>&WVEg9?&HG2u5~EGYKz}^)%zu)a|(~Z zQ7D0eOYG{#UQVD>3V}GCqORr(J9vouc*WEJ@=A94_gjc7OE1JA;Hlyt;5*IIK9G78p)xN2~w`%c}dfPP&pj)+-t(~M)+H}mh z=*hJiErlUj01Xx;P_P4!o~8va0N^G<7syW2%G+k~ zk~0_n9=@7HCa}Kvi})F+*E29h2lR=gwz1D*)EI%en36)nd&8uXk1$ILhj6l;&*^#X zD>HMXt7u#4Y&5r+8p0WYE`ryuHubthNdugYx7OdYd^F8xSu`srS*COqWp&B4KM{$w zq#en4UMLG#J)PfpI?_>8EsG7$GqW{F3+LtU5CX@Ox9MlL@)(Sq*^$Z+zZKFzK5f~i zJw=4Q0t@_9V93hoEFo~3F~5Ve(-~_hjvFD39U=je=(NVv0c;4{$$ZkL?+u>hDj?WA zH!HI~HEZ5zmCT2)!n|508Lt_0ZOmmZJEfx|RXr8M6;k%ektP{^Raw#FdEg9mN_gc_ zaP7I7_oqm0X^Xn3E%|~qvcS+8pufq7tl45Eco{_*4E2($g&N$XHgjZb=iSW9=(%#v zX>+glX<~C0i;60po=<=KDxD6LHw603AI|2cvPE-CI85M$iFP&+V#mly%bq4fPd_|L zyP=SZ-9{|0qbq6vF9zMjCwMzr6R*-)m0KHVb!4>1@OanU>d~>~Ab|4c(`5jSmTw>N=?ht%6lGxOSeKfMeo?V0eTK*-S41Gb_20uM8S%m(^kuYvd~A0^+eQ< zn4&#qBSTfHROW_bJTye1@4dTw+w<+dmTbi$O&|SxVs=j{a#slgMOUfJnP78ehC}>! z!ZpI%IIVX0wg)DT1nz}29l#Gu!62y>M{3rEAo8jblnqv!4}`Lp7jh8ZF6_T8_ikkc zBRdgof98s4j02db%JHrFJ}P_}$-bQTcmPgcFJF4nVOK`n+%GZ~KN|d&E6;fk+=A9H z>W8~+Tj#MqF+fvfEN>*KQ6Vow!UoDRF7%dGLLAQwdN(fm zmhowgK0c%YDmRIP=S?OKwg0xte9f|AhOs1sx)|h%N4T*`YNk%qod$MGdhTZkKPY)f zVJ&XgGl`_);=3HIrz9kAGIb)WMraD=vEd6_WT?}ETq-O^ek*e8Alji8=;{2V=VKx+fQGC|4$r7(NPNJ3p zM$!%3RfhESZ9d^y&fI@hjPff$rSid4*5OVpIW>r z$lfS{Efm4jiz;R~ICOmTF7cp_W&#hgeb7?oAhELt$|BUY8RD#;sUzX!56>7g!gTh^ zAA`^8kg(dIFLGvEGe=H1(68!hMjctuHOYC4PSJIQB*vpG*u40lLTW*OaC#cB?4Ph8 zd*;Kff3g}^biuUw*Lz;g^*ltUqipLx+~dk{zaVDdf6p|#TmhF*yegj7)-V-JtRrqw z#;m`i8X&jxEA*&zXzIu7C6*1=N@Sqot-N`@t^u6|NboQ>Zw6bjelQn6n{sd57Wgw) z_nkU)ZLgrUfU%QN@)kysB6_huA{XV$G(do#9M}^*BQstoLYX)(}@#|k+>LfD9@b*q3fINZT1FwdEi2qXs21$D2SN`Fzd_-aJbTm=y$QH7@32r zZdU_Bv8#|*NIPk{0)xnF&AkZk0{mb7h(E<4!z6vR#^oi`ZI(um{kFZ6LDgD8!~x^+ za-P?f<_Za#cusd7n0Iw7OVyEpZLfH@MuL&1kOO(z?-?sQA7CEgaG=jkbrVoptn4ah zF{(~CDQ?0oAhlLuuzNb+=-x65BKy&&C_G&LspPzsMYjfbpQD$^La;fubzmpLe%q}*0&W!9q6$M4oefd3 z6E2#gv!<{Y-`Y&m&UNMW+NKys@B$80b?{5{!PQq_ z1tFY&s|PSn`T_iBKBa4aoGDc_Rbi+%Et}nTtOp?DI!bOdJ~vVn=+JGA@ijDVHYWIk zt7$fstLFNsVRhAL311AFDxII>JUYdqY!)56(IvQ=^4Pp_HCqOO?%v3g76gYBc|CS7 z2!^V=Wol@8w?jZp&{W^l(M=nYJ#1&6~L-8mj@ zm70C*XUeBL#=(m-;3!W7hdipVP?N!HKXQs}#L|ZC4m~5$yDzyJQic+pI9mQdwP8wO zu}920Od*CMpNbV1C3DTL=eY0wtmGhFfhG#QlsA}r%Q>S+&>83M?p(s}(cT=A1$`}< zW)DsX6*)w&;m9YGKd9`MUO5U1Dt;aB7#)e&|J}N$R#(Cme+lbMOGRHLJftF}yF|y^ z^TqP-&>LvG+yi_D_vNi%{N_#Ch}~;0Yl!toCMpO?!jt!1Cb@mD1tU-7P&2jnJP>3J zSLOY@tq$=zhw9~_8@@!V%xn}IUCsgoVR2as8S?DTT~ffbFd}S$8YO&eWV$k7Pq5Ed zddZtO%8MU6v~1MC^929=`} zYMUpWW1B$7OR8wg9JhnhNp89d^}!@{Q_rdk?!Fa7!2w7rR@UE~d=8!&W`O4@!pWzR zViFO8kIDWNt7hXDk?a6bpc!gD%AsMeF*Nkt{=PE1odBLpolYbVRtvC*vRIqn5ou~FKI=*`wcsl4^PXQu%9Rm zE22Ka!4Rj>rom_W9suSEj6PUGzDG2$pXexv4CVm~B`u#NW}otBE=pEd87tF%#UZ7o zLjd|b8H%v0_O6P0!5x{M-AIKdk_;uH$b(;kpu>p!ayxh@c2CJHz6M$(fPOc43q+MWMZmP4d!<+1DnbwdI z`ynR;?9ojyBBo+;k{If=w}IfkVLFbfthJChZ)tEb)o57B{i;!fO~9%U=^0M{gr{(T z1`mRlu{pFwU#nVwR?Cq*vE!V?{Y=nE*p&3@zt*tuUJHWisQaPpsz8PXzXz68B=(6v zp!#DO`|2|qgyqp12=oJ_jO3{L(*-m@37Wu+D05gcLR?Po;*eh6z=1r!4ZbhjZ#-F0 zh4U3^p2tTLZ%60y{o0UM>Ez0@vs3nZ?f?HxZ+wmKh@xK{!UpWS6pdS#nAT6Vj#;I?`tN`W$-B*0p$giR_v>ZyI z%8Ix)o>wLT8I__Uk!hZcp3vlDE%~i8dVVWW24MZFaRCs2J!LsvcY;MQ;JD%kj2XzU zBKYodfIDAmsF2342P?5^>XnF_dz8GP&f{&NW8gjS5`#f3YWY!11t5Y6v~DywtIxY= z!4w6M4)q>im?bq=mu&qCpy{kva*VrJ0 zlB*P24OTfWK7h=396>~e4rijJGEonXFrAR8l9^fq-#zusTMG0Lil!>0=Z%xI+_^{Q z^y=J1exnrEYN2v?#jtkvlh#~yUFaaPsr;mpP!q}rP5O3^3)ZIZnoF~MqU+MzCs_n~ z)Gpa`rf*t_dEjQokDiOs6$~dMqUTgc z#kayT6iG%#Y;~WAzmr zuF;NopEeCBz*KV=$pe1+Ei^Dx}9Aw_Br0LvP!@dt&mcc-On~0%r<+g0l zsi0sAOVJ_}krU)&?h$NY9Cl@n_^e^#Q*4kJ30d0f3xkLJ+Qn=_nqG1bM#`!-CHO8E zkLlA4c(d3%vC#sLcofvD=^4osSbSGfbqKg5KbTnXJ!`&8L*!hgX)+FDVcxF226
    to&wZfu%#3)6nT7Zy6;l9k~Uao-z**@@@>gRh5K=%4TepY!z{AbDIjA@?=g2*X1L2 zw*Z7-Bj^NWUC}I!o{k|w1|=ev{!#A>;t=m$98*?#|W%CMV)c6wn9A zIZ||W>SqXykb+*#xk&{(ygp*%evfia1h!6I#Css_Qj$efbW90xr7+=O1mAwLYm(jqC6<+q-yIS$D>#`e>f4p&}->|zr+Jg zkr&NL*}(Hv{Z@4)Ee@f7{J^l~V8G+nWmCZJ&pk^5p$uM#(q@J|3NcMuu)O4mxtua4 zB)1OgsPV4+l|e6J-X?wECWjrj?)2#bDTL%=Qt{M&;t8uRM*_)+X5%VEJO}VRD7e-Y zW0wg-MTbyS?KC>4cUoDst!J-EyO7W;sI^<++KghMt6Moheg8{)v>ERpDC$V{X1>QGlhut#l)uTJGjL;1Iy!x|3QIOvBAu(iQSVPiO?` zV63Ik8$au{~UYx}(SpeMW{ceAkQS0Q5JAr_Ij*ynr$l{23>U@S^l;Mr;lT#CpfFGpv1dnbJ`eDPR2whQL^I2tmbJSLWH1 zWilw7P(p_ZYpELGn9BaqQB}{kQ9~oAoeaJGcu(hl*12QjI0SgPc>hnJMvl?6>@yE1wrMC#_Bb5YZpaU_{0+EIsCdIv>s~P1MPfKfaomg8hvY=%C8kw#dcJooCJI(%i&0Ot}7!U5n_Y|+VYbVaj7u-`B5;@V$F zU+_^I4^|N%N%0&r@Ku;SV2CJ{WJf5GT#y1#H99j&hEYJItL*tj1G~fbu>@ z_jmCK8E3Cohcwp04kz~eQUZ@$7(3%W!~*U{BE_-)?VZTi#oEE!%LU)jGQ9Gan6Pju`aIX#(e2POB}`t2TX!w3hiaettFUAvI0UI|dy|fiMIexjRQD_(MGf ze1OdB5hJXFcy4NqC<^2q_Yq;(X5_l~_Nmby?~=h105Y0tdqi*>%eJc1C4Mno^O^l7 z@T5cW7kCwF8_)b_kwaRf1wOK62iA<9SBSq8$Bl;3{iUX|pB9bSYG?yMrQp_NCJ&Cf z_&Uu7qFG8+aJOVGJLe4Ab?D(@kVlJ}aq}1gw)}4(Zo)tP?NC*ym?`fb8~ZvfBO-9< zY<|9?nWNLmoE20|k=wGoM?;1bW+QCt8-#eOS84pp{75M4&geFlI>ppCi_7)qJH&ml z`3TZL5z54LrI(Qp%*GljW$%El21rl+G z(H~wddjY}>A!W0uXqr(^WOWy=Gqd2l^qg04s%cCYx*sGVU4eRJoQ?oq@mVV@mR-gw zRQ5Bnmx`oS*f8koK14fGH%{{s52SyZune63WON{FtX1SPJP#;M za$5r{q9o0QFD7L?WLp;ULQ!FwYI$h)HrX~DM~op1Oy*<4un%bz%Iq(lx5&IHCI>|} zjrNhRk$k)eqeYz>0?fv}k>6Wncn>&OTLX5z~{HY(Soe`Vc;YoQzL!l_<&z2 z%`#L-2ZtQtS1AQ%na0IIUc;U}U&^n#KtXxfk4ckwCL-Q1Mp%*$!q$6e5RN!_`dBPI z6IGwJn7C9Zv?xjxhY(Er4l1XK9q|38M1NNeu95r7tkiON;R#P*3n6xL5IK38q_vCp zZ5&Bd+q2)&#$~cdxm0rI-PV5why&H$RMY%cgqilAmr|Au zjPUR>ub9Nsx9Ua%SGhDx+M-}rTm{U6#+CElPJo*lg~Ozzxtbo`pR{85y_h}Qw=4kv zdAl0~Q6jt<7ToYfFm&jgm^WccycDy%sAgCL_;(sh&(11AY4S%sKPABC5Z9_CXx&TJ z_!be;gn2Oh0_lRRwU+T-BN8KNK#|Qf@&G|VzQ2pLY0D+u?xlo^(c>5-OXF#Z@vhfj z2t+VrDV4Q=xW19=PPa>sc;}?fOREk<8hO5Fq$^Pt@tap@-)|RU@GDaA!1{&Mk2K44 z#mlU=ba#@E^aeyr(HaLjlH53g-cSG#<3%ZzU(3n?8e+AK{7Mh?n{T8acdUOF;iWoT?rc&aoXIVp~rdQ>kBPg=Y5yTi8& zm8Q|ifcSeuq&o57VxJLW{M_J$LUawt2wOnt~cx z(Y)mfsp3FmgVvrYjbTZf$fG34sHSPNy`4xRdQ6$pVEB*Z!(b;XnXgI~k18Oe6RXm} zY1n{mOLzM;F4mPq)FUhP*cX*_lrOLQde9Y6+IZp4Z7 z>xKOOTR@69)jdNn3K(X>Yv{h1Rl+t%Dl~GNFAFQa3@5FaX}a^@7IG{x@)N}PCHfV6 z%NY^t#Mx59e864WJedf@v4KnrVQmN2__|&;=7v+)iTq-h2<#{+3+jb4Oy$uyN>B)Q z(Xrc$I&Jk^9e9pjE6v-FZgnEq;NZOSDQ^vHPTC)49$!9@<(1#TB@ebyL#1K%S;S1Osk5)Xo~tslGv z7j#(7?^Ru+%r?|eCY*AjrZM&AmLY6Z#|>|cncNcuOY|OE980GKB9jPfkugZ9qo04b z!Vzh&oH8Su9l|jkKSZR<110pe(9rQbVy9*PbbjJg7P$%EMZ|bt=M6F)!`1?Z6q?|f z@6x*<^eY``^&|3nr=p^0`k{YiKZP0nYF>LNF4dLsy7X+d--Q*rb;$ubUNdsRlIxSC z_v|=*MLgX+)(@hBjpk?_j#l8Kyi`gG~ED47VPP-3tUFQr=Tm}DVgqfi$TB3*R= z+X0YkuLGhL2~l6&p%e+|Z53NML(>x-0&wndV3^p9zh$AW7pJ1gX$6$f$Vjdi4N9D$ z6z4aMMao^J#;0}KY3IvonGohBB&38*W3BsQt;x8j2~F^29Eyn0RXIuQuGsK^LLM2> zxVds;tw<+f^oEcO(4JtOo)a|{({cXs>P{L?JUKmq?dVB3i7Ol?2u|RC=s-^rG_mxB z7i(L52+zF`rho?53Zyi#vQ$Ub+{++Q$ijX5#TULnu_T%0}i4Em=3l6G-wL|Jyak=AQ>g$`^&=0 z6`l5v=I8a!p1?3W13a6@VqsVY*tGh}fw#{bkpHCCp}at;Djzh#+ip{QFVpotFF5ZtuvPgfy1 zSr9s|wzk@RCddloaj{X*6dOOUBw>`CQ`iSj>I5W=+?=~H`tVGh%yD4p#0bxC-N6|o z?F^dORacL&%v^Tlhew0W-XewV+==`paFuS`S0_n$9Si06kI>P=;eBIfqD!Wqsk|Jd z5bIxa^R0FY2Ayg(rs!edm+|Hj?J~<~rWOxl~){0`1SF zP@;ywN6?1E0`r#L(Ps>DO;A6WObVNXpbDZh4O*8wng$V123#ZIEp}!gp%@cRn_W84 zYJ9b0J{Rh6AAA#NmgAtQ88-7b z#K-z4Lb*iX2@hZ8v%b~0)pS3bLn?x*>`;jk})IlH>s*yeC4d`Lu&a zsEkFx35{}^0DV2|FTOuKW^_b){3H8X5-EC@TH^?a6Vl*0=!(d-X0giyI9_Sl78VZt zchr*elM)p(`6*#TkiqV&k(GQ*7U>=j-bY<0RSz;QJA>NNM|e6qb=Zujuk0YYMhu(} zFgE}liP#+|nmCyQ>6z;%DusS0+(z^uHD_81iPyBW;*up2`za)unUS!K%lq3$R(g7I zW}(6RcHQ-~e%(4F7Y#IzD^C3Gj}xFa{+LcuO#)J5K1L@_SqY^&42AC{TZ5sK@vLcf z*}^DG+n6X~l+5@3_@5y6;I*z`EKb&TSI?j<&>knc*Mk)^dZoMoOMF(&`H5}XFy&>& zt)ZW)eshXeh9wr%Xqj$)@nshk#Af72=Uaub{}yaewvpS#6j0V61mRp5IZ$nwYn?B! zKA2!A$;Qpaw|=?4bm%f#(Fcod%n$d60QfMGL4 z_rR^gUt%liVBv7|FVPE;rqRba_CoGF-{fRw99p8I|ojK z;7NB1!Iu2vs=B^Qpw^=9L;*$D!qz@^6b!DZfhVXN8k-1sKl0Rt*N?+Fz_0DR`weE8 z;jnO}^eeHE)NnmlrPqsI%8)2jDc@sV!B`L*;76*zw)j%iAvixLv8nNolTl3n3Ut%} z+R$I<-@w;~h)IIG_)Z2bDB>uSxmjk(X)@tzN**CN>!ol*1V-2M{gB<=+Nr~-F8sc1 zN{a6url#6COdkJC=+kWAeTo=1Lv*f^@2-NNfu=G>|QGLMqIqRWMC-KdZLat?*V<)Mg@)f zI%QpwoM33?4Avt}j57_;cE!Kvyc9K)lH?fOg!qVv?MHa2Kc zTl0ifM`k`Y-l*@Mp?F)NNKhulRRH}ZG1qJaprO9fMVbr+e|H-3oLDlbWh>#JGGhs< zj9gHJ**AffY7a#iaZACazDi!ZL+9_Zl>n}p?*Otsl%h{G@kb@*` z<#Xpx_yV{+ya&r;lD!wmo~dt(7iuQwU@3f$nMP4^+qcNQ2JS??0g4B=!U`eW5u6jU zUnM%$`yWjWZ@Q7tkcq;YpgHq(LEBxR4TgF(lvL5M`pE~$mN(Jbsoy4f2`7>5@LJ76IpKe)*O+9=ej$g~`~ zZho_4W~hlBhpsyagY5D^+Sjny`GTnu!o7hPNV2k>Wrf~;Qnn6xJn*&8Nf#Q4#7ei} zm>;J=5N-E+g%(fXh+_ytWubnd=BjZPZXkrWAZnfZZ8twz~I1h){6nrg5iA>U%IT=AVuWuww zfzL^Y+N=aV5nyfvr2$WC_!G)D}D*9*ZVjq(+d^eVWf0N1R2qV;p1u!_7JUrPZ}!=5|2?Iyoj?(QU8y3 zKE-*f*q}|i7RFI&MQYd9c&#~lQf_M5V32V96hPE_OaUEa;Y1tI}Hn|RS zz9UDNB{u_k96^7}>3UzOU(^8FR1e7GAO!c^T-$D3WQkVh&&6cm!Xy)ko@>DLVH$){ zr}4m|nx8d5kw$L;L4m$Sj~N^&iPbr*EDD?Q-Xo8Is656^JH-!GRa`sdIOv>ntRdbY zl3heqJ#?1eLP#CHwC`=!ez4@(kvV7_<$;D6|5zzHA7TZl_?1%a)Fo>|Z6jhLJl3D5 zpL7%8XyETx^iWX|P`EJLB04t!wcn5AwLHvR1~F$yj!vR`D^4H6Mj4?+-^r9q#OqmC z$_=o`fU@+|n;KSRe9SO_N(eJWZNS2x!X=JM${1g;F1!jxYHyW0y)$G;-yYmcuzHT- zBNe?3J~S6_f<O)S$OR{JrJ0X2PbZ0pK(?o4EBuYFX zoQxPpWssh_ISTRl_Q{QyaL7&(BG0At0D^TOe})xcDG2DRo`xuMFT7K}MD&UR%M;aA zqrU*>783|c6@8OHG*v1|HpQw+yXW`f1cJ-xyY(Gx1wN?Q!@fH~+lXhPhZliGpGu=1 z*~`DPbjkHgPZDY}+7W1vJra_-W)PpVIp2~R5*aQ`WT~>J7;qVM_AMn!v`}pT4gv{$ zwr+(|Rky!!8&^K89d74r4E@h?&Ijv6VaQyL!uSO1js!_GUCdGWINDba>crM@0;B_qrfPhz3HSpvt0=PA2wIP|%ie z?c0T?(84Q#OM+O85Q(yQ|V!kX%b4!^U>ogKE&ZM_8{TM`9H5 zt}4`xf5MmW&-zxI1=z*w_^BYq3;`b8|SwLtm`k zhyGoC$L*S2;+Vrur#!A(BL$gK10goeqWaJ@(l;z&uy~S!0_Rv$%m|prg-UG^od<=L z60iaXqDskd7N)Y5qC)NS{IF)7O)`bi?Ez<7C!a9@zlAwrXB7L`AxH=)%yiVe!6d)& zjvtA{U?nhBiHsDv-4`)QSn2&ZN3fMJ?q4nRyPEy_tH)XEkqL4O|o z@A9kwd;A(gWLTMCY2Dt=tbjA%RtPIMnb)%Aue|UtnOR}JnKkeUOv)#d46_dNC15Jcm$v-;2-_fxP%fVeml>EVX3En_eB`3Wb(}h3u&%rkQ|uo800R zY=3R|=mMm~uhnz0b@h*=zPQsSFCi$n8~$zt#)U;se$pPCWxPj2i4K}I*HjmoDEs@i z?Cuk{W&H^+rblB{5`+aG&RmTq)lE@sp{G*uD{T|68dne9%sul3+%!5Qf095W#L(hTZD74m^ z3p18sI>d;t&h%xRwuO#4U1&-RIk$_ZFp$&KC_ZxPl$~q`_>BmXXxI1gFg(ay*kLHt zb~uoC)m`JnIYpD~GPu4>OQjoduAMsq=vhaR{t7O^QFM>|W>@Qs3eLra`*xI+;UZM( zkV+99o=BVKb1u3gJaFyKyq6r12BKuYVnQ^=(Ag1E;m6V!Z)p!GN z&>AQY4t>+YA+hJ7_A7y<$OD7f!$3nt1{<6`%cfg5N3h4q&n69t1j=DEkQ0)&o#}WX zm$i^O@q=_?>H+g%YU_*2`U*`gJkeLG_c*y(qZ&}|D8|n^*>^`>C7u?7p3_>w$-CeJ z(owlM_7Bf#v3;Z}uazU*sWp#*sA=bxCXk+K4uUwZajK-55gInsAC@3O>H~k=Q4)?A zDFPr;exBeSdcmh=yr9RFHiP~uoM=SSuw5J_o`9oK-!eLh--{==0T*BmEWW-Y8B>xQvsrXOne@U<&ie4p_!pH`igrXh?V}DT~ z#8c>aR)uIvifu*F%UK82d|)-|Q3g7R@Q~iR;2v>6BXa`oFpo~6mfmYJ-|kU5GGCKG^)5^>grR{3g-gRx@Lh=rD~y%($iGKy&B?mH`*M<*C#$pnVF2Es}gw%%YIg2T4zYt zRW{K}hukzN=xbKmo*qQOhnb@aN|uaa`Zr^V)<_h)J7(c9T^lZFO5e>-brCy;;Dd5EQBl#lek`lO+Xtay@SAqmfvb`5exvV zYAcX>JLTe>%0c5`VlFqLX87V1A4QC0UsSpDTgMZ;Lk!FJSj#5_7d0;>(_w#!j6e&m z6a$RR6oeWs0$P&batM&dY-y%7M~?BAV9&HeaO^)q2V-4=aTsC;!<8>4dlmvLl2+kf z)d=YrOw7Ps5Ng3{nGYDrh#-lSr!qVwjw`0(2>YF|P&$KUs0DEZ(A3dkxARiNfmJH_ zlcjy+lfSPeBwpqDVT~&eePHi8_<0N;O0Hp0%1V_9Ohn#Y@>#u2fu=N9Ic0Ei^KKCa zN1z#;i>!4WkML4_9K&yhG%c4Mr|(Nuqc6^YFeCvmL8{pQ_&7=!A5qaA4Z~@G_-8S4 z76*CB+71}Kob`e`wjg1($f*-ae+nc35+p&&NILU0>5gKdkLat_JWUF!TKo{^ejFmY ze=n%8fR1T^6Pr4+gIMPFeH-*QV^K7{aV{=06;RJrQi_W|#b8Hh;Bff-c5|;+dDT>a zeivA$0{UEM|BQ_WK~a>~^X`OZGDGcvZM#bCe7>yV`W>;P(K=L{CHP_D0}f|HOh@`L zWFfkP2*Abg`M%eCn$wFrU&VT9fpn10jRb+KpeiEZGjxL(kd8|R4O}Gtjdtyr34w*_ zRa;3^0iMBOdFW6K-6bMpDJWzwg!ElwZh>>&hC>_|zo$Y#-I+ZOUcRpQbix-h=~4!X zukId-Rq;}qmbrCg>Fp>Jg=ZiIcuaD(vgxaw?GAMyrRfONgqC{GTr6xmWF=voDXQ0mgn<(EZC7U)RBcweWR$uDY zbg1Vn#qY>Ev&hm!i;j5d`Sx4m?R~esXhbCK)_H+*Kz5l`e=Eq`FW;)^4LgL=qky+Y z-7)bgT46?W>WPfg9?VzimzBv%JIPce*_CO+MN3{*`q1XE$C80KA$5RDda_ZvXvyE< z8t_w;)9_Ep%M|quZ*(q+r&&XW{slcQOk5$Zz}rAh^ijIW193At5G2s9rO)KQf78%r zSHah^ajz_=F{V$^=&m-dm%GJ22frUYs7ryq|9qH(2#}ECU2*Lmf5MymCWJ@$ps)|u}aX}WP@2&@%%lM zmf!6@z`r_*jo6U|!}4V1`n{(j&sXv6{d9{I$kRTjazy|qMnyg74>flEEr|S!b6hwN ziS`03=~7Z&IRV74FpoH|N-7WFX^0*L#Q8h*mxMAwAn)*Sno{g?)xQe5M>vNK_1mT6 z0Kz)482c6l4watyJd|YD0+j2@7Op|(8fqt%|pEFSAf zxR}{Xnmav}#{lm9W{-;b2OAwgwH~=WXdGv6;_h=|307@g7M=n`8xP(jk#G7{83J`| zd3$CFX$Ads?gx@~K5^w)=2RQ#s198c3}>{M79$QnDAccWr8|V!vuF1Num}?|8UVEzPhGso> zir@yXoFXExgfq%)Xg)^p5*qKTDlGSE`rC8u`%;;rqTBTcV~LH0?%Lr<_Dc|36ggU{XIGO4aYgXPW8@TR)7Jp920JwA?D??u)M7D$NHOU;gMk_k5sI=M zD;DCepD4(sXfE<8?}&T!U37(;03-PRm;=FgtWI|-Ywl99i>-EN;wGdt+KP0w#&XOp z{RMF%TK=W?jprnHPFbju1x&t9C@mwcQBYV;7XhawTU-D&7DWSGcvF=il zYtB3JDJ4ha`# zhiWI^UYBu3?(We;$3b=<+b+3>#c&tqz)~g~s!^PT-Ga6R?AZz$VU9q!`ElwR%PdI2 zs~}Qk<0eziPPo;G_dCn2X$f~r)R?{0mq>gX`3H2O@X(jH;Lz@12}i0rYs`MdiRP3K zvs2E3@7S7|%pjO#C79%6>~u29_*EgC%0k}q+FLYPk+&XeEU8D4W&*NxAY{CZnUauq zi6ex@L{Yy_4p@1Osw8bvk9}wAjCLGI@Cz}{T(k3hMn};T&}or)oV;E`R6V}eR2-oLg3w;(OE|TW)gBENJ9|;#`oL}Q+BJw57}lS!@h$csO`yJhwS%m(e)L3g zj?_-m80#@40tLsxpzTEN?)Kn2(Fr+(ERBo5Pa~|ZMR$qFX&}4bbrt|PU1q%NxNmUw zmx!dM9{_oYR5m3#s55h40sF z^{sc~A|aWT8byr3CF!^L91^QhcyrjtL zgM5hdPUJKZQZ_XN;Na{al*))jbqK>H8lvCgx_YS@z``Dh;03SldG`fMH2x!6xSkjD zN7ZA{p4xT#1*bDw41w@AUqvYaFdMnMk-9jLA_)@i%@Ugbrfj2!gzcf|vZXSb6I+2N z)X+PI;*GG?A>Z5LoDBKSHRjW+AL@7@nFsjaFpAofYoOrknt8lz;^`ng^Xig z^8^+g0pBa7&PSYrFN1RlP1*QsCU}xdfqkX3Uiq0_dPb7032DVe&bNOHEU**2ov38c zt!G0FnK*XL%YHPY2&)GDki465c(?#5$w>v}E(Q^s4|83VjbmAQ~2p15n6|D;LIJ)8>BMnq>^Kx6s=>FDRg=!PX(`V%`b+Y zi76J*ct`k~WIxR*2O&e&mT;E-58VuJAdI6CCq6w+s&&|Jfv-aAi98y9JH?3zFmw^0 z{)>(^nL2o&>UxEM=FtSQZufcL6P1v)fc4V_Fv<}4U&BNl_heYmcP5UF+u3lLQ_A{YW@Nu>T2LxXxo&!DG1 z5{xVc%92o;VfBtwxh9Ngkv8yv`Fc^KtfAC-NN{?jWDW@)jy3R_4D@~Hevb^K77f9e z=04UTC?1XrBq#e|M8C1AqUu4m6Y7#_%P(>|!~XRfPCD8r<9 zVUwVU841F^OR9z{kgd(8bSSOn%YlY_JW-RYWx#XJovH*owNQL35_8#|aGutmuq7hf zCPQ-enbNY-EOwG25(A*&mJKb|bu9KsUZLES{emBH<9$Wy1b6M?Mn3D>IDtdI#(<3)BTa&3(QLrYqc=mMTzr&;ZZ8Qd8waefaL6!MP$>w}C49}%HqIC__8O)G zw_^Tr$FxS%Vx|BSIAnz&Q3nD+f5lCBEqhWR`2zw#sta|IBB{$onjC(9Sqxt?+E)~T z&TYa%{(w@uhRwnhpZQ8mIf;hMc%-Pz(lSJ0D%)7K@3(oEw7w}4hb9H13|DCXfm_g1 z%J~9Rl5`z8c|lLGVRwDc{!bX;5ZfRwhqII0$M z=3XcOuZD)&lyN>u_&!QA-wh<5vpWd~!AoSWE-pCw#M=^KX@6co5*jUkdf@rDHSk)? zTgWmE4rXP;1N8|&45(7Gy9~AeQx+*LF#O9lkkM&$`&N&go}oLPxbXw|rbc9twB~(2 zNm{dN?=cmz8MQ`xO`s@Jw6xmK`{Vc|2U}oDd41kPFNZr0)$dgu@02`Q>Un}BHYeAk z{g~T0H*#lnVoSWdqO9i74emK5{MHOAKb}w^CUJ2W|^6V4r4&;BlhhFCM!|OS1b2jrh6@AQ$~x{%=p@YzRLx_uJxE~#95qHWknY@Da`0AGOME?sh2b=xbBTnfgMDoB>xQ!EV zDq_PWbyQM>&y@AWb}`ENwlq3zgCi7H%$t}%D`(50pfZO;qn86+k(L+~VeB`=sK!D1=2yov3~UHkDJ70W8-^M1J+bb!I( zU_+lR5yev|0~Sk8i8vhl=;^yV0EmdM1?V?3ZI-Ffg!zePa6JU}l@1tz5u`U@9dAL# zKg3ZC3KHaweE8{1va)cM9d=C4H8?vNKAA4lhVGAlc3}16(AHLz^6!QE{;LVWg?{P(#u2I2P!oO&ge1Q z#7acLwze-XAocCRfJQxiS7;-`2>ckV`OS&I^h+f^3k33s>#qRdf{ zPheVk(J8Xoliu*HP5o_cOOiz8gcCzGg?9{?+L9Nh2q08zB&1-JLKH}BSL^W}A;@7w zj$(>{4oH;6nO%!WA5Ns`ygFYwo>ud|YYP*;$5uoJ=`6`KfEm40bHuoUUr6y#wsH_p z`*F~reA&2BzWpx0RyUyy(T&L9F)Oywp0$!Php|3NvLEpyM{Zl8oOT6Kz=HPo=5K>`0E#pB! zzWa#Xl;0^T?mI;CwRrPbeQZHMqhP5U(qn;U1Soi-IwuYuUt6ea-`DeJCD^nIPnEV^;1Uy!R334>H}==p$!C6XBqysX4pys0sevGy#?KN8H+@ zD#II^nkAjkln=>a*(+Fyn^c4|hV7&)5{#vG>EeK$4hzbP??yrKD4}6xp|K$cb3JkB zDF`D-`Xc6LvNtCMOek&iuu(aE+aQW)*9;vzvW)XFmMz61*WjK~Ja@ecWDFKZ|6A)w zByoB!n4y>d#$)4KVUxNbp%CBRVZDn(t3GZo;|Cr6Jr7I%8F+%WRO$lOFPd_2*(9R?){O5P~*e2sscJ>yRTcA3~mgRCL_L= zIU!Y1K$N%cqvwM@rC6@z`P=eUzBVryRqtaUT~ znWAbiJUg)1<9lt5YXGAmdFKD>_hHb{JM;O>h&`3gj?$&eY71j+x5#W}yvZIy4MAd) z5QMX&X@?EB2`eNqQ`BN)DG{qoZ1CADi^R#)V2TmDE5GrO_BN_PhS3e z>>;l1HbB$ApUBI+ychR9NLM2tC7c6_c_gTdr;9hKs;liEc8b9Psh;Tgqosb0 z92OHw8z|}Xt%p?e6DN~iefJW5Urb#{bYu7&rbX2zoB>T431V=?$_wY^DM7F!MDl2P zBex!WHZQGw;O1Ur0u*w}nrQ>x;9jb&!$DFpK(Qd+N@oC~=^$HM0Zgxj2HvkJy9n`R zOLYcaVXmu^-O4+I=pJ(jA<-8qPmM-9(@^Sbq^U}bY#B&VNXY^hz}E_4nX#rp0Kg-p zhQFb<=6aDPzz_w!_wF$zQ_P;UM6kS94vRdnd6H6tKn4+a1~xB_%0u+MzE?h9-%Cn6 z0wx^~o)_m$*)25Q(3v0+*VH-5Iy7+^Wn6mvVGj_o8HfNQ2^3#9o(U85W2N9bgW;Qg z!7jQl>J19Fa?3lIcHP$RPn3E%qjciLy#9e#=^9D_)~ONf$imnWGd3_u^F1o8TMUHo zWS1-tr+GtE>mAgAy(g?=bLY2(u_ykU)EdYND1yEv&%-$-m||VUC=W7C=-Ta)4!C>Y z>7om$ffJ*7YpW|y4p;*UEcegNdL{kg7_ayrO0JsvStim;3{5rJOA@}B4AY?;JN2Xb zTEn(HXef|Oa4^=MZMrT3FaZNSh_>h{*db}&k>P!P??9T!K#-G;8lgp~(p22B5($?N z^L4y&3{?!1H>5`;)*Bsf4>6wF@n($5ROKGoIwq^JuU%?S76ln%@gU4`#015N&{*A? zqMxT*5$%~D!tY|?!JQlZeI^v-w)6XfHp$o8wnp;2ADkSx9a6!CC>zZW7VdWXOYx}sQy$dsKLqF^=qEuy z4^)8Y2m26$l-e_$5h${@p`y@*cqHU2D|CoCc-<*Z(^K6kt5vj3$8XsvlI&3?{Y*E8 zD|M%EQs0N6@Hm>IqGZXlGGR=>@6Z9<@m|L7av_od5Nc6fLyxNIwzv%?>z^LTLvmpbgZl4Qeiw52_gZ9#9k30Gc;wLHhlS1hh{N>=GIdr)vB6#fb4!;d zX8C+AL=+gS+7RyZB)tL$d6$F&$}Q_bbSaLa?9|L-CYFoD)_9Z%C+G}x{6iR^@PsOX z8chG(PRJ?#&LA{E0jjQ2^LxoFO@aa0Ziw}Ed0Cp|&49%vk$moCa%oTlqUV}4!5**g zxit(Z!~xn7aI9C3TA9AGrdhIBVq>tuALOTKM2pWD_>qQ(0^`e5$*INqC&HESnofWP0R4i5DTzq>$@3`~1WbAiL%cj4;=5`KQF<0D`pB5sHICnwfIRbe|hT0sWc;9ab;m9jg z_9?EW`E%{fx+wvnEN0M6!!q1p#Zu-f&M<#CB32~z;0+1y@n1MCURLu?&O%_T?<*Tf zx4jbaDd0K<8;b4*;RlT*kU^Z>jPu(S91n*4`->qvB1~az(b}+u_Y5RcVvI8Cx(SZd z&y?H^K?LVVS~00|P{QigFcJ++SxM^VR}giHe1ACY;IEUVZQ;_S>?xlDNB%=XZxD?F z+syzVY44`^#ggu+(yJ=6n;47}T)p zHZ=~AqSa95XLr0K)|p*!j+wcQ4b%qPCc-sbpZQ@TF5cYOyUg;UegI#N1?pH*gDMOYzPj>avS+}iRND|us2 zgPs(DmWF8PILJU(W)d_F0M5urgWYh!_gZQYFLp^xyPWx6QN95;Liws9b|**&7simK zOvxbez1DR0S|`B_gBo2|-z2rAe2+9om=c+H)D3i<*$cW_iZ@GqOIc|`<`7jr;0T6i z`dhpi-b%1DGh0px(eS0{zuVR}bisxhLIkE|z^hqAwn3TwXzDZQbWg8<tE?S=@ zuqB#(1@AERJ}G!OCKUUgiJ{R@`WQGO@d8v*$lqhJX!+1KzG_DCOXrJ>DGF#<r%vjG;_H?<4h*`W=ndVdaF|cH~FHOx5V~DrA&_H?Yz? zkTMYES-Kj_%nXZCvJmFY8Kg4%u!)$Sup)*6goXt64jHJDNv=fAHL1YFQv>5*`Sh&u zq041yWhU6BDON+#!+OL3ZIe>ON%@W(`(YOT7JS|0k#?YMD+QWpt_!D=GeeckF0n<* zVB7B_Ngyy6S5Y3bOU~4p_T0H@?2@imJY^k37Kq5eX=yy%Ax{o334_8CUeA4uA+;2! zp-v!}r>KyCht*|*@%~Ur@}O2Zm_>a|849HnB>JvEPX^K@ron{j5M8;oO^wV`V3r_j z3o7UKm=DS{06>Fg8m-}eVOWJg7L1ZgZkaVJ0r+fF<9lGo3ASKwQ3l_4P2gtjwcn_4 zaunsUTME61!%UIAj_xIG#+_xDH)2?IfIOXNH{(FA6dxuN*KJ*TR4T%Lgqv{P!^H4a z9m}>N=|xa(AV&zh+hDZ;&`4_~>x1)8m@#G>EVsuIv~-B4#A@`DIGzyfcC$2x!muop z2a>{@o;NHUjJ$???EVrR1r%WN|8Bhw4d1ue@hELr5_B42F@)N3sc>cL35T%^PxVtq zst|QU)hvN==e$8Jkfo*E)Tuo@PNj;IA_!O!R)Is8*p_mKn0djD__xx5j3~Sy^2X5C zy$oWdz(QaqXw;Rl8dg;(vnv`^_ySk^>b2)AKE(>($^^_hjBuYxpC34FC?OUcZB)P< z)Q_;)%cCevA3F$x+e^lvkhCbi<{}K18Rz7WoSF)4R4P-t%WRgInhMlh6E-r!_3U z^nsOynj$~mZVrpm5e6fs>XIpdx#6^As!&7Ft-L)}{tdU7%ajfWY~FNX(fUQO0KG0{ zJ`l@GvW3!)UoFChhGt_((UW+bi*XyM5Ch8~d9ksuAp^ic?t-4E>?{O1l{5{RkeTh+ zk0`)8uA<7K5&0afnwkm;`Hu=viSv=3&KE*b%@gB}LiLa!tDmY`te>!Lew%@X+F{3N zGE!iKeUnF_VMtn|N|^al&~an`?r4Kn9XV!@p;S?isFv`{%z(PkVMjKE*uT~lBV37p zt^~@Bj*`|_c+!ewA}msP?2-AqdM1Q0`@S-*w-T^uAUi)FtmBq7haO0mMTShj*=dZZt-hz(c;4DWD4>^D?bD2T=- zCIHt*nHi|t?m8tY?6Dy-4kCaCw{!1rz;Y=YDF?9Mq_GI0iqL1+uW-6?6d5x*hzNqn zu!1}`Vk*O#t@`gc%jdb~?6@6PKAafpFMM&vVxPF2D5musBeP4zFF=C@Edp z+T|T%4i@z;LV(NJ6F|$lsaR7(N@iUo+A|-pY2h4QwE~llH&Y<+nW%YO)BWyP^id>I z$xc;6F7XpYNE$=-A#l*#>h_%Ui%=r!5JuZAzb#)CfYtXlF1PHdiDjpTA`gcet`N)O zX&uOT2EBT1t|4iM9w!wiQ&Jb&z=*Xd6ZolHdV|_u=cB3_Q&b4L1jV!lNM2!bNaJ!7 z71y18%Ld6c(YXA)AqYq~kuV_{tVC*JJ?M(2xo(G|MjRFf&~=9iIO_9VWgcKKER@wX z?Lg$%fbK;#P<*WW2iQmj*HPoND@kU={8l;2fNrjQ&b4R973b*yx8LQyJh`$S<91*O zqo~^duXrAYI^75W?}IUupt;Be;y(=A4SRqU$ydIChC(cB=ORix6)2gZEs9O7ne_-= z!%QLdsD@VmY6Gh3@7a)B{UyoZc|qidz2&|L+pWBFW`zWgu4iCVBrH4`(1I{xMriyd zjvS2K-``?7G{Q(eAhOY->d-rT=<2^xfqDmRIB_3RL_bh6A)e?|8>+xwvp>)05RTIA zNcBeXdR_^1xST;Ktx8xbf#RaSku)kruM_Ap#GKA};+&g&(4nIiM+(w0VA7AZ;{7)N z5ZH00y2MGVNfbvz4145xz^tih7TpRajKDosxexh{UIQU9L74kx7&Fjfd8JIPHTjJV zt;fQc`IVCZYVaqgUhvRJY1IfVJ)2u>EKAD2uET%)OeG6Y)3G2gDVp|cu7Z=|8OLFF zM`qY^Dg-S+pAbN) zyPa{npvdcK{M=kn^youHXioBz2ua;udYep|lhR(LHfEAbg!;<$q86Lb@KEsY%;8iF z+ugpmoD^$D)8E&76XPoajL@DvY3P&=s>TpkYZ2B{>OYeMmBqXw?7InH;ABXYs)CCw z>c$#I7C4Ea1jQt_)qp<9vCR>DDca<&@}4r3l6bRe?YW4-4}tiIRw)nUn{ zpHmKSl{uw=_TB(O0W4$)8HRgMq&{@!4V`sNdw`AKI2ZLcDPAb`*UfC6s;<)(E4AEQ z6w6jW38n#|wH(_s){$SJ7*YtxwPO(C=orh#e*Eg35bjsdID$0jydZVKt&XM5EHkIw12}VkYc`QX{e@8aD~g zm}pRweNWd2F0X#1)@iCYh9k#xiTUP9p~5a-G`~rC10@Rw1sLx8yd(24AuaYKrj0~A zCojC2mx=vz%<@jAm^*f}9tho;{IF?#0o>5|?65b~`jbRn40>{DF!nry(MN*$O24k< z0em1jN8o_886z%{g*i6u$Fe->H96Uht{7%5jJ;jBlN;x@eVn2uOGkRvw;Nhdw zK|0P0@!}}e47ttdqUHCJuAZ%J;va#wG!VX(Jg-I262@E{MN6K*6$7fU16eBP(_#@)s9cO@%8L;T52sw5 z{|ISl@8tz6!Z0=D8dM8{;|CI*88^OTxrDu_+K`@fo0Kqi!xKt7L@z98Lc$}LO5(8a zDxF;3aRTqNRYwz8X@YescRQH95;iTygJ|Bc1h2;xwdptU$20}s)=hCjZYh%JHF}-_ zeHBw$D-ig@yedWuY??YZf7@EHA}9kc7#(aG-xHp?4;{W4Iy2FjiaD-1>%qxC$tuOs z(-OOIp>W_O=O{TJ=xA$5!tfQ5I;&nf7uXW==6jDQ^eBX^9Sym;R5c z_ez#5SC%FJ_b6%tHwB!`e`0s3IYFH6me=o8RYpcE0yx~w)KGPouGUCIJ`WykI4_K@ zx_1Jx@F8zU+DTs2&2_bFdVpqHS?fp^TTLzSpzf^-R{Lt>zMep+NVtTI>jp=gjeAie zpt>Mk8)nzodAmB@JCdNdI+>v)!hj;bNGqc_^B*~6NK`LtQH0VaOf-(tgK0(s(+*V; zs|N@*am1u-GYQe0{n$RZSg{$VoJs6f>H76_PtN?Bb;-iIJ7&8>%ea ze_1iL3lq6v>HHoOTJ3#57Z($&iTsXv%1+w8#uQ$W&U}x6~#GN4rL$;E|f)@cNN>fZpYQ153#EhB3#qb^pEnR8fV-7-Yg7pE0lRs zLI6Q$Xd@?8sQjQ0aqJMhY-EC~G`Aez6|i@sPr;I530X?p!q2|%{pkU793oDF1KewW zqZnT5-FG#lVug?w>s#)4=s8^7A4Bn1kQbqfC)(i`nFg?&MrT*lk?)M?pEdad%n0_Z zs;8Ubs+Cfv=_mH}Xy4R?*t|KzPCxU_E#~rfN$~DmOJB?}3WKP@)5v*nW&5>jD{G9P zuUqW(9!@)?!{+KbUcy(+rvb?uelJL(_eCv3E=42QB}8ya>vy$mfLs}@eD5$4jUF_r zu44s#P9oN7R*DKOLyo1gyT0v51DQ>Gopbw;{XUOX>h&}wa=@Jp4FWzR+I*Z6XJ7{XCDk5-9)GD>KtpO z6s2hQQ^xa5BQz0zY-5W^SdtPth?%N#isa0@D?tWttj^)+=gZq5)cjOpg;F-2@(=$$ zZ#VBm$rkW1QH9BxCCs}0S;o0tcys_})i#n{PN4XL5Q3q>vZ-xTTjr1CiKSvioBAgE z5ZsA49do4mjNULTQdRw>)R=Cv28ww`-{9Ns+1KjHewRXvDKIZ$wv2iLt*Tr;w5_f6 zJj6^bltSxDsJchX$NVZ#gP>w zcts{AzE$Ls1S!ytXipd>%LX@_XLAOtqZyRq&w(&R|t># zt{{!P2)4B*u*zucxg>_L9!Ky?S9bLjXh|^P$o@c&))i?*1VYWh{*d55@%=Ej z+ul%e680IWjhnEz0cMaB3|*)`TXuDbak+qZOS;a;HBgBHy&0hs zO0#K^jKh?-b|Qs0xa&K7Amc+xrwQ8)R2z-~q;9mVk@oXr)(&ngN=d>L3M|OrXc!|< zb9na4h&}p_WhQ!HXC-~KvZd~rQzOLSW&_IVb7 zdS0-N2CKl3S{mZV8zwI)mXRXrQ7*9jO}s6%8<~Gj@3;LYL9&!@Kqf{U8IYAD@iN^j zW`L8;05k4_SN#?rs)Fh$1YSOLlIBG3)iF{PLl>vWnE9fuD^=$7+H-hOWzmC zbW=3)jQyySP|svB)C9!961Q&8)6B3q5j@aDmKGA%5(W9~M2Cg?+sJ|mVi#D^)ofqA zpZjF`nx@DesRrI`L636U)dI|ly^&67NP=lj(9oa}c70;Uuhde`NfiILQUBiHByvJ0E7^M-3PWl0O?y<9~jM|vxCyF zV4}o?&X&%0etlTZ7e>%0q$vEQq(_oX4v8CacbGb4ATUk3Vnt~bccqABF?y+{w(RI&kU7>^NEOc@%w_Lwz5-{AJ%&TwDxV5vmnnlOktM0-|f;mab zN-iVNq?b%RLLWdEXbJ#V-i)D&2*Qg8*%MSt&GNNK!+ME&pi7seV*WYoh)MS}_cr!N zOEjDqC7IhSCxkgHgi{c4E+mMg(2Rh$1)7t-p-Y?fVH6$|uKGjNy{nz)1O_e#0c^>l zp5q#_!B7Ms--uZ$#75>-)QAl1`M34VbYb5iq7kS6;v!4zvkk8?un3Bw5@bi6nc=Sr zg2{YndahST>%x2o5EY?AcP|@0{&SS(-PDCs67z{btGN-=_{uN$ibeVy+ zGNS{#!SE*zHRy8eq+Pd~I1C`6NNwlq*f5^OCC2ic*p}$wA$7oE^$)r*Ld$&seIM0o4!$ zP=ZahO*Zb{WOo(?zazUmzOBpWWt2NLO$quOY&$11x>!~4t#$M}tt4(+S*9GFO6x%) zXGmhLaUN6-7T>)LFdeXY4lZ3~B0+RHdO$dW79FP9Fq+ukp(~^Do~BI51Q3=*Nyk4H zb%a%M>fM^AI^O6o5Tzln=V4jjXAN~|p|K!E#bDqvX3D^gNtQ7a$DG-N)W{iHqbzos z6R)Epw&^v&l7|U;*Mr1BPeE)$bXmRQF#%C?DEV+oAviZ2o_9!nM-APZ4n9HL zN%ok+G%r`tH93UYAczP;%~gAnOF4NnK1Bt{`xE*fiWMsP?>jjHh!@-Uv?ZtvBLE$6 zPe{}mXK}d@{{-+`ia4TKn9kFUjK_3L&k85XS*G~FH!~^_kOtA*9w9oE0eBl#8#UL6 z6zk#M5UO%Sk{wNP{z9_O=>QTw=)9bvky7ajqUU&-L0H?)3Sjow6j9{$`V_@FaO2-W zVw1__7T~9$EIcBB&dh7O_Gy^IniMhT*7brH5Y$4g#6$Hv1SGwJ zSAvTi>QU~v^kPM2J^j5E=<KAC9p>0x{1tR_M|Wr`SL|B*6jJVhyHD}^ zd@+ZxEQUgTo*x4ES87{?;HEV2soHnLO?q}QP*NHaQyMLEYAX`TI9i^keYi;OkdH29 zcH2{b36()m{C(B7B`>OhvgsI2QDe}}o#~4{Vu@2h&@}MmP(s8>2ELdts{C<~X?xZr zT7by+Au%C9Hs}q9DV)(QSl9+n*Dwe+vjD&>g_ZRtwFKP8_gW)STN#dO0c@}uK}t3! z%zhunoK0?CWNn}%-q+= z4HhZ_M#gy#Ra_1?k^~chIo)lYMOJKNuwf}X*eGaO0k?{eVjmsoYB*`5 zLoFfM1=^)3Nu8dy*=0F93&W*&c1khmG(FBi3aymB{;M~4=A|+zI4bz5xcqsT-8LD} z;fUafxY}tQkzTF{5d7W1yn@It7J_FGX>m52q8;;!eQOa~jQgt?16+jIU_hfC(Zm#` z)ohZAB^hBpJoZLU#c3-`4n=cI?E96xaSKG%TMmSk-bJ{P@LB#?4e#wT((1GE#Mo{sycfLRKf&{!Nq9K%!Y1%cD?9v=7c!%+Zv=-)0j}iXuP0EtW;gcNkr+ z)f62`TN|a(g>f12u4J*udPH+;Cz`onIK)u^KqffmtQfMrUZ6KrFyqAsD;k2)lt`$6 zpK}O;S(xMCMn>n|Ze1-)07YGgCY$lbUAg~}LIVJ4laba}c^?TS)0R{lsWsb6J$ z)mi)g%3U5K6g~jW#)_D*WKs?i72YBqdM~u~Q9_?kaR9Dm`<*`^RM~EjgKr{HSH}ER z0cthe@79LaLO7X~AL$C(5^~r{usq*K&@;Npd%pNXvd1VAaD=0Hh-?3C*CLad34vO4 zXJnzmliVJ zd~%`(&lCd{HqM~o!A%sGnzPb|A*BV*$3EvtJEywVfS2a3;qwO~rVK;zZoRX_Y?EUE z6AsEK3a&bzAb?{TN#aa^OY-}s{zDxAOXN1FN;OCl&dG|ZA6dr_UWOUB4Xj5^j0Ol> zk|#IJWTyh~S;Z?jjvDM}KoV<~T?(yY#y~D&aXlCZ6Vx~K31+yZprXxYU8)H z9B6ia_iemah(dw0H#WB2;=`u zs1S6n#MW7cp|odzn6(ou^&vzKfIvO~s2$OfVFUW^bdLmZl)>yONVuKa#ZhQ??*-~y z2jFC$lD0I22+T;u#6FMC`c-Ud!_s^x$7?X;ETV_Wq0R7n2ahQtvXI6R#aU#sn4Xb}G0lGm!X8?^bT`uzf|5e)emV`Sv<$%oYxpgAKuC}K zRQ^zBvPvTbAc2Aj%Q0cAH4{K`@d61~@l+K>JFQ@XIB@KnH7o?ynwQF~%CR!vFhS?M zZ(~KKfz&yCH%*RCC<7SxJ<;r2rBT|G#>43xDQdE8(c<8WKn+XB)g`Bwqa)jfIG=QS zd`d2~y3qRkYu-Q7yP`EN95B7%sqC+A4gLemCQFloj92x1 z0`el{V9`jK8hfHQ^Y#)(yNbk^uI)al{uY6}!h%CZ>DnAPlfpabFBnSNn)3z8AgwIU z*X?PZqZ*QmnNG@z^byQAoT#thYgIn_IPlGX4Bc>T11Q=(`)9~syZj`$lj{4ZW33Ey z*POWsroSPUr>&%Fm6>LQDc}|7G!OlZ`lK0ElGocG(<+7-%M(_LXg4A$Re+2rdVxph zG$eK-h1rUb31ovDd$u(6B6Cf%x=sV2;xH%1`MNtv_pmFOTq!AiM3e&q60wW`<}YQ% z%$wD}*5P_cVf`b03Ofc+q zbPaq8*N3t2$PeIbOjzEyGmkuUYH<39k=OI+h(Zk%*i>Zjc=eKo(+DqQKh?ZDdyVwt z8zFDsD*UbVq2neS2#P+cuP`|3CbIpLiiQN@D_HTUz4ShsrZAo3; z@yrVo2WJH3F1fKSIzOPM8_W{&*>T3r0RC};<^fv5O`nqw7v&{laoQhUEy~Qc<3OiZ zr;6ttD-dUP6pgA`T1|_$5v0Wk6T=fB8X4c%I13=HI`Ag4M@osxXckP@nvO;4gkXXKgeHU^gkYhX zvIw@x% zj{|VRL3RT}vZNP=xJP*(85Q-K`b_$MOr+?<>=F)o=FW@__!$b0MesWFWTkcq*LOoU zA1eb6&_x5jCHHUkSP>x(fb3}+Dl-}xS>dvsgA`>2hu{!rAt4#{m%u81&%Wgw0O z@#LfCiIhF$Q!Jl&E7q-#a0{snpkcY_Ou(q387$%{L?4|+IW|oD=GOLENY;XhawCF$! zJxZeH=-$r@i~{c=y?*&_$ZGkdcBP5YyVOXRI)1;zs-aCs1M}vNBNb*SZ#ndF6!eBD zSD!Lq3Qk8A2{Z>8@i)}&M(M2kXf>GbADgBH|D2LWkBX>eO5k@4oDIQ91noOhz--6FH0a3(w`=cEr zv;lS-!tWTWVg==}zTsSqw4CzhDvp4WN?<&xqSbahou`FJJ_16V^hhQca#W@uMe$#; zsWl=-czV!-`<184kiZ+`kTw;#{XO|I@H@IZjyh$;nhIy4le0|`G_xzDd?`uw=zUye z)y4kYMAlTG4t|WD^R-$CAtSz+w<%jM$5I-VvQjywoH2ircNaTHSEsJ^e71n`Grntx zPF?9mFepDozQ1Mh-RpI}s0q~T#T`3;h_8TkY1`u!cI=EktlEZ#Pg=Zr5cw-Ho;)aQ z^Yj?zdI6D|h#(_9EF-Z#%ZbF-W-3PR6uf6k6Yz#Cebp)Xbcj(wl_5l+a>Uq)Igj-J`tv@dVu zI-b3ajWPOOhqYeP3>1+x_OMlDxBq(uIMAwSF2O!vYlLdc*#p2qa}yZnc(cI_6r%|C z<~`w4g^k_RDUs>n2~6n(U1*e$N^e*vTI?zvNGfI<$=hOCCBFyyI!{F#D?Py9vIs01 z?a4^A>-QTZWGQ;|wsO{UyM2J!65!3L_^6&cR5w%3Ub zjbSKP9P7+Hnb^tX6c`>buReOs0Uxs*=02=LTaj(<*yaItD`+*9MGi5AG-Q?mIml7! z-#GvlEg>%7LR3v-v0fd+tV{zgMV{rTU9IH80O9%o?{Ap6kv1KPON-TJoR|rr8vb4q z09AL!=@hBNkY$zejz zfphGZhOC9#%V?sj;9G|loP(ur54K4G>T*o)71>2P1vsYR+A5-aJ!&A03)70U z}oUikSB0^XRPyrcNogvZ!emI0K8QYl)aUV<qg20-<2M+se3Q#mb&Tc}eNn35}&i7E-AV`YrZo4e6%X2*cv8#v(WD03~Q40$^O z|LJW`>S1mPjj$6AbrdZ_sjSpmNQ6r46xVvyh_{8~z}R(O5Ir_Z$hM4gvf;4}PJeFV>BS3=>6p&8>5&v@9^qxL4+n0|yN$L8o(bQ7>a$6}lb1=)HfF~nv) z0j5ru=xf$}b+r@!hL#|%dK)#&ih^3#Yh#q1DZ@Nnkpkouwg-S&c+a2Q>B zU#g#yR)>F(dhsj7T!Y_vAdVW1%8$ZNg8-}E%#xJc`l5>(EhytxQP@g$ttwk;eAXQn z<4cmbmdNA0HRO#Tb8ASm2y`6~dH{MdRvT`2%)aPX(ovD0b>ox zxp?)rPyP+Wd*~$c>lot+-boR+`vn4v~j z9b6XryEKVwZVmN~&eFL*X03~%4}A`v{}~@9|1kbZ)^6qajXcP~hh%y!{^@jGDFJrM z<&?}=<174c zRgmcTGYn~IVDM#ocvlBOU0q6P`h1}u7#7_uS0j;~79BsqUp zztxKg7Jez6V-e%D2Q{L5O*fqv`8+ZJfiX1XDds%$;kz~(U=8%3?5tSv1H*VQxWRRy z9PW<|OFq<=adSx;<3}kc#n8L2RVK~^X^<=cY3P!tPOJ6-L$*M0%3B*XS~uT2t`(%q zfP{5}8?$3jUy*vU%@2LSJagZz4kI0Bc((poO-yW7Iebyy59LhRvnYhu+0Y>^ii8)@ z$0>jd2uj=a)T5d}8qE;nISr%g{E2!dnH(L+9VuMqu)!0Gv+rA7opAhpmboVY0d}%9 zLHD?Ma7hb*0Q)F+)Ok^tYMh6DE48;ceN;pO;NG;C*|iB3nRy<*5%_!l$uEIgvzDV8(bM=KrtoR$<^ zG;Hp!KjTy6NjPLBijS8ZFgKMnEcfmwmhYF^PKC9JvD?*gF*eq3W5k7Di=qP_7G0TB zoaL26#NnZtEbd2(Uk9ugDrM`UQI!4z9|m?r8Wg>Rdv?HbmztQJFpUL@ zG*DOK?Nbf|D8)k;p}X5~2#RRpIk{PSb3xgZFOrLshu5zD7`jCe%AHJ+p4dB7C1CIg zIt=9*+piuOc}nS}xJ__ay8Hloz)wRres*4zC8nX2D9ZN=YT{O80{7_#FHGM{lSzyX zi!LBS)727ShbVtuV;i&-8WC*DfRR+h8x177)d~S%q6B;v0PGn_8`?xjO8|iz`g!%~ zpOb}y3ePcL7>dq+HcFOArYLIT#F-vIjM&v!Qf57mPetWJ_T>DDdLFlXjOdZBu@bd$ zqc|v1)R5`MRJ=#h*;k|p%>=q;d%%V25A&5$UFosrfYpafPKC$7GqxF}+=o@Cz{7dg z7;v~LqA8!5_Ygav*%t6BofMiwdX_g@vC}z(GlzYD;8f>eSpx}*k(_x;Y1>XQLq^d+Md>L z@vLSF$KVYc35QKfd5ef`#Q$y4*+TG4+n>}zz&NZUIS?^={M5E2*4oMhOuPgG$!i+| zc%9T;4wY-nu$f5t*}6k%xBfeqQpyk3_4?9Z;0I{>Obk$Y0?STo96;rCYFkrF$qBqi zC+4Y)y!JCp=f9vqJ(ReS^pcC%PLbi?`{yHYzMC+=sDWu^4ip13g&FdZuEm7lwAm8&H(5Wom)8^rj8ZQL5607deu54eiB6CB;yxi@sonBs0PZQ$lGfX92U- z9!8H#e4MZz7dAmmn>&q15E{g6+M{gGzi16#!7T4G_;PyU57;bQ2!&X`C7FFhwGs|9 zINnBR3o_CpJMxm>mtpI*Q`xk9FD&$A1*4+baelAF2-^6NmVU`EHeCLI;#Z(>(jVgZ zMefyi+-D*M9&Bga1g+FgA<6_XMrC6c(=oATAWpzS{vf+swq{HobSfi&^K!;I>^I-8 z3y3f7%FJvXJ}3>0alD$8Zoykf_WKSYHck#0j2V{ovqQrbEK&9KxPfQr~L+{2^1mF$>e z1PUxbT7WGlO|}CzC_^!DLc8ZckghvX-^j{Z%R70lsZW&ILdRHEP~Q`kqKhSrG5x9u zsE0ocNS5t-yKNI1$g89;Oc&t9_#ge^*iOH+K4O*xcELd8C zWuhB|Q;8YsTH4{0g)d2d^&3_0~j_kee+p?~nq^U1)WpB?J zD1Dr+@aoI65lL2*os;^q3jV#Q9D1m-#&@pNs;@NJZ>>+X?dawcl*sw!MtO}sO8tP9 z{X2S}9ObYoFRQgLMf^`7x6qGOrqH!K07@e9y^Rt%q zm8C!Vmg^CHQnU4vJaYXUuwEGZ6b+Z72=hQs%KmCXjvPY?n+pV>1CMM14oC{KITv`$ z=cMAI;J*Wp?rnlUTzbZ#1}{%cLREr&7#u;+Hg%qq4)fy&s1- zpoOnOq7k%Qa@nOdW_jO6WTi23N{s(6Z*>uHsh2fFA4-ic>Zcq9_2##dqQ{07^oZuT zzjFg{`#f6|+cjnY+y^{&B-$g8&9Al9StSOJCxmAEiJsDuYn(_;OpmXfFNhuwi2%AS zkRC&#@yb&{5DNX*aYMh!Y_{9J+D}MunVrM228B-ukPDOaS=V!a^SOpW)YEq7L@!fk7Mr0H`x_L}|pyFSie76Y}p40qFDU zTNykVMzb&DE@(-A$Nkn&@*yu=Bed~M0lU(&fm^OLaTXb0F(Z;`$f2i{9$8V?eZP8+ z^aSi3*@c(f1gWnCJn^(bDbl?JyNU0Qh5tlJP1>DCoCrUMuhLu50=U&ch4SC$uvW&n zBVQw}Xu1(I*954WK)7i%e5cz?Xq0WKpbt>^RI(+DVl5P%$r6i#H&We~i35hHiL=Ct z|7~fEF0ni-J~I4`q=_yj?UX3c=T8izfsm8V^Zf%rt;dD@hFC*qe5AMuBhgEr5 zttolv4TWH(bsb`01wtf>_z{(>-+zT*z9by_J1qf(yc}egz+gQq3Z!(}jE4quw%coe zLZL@^G52ML)9Wi3juVCuj!*(a+kMX@n;JVeqJtKAT9i;q0I6_Vp+e@TEgRW!fdBqE zzKxxJ^COH5dj7;h|0E zh2~2-=aN?Y18uMJ6;$A5J=Rv93eiFk_g6u>md;PvsFk~s5SE5^zxhLaB=a^u@wQRK z{9|COo@mwieh{y9GIff`Z?YaFI)10ZX?iyDG+7FgVWKEeTF2BHq@~Z((vU(Qnx~21 z`bf(3JUJ`VLf9n%CdWO4laPwW{IR;Dn*+9Lc$RI!WnNi`6zD1tIFp@NRxPU*xQ(Lf zfJO$p45b*@0P=l{^cYd&GdiTo7O-f{e7v}ll`Ph+EUx1ub92;pkU=EWp+c&$OwiOs zN{6f^$;9gE@mctH&r!|#m2e4>QXQqkLZ?$R($ri9jFp|;Ev(}Y1yyA)W}!r`rFG|7 zOH3uVb@|Byj5m^5x59lGnAs#zvZ%wxN@5JLv`tk_iMVqe`Yd^s1hY)F!m_(n0|Nbb z_Yzbz0-HK|6#Ut;p5gaps#jx$<`rh> zOyc5>=SwkEVkBa9+TM+kx5Qk~C^*#)BdKi0Q%^IIx|fK@wQAU2VGA%nFQE0uE5GE8 z8+2oU521otJ%hv9;Akm!j=U>;Dkw6L;&H&CPZt`DF81G5(XChY+ws$+EYb31mu*RT zRX7!pL<~oCWp36?I>2*uCT5&N!09WBZ-kabj9CI!Ys)6MzUOz#8Cu>~txmP>(R_)e z1oG_#A(L|cz1`Bqtp8yaUAh{b_VA2sG%2dt=#ergH=eaB2dNxv6w`|?cuwB~77uNa zfrXLZJ1bZQmMjZJ{-8+4V*0uRSw(;m3xeJu-UrZw3`R$pa45a(sb z<}s0sYem7-#bF0G@x38o|DzM2yaSY{^2JqI;NlE(@w?!ho&pr@pY&qPK78E}7ipE) z#%uy)fsRJptPp{8z}lE!hwYtFWoS!g%)+DRsa^W8WwFXdxjUld)E@600iDE3DOPDc z@*!IQ2S%F zQ8z?cMcIIUzL6C*MluSxzjL%ZLqY~kc`vlbPyuL`w(?d7+ zd-C>}QQ}=O#S}$_VrIlAEfXL!F|TSk-T6{W6sd`{@F+QAMmrJcp^TbUqOciHSS?zm z$vbYwaP4=c_k$zfx7Xo-yHD-`77^nd#@1%7F}w68LEg-lzt;j-<#DN;!McD>9O3O= zxFs@PjZndU&QRyz+zhQCJs>8jx2#;nkPHCnrbB&e24_!{^(bq_hlx=NYA>ox_$`dL z=r@jhkg%{L{(>vjO7Pnkd7u*#xpt#C-14j*b#>TQ2^$VH@kz_g%G|Z-Z#%;~Tb-kmyomVXkQudf&f2JvEeYa=*k{^lkY7BC4Ybfs;Ywi1&A`L zo@g6q@B2PyC`XGeq|3h9Q|lT%O(vI@jBv$(XWx))Pj)aaOv|hT64A-IV=A37^DNZ5 zleDUdKV%Xyey+Z>zRYi#pxzjV6Cp@6?v*Y-n!of2jpjj-h1r7Q@3BPF`xh=Z+IiX=zlnDQnjOPtj4+qSs)_n#;pm|eCk$TuG_?Dp0?7#67z zsj@hkScnN@Bk1tt*%nh|2VUOACEajZ_kq-$Q2{3e|NzjNWDguZ^Ri80V`GdEGuIGs2hk@ zW7$0kt|)k7q4x1k-l&}@Geq>@sDXq4=B6{9lr$nb>bDvL#Gm;)F_A7E+t5T%&e^-CW#RHN#|%DbjUfgYjis(0e-ES3UO?B|`!zh?oUlQw%!DM`fQv1ICYWR?T(Slbg+qDtXxO3U{?(K6x- zOjHUX-C;PK8h$aOQ?47XvFH9LXplwz5=vJR&0FNTfo(cadOgva)AzowX3Wv$Ks$2^ zGa33ym&3;Y1Bm5@Zz=Nz$n`7-274v4yZK{;L^3P#Bed|A3c!k%Ms~|;#kLvB zs}15g8v~IPGA9pJDAkn4g^|wMA5)1?sCgh$;XI72&F^`&02h zWrZ`wB9md4*KsvU{zh>i$|UgnuzX(gLedM`B~-KX-%>k98YLLHB{~+z;O97JF*@I1 zBgu!)cnKaEa=!>z0**P3g%l?d9IMw0Xxdyw}c}v0ugo>zi|tT3`)c_b{(>xtKG&=@g)b9<9{GVQ5#AJAZSJ z+i+zTbyE{z1_mB&x>TutpQPAZcDoXX(jnXz<_AtcU>159PX15cHp(MP%0W12h6Ry~ zhF}4Am5=mk30(Xi3+i|oRsNV1ddZV z-mTm^_>nm3+SO>4z`d5K&kKGeCVe*789$yAkAP*QsG3hr?1`xXHHNdo7KOmSr!$H4 zdJ;T~I)2Yl$y|^Y3ciIJa*8EG*p?`O04hlE^T!ywc+tULU;{|?=vV0Iy_M#E1+C~> z9#mBgiIr`7O|JF{2|k$aP;B&(VeU;J{VJi2<7Byu#6>`DfEe7c6SrBjEL6{!I7W^h zPbt+EqJ%L1c30zQ?9>c3cSR|HDRfV2F{PuSY9PJ%h5_pQThgpCeIV~Hlz6AxI)63v z7)(6LddPVkHH0vCi=2UXz`|u|XKs37JKn~t>~4S@nh9dP3DF8RAx;AWi;3a@!h!ld zzl98VMAp|EbhuCm;Gv8Kl}*Uy-p_$jL`b9ALmMM}2(vM{&*^a-bLHZAInsdhCb=zmFG_vIIj};6W(6 z8!0(Q{t>ZLOLJ~gPr4B0r><1NB5A-VD%Xe1}yn!^h9 zM^J+M2 zS`JSo?3Eo8qnfWdr@NMwuY&*-JYe+8DHE{>Fo7qC@Vo-&$oIjz-5kVi&36=U$l0sj zIb2BD8zs5&`)D%KNIuLB1yg~v=a*k*J$c?onH69r59atqhN4(;m)JeiSu;s1a|ugIBy7?VtHd64cIf!r3pjIw((9*x*C2v)7g%rqcf4NP^xbgn3Rr z=;*5^e zam7a|d}@dUK?4I;<@8k*34jzgIwL)T_z=ht+dYmA-#aYxYcRH-{xHX1K8fLMnj>Vg9=P9D8mTno%Qj~mtrM>1OZB`PoXCDDVedn!>E47gJPq}K(mK1r5^VI zA4cPlb|47g6S9>M!;Fca$+$okNGNp4twWG3t|dn5ft-SU?J9mg`6JZ&TJBg+9NTYt$?vH~>VQ%5)j7)=1n@d(3DQy8 zEh8SKmZYB}+2Bjv#&Gcc$SZ8En^sjdDV>Q?6sjj|LOmIPK#9636T}RULWf!Fk^7s+ zI1({w;i;nqt_AS~Q7ZezGaZrn1RX8CJs4HhsEw>$MYVZ_-;@K3gMn93xu*1Vk^(}n z8o~T&-2y z0I0-a%tKq;h{e_CPHwDpKyR+{8*a!Z&;~5*|J?p8{OLu}%8`A_16uV_Dk(4mF;fMk zU-pZshj&0~5p5`bX>=vYR9%d435)Uj$cJguA+m|s44Dc8dyjR47x-9B-$y>iAR{Sh zNMdQNMN&#PpkmjU7X8%}?f6CS6^c*dM2BY~xu*_KTM;~?-yUkuT2)Mg0YOi#@cHBd zv4{_ymBfdv8B~9GQ*f#9|BIk{9t)FZwIz`?8*}L;gK{~hv0PmIW*Iw!V7yyy6JdU< zWkbhiViTgxL?odz^NJ+{nsgNz2i?d>87_W19Ze9zw3Ua3<`Xt5B8a!&no;sK$F|Fd zpmr(e{xG5BNm10_jMblhohIdQQ?PWBV=x@jz^Rl{kO}vZC#^pv8cl6T zXJY`Z%7n4_?ZF-{znRW4ST<)d@<|ElQKGDCczypL)?hp?}N<4-PME7hEjZ z_4HD|6O+Zxs!EZ@{!y~&`B_`OfJc-?ad&F5& zhS0Y%_k>7lc&PAI6kyr(W=4YNe96(*eFG;~54n~Qb&_TP#C)Nt3(46fR7%L{cW5XQ zVSc69!Wq>Uw8JV9RV;U3k@jKbn*(s_(kiL_@8_G(W zHZ(;MzSopeOTow-hQlYZkSnWAYwTdjLmI`1ytVu_%m6q=lA>^L2?h~646ipJ0a~JY z@lmZv%h1I=1$>;pvFNS8AY@VKl*cKhbHcHFDflX%iXjeBA+K$VP=0deQ3Z{~q<;l- zPao%iH7#;7Z-kdSOIJqwEuF=KH#Xgx7(Rh3(CuZ46^s2+TJWL(brPGBm2a^ql&Z8O zfnppPuOrjJpig`p_1ekEwC_50Wl<@n(w~WGIZc${gMT>#cV}osRQ)=NV}N*(9*om~ zQks}44u71`EU%d70bhs$UveM3L>PhcyQt6}1Cu=7_pa2I>HMYo-pFQJ#E{rzPajL11)P;mAcO zUsY1jRq{byzrRt6LoQl#%N);YH+4L+QM$c68Z~no&}zUGIART_IS(-gz&qwK*J?2B z+vdiu5|1kwa;;Mz#I?|^$AU^rGn-CW*%*bWojg2qi~YmCHlCxwE`nmTKLHTdGmbMj zn@-G4X)D6$IKqsr*t;RSt3|3&>w&8~cH{;#Y?a2FqfC)B%KHVVhEd5Wdb^zfgX(BR zQya%USi8X(D5cW?ui!)tRGvX=Wy>pCTor3NA~^;0qxLrTJ&2P{gZd}FayT;GbA4WmDSj#v#yboKzjlsEXd0#B{=t;qwjdL+lmE_QK`~lnX zl|8IjPi?NJ3iJn%f-WCGRIbpq^ z)agKwSPg0pJ<%~#{8%6vtsby@c|?|Gxu8Ento407gzrB@w1H^t`@iKE6X*-*G3n>y zUHxmR#&F=|Ev$Qw`g&OqRf$X=ySd6uwFMo|PHoJaqTP03rpq?6&yVSPw}C>U$dRC!1Mloa_L@&&gkHQw?u zMF<2zY(5(#S=K!#vIzmIulvBz@L;0wY?h5Q{~&l4lUj6gg7G@i1c})0ZMM;-aNj66 zWD`SNbIKAqs``nU!MOM>lT{uN*`bQ`c44C|r(L4AKg}=0ki(L(E$cmK2R{~ZfxCsV z2};FaHA>9HnVb$A*w7v}2V%4Y8a=?A`p$9y-zKweS{%f=-$-XrL;+DLr1#c&Q;>(6 z4VsoTDM2~pqqMln+|St$=fLexF=dSf8*@@RZP5oKZe;R+c$}SvUE7q_rZ# zc^wm)RDw5iUOjpK!aB*$4veLT{f68&Z9F_+;JpzzhPrlX_(*tw;{8_U*9>7Jw$ik| z3wGjH%9Qn8cv@V-(DpSW^S0uLBG{Oqr+6sP!(qv#8BN2o-n?MjRD@k_G!$ulCdIEH zh@{Of^e^$At+cOWPkR07?%mfae>1K_xkC+xdzPda*t-PuZoN1YX6?KadF`U#kn zm($&*`s%2jtxa!u1~$L3E0O?O8xy*OG!EH%aK`HN?`1w*9SPo;koTr7HN8?gn`!;( zW>$~DswM>Ikng^SbCWekZ}z~m4Kax-xQ2~nDTW9Z*HtoLCI{0SN6Ep3^revM+D>d6 zK?JTN;zm-UhTaas1cJBvm?79^zKf{Pr0uUMDZ2dS>)kK7n~r&|^{5dla2t_}pAAlw%L1?9t<-kZ0N(g>GmaoS+Y z2Y5jlmxiGb_ZtOtq!U8CS@@>D3a=k$tnyh^c4^GC1Ysk2ST7?;f)^UbxAd1+)#St| z@(tSs8TzQB(u|Q6(S*>6XOOMFX9$$}0&7H=KsEu7szsU0_s9bO``cT;xs#%H7Cd`h4k^1B26CslQWMmKPgB{)Oij`hXXlqCtI3DxnLOER;S78El z?=uC{V#WCuPFgjHeCYcmg%ePH7ss|cvb~v=($Xa%Q1xAM_2P+87F$L0_uZ~LbE7>) zVt^||!f83A9*U{~Jxi)mdCdi?RUlY&RPjsn8^TynY>jLM5`nnU8LLNiDbT$-sX zFcBJ|Poc~rMPuax`aQQOl1$w_TTXbeVpB(>zZ?$C|D&IRj{r0QI}j<$#2YfYP{R4*>DSR(S$Cu&}eP1qBohhOjeMB_P*n^ zOJ{<`93C%ImT2o3=Z)Xmq4F1@cH?DHkPTLN06sH+`&~-OMcl?gwB&7EDzPnG5I6;P zkZ7p^h(~2f@GCmt+#m03s_Gl8GuP1p7yO=mrsq{-aoT=O1B zuc^UHBqE#H^`>uz>N-@uSaqp)f%09S#3?PEdEIxTAnx8d@>@w^#byJxf0CrP=Yt#5 zk^icF0gZdMk`Yrvwxr5n3wIn*yZTd5GR^6UX>w$L4guuk6fE3W@V4(iB?9rgISt$J zdZ<4q>4*%&z@n8O-QtR&8s73$RK=&n*^1x=`YA)qM(?Q6rk2Qx_*EQ7oZt)+OA>35_X=bciWQ3e1%pr#02S9Jf7wI4$Mwz zm&r5(5IP|`aG=nZ!Y)6-V8*3O$%HKjIQ8;8i0^%p?--dJdm7XJ9sB7~OrCsvC>d(* z|FlcyViw0iKbBO>EooZrK+|0ZsafxNHL*j<5W;aE%2)=i*oHCG_&JkrHO)*zWGF{; z4%vZ##^1>-Km>h6cM-M59*(n*Cua|LjF1DQHa3zF!KVf2h!dh>I?|HdP9i>fZ|&7tIVpmt@#lKPgl{u^Plyqi-qXS)tSRCXzH3gp0XsZxM{VgZYK}nFZ@EX^!B-Cp-GFAh7?3U< z>f&+@M`toVVEqO^-a`RP=U%)3x(1`>Oy^k7iQgERF${t&30GKZ2Gck_vfWG66TUUR zu=f_#5TS%BrakCAHEO4u76cO{D+}I<5n@_F^#KS0ENXW@$ihMK%>0!Ebx#VJ20r7m zGUZ@w$6lMgW675km&9d$Og7Xf1X}G`!%fbI3C6ACGin(hcH0#GBC@apO zNjaH;`uCdhNdbeW?$yjClO?|U#opW{Nv3sy3;k`na9IRWQO(~((P_B_vHI%kweC9zz4tPc~p6Wn!I$u@qP z*Vu@d7Gngt>-9hIW?%=grZ&UHlPAOOY!9wTr9+yau~*i5y!C}uoH}oIE7|O4^1?81m##}O zSw>`3UOdKRFa|)jZ%ls41f*PKG-yBdNN59HJmv89>MKANd z!HD{a9k2Gx_w<-%bFlXW;sJz_2-cq|0Ss9YJW1@_1}u2Bozkm@rE z6XF478^n-kn4RNNncZ+EQ=Hy#qgEZczry)DpCJKc@UybwB7brsWapVumaUH*Ou+fA zEDKqs=O%L1uIHdIknTt)V` zjhJb{!aUAs)VK=HmEt^z^q#!dp=kP^CC_3nrh$Q3v%ANV{nOAJG#0u-guipkqo_l` z1wRenCbX7{y;Yuo@bW#PR`B6do==j?u={X;s`V+zE^q0r;wZhI;ns}rP_>^MEGXJ{ zY&`_i;xq(h5mad0Mv@#!KsF+1MI@#QlTvh%=32`?^o*KWbHPv^0PJZQD0zi+LlC6! z%-E37a_%c<7m5pSQWVSPo;W_#Im5=9;7iVpn3{#?h0!d%7$j8nS?QsY z@yg+1uJim;ytHe%Y;>|M$ko3(wCZ~3@{X(j*9H@UW78+CTOBla5`a5 z50?(V-yTG+``-2>o#&lmv!&&}*?Dp)VhHtB#w=>Rt=PU7VXY`m@Ha5UVbs3Tp^i|2 z#|x!KakccKpvL5Oai*e7%a2+zLvb3F01|jq%|xbS8v!B%PfJpKFCn5z*FsZj8c06M zr(nR}2v{dNFyc>uSmOu$)C=JB0nTU?n8q%M=^+Ai~zMA z_F;S4u#9BfWXOAoW!f%Y(RlTH@dtR#fb}sSVI!rrT#w88r=a7!L!^Z&%>V<(>Dehq z_=dnqNb(G99Ja^qE&O?FSp+aUY0`a7rpUB1xW&S@(qE(8nC#YZLPOT6<+-4T$ zO^@s%B&jztoS1@9;F3pj*a>d3RUSK zG+L^z@kv)tJU>i9e1vZ^;1>tz+?ic`6dYH&HM9t+a7HpkSPlaN56qB+zFJMoX{HhO zpa(M^al9-{k{ivy)Q^lSKV&6QHsRMy7p{QaV$85vN6n^9-}Q{4<|6j7NuaKm|M}P>RO2|#u->zL8sjf+pU^db(g%A-%`Qe0uB@^p>PAqHW5Wo zak64*wY6a!Mz^QS)8ahe>I~gO;;JP-0G_7nEsQb!`e_9qN#F$X9Z$Zh%$}ff* zzk<0@mK?3Ax32<%>3|^V56|+XhvuW9od=O6JwQ(W>l|lG7bAMdRsIfeb1IR8x_mxl zQbX4PY=Gf#2IqaZ){6Wp5j6o~ZKbgrUiDEpBE?|OeFdBWViZ{@%LwGmxBek#1k%a? z9Ifik`IYqe)LG32NwMZ4hhtKKR=wVvd7@R)Q*tng02$OStEB^yy&jfJ9g0TIrBXv- zOw4GrZpsYr^x~8!_QSz;Zv#Um!SyUdap>hVy7MqiiM2ypnHL<1`EZ`GDs>0VlW^rxx_<+ zR1M@B8NvklA_ncLiblP4WnWfMLd4IKMMM*kjMr%cXh}~tr>99>$X7 z?;b^pXPlx)I1REO?Lr?F@$gSi9RC(+uKrme0U#TL)ay|c4C}TB_Ah`ovT*Mjrcga$ zA|i6;-inTvN9_ewL0@a~92F-Is(FeiqljPFhl9*3;s(QPFBpa;TX?>Dv`f$e7pQauxTWjBazXG105vEl!(6YWkt0mT z-z-M-L%B7<X%3dwIkGbg0U62_V0>Wg~-`}v>J3tTbwinsSTF>@YLBRAk{!s!V!W25#{b#kP2ECmWw<7j9HcUeZ z`Yuz+?cYj&?~5OXCs7IC`4-ZfdL0Y9T(mbXIOmqWrUTgY;wZv$1DiF55J>tjk0-yy z4vSiOh6J4;0)UwcIUbtiF77|;G=9;M$&_fvp(-MkkBU;CRqYDMgNU$^GeH8c2qHQn z{Gm~+H&4F&zlA5Q=O%*abjwIeCQZ{y&HNzS3mjK3DP)y znlq`S?7Ujf(nG)b;f%=dygO@)seoB^eV|PCTwm3xrQ*IzzO^}CUM@N#B;+jFS*E!t ziJAr;k&6@lFss-MYN>@nhkBHg)Q3$E>Jsv^&P#Zu7*-g)V4293vrrK>oD2W$Zyfir z<)nprV04?9Wq`S_7tToMPS6RE!09GE!p1Zxb_i04HEQYZrcKqgvZ4ujGy?qL7cw)~ zKSUMS@a@F&J=@G43xK}nTv`w?qWVzgdU{X!6dz^oc3fZv7dw6xU#t{iRvTIlU$I7@nVIh011K5w;eV)6VZ@ zjeR|?#iH)dqcu_>98%I~K80Kz+`}LZf_~`)c;{75aV`Pl0wjm;RB;7Vuj_J!@aG3gI|jD zO9`FX;DO9R_zv+$E6?9lfkkjSHqsp@2Q%(0DC1_4A!i|e3iC(&q+ov9>e;%b&Rnu1 zFG38u4<`3@L;)voI+5J#_Rdt_FM~3JU*tOI20ZQeDAAz@Dj3Z*;+$1GQ8zBy18Cp_LcEqWWZO=nz3=V}L)|Gh@pLO)0PQ}Mja}XGPa|}aQ z_1hq>l4e?a7&u~+*@hKiW^w>NY#AeNvVd>Iw*9&a`EbgYldZuowfGKQd^(7%U2xJu z`;OAeoZ>*Q0oro2b15Y4yBU5-hVgtTDg=L&Z)ici%fR_YZiqy+TlM3OV-cs|CVG(Ga(#wcmaE9%5Cv>Mp|(sbUdo=S=U5`y8- zy&M72t!TXr1<@w5g%B2w{8xOlkp|-|cJFweM7`p4>UL2h8H>;2Xlr0b?aX3pGtb$H0- z!*#gl9SN#uh$fyOWUjWJ*GWZX6N-XL0QBh%10GRQLoHFrUo9NL07=G??0>hGU#sl@ zEO8mG%fwI;_BYxRc-1Pc>vo%uk<5)-l@u)A$IfGESylpfvD3D6T`xL>+6ZM9K=uCO zu^YW0{sl~!9Zls`1RUt{`*sV^%Rwe_q=ld+;z>sON0u^q5Y#d_aNX{=yT{h)KTXQe=od<|qGot1%r7CqVsHVRQm%F#F~h~pgc5__X~ClwiwP@G zCNmULCuQMb6b87&{-pS`r&C}HJXdL+HM{}@24O)5;oVP3Og`P>?}?adn$y496lo!j zCc?VH>$?~RoNkGgqHh%`U0F69XSiIJS)a&ZOT1GPW!!RNp<;uX4GO76~?Zz$oW4F$te7 zmY(mFy=?d+T?JmECZRVi^#0!M!=FMo3aM3+y72--F$QT%)w|NOJQz!i6-D=z=&d2Q zJq8zm(FMT)c*99WF(F~!3kLJG?)}meaPuCSu&RgF>&d9Yxa0EMGPJwxzD6B=nqhg% zfi{x4)N+!F5}Y%uOH*Gcy^!sWMBkCwj+PA_0s`M}!5T62JOTjH_&|^8Rl-CToIh=(d*0AHfo+6er zMq)zA%=@B?6~lry_ZnZ6nmK2_T_aj}je^ld{ez%_*?ckCZQjJ8GP+mk0|t|+k%K>F zn>Ns0NKNbgK>)HkFN?79;+NOkS~#c|_cBpzX+PQMY>^llI|cZIb>ra&91qDQ56V}I z;rE}?!TT0+R`}FJ;#VZm98zv?sqw?-wBS?VLNm?U)We0O1vEAK9J)JngEN$#*8qb0 zMrIgkMMQOWz0}GS>G@IOv>q6UR3((3d%qQw#E1&%l9NHUdkB~YG=~`~HQ0QZ&^t{& z6?RLOi(GT8QYV~-?dgPMjqfQba1&3aWXEG!`{bZBf?i9bH2x4{kA`^!y>pDu(FYLg zh9nSVN=SgPA0v@gV57J*H+vKv3p}kvpdFMp`)3%;k08pTU?j}(<}{3Xm6QxA{kY)? zpv0*%i!6%f*dLiID%1mxSa?Xm+=%GKcE)%B=Vg0MTfC6!v*8SITsgOjF*Ipz2z-uv z!#K5SDg#HDxBd#<_fFd=ppnEZ5DzoqI#&>QAiy#9($~^wp^gwSoQD4@3En_MgP^@o zf9Nji@mgw|a$Z2_o)Z&B<6v@ONZoMaVzDEJYsq`h)0f{1iUf>1 z#OK-y+f$jy&I??Vb!xqoAZoj&B%H}vHN^(jy8G_yA_3Nkbk zh&o!jWS2^B2PgvfF$^O8cr4f#S=0c_4bD`Vj~q&_pw;x z2p=oY7<+zg??x`w91EA-8YzwkvqlecoN$NP7dyfsbkg%9?MIa0cJfP2&vL zHz4+8QZk4HW>-lG@KMVDX~+GZ&O_4+ZDI>>^^qlb0b|sLgokH7sSRoD1lTc2egT1a zss}Ds+64U#>oofkMHgxTJ)@}GE_u^76$On^9^@Rz5F(QW{$R|k1k{0)P!3TObnt%C z2`>vA=ut|c{uJ^{08|BP-mvZI)0X8Oa+vtmD{&1TJ&k6|=AmHv=MpeGL}TKlYAc$A zl&l)4#W|1hvBk2+%7nTw-c2NeYGC0Iz*K<(CpB~HJ2R@! z44!~q>)YRMH~u?l#J=CSy68kV81vBU2CLuF2SRg+2oH2-ndO4udg@8$s5?)-=You& z>6c3pC{vyLm)mjF1>F%o+zh;n1|8?cEZ#~S&O4m0;>6KbAlQ$Q)%(H_-#9UFb;Gm6hY8H0)J`Eq6c8V3 z1;D?H|A$fPh{|sN+X}*FVg|=1rfiI)jJ8fOL{T!Bn&*2C*@#F+Le$E56!xktU4$ig z!+VY+09l1gGA86+d{L1-Hd!9FCUmS=oDPKB~8K<08@qoL9EO5Q#h9tcK& zo1G9#(89w=$kC8^-WpcWb-cf)RN)5Pvd`F=P!&&&ba2Pb71t5$Gp$Tgp?9RNOvB{a zsfsPSDzhU^V-)w7JWNR~<7+L!T)z zPbw;SFr&~(`rK*RQnmvO0s763=$3aL6&^ie>~Bgr-j7*BQZEl`kv1Tu&|s>zF0CAa zE4L&YqEEC=v^|L{NzACjbOuM=9pZKV4k$1D5N50;?PuEzQV5ISt@5&_MyhNn8Wy9+ z72tf%4kQ69zl0Ig$Tr=yJTBfvOKA@}9`bnbS6iE2q#T&+bh0|oJ?$mIuO7gP%0q$4 z%Swi`sgF^v1aB_K+Uky)l*#RONVuITohRe)z z>T4;Bwtje$mm>FAa`L^iFt9DK7wVckXriP$Dr(1ZN!PLVG&)`B(5qtNhRrPO6aw;@cpgiRhd`nR-m>b~Vi%z~Yq3WzyKW;1d&7)oUmS=f(7$J*0Oqd4I( z6udXzALcK>ABI`QUcAFKgkKXT%^8}=jo2W?|NhoBmgyRhT=_a z#mDN9gf_q~h|96dPh@^9Iprn|jCKS=3z7=&^m!zsI;F-SJ94!(Uu&9X46E%Xe2@k~ zwi0Od4)w_BQI_Xx`}QIJA=Bf?jQm#2YFx96vab`(Fn{(NUmfOi`ILaB zt&zX5O7cu4iL;znw&!y%YX+(B6i7~yq|CuN$Exu?Wjj2oz-M*z!tTtl>MPmys^ck} z>DegWoBWDU*icl`30P`3`>F3pPtg&Ypet3@>65#LtBUc*l6in$$xn*ks)jBLhY6bgHDd6Czhg_IL^Ivbk315^ z5O@@R!=Pj3oou%pPJlPrxp&N5ac4EM*_X(CfvM`<;abdg#e!mzc*Ax!x8$B%2B1uB z>dFY#dv}%++MNpVU2zOsM|m^Lmgy1Q$cfUQOph+oT?;J ze<{o0yjC=nCPa=RQM}{(9V-3`=jXdTIp=icM9>FPXcOw!kPj;}ebSj>rciS&Qpgpf zWkMBh@Gw~mhs`6AZ18N8d^WMjru>aaSnCRmTt1-=!5SVidU^FGZf z-SiGQ9%FZXqC*@}MBF3Yo8F4#i(TQWKv`&gLAw#M@~AYhG)Mx$yh)K*`e~2p7~}V;ycqGRF0l?AhcH4 zm#)I*Y*FUl@En3Qvsz%S3~@8CR55@!Oq2^WvZyd9DRB*3{cCjCD-Ye3<127L)*iq3 zD)XR|9!w5MCBo4AT|BWN<%*cn?F0}-RzXsx+0^?fXTRw(lf=s355{IEoUp3vFuEk` z)CjW&FafRj!uG}JK60t#*#N1PxAZsD$ro2 zIA!7L`NfK5vw-UjW>HelRWJjw5PPB@5Js1T@l&9L5Dj5gl%vr~Tk;2|ehq~Oix2f|$;!cW7Qy@@F0@)Eslf=>GDk#y~CU52UHW>u1#;asg zQ@VqTKI1~)Flts2=suCyG8)e|Ad&-Bhh0SR9*@7l6PXy0dvZ0r%cV>)X3)V93WaY# zSxblkX{1$BRv`B{O|VQc&b^4O_d7KRad1r%s>ytidSqvSAPk_1O+TTI=m*&;JA{w3 zvp&CDB93pz`5qdTu)9V%f`k=)5o+Cbqkl5hJQAUh<76bkoZ`JO92=Dl9Q8|C>D5y_ zIVKnE@!5h!S_0n&g^Goc|z8QGOENh_DF9Ry_D@fT;O+`@MIg&$5%=*5*oV@Nfw; zWSK(Cg9i_k{>?2MVf17fzItk#v|0 zit_}jLc5r7z|!Pqql+lx_4Nw!RLnAUxZYh`3y`l$#|+V6oM4vVMzeg#W&~MtgeNNQg+;Mj>`WR?djBE4Ps~|6~-R`1)M}0|uZm zD*EoN(5&bPwDgh1vO`if=|3ZPFGNE}wRaUA$y*01xf`T~?`7NoKxVt5guBh-2sr{G z0wT|aEj&PLTt-rX_QcSO_vag9ZxI#&U z4H`hAHa7U62$Hz^w>_Q6m8n?YVvZndE3nJKbH@X#RZ_cxrO>-Yr3@A&&&HU&Fr?|o z-bVlsV61oQ43gAqDC(H%8M+C0)MU{k?I_g%l42ufYpRFxoXgm~GFJHZow~v$OfKAa zo`%MZAQ^MYdB<-OP?(Aw{#{AGul#9ZQD1qUv!*kV0O_d3tT~A_SDf>As|X`RR8oFO zTSpD}fj45stW;1RQ_v&wB(>_2l@#(3qHB1Oq2;jChO-op4LW7IS#JaH*D^#38ywkW%reOjxD4jS={ZZ)+{|TWR~CitqPn*R*l-&!}Lt zk2Oq%IJEFEN@1*@lULbeWi8~@DE09=nBy*`AkCj=Us>KtCq_aK^=c(hs}P9tT}k?T zW4)s^&T%f*#^siM_~F*&!_unOlV|rB9E@!FrB>w%u=$`0LE%uFFb0-A{YM91K^98o zMxVo*bTWKz(hF3JQ!el{%JILer0sAs@@z__Z<7FdDtY*64uqnzVjkfunbo2N7sgYh|S=Sae%#v zx*%GPLsdVEz3IO7jpHf*RF3hUC#`F$i=|{{l1Wx3S;CEjt|@Dz@`iINYa$d71tcei zLa7d+Ca&s{V@Io2+N%k$6m4QdV2zI~6w&kII9JDXhf%eTW#B1tsnICYpL4gE zVW818Z$`s?i&kCAd+N%+eLr8R6bphr%%XC#)n+FMj`~ZDHQ|RtHC~alXe`~5J3pBp zadFXX(ZaAVroJSiA`%-3WL3iO$hEYP_=J#hdXA$NkXyMB8i8I1WK(sTu8j)jF#h=d zzB^JDUj@Lk1u&2~tfC;T;J+-@GWM+wW8p3U3^7!+#@ij`9oseLgCsj<>MQ7d4BG?|4xzP*$5MP3P#6^5_`g+^Q?hcK)-n(u5GK=-3!qG;HhW2xfzYuQ;^ zB(+VWu3adx?~`IF81OFr+C3k8sH6Cqv>zQw^oKS{7YD>@r(ceLy$>s_6$QpBS|od@ z(Sslzj&Dpp$fjHx`7@OhhSFTmJ!eP{Zn3yXN=xKeqyxnk#|Y+ZBg^$<`h5$J(r{_i z5%_zRPS-MFQGw{nrCcj5c%Uyh{tnsh%gySd3-~wL{|GyyKbFbeqzGa>+cA1S+A=qdH=>GOi8 zNn}q^0`x7Cc@d-R!vIMHcGfYTmdirp%L2?)zn;KW$xrJXU{ zA%vMIp$FWSu$u~;tkT`yaK(J>%{(K_qK6wZ)R0x68yP8ZCNiuER0h4+s}stJ^Hv?* zWWl^d--TzC5lRj|C)c$@xJyN)SYf0m92~7_ie$T-o`SOLJ zEY3YMRxKRD9<5W9v)bKV#{FzS(Em!9IttWqjRXl!Bycu>fn^1+#tf#`*mb7%#;JOff;Xe26% zB?z2S->QD3|ARE%HG0Kml$)OAU8hZ%Kt*lo~ zfFJG|D_5jqeI+ObEe}zTEYrils!OzX?wvf$E%JuAw4>RfNrxjtE;`SKeA2Yo=C`S)`Mv?rwgj z=9iuIMDjxp5&qp(p+bbwxGi_q)FZVZ3BQ0KM?f z2^^a<nH|eWL(4`z%H7$iGv_vnZ1j+FyEynQ zD=x%}LtdFXR;nD;!})%+`kdR`NPl31tUE!BeB-=d726SOKKLL7Kx6NCrI^Bx7!1LW z^AimN;%VGt!gjefRBINKQY=^Ly||qVY4KZFXoTz>H;)#&q^S_fAw7EzJV}#; z1%brw*`%-$SD`j^+I)gIrOr^Jf?=fHbx!~R7Hc74HIuh&ghK%>cqQ|V{oA2xf6F3` z8*8feG?1UoAFw7Z{`XhlY^$|p)?d{Dieh_pPeOM!H4 z=h2v!u^zx<^*$qwZGyE{?TW&drUnl|O{rL6{*9=Pkz$#l%kE@FvUyG6Z?+3l<&d~T zyEhS7bk#DW7uXUec9@pCh6h8iZ4Sn?D~E%~_*zR0e)5dyA&XSkbH`EK7Dv*K=X1u4 zgjUgz6`xY`iEk`>D@GlfW7l|UrIPWuH>$Ry1WRl8( zqBQp}(&M9TazR@$s9HH1=NHrW#Gt!lti`WXdwWnGGr+*XHM3J)IAX{g!*=ZT4qAOu zG$85V>x){Gmbq;oKvQVS;eg0l*w7c|fRC7{q&>5WU`uHDi6@UAS` zl-5bti6rlr{y@8rX%oZWwOmTV^>R-gjUS~Wpjry1I1L}Z!o>)7GjNwq2{8e5zua(O zU(3T?3eYslOrkZTBi%*c2Kx(Z^JkS5yomW*@sp?BN1oN9cyCGugdhnLV8uKG<1Y3p@)Hs&TFksOQLF5YPPloQayI{N{ zzZU%C3{f^JFUMP9m0-W)@V86m!Yf-~R!Q=n{gDV+G^2`ja?YGS%wR=~bZG4G5M-1Z zDz2p)3DB+t#n|NHgQlSPWUkYz3jIZyz*L8WEc22bOBMG^v2Y6I=s6}RVrPG=3ogeV z1pHBtNnBV}IUCX%$i(L%a|lETgy}A0pIUan6f?doE}{7QZZ4iU<#7zXz~AAgJ>eC` z+o_cg$Z#$c(7^!Sv(?!;Jim{cCh?~7BfxLZ9H~L*`c5$4Ws%ad)Bv_%M{81bAvV>p zXZ^wP>rlu=!$mMqdg2aFzd{_MnCR! zb_E$RH%A>&yQ0rd*u=k@$!O2TlZ=iu6EDR;VLeoFu#NV45U{P-P1L7AbgTedcUf8+ zTz?vLy8np;{Qfoaz)5Kaf$ed-ls(zR9a!#S`~EEU5Slhv&xP*rPW1P!P=ZKx{0p%j_C4;+lqaF^P@dI-ve)1pyDii{}`F!Em0ILMQk4||FqTG%N#&3LBtjF zrMjFpxlFx|I*4-{Gxm~JOGew8Vd7)qy!Sw6Tr0i*bmn{*zm8-hI2<=pQvPJh*(>D3{nTdEr&UZ6bvc9cv=9e+FVj#rRO{)R9COnW%*Iqn;V5Cm8}=5-#e^Y9KYkY16Kq^J}fif|91th=L_|f z@P+RMAtitzbxfh9H#d(p@(`XP*-__PSLk>G`UI`{vQRmNRHBjzk$2PTpH6>9?}5U^ zo{0zP`L6oZ_)>A9fT`N0KwP z%x~v#yux?wO`oD54IWo^&RnGw{{nS~QTy&`9VBlP&jdouojIPAk`^}y+gkW=k5NVoDu=|JE3*(XX#?#T zl*nb(4N6I#al%u!XTI?WQ=M-ek1%e`L?sNxwqH6{%b(Q%H$ce0YJAQ^iYyf)heu*R zPO2do~{+lmw(dLkYmJX1T-r9iNn z5_&uOypm`Ekg1ahPKpdCzffJ){}{PTee}JQyl(e7xdwX|bzxIZSajtYl;YVn^e^k= zW1(S9lVyab99!D$Pdb6?P>ThThfi9JI_07wE%*4t&leMT=h*c^^bB5Uht5eNvZB=V z859$myF)Dby(QVJ`M@4C+aSuj-+O~RuRIyb6s4WeFRVa4uoFX)D9)Mu!IcI1wKnHg zM#$jAdsZro5hG%|BU%kmf4urAP?Y=h{nGDuzUzNX9QNHB1f9$`ddUTYP7jGAT+Z9P zHd}N@&|?Ew1V8k?+0qyRh3}Aqr@A6qjzAO$or)D-#Iu1wZX&Xh6M74ovc?`dM$njn zHGq6-xDAAZu4U{XZN8yCV~h%NGv8Bra>K;yZPp#-L42QIkU8~K3NM&l?luSehN(+rB;ZEe5e3-z>w zE)6#?IM|)J7U~JJRLRwXlsd22Q9JVxR|dowR#NuhU|tHVxu;k@@zY=I8=%sa1r>(DqA6zLYm# z9Rj2mPt%TgR&Z3*tvG(zwbS2;(t?!&|5bESRoh+FgTm@v2}#rJ#1pH)CPq1%|9jdB zc=i>~g1RMzes#)(hOB9@E`YEJqg_L^M`v)LWeveDDmO;Zxb`-g5b=tmWdk%wiM~WY zrQv<@mH8GKw1(t$j|cHYyZimOEF%bndX$M%gpXr6H+T+8Np|i=vcsGJn?~jpcLI%Q zTs0MhrrEIHXc82hAVj%oB>hy})HX$45$%Cj-xG$VDqtT0> zP7yquH(KdG^#zBCr6VlyZ#~QOqP(FYg{AVmcE%dga^V!oP1!dO@mFVFHeFOgJwIxg zY6Mr2Led4Ji)D0c8)V@~oy)UZdzg%?Lq zxLNatO?62Mfb$=*Dx)siBg`C!cLY$O7m+j|m1A?e1lrEncA4xg`UO?v<*-g1K{Oz8 zEp`9%0Wj9Oh)U`*#jPoA5qA(`TM-^(f_kXob4l;OT5db8g3Jg9ARszCh zJUH`*A;NI)kkf_F(iN$i#!zvSNKL{tjrSD`C^7&*-AsM^p1BmElj^8MTL}!$pK3^b zEg)LdXQVFPJhxR2Ork##8Fllh^*wLIUgJhZ7@9A(jo`m4u7LJh03-~*E(+Pi=qE(o z?HMy8q5UMOnhng4ZQBkZm*X^P8l4w3A0v*eC}21@I`oylg7~OISefF$&yxlexo(H- zyVt~oad6-VAMF54b^A@^DgH+EespX-?VXR()B|4uNOD*{$J27HUESm`WxxYKHGrgi z)-^2R=z&;+8f*^vq6L>eQCTO{ZK#HaDo2y|hjiHtl-~`WWk*MbGF`~k26cog6fMb1 zV&IYsLOqlj^-jNwV<{-{+Co`rrt1BVq;@Jt=%)MBm5|);!;3s*NJ8WBQgO_eEHJU%7z+oEj|c_$bXc$xf_%Sw*?q$=_zehY8Z6xkC8zIX5Mx02J6{0^H8ForAEr}i>3K~W_h zrZLc4v+^S&7wr&Zgq`kC7AMQ4hO+y;O0i+jW(OY`NTA>`p?D&2jv_>iN;O-r-VjA&5ZReU=z=@@+p!)gcrg*ai>sPCBxk1IeRVal;c5FhjH zTC9eW=Eh8?O412$^or+GuZwZiu?7W?7mR?J5q2z^9_p9;AslxBhpP)q`dGJ4u?yI={o|>Q%V$(49<}!ZVAZdTW$unXY@bl+uBSH z{4r@Jqw4P-BAUFe#ZmGo^CFtkbVJ^gkHCS$Bct1ZdCJ6NvdM;zger^t!y2|qdTrD< z7dvNp>W(giGbRfTzE1Tgy4xa77$<$-oZ#UfuDu?4IgW_dc_v>RzD#Z5YMwAEZAs_& zLm-Ff_KUl7;%EhDu$pL<=Radf=y6#QLuC_uwJjMQMqBD=IwfnS2(v2_Ljyuy@RCZi zL$ytfP9F4#kJ_@B05Qi-uQBM#GqPx404u*oxMW>$4;Zv>>!e4p!<|~TxlOTDlBrGo z{M@nNBE{8Ok|TvrhCn$HPpCdeH0TbOUIb<`6s5=~P&h4>SOJcLeWB4sKZP`(p%Q~R z{)xM|L~RE6eE~*7^NgV$gGrM8OgThk`m zub0O-w%M=TCa*(7T&d}T;ILgRJe4ts75emCB$yFky5G!%S}%_f&ufD9l9|Yg5a?5U z#!RN{Mgr+!c51>bh8_|FfY;32#c$ob%)6!UZV~*r&8I&&%3&j?JCY&6Br|_|U1fZA ztB=AIElK<_O+k9fd9|iDlDoK!_<)8d^07NnOe5FBK+$7eY^&oj*A#Zp()1~rm$YLRt{RxY5CWKN8%VnSn8C$)FDYq1}#6@>i`bci=?Q> z$A&!L-hB8zYNFH~9AU6BR($_n;)rxeP?mZYxC(O?cGYBRI+cG#!f-5xsxNnuXumf|EY5Q1lxcdO%t~dq2tCG(&ciY>+Yk$rL|2Q=onj(y?5O{zeQ+ zH(|CX)kPjcmw^N6q+)IN;SSGP?*Qx{0^>iJ^eYpy($6QtgK5A}8uzWNMY45mSZN)NY^628D-7wI3fDl#WadGifOcVss&bqt@` zW+=eqTO^fG99sNqaV_NBD?N$sf2J`q9MqDtHGK+&jtFsh9LSrhNnzYRUqK;HHH#Oe z&9r6?EpAG(574uTC8yl7vf4TNiWNwU60SY569mBe>AjI+2#ODmZa41l9Nr5^- z!lHBr5^=O1RRj+=<@TCjLPsbHihYI(3QSGt>1EB35bHK7HL8$6eBlCQb7Uw(h$$U* zfI1$Ni{KSh9LNKFLQNEjPTO2zRR@EuB9)Xxg40PWLUX@Z_6`Sh$mH9@y1)hcPaJAG z*vt`tN|YD$@xAX$9Y$u=f&GG6z38`n)gl98-`A$C`Gc4VL@@(hVp2FR^DkJXMUQL( z7f8i~zs|YuuB`B<3BV}Zp~TUPc=b0*YqcQkZO9Jt0_H)ABhSTNE@C}J*@_eZ$O*o? zqx9x5nPG_o?L;wje$AQ~1f_(+xiey-ZwccCH4_>o>XaVQ^B@9f7t%l)wFEwyAp`Cv zrI>ql%SRRKv;a)q#K%tBa?u^>iu|j}!7{$8Lg5;1pV8$8U&Z;cC`AXE)o{lY(R6#h zLEz?SIfn?PJqB4S-KUE8=aNwdCH2Tcd%l2*I&IrXl%GBAhOwd{yIDJ50 z{bVvAn4_yGEzg~C7Igq9<~hrB@`}O;@5~X9iy*`pk5H^O8CWA2TC>Gx89{f6w~Y31 zuO40w-u2CtOS!F&bw}x1Z@mw*+UF zm7U%8W28%x4b%^wJK|Awti;yHd~h;r&Y1Y7pcqnmu&=J1e;xVFkr>btWo+6al4jua zXANd)%fXVxAue*Avp@L~>Bu+aadX3abm!c;Vp z?`OW4GhtL{iZN*!;Z?J7xx(}4EU;kxBuD9BL*J2u+{*M0qD~|L`bC#i_tqqH2GDChm#JPXIJbl4n=w&!Ha@fzji z$Om7B+NP}6d3LI9*!iZUr;-1RD)0&Aj?6KmAxA^?+qKKuwpfNdpz-mZZD8uK1BlKBG@2| zAa{tvNua4Rn_Vc!^<(dX(GMoHgx_+ATivg%;VSv(9Qs9pY3 zs(e$LDbw^3WIS|bQhYItneNbQ4%1Ye78WC1IEmMR3o@4u$(NZjS#!~t!~5A_Ad-Q% z-<%p&p5`Bf^X>OpTL*YS8xOH5-!tPrp^7RJ;%$)6f*T`L_y>4uG$RFdn&ZJ!vTU`qZP5eqpgep>Lo*9I4jdLk&p0c zOfq81ijq)^*pe3#pnrEtT7X)%uw4uDV{R-I0bIwyD=6n(Gn2Nx5P!=wM!CEy#yG3eY#YOreB z$QFs4i>|C%W>X%85bbimbt0b(1EHyZui(lR25M9lrd_46t{UWBF=EFX@PxIiTYPGUequ1rOnVJ{C;Iq$kk5U4n-YRI2;=s1--uEAq-n-P`6TY=NsvEHQ_Ys zJznv^W|h^N7i>!J3Wy;_Yb

    *o7yx1RDf+)G0p`OoN5}oj`dAGF`PX5$no4WSnq+ zqAW%l)3~l2yJwbP-$tX2dCFgJ8H7#JGW)5LbY@AySK(!3iQ+(v!RsqE>?QnwIF*=$ z$~=gJP1l{w44q3)#*$23O}r;0oWWD6(b*A?ZBv23UOpiiL5YG7ehc{+?+*?pc`=<` z4uUTeBh(1xlvs7|+qP(jpw43X$6#X#0iNbxALb ztETstXtY=52=50K5k-~gQRcoU#fux=B}VSSn{*{yC{@*w83Km_s+5#Fj|K8J(&r*J z<@{*Na0Q`OgrQ|#&QWc%;8!JL5-o{>F<_rms?dv-!R%ItA=NNGeFf#APv|iuZBnzC zAeg9iI8)^LYB53io>{}Z8cz#v7pw?|OK<{e(72i(dkIeG949qeNj~S%%od{q?&Rp_ zf^cQwChO~a$!lJD??R&lK&4*j&qQHpe@;k5Ogltd%7=nDoT=Y|S##gZ)$!rNylHA& z%CpoH^CDi5=mF;W@59S7c~j`lkK7+IzzGw^b;mc1+&0q4gjMJ&F33nqXhjtR9=6a? ztM0^G)LjC?K^&Y2rPmdg;mjb>YcBBv!+XKVi=H*G$E^&6_@p9ybfZ~}GUuy9t^k(G z7d656nhC_Ytpu60vc0hw;{0lNk>-8eo-YDkqQP>g(4kk%w!ueY%=B2qg!Y?b9!s~m-@p73=0Y!bFwL*(n1DlwAGFkOLv!TX$;VE;=hIn)}k)zeBnwF z0J^P&^ng8!@HL>7bVy_C@R1+li6SZF0LxS3-jiuhUy{rKoc5WSNHxrUqCk?XW$nwo zAE>RURR;?DXb(viLQ)07$+M!!ks^2Cy%(UMmYw^MKI+@(w@8*>d3nk3lAkJS3Iw(d z%Pcq2-N@q}3Nz@hkW+7xV=C=e*eteli~~WSH_xe|+wf$uOx_Wv^4jmf&dehojvWaN zDGg!d*$*axAA|YkJWPTtP^T(O4ES`G6V)B~frZ#QC-^gC$ z2-Cwc%gZe+4M~bcuB7S%8+VV9k>b8arlhe8VJ_!E=Mmf2g(-_9Lk8K_u=x)$EaK`5 z>G9opMg2VWEfZ$Q75wRaBY@OMmXd@}kwYH{nPyquoI1puL9Azn0RS}U2GrwC$aW-W z0YM`=SB@y28NL)tXod@HP+Nd%4CvGCG|WGpj&Z?EP(T;xfgA=MAVS`wuov29BLce+ zHObRR@1iGNl>>GW@)u!s%}TDAZ$d@lN8*TfraY}bvTT|LMGYl+X1a*(SlBi(Je-v2 zs9lKM3yA!;?Aoc>gb^b!s%`KI_p>fT#LTajf+Fonslh1ZfBbAq8;k?`5bt zzQbolSCX7)t0U(5Yb!pRt}_MeLJNDzUF*+5jYhu~+)BcWTNljC57p8BVxhoXPs_8S zW8R(>nKz%Ic!812%;jXb9_LJ)j7z5NSPa!kqh9Z-SisD*IFAXtjtL0?SE=Qp7({!O z*sAvtdu^5a)EI+TTKGg#KXoAbKFB&mI+dA7W%P916wbT-l)Um9T@&e!_!|;1a)3wt z#pel;Q-Y1OEHC&mhQkuT&59jTWClB%Ksq;?e5Ug~ z@SfjJrrQtovcs_?vAq3A=MXl4HbSiwd!&p4$jY`LK=;X~6RnYNhefrdfywJkClkt9 zp|Q|Lh_8nj|E8$Gru8-D6dcC!c;gnID8rv*SAr*wuOKx>i4|-~{J|t2DMDYVTXYK& z;*UyFAIfb@T`lI%?3-9Gp@_x){3P_~*Mr!t3e=1i=&BUm!ti-nN@ zJp-rW-D(e3eaRUlaUhfi%YIy9g2OOl$uW1qaR1~KMx#z@2sO}&-^jy4OdO{*xcJ|* zl+C2?a+!>xghljZ+@OF$H4pM?MFSHzu1}8SWA%uMw)T&^5T+($Zg`Zbt~oes$)1r_ z{KAr`kTe;^aJ{v{!01UwKBqH8(WGhj+H(DB3QE^22VAklH**3CdK7LOC-HePSqKB# zkhqB`xN>6Y2F~>rYq&g-2PW9lv<{cYByDB^5wSfuEZ&lg?fGKChE$d1GGn zX(}g~|KaKuN37&y!LW|%8ua_ko>KpwV?HU)OKPq64%t7Kiji{6@uak@a-#UjnP)gd=Ct?JqS2CwCXojZ<&K;l_3fG*OkPe>vZzIBERrF!zxLXpw@K` z?wd~Le*TmpqUn@HcEur5J^{VSB*J$oxURnHx}B6y*WfPVe-Hi)UJ_imaD;9;q>3Hs zf{rjfnkY|a`c3KT@XaH=;!ll7ot&J{j}pw=4AVyyJVU5$+?eJ=y8C1e04SkE++|Zy*#_U%(+wOifh{9;5~}>xEa4voMWLMIUc3`RAt*j8J3y| z*itm@80uYT6zX!x5{lFqxHzrEq?h44jVTHu;76&{fzo}nj#b(JvXkt}QF=EzKu+XU zIUL2p2sK>Hzw`7JRK&o;1n033Ww78$l%Z0HBnc+>=gvGB8KEkt;lRNy(+h!KV$Cz; zeGx9eKafv>fLqQd2);{s+Gw)siPuFlZRbVCHUxUe%X#|m&tx#E9UOBaU|aV8Hh!?D zSc4$z5Xt_7Cg0M_P|ee1X!+HS`U_1VKSjOpl~V~6OkJm0YUB}?F0f+AadyFoc++!O z$yB$p9|DEL;c-cBbkecfD)Ep8|IRjRRZR7C9NgOZQPY!7Y0`YF41%^=UmzW0H`>ge z_;lZIMn32vi4E;_@qAvn$WUQ?w3-?iQyd0rE3pOJgh1tLcnCu1No9zKpkIa z9wBZ@Q@as1;!i5i2OBK8)Pa(x&2^5a-?9bVL&J=CaUNs5ZsZ>A;4PBs&QOF5xo;28 zERv$Jq5Pi`>xBDIN}U1DxdG4kwt(>Td$yZN3qu_~ZU1D}@{lxa$GZp39AF^F(k0}q zo~2lR{H2VWK(FIX%>8Q=oh?~X}BLsQy%+IUTx15VkX7iU)bo4F+# zRV9(nfM2;FhEZ8pClmxu#sM#qb{2p#A3pI8Gi4a6abP`z<|z8@j&>=ldvp8Q4o{c ze0=@IT13zMJAJL0VZGlI>Jjb2)ujHqRUws4xbP)+W@ec|So{`MI)LaCN4EC~JEm-A zq8c`31ZA9a%z4&yuG&mxhh(&d@Dw>?g7!LIS71z#cLJ|U?_DORA-umf@4m{)EE&ps zn#mdrl$Y?MBm-VK#zkv}2Cuo#t0)MxDew2#Gk1`8@V%it^0A*!46HN_PC@2r(e$WQ zRsm(%qow6)W-kaU47?+n%!F6i$ayleK165}5>^P4S(~Y;D9I`0A%Dyn>7Sh3J%SNs z)v^cg{a$REFV6S5t187ID>O$w8IF)vrJRtj%@}v7>-9{pLhT_(fz)%|RBHboNw>a> zh1inFjrv3GgHxi=7OeQCJ>MVW5PA_fcLVuG4XevcKnI@$#U)!_Xok@f0%??@ujO;0 zlU!AWGO`o4x1S_c;-iDaS2ff4YXnp(VY`&K-lK2eKPuvEu2-~rcq9`9W?~2`ZsjPK zTZIG1Qp9|CWJn_z8VNYQ656hdQ6akfPkt$ax~h^k?Zt`{kANFY_WaZE3O~(P3b5uzVJ=A-SE`bkvk`j#Fqcuj9-aMfpoQmQLD>@W77xX3$H1W1 z6h%o=a9_zr&A9XL1PeEr2?{R#w*^xw<2UCTTui)9GCDA9v8)MVfM;q^1h9{4KO>Gb zdYY_9t2#NDed1VtnCU%QDtw(VQ*LGtT08PO)c-$iKejwwF(5gZ+FH-RqUuQ6j&H|x zz6KjNpM3au-%gJ&;grW10oP7Ynq+IOM)Fj1Ug-Bfuv}2{QH^Khc_Ta!i5v;6Gt-BN zQK>YpsrBu~A2In>cqzopDwF#6{$CaS`QvSXrpWno{zOHwO5w3OyiRw2{*Ub%3c+6T ztSME+NAR99Gl)cH(V99-KXM{q8=_o{N%a*af0vB!^*#8gtPwy`2gHi_y{2RsbI>a- zVp}-hvv+QmH{uYl?7hg1!in6SA{ggVXWIG4+LqGGLo}c`xpZ%%V z8|_|{=|8&>0T@*PdRrxlzms| z^pvcE-u(XmR45=;AAS_K9umNXw(F!ez#~OEswyb}5dS=4r8;3#Su$lm${OMp4qm)O zr-qc3sz9?ZbkyJd5!kb&HL~Ke$L2{&;yLYAL4}bYeTY3*P$2X(hYx_JJYNMXwgz|b=Z0+5Aem@uO_2Ve6b-x9MgSGiXnGea8zh4;LYJ`%vsAjD}UuwLvjOyB=FTt z%m0ZO%B+_yjCS4&=EZ;aojnUwwwY&TQ(`$l3uIi{3zj}>)6HixZQ9nrW1L_R2$tK9 zMqlHkyqx$Exf4apJ8|$cq5Sb1(J;5A_FFbxjzhJXN7BQ5F?i^@)SqfCsM=`NJuwLI zK%oJDYI3FRPccD^LeEb9>hun<-vLQJPcC>m?-~Fh51i;O?>y3@jrUfwq{c zIXah4Zz*}07n#V*cZgNhibI{3GJ{qMgCRsp%5W+n#rxJ?92ztowsIuaxh^Q~mkef| z(a#!@ev5RBY=y2?$jHV5vmu>6aJ?4gOx^?!ojzDTIk`^~4o2Fsp%_T~0_^^G9;rko zu@D=CTwbJ=o46<-?e6C z&g(@A#!&~7=H|WjU*X9T?nSc>zBk{hP3 zn@oE8L+Qaas!Z#e8*bjdvY5dyc?`$wSv#2k<()vqsS^3jRIb9zS{kbt>DF1S4x7SBn!hJ}0x5|CAxkCv;{bsY`lu9vdW zlvhE*>k^XM)s8n)reGmsx;pIcMtm<_Pui)d?zontjhtnX2EyA0#Q+sp5Y>pIGWk+* z6aYp*xxZO{n0b01x2ht3qOf@I6*z&L;YB5CVkM;DXeI?==vsfhq+6;w$hl;2Mgqym z2nH}*V)Bqp5lMJXD#GdTo$$2A?fkH+QzNvR=2px8khmQCd`50es4`pqD~h?kbec7A z%jW_eJ(yZv4U>Oj<}jX#FlR9;#5Q_L1^Ep$Zq>8cE#)4DqYL`scNQQom=S4?Vd!@d zumv;mf=RrpV#vY)3?ubL3+QKR5`+$iyaKx8Gdyq#WPvANK*7`@sR_@7x zjdI?Z4tJTBAEK)g41o^E2(=Nq#FnW#3-%@hn$@*DQcz}Y%e}+ARecI zh1#GioFy<)3kvL1E<48A`Es#_)W%a**Yz|-)h$=w>5Q!MCcx^5Ee_u;OT6Gi_AGTQ z6Ce-BYg-PR^KObyhN%~(ChhCe4@3+SI)W4=9_b!i2>@1vC3IQ7Uz6rk0lDOWq)}d! z8}`%qGqLzk)HOTlKIT{pg^rvpyefG!y*I>ER%@A1ajCavz@mvM&YMu(Bd1`xfjJCOB zR$TyOG|U%Y7G|Tj$b1$=Iub|)a!gc6d zlCJ@VJ^Zq~-S$rocQHE1QC>YAS44gTJ;0J(qPclAUnc=@iZvcP`1i?_!fXYo%^T}# zkdtXJk$d))Zh)J^I3|}PcvCu|g9_H-ncs?08N!+^^{{s4VOKYAqkB;fS-g#vp#(`@ zw0HK!`7=KBe+h#Y9DX#buY-ty;JbT>)Cg_O@e?;4T?-0Jk9Kz1RCPTDIvASKw1C=+ z)YPV;DSwNgF_cmJ2nvZXaz(0Q^aYp;0oUSGa(vnKC~jI(FdKdCD2W= zcvio2$akb;v=i5*it{E8L7M zl30E?aD{T6LX6B#Fs2;TR#-o_@}6Lmk;WKX$M^2(AWzE+Jurve2o@*S=}?P&KgB>K zm2hj&0p0Z1$kb`+sQWJHKXulK97lLG-Vm9l5Zw_-YgouKuK`*dC<|~Kql`Q;?<4*Y zLUf)X%#$sP9riiuQ=@S`A1{f9QU?^w;JeS9yPD!sIK+y0Ogv1Bj9U`L5VtDQ?1y~C z%!>xy(qoM@? z@&5``#<-%MQHh@?-=P9Ah1xA=n@xRKQIcVk6HLIx`Np**&Q30+X85nt z-Vps#4@hGMf^;Gnqu-&l{tmyrE_)1Pgnbk@4aWW)ISJ8r2*sRsC6^(M+=~tbX7!?$ z#Hr7{38)k|K7P=P2b4_7o25`VpyGRj=!D{p0}xUyq5|&JQfCU`ClKpTHNMlJj(2l=8yIibLC_Q{bVPCIZWl)@)$AjKcCuEm-n30VExcAfCT)tk+yS3uz6fCnsX<*2>%l6FK><~X-Ma4kT7J^N&WgcL6Y}#Q zOI;`i+<7AdPk1Jlln-F_=KZhpSt8(|3q}5msW|#Ypu;)xLS!1u=I4Wb6b`mbmZ-@~ z?%?8@?18+UMkxTKwBTSyYf5iJKC=>}#L2>>3;y1gpVo(pm;vOps>l3&)>9f{I%H2` z{>zy?B%9PCl#;ylt@V6|1VWbpZwtsb#!gWLPBH9EKsZ)?VhJ2p=r*}kPUbB6*q%st72k&$kvt4|a zb~8|A@G&B&gRr>`T2cAHtf}WGE)~wX60=pUgrP$VJ`jh6ritln?6|u2=qtOVGE-re zPY}|(-1diQfrzdwyj^a)&66Rszi0t$++t}dMX$< zin?2cSxiX1N7S*x9`D2YtHgUk$_30jX@qy!BypOO&Zn^ba=&Sl3jy95;XK6 zU~+unpN9ORi2lsMIzMeGYqY3vWcSJATvt*rnrr0|-6mF1Ltge#TBwB>h@EPU$~YOn zZIL(qq_uyp_|i(SKZJl9*P^@=QF z@OtP{`KXHQ-(*2K@C4Ay$NU?F6a$SVpwK<(D7B7p$|BdN&nV~k2ocO=raNk|&z6Hb zI>3ZYsis*u2_dqE-_cP=?p(s8C@gd^Xve|I?$)xW4Bi}ZB5fA?NkBrLQ?W%Meq8ZU ztcE0~QqGBJf1R~De;_YKh_Gm>7K^tVfe@V={BZQiedF%a9Ulq{fmy4c8uNWcZlVyJ z&MQeN{HkJbGtgujd_QXyt`^xF+}sZB^SUn4Hq(RZicuZwJSh;<6-1yf$I>d-}h*YyQ5*;t888f zzT2aG@~zn53I9X6AI;GbK2gM3EG(S=qc^)HPgoia&XsIBmSb!z$l`V+q!4!jut0fL zu+W+&%uyK?2wXfXT_o50ZLvHMf4h!E4bRp%(Rv|uK_=Sy0xb`*NFqsSVft8K90QUQ z0p=+D`b}7_>h_UOGYI}#Qn2oA8HNFK6}=7pg;ieyu&%pK-q?3@so$Qg=;Jv3y<7za zdg17Z1c?v@i;Y8rWjujsr%$u|G!taNOb59xhDes=^bt`ZX93N#|D zhLc8Xns@P^Yp_Ea-3VzIlS0n3pfBih&v(U+D@J7)0}OGl#8%Z&bEP{c80y*F(CB~~ zFbCqP=X=N;NxMWyG}jKdu1= zYY0P+5|N|Ul~&_)RnlNz%6v6D>Dwl;K0@N;LU?t;k&IzAYsTE~&{7066v;OTa_)AJ zBwJ(?+TQuhawui;xKTb6;c%W6;(KCQ7-$XF76IKyl{Q;2ilbB3r8%u}&rEVU!8Kbo z_ao#E2w|5}lC!M?1zK%O+Tg3cj=o(kY^y4Qkshp=)~N>%M~x9kc_pJFBv>seDSW!D zen2_y+ff3k#xOIybPUVC<10-P%8TGf8`C<%)z9=!)X4TN|Di)%NvN#?*xwS2vj?6} z;xEp))DMKen=m1T-Uira^LaOiw73Z_Nx)HeEF2n5Xb^V(# z^+0SOw@kX*KFSYTg6QUoi^T765|{4OrN~rsf-?bK50 z5z90P7jJ+rpZSHp*Y|}z$*RRK9Om>oMt+R14nw7u2|Ox2c@uHK``BI!`bF=MJ{BxT zZV@Lt<a}29Q9>*-XI|I^fmx4L@qycF}u0Mz9VB*c&&X}MO`d3e6f&RPaU?Q>40@^$=4*= zyi~>Hg5wCf1bMq|X$E*lJ4Ze47kF6FmJZ3H&dR@Wi1l7_&1zFg2B06e(b-L*d&#;; z-VFJd^pO=(XstwBl7M=oJWMY445kgRX7J>+xVi!WkYL&yym-bCw((TOaf`oN67)U_ zD1@=TcrD42h6-K&j@V=|hwohpu>)3X*~t^cNjl*Ru#?(pm+1UGZ~^nz z^u@dY+hV@rC&!_k=TYeTSb>RfZkhR~!;IwN16l087;Lu3?IT94E?c_2I!e~_$iI~F z!KiANca|`&3CAUfMrn>1$M21K2bQ#u_29`g>joFD3Y+ z0kRFbjpC-UCNOJ9E?m}o^Vu+~9Uf;@N;v3mwNVbUW8~qV?5IKd*?Ic~6EDjI} zfD~4FcT+uEHZI{BI&o>Q(8L&`koL2BNXaw|6820H>ZgZ!09rQ7yPPyr3Yk;Z6U^b! zlb&Lf+kBT?P_7uVj-WPpk?S-ErRg4l`ardiWW63D3Ed?_1Vkm4RA;8nm8wsJM}6U; zU&&sK0fMTHN~pLh%wyb`w{A}D=u=8+_wiyP6JS_nJ@x(*Q6vvDsdpGfs{Qx{k9Hzy z&g;9Cs(Mi^`r}{Y@!w>3ey1Fik5fn8ws)F#C|nd9OXyK~Ny2_EgCl_$CmK79iVy-2 zyTGKTpQpq?9l37k;;OMBKoJ=T7kDCeI=#P&@}F=x&{Y&@u)D3-=|vGN>kTVoF8drG zO_Y}XmJ3uBE*s)2G3sWDcUMGwutx_VNrvKuSmc6XF#==u?cvwmNY0UF=MXfM@VogQ z@e&E1LB0wTzP&P-m$$Y8cV9+1c?r>5UkbP3P?8&|Lq95MWfVZ9W35gbEM8~Q@bDU! z^N>}}EXTe+C10d`NSP1Kc{obd6uJ}^doBnK7vhBG)1b_KPq%P=e9Ew0kM0LX9&i$y=rwn^jYJ=pQ zBcI;j=ytsc5>kA+mJHS60`4qV?vBgcrDubBc_`m*3HrU6++^TEBeG0&y_CKtys9Z6 zlHKnG!E9I!L-WJd$B#BeX~6)e*4-igLvyG$6}@emt;km*ky@GbLkkqm(2N(r=YUa; zGvei1=xS{p6q)@rO%S+d$qph&#sJ?+ev)_bp3~@DR-ZNc4A^@sNeA+pho4u1xG7`}v^o5kU_pecSaB4b{zlY#|ivb>820#^e3 zN>QyXn^tpzVSmp(7G!=Amdm+P9ZTdY;Vi0n(y!k{4P{`?O2nA(2fIr)2u@qHM`uLB zFZwPeBN;{Dxz|w_e{!&$!Z#Dy)vn#r7Z5JqfHO|sXC^3+5I~gCcdf+g$j=I&sE)7n zXgQ-q>>y2>qPRA~ghPLhbqWh04Xs&94sNaLF4NP(;DV<-#3H0rle)^_-1QfkPeK3< znU&%ndG`K1=#qay%mT$K=J>Qk zG5QpW@p&@uRI(AL$u3yI1m*&E04NiQGg0x<*6tT|B?k~13Q2&=?5Tg}_0hNjOht`C zU)2e-+aPhq+Q$KrMFiEvg2%{$u?IaLIBGu89!!34 z1_RljU?*Q_Ec0th%&$bC54QrNQHASZHz=GNL3XU?Fa!L@Q!<(1z1*4#i@VB_R-0Y< zi7Z8W!~|I0=q(U{l`LPI_Yqg3N26c+YC_nlt)ICUC zFdj$yN>!Qj7-)UOs(&=rMedCg9|F)>K~_PyhjtQ!0G-I!8lAMrNcHBGh^WR@Jx=#9 z-#UuehzzEQwhc=9_Y*r!$2|Hid1h${5tXs?{XRZfWxcKRQkf;4rw(U=I6dGpbt$Ti zXbGc+E#0o9yWe7mEN<2=3UO<5WU&MP42vo{#AipNTtV{3dTcxNCk(KJ4h3^6rxY%( z`9u>WUT$U&QnklpOv$F`Qb->6ab-%W1QS}d0H$$%wVG>!Bie`jQ{S49{V+rc`-lQx zZlb9kvF)r7ksdISP+0Ut34+ZL;!8rs6roE|D|ij-Y+inI!W|QB4vLisYxfoVC<~C< z);q&wECS{>who%AY+@@F&!R6dtwnv07@2*tXXgoxRTY#*t89<)b)OpGp&Gzsm3);U zq(5EQ=7VzU&#JWHk13T>rsIgIks64`E+V;>Yqf`qqLTYg0Hz#{n&{pxjei3&NZaw{ zx=MEj8DXnecf~9>+djQ4&Q6)%k zKaMOuT&!v zjt()zdzvbcJX(ZYGcj}bprDA*u_njAk|Sw228at~N1GwhAh`;LTSa!^YN?^ZVkypx zxewjjg8Hkcn}l8@SRF#fdI_1$L~o!d3x-t}UB$b8^Q^vAZ~0V#Hezf?rnXl>MLGLZ z8e_4g0xvS9%jw2ysLcf#J;Em0t*XyJ?4S0lt$sv}sa&?3_%9?cGUsO9E)@ z`;INsQIDloh)j~Sdz9@ouIoURgbg0D~u?GjO2z5nP&mtuY?R#&T7)gtRMp$b(B& z@S#X@0|CvQ&2*8raQM@5iDI)W|AW>!?CpZ^5|K`}+ac-z`d5nl8d(Q_We&M={M{27 zq!jz68>vUjIRSl@WAgsZ~Y=52w(<;^WHL?_Yx^#9r2o>Jb7^<=zJm1 zDR(T5K}-=FW+v8K{_Bq`D|tAAb$Nr3WSsdr@th4Hw_0Xqs~Vt^q!N-4yvM9(`0)CJH}5I)xsx3+id39Uu+=v=E!s=!AkCtDSghVBOgW2= zDu)`@-I*R}o-yBYJFpgXP^DcO)#b}$7RJzvpTI()gs}Mllwx#Oqe3T~0p}SbI7F)S zc85i{kNz+QDEy(9Un-h3_A%)CyD8WEelekQMc5ypLPWf<%0o^M z)=5%WDd{shbre5QBI;$)0~~XDPGT5V5+RQmHIwWxRyFDbA8g%PjEE;H7$z>byEKsB zxq$&FhS63y2d``@7f{MoiPHS-6Q6ahvj-HCq89mk8FT_!k{GNZrg5G_;L3O4GVI9b zj&kWh5}d}+6><{|F@_S?x=UgyW*ohj-F`IH^!#wCvSi&1T)GTOnJMT@6tcp5n5}yp zH?%SqL1d-d8}%q7)Qgdb(&4vpsQMlm=e#SMzCOJoG!oBv+4l>`>x+zU@Dq3qLO69q z4%@7EhoQk&DO#Jl8WVt#yq2&)KE75k-xF}KD{xp zk#Aj3n2l*!NEI*SYQN@a5#9-VL}K4Wlndh@hS$bql=S({c4()Ey=ba?kC=PYc)8;|sI~8+l~j5wsBsP<;a9ojTs~~M0ukOU zVArLT-njkW37U3iQ3Bvy#pa(j)QyNqqPCJ(OwM>(rS!CD=GE6c9|~K;eMNJmN7|^e z%^M5@gi!V5XKjz<)C3q{-&t0(8{IV%XB`ume#O9A5g_RE5hRC)lWo^aQ9?pd8Uh(y zvA|3^n_oQ(YVge7A4-u@23NxpxlLD01A@U;1$<4w=vA1O6ZNqpqO4qkk|`2hFH0{W{v_ya zR?c2V?cZl!Mv{_`;7Qmj*E1q|-kZF}7`SDnOfx8Wb7ocxk=?n~9;Zq4PyjJWBCh$k zns8$#=C_PjWkp!Q5}X@to#D_u7Nm|!s|fAmL}zFs;RmvQ7nFH9NaTHIH}RnKJ6%3oCoGtzOfFgz_;5V%J_kQJim^rI8c7rL zAOkO``+Q_a1Mmt}z{A7!G{Yekt)-Tl-eu7v61-D{GP7h^a4} zjC*FFW9#B|jPu_&MjUFl?}&VenA<9#@xI1spW}5MyfN|Ydt$>mCiw`18;*KwDC9dd zV25>;<02@Snxu&4?Rtr^*Iib5Cj4xGC{YSis`?fOjqiyQ(M#RC-qL;ly*up9L+K4Z z92u%8950F*73D~`-+;%h&JkbAlyI5nxFz#1+bRp|y^#ZnI2jdFZXimE5zSi+Vz`)z zJik$M%}?;a+z3*nCsX6`awXl69`i`PRkD^Nzy|rxxsClSWR-eo-t@Zm{{K2Uu78@_ zpdaXjI?TY(4qDCAlQMU``EycJ5#S9Bk2HsVrD1&3(y;)l#!!wD7NT_i^LU}7VjBAb zq)9pNEu@}g$e<{K@2DG0mE)SVPJ~PQ{xu;UcgSivH?uwC(ZrVYbMg~D zpYb?bXZ%X9Cvf|bN?l~eSSg;MJ4==#);6lo?6-bP1vGS7%l3GyArxLF_;hFxRG!^; z1~&4-1I+;oGxH7uNL_S2m`%pO?mO=|8jKQ?@u0q5?t|K9Sfo)dtv5tvQpr%8IkG=_ zUSwi}(?lQGjM^R+SKqng6w-8?M?AzRP+6UikRLIW1oR=u9|Tx}pNU=F^Wg}%B@nha zPIY_HX}oOR^It}YxxVF64iF}TE>Hj#6 z01yseHEL zdw`{SSH3f38CT7AFjph0#RuJSBr@-YP=z8 z4|Us&W6biiEiyrBHjGYjRFjt!bZ8$UVZ68?0g;(V3hWzN2vkXG5e@|MNa>Ij)%t=r zRcX=e+v^1(Q226RjuLQsR?;2y2-2&i)C0asW)I2u0rI8G&3c|uzcke&Q%KSp7i?gP zpib}N6;lC^_+ES=IuWdW)7GODV9}pSpdljdMi45@P-Ix9DvNnl&*qtiz``fum;cFD z$J#&>5_IkecmqH+^lI33RZudr3MBUO=iV?VfikuIze z{S|FBzM3Xk&H+K~bf|=q14MPlP!`;9j?fPkT@?ryBSnkWA>ua7&p5)UD&Z>algYlI zaS>e-SCE-!#?k^xg?MD_Wh+0+Bw#0wj0aWljun-~SFi|PTa=)@@(>5x$2|cM$6`S1Mflq$H9-Q zj9v_+4V?sE66LPiG}MPO8rm)+PzfaIutyJVN;~gluRi#eQUDqRTF_kfrQK2yrG!Y! zluMncn_wrSzQ=-A4P!NQ%}nc0*ns^Q%U{O{Wr5G&XwMl{Zz|nM%l@b=L0tv=x0qJT zCee3;A#|t%O-=WtfBY9^ZHEWZX5{F2kf*7gO{3qn6ghY=kU=&gcC=Ly=#6oZ>4S;I zd9K478>{z88i!k`F;Hal$i}(DMFep7lH4iEDd4vSLL@v?h-ax$>4D=3LcH*^M~vzk*57Wj^M3X$GFsUB!|`EH#WIp6TUZu${NT*&BTwLC36^Z>9Qg@NJI zaViX9i_Th4p1#Yuf!B!so1>F`%;yeiWO-kSEGmPwWTb+w+x0mluQsY!ta;MTlzAcjA0XRXLCq;thXShWa#Z}0hm9f?XYJ>To44@m!aWKOE#-{3LxbR^vQipU`(bv%kCuxTQL zkD7~74=qzj4E6b1J;@^l5j**boKU+ofhh|HD#5`8kIYPvq7t#tyl0g$0uF*2zrSAMZ_e1iwt%O znVxWZrj>B0$$LDdWfY(!Jw%#OEVUbrOMC+r{Gp>N*N?DS(f|0$c@u%GV$%3Y$ZP6m zK)mdkYKRn8P_)JdObfpM0DrKpYmb5>S5w#y^`70C_>vJwfi5H+=Etf|2HPbTlBix; z*fvP4s*su}Uf^;usKja9O1NguaDyZBJ^nHx?(=k5LO`KSRib4E`Ob|)mUHba9ubkTRVvGQgn1T@#YIMQF@>P+Ibi-SjfsFm z3E8J*m@Fa5WLuENR&OT3f0}tY&Y4~u8e`gwJ^RWV_5Qb-5U)sPapFkPZxGM{c<;2g z>^Mk}A_9eIl?_|e8^&))X;mpeacxiJ3+0v|uO_8dkG3nqmM)V9B;Ho;oN*}N84Dmx z8$zny_204pv%J9twEU6sg3CbJf9P__Yx*M6nHK?%qzJFqPKAh+HNl|E z@hfF$&C-J7C2iFuHQY>c6fGmp;J|nLU8J;usOAM4AqMqgLOXKWK|f@vcdzw5y8|3C zTJ?18+ppsZEuPOr{+8mQPJb#yqHGY%f7b>fYPN|bRxDn-GAYP~db=b>c7-Zc=YEEB z_9%qO+7GI=C!1};yU_dOXrJ;ai7k(sGZJ1PD$h#k`+N)`fMjd2Xgh2Cfv8Jx$60dr zeIX3mYr)gwxZeTZDN@*R;^s|CFV2RxQy_Do%qRipAO+Qk{s8UE>6HC2WMyA%f@$f1 z2NtoW#Sh34ur&RZLa7G_TF8We)qzr{Ai$~u*9(o&Z# z%O3G}G&G2FFOR5A(Lz!HSt;ctG`k|rrzgEMA3AvyS#H1nem%b4~zR!|0i=WE>y3e&o!#jr5~fc zs&J>Bj)5jY;g*bNkCGud8i#K(wQ!#FJ7p$mh5AhzZP{s=rLTKur=p`E?|VrEN4FM4VJwwR*OehYX+!G`nLV?v zC>R~dM(rngY8@vfsT62vo<@ryD)b>vjieoC+2g+vhzhSCA6Hv!iLi=TbD_hxd0~wM zM66yo>boQ%dJ?b}6^V_2eBE#*ICG$O(! zz_pxcVvCYdp1H@qPsIP+ih@vE5iznnw}4v(kwS&>TKO<%k!Q z(YMne^ROpRc4YBQIUVD<#9(F|>cdX$IbN#Mc1$QThKuIr!(^MJuAuchXthMQS_ea< ziyZy|=GQoZYpS40-$n%BjUE)*svq$+K-dusWW-<#{u|OP)~_)0-jE0g@0#iD;F0pZ z6j8#G%EM2r)GYmnpTWot&gLXQqr~FM;TP*MUDoPJApVeP?Ezzma;lI%T}fRzR?;0bdF$*fq0c)8=D3a&n(XF-Y)9-TTTelEEI>g}m2vPGqE*IB z0@z9<9DbiADHb9vjtN)^T6Qcb%3$^rrc8?3yOQWJJr}a|I}#z{{hv-+lzO~@nAbuS zBR3;9Po|LLsd=feQGNiGTFIWIAF1XGy^o@P+V^VJyMbYSuA(La2%h`-s=nXODTF~n z;F;N#SoMMB<55zzTc44-;}I{?8+GzT9;CFWTa8U=d*-IrO1Ckskkd2>Z#S?GH}J7=8_QyV!F!m)~FoS4sjGLpg6l;+>nhT0s({ff+FsuKyx=>l@>X6V&37F@|s2pj?Uk6b?R z_708h;MrcGK3xDgX_;Da582qwS~_>A;U@+-wdJGl100pPcpWKT;`hlbOn9BvRNxNv zp-m-PLhA<)KcH<&H|JPE%LOp{#oT=#Hl&r|vOvkgDKH;rm_3_yT6sQK5)4e2&Uy2o zI*S#$S691%3Buce46d!vbm4mA{EVySiZv9lgzB^)`d$xt&#YJ#J}ngXY-U5z_YxAN z(j@|tKV0bNDJYT>5;8$M?pEatoZJ9e6$ei`LvJhpC8qBMBYc6qvf~iX1dTFw!C?dm+7IUjfKpJjqbt8NH#_zk+n8yA{YtQ0)sWLpGH?p6650X9pa?vu2 zO&23f$=y+za#YfYL9WqAQ7Kgjp62WsvS;LI z*A4*p6{K5zar7Kmm>V4$5?ry|Zb=`iusCU<7JFJ51vt{cM0SP3yk)cioxQ0@8YCi5 z^h72s;6bG7xM=ccvfe8;S3n@@p%#zj_al91vAW2o_w2z?{4meqOO*ui?o&PM70>&| zX~di`)v`i&E#wbP!4HugYB(bbkO0o*Z#=ev5gY=?kkHZa&Bf)rT&D`f%Bvdm7YTJK z{|OAP&=_(bQiL4REx9BFTgiAHz*b1wQM49I;RWbQj?RKE)}3sv<_{B5FUIhMq1XMF zfU>Kh%QS~ZRf1~qppy!MfqbP}Ym!ZkJHljl{RU`W zQ1PynykSiZ7@$L!W~B%W@qmUTy#T0z^FGR5Mipx_X|D!xFl&?V%9GB>N#=0r@_m36 zC{8B(RM@;YzK|R#$(O2x?|-mBb|1<1Q3Ot=i{~A?6&qSKN{cuVc@n%;V8~wyM_kr2 zZcrWv=(O~p>nLxE3n!BiD&(Pvk7w_byqi8`RRAuzrS;K^S-A1CRnU1^|8mW_RR~{3 z0@JIqq$n%U(9j>G9W{E2Ey-)dR!+C@r1cfco9HK%JD zQ!+N&We?xVQ3p=>V-`(##Vh}lV1i6sBFuTg^Pb_m>-3sIA^eoGK6`6jnKGxo0sm0i zB;y>A{sn&F%sCv7FUYDH<)F*Ht`ViQf2Dw>|wyfK~_`pz{DktW2(WpexKaEN>*j zYSeRzSHBWaP)*-H&*>8RRFA5H&qA=wtI*NMBFgdxjwo3Oc`*wc>Nd-I2L&1#9DJ|2 zYAzN7HX!{Gp$KSxT}~Oz7`87&|3>V`{;|`*EL{4qIpW|)bhxenbatAgu-xlTXv~zn z7?}Wch#DoLGP3X>aXMZ#7&eb)))fldJv^GXU6S+BkOd$k+gw&RSxmwgS* zUMO!ZqBY-eHHisk<+V(57-zU*yh&r^BC+a&|f(YD2%-ui})LAvI0L zv!RQpTm1t(30Jh-Bn}ooyJ%jjh~q~Cf{ZVWO8f{#W0))0bR zuqz+d6*%`T1RA69P~H>=wkTZKO%R0F5TPHztwOX$f8ol=bzpPsR3(EIyed%n^$g!& zTqIkPAuH8R^e{-z247CZMhF<%*3TKzD6oZ)41LdRn9WY}R3^wOamj=Mho7qR>D?vy zl`f_`7$V4);51-CNn-~C8pyo-+<-=&BG^g;lZx``SAMVMnN&#K8WL+9T(Rxk=mu0f zc*EP1E-g8mc{JyU*}zwN9-j>~Va$*Y?qxqswCciqf=27IC;6bHg2;(pKJTT2(j*69 zDqzetN{+0)ORL5$9j-E;?cu93zXcbkzwMJS>N;I74k23I9Cq-RX*pTZfNp%(r`)1y zF^&ZixS-H6P024NDy=fC!NssIPYVN0#lyuZ7hXn#$y__>zAD9n<$##`FVI_tC6jL>7pDt*Hj1M-MP!5}h_2 z)J=;gx0^0X6kL|*e>$K5#1{Nn(lp9SXAkEr&N3W=Y{s6k-fHFpJe>0)`h4v{KuIE2IntndjY1-c;1Qf>k?S96zg|mj zz>ud%qi-LYNdUp9t-jy7( z($l3*CHB=n%qu$A(s@EpSrNqE!sBBv{AY8~Xdl%Y7E@??tM`TLE0ZvqVS5xcbg zHFOU8eokE@PG zx~}#!7-A63oQb@n`f__pzXTGQDzBInWva=*!yQJnH_5;*IT@1iw%`}2nV!Og3&`1) zO1=c(m#4z1awNRr4F$PA?V*H#b}*e_W)&@wCXs}AWAu62I%zbOJ(1am@~qI;&u74u zLux3zh{I2h2vU>P2w`~-aN~bx3GakE2r6`w=<6qH2rr0UH7HgyV4}eC$vOJ|F~h~3 z-%F{6^xApnn11gVgfyO3s*}?^H8vSWinv0M%X-yzzTR`WHc%F}-q6_ykh ztv!U7AmpIdt2|%%%{Vh}QUDtIKR`Y=CPzq1#JYu-fgbX6HBA%90F)ZAgNHq+E>YURx=Gjpc)H@GM|YTE3Tv0szp2^ZK`&M6p6;SHhIewV$44jMEEQlg9Qb*z5{p$HIov z{_+?GjJPV!3?g{XOJQ zW~gB_`eIVQTt5jClHSk#tah|}fO`cW&{d{j5Hq)TAHIRHIq%H!I} zK$I3!N#txFD}JSUiGqNEpc)nNPki{5l+xujB@gb{aZTt^tSIa`*9U@^LBa=SX*@0* z^d9(Fr~hwtA^hQ#j0DDWESIhWlh4%)785H~uNStVku!8+B^_H&jMXkDP#cnhc2PFw zwSDUqqJKB&Wpl^_PV;LOFLZl-*4NVCD8eBpd}=LxpZ$JT_lRKydkZO&q$26%fIEWx zhU9dAAmlLgoJ+Fq*cdb+hN`l^m;eC5lo+ELWPA$0u%?9y;Gg*FgC|C!SHoqRV z{tz5^G!o|EKhi15)=?Pd(5jLjbVWY^6oCOrK(gQNkDm<1Ow+n0Bi~NbjHy|GjS{+O zSAKhTu;7)DrCHer8-0RpkICim^0+T7;yyG?^-oSjmIDFvHU-|ZI zlAw-gZ3usV9@KCB;VInWr`F({E5QRZ7LJ%L_{qETIEFcmf2WypJ9nmlk}gJ0PlXwHVjbzwIl(M zvn{^YrjXzf)sCff!<`vR2j1(HC4^34D0wJ(CsjsKEfq_ImK&7>%2ps0`zgaQ_%k0P zuf4upB2={01QSkSFv#$_DJ>Tw9h_Y; zX+M6?0x9S_p{fUeDaKi93`=M&s|)~dbJg_yg|m7*&bP^uuD!>tqQuV|GCm9SSbkLO zg69{N9Xv)e$yG;wr;0juVvKDu2FA(G4#VMP0-Xs86T8&r0+Q}}IfQy1#8MV^9KEG- z%X4}HgdWZ=MCV#xSCo(gR77LwWDz&fXLJZMSewMV8YzpRRo!Ka#`Ce`r!z90!r}4g z-(C*iTpxAVT{<#4EX~Q11#i1mNYFBV-Az&eDS#(jr`vv^52B5fI)y_M`jGNkj5NrWM)Dy;2|aYbCgsZN<9VBW{yXw>97UJ)5R@nw}&jFzH}7V zazNyW)Tx=}v+)o!R3tSh1EknrxKa2M)@|X@VJcVJk9!5wmiFg7n~8=8b8oPDwHE?C zlmSa`ne_VHevBmwm9~>sQG$-!#RO@9&4ra48C{-%+I2EXbQMLaV(f>wW6dND>p?&z ztdt?oAf<}g?0DhxOR!LEZePtk;1 z#yrQeStQ50_-e7kIZQSgTxo2rnA`wonS`vMSH``SaeX+HInLk{j0Pel*S>N;q@l9^ zb?f;+0zuId1cP=bjknQJWz*BwzSGAxT~yU|+vz#bT#P@@_6b7^ea}S(DMo}|A9i5c z{7-i6f`0T7P1GVLaN{jD5J{^qoiXxWe>8N2%--KpUo9>A(#J z+55_Gt&{Wf4=)4E=5`z1ey{ca(XT` zq!*&e*O0oNP|nxef@Oxm4u^y#sg0P;@YE^NbY{Cnu`r-IvBTUz`R}9VKMAYlAR$PP zBf?_q!Mwv^CZNc`(&S<&xf2)

    s#bER!pV_#v=KjHrEb>Y@;Hp0uy3 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∋&*_v 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 z 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

    gLx%Ne2WJ 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 Q0`uH-r`=0nL#K$IfO{(RO;6n#gCY)A~*lPY4I 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 z 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

    IuJG@C6QDS;903zZ3 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

    Qd6=qLsMIw0AvH9D*SJ%jByaNLAt0u_% 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�yb5cm~) zg9rGD_0P(iguuSKGa; z4SWmjw)gU;a$dvY_mTXvR44oVWRT|_hM^Yim-nn zHRY8Hw$OL=8RL8^BMzl$h@?ZYJuL<#*g=q*Io7>0ewq~llH&= z-{UW7RqY1lPTwsgZ@}4^aWhwDH!b?Z)8T7M*9CW9VnC#2l}UeF)jpsyZ`BAm(d1Z_M*~MkEK{{{Ui+l|A~PN6WsDQ@9Z2 zWM1?#w@`THkC8*AuBrD;>@CZ}x552q+o6>7CIT3}*(kM;`Wa{o9##j(8Ytc=51z$DadEn58)rT{nXxruW=8F$?TpF2ik)bB^R0|w<4Oaa!=nqjpcVxP3r&9AJZ}8ghKRZplVqXT+3N9p z^87*XrmbK*zLEExO~F}r13%_%JW8=vEZH9PM%gMXo-v01^6f@wV|lCc!o?_W?qc69 zLOX1t0U3bqLM4pT4y9aq4gIl+GuC&(lM(CNLwY>4Eo9de+LGc@GhxJ`Y)4t3F~Qtb zA-@Y2P-fysBeUN z=L!s+257sPqJfCmkjoxas~1W$gLVO4S6FG6c6*qPn&(TMavRrse!i2>I$g{q+33ba ziI1GUE=ck1MW{b`Di$y>1;Rt=n}z)FdY0%7Pv#L-1iAJT(fkxA^qeZ59iCPn!Ln=N zn&YuDW2SWVogE;=09+u9u`NTLo`|pByU*X;II;pPIZ-%7QWPH*2a+xl1>Y0T$|pq}`QVtmU+LrwL?YaRCL6dig0bk@3=z z;~xY|lh#CpxiQlV@$0`_RQ_q@o*K?Qu)uVc4dm-nuT{e3jG@qi&0m47q%2NJX9(MG z+DC>f-BT$BZ2AI29Q<12`_^a>uPephKj?RF&e(*t;nfB$o8vXWDj(r4Z${V@9fK3r zO0lH;%fdUf%|3@OA1r5$1EBhyW_9O4$f=_)7()Zm4|a@)5vS`><#j@JEB`!5(d;Im z=38QM>d|rk_bXU1=9$h{>Q7)VXxR++I=_=AD9Q}OW99E9^wTqw<}{k*!ZH(&BqjN-U;ai(iyM>PfQ?UU)4B4$%Dog&BiT%@0owV zF8hI>Dle~Z%{-oSvRR6qMRN3gr!P?EI4ty1d@MCOR)Nk^4Dm?XgbK1GPnaUA9u=NU zM8}d3$p{x)(L7|I7O)!26#WIFMH^)`zBDT}0Bjp#>mdi_-kalS(6_E_MyG`AnSp5G zls&U~aAqC-u5H1kWGc-QnjRl&2-weu9*_L_d&oCzl+U;RfUOgHBL1#nJ3W*g&mJX) zpz|bFfnEubeiT999U->vp7)6Pgf(z-9_X{_k~h=@fm&KMGb~tbJ&kKdE(mY^!m)bI zmrmc`wH^y!JTV6vpKZyB^M=j~cjm zL(1nCl+>aOqTTde%!fzHBYpe#TBaULrm?(zfNlh+ zeWt9p^DFJA;mI)u}JC+{7QSsa;1}mE0tT9KnU@xn3KVuof+#?2v{jB{8Cf`+4zPU zu!W6oKfKY)188mEE^?*RD+r{omVRy38Ak0)TS8xwcd?BpHpbpWQ_`bQHeOP znNJJj4Vc)3U%#6Ies?(eY8wG72vAiAN)Zu^N{I4_yD&x^=*&R6IZX~2)X|EK7EW*s zRP6r76XTGz*K&~&m5bW8T0l^ZN7~fV^?|Rz;y+fn0B`xGemxevXN4NJ_X3A^f#Ols*x;TNL;yWAOEqEiw8E7?lDGgCIRfBc-NqS>TY zGF!l1>HMnA2^1BruCtNvc-=N0x9}3ctABXDG;4o75i0!!qv(;-7eF&X$8ctQ%e;b@ zpE?;WR(XgL>`G=hFYwq|YkuL*&ob@gH|-^HG#c##?9AqTt@e>3EoSVC0+f^UlcAhb zdyq#C!YAuexqat4yoUv!j@!^ZZT*%#tZPZM^)2Q8dcns=HuRMbsOe?Wp^LP>1Vk`^ zC*2=J`SR`OVe*}1krOO?4U|#$A>&;M{`odR-;Kx3;Z)XzaOD&!Hzp63vPkQd-_IyTq6T8{dXLK~r zM5@_4HS6vk4R@I_8qzqbr-}d>!mmIV0skGXnT{Xd&r!uSDIE@10##Y&&5tfW>ERf0 zJdk{jkq?!t}f5Mpe3e4_3=hp!f1O#)NW+mptdF~eJ!f7fn;@}ui9{gQHEdFgfX#)p$|3+^Lx!2!)%gmhHllP)gFkroVL zNhO5k&$kdOdCZ|XNxtf;Rf^2aq(o5XUvp7c&%^|P{i@o&$VuFXusmByR{&;$?*xk~ zu056qensS7wS)i+^*1tBVl$n8mmaZlhNFm~&!IWqWD&*LJffWom1}Bq%Mnu<{|2)7V^e!C;HZp77vh`aLmaRajL8`J_7guH7xgR(;|G zCwUf#rNoMCOqAA(=>;)mZ-0r6%xX;pm0`4kxrB`0wiyU%n8{?=P#g2} z&ZxbkDr1_fF%^9Pua#);mJ1roq+=z>xw+^t)n3cl*WOv2%2j6>DmfsQqJP{R#ZKwt zZh}m~bWUMTmE{awwXe7jmx|BKTm8f}~`Z4<;G$iv(A(CVXg|(L=BIjQPOF1yFLLczWP#>syYH*Bvtq_diJn z>UF7>Ze(UpTJ>^g96wj5&Y~ql=l*V|^F_$+Rno7hoYo3jzR*AF^-i9g{?b;TZ|j1M zZwAcu?<{DJ%b$Y3a$r-@DH0cZ?aUmWy4f*WZ=S&Rl)uXi?!Fj%(3hdEANcdAybafu zI7V|9Ex?euB`CZr7U9XDD!)@RsN`am{&TZcao;KwUvBu->dVGB0CMntMdcfvZQP?d z;&KQT+~tX~%8d<(YyXmEd+#7OWD3Z#|K7hq)=^U83|N76J2?1*`Qf+cu#FgbZtH5S}Ri5f_sm;R?pv33<#Tc1){$2Y8T2q^@z+EBNiRF z0-yzPlu}jY_f|$9s6pFhaCgLu{3#z|^@c$6np|X|`NyhP0jl2avytkEj0pqQD$bTn zJJMr|)rnDq&{#v*w%JYRnTDv8j0>%S1<2)l87v;J`?KaQ>Z&bdr`@}{oi7k^KnA}6 zykl#$^p4(HsgH)DW6j?+0o(;jYc+JMSW-ssuxbsS(2RnbM~)V=)i<@267VZKz5t4I zgzxHVa^D%~W}MOLNen(v!pm+Y%k`_#>Egd>k>a{P|No1sdW{kS6Kqo$r>1%lZ$UX_ z@;w(nHOTE1l2FRAYN#4#2fzI|q-}bOC^F_Ax<++r^@w@6i4FN-Y`ON8xz_{-ydVu` z0hqEG98cKa=c(~mz3{ta6Ujtq$=Q&;n8RJ#I4PP*OHj);LlN|A3RT;iOokH8{@ugf z*X9@J(%R(eUKw{c0=+A!+G zE${oI-L{z1H5>;kpRG@42tPcC?;dZKj{Cei^;D8T(VxgZ7P%$IeD@HZZ$msmD8>2s zEuZm-RIP1yj;V2PWvYHw87YHTaW&A!=W9=!ua;~dCU z{Hg6oZ{_tsHTntf9WasqJwVp9`o+r3(94A1*FeUQUdEr><_o6x+3EtSRg@bRHby8q z;9Er%wb!n9_oJ5Y`><0V1Ew(dr=%SM2UNPuRb-B~%@F%A(pt{vMWO7e^4fyo*Gt&c@~}#0=-y-3jxtpBm)YHWd9% zldN$Sz+rIm&kOL)$9h!aM!CS!2P(3fEJCH56^yF}H|Y`A2c*<%L^@Mgb9@~oM*Yxn zKj*mD4@&)~f~ZK-Vy3^GY{+22I`T}-GB1quh(2enD?Ja&_IY zvB;{L(lRQsc@PmBS9~qvU>JD+g)v%NP=&450^g?`%#QNBxFXD6Hpca6KSkdP4`A$(9!lv;w%d2RLr zn{Mx&UBSb9gXc0j{>6>2FR^bH5xbG!##!K>TB2XJ<-kPpzYi3Iq-zvUU6fa zm9nliS42yROoBw#-W@ZK723~wkA}sx6xRcDz&o94Uq|;6xtk!=R5XR|m|yhZL4b`? zVX4A^FhEBPFlFFb#37qUhZE03Di_A}niql$Y}Q1=Ro`#1fAPo%TxG+Hh}nVfM_o}j z{;t+{wNvRWk7jGvfo-gS5U%IJpfd$BvD80hh;s`Va-$QLWcRxqc1AVVtZMGE`&2YK z0um!>eZRR7P}~kE!ZmU5)KCS+QE|brgSJ)-$s@}tyc$@czm~3b^Y6?8Au5c08jVbE z8ZFBTi%tFkMRNBl|uEyoR(romoBdw_Y7b@!>*kB#pjTl#ASY=?`ijLzs&Kc z%P`As_;0!a;4`(TMd2-*dBv57YPIiloOZhlKYyL*Ah|SO$jV@!LHM{Bkg#AE%9R5< z^A}ID_icJQAZOG*O~skSUHG(v=ri|!=d}H6STdRRi%%nCO12T4S##QXSlhXFmNh#7 z+V0YKCtgwKVlg2pd*7UBMr@diU3*b0TlV8cV#$^%857xYU&b#AYKe7CC4VQY-~I$e z6`Tw>_Gtql>rPmIFBDKG>RMiM+h^H*Bu9D%bqPwqo9v2}ox70NeLKtyoGeInCd->~ z<3=cL?y86!W*fh|kVA5%->s)KZUHn+xq`)3M^R$@Dip)YPLwcMj>5Vimxqb~BUc70 zqS-9o3&bDZJXjnb_vvpsr!N1&f=yZSXbk?SQA55p^;tfnA4r0J$#i|oM7-AAj?&ac zct;_5g053CkX1nr$uDJ}-X4t|d|2<5zakhg;*U5!%JYAp3DR@6w(K6nzk8*s9@IDW zpK(xrkqHLc)qT1liC(2jDHo+jsF!5aiNI-^Rs6G}i32~1`J@Xk_vX!PKq11D#TCDN z!ecJH>cGRi4m&nq5EUP|8m2cgm-RG__U|yDC-b2!^ygiF9$%C^nlP~BMB!cd$dgFC z(xP8M$82a+#Fq!@Q-Q4=WG)Sy`c!m=PGY^e3#3KDyn%lm!XXppkuIC2QvkrHJrxJm z(=Nb4=7n)v^}Rd0R>=&n0J_NRJkMb3cR^$QQTdb5misG1+T*dDLQ`=iT)fb^zc`?l z&HI*}k3gtwLW_#b^|XXb7q!T4rXU}ests*2YQMTd6TwmbY~C7BM0||PpLZf!|HK@^ z-GCo{n6)t?9uAq6;L=G>Y_86U2mD`!asqIhB_40|af0#2kvXLQ>srjg5FFxPmomw@ z*IU(i^tz|e&MO1nA{06i=X&-e6JM_}4~9Suxtho8FFsrQNvO-ayiD37|8 zlC*Vdi`(|fx4KRvo+7F0dGRT&vEZLxjTSzNYMU&>3Af=6z2VuWOxOoQG(FebWILh# zu)X*LZ<|1(6~qf0gnYF!x?k>-*F^sX5 z%pzi7x`y0j3lOi@urCP{tq}9SU!RQ`Wl9`+<0s0Vb--gv+^j`Yj(1AITg?qgd79{c zbw3fSLb*f6s9P_X6EbZmKHwr(?idnk?Ml6tr&b4+1l)uPx_9Yog5- z#`XmB>8O4^YlgT!xmBeX-RouTE#bYWP6`ZAM@o4Yd3QCDf)o-e{;ADCN4jiseV5!5dv?jZbdD> z`-kU;+a!e2r@mEXeLMNWDwM|%q35ot;me|zaiAhYJ!O*{mm-5&nHNllB!Sw()Ro+s zZ<#&%+FVcv!+C<>&793p%}F>>(gz8IT$~*OE0jw=i_OxC2HjcX>!g(US{vqRG;UHC zi>&7KvA*nlF2^9+yj_zyWOl|+)nAD@YuCVyC5zd33uTFBleE;JwBmD%3=nLc;^hw* zN`6K!;O}*m6&sXl+t3)XU5SFwa#oT02#ACq{83^2$y26YCq;CQKyk5!DxBR_J^3cf z;Yc{?s`Y#}h{|?Hy6_IERBW15*}nQ`M-sO}16$$+A*Z^yCp8LL3_9AsKKhN(DYiAd zx6e!O@E)0HA?Cf8;vbMKEN6(d%9X>=I1zI;+l=sCBED}WT<;yLqYvm*GhZUBTID}y zOf8x$hGQ_jd=sB`L;11q*eKYz^(z@N*3cH;hcgTNdyP4 z)=ymD8REytN>{x=r61KJV(2es!k*v7q;g4?6-l|}G{0}A7EK4kET=*#Hws}>Lbe$% zTj(fzm#4gF5Y-!54qn>EueIb^AJ|dBAW?FZh?{PTkO#V}OH-auCsfdat zk@2;7-HjmQV#dcAxcco#|CqT+s764?zl``0-dhU0Z|uaQIQgXFMFrM`DgGpmr#C}b z*6uBS>-?X^?YNzpxJ8D#S%fPK7Li*J=JI7FH)0s|_|IiVA>5a`8FCBojf&RDLGL&+ zG9yN%2RH^M<}_`h_Zp)zZ=l(7qBbU-7g(qdt;@D#j@fxg#gRuW+@({&g&eqlwlGA- z!L2}>1Gqc^^YD#r0$>I-b&Bo9bt~qrsVxBACh8m%0}2=KoV;M!{*A9_^PcAt7$q&h z#husA3x4^B{qj{@N4NgrFc_@4y2 zMsTjTa5YDkOb9mu39~XbRRtMrjtUSlp+hNeh7=Zj0(hVP?24`;puv1J{U9R{eV%%L z>{)A>3ZAKyj1-r6pJhYBS^UHx?-9Kq(0ZLw$}-xF`w~5Ko}`{x0`haV>_2RX z?aefBj!O~n4Gy#pxRnnCGK$Ym8_=KVp1App6k*Hu^l(Xm-KP{_M0WlTc6B`aJ9iTW zADX&?jh_S_UXtNr{#qMj*N@+!aoKBa^j*yN+Y}4~{{#;1<`rIe==n+X=Yd+P2b1n^ zn8ot?KKdn4Zegy>W-Y0NkPds=sz zUuJ)yzap$jE1h&J(i*?x51HdjHe*>}7~GeEFI{wcxh_oA4~_@-K%j}xdxWn6ieq*;k}hE^k9Bkchq)-^&zNkSHjq)p3CoN5w7 zzZM?i!?M3oy|V1!AHST2^G-9Wz7~K6+~18Q%<BwWZW+OXS6Dh7Q zv+g>ocRG-4hx4z$h%4xP`WZYM7l;24nu-2}p0jnH&=V>j6;N<#e#kFpis-O0 z`P<>yKdTyw=8AO7sR3}+{Yhqye=W1(Y8{5w;?#=`B;Yi{gbN%i7!*m1+k&u3&_<}p z3G+goNsymUhPT^{)5Uy~m@2r&N_bm?j?x({pta$>m6q3;Iy?YG7fp-VuCMvUDS|7pg z8PmXcZ?i#a)eC*K*q4Ir1Be*SBXI$q{PX8y8^8ax2si%L`pYJNqTAf40KBZ4(v$Jm z1_G1lo)clt^{-hOYiXw#!bwCNMPP%@XC(}kKFI{N^@nv|io7x3PV){IRbPsin@+_+ zQN6~0_Q`o;z^)We`8Wi9KH;aCcE_d5aoh6&7{M48UME)SGw38Q*a=`wPDlhxYQ3LO1MOd*hM_oCG)jY{f+W_hg<^iU zNUP_u(<%JBz;D{&ck$qgKR+b+gLj}iLy>@wI znIY?XOIgwLR&Tl@m3pq`JH3{EZnLd2u`z5-H#3)zH#T^Q!Ji)dOW8Y0BpLCN_{pti zV36x+PT)(ct6}koGKWPYwv3U+N9jS;W)F?u#{`RL_{;$_#@1XNaAXWQB*jNqz z-mucJwM1~?>y`uFMp8iOj}eyb;O)ybWQM7N%ymME|I~kZs$=~WRE~an!GlWe|1&KS zTq}^)j^a`M$(!4n)$Sq}^Y~7{Xne8xr1h#G!un;Y0svC$#qGO7^vcGw@9Gj~c)Xpo zB+*2i+;vsBba}m^J#F}c5eZUVHT?EZkpo+g#6EnVrwlUbz683nSkK{V=dvx$ZSIPl zvN@Xo>505+R7W`Hlq zQ*9^uLxsF)R}yEG(d3aehoy0;*}(v5(E3NQmd&>hi|$=R=w$p(`Z+&TK3_GN1Q*L$ z?c|I{Vf<+HNupCAgTMK3G26l}F1`MVjq5^wL+i@rsgl<1p-E~bo0$Cj# zkI%I>CVe+kR3$0XSQ?U@Zh}ksimHz-A+j62p|OJeJca`%=Xj;79^9=;AogA+fW`h- z>~n@jL?KYL-qhQyJ52BV7~ym0{hPniG9_r5MN5(eGM_J`wCl5lCdAPe2>|z2mWu9< zaa)~U9_)$iOQto>HSrgB0LOS$|1i66BR@u)M1)dIy3R%1@#nr^iOGgfN2TSXq)~hw z@zQp;1xg2x(bGH=&W$_VsJ7#65RBe+X@crVKsAO^$ab?UsrxvP9QL;eKQtxPZunZ+ zmA$TWbyo1zwWwJ(B!)W6Q?>O5&8K0vK&G2R3(V7I9}e z4#a>2`_)3$_x^L*(kp6-t|oU@7j=HdyW5%5SmxE0URUWSGpT)sU_ivCleSYn&Jup2 zbCrE-CXjP6VSco*4dQFhCoA4bYqPCGE5&@>1>R8Q1yD4y4^p1N>C{I|gRbm5wT1DF zh3Sp$doxs^{r&Ui@%1;7hdKZ&^7we@it4Mqzc~DZb|>89jpX(_Z4iX0IKCoM=3!o@ zZ$HR4-`nE6svGb(ae%97-~%uQW-9MVJl#q3Eveh1y9fdx^X7Q1(&sn@o_k(&DwIMcACfWNlf+S{-s4vHnKV7| zamdW`vLnwe$Es`+|J*^JQcbuICGkm2^)xcT6Arg~^V(Yo=o1*BLqu&M3ZM=xM|xP7 zZFA)kbOCm!uJOR&l}1UVzP?~-^q$3Pu?%lUH?Vi4e>p%+3I-_2+7dFp-U-;ee5#za zKIB&D1{|LbA_u-|`c0d+aJNgsS(~VSGEUe0RdBK&WX960Dc`N}E54-P~Uv>Vf9QZX|x?AN@ha zU{JdkPHPp2pqoKo32=JI3)|$$HfxMxI-u&NoYyLVOI)nbHT~G_jxVoj^&NIl<{$gJ z@S#GihksOuVHfhuhe>53(v(f|c_0;O;N!1>xtXh6qxJ|V0Um3u7^sGbZ56#{C5$?LHD+VwDQ#JMhBAcv*_{TWld9X_0Q z;iM>Y-8ce@Ie)it(%Z1;t?FnR=*>F;Brz1qyTxO(7j2uic7rS8us6ad5|s%_eCf?B?%lqSE;`o^dn5OL-$5BEv8Qx zxz2;ZEN>4qKBo@EQrHKH>+&#bero*Mnld>^n6sa5C#w`xsr6tQ?)LpID#fYRQd;zn zflzIVVsLpoJi6*P6kdYh+iP$6;@O!pgIjd(a=*RMM)wDxNgSJZgyKYy8T+|^_!UzB ziFjuEm(G*6o;T^`$}JD>_fcHTe_=xeuzXc>_UBRbgW20MAEc&ZumfmNq5$M-$G8lz`bFxWk@Hklxh@U>2tik zM11+LdRUO9s&m(PqcVv#jhZcM_!v6&V`PG9NI-jb+@4D^>f1ln5A!;!*#q905v)g_ zIT`h%wzDcMTE>JiAKaZq+wMv!2lB03Weu#wu>*~-j89weC z=rcDoB;|BnB^&OAG6m380zwim{N@#;$1nN6^vLw$^{yn`yWga%!5ymv0GW&AC*=-o}{*0 zt!xz3)!^vgTUfN4Y7wZcHeJuT zN26Rd2GY_@ize1wu$3n+qq=z|Jm@p(r$iNO#-T)9+Y>(%13w->T|B8x2M?0quTx~{ zPrTEcw|QJ1cEzcB>sb z5BxtIop(5u|NqCotxu##$_yD%A>)MXB724Gc^r=HkiAkk$+2a0LiXN!m&36RviDK8 zV;ti+Hotej>vFmLaZago-}n19p3ld#VUIN6SMZkExbRfFdBq$fQjz+f7;)=DM!xN5xwO(YyXr_K%1zvS* zBF4pxRAva;ua@TB6)L$OC!#Ry7ZysgK)4%37F!b?(MN7gscmFHvZxJ=E^<(`mMCx21P+JUbDR_YPYFO#&hRO^>^EJY zr5h^k2WLAN@irQM*DhvN#lV}elKf3}okG=T#Me@l9bc}vJ(x&wW<`EYiD>~aa$s{I zWScWB2GYGNzuq!6`8ENH4%Rt-f52kd-DLhGw+Pn1_0ABoy7Ai z>*Ka&so}FlKVMUj_m1O*i`w^mw;R*u;^tuHnkPx5pXD*0jf(U>#xkRiexwKE2@}jrVYH-_=Rn8)%j8Gx`>ny6^e zmLw;~1#Zaf3Z-K_S+mBiI4fx$Pb3wG>F87E4QfKH?RJV7a>~V2{QU`8{^;6gw&c0H z3g*|p?mSa=kafEXRvdW0)6~ZwQJ}c1)k~2nXy*f@j_Zk5CTmO_x zSNhf>YjX)FPCwNFACG#ewew)IQjDXw1yo9X7 zX?;$S4D{sjURb>`HMX>u_n&p6l`)uzwf|=yBVM7I&JS29BMhZvpRA-$jZzBc5Q}u* zwRT8)6a%bIb1ElgCb2(Ui$@`iK8JtX3cIA!xDH^sORN>qfPB-kLUb7J+&_ zX&>dnHQ+{SV&E(zolG2Ke@?QijD_<7Vp(7N0=)I zeJLH^Y8plCyNWhT&`N}-ILM!GL7Mf$L-maM54I{_%%h4E&pF;re7WdraP&})W-;AR z$J#fO#mdZ-yjY53?(oT$>ML<$>Dpso+^>@vq5eM9@Fd};N_t`k=i+%C|}uY|fmJ6Gs*; z@wN-SHE+H!XJbA}NCvy&Dj9Gy#yYCAyDM|K8xv78^obX2Mtk)3xvLlm#dc7xh8^SS zlzr{+b%C_$C4u-&*Dfz(_W*il?tw3Hvm@qmI;7>r4Fy<5Xz{-=!dj^{UEXn2*(SqH zeq%bJ+GA)=qNg$Afx$OkLJcP*>aY5z29QVPQ}}>k$)frc7B9!d{%CxU&H$$reRNBL zomIiq-TihQ#etPfOaQGYhxxOzPwE$!7gTZBmb@q`$Xxd$<}cinLdQL|s$M!*)@E%X zMx%AiA^NYlxz<v1f0oreQg4^9tl843_FV z%V_e;nQAT9)2) zd*UCt&x$ZO-QA>dGp$iIa}X#5?Elvcja#jL2Xfc{Qp6PkAS!*ia)`ej)-y;AojC&Of@xwk8I8 zKc7gDazc5^Qt4!+`x%Sul38{GOsCGc%KFZu> z>d)ibw?Ed<1;tn^h>Hz=`|daDIA{;)(VIqSt&AGFuQtsiXyIb9>ek7u3b*VhkKv|X zFxvu59=){tw&9WJUAFLqV*aYl5~t>8{mozx%GbKdVlG6;9i>aZ*%u)E`3zsIzD`k! z(yt{>RY_x$z#74JScv94W@_7hh_C~%d8iplB`4xp#?Af1Z6ehNh&MLhK17%XUR>Ub zgbUdl6ywoYeW|(UVa@wDUlWM6NyyZ5jlgi!;1kS#WN*_7iRk6J^;}G@&~xe@XlL`f z-RX}Cy6?4;J??zVkGU0H@U=9$t@S|~cQ@kk+_NaF<-bQXqN%Re5^7o~IZAkz(b1C< zAd(Yj6;WB2T=_dNAG*%tWAzLswN_$uB95h2an?XQR_%`}@Mp6|?V*wORMiX>Z+F&j z%)T*V+vpcr6aD137UTlysrj<^G2A<7Nr?)%I%_u3RA{@iE?}ihg+wLe4h5D_N6b6L zQ@!4Db`T$PzJN1>PfIhI@_%%q<{oFs?XFW+Aa%{#ZN7cOsOv6JjEx$E9g)lre`=RL zGz?Pr3}QEk-Dg+IR*&J?V5dH5ZCX0Cq#=PMmBECkMT2Im`nI)QqH3#dn|-`;KJu8$ zN)x9aZjCc_{|B0jiXu;w z&|S5(Hl)PB^uDoU=TrK^HN|y~YK@bZX{xM_6-#bSQQ@?1QZ;$vGHS`Ao*Q0NTQyTv zHxiI3Dcr&!077FwzNs#~@;kreu?i09?QC$(o>(7s#*dYl?B-?46m^c-W%O*NVh|#X zz8Bgv9UJXa`CdJbJ|{)RlxB*ms8DN*?6*)ZFne?31@M~d90)emNL+g7eYXABOklNg zC*rVm^=*x7-O1+CMy$y*2T3U@35b1Sl$HpoUV`q%cKChId*;DHS?(I|XQ#HM@L%Tz z((J|d1YemoYu^uTy3!XDs$s%Zb7@Nmp{d4fqy3*|j($^I>u=)nJ~T^oGTnA{R=A(l zj#sfWsyrM+{=g;o@z0TV4fv!st1n~`ws?LL61CKMu+U9}_H^D{6j(B@cn&obV=Us? z`|!9jfSxK-LkfjMik)UUkvhzlLnz_5dMy?@H&m;?NR?~u&}o|$M>$}yBD|jjQQ!Mh ztbDn??maf>C$lC}J#?=W^|c_?A7a11H5zr5a>g*0l&v$L^$lrWE?UN_iTsPwEnUGn z9Mes7tq{w9L-)}CVTJ$m5Nty0qlFCIB4rIM>M_w;xgph_H(dq4u1p-n~)!j3tgnR{UCls=WN7MPZ)dxf58OO>p>KXn*y z6ZfUTQF4&DlsdeaM;Y8-)-x2x2|#!ruKS-`{=G*Eo34hw9;#YF9GT#J{p!@)CF>Sj z4&d=z1L>lflJ$f>%BY0XLXoxrq_&6FIAijffW%o6{{ z+9rfe_wu}9O>Eo^0qLF(jBzFy%Vv*L`)*Wkw-XGwy_|eI_t)o_T}NETo?&%t{?0#zAcqisDG9V@7k=r8w#fxtUHu`#k{!$EopB1!h~4e1q5+tc%R#RHDylN3uH zT5X^bQjeuU*s$vCf60!erBrgX;}iPWC62{2Od4A! zHJ!}n4x&5I@g0rd1J&Q_%{>)S6nQB^?40kE;VU06yG<*4v-|}~l;KCh@*XrRyVNRv zkX3lhUU{?JYHWLv2yJgR(f+U|3Wc=X)gMPq!YVmfDlady>R=)d@9lMwDGxC3^u-%) zmV14S)(hJ2XDJ9xK`B+gZQPr`y4{wcz*k?RvHU379*keysyZ{iBQ=WlZydumxY%kP zmT#(I8eJUy4Hk|0-PPK9{%20T(eJFX>^6XkaR%{6aBN1KG(9Xi?v)a$;$^`AkoO(AGwD_tE$3elUQ|fbxGPH+V3fFvl?Yl z4h5{hyAFuh1u-}6;t=^1?aHE!a_Iw0=H(e-2Dhp*y5;jx`Omx^IzxTY*^>1Am}J4GRZJkYA5raov#7dN|rqnqE(nKg$O(wbm$2_O?LRhog*btFgxtuXPwALEDo zj#16@1pO#FaHdPiIAO4*K4@FQ!&OTxMskm{=bFOOA_+J8zI$naS!iYRKn?cLHFH@ zf#XLxWC2nTeK|EoGQM=vGjGwxn z3wV9t>FjAAh0l<(kk7DV-GIBkU)ji;wUc?zrH;WiPzm|vv~+!VMXqNeVPrQZj9F1v zuT#6Ord8C<_^Qi_bvE)9Lw8cSm_bJxYtx@gpB@(yqnE z@gs96HnI=F77nYd9sFW5UR*_$*;ih2E@=G{@=fezw|Aq*uK?g*6}h0VcrM}=7tv^6 zc7i^X#Rssa%qW*8P(hl{q>nYFC1Hz>==mpkqrj#IG^@ZlZ!mT3L@;fyfBR=n$F^zC zwJj^@MA|x0Irx?|O>Yc^-mVyM^}B<#xT+0PGXE8WKLEO%;F*T@kPVLKAV@neyEWbq z?fU<>B&-tsK1PeHQ_OT@YZIwB=A;zN&#xu>o`?n@Qz0844N=I-7OIV?qTejWq->*W z)9sRU{#V+^(9J9AUhqYh>stBBq?WjeF$8Tvn`Niz$hrMt(5c|?P&m)Z<i*<=rBU-G;QO;fxhH^VrN>jPM?CS-KfTHzlq89X4a-l&QhOz*KBgV$h)Ejea&k zVo*q7p@r~@JJaESh3|f=S}8Cv;rJAv%PoM3rCHU_h?HWouh#Hz#64?6&>l>2LL1(# zd}nt=IKstD3|ZkbZ9UhOP}Hse|qhKt#FWBH7Xe%5NZ}oB-*>v6K?sxTfQCKWUe=c7+lENEQ{Q4-|E(x zq6EG%Ky+SO;7m3B9NTy=W$>gkdf>zm5yRrUfG{+3Kt$A0p3oiMH3#MRKKm>2v2ny? zoAHH!4%0FtY;MyZfddDrS%Rzr|BP5Gi;JOXd(f*iRIpo98PnLO&um_$Unf4jbMv9W zXAnGp+|L=2!B*AnGmm>*Twb&il?)>UQ~T2NU_VRE&+nMO2-x`K{86o(+v{_APxx!i zOrx56k99aU0-fg}XY$d}I(TZjpw0%QaDMd!ZR+>;9v&^C>F{c5k>}SK?S6Xt>oJGU z=XweqkKK@=ay%Pf&@ux&V7dj2--Yc#KUHl13tS;y)Lu&)kX?)<{ zzU`O3o4>|onZ50eNIzs`cE^Zts*UdCOK#Ct4;4LE9^M1cZ%K!<8J(uhr8f8kNo8d;*mEwK-Iop3F0y8Ck&?N09y^NEn0D zYu9(i*35p12979iqYvtTI)4nTk8K*kAD=G_e1s1K}oC|XH zpE*6dj>wJRIB1MJN_A`Xh2UOpd2+*Og-mp)swl6wu;TN?RAZ&2MWt^h+aF)H;5Rp| zEaN1>yT&I92Wi}QNIfrDPX&(SfAJL`;;yrKKO@jNzILSDAMXxZ`wHzdCQ$3sC? zkn{lP9g)2=gwbI$W=DV;**~p`i&32O70w_1Z`xOQi$q`RNAKPf=8k2$!M0>QClPQ< zc6fS^B1tH>coUduEt$j|7^0sbn=AWHan+AV!OX#AVe4T)GWE;g3^r294G@;seNgQM z&cX4pRlZ`Ge%~1DRX#q$o>+g!TKLiB{R{Bt3y@Ae9O*W+0GQ_UTCRt(Q;?N0gkUG5 zjw#nh@n{V1=E%cLhf0uZweMgbSHs2R41np_8i~NOhk6)zp0qmQ>020Y*nmKQbKCUG zLWhofEv+Ap_h}Q`rz{+s!yea~^Df6MAg6lGZqz6`GGt3<)*$Z)*(s8!Um5={Fu2pg z==jA^n@w}f6Ppv(o;iV=O{NNEp9OVk>33EC^N z694G65>{v8`DDAzZ{N=>D6=RqZy%xu(ah+;HnmnW97(5MAk*EI@CL;dT`|#~>3Wm!qwkHE>4(2bXGe&4 z37vr;yBkb1RLhskwzSa=1`=1-!lg+9wip#SzE{OEynEJ}e5tqD8JVZ9>`x8L#$N4O zDDk|5uUkDK*C7-M*YF934HVI(Z|o0M-W~Ih(xPf)+3a|PG83qi2)^ZMpd7v>w5T$j zii)u}I#63i{pD;3iM8E}TzfU=OEbJuV|d8>lTq5bVA?GRNt_0iLg`AuVd$Z3wEBQ9 zf}wVi?mBEN*T3A$@>kcm){y|`SVA`xqf1BG+_+W%t2u%;X%X!DekUWN>u{suH~kn=CS_wyKa|v=!U*D7lwSbAt9kn;b^}|EpLc%cIGZrTC}oLo4seuQ`71* z?}86R1KoCPu(36-yw0C>KEfe^+{Ir39;WpY&vy1_Q6$USX5LI!?5(G=`1dz$?sP{d zn>s%gc_XaO4cp}!(RoY3`q65`)A^%GNtXVMt%9XNPa1MWXV@2lk7XJ~Ik52iWooJ@~s;a4eKPt1fp>^WR#6lnGg8|%fHVWt{_39&x%iyNfq9j=RD|_CgbR^-h?8e?z zL54E~2@`-_8Cut~xoX8#J;E3s?-j}T#(qN}4VBD~Wz@EJaG7e{eqgHaQ>cRBg^4i& z53kIOSKV`$Q;Nsa3+h3AkFM9|!w7D-k4<{dUem*@rkEv=uB&vJZmku*n(x=>V36bZ zkd(M+WSrCSR)-^=iM5lOy)r;hM5krfkG>*aO2Q5s=~ohvG%#730WqBkGTL%<#`L_N zhRG-}#~(#b_sMDUq_f^<^Um7?rsa7Y3A)I1{8KRYPV^@anYbic+IF@rgSYMuG-=8_ zughUbElF$q&v^XS;u+#gx;GVL~;uEt%U||^kF%iBSBo>uiXa;&*qTF zu=sO9+|nDu_4Vml)Cx4PNbqsghpBLMjQWOHjx?9Rlkep-VZW$ETThPE`84>Penk8t ztd$JN4D9ORP|L}ODK(f?-y{FDx%1i4$vK?>`@)SmWVL;L?;W1yR_D#w^q`GArMSA@0J?dnk z|7Iadd+%^F<^2ZVzeQ=v+|>VWZkjD^hqtqkw~il~E_hDeV7iz%vmZ}Mt+Z^}eaBQ3 zl2S&p%=*-sPyHq0%2}s}U<23VoLRH>k@BA3+Z5w<Q+pkM;iO(ZHnt1=NoZ2C@o*r$R}X{5@Y zEtiJt$9gfLlFogoReturk5!)9QZ>iEdkU9TUxy;@!9WAx)TbNCMo3>)lVPwfkWy@G zlgR3q;*$oq(fMz*(xPv%ZJ^S!uOkq(=@lUWY(TQC#6O8poh=;NDbW;PJZj>dD=Kc# zt6MXdd_)36|J8wd>CFf{Z4H_-xryOat;1_QFWkX&_S}kMvO(l?+pc_Y*VyQ0r%#7J z56X84^%y1nlu}OQOa=#a;gB`F5Lk%(E=s@abaE;%WpYq*P24+>E!%y+(NON+Ww$0+ zqo9**_h2KKYbW`beR1_Hf2?kFM*QJ#dmwWAd7^_zo&uRZ!{$8^DfsEy1?636m&kr{ z1w(bot*yFur;-8cMt?M9Q@^u2%SJ*@vhDh`K2CzW<9P!M+z#X~IZp=a>ipp2+y5IU ztWq}b`&olESN66;pXw>?7;X?B|5XxT9(PTA6$>xy(7L4w#&$Kfo>^3xCiZyW`{sIY zqpDOdq6PoZZJ5@UJ<8GV08wT~l(Fs;qynzrQEV47s8^3`O@th1Sepn2rN0+6FJI z{YNLgTkX2MS7VWHoWbw}``?1}TB`EVV~(sDlT3l@#{Ivx91&SRJk9+|3d7To6;%fO z{i}?*khn6oG0GhVUI#_d=X@;(A|A z1=xyyGeN!XJpTDPsBxkeclqbqVxe0w{=P^b z2J3$6I#(mTv*jVyJ$RRpRE%1J_d70{>0g2Tz4tNUNz#oqY#Q$8uUNgvsy}g!bNThn zd;(U8QWHhYIAoIi?ZFdJi$)sHVlLx%z;s^%eseGFs z9Tiw(J$_NzmnB75h8By{`Pb2OY^QRZqf_!YiBwR!A|2`r*PQLT175@BG4u8&B3YDU zCFZHF@6+ZGClRO*#n<$gL#Zdn0;$7u*Y@usC7<6q7uMq5QQN-LHuEHRZubm3N3ZfBp`t>#EC zw}*508I1$||2ytB*mtH9H%16@k3XU3ixS~PvF32j^dRHOx-(76`b}k=?$qXbt^Duo z0LLf4)Bg+Jl@YO7XW`Zu`kQNltI6izd)#(HbqVu$nv*`x=!&Ygx;LOt>WuLx@R{=2 zwRDkrs}xQl28F7g#@;kVklyP0R-zc?!o|f0Rw-gGGvn3OWPHvT5^r$TrcI*_Q0)g@ z2905{8S=O1jJx@7t4=AOUKXQpN>3t*;@C4Ku*!a+%)6Y6Et)|R+~}eoss1+rVR>wP z;hqQ+`?C_-GZCGq4%T1m5a)C`_jy`fTjf+n4#s=wd5ci%ug}^6oJ7H*U)t^i*X>^q*P}X+0Qx7kOo8)_07F&aOFphGoDf zZrfTAhvEC?;EAk0UoM99AES)qjla!pI7;K-H{#lZD@gEwlS6$>JA8>Z!?u%0xd&J| zXXrRop2zoyQd3$}rO&K;APp_LVB)v4;Es*t^^h8jdb*RuAKvk~^Jc;v=}0WqRez12 zn0#b8dob^H{EijRk97Sy@&)JcbEIw7p>3#O=QP)`_<71Pb&pZEc60{Ap7ldoSRz))>NCUaKt42c6uQ5c7nNgPphB14l|GMRr`4wq5juanRQf=AQ%tuyo?yd7%I=Osgq5hcEPh=pg?tI=r{umO8>3i78`d(r8 zpwHRq)!xZp(SvjtU+;aDMw9cLoZ%itgWpFKi35PaELL=lCG@@R(iMJisx0||4outc z**U$7RB42HaD3n1l+{sWdEb7g<%RuU>oVJvbpf9nn{H?HLJ~es3eH+}$}_Ue87_Mn z_w));^!z;!4E>aiR;Ge&3jBNK=vStT296?-qte-ggV#JfM1|$@RRj&eS_wt%Q2f3J2G5qo_?4s^Zn5Zni-1kYa`nT&R zh~l@sFbF&##JBC*KugyD(4R2yF;t;$)7~x}{jM{d$ECxEK6}@JHmZ%f&7_(|!DIjq z%qt5(O0b^tw>uG1=%}@s5B5FQCiaMfAAC`Lr{bN50(%kOYR~Fge@e?oEZ5yOnISyd z^PzSn*1Wqjv{Ul#PL?K5^0h*>!z+%~Th4R|`L$GXL&?RDNVykDVn`}TRC4uT{;gr~ zsPqx+gYp$PvAXP2R5R?MDztM27=+g8>?*h1#8Ajm2iJ_*q5sCARo}mghjhnVPvB*9 z<|pAq@68UcVH{m#_kJBz>1_0*a!(*fbdz4@DFLTsbWUnhD@b25c3!@$x& z&~q^|rF_2MKt9lp#?Aa_pI4P;184pLInwO?o_-B7r67Cp1w!TM1oe2xTl@ka9?iis zuKtK$0^>q6RjqF@HPw1{^1dZV^}jGTCGrY^ey;Sn(H6ZsK3~d8tnWB@zI1h>u{u`s zr&ig{8h_G+T5$dmVp>eHR4UfDa$0buq7~V{7vlM@iM*=d43Ew;-PC7Q2%BM!TFn>3baov@MRa8Z=GO2taY&_V26vFLgytOSxwRkam>vuMIV`* z2~2(a))NyO7_{$4iP`ed)j1NdPVO(vXkpz5uj=vMjM|ADTRLHGGGC7ZW&aIJ==HF@ zDb5X^(d^CBq*Slv*TYxt28*ewUufRRYCEt*9*FUOTpN}PrK;9zmUvG;l*!-Wmmsh^ z;sX#!p`^+Hho3X-}8^+d)&DT;07*E{_*B=!VV=8UZD``KSYbW&mERsuDp+8pxeAQa7cuYfAi5rm5WY~6pABv zr8zX8K0OGssGp9;f{Bn8|3iHt2ctN!fE;&t7;WQi796hW^e9hWdFl+Q6ErJNy+U!;1`~1ccY?Y)+k;CW z5BV%f;Q#yP(fvv)xt5l*0wY+C)Vxa5|k1j_*laQUd$C zbzgdGrUQu*ckw1B`ZMkPi3WSe4cFJ=o7 zXOVJyykddH$kiO4knhzi6$YRw8LynVm~J)RB={)Pql}I4J?vBzMgeU+bm1Yt|m%e z%B(D5DJEI(qU;(vL-zh{jRPBrfVAhY>>B62*xU?WBd_5t zHSYAt@^^+!<}{vm7NWHRu}7Hgdln;~6?{y^XE_#eDs_Ku zBF`QzSfcT4_>z!fG_da~q*DqGdE|%zf2~01osTbELvN&q+Iv&G7VXo859UJ{2M+zt zFXJhj^VP9DoOA8*E8$5(M$r=iow2?Gp4nQE?GY6ogF6E{4LG`L4)e-Q;Vn-GIECfa zNbDimgU4d5=|}r?FZ-9DvU`?|6N@tkfo!cTU1DN>>`&a3kW@227wr4$n!gJKA1<|K z!d3+*pNNyj-XY?pf_cD-J;K6pc@T`zwK)ze2tQ7x2s~Xym&SX+pcenEvA~uzY1Do! zxNEI>+=(=nMv4}v+}g^PS8AC^?B7@J4R~)a0;Da#N+DPk$6RysT-J9e{p_&LoRw`i zf6@<3Y+|Yz+zP8=s*}xy8;5zYV?{BV=`WLlJ<~&Yl`(k!dC2jPHd<%5fQ*PDC6UY7 zMlx-OU+A_E1v&mCyI&|BFc44be;CwyobRZuI*!xUlw00Mr+qts8=FTO zqO>l6eJ@t6$*KLwKA_hAMA zCWFCk(Y4tz0i1XNj99nthtQA0>$8lNV4`-uQYq?>{Ll0(q_|Kn;RuH2yeYuv3*9t% z2o04;J&}+8;Lgt#+Lm)WtBLF(w6Bre+S`(w8m8&K64LUGa}R`~_iTJa4Cdi+7_aZQ zW?Bta*>CxAS?WD;5PjJb9$k@Xn|HgqQ#+o-E{)#GZ5Kh~AYY#KxxLsl zbj*MT3FA!`lk{utgm27ahUJW^1S|ocSxW5yg9baS&w390JX2GY1 zl}@r|6tmA}_NE~`wMG11IYvD0eK#(z z7jHfASwiSv>}OtLnfB6mB0J}tG5EG291;kND@nX1d3v z227a(YJXC5RK*}^1UZ;sjBYb_R4un6Rk zSZNW=5MxRzvObzsbN)UTpXO#B;5lrJ%{^CO=`}6gLlFyd-6wu}H(iq&Rlp&?zMjex z$5s*l_u=8MQ1@RVg)IMzEjMNmDag^h{f%F*=IMs9NiX4b)J??BY+a@wP!I_|$FMuc zyv^*H>k8qs35?U<<5J1ykW(Ag`O5k)`(TH*D|=Q;DqbQACEW5Ag4SN4+ZR86R0wm;YKTujCNimOiCkn z`-$tRH;;1k6f&G6UyGP_a_TIHX!ex>MJU00Q;M6RqDbN($6`a!HW1(GSMuk&umj^g zKHt!qB}B3!ti=e{VyC(AZ9lSJGgxWm+rEIEb9O|G-Kraq?$npPTw;jLeY7rPf6!r& zt}xZ#^R(@{-iB@LJ%he_+%A7v!k+kKFc^N$#cce4)>+Sn(*azocO7icBn?JGeZ*N_ z(^oue&NN`syHb7+syh9QL%51*?yrm?QFp-gW)!KMjFD>w+y z#T|>r8aG&0qleM4>J;+a&YSfBT$@vl`!~qNIgGN80YQc+3cJ_xeBl;rlz~&lR$A3^ zyxLKPY4>WrUOm{|^*ENg4B8tEOg|a@#K*Q?8c(%gn(*z2w6`CsTToynsW_=}Az-CZ z_(qVaS*Ov-Tk}z}=+gwzkQ+RR49bZbm9N<2Lg0c%&~l2(ty{X_d_CXOHZDZn9#2K=4+ z@2Ir{i;}1+`CXp1mgRVec^bJTqU*1^jcMs(A?`e zaggRNWT&SZq;DFUyo{QNTj3WtQ*}^auKR++imZu)&D6B?588C>S7V`*&(;1fy7LN6 zl({P@tDHLU@%yWRF7n-zx)n+J#41rXEO?}O;Rrr<$)=5mGMvsx@NE8-7Y&}0 zB2LTG;RDs;&$h)VHpI%WznwQ)*>ix-kLcsm{Lzqb{II3&imTLEZf+Z5=P6OuuOoE5 z7_lE9mcXjevUD!6+tGr7Mu@xcMwu_ZOo=~+Hc>dAu)tfU`k*U+`Lj&pcc5J+RjA73 z-C`;^>9c1h8!RSXH5>Xy6H0n-d2FFD$dHaFkL9mNhz4VDlb(S3x%9auwRTN`X+@tG z>*(~!gp9LS_SzI0)JAW|5iyF5!;QmP122|Ien~F-sduMw!?k~v0y^>ygGVaH$|y7S zjC=}FUOA{`0cq@g2VEDtBRY+2W9OQ#@t9KqTo%VsM?QXZletR7n|^KW=pCfB%52W% ztnK9K^}rnpeYbT1yVT(YR)~3(gX|4id^W-LCzp2}mkd&J`-2iMz4xChJDpt|n=d=b z-;boNjZ#6Rii;dEC-lCHZ;vU0H)F2AslDf+UVxpK}S z2@4*aG61XqCWl#bUPi8S-+vM`i7j1xuK!A5_o#@EB(W!jrFZ+sq*AFQE8Jwm z%$IU_`@^iW9~+AYQ*AcC#tNBqt-k}K_I2wfu)@h$s(3vV{@brQua04DbR-2|B4#_V ze=dMS@Bl?I080@*OLQYUsE1mE`-*HMsi)3=w_|M8teIz>iDjaK#bFvRd7l|Xk(l^D zE1$NYrY_yF`^4;~+|rt(AjhkbV{XaAFFX58n31!JUcuRj+H{X|MD(0VL{Ja3A&R|>bScNb@S@^l%BKN_E}dx? zYn=u5-0RCET|Yq#7+YW6qHU;%s6lU< zw7(eZJBx2h3oQ@wq+5bE)1D^_S@Wz>AI6Jw-fqQ?O0=_bl=L&%WL!EdfI*YW;G~Rvy=LNG@y^Ga)7_V&+*;mZ((r!zN^uhW4#;4}Bc7h!8cQkgjf;6msgT z6WWzGcWB?)d!fqN!s^#8%eb4tUqeoaKij58EWxIX7L?p+rtKOHu5{*45m64JsSXQT zRhkVVRU+vn#@^J6ga45oAUTNn8!=YcF&6!PgjRzH&c)C)^j7iq&S(9&Uyosd#H{!9 z-g%xNUB|F_9qp$vhaR1mtGM}+(KU+zCD--}V17b&MLqGHc+QR)B9yhCf_ArYOvW-* zhj@Q7t?Im-LCCvz?F(eA^*8B<#{^XAuMzmjZASD>`ahpQnzR^2?{Yk&a*pSMRRx*= zJO+!AU>Jib&=VC=E%dp8QHL>7-f|0CsbwD8*Hk2iS58290tmdH{yy?!kfbttLcLLPK{%Sq@ z51c+R2er+&xVeaLo?g;HH|BT8w@H*&z-2a8{R|}aC0iroEkr?T5LjQ5NzfA*i~K;r zh0VM(zA^;__?pSkjnV9DB|RlN9TzZ73KP_=C1X&>*dU$8AXwk*nMCG^mQDFmD)8EF z!B%5NgFZG_PR3w}?(*Rh`SKrR(Ej*jPt$WOdfVHMEkcW;=pya?g)m zOmeFvV|8dxtTn>i9^yF&w%gJDkmmN3Q9A?<7i}R zebzXl?~(E2wN2|kwbzcebBQpFqoElw*Fma&x|v}=ws98qIGnMg$epfM%2#;+fzrCZ zi&4>ekFD}7y>*dz3`_)t&C7C2>dmqro8M)RNx&l?);`)~UADvC3sDJug ze%XbbdmpVv%vt~G(S6lVgslzv$0p*)D9rxm^VNiw{~D{Ft0u4Tw&T;fF;EnDcys*$ z(iX~7OxMK1RUUDZ^uKpD!Q&YveI-nUGyr;cZb`0|A|>)IgeM)Ve>U>-;On103J@~- zoJpe5vtiG&7PtG?lD(6Gj;`>(p*_3poWom`7pP{qoqHM_@`FqrsDp)YJtoO4*wP8+ zEwtBD;eoamjo^4ku=|*-dhALMcuPl5VjL3X6edTcrm<$w2u~B=-`QI)4CKD7#=%}}<)gRsHzaL|dMWEaUE2iD+CB5z*Gj|XHIb&hW-_6E2VG_q zg-1~i2d|BW^a0^yBwS(!S>hRq-LIFqc{KAE9J(!dY8R-l)nA)@M0M#73~N!iGU}Bc z@!RhNu_L|PBtGRc66CT13SvnRqE}~-bIyd8P0O}?S&C>b#gulo{%q1rLIxDjR*xS^ z7d9J?_H@CqnuUcMAVIBggVA5*-^>%UBq8JQ6AXC|aCVXA!6Q-MLAGN=W$1`rnSL_U7+>a00=!X`z=){__*+J zbaS-XiTo_xxFWQ_oclBfo5Zxt=L(%5V_6@s(Nv_%oI1OXCjv z1dNAd5qe*ZWAX_FAbK}bTfo$OVF>?C_0 z2aLneZODhx}Mk5m9Z(M`(np- zh8=hf_=h8_VUrR$3_fY!5lS=mDKhplr(+K#kkqfFL?5xzOYXmsz2MI1Jeml(-p0#e zQ%MIh^oszqF+^wJ>8x|=&%wle>4rCtW$19jDJNgW92O!f-`u4$2`szLjr)cX^dCK% z2vbGx_z;T%oJpM5nC1v<^oGe{*xvl%*voiJLd~Zxz?!%h02oAYQ+3^^DD5ok-7&=! z#vRZ3d`Ok)>}k{;4u^UEG!R4O5u`hJhaMKiDw#SXLdU&1<#Gh8ud1jP6!z+sP?cK;0^Zs@vpAUKFH%tCYyS7wX$N7O{$I!SzRLu89JTTdE}LX zwb8}XXNKFMkKv6w5F2asuw4v-e{V5&T_8IqLE+bH?MG7yXR6}Fy$}EsI zjHB<%Y@i#jfMbZ=erDV1odGtK7`kK1B4Gy?p|N+@nf2puZYW$Og1%ZKXg)Bnq}sP4 z-s0Yv^cp4i_4Z{j+df1igE_vxpDHLg@}A>shXZkMpJ=8DdtHS)-v*30zX7s580hd_ zh>Nv(M^QzEX0+QKsDEYUP90x@Ad3E3k17y(b|~&D)Ta+t7uC>Z=*tCgG2g%nio}qV z!rLe;6pbZsRVt)V{y{Bf0#IG^%qVP}h52>(3KH+j?fFb)<0~v>@FjV{C+VLg?S#g7-)&_gi-VhU#^Yi+v-555g%kb4zimDUp z>C!>YC6Vc`l$2zC=;gL09@_!JY5LYV&qgeCgC4qIdC6`^%d57v7I+Cc)Z*HF;4OF& zdbD;|vXk4n^XVIk<0b)X@vM2+Ruqmh-ZKytQIxle(VDZQ-ReYe!sYyFlOshWl2uPT zv)LNx!3DLwPxoMEnR)bS=#~}hR;N3CK@*k;_tqNb z@S-3l(kI`a2^v}xSk-n03Y$$o&LeK89ztNL9EPXrDgO zL7a$9Yw@9PAV)DC{p9cQA$X?1n97T_H0S{Jr1&Y%Fxqa_FhBS#9YeI`dKEGqQ^vDl zpKS*GBfWtf@f7|;B!wG%NN*E`j(SrYjxy8eW4hhy^6fvI?$RQa##6P#;AN%Tgt6?Q zB6gkf<}@-h0>l!ykTqdI!;2J68LhM7?ma3ONH-kX&}!S~isrCQwUL>s{(NcDlcmId zaX~&H9+(G0zc)8Lp=YTP0>uKjnx8BN_3ksfmj3LI6fbI#GvH!Ra-|JG+zI>4q@hnj zJrVPc_iU(Gmf!meAYDx|g)m9BtiGn7oKbGQcpGf`ve%;Mp{TOl8fC>>U^4qWB+`wA z>Kqy~)h8aVDHWijjW&Ea*dG9dc#dZVk$x#&cbYyZWh~ov2kYQyl$heS z!yF?LUgR&IM-2sx35tMZwsn7I&pkz*O;ZUO8rLmxq}yPTn_kD|P}$?Jq6pv1Q|^s{ zlDZ!pntzW5E0m8+R)$I&#tl8ZJX3Al6A!!(4#X3X$A9z-x(j=qQ$$8@g2sI()E<6W zBLbAhVnT(y_w`F7O|luuZ0G89K(R3tIpqE-aRjst(UY9L$Ky1Vatvmz)k4PIy*cNDV+{aj=#DW|luP|76F45^95?@M@%0 zVZwNdxy{5}^t<6&PmDow=$&FQok@DCGEi#sdP)pAh@p=M@Q;GNMlaJYw{$gp&nXjm zQqpdzOM~(v=@}lkDzzZ&G)_Q{OB9`h+trM=^O6?B&NQ1sD@{V^q#Siy)ORi3P}yO_ zHmwx-w|7BZ@0Tq`tsu@0J@&{GxevQ%nTwy|=WOS)Tn$sxXTsFgQ#EvcAg(v|E-_xu zRmuN!rS&;YPAxrfiHlpd5);lZyN2l#m?qTqo%3iJT}}5pPB-JN)U3NKbM59&tNiO* zf?p#xCQ$ZsHZ!V%XfNUF=}JF_P0@?!NM$khqe$DV$ulF}>X{%G&jmSlUki;(6IAt# zp^}}7y=2e7?o`t<5Qwz@1d!5E>?PohWD12^t;QPFYxguir_iHSf zlik^IDNvh)!wC>3m8A1qGnzwkqrG7polWWeiY|bCat35|+@VR!FTwMO)8ZBBi|q?p zPpUb9N$fP_1NDMWyazxDxH1h#QZc?X;oSlg$1!lYEQ#QH;{&?3sQ$TL^DN+!eN-Tm zCwxHt0G`m{qdDYkg@jzoTI(4|E> zy_w!ntoB)yZQ)gg*^vp^IGD4^9ED?&jKFpvAFa`-0Li;{F$6DQ?MoK@%!;D>-1OK2 zvQ$W!a^q(;ipKLHSBDBEbj))6$w*~~H0Nh8Dt{S`AiCyKl_(s8aafbB9AgWQ zVbO8=_O(gkYQh~G&!T%vgz+=>9|`9lkq+n1T*8*J7rLm*3h?AGd^mXD#_)TP=rS~) zf0k6189&et;B?1zK)RK)?UjF{0$Eqis9j9eUC+%P10t;+yGJ65_f9O1dHS~{kmDm` z^8^L>?>}WwrkQpP1JDCMM+_`^ue(Ac=^~IavAW`fk^+|u)^_WJ(8u*Z@*dSPN=Vim zAU_wy$fmN36-3)+)_ZmcBHj3NHJqyle)yyKhK-eZd-y>KRa%uuTQyYGSf5m-)EJ%w~wY{PWM<)>hy zIOl6)=#tYfBIsAYUscC-W_{0M84qDySu4lzB>l{o(r!Jk+=?ndgTbwJpDgCChk(hk z7_VJsUx@$}rPI?BFDr|5cDZO@i!__4d;3e2&2EQX!&R~DI-}Kv0G^ZDSdp?`bwlC$ zL#f3!wzeaXQ0q*{OR?nuh#ZSFl!zEPS;i#zVPSRZV+m@X$=xbUL#Y4$^6a3FzNDVq z$uMdMyHQoHWA{#sC_F{aRJmAGKbo&+PY)ChQ`?!|U|2I?r&_!Y;0WQTEe6+^`xjhq zD7;1O;X-srx9#%1It`8b+68czR_ov=z&O~m?`Q02!>)msGl8!{`5Quq@B2D7q;jFU zzAUEAeT&Kez^?-bCoB}8ZKo!3XTV*y#5ZmeudrR)Wqj)q5N&G?IZUGRNK)FJIRm?l(<(wEt&8_f=BRx^GW4?ntzLf}Izy}q?zpc=Ylf;^zMABfW z^)^-X1MS(>`9Aw-aFf=aH@gm^FQXx_XUvZP*HgU?V>+>iYg4O!0lgZ&5wHI)S4W0oL&H_^vrao7M-m;g?$eLiW=(%^iWPaTH`j zOx6}&MBq`#K+R8aBeG&O+^;etke-vx66Z169GL zGVvgaAvK+kPHd0nKFw)TMVFUTxj6FpJipxRONg4x=Q^7i{b?~KyMLR8ljR@8?{PO` z8}j?yK7j3`L2t#~%SK-N;Gd-kJ4F1cu$QFMu_W4U_AFTx>Gq)r;7q6*texv!m^^&^ zNL0>E^6~U?nvW7&_afXP#@`5}U+e@MrpY}{bKsCFh0UJAI`olt?lg^q-BhsP^ajY` zcd z#`ypjU)H?>^jqR{aOd_+vwvv6w#fIo+A_AyeOns2d>LJBPQt)9F_P}bKGH+`RW=n< zpPX`DOu2fB%sQ?XM^-^av)1Ak$UPnmutu8c@h!Ek=B0NgyS`yK(lPO!I=VHgbM|8v zsYAo)bze$e0wCqD(gGtP_a`l>t4v%;msGB!9x@#&3V$DXe(ql#{VtVGF1&kW?b%Z3 z++dgBO?lDIFhL4M4h5GZNnvP$S7u?~q1Hr8Y$dG#V}(mo!a7IelAv>5VVRwCqrmI; z_7-Ww-CwEcT-DgnFB7;ws=$(%TM@!EA)Am+zweIWg{><^|o0gt4A2%U-Y@@&u5O!y`>!I(tp*V;(*IL8)HXvU(ty( zk`5Mdj7#RvRFd7F>2FIpKry}kqD!dR?KiqrcaOnrRD2EI^UHe>{Ty3hhcEDi%T7A9 zSQ#{-T*CQL>eiomNi}x|0vUF(_oH=@lvNNO2gt40?8Z~9G}Fv8ZRH?tH}BGz#~d%u z^z2u+3xmzCA}R><-F77CEL-CHl;fS+jFx-cIMX?MFJbjHrN>>fs*DTo0f)8Sq!W0Z zH5z^UL`wyA)X8FJcnBUh2#+|~oSBY^tjU0yt&?DDtJ`c%ND zZx^rb2hZnA0fyIRcqX zeQbk&X8g3*N9wJGYOF1}3PN}_{QbIiEfDd%OS-Qr(lkd<^fK1+G-fE0s;mN+eC%(O z(XWtF%*D@hkjkyfrK3-)rEhjOEt&T{%RvoD7%|&DC0Bm7U$ghm_9>uybq7p6Pi;2_ z_PKlh5S_rs>!;@_-KsfvTtbSq#to1Z9o`$0F1tGo=z78k_Edn+B!HY?zhig2rdd{n zsd+slYC>b5+@TYeuU-iHNMb)v-+_wXsb1X7bu@quYk*s2q=pJnx(qz_iB9vvD1jXO zn%itoyc4WeybIsIU&v=$M|Vxc9JKlTMr^Uv%YmkL1Uzf0M9i5z|3NAGz=oK%JKJT; z^E%$cJ*Cyoylx9!!jj0pb7peAuH_957vkXB7bo9C1!fRU#q5Ddp3IM^vralKk503@ z@5@=ve(W9@dAU5={!XU>%Lj=VjA^CS*hHJ>y%)tdbo&MGZ5odg-XW%ykZGJgCR5h=Jn4gMYbN=0=PCy{3gc`V(CRm&Q6N2v^YZ3}8=Dnn(s;!p88ga>rAk{1YPkC- zVLY5nf_;e9zyz*38e)*nDe4`%D7Jxtd<~)iY_xz8GWcwEaClXG3b#OddmW`uJSfl^ z4Cj_1e$fRxj?F>qAlBH>F5?aRj8k!S=!Hq6_EBs4nDPwgR(Gt;Oh$cSHnG%7CTGi6 z@&Cj(11NfdhBmSGHj2s(0a>=SVCV05o{r%?_h(UC(Nj&wITJU<)+;nnovs9VLig1d zwtzx_RDKrE&PR3f^&f$Br9YVz_eOM-A=9i1#+Sv{4c~=0UOqCOBVn-T+D0;)+|k}Y zI)F#Rm&B)}y1Mc*O6j3?XJpDUmgQf*SnunGt)yqK0*Qm=on>xpznk7Uv#j0Yf(1_# zdg;{1fqNR0cdmK%+ga|tfB2qAa|~!&Ha9RA(|g^o+2cJ9z)~oQ#4_YlQ6E_G zuPmj#(h8{YR8Sap4^Gi$NsEm&U>Ce)GbL4f-H>1}Iai8y51t=x<+&(UoF9^x4Dpg; z`~KdnN%+cA1Qs20Y4vct<*?S^*K0d`LiPRnZzVz7@kT)HuZUL{6+^qe(O==(?elK~ z#t|>ze!byy>b1Pve<8jV;osk3IM6m_VfNujz;b>_XYp>6i0kwdtiWpRG(FC3)vf%X z_~!3ILv00mR`l1c9u)V!ph0+R97M=wY@xy+GU) z!Q~S;zc82?-*o9UKnL5)Ky`E#8N$Uu=rzHvDNpGcs+8PxS-`TIx?`S#qS9y? zoqbCa9jHpY^=`qFej_E!N@|N+H_c=NmMKu-DpYJE1Zs2Fga@a2^WuX^8y0FIIu+zm zNOil(hbZya-w#0tSQGTk!pyis9F{=7seLOQfhWTDv zaR{sLEe!YrUz*vC4x`F8+Z;e?SN3~G(soCR#KH7!E+8WL)0DxYoRTA(_VDDRKM!iy zB5X1dtV}j>Xlll=$1nkGP1>C;L0@xmfamYB@dXmOL*5OMLR&<+9$4y+Y}VY=DP)8( zYRdEWh^(O0Q+0Fp_&q|8J2p-_yG&MQYkr*mJ{CzOPN(fl66u9_wDwOrvm*zOGp~CH zXr5C}f0h#Y=fTdVs-#MGWTvTS`VLYy(c!x_3l0fi+dU>s14z%7QXQ;oieGTH@~{tJ*XJ^webrcF{<2(v;$EHqAXqLXa4np|R!CL}UnF=< z|EMSte1(H3#b(*_HvQZ~K=`~(AJ1Vt@BFIxYX|3_9t zL9n1ruq&G`lxW{!B?&+Pne0jJ9QE(m&Gn|~Mf!>`4Le}wAvX1t@=%sGe=gTF+GLD4 z{ZJ?oOT{YLQ?l>vSJaWK{6UM+noC9~mYQ&ACT?z~sGOXh!)`Iy`d~YmamsH_Xi;ch zV={^{-KM1{_z$uDL0;qHqV>mvvWYp5!j`i@m&q=Y17?H~4t*b~-3{woo?NvSxhNe)9TTKU_+mZ9Q_~@M8Ic`5kx$gQ{UJLMb(_GY z1AN>uo^x*bApb!W)h*H%QDPyU#5yoowHA6$F+0WEw_if7LGd3KXXY<1r%IARG|n z25jB83-`$df-~Si-(`vN>vzR@CkyZ9aY-&z&2J*o?0lc0vn5N|2 zhLtq&QL_L;3fASoj)d1-PS-SWj=SkECL9Z=guw_@eAgLmB0}hOJ1~uhJO`kh?cpsW z-dTE+Y!M6=er6j#y(tz4a1 zJ?9eICw;i5 zqu;9X>@Oa9-1A04?L=OvZJN)MW{)&Jc~U>pJ0S7e#_={`Zw-e_5HO0S+;_xSngZ2 zDM~DR3Cp6tha_$|hHQcX{*0kj^q)L7Wh87MFe1e*SHQ%ECPhgi|A2n?)-S?R3?y~< zE*SEW;D|FRr9x0Gji<~jK=?n3Z4=kIi}}inK~)iyyutmU726BVR~w&Dv=2BV{u&|t zo%g3~B|a&yJd}@S=b5#=4cYt)pE7=)aX^;%vo`xeBPLl48PoVRiebcazON`{C_yf& z(XP|T27aG^G=Lh}hl=++rYSRig60Y$zR^t;1?&^nRc?}vSL-j%itnot{7^>Ut2B!v z1ae#ayxr=)yb8f_Y!Cc+Cz7I*Up2Hv;E8IG9L8^i=J+b>s)X9>oG{Em3S}bUihh4( zy3}RySWb2j#3H{+&FOGS9jlexdR81CtKd7g5W0k$!5R zk{%8^hX1+}^^qQWR?8D?8!fX4J(LdrUDEDcYCm;_Bv48ct@se;i`3JRTL2HhT{1g>Qv8DDAdCdo%K6D!xzF)@GH(lt8w|j zu>0{f*Gq5&bj4k<2{48o7}ijEe0V8K;dC4y(juRE4;So^b?5{^CNVeEBG?Gkh)wb){n%gw65X% z`sl%f!M_hay#b3)QX~5ZhJ{ymD!t`eE{p+wLq2)hX!7gx`4(j_6F@1>;Gcvql{9FS zF3HwzSCATux@kWfm7f0+daki2u9)KsIsC)1hJk3e4o@Czzge3QIf#Z(JNu?xzS{U` zFOxHR%PG)TaAzQaF5VQGqeFepGk^O?yw~5jw!n;k`@^f}=ZYdnX_Q_jRql%3O7;OA z%?Hdcrx9x>EgJo5rd@whfPdW@=+RO~?1WvNg0hw!ywVyV`vv8Ses1I{loh;3CiSTx zQOnUCxZYR?qMR~oR#3ojY`N)eH?#D0)9jak5_zR=)I5do)@kt#wrPQmyaXpqOe23W z_51qMrotoG$_&&{YJ>*t*P+|pZar{MU|v0*KUxU%{XC~_K(#(Mb0va29qS?6z#s}U zZQUFfFAG6rfycpYZ!K8RgPP{h?~EI#4_0dV5vR*UR9pQAepff9W0*w{{f9((j#*uI64u8}Vd z*$|sH;2mbM5cVf9M$gg9DE24$KIqoEaSh>{u|E5#yQ9*4bpQQ7R(WOfL5Ey{)EhgRJIO3g z#(}?@o1A>%@kiD(is(tpzJ3*)-6r?RfRySq0>t(L-}`E{m1!-`=g3d-0~JaTa<; zW5gNHR*nh(4es+g&BRP4c->@NnqbQqM#p>~y70dHmRBkt|8F+zPCeanT)fY9M5h*( zlIduxhHI z+Rd^%Ehzy4FwG7WM+Sr*UZ{F4$hUJat`-cFySwh>2wb6d>um7FTkyTR(>}L&Y>O@9?`syHIEn zuZ-Dl0DE*)eQt`7-av51-!RpfT#tfxZ-U;fJf*w$J$RD>w_(sGS81_tC)O#hP{iNd zXyBJ?RNWrtEGuRn@Vc0OkE-(bVp6$NlCY4gkRNa9?fKiRs-qqBF6Pfu5^pH*W?SB! zRC2d8x#~KgLQ1yTPU>uVt{y%eJsWkX_Iv-4yB@zrFPLY9CJd}lPCXc(F$Nkm*60~^0=LGKr#_xMx2|e?>NuGO*(@C_; zy!7yJH2@^UNG^S*PL>ZZU-I!CADXNL;UsKkW-GZvyp@uaRQQcoE5-w*tzbKBMEIPK z8ZO`O*uFgn6^vO^6~neExyDO`H*o%2PU=x~=0h<)wD88qBI1bX#G=~qu66IdT5`| z-k8Q*^b=gNVL^UE5j=A;@!f0BdCOl;W$suv>h;+Nr*tem&ks2{pY@%Ws4MA^_baSi zTF47lG6!dBWWt+(pkx{>@-{x%z^s}b1Ez{V{=~Mbwkt2DrMb60HD;ZaWIx9bsI)ZK zq`BtD{PU`);7!xP5whPu=NYd;b!EQ8tjSU>E6F+M4S>4AR(|CiJ{VG?q4+dhLn@hc z;ns!@YOr-SJks_ zn4G5OgXBf20LMbgKj#X31=;9f)B zZ*5$mU*{jj_2Ye!qwRi2_rSu?=C6k|e4ctx92q}%N4TS^2tKeBKl4H}F3;sL%X^6x z-PPO=7qxhpbSi-ahdQ!@c$pdBLmRHw`Ay=6ZPE38tr@Kvw(8WxQ+?uX>GSB5y8&^A zHHgXF?SX<-boR9>a3kwP#1aToT(0m^ndCyTdx zSl7Fc)X11Os_dRbK|bfz$|0Axm=TDw_+$ZsiD#7>mC*ue9ops0uvk}<`y$NGNZ$3t zl%bxyJ<*#8e$W-d_!+?G96Av721%x`d%^}gB@DP?pZvi(*sYPTm6}`ST1VY{y#l~} z4o@rdxhgBO0&0oU2_=pJk$Q&-D;Q-d=$1?zAi3(f?WSUf{8&E640GyPQ9~ z2L~%=kQs&s=xmbI^Y%U{?LZeD(?7qcmjM*qxb(pEDMqX)Vo#jMRSer^Z2XisIYG(} zyL~pGN?N(OFcoik2mp9=yW*4`LWR+`D^C4SSS32^BxJNlChuh`r}UmFn$V*nxF{2R z`T*k~n+4+xW3RDb7kY40=!>;LY3C^twdCLYu15#0KhxS z>TkY&)r0jU*|4d0!TI5h^KVW9(EeDC(sROe%ZqQ#(KEnXpLyGA`GuyL%fSPIvqjOt`n@^VqQomzi{n9zgUMiw4o$f2Li3atb;; z6`)r%yNdU)c>BN{MMf!y+xzdBd!7Z=Mk1j0Y1^?`65lm;^Q`!utGQ?NM-Z;e#!dLq zRs+Vj$>bDR(I@o})eWf$)^sFxD_Pi)uaSB$~Y_Kuwax?_QyggTi+8^0*3j(L} zDwRqQL&ut4u#Q&(J?uEZ?0c}T1I!!%kFv{VJRU=oJwDvyYDoc$h!}^KJ9n<^>g?a+ zbmb6XDjp>B@hkbKUoT&IOb5p+Yi87LxhO;CUR>AT?FoIXXcC1|rITI6tOdWU2f@67 zrDN#LO0Lnr8l-2fi~NqH&p22`66ZUtfCpD7FqjlaYhh>%HTt2z;)u{4RL%eU)>d0{G^`Lp|OO52dswki-N`JG(TqZ%nU_JN6 z>G=^I9!AqY1+s0t8()11h+n-Gw&u3M9{yCB6~Z*hHuRD~)&Wm?GIKVbWzO4t9#XSD zv-`;l)(uhO;)<*%R#IxUOJ2q-La{KCC$~1Il`ID0uO@HjKt7w0(v{gfGm=L6MM#$E zpdfjc_bV*#k7XS(z1@+Pbew(X686}fpgh+rYi>O-9?BM4RZY^)!;;^Sz@)!3SJV}=uru3f z-&4JEs)R2Tv@Bp~0l~EX_FewLN|coaFC#KRj(!{u7krFAKJ3s*JY9HbtNm8ZTC8t&M|&;}KMRbBx%?_yu9=t8*o< zVesusk&dk0_$-+kDd{kh`v4 zq;X&Rh3$wzw;0lGDP|U9F@s^NiP`KO6I)yP<~ex_M}s$V zhr|`kG;ZKTCT&{l#lJ@`G?#DKtj_~urb&D4)JsEkPSsEX7r{wzKsKt^%mTu;mWg#x zajQFhAcvL*6j!||vcpS^N&Gm*rAZBYMDUe?+=RaT+%-!m+;oL!AwS{XPOxyHu?VM` zId!`*(o=Q$gnQWQLOdnKi63+H%`mzbOnQl>-8XfT@u z@f0f}c2L8Rf_A=`rf}7!u}vTroG1;9us7&kw%Y!hh_mtFa0863!&(8E>)2Hx*dyzU zcw3Bhji7&%Q*xeaK0Wr*lLLUMHY;Y)&$(W718ibFHTdbrLS;&PkOwbw0fu8VIL-;k z&p>0IHdI}m=(*~liXA=b%)a$NR#s0foCDjlg*uBVT{1MPd%W_d;Q-W2O@*wt3u|2m zzENXcYfLg|(;WEX%BYstE-`f2P`BBi2we`13{4;ml9}qz2RAl3JGmAwpD{gqq+syZ24V5}1=B9@j18pk_r;BI!9 zCgOSpwj-cnyk#B)HqwccVAbn&G!-R|s&y1yK$5@4iXM0NNpXliI2W6)5D%#Zw;R^Ix4aD))Jiz6e@Ll$b8hII z``6(!cPRW#@*#9wHSp|9a)}6jgOm9s=;S{gLXXtYMph4Hwx3nL7#~2rBgjuJ`Hu#! z%djln6?};McWkxJboWXP{hnjo_HcP?ykjLh9GNBZpd|0m82NmTprPaq)0=?UvJlf> zt8@qOd_7M#Pz+j5SJ3Qp4od^OXo z0@ssl(&Tzb8_-s(B#NwB^Q>#@H@NVx!sPr7JJs{)PCF&_{cI*=iahqNBu-zp^s8;# zdFuN)1VI$g|0WfOj`nB(^X_#So}<~P&%&J3tErZorAI)x)x@_&N`_^vL(Js%j*vLE zd9!=Z9zZf05cDzAu!7Mc-+xGEV*y^z5xj1b>aQU!o~|-R2E_^;6OqitMAqDgeh?>N zW%HFm=@A%NM{TyFzG_yF)300KOb>_{XKz1*>BkbDU-w=ul z4Zl{jZp35yT}s08Fy;Ae1rqJ`219OM^y%_?3H zJR1mpCz5SbQB8hU#r_X$RN=Vc@UX>6mkr$e0`Ed$0%O2HOzhvGbSAOOkC=mG=zXX?U)LK~hVY#j5R6U_H zMd=4H(N(^MZ+E1G3DxNW5Y)M|NTIThBArPk3&EEu)J@ZV!XF59_JLm7n1^QQggl3| z2WZxmD}JKCywZ);8(Vu8?Vx>5YO2HPabPqSoQejy-SXSjK$kx5vIzG{t0AV7eNQr+ z=tz%%$~WpcF_(4J$9?$dsPoaAkI(PWgt$-FJxQHops4kshF8f=9KY0>UgS-7r4{D9 z;?dd&7m#*>6Vf3~x!LfVhfguV^woIqoAoU79?}&-T>q)6z%vPzXkx}DuidIzvKga8 zG@@|Xpn$>A{U_jH{chb~v0B;Ycobp`jx4~pSYbKh^3b9F6z3S{Lcl3n*Atp92i}Bs!cGFAA2DNO4uZPkh^dSa}S5FyW`E+q<>c_ z^&nFlZ1h#P<4gGBT=gNkFJ1dy_jB1a!=T04Qy*tMhCef-Z^xOV%Pk!F?%h!BV*N`GTXXAPB)UMczLQ&vyQL;Iarib!@59lj6&Bx>=j3Ok8tjm%X_ z1<%knAR^9NZx>o<Q+8gOc2PSo2Hli`zX`i zaJU)L=|0}g`PUB($*LSy%OgsB8N^OUAIZMl6lsbtTsMB(k;f(JeRvdXCbA>!5W+T& zh$@aSeBQU4H9(yH29l1jgI`shKOi%S4lD_sc&Sm03a1`<3BZVXtE1r7uu?*lJ}={Q zYb-p{^2z4EmI}Iq=&U%V66VU9tvV-hGGGOHs8juMAK@tos8g zaZ>YtW^wPS_SctAxR=z>1iO}nA}q|m1XSnSL)MG+S9ee=CHxG@^-Z@`Z+5Ky{jy(V zF2-qZu8=L=v7!_n5h3)Qv@~_D6`0YC@{@+{IMnOmq_fGC?EJ(cn|)0!9i>`d$V+LV zM8nNH&rn$MZ!)w++$wKvt#4XK-TgO}@c(nn&3nPco?*yMOXDC@tHbLSVw}n?iS?vx zbdX5S+S!y2PjcB~ep@Ki1M#cFmconpUpvYg)lcPyWOe5$DNgBAd}n2JGkckTbT7E# zuReE-UVU8sY?V0s{OCT|GT_(g+e#arQAP%W5?ShsMbjvRJf1I2ZY`L$Pl2|*UFW12 zp`0#6d#^e4NAJ)v2!o{0L|Aw`EqCY&!nUkzjI{|Gm?zxo8_Fgt3LQSz%*(AoHMcrs z-U`vW5JO!&lhE#J8D;l;I_U(x9pmdA$(!qiGA6BWP%*s#dAq6&AG@Wvt|*_<+Qlz^ z4XRXOD;x+ud64x*FA3)}XFRL)9+BCAN9s-%Z!I~`t&_xSFL|nUYG<4e5+!NnKSo%L zmK0RXS=@$6y*62dDjI~)7q^usiYet!T}k%%pTE(;XIS3F zV)9jv^0A2?7Pju!LW+ijlhSWb@AZ!mOGW+(wcjF;eoL3wINc}uasJ1${BiR{7yl!_ zsYU8->1@8;+lI5wHRXkALwWR2X0L~Vs!`RpCp=ceA}y4Zk(~C`RtFp0%IYt@4o!Xu zIIw#<$X)C+*JKv`|3Ff9pn8<`9M5{kQEMO?t*Zp`R%PY{^Y#6f{uE?l;-Ora_jEFi z^H%cwwAS@w&L-}wT+fJU9|0{fvKfep@&PrfwfZAiwBqG7`ETaYsEG^o6T%@))Djfl zd$p5g%r4hA>(nT;^6e)wLMLH_8l?l76T78nFj|?WTJ0_TqDccQr18#MatL)4ihLO* z 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 z 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

    $3Q;8j)xWVW%&-Y;Lt3<=vP}?Q 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

    AR;+2`UTkn_KS@8k_#tBG+8&p5#MCBT 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 z zMp^80`IR^+cPPdEvpEWbLj*h<%0DRjg~=91l9FM&=Z!ovn%~)mRNrnEd3f`QvTvA; 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%0DoHEsBDxWf>DQ8K@4QHDjUUjq^cVF%_~R< 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º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

    QW7PSF)t6cSUt6ZAl^*^63ugj- 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 z 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 z
    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
    #@(}QpnG;P3Li%ohAFuy>E>Ivv2Mk@dyJcm} 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 z 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

    P7Jw0*w#yHOSUHGh;Wle}k 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 literal 0 HcmV?d00001 From a6c3f2c0e377383cf1d72627cebfa87c547ebc8c Mon Sep 17 00:00:00 2001 From: wverestek <46591944+wverestek@users.noreply.github.com> Date: Sat, 25 Apr 2020 15:04:46 +0200 Subject: [PATCH 47/85] Rename log.22Apr20.tiny_nylon.unstabilized.g++.1 to log.22Apr20.tiny_nylon.stabilized_variable_probability.g++.1 --- ... log.22Apr20.tiny_nylon.stabilized_variable_probability.g++.1} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename examples/USER/reaction/tiny_nylon/{log.22Apr20.tiny_nylon.unstabilized.g++.1 => log.22Apr20.tiny_nylon.stabilized_variable_probability.g++.1} (100%) diff --git a/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.1 b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.stabilized_variable_probability.g++.1 similarity index 100% rename from examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.1 rename to examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.stabilized_variable_probability.g++.1 From 3bebf017c0709afcefc0ae7524ec043ed87eb01f Mon Sep 17 00:00:00 2001 From: wverestek <46591944+wverestek@users.noreply.github.com> Date: Sat, 25 Apr 2020 15:05:32 +0200 Subject: [PATCH 48/85] Rename log.22Apr20.tiny_nylon.unstabilized.g++.4 to log.22Apr20.tiny_nylon.stabilized_variable_probability.g++.4 --- ... log.22Apr20.tiny_nylon.stabilized_variable_probability.g++.4} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename examples/USER/reaction/tiny_nylon/{log.22Apr20.tiny_nylon.unstabilized.g++.4 => log.22Apr20.tiny_nylon.stabilized_variable_probability.g++.4} (100%) diff --git a/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.4 b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.stabilized_variable_probability.g++.4 similarity index 100% rename from examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.4 rename to examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.stabilized_variable_probability.g++.4 From 5308b00c7bccc95bf94408d77dc2515e99703b5b Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 25 Apr 2020 07:28:16 -0600 Subject: [PATCH 49/85] Update LATTE.cmake --- cmake/Modules/Packages/LATTE.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index d6e893b025..91223720b0 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -35,5 +35,6 @@ else() if(NOT LATTE_FOUND) message(FATAL_ERROR "LATTE library not found, help CMake to find it by setting LATTE_LIBRARY, or set DOWNLOAD_LATTE=ON to download it") endif() + # latte needs lapack target_link_libraries(lammps PRIVATE LATTE::latte ${LAPACK_LIBRARIES}) endif() From 1295a9ef4622d8cf5035d8b8e2d80cb563cb71dd Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sat, 25 Apr 2020 10:28:18 -0500 Subject: [PATCH 50/85] Fixed bugs with special bonds for ellipsoid gpu pair styles --- lib/gpu/lal_ellipsoid_nbor.cu | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/gpu/lal_ellipsoid_nbor.cu b/lib/gpu/lal_ellipsoid_nbor.cu index e6eedc7159..62a69f3a3c 100644 --- a/lib/gpu/lal_ellipsoid_nbor.cu +++ b/lib/gpu/lal_ellipsoid_nbor.cu @@ -53,8 +53,8 @@ __kernel void kernel_nbor(const __global numtyp4 *restrict x_, int itype=fast_mul(iw,ntypes); int newj=0; for ( ; nbor Date: Sat, 25 Apr 2020 10:16:58 -0600 Subject: [PATCH 51/85] USER-PLUMED: remove unused defines --- cmake/Modules/Packages/USER-PLUMED.cmake | 6 ++---- lib/plumed/Makefile.lammps.runtime | 2 +- lib/plumed/Makefile.lammps.runtime.macosx | 2 +- lib/plumed/Makefile.lammps.static | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index e7605b6bca..102ce7a7ad 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -74,12 +74,11 @@ if(DOWNLOAD_PLUMED) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() if(PLUMED_MODE STREQUAL "STATIC") - set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_WRAPPER_CXX=1") set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumed.a INTERFACE_LINK_LIBRARIES "${PLUMED_LINK_LIBS};${CMAKE_DL_LIBS}") elseif(PLUMED_MODE STREQUAL "SHARED") set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX} INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX};${CMAKE_DL_LIBS}") elseif(PLUMED_MODE STREQUAL "RUNTIME") - set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_HAS_DLOPEN=1;__PLUMED_DEFAULT_KERNEL=${INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_DEFAULT_KERNEL=${INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumedWrapper.a INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS}") endif() set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) @@ -89,12 +88,11 @@ else() pkg_check_modules(PLUMED REQUIRED plumed) add_library(LAMMPS::PLUMED INTERFACE IMPORTED) if(PLUMED_MODE STREQUAL "STATIC") - set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_WRAPPER_CXX=1") include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.static) elseif(PLUMED_MODE STREQUAL "SHARED") include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.shared) elseif(PLUMED_MODE STREQUAL "RUNTIME") - set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_HAS_DLOPEN=1;__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.runtime) endif() set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_LINK_LIBRARIES "${PLUMED_LOAD}") diff --git a/lib/plumed/Makefile.lammps.runtime b/lib/plumed/Makefile.lammps.runtime index b8c8636940..55801b9aea 100644 --- a/lib/plumed/Makefile.lammps.runtime +++ b/lib/plumed/Makefile.lammps.runtime @@ -1,5 +1,5 @@ # Settings that the LAMMPS build will import when this package library is used -plumed_SYSINC = -D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=$(PLUMED_LIBDIR)/libplumedKernel.so +plumed_SYSINC = -D__PLUMED_DEFAULT_KERNEL=$(PLUMED_LIBDIR)/libplumedKernel.so plumed_SYSLIB = $(PLUMED_LOAD) -rdynamic plumed_SYSPATH = diff --git a/lib/plumed/Makefile.lammps.runtime.macosx b/lib/plumed/Makefile.lammps.runtime.macosx index d0ae6e82a5..e25a1dd776 100644 --- a/lib/plumed/Makefile.lammps.runtime.macosx +++ b/lib/plumed/Makefile.lammps.runtime.macosx @@ -1,5 +1,5 @@ # Settings that the LAMMPS build will import when this package library is used -plumed_SYSINC = -D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=$(PLUMED_LIBDIR)/libplumedKernel.dylib +plumed_SYSINC = -D__PLUMED_DEFAULT_KERNEL=$(PLUMED_LIBDIR)/libplumedKernel.dylib plumed_SYSLIB = $(PLUMED_LOAD) -rdynamic plumed_SYSPATH = diff --git a/lib/plumed/Makefile.lammps.static b/lib/plumed/Makefile.lammps.static index 2ca0858610..e670d28fa5 100644 --- a/lib/plumed/Makefile.lammps.static +++ b/lib/plumed/Makefile.lammps.static @@ -2,6 +2,6 @@ # Use statically linked C++ interface to plumed -plumed_SYSINC = -D__PLUMED_WRAPPER_CXX=1 +plumed_SYSINC = plumed_SYSLIB = $(PLUMED_LOAD) plumed_SYSPATH = From 758a27c1e7f8fc6d0e28353687741ad1e5b5c65f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 25 Apr 2020 22:06:36 -0400 Subject: [PATCH 52/85] update MPI detection and handling of MPI to not automatically assume that a windows target means cross-compiling --- cmake/CMakeLists.txt | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 192491e0df..628f68f6ea 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -135,23 +135,20 @@ if(PKG_USER-ADIOS) target_link_libraries(lammps PRIVATE adios2::adios2) endif() -if (CMAKE_SYSTEM_NAME STREQUAL Windows) - option(BUILD_MPI "Build MPI version" OFF) -else() - # do MPI detection after language activation, - # in case MPI for these languages is required +if(NOT CMAKE_CROSSCOMPILING) set(MPI_CXX_SKIP_MPICXX TRUE) find_package(MPI QUIET) option(BUILD_MPI "Build MPI version" ${MPI_FOUND}) +else() + option(BUILD_MPI "Build MPI version" OFF) endif() if(BUILD_MPI) - # We use a non-standard procedure to compile with MPI on windows - if (CMAKE_SYSTEM_NAME STREQUAL Windows) + # We use a non-standard procedure to cross-compile with MPI on Windows + if((CMAKE_SYSTEM_NAME STREQUAL Windows) AND CMAKE_CROSSCOMPILING) include(MPI4WIN) target_link_libraries(lammps PUBLIC MPI::MPI_CXX) else() - set(MPI_CXX_SKIP_MPICXX ON) find_package(MPI REQUIRED) target_link_libraries(lammps PUBLIC MPI::MPI_CXX) option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF) @@ -704,7 +701,14 @@ else() message(STATUS "Static library flags: ${CMAKE_STATIC_LINKER_FLAGS}") endif() if(BUILD_MPI) + # get MPI compile settings from MPI4WIN imported target when cross-compiling + if((CMAKE_SYSTEM_NAME STREQUAL Windows) AND CMAKE_CROSSCOMPILING) + get_target_property(MPI_CXX_INCLUDE_PATH MPI::MPI_CXX INTERFACE_INCLUDE_DIRECTORIES) + get_target_property(MPI_CXX_COMPILE_DEFINITIONS MPI::MPI_CXX INTERFACE_COMPILE_DEFINITIONS) + get_target_property(MPI_CXX_LIBRARIES MPI::MPI_CXX IMPORTED_LOCATION) + endif() message(STATUS "<<< MPI flags >>> +-- MPI_defines: ${MPI_CXX_COMPILE_DEFINITIONS} -- MPI includes: ${MPI_CXX_INCLUDE_PATH} -- MPI libraries: ${MPI_CXX_LIBRARIES};${MPI_Fortran_LIBRARIES}") endif() From a614242595b8e9260789aef0326baeb591d5c66e Mon Sep 17 00:00:00 2001 From: Jacob Gissinger Date: Sat, 25 Apr 2020 21:45:43 -0600 Subject: [PATCH 53/85] allow variable-input for Nevery, Rmin, Rmax keywords --- doc/src/fix_bond_react.rst | 55 +++++---- src/USER-REACTION/fix_bond_react.cpp | 163 +++++++++++++++++++-------- src/USER-REACTION/fix_bond_react.h | 10 +- 3 files changed, 159 insertions(+), 69 deletions(-) mode change 100644 => 100755 doc/src/fix_bond_react.rst diff --git a/doc/src/fix_bond_react.rst b/doc/src/fix_bond_react.rst old mode 100644 new mode 100755 index 3467932500..fd4bd1e8ff --- a/doc/src/fix_bond_react.rst +++ b/doc/src/fix_bond_react.rst @@ -158,7 +158,8 @@ The following comments pertain to each *react* argument (in other words, can be customized for each reaction, or reaction step): A check for possible new reaction sites is performed every *Nevery* -timesteps. +timesteps. *Nevery* can be specified with an equal-style +:doc:`variable `. Three physical conditions must be met for a reaction to occur. First, a bonding atom pair must be identified within the reaction distance @@ -171,19 +172,29 @@ modified to match the post-reaction template. A bonding atom pair will be identified if several conditions are met. First, a pair of atoms I,J within the specified react-group-ID of type itype and jtype must be separated by a distance between *Rmin* and -*Rmax*\ . It is possible that multiple bonding atom pairs are -identified: if the bonding atoms in the pre-reacted template are 1-2 -neighbors, i.e. directly bonded, the farthest bonding atom partner is -set as its bonding partner; otherwise, the closest potential partner -is chosen. Then, if both an atom I and atom J have each other as their -bonding partners, these two atoms are identified as the bonding atom -pair of the reaction site. Once this unique bonding atom pair is -identified for each reaction, there could two or more reactions that -involve a given atom on the same timestep. If this is the case, only -one such reaction is permitted to occur. This reaction is chosen -randomly from all potential reactions. This capability allows e.g. for -different reaction pathways to proceed from identical reaction sites -with user-specified probabilities. +*Rmax*\ . *Rmin* and *Rmax* can be specified with equal-style +:doc:`variables `. For example, these reaction cutoffs can +be a function of the reaction conversion using the following commands: + +.. code-block:: LAMMPS + + variable rmax equal 0 # initialize variable before bond/react + fix myrxn all bond/react react myrxn1 all 1 0 v_rmax mol1 mol2 map_file.txt + variable rmax equal 3+f_myrxn[1]/100 # arbitrary function of reaction count + +It is possible that multiple bonding atom pairs are identified: if the +bonding atoms in the pre-reacted template are 1-2 neighbors, i.e. +directly bonded, the farthest bonding atom partner is set as its +bonding partner; otherwise, the closest potential partner is chosen. +Then, if both an atom I and atom J have each other as their bonding +partners, these two atoms are identified as the bonding atom pair of +the reaction site. Once this unique bonding atom pair is identified +for each reaction, there could two or more reactions that involve a +given atom on the same timestep. If this is the case, only one such +reaction is permitted to occur. This reaction is chosen randomly from +all potential reactions. This capability allows e.g. for different +reaction pathways to proceed from identical reaction sites with +user-specified probabilities. The pre-reacted molecule template is specified by a molecule command. This molecule template file contains a sample reaction site and its @@ -419,10 +430,9 @@ it occurs: The *prob* keyword can affect whether or not an eligible reaction actually occurs. The fraction setting must be a value between 0.0 and -1.0 or can be an equal style variable. In the later case the variable -is evaluated during runtime and adjusted to be between 0.0 and 1.0 if -necessary. A uniform random number between 0.0 and 1.0 is generated and -the eligible reaction only occurs if the random number is less than the +1.0, and can be specified with an equal-style :doc:`variable `. +A uniform random number between 0.0 and 1.0 is generated and the +eligible reaction only occurs if the random number is less than the fraction. Up to N reactions are permitted to occur, as optionally specified by the *max_rxn* keyword. @@ -491,10 +501,11 @@ local command. **Restart, fix_modify, output, run start/stop, minimize info:** -Cumulative reaction counts for each reaction are written to :doc:`binary restart files `. These values are associated with the -reaction name (react-ID). Additionally, internally-created per-atom -properties are stored to allow for smooth restarts. None of the -:doc:`fix_modify ` options are relevant to this fix. +Cumulative reaction counts for each reaction are written to :doc:`binary restart files `. +These values are associated with the reaction name (react-ID). +Additionally, internally-created per-atom properties are stored to +allow for smooth restarts. None of the :doc:`fix_modify ` +options are relevant to this fix. This fix computes one statistic for each *react* argument that it stores in a global vector, of length 'number of react arguments', that diff --git a/src/USER-REACTION/fix_bond_react.cpp b/src/USER-REACTION/fix_bond_react.cpp index ae4c977f4d..299d6efb92 100644 --- a/src/USER-REACTION/fix_bond_react.cpp +++ b/src/USER-REACTION/fix_bond_react.cpp @@ -63,6 +63,7 @@ static const char cite_fix_bond_react[] = #define DELTA 16 #define MAXGUESS 20 // max # of guesses allowed by superimpose algorithm #define MAXCONARGS 10 // max # of arguments for any type of constraint + rxnID +#define NUMVARVALS 4 // max # of keyword values that have variables as input // various statuses of superimpose algorithm: // ACCEPT: site successfully matched to pre-reacted template @@ -76,6 +77,9 @@ enum{ACCEPT,REJECT,PROCEED,CONTINUE,GUESSFAIL,RESTORE}; // types of available reaction constraints enum{DISTANCE,ANGLE,DIHEDRAL,ARRHENIUS}; +// keyword values that accept variables as input +enum{NEVERY,RMIN,RMAX,PROB}; + /* ---------------------------------------------------------------------- */ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : @@ -177,11 +181,11 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : memory->create(nghostlyskips,nreacts,"bond/react:nghostlyskips"); memory->create(seed,nreacts,"bond/react:seed"); memory->create(limit_duration,nreacts,"bond/react:limit_duration"); - memory->create(var_fraction_flag,nreacts,"bond/react:var_fraction_flag"); - memory->create(var_fraction_id,nreacts,"bond/react:var_fraction_id"); memory->create(stabilize_steps_flag,nreacts,"bond/react:stabilize_steps_flag"); memory->create(update_edges_flag,nreacts,"bond/react:update_edges_flag"); memory->create(constraints,1,MAXCONARGS,"bond/react:constraints"); + memory->create(var_flag,NUMVARVALS,nreacts,"bond/react:var_flag"); + memory->create(var_id,NUMVARVALS,nreacts,"bond/react:var_id"); memory->create(iatomtype,nreacts,"bond/react:iatomtype"); memory->create(jatomtype,nreacts,"bond/react:jatomtype"); memory->create(ibonding,nreacts,"bond/react:ibonding"); @@ -197,8 +201,6 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : fraction[i] = 1; seed[i] = 12345; max_rxn[i] = INT_MAX; - var_fraction_flag[i] = 0; - var_fraction_id[i] = 0; stabilize_steps_flag[i] = 0; update_edges_flag[i] = 0; // set default limit duration to 60 timesteps @@ -207,6 +209,10 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : local_rxn_count[i] = 0; ghostly_rxn_count[i] = 0; reaction_count_total[i] = 0; + for (int j = 0; j < NUMVARVALS; j++) { + var_flag[j][i] = 0; + var_id[j][i] = 0; + } } char **files; @@ -227,19 +233,65 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : if (igroup == -1) error->all(FLERR,"Could not find fix group ID"); groupbits[rxn] = group->bitmask[igroup]; - nevery[rxn] = force->inumeric(FLERR,arg[iarg++]); - if (nevery[rxn] <= 0) error->all(FLERR,"Illegal fix bond/react command: " - "'Nevery' must be a positive integer"); + if (strncmp(arg[iarg],"v_",2) == 0) { + n = strlen(&arg[iarg][2]) + 1; + char *str = new char[n]; + strcpy(str,&arg[iarg][2]); + var_id[NEVERY][rxn] = input->variable->find(str); + if (var_id[NEVERY][rxn] < 0) + error->all(FLERR,"Bond/react: Variable name does not exist"); + if (!input->variable->equalstyle(var_id[NEVERY][rxn])) + error->all(FLERR,"Bond/react: Variable is not equal-style"); + var_flag[NEVERY][rxn] = 1; + delete [] str; + } else { + nevery[rxn] = force->inumeric(FLERR,arg[iarg]); + if (nevery[rxn] <= 0) error->all(FLERR,"Illegal fix bond/react command: " + "'Nevery' must be a positive integer"); + } + iarg++; - double cutoff = force->numeric(FLERR,arg[iarg++]); - if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/react command: " - "'Rmin' cannot be negative"); - cutsq[rxn][0] = cutoff*cutoff; + if (strncmp(arg[iarg],"v_",2) == 0) { + n = strlen(&arg[iarg][2]) + 1; + char *str = new char[n]; + strcpy(str,&arg[iarg][2]); + var_id[RMIN][rxn] = input->variable->find(str); + if (var_id[RMIN][rxn] < 0) + error->all(FLERR,"Bond/react: Variable name does not exist"); + if (!input->variable->equalstyle(var_id[RMIN][rxn])) + error->all(FLERR,"Bond/react: Variable is not equal-style"); + double cutoff = input->variable->compute_equal(var_id[RMIN][rxn]); + cutsq[rxn][0] = cutoff*cutoff; + var_flag[RMIN][rxn] = 1; + delete [] str; + } else { + double cutoff = force->numeric(FLERR,arg[iarg]); + if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/react command: " + "'Rmin' cannot be negative"); + cutsq[rxn][0] = cutoff*cutoff; + } + iarg++; - cutoff = force->numeric(FLERR,arg[iarg++]); - if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/react command:" - "'Rmax' cannot be negative"); - cutsq[rxn][1] = cutoff*cutoff; + if (strncmp(arg[iarg],"v_",2) == 0) { + n = strlen(&arg[iarg][2]) + 1; + char *str = new char[n]; + strcpy(str,&arg[iarg][2]); + var_id[RMAX][rxn] = input->variable->find(str); + if (var_id[RMAX][rxn] < 0) + error->all(FLERR,"Bond/react: Variable name does not exist"); + if (!input->variable->equalstyle(var_id[RMAX][rxn])) + error->all(FLERR,"Bond/react: Variable is not equal-style"); + double cutoff = input->variable->compute_equal(var_id[RMAX][rxn]); + cutsq[rxn][1] = cutoff*cutoff; + var_flag[RMAX][rxn] = 1; + delete [] str; + } else { + double cutoff = force->numeric(FLERR,arg[iarg]); + if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/react command:" + "'Rmax' cannot be negative"); + cutsq[rxn][1] = cutoff*cutoff; + } + iarg++; unreacted_mol[rxn] = atom->find_molecule(arg[iarg++]); if (unreacted_mol[rxn] == -1) error->all(FLERR,"Unreacted molecule template ID for " @@ -257,23 +309,23 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[iarg],"prob") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix bond/react command: " "'prob' keyword has too few arguments"); - // check if probability is a variable - if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) { - int n = strlen(&arg[iarg+1][2]) + 1; - char *fracstr = new char[n]; - strcpy(fracstr,&arg[iarg+1][2]); - var_fraction_id[rxn] = input->variable->find(fracstr); - if (var_fraction_id[rxn] < 0) - error->all(FLERR,"variable name for fix bond/react does not exist"); - if (! input->variable->equalstyle(var_fraction_id[rxn])) - error->all(FLERR,"variable in bond/react is not equal style"); - fraction[rxn] = input->variable->compute_equal(var_fraction_id[rxnID]); - var_fraction_flag[rxn] = 1.0; - delete [] fracstr; - } else { - // otherwise probability should be a number - fraction[rxn] = force->numeric(FLERR,arg[iarg+1]); - } + // check if probability is a variable + if (strncmp(arg[iarg+1],"v_",2) == 0) { + int n = strlen(&arg[iarg+1][2]) + 1; + char *str = new char[n]; + strcpy(str,&arg[iarg+1][2]); + var_id[PROB][rxn] = input->variable->find(str); + if (var_id[PROB][rxn] < 0) + error->all(FLERR,"Bond/react: Variable name does not exist"); + if (!input->variable->equalstyle(var_id[PROB][rxn])) + error->all(FLERR,"Bond/react: Variable is not equal-style"); + fraction[rxn] = input->variable->compute_equal(var_id[PROB][rxn]); + var_flag[PROB][rxn] = 1; + delete [] str; + } else { + // otherwise probability should be a number + fraction[rxn] = force->numeric(FLERR,arg[iarg+1]); + } seed[rxn] = force->inumeric(FLERR,arg[iarg+2]); if (fraction[rxn] < 0.0 || fraction[rxn] > 1.0) error->all(FLERR,"Illegal fix bond/react command: " @@ -282,12 +334,12 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : "probability seed must be positive"); iarg += 3; } else if (strcmp(arg[iarg],"max_rxn") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix bond/react command: " - "'max_rxn' has too few arguments"); - max_rxn[rxn] = force->inumeric(FLERR,arg[iarg+1]); - if (max_rxn[rxn] < 0) error->all(FLERR,"Illegal fix bond/react command: " - "'max_rxn' cannot be negative"); - iarg += 2; + if (iarg+2 > narg) error->all(FLERR,"Illegal fix bond/react command: " + "'max_rxn' has too few arguments"); + max_rxn[rxn] = force->inumeric(FLERR,arg[iarg+1]); + if (max_rxn[rxn] < 0) error->all(FLERR,"Illegal fix bond/react command: " + "'max_rxn' cannot be negative"); + iarg += 2; } else if (strcmp(arg[iarg],"stabilize_steps") == 0) { if (stabilization_flag == 0) error->all(FLERR,"Stabilize_steps keyword " "used without stabilization keyword"); @@ -469,8 +521,8 @@ FixBondReact::~FixBondReact() memory->destroy(nlocalskips); memory->destroy(nghostlyskips); memory->destroy(limit_duration); - memory->destroy(var_fraction_flag); - memory->destroy(var_fraction_id); + memory->destroy(var_flag); + memory->destroy(var_id); memory->destroy(stabilize_steps_flag); memory->destroy(update_edges_flag); @@ -744,6 +796,11 @@ void FixBondReact::post_integrate() // check if any reactions could occur on this timestep int nevery_check = 1; for (int i = 0; i < nreacts; i++) { + if (var_flag[NEVERY][i]) + nevery[i] = input->variable->compute_equal(var_id[NEVERY][i]); + if (nevery[i] <= 0) + error->all(FLERR,"Illegal fix bond/react command: " + "'Nevery' must be a positive integer"); if (!(update->ntimestep % nevery[i])) { nevery_check = 0; break; @@ -849,16 +906,13 @@ void FixBondReact::post_integrate() } // update reaction probability - if (var_fraction_flag[rxnID]) { - fraction[rxnID] = input->variable->compute_equal(var_fraction_id[rxnID]); - if (fraction[rxnID] < 0.0) fraction[rxnID] = 0.0; - if (fraction[rxnID] > 1.0) fraction[rxnID] = 1.0; - } + if (var_flag[PROB][rxnID]) + fraction[rxnID] = input->variable->compute_equal(var_id[PROB][rxnID]); // each atom now knows its winning partner // for prob check, generate random value for each atom with a bond partner // forward comm of partner and random value, so ghosts have it - + if (fraction[rxnID] < 1.0) { for (int i = 0; i < nlocal; i++) if (partner[i]) probability[i] = random[rxnID]->uniform(); @@ -1034,6 +1088,14 @@ void FixBondReact::far_partner() domain->minimum_image(delx,dely,delz); // ghost location fix rsq = delx*delx + dely*dely + delz*delz; + if (var_flag[RMIN][rxnID]) { + double cutoff = input->variable->compute_equal(var_id[RMIN][rxnID]); + cutsq[rxnID][0] = cutoff*cutoff; + } + if (var_flag[RMAX][rxnID]) { + double cutoff = input->variable->compute_equal(var_id[RMAX][rxnID]); + cutsq[rxnID][1] = cutoff*cutoff; + } if (rsq >= cutsq[rxnID][1] || rsq <= cutsq[rxnID][0]) { continue; } @@ -1089,6 +1151,15 @@ void FixBondReact::close_partner() delz = x[i1][2] - x[i2][2]; domain->minimum_image(delx,dely,delz); // ghost location fix rsq = delx*delx + dely*dely + delz*delz; + + if (var_flag[RMIN][rxnID]) { + double cutoff = input->variable->compute_equal(var_id[RMIN][rxnID]); + cutsq[rxnID][0] = cutoff*cutoff; + } + if (var_flag[RMAX][rxnID]) { + double cutoff = input->variable->compute_equal(var_id[RMAX][rxnID]); + cutsq[rxnID][1] = cutoff*cutoff; + } if (rsq >= cutsq[rxnID][1] || rsq <= cutsq[rxnID][0]) continue; if (closeneigh[rxnID] == 0) { diff --git a/src/USER-REACTION/fix_bond_react.h b/src/USER-REACTION/fix_bond_react.h index 6f5ec9c7d7..722a533bbf 100644 --- a/src/USER-REACTION/fix_bond_react.h +++ b/src/USER-REACTION/fix_bond_react.h @@ -64,10 +64,10 @@ class FixBondReact : public Fix { int custom_exclude_flag; int *stabilize_steps_flag; int *update_edges_flag; - int *var_fraction_flag, *var_fraction_id; int nconstraints; int narrhenius; double **constraints; + int **var_flag,**var_id; // for keyword values with variable inputs int status; int *groupbits; @@ -280,4 +280,12 @@ The number of bonds, angles etc per-atom created by a reaction exceeds the system setting. See the read_data or create_box command for how to specify this value. +E: Bond/react: Variable name does not exist + +Self-explanatory. + +E: Bond/react: Variable is not equal-style + +Self-explanatory. + */ From 9a5b7141afa8889fce4c976f547438ab26f5b69b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 26 Apr 2020 00:14:27 -0400 Subject: [PATCH 54/85] move MPI compilation variable definitions workaround to MPI4WIN.cmake --- cmake/CMakeLists.txt | 6 ------ cmake/Modules/MPI4WIN.cmake | 5 +++++ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 628f68f6ea..9f29220d4f 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -701,12 +701,6 @@ else() message(STATUS "Static library flags: ${CMAKE_STATIC_LINKER_FLAGS}") endif() if(BUILD_MPI) - # get MPI compile settings from MPI4WIN imported target when cross-compiling - if((CMAKE_SYSTEM_NAME STREQUAL Windows) AND CMAKE_CROSSCOMPILING) - get_target_property(MPI_CXX_INCLUDE_PATH MPI::MPI_CXX INTERFACE_INCLUDE_DIRECTORIES) - get_target_property(MPI_CXX_COMPILE_DEFINITIONS MPI::MPI_CXX INTERFACE_COMPILE_DEFINITIONS) - get_target_property(MPI_CXX_LIBRARIES MPI::MPI_CXX IMPORTED_LOCATION) - endif() message(STATUS "<<< MPI flags >>> -- MPI_defines: ${MPI_CXX_COMPILE_DEFINITIONS} -- MPI includes: ${MPI_CXX_INCLUDE_PATH} diff --git a/cmake/Modules/MPI4WIN.cmake b/cmake/Modules/MPI4WIN.cmake index 19d2d2a13e..035c6a22f3 100644 --- a/cmake/Modules/MPI4WIN.cmake +++ b/cmake/Modules/MPI4WIN.cmake @@ -23,3 +23,8 @@ set_target_properties(MPI::MPI_CXX PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include" INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") add_dependencies(MPI::MPI_CXX mpi4win_build) + +# set variables for status reporting at the end of CMake run +set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include") +set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") +set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a") From 0b6e5be3794b909b57c694b0cecb825cbd0171a1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 26 Apr 2020 00:25:07 -0400 Subject: [PATCH 55/85] cosmetic edit to trigger new CI test runs --- lib/gpu/lal_ellipsoid_nbor.cu | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/gpu/lal_ellipsoid_nbor.cu b/lib/gpu/lal_ellipsoid_nbor.cu index 62a69f3a3c..cb208bc02a 100644 --- a/lib/gpu/lal_ellipsoid_nbor.cu +++ b/lib/gpu/lal_ellipsoid_nbor.cu @@ -9,7 +9,6 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : // email : brownw@ornl.gov // ***************************************************************************/ From d092b24c2e676def9f82df164d28d0333e3b5cc2 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 26 Apr 2020 11:56:48 -0600 Subject: [PATCH 56/85] Revert "cmake: move kim-api detection to cmake config" --- cmake/LAMMPSConfig.cmake.in | 4 ++-- cmake/Modules/Packages/KIM.cmake | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/cmake/LAMMPSConfig.cmake.in b/cmake/LAMMPSConfig.cmake.in index 969bd6e929..7cd782b3b8 100644 --- a/cmake/LAMMPSConfig.cmake.in +++ b/cmake/LAMMPSConfig.cmake.in @@ -20,8 +20,8 @@ if(NOT @BUILD_SHARED_LIBS@) find_dependency(ZLIB REQUIRED) endif() if(@PKG_KIM@) - find_package(KIM-API @KIM-API_MIN_VERSION@ CONFIG REQUIRED) - add_kim_api_imported_library() + find_dependency(PkgConfig REQUIRED) + pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=@KIM-API_MIN_VERSION@) if(@CURL_FOUND@) find_dependency(CURL REQUIRED) endif() diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index 06e513bc0a..b4e1fb3502 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -1,4 +1,3 @@ -# CMake configuration for KIM package set(KIM-API_MIN_VERSION 2.1.3) find_package(CURL) if(CURL_FOUND) @@ -15,11 +14,13 @@ if(CURL_FOUND) target_compile_definitions(lammps PRIVATE -DLMP_NO_SSL_CHECK) endif() endif() -find_package(KIM-API ${KIM-API_MIN_VERSION} CONFIG) -if(KIM-API_FOUND) - set(DOWNLOAD_KIM_DEFAULT OFF) -else() - set(DOWNLOAD_KIM_DEFAULT ON) +find_package(PkgConfig QUIET) +set(DOWNLOAD_KIM_DEFAULT ON) +if(PKG_CONFIG_FOUND) + pkg_check_modules(KIM-API QUIET libkim-api>=${KIM-API_MIN_VERSION}) + if(KIM-API_FOUND) + set(DOWNLOAD_KIM_DEFAULT OFF) + endif() endif() option(DOWNLOAD_KIM "Download KIM-API from OpenKIM instead of using an already installed one" ${DOWNLOAD_KIM_DEFAULT}) if(DOWNLOAD_KIM) @@ -54,7 +55,7 @@ if(DOWNLOAD_KIM) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() else() - find_package(KIM-API ${KIM-API_MIN_VERSION} CONFIG REQUIRED) - add_kim_api_imported_library() - target_link_libraries(lammps PRIVATE kim-api) + find_package(PkgConfig REQUIRED) + pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=${KIM-API_MIN_VERSION}) + target_link_libraries(lammps PRIVATE PkgConfig::KIM-API) endif() From 281c105a340da89f1d192c14586331679a9aad24 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 26 Apr 2020 12:02:18 -0600 Subject: [PATCH 57/85] KIM.cmake: add workaround for Date: Sun, 26 Apr 2020 12:45:42 -0600 Subject: [PATCH 58/85] round up 'nevery' variable eval --- src/USER-REACTION/fix_bond_react.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/USER-REACTION/fix_bond_react.cpp b/src/USER-REACTION/fix_bond_react.cpp index 299d6efb92..981a3c1888 100644 --- a/src/USER-REACTION/fix_bond_react.cpp +++ b/src/USER-REACTION/fix_bond_react.cpp @@ -797,7 +797,7 @@ void FixBondReact::post_integrate() int nevery_check = 1; for (int i = 0; i < nreacts; i++) { if (var_flag[NEVERY][i]) - nevery[i] = input->variable->compute_equal(var_id[NEVERY][i]); + nevery[i] = ceil(input->variable->compute_equal(var_id[NEVERY][i])); if (nevery[i] <= 0) error->all(FLERR,"Illegal fix bond/react command: " "'Nevery' must be a positive integer"); From 8fec14f59348f9f1e006eb5136b2c63f723e3838 Mon Sep 17 00:00:00 2001 From: Jacob Gissinger Date: Sun, 26 Apr 2020 13:08:40 -0600 Subject: [PATCH 59/85] Update fix_bond_react.rst --- doc/src/fix_bond_react.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/src/fix_bond_react.rst b/doc/src/fix_bond_react.rst index fd4bd1e8ff..fc260de324 100755 --- a/doc/src/fix_bond_react.rst +++ b/doc/src/fix_bond_react.rst @@ -159,7 +159,8 @@ words, can be customized for each reaction, or reaction step): A check for possible new reaction sites is performed every *Nevery* timesteps. *Nevery* can be specified with an equal-style -:doc:`variable `. +:doc:`variable `, whose value is rounded up to the nearest +integer. Three physical conditions must be met for a reaction to occur. First, a bonding atom pair must be identified within the reaction distance From d53e468ce0c005bda55eb0c39207d974faa6551e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 26 Apr 2020 22:50:24 -0400 Subject: [PATCH 60/85] do not mix c++ style and c-style comments --- lib/gpu/lal_atom.cu | 2 +- lib/gpu/lal_beck.cu | 2 +- lib/gpu/lal_born.cu | 2 +- lib/gpu/lal_born_coul_long.cu | 2 +- lib/gpu/lal_born_coul_long_cs.cu | 2 +- lib/gpu/lal_born_coul_wolf.cu | 2 +- lib/gpu/lal_born_coul_wolf_cs.cu | 2 +- lib/gpu/lal_buck.cu | 2 +- lib/gpu/lal_buck_coul.cu | 2 +- lib/gpu/lal_buck_coul_long.cu | 2 +- lib/gpu/lal_charmm_long.cu | 2 +- lib/gpu/lal_colloid.cu | 2 +- lib/gpu/lal_coul.cu | 2 +- lib/gpu/lal_coul_debye.cu | 2 +- lib/gpu/lal_coul_dsf.cu | 2 +- lib/gpu/lal_coul_long.cu | 2 +- lib/gpu/lal_coul_long_cs.cu | 2 +- lib/gpu/lal_dipole_lj.cu | 2 +- lib/gpu/lal_dipole_lj_sf.cu | 2 +- lib/gpu/lal_dipole_long_lj.cu | 2 +- lib/gpu/lal_dpd.cu | 2 +- lib/gpu/lal_eam.cu | 2 +- lib/gpu/lal_ellipsoid_nbor.cu | 2 +- lib/gpu/lal_gauss.cu | 2 +- lib/gpu/lal_gayberne.cu | 2 +- lib/gpu/lal_gayberne_lj.cu | 2 +- lib/gpu/lal_lj.cu | 2 +- lib/gpu/lal_lj96.cu | 2 +- lib/gpu/lal_lj_class2_long.cu | 2 +- lib/gpu/lal_lj_coul.cu | 2 +- lib/gpu/lal_lj_coul_debye.cu | 2 +- lib/gpu/lal_lj_coul_long.cu | 2 +- lib/gpu/lal_lj_coul_msm.cu | 2 +- lib/gpu/lal_lj_cubic.cu | 2 +- lib/gpu/lal_lj_dsf.cu | 2 +- lib/gpu/lal_lj_expand.cu | 2 +- lib/gpu/lal_lj_expand_coul_long.cu | 2 +- lib/gpu/lal_lj_gromacs.cu | 2 +- lib/gpu/lal_lj_sdk.cu | 2 +- lib/gpu/lal_lj_sdk_long.cu | 2 +- lib/gpu/lal_mie.cu | 2 +- lib/gpu/lal_morse.cu | 2 +- lib/gpu/lal_neighbor_cpu.cu | 2 +- lib/gpu/lal_neighbor_gpu.cu | 2 +- lib/gpu/lal_pppm.cu | 2 +- lib/gpu/lal_re_squared.cu | 2 +- lib/gpu/lal_re_squared_lj.cu | 2 +- lib/gpu/lal_soft.cu | 2 +- lib/gpu/lal_sw.cu | 2 +- lib/gpu/lal_table.cu | 2 +- lib/gpu/lal_tersoff.cu | 2 +- lib/gpu/lal_tersoff_mod.cu | 2 +- lib/gpu/lal_tersoff_zbl.cu | 2 +- lib/gpu/lal_vashishta.cu | 2 +- lib/gpu/lal_yukawa.cu | 2 +- lib/gpu/lal_yukawa_colloid.cu | 2 +- lib/gpu/lal_zbl.cu | 2 +- 57 files changed, 57 insertions(+), 57 deletions(-) diff --git a/lib/gpu/lal_atom.cu b/lib/gpu/lal_atom.cu index 99c76ba625..1418459301 100644 --- a/lib/gpu/lal_atom.cu +++ b/lib/gpu/lal_atom.cu @@ -11,7 +11,7 @@ // // begin : // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_preprocessor.h" diff --git a/lib/gpu/lal_beck.cu b/lib/gpu/lal_beck.cu index bdfa57a0ce..f24132b9a2 100644 --- a/lib/gpu/lal_beck.cu +++ b/lib/gpu/lal_beck.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_born.cu b/lib/gpu/lal_born.cu index 6e1d7d95a0..f9fea6d618 100644 --- a/lib/gpu/lal_born.cu +++ b/lib/gpu/lal_born.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_born_coul_long.cu b/lib/gpu/lal_born_coul_long.cu index 441ce4beb5..14e644b45a 100644 --- a/lib/gpu/lal_born_coul_long.cu +++ b/lib/gpu/lal_born_coul_long.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_born_coul_long_cs.cu b/lib/gpu/lal_born_coul_long_cs.cu index f4b6da2d0d..69503ba420 100644 --- a/lib/gpu/lal_born_coul_long_cs.cu +++ b/lib/gpu/lal_born_coul_long_cs.cu @@ -11,7 +11,7 @@ // // begin : June 2018 // email : ndactrung@gmail.com -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_born_coul_wolf.cu b/lib/gpu/lal_born_coul_wolf.cu index e34367e18b..0eeda48ec0 100644 --- a/lib/gpu/lal_born_coul_wolf.cu +++ b/lib/gpu/lal_born_coul_wolf.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_born_coul_wolf_cs.cu b/lib/gpu/lal_born_coul_wolf_cs.cu index 1a02420736..b957b8be69 100644 --- a/lib/gpu/lal_born_coul_wolf_cs.cu +++ b/lib/gpu/lal_born_coul_wolf_cs.cu @@ -11,7 +11,7 @@ // // begin : // email : ndactrung@gmail.com -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_buck.cu b/lib/gpu/lal_buck.cu index c23186f2d8..0f9044cefc 100644 --- a/lib/gpu/lal_buck.cu +++ b/lib/gpu/lal_buck.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_buck_coul.cu b/lib/gpu/lal_buck_coul.cu index 2282532f4a..163c8e4362 100644 --- a/lib/gpu/lal_buck_coul.cu +++ b/lib/gpu/lal_buck_coul.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_buck_coul_long.cu b/lib/gpu/lal_buck_coul_long.cu index 469c235571..b1bbf67bc2 100644 --- a/lib/gpu/lal_buck_coul_long.cu +++ b/lib/gpu/lal_buck_coul_long.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_charmm_long.cu b/lib/gpu/lal_charmm_long.cu index a797707057..4e9802f368 100644 --- a/lib/gpu/lal_charmm_long.cu +++ b/lib/gpu/lal_charmm_long.cu @@ -11,7 +11,7 @@ // // begin : // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_colloid.cu b/lib/gpu/lal_colloid.cu index 437faff25b..4983142aa0 100644 --- a/lib/gpu/lal_colloid.cu +++ b/lib/gpu/lal_colloid.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_coul.cu b/lib/gpu/lal_coul.cu index 21d849bb6f..03fc568c77 100644 --- a/lib/gpu/lal_coul.cu +++ b/lib/gpu/lal_coul.cu @@ -11,7 +11,7 @@ // // begin : // email : ndtrung@umich.edu -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_coul_debye.cu b/lib/gpu/lal_coul_debye.cu index ab8bc5b961..e7f0b97e23 100644 --- a/lib/gpu/lal_coul_debye.cu +++ b/lib/gpu/lal_coul_debye.cu @@ -11,7 +11,7 @@ // // begin : // email : ndtrung@umich.edu -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_coul_dsf.cu b/lib/gpu/lal_coul_dsf.cu index 147ac68552..190fb5b7fd 100644 --- a/lib/gpu/lal_coul_dsf.cu +++ b/lib/gpu/lal_coul_dsf.cu @@ -11,7 +11,7 @@ // // begin : 8/15/2012 // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_coul_long.cu b/lib/gpu/lal_coul_long.cu index f97a039629..7adcdbbabc 100644 --- a/lib/gpu/lal_coul_long.cu +++ b/lib/gpu/lal_coul_long.cu @@ -11,7 +11,7 @@ // // begin : July 2011 // email : a.kohlmeyer@temple.edu -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_coul_long_cs.cu b/lib/gpu/lal_coul_long_cs.cu index 1479157944..85c9d84bdb 100644 --- a/lib/gpu/lal_coul_long_cs.cu +++ b/lib/gpu/lal_coul_long_cs.cu @@ -11,7 +11,7 @@ // // begin : June 2018 // email : ndactrung@gmail.com -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_dipole_lj.cu b/lib/gpu/lal_dipole_lj.cu index 8ea49e7f60..a3ed0d8d40 100644 --- a/lib/gpu/lal_dipole_lj.cu +++ b/lib/gpu/lal_dipole_lj.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_dipole_lj_sf.cu b/lib/gpu/lal_dipole_lj_sf.cu index 9d753d9b63..8032ae82ed 100644 --- a/lib/gpu/lal_dipole_lj_sf.cu +++ b/lib/gpu/lal_dipole_lj_sf.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_dipole_long_lj.cu b/lib/gpu/lal_dipole_long_lj.cu index 95c3b7a3db..3aafba43aa 100644 --- a/lib/gpu/lal_dipole_long_lj.cu +++ b/lib/gpu/lal_dipole_long_lj.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_dpd.cu b/lib/gpu/lal_dpd.cu index d97f430f77..a29e04fc7f 100644 --- a/lib/gpu/lal_dpd.cu +++ b/lib/gpu/lal_dpd.cu @@ -11,7 +11,7 @@ // // begin : Jan 15, 2014 // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_eam.cu b/lib/gpu/lal_eam.cu index 9427b1832f..b22ce7b575 100644 --- a/lib/gpu/lal_eam.cu +++ b/lib/gpu/lal_eam.cu @@ -11,7 +11,7 @@ // // begin : // email : brownw@ornl.gov nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_ellipsoid_nbor.cu b/lib/gpu/lal_ellipsoid_nbor.cu index cb208bc02a..5ad935ba9b 100644 --- a/lib/gpu/lal_ellipsoid_nbor.cu +++ b/lib/gpu/lal_ellipsoid_nbor.cu @@ -10,7 +10,7 @@ // __________________________________________________________________________ // // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_preprocessor.h" diff --git a/lib/gpu/lal_gauss.cu b/lib/gpu/lal_gauss.cu index f9d3741537..ae6ab00edd 100644 --- a/lib/gpu/lal_gauss.cu +++ b/lib/gpu/lal_gauss.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_gayberne.cu b/lib/gpu/lal_gayberne.cu index 5c035da004..c9d0353ca8 100644 --- a/lib/gpu/lal_gayberne.cu +++ b/lib/gpu/lal_gayberne.cu @@ -11,7 +11,7 @@ // // begin : // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_ellipsoid_extra.h" diff --git a/lib/gpu/lal_gayberne_lj.cu b/lib/gpu/lal_gayberne_lj.cu index eb9c797dc7..fdf40720aa 100644 --- a/lib/gpu/lal_gayberne_lj.cu +++ b/lib/gpu/lal_gayberne_lj.cu @@ -11,7 +11,7 @@ // // begin : // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_ellipsoid_extra.h" diff --git a/lib/gpu/lal_lj.cu b/lib/gpu/lal_lj.cu index 716346a83d..7297a287e6 100644 --- a/lib/gpu/lal_lj.cu +++ b/lib/gpu/lal_lj.cu @@ -11,7 +11,7 @@ // // begin : // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_lj96.cu b/lib/gpu/lal_lj96.cu index aa06caa4ae..c602e7555e 100644 --- a/lib/gpu/lal_lj96.cu +++ b/lib/gpu/lal_lj96.cu @@ -11,7 +11,7 @@ // // begin : // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_lj_class2_long.cu b/lib/gpu/lal_lj_class2_long.cu index 4e1bf9c1f7..65f0bf993c 100644 --- a/lib/gpu/lal_lj_class2_long.cu +++ b/lib/gpu/lal_lj_class2_long.cu @@ -11,7 +11,7 @@ // // begin : Mon May 16 2011 // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_lj_coul.cu b/lib/gpu/lal_lj_coul.cu index cd72f72d97..afbb972942 100644 --- a/lib/gpu/lal_lj_coul.cu +++ b/lib/gpu/lal_lj_coul.cu @@ -11,7 +11,7 @@ // // begin : // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_lj_coul_debye.cu b/lib/gpu/lal_lj_coul_debye.cu index 40b7046623..053fbeccc8 100644 --- a/lib/gpu/lal_lj_coul_debye.cu +++ b/lib/gpu/lal_lj_coul_debye.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_lj_coul_long.cu b/lib/gpu/lal_lj_coul_long.cu index 6a09cc4b75..ac3479421f 100644 --- a/lib/gpu/lal_lj_coul_long.cu +++ b/lib/gpu/lal_lj_coul_long.cu @@ -11,7 +11,7 @@ // // begin : // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_lj_coul_msm.cu b/lib/gpu/lal_lj_coul_msm.cu index c8eaa47b3d..a3c36eed85 100644 --- a/lib/gpu/lal_lj_coul_msm.cu +++ b/lib/gpu/lal_lj_coul_msm.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_lj_cubic.cu b/lib/gpu/lal_lj_cubic.cu index b6a0768a36..f93013fe75 100644 --- a/lib/gpu/lal_lj_cubic.cu +++ b/lib/gpu/lal_lj_cubic.cu @@ -11,7 +11,7 @@ // // begin : // email : ndactrung@gmail.com -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_lj_dsf.cu b/lib/gpu/lal_lj_dsf.cu index 2475743ccc..c1bb197148 100644 --- a/lib/gpu/lal_lj_dsf.cu +++ b/lib/gpu/lal_lj_dsf.cu @@ -11,7 +11,7 @@ // // begin : 7/12/2012 // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_lj_expand.cu b/lib/gpu/lal_lj_expand.cu index 4496835588..46ed9e2a31 100644 --- a/lib/gpu/lal_lj_expand.cu +++ b/lib/gpu/lal_lj_expand.cu @@ -11,7 +11,7 @@ // // begin : // email : ibains@nvidia.com -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_lj_expand_coul_long.cu b/lib/gpu/lal_lj_expand_coul_long.cu index e9de9bab27..0f0fe4c2fb 100644 --- a/lib/gpu/lal_lj_expand_coul_long.cu +++ b/lib/gpu/lal_lj_expand_coul_long.cu @@ -11,7 +11,7 @@ // // begin : // email : ndactrung@gmail.com -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_lj_gromacs.cu b/lib/gpu/lal_lj_gromacs.cu index dcef79dc90..21381bef30 100644 --- a/lib/gpu/lal_lj_gromacs.cu +++ b/lib/gpu/lal_lj_gromacs.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_lj_sdk.cu b/lib/gpu/lal_lj_sdk.cu index a11b1c7887..249b29a4b2 100644 --- a/lib/gpu/lal_lj_sdk.cu +++ b/lib/gpu/lal_lj_sdk.cu @@ -11,7 +11,7 @@ // // begin : // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_lj_sdk_long.cu b/lib/gpu/lal_lj_sdk_long.cu index e28fa19db4..6dd1829c71 100644 --- a/lib/gpu/lal_lj_sdk_long.cu +++ b/lib/gpu/lal_lj_sdk_long.cu @@ -11,7 +11,7 @@ // // begin : // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_mie.cu b/lib/gpu/lal_mie.cu index e2ede4d3a1..36ec8a496b 100644 --- a/lib/gpu/lal_mie.cu +++ b/lib/gpu/lal_mie.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_morse.cu b/lib/gpu/lal_morse.cu index 7e4e0e54fa..d6bab1e131 100644 --- a/lib/gpu/lal_morse.cu +++ b/lib/gpu/lal_morse.cu @@ -11,7 +11,7 @@ // // begin : // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_neighbor_cpu.cu b/lib/gpu/lal_neighbor_cpu.cu index 29141a8b90..f8b32e1746 100644 --- a/lib/gpu/lal_neighbor_cpu.cu +++ b/lib/gpu/lal_neighbor_cpu.cu @@ -11,7 +11,7 @@ // // begin : // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_preprocessor.h" diff --git a/lib/gpu/lal_neighbor_gpu.cu b/lib/gpu/lal_neighbor_gpu.cu index 8a2b603217..f1da437c86 100644 --- a/lib/gpu/lal_neighbor_gpu.cu +++ b/lib/gpu/lal_neighbor_gpu.cu @@ -12,7 +12,7 @@ // // begin : // email : penwang@nvidia.com, brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_preprocessor.h" diff --git a/lib/gpu/lal_pppm.cu b/lib/gpu/lal_pppm.cu index 6a7408c720..6cf8aafbd0 100644 --- a/lib/gpu/lal_pppm.cu +++ b/lib/gpu/lal_pppm.cu @@ -11,7 +11,7 @@ // // begin : // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_re_squared.cu b/lib/gpu/lal_re_squared.cu index cd525a1ade..8852a46913 100644 --- a/lib/gpu/lal_re_squared.cu +++ b/lib/gpu/lal_re_squared.cu @@ -11,7 +11,7 @@ // // begin : Fri May 06 2011 // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_ellipsoid_extra.h" diff --git a/lib/gpu/lal_re_squared_lj.cu b/lib/gpu/lal_re_squared_lj.cu index b3c44febe7..112a4db8d9 100644 --- a/lib/gpu/lal_re_squared_lj.cu +++ b/lib/gpu/lal_re_squared_lj.cu @@ -11,7 +11,7 @@ // // begin : Fri May 06 2011 // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_ellipsoid_extra.h" diff --git a/lib/gpu/lal_soft.cu b/lib/gpu/lal_soft.cu index bccfa85ed5..5df34e7b1d 100644 --- a/lib/gpu/lal_soft.cu +++ b/lib/gpu/lal_soft.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_sw.cu b/lib/gpu/lal_sw.cu index de36d29efb..6076c55283 100644 --- a/lib/gpu/lal_sw.cu +++ b/lib/gpu/lal_sw.cu @@ -11,7 +11,7 @@ // // begin : Tue March 26, 2013 // email : brownw@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_table.cu b/lib/gpu/lal_table.cu index 8c0b52e05f..0cf0de2af0 100644 --- a/lib/gpu/lal_table.cu +++ b/lib/gpu/lal_table.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_tersoff.cu b/lib/gpu/lal_tersoff.cu index d57efaf15c..2e68215ff8 100644 --- a/lib/gpu/lal_tersoff.cu +++ b/lib/gpu/lal_tersoff.cu @@ -11,7 +11,7 @@ // // begin : Thu April 17, 2014 // email : ndactrung@gmail.com -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_tersoff_extra.h" diff --git a/lib/gpu/lal_tersoff_mod.cu b/lib/gpu/lal_tersoff_mod.cu index da284f39ee..c26c17969f 100644 --- a/lib/gpu/lal_tersoff_mod.cu +++ b/lib/gpu/lal_tersoff_mod.cu @@ -11,7 +11,7 @@ // // begin : // email : ndactrung@gmail.com -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_tersoff_mod_extra.h" diff --git a/lib/gpu/lal_tersoff_zbl.cu b/lib/gpu/lal_tersoff_zbl.cu index a170715f57..b97f9247d0 100644 --- a/lib/gpu/lal_tersoff_zbl.cu +++ b/lib/gpu/lal_tersoff_zbl.cu @@ -11,7 +11,7 @@ // // begin : // email : ndactrung@gmail.com -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_tersoff_zbl_extra.h" diff --git a/lib/gpu/lal_vashishta.cu b/lib/gpu/lal_vashishta.cu index d13bc659e7..07b7f212fc 100644 --- a/lib/gpu/lal_vashishta.cu +++ b/lib/gpu/lal_vashishta.cu @@ -11,7 +11,7 @@ // // begin : Mon June 12, 2017 // email : andershaf@gmail.com -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_yukawa.cu b/lib/gpu/lal_yukawa.cu index 5237549b0a..62bc013dc6 100644 --- a/lib/gpu/lal_yukawa.cu +++ b/lib/gpu/lal_yukawa.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" diff --git a/lib/gpu/lal_yukawa_colloid.cu b/lib/gpu/lal_yukawa_colloid.cu index 8c006a09be..30b458fec7 100644 --- a/lib/gpu/lal_yukawa_colloid.cu +++ b/lib/gpu/lal_yukawa_colloid.cu @@ -11,7 +11,7 @@ // // begin : // email : nguyentd@ornl.gov -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_zbl.cu b/lib/gpu/lal_zbl.cu index fbedfe2de2..2539c0ddd7 100644 --- a/lib/gpu/lal_zbl.cu +++ b/lib/gpu/lal_zbl.cu @@ -11,7 +11,7 @@ // // begin : // email : ndactrung@gmail.com -// ***************************************************************************/ +// *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" From d946c61789ddbd071a48116dca7e6606f85bc524 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 26 Apr 2020 23:25:52 -0400 Subject: [PATCH 61/85] re-indent code to better match LAMMPS conventions --- src/USER-REACTION/fix_bond_react.cpp | 123 ++++++++++++++------------- 1 file changed, 62 insertions(+), 61 deletions(-) diff --git a/src/USER-REACTION/fix_bond_react.cpp b/src/USER-REACTION/fix_bond_react.cpp index 981a3c1888..39750dd7da 100644 --- a/src/USER-REACTION/fix_bond_react.cpp +++ b/src/USER-REACTION/fix_bond_react.cpp @@ -267,7 +267,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : } else { double cutoff = force->numeric(FLERR,arg[iarg]); if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/react command: " - "'Rmin' cannot be negative"); + "'Rmin' cannot be negative"); cutsq[rxn][0] = cutoff*cutoff; } iarg++; @@ -335,10 +335,10 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : iarg += 3; } else if (strcmp(arg[iarg],"max_rxn") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix bond/react command: " - "'max_rxn' has too few arguments"); + "'max_rxn' has too few arguments"); max_rxn[rxn] = force->inumeric(FLERR,arg[iarg+1]); if (max_rxn[rxn] < 0) error->all(FLERR,"Illegal fix bond/react command: " - "'max_rxn' cannot be negative"); + "'max_rxn' cannot be negative"); iarg += 2; } else if (strcmp(arg[iarg],"stabilize_steps") == 0) { if (stabilization_flag == 0) error->all(FLERR,"Stabilize_steps keyword " @@ -704,36 +704,36 @@ void FixBondReact::post_constructor() i_statted_tags[i] = 1; } } else { - // sleeping code, for future capabilities - custom_exclude_flag = 1; - // first we have to find correct fix group reference - int n = strlen("GROUP_") + strlen(exclude_group) + 1; - char *fix_group = new char[n]; - strcpy(fix_group,"GROUP_"); - strcat(fix_group,exclude_group); - int ifix = modify->find_fix(fix_group); - Fix *fix = modify->fix[ifix]; - delete [] fix_group; + // sleeping code, for future capabilities + custom_exclude_flag = 1; + // first we have to find correct fix group reference + int n = strlen("GROUP_") + strlen(exclude_group) + 1; + char *fix_group = new char[n]; + strcpy(fix_group,"GROUP_"); + strcat(fix_group,exclude_group); + int ifix = modify->find_fix(fix_group); + Fix *fix = modify->fix[ifix]; + delete [] fix_group; - // this returns names of corresponding property - int unused; - char * idprop; - idprop = (char *) fix->extract("property",unused); - if (idprop == NULL) - error->all(FLERR,"Exclude group must be a per-atom property group"); + // this returns names of corresponding property + int unused; + char * idprop; + idprop = (char *) fix->extract("property",unused); + if (idprop == NULL) + error->all(FLERR,"Exclude group must be a per-atom property group"); - len = strlen(idprop) + 1; - statted_id = new char[len]; - strcpy(statted_id,idprop); + len = strlen(idprop) + 1; + statted_id = new char[len]; + strcpy(statted_id,idprop); - // initialize per-atom statted_tags to 1 - // need to correct for smooth restarts - //int flag; - //int index = atom->find_custom(statted_id,flag); - //int *i_statted_tags = atom->ivector[index]; - //for (int i = 0; i < atom->nlocal; i++) - // i_statted_tags[i] = 1; - } + // initialize per-atom statted_tags to 1 + // need to correct for smooth restarts + //int flag; + //int index = atom->find_custom(statted_id,flag); + //int *i_statted_tags = atom->ivector[index]; + //for (int i = 0; i < atom->nlocal; i++) + // i_statted_tags[i] = 1; + } // let's create a new nve/limit fix to limit newly reacted atoms @@ -800,7 +800,7 @@ void FixBondReact::post_integrate() nevery[i] = ceil(input->variable->compute_equal(var_id[NEVERY][i])); if (nevery[i] <= 0) error->all(FLERR,"Illegal fix bond/react command: " - "'Nevery' must be a positive integer"); + "'Nevery' must be a positive integer"); if (!(update->ntimestep % nevery[i])) { nevery_check = 0; break; @@ -915,7 +915,7 @@ void FixBondReact::post_integrate() if (fraction[rxnID] < 1.0) { for (int i = 0; i < nlocal; i++) - if (partner[i]) probability[i] = random[rxnID]->uniform(); + if (partner[i]) probability[i] = random[rxnID]->uniform(); } commflag = 2; @@ -1872,7 +1872,7 @@ int FixBondReact::check_constraints() } else if (constraints[i][1] == ARRHENIUS) { t = get_temperature(); prrhob = constraints[i][3]*pow(t,constraints[i][4])* - exp(-constraints[i][5]/(force->boltz*t)); + exp(-constraints[i][5]/(force->boltz*t)); if (prrhob < rrhandom[(int) constraints[i][2]]->uniform()) return 0; } } @@ -1924,13 +1924,13 @@ double FixBondReact::get_temperature() for (i = 0; i < onemol->natoms; i++) { ilocal = atom->map(glove[i][1]); t += (v[ilocal][0]*v[ilocal][0] + v[ilocal][1]*v[ilocal][1] + - v[ilocal][2]*v[ilocal][2]) * rmass[ilocal]; + v[ilocal][2]*v[ilocal][2]) * rmass[ilocal]; } } else { for (i = 0; i < onemol->natoms; i++) { ilocal = atom->map(glove[i][1]); t += (v[ilocal][0]*v[ilocal][0] + v[ilocal][1]*v[ilocal][1] + - v[ilocal][2]*v[ilocal][2]) * mass[type[ilocal]]; + v[ilocal][2]*v[ilocal][2]) * mass[type[ilocal]]; } } @@ -1959,7 +1959,7 @@ int FixBondReact::get_chirality(double four_coords[12]) for (int i = 0; i < 3; i++) { mean3[i] = (four_coords[i] + four_coords[i+3] + - four_coords[i+6])/3; + four_coords[i+6])/3; vec4[i] = four_coords[i+9] - mean3[i]; } @@ -2107,7 +2107,7 @@ void FixBondReact::find_landlocked_atoms(int myrxn) int ii = reverse_equiv[i][1][myrxn] - 1; for (int j = 0; j < twomol_nxspecial[ii][0]; j++) { if (delete_atoms[equivalences[twomol_xspecial[ii][j]-1][1][myrxn]-1][myrxn] == 0) { - error->all(FLERR,"Bond/react: A deleted atom cannot remain bonded to an atom that is not deleted"); + error->all(FLERR,"Bond/react: A deleted atom cannot remain bonded to an atom that is not deleted"); } } } @@ -2394,19 +2394,19 @@ void FixBondReact::glove_ghostcheck() // 'ghosts of another' indication taken from comm->sendlist int ghostly = 0; - #if !defined(MPI_STUBS) - if (comm->style == 0) { - for (int i = 0; i < onemol->natoms; i++) { - int ilocal = atom->map(glove[i][1]); - if (ilocal >= atom->nlocal || localsendlist[ilocal] == 1) { - ghostly = 1; - break; - } +#if !defined(MPI_STUBS) + if (comm->style == 0) { + for (int i = 0; i < onemol->natoms; i++) { + int ilocal = atom->map(glove[i][1]); + if (ilocal >= atom->nlocal || localsendlist[ilocal] == 1) { + ghostly = 1; + break; } - } else { - ghostly = 1; } - #endif + } else { + ghostly = 1; + } +#endif if (ghostly == 1) { ghostly_mega_glove[0][ghostly_num_mega] = rxnID; @@ -2480,12 +2480,12 @@ void FixBondReact::ghost_glovecast() // let's send to root, dedup, then broadcast if (me == 0) { MPI_Gatherv(MPI_IN_PLACE, ghostly_num_mega, column, // Note: some values ignored for MPI_IN_PLACE - &(global_mega_glove[0][0]), allncols, allstarts, - column, 0, world); + &(global_mega_glove[0][0]), allncols, allstarts, + column, 0, world); } else { MPI_Gatherv(&(global_mega_glove[0][start]), ghostly_num_mega, column, - &(global_mega_glove[0][0]), allncols, allstarts, - column, 0, world); + &(global_mega_glove[0][0]), allncols, allstarts, + column, 0, world); } if (me == 0) dedup_mega_gloves(1); // global_mega_glove mode @@ -3092,7 +3092,7 @@ void FixBondReact::read(int myrxn) sscanf(line,"%d",&nequivalent); if (nequivalent != onemol->natoms) error->one(FLERR,"Bond/react: Number of equivalences in map file must " - "equal number of atoms in reaction templates"); + "equal number of atoms in reaction templates"); } else if (strstr(line,"customIDs")) sscanf(line,"%d",&ncustom); else if (strstr(line,"deleteIDs")) sscanf(line,"%d",&ndelete); @@ -3285,7 +3285,7 @@ void FixBondReact::Constraints(char *line, int myrxn) tmp[6] = 181.0; // impossible range tmp[7] = 182.0; sscanf(line,"%*s %lg %lg %lg %lg %lg %lg %lg %lg",&tmp[0],&tmp[1], - &tmp[2],&tmp[3],&tmp[4],&tmp[5],&tmp[6],&tmp[7]); + &tmp[2],&tmp[3],&tmp[4],&tmp[5],&tmp[6],&tmp[7]); if (tmp[0] > onemol->natoms || tmp[1] > onemol->natoms || tmp[2] > onemol->natoms || tmp[3] > onemol->natoms) error->one(FLERR,"Bond/react: Invalid template atom ID in map file"); @@ -3513,16 +3513,17 @@ void FixBondReact::unpack_reverse_comm(int n, int *list, double *buf) if (commflag != 1) { for (i = 0; i < n; i++) { j = list[i]; - if (closeneigh[rxnID] != 0) + if (closeneigh[rxnID] != 0) { if (buf[m+1] < distsq[j][1]) { - partner[j] = (tagint) ubuf(buf[m++]).i; + partner[j] = (tagint) ubuf(buf[m++]).i; distsq[j][1] = buf[m++]; } else m += 2; - else + } else { if (buf[m+1] > distsq[j][0]) { partner[j] = (tagint) ubuf(buf[m++]).i; distsq[j][0] = buf[m++]; } else m += 2; + } } } } @@ -3580,9 +3581,9 @@ double FixBondReact::memory_usage() void FixBondReact::print_bb() { - +#if 0 //fix bond/create cargo code. eg nbonds needs to be added - /* + for (int i = 0; i < atom->nlocal; i++) { // printf("TAG " TAGINT_FORMAT ": %d nbonds: ",atom->tag[i],atom->num_bond[i]); for (int j = 0; j < atom->num_bond[i]; j++) { @@ -3615,9 +3616,9 @@ for (int i = 0; i < atom->nlocal; i++) { // printf("TAG " TAGINT_FORMAT ": %d %d %d nspecial: ",atom->tag[i], atom->nspecial[i][0],atom->nspecial[i][1],atom->nspecial[i][2]); for (int j = 0; j < atom->nspecial[i][2]; j++) { - // printf(" " TAGINT_FORMAT,atom->special[i][j]); + printf(" " TAGINT_FORMAT,atom->special[i][j]); } // printf("\n"); } -*/ +#endif } From bc3a1187ae913d75a129306c2a496e5d4edac296 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 08:06:20 -0400 Subject: [PATCH 62/85] make behavior of comparing cutoff and long-range coulomb independent of order --- src/pair_hybrid.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pair_hybrid.cpp b/src/pair_hybrid.cpp index 4d8d6f6902..bbaa311819 100644 --- a/src/pair_hybrid.cpp +++ b/src/pair_hybrid.cpp @@ -1007,7 +1007,7 @@ void *PairHybrid::extract(const char *str, int &dim) for (int m = 0; m < nstyles; m++) { ptr = styles[m]->extract(str,dim); if (ptr && strcmp(str,"cut_coul") == 0) { - if (cutptr && dim != couldim) + if (couldim != -1 && dim != couldim) error->all(FLERR, "Coulomb styles of pair hybrid sub-styles do not match"); double *p_newvalue = (double *) ptr; From f1aaad2b1325fb5e7c5eaaeb30c681d2443dfce5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 09:54:05 -0400 Subject: [PATCH 63/85] remove trailing whitespace --- lib/gpu/lal_born_coul_long_cs.cu | 4 +-- lib/gpu/lal_ufm.cu | 44 ++++++++++++++++---------------- lib/gpu/lal_vashishta.cu | 16 ++++++------ 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/lib/gpu/lal_born_coul_long_cs.cu b/lib/gpu/lal_born_coul_long_cs.cu index 69503ba420..6f04fcea94 100644 --- a/lib/gpu/lal_born_coul_long_cs.cu +++ b/lib/gpu/lal_born_coul_long_cs.cu @@ -109,7 +109,7 @@ __kernel void k_born_coul_long_cs(const __global numtyp4 *restrict x_, numtyp rsq = delx*delx+dely*dely+delz*delz; int mtype=itype*lj_types+jtype; - if (rsq0) uf3[tid]=uf3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; @@ -132,7 +132,7 @@ __kernel void k_ufm_fast(const __global numtyp4 *restrict x_, virial[i]=(acctyp)0; __syncthreads(); - + if (ii0) energy += (param3_bigh*reta+vc2-vc3-param3_bigw*r6inv-r*param3_dvrc+param3_c0); - + if (vflag>0) { virial[0] += delx*delx*force; virial[1] += dely*dely*force; @@ -471,13 +471,13 @@ __kernel void k_vashishta_three_center(const __global numtyp4 *restrict x_, numtyp rsq1 = delr1x*delr1x+delr1y*delr1y+delr1z*delr1z; int ijparam=elem2param[itype*nelements*nelements+jtype*nelements+jtype]; - + numtyp4 param4_ijparam; fetch4(param4_ijparam,ijparam,param4_tex); param_r0sq_ij=param4_ijparam.x; if (rsq1 > param_r0sq_ij) continue; // still keep this for neigh no and tpa > 1 param_gamma_ij=param4_ijparam.y; param_r0_ij=param4_ijparam.w; - + int nbor_k,k_end; if (dev_packed==dev_nbor) { nbor_k=nborj_start-offset_j+offset_k; @@ -619,7 +619,7 @@ __kernel void k_vashishta_three_end(const __global numtyp4 *restrict x_, param_gamma_ij=param4_ijparam.y; param_r0_ij = param4_ijparam.w; - + int nbor_k,numk; if (dev_nbor==dev_packed) { if (gpu_nbor) nbor_k=j+nbor_pitch; @@ -665,14 +665,14 @@ __kernel void k_vashishta_three_end(const __global numtyp4 *restrict x_, if (rsq2 < param_r0sq_ik) { param_gamma_ik=param4_ikparam.y; param_r0_ik=param4_ikparam.w; - + int ijkparam=elem2param[jtype*nelements*nelements+itype*nelements+ktype]; //jik numtyp4 param5_ijkparam; fetch4(param5_ijkparam,ijkparam,param5_tex); param_bigc_ijk=param5_ijkparam.x; param_costheta_ijk=param5_ijkparam.y; param_bigb_ijk=param5_ijkparam.z; param_big2b_ijk=param5_ijkparam.w; - + numtyp fjx, fjy, fjz; //if (evatom==0) { threebody_half(delr1x,delr1y,delr1z); @@ -774,7 +774,7 @@ __kernel void k_vashishta_three_end_vatom(const __global numtyp4 *restrict x_, param_gamma_ij=param4_ijparam.y; param_r0_ij=param4_ijparam.w; - + int nbor_k,numk; if (dev_nbor==dev_packed) { if (gpu_nbor) nbor_k=j+nbor_pitch; @@ -827,7 +827,7 @@ __kernel void k_vashishta_three_end_vatom(const __global numtyp4 *restrict x_, param_costheta_ijk=param5_ijkparam.y; param_bigb_ijk=param5_ijkparam.z; param_big2b_ijk=param5_ijkparam.w; - + numtyp fjx, fjy, fjz, fkx, fky, fkz; threebody(delr1x,delr1y,delr1z,eflag,energy); From 5de6224bd359e22a1aeb12544814b6d1d83db3fc Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 27 Apr 2020 08:14:19 -0600 Subject: [PATCH 64/85] Fix logic error --- src/KOKKOS/compute_orientorder_atom_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp index 375d3fea71..50955de847 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -92,7 +92,7 @@ void ComputeOrientOrderAtomKokkos::init() neighbor->requests[irequest]-> kokkos_host = std::is_same::value && - std::is_same::value; + !std::is_same::value; neighbor->requests[irequest]-> kokkos_device = std::is_same::value; } From ee9757b155ba228a5bf5316b4de3fd1aaba67717 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 27 Apr 2020 08:31:56 -0600 Subject: [PATCH 65/85] Add missing copymode flag statement --- src/KOKKOS/compute_orientorder_atom_kokkos.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp index 50955de847..b9722f9e2a 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -150,6 +150,8 @@ void ComputeOrientOrderAtomKokkos::compute_peratom() d_ncount = t_sna_1i("orientorder/atom:ncount",chunk_size); } + copymode = 1; + // insure distsq and nearest arrays are long enough maxneigh = 0; From 644f74c585b3c29dc9f02f5215b8385446b6f9d2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 10:39:34 -0400 Subject: [PATCH 66/85] when changing boundaries from periodic to non-periodic, we need to reset the image flags for these dimensions to 0 --- src/domain.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/domain.cpp b/src/domain.cpp index efa2ef00cf..909d05950e 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -1874,6 +1874,12 @@ void Domain::set_boundary(int narg, char **arg, int flag) if (boundary[2][0] == 0) zperiodic = 1; else zperiodic = 0; + // record if we changed a periodic boundary to a non-periodic one + int pflag=0; + if ((periodicity[0] && !xperiodic) + || (periodicity[1] && !yperiodic) + || (periodicity[2] && !zperiodic)) pflag = 1; + periodicity[0] = xperiodic; periodicity[1] = yperiodic; periodicity[2] = zperiodic; @@ -1885,6 +1891,24 @@ void Domain::set_boundary(int narg, char **arg, int flag) boundary[1][0] >= 2 || boundary[1][1] >= 2 || boundary[2][0] >= 2 || boundary[2][1] >= 2) nonperiodic = 2; } + if (pflag) { + pflag = 0; + for (int i=0; i < atom->nlocal; ++i) { + int xbox = (atom->image[i] & IMGMASK) - IMGMAX; + int ybox = (atom->image[i] >> IMGBITS & IMGMASK) - IMGMAX; + int zbox = (atom->image[i] >> IMG2BITS) - IMGMAX; + if (!xperiodic) { xbox = 0; pflag = 1; } + if (!yperiodic) { ybox = 0; pflag = 1; } + if (!zperiodic) { zbox = 0; pflag = 1; } + atom->image[i] = ((imageint) (xbox + IMGMAX) & IMGMASK) | + (((imageint) (ybox + IMGMAX) & IMGMASK) << IMGBITS) | + (((imageint) (zbox + IMGMAX) & IMGMASK) << IMG2BITS); + } + int flag_all; + MPI_Allreduce(&flag,&flag_all, MPI_INT, 1, MPI_SUM, world); + if ((flag_all > 0) && (comm->me == 0)) + error->warning(FLERR,"Reset image flags for non-periodic boundary"); + } } /* ---------------------------------------------------------------------- From b04cc115f3668e7ce1a3e18ffdd04c3f0d7ccb7b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 10:51:53 -0400 Subject: [PATCH 67/85] document the image flag reset for switching boundaries --- doc/src/change_box.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/src/change_box.rst b/doc/src/change_box.rst index 313ac1a0b9..a21f74e93b 100644 --- a/doc/src/change_box.rst +++ b/doc/src/change_box.rst @@ -299,6 +299,12 @@ match what is stored in the restart file. So if you wish to change them, you should use the change_box command after the read_restart command. +.. note:: + + Changing a periodic boundary to a non-periodic one will also + cause the image flag for that dimension to be reset to 0 for + all atoms. LAMMPS will print a warning message, if that happens. + ---------- The *ortho* and *triclinic* keywords convert the simulation box to be From 73ec2d8182a80728da61e708ec5a4ca65f6ce972 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 11:06:17 -0400 Subject: [PATCH 68/85] fix typo in MPI_Allreduce call. --- src/domain.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/domain.cpp b/src/domain.cpp index 909d05950e..e1a9744fde 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -1905,7 +1905,7 @@ void Domain::set_boundary(int narg, char **arg, int flag) (((imageint) (zbox + IMGMAX) & IMGMASK) << IMG2BITS); } int flag_all; - MPI_Allreduce(&flag,&flag_all, MPI_INT, 1, MPI_SUM, world); + MPI_Allreduce(&flag,&flag_all, 1, MPI_INT, MPI_SUM, world); if ((flag_all > 0) && (comm->me == 0)) error->warning(FLERR,"Reset image flags for non-periodic boundary"); } From a4b3af7d954bf2261f32b889f783657a23719bea Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 27 Apr 2020 10:07:26 -0600 Subject: [PATCH 69/85] Fix bug in Kokkos occasional neighlist build --- src/KOKKOS/npair_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/npair_kokkos.cpp b/src/KOKKOS/npair_kokkos.cpp index aa2a1fc5ff..9dc5294ef1 100644 --- a/src/KOKKOS/npair_kokkos.cpp +++ b/src/KOKKOS/npair_kokkos.cpp @@ -97,7 +97,7 @@ void NPairKokkos::copy_stencil_info() NPair::copy_stencil_info(); nstencil = ns->nstencil; - if (neighbor->last_setup_bins == update->ntimestep) { + if (ns->last_stencil == update->ntimestep) { // copy stencil to device as it may have changed int maxstencil = ns->get_maxstencil(); From 437967bfd83f8078e0f34d6cfdb617457ee3b0f9 Mon Sep 17 00:00:00 2001 From: Yaser Afshar Date: Mon, 27 Apr 2020 12:49:03 -0500 Subject: [PATCH 70/85] =?UTF-8?q?adding=20the=20standard=20header=20to=20p?= =?UTF-8?q?revent=20=E2=80=98NULL=E2=80=99=20was=20not=20declared=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/message/cslib/src/STUBS_ZMQ/zmq.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/message/cslib/src/STUBS_ZMQ/zmq.h b/lib/message/cslib/src/STUBS_ZMQ/zmq.h index 2f02eb4035..a335ee5e01 100644 --- a/lib/message/cslib/src/STUBS_ZMQ/zmq.h +++ b/lib/message/cslib/src/STUBS_ZMQ/zmq.h @@ -17,6 +17,8 @@ #ifndef ZMQ_DUMMY_H #define ZMQ_DUMMY_H +#include + namespace CSLIB_NS { #define ZMQ_REQ 0 From 1aaf3ee03fa2fbdce3873e3f7a655da663babf36 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 15:10:14 -0400 Subject: [PATCH 71/85] add new combined container for compiling with GPU support. --- tools/singularity/ubuntu18.04_gpu.def | 92 +++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 tools/singularity/ubuntu18.04_gpu.def diff --git a/tools/singularity/ubuntu18.04_gpu.def b/tools/singularity/ubuntu18.04_gpu.def new file mode 100644 index 0000000000..127cf65412 --- /dev/null +++ b/tools/singularity/ubuntu18.04_gpu.def @@ -0,0 +1,92 @@ +BootStrap: docker +From: rocm/dev-ubuntu-18.04 + +%environment + export PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64 + export CUDADIR=/usr/local/cuda + export CUDA_PATH=/usr/local/cuda + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/nvidia/lib:/usr/local/nvidia/lib64 + export LIBRARY_PATH=/usr/local/cuda/lib64/stubs +%post + export DEBIAN_FRONTEND=noninteractive + wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin + mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 + apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub + add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /" + apt-get update + apt-get upgrade --no-install-recommends -y + apt-get install --no-install-recommends -y software-properties-common + apt-get install --no-install-recommends -y \ + bc \ + build-essential \ + ccache \ + clang \ + cmake \ + cmake-curses-gui \ + cuda \ + cuda-compiler-10-2 \ + curl \ + doxygen \ + enchant \ + g++ \ + gcc \ + gfortran \ + git \ + hdf5-tools \ + kmod \ + less \ + libblas-dev \ + libeigen3-dev \ + libenchant-dev \ + libfftw3-dev \ + libgsl-dev \ + libhdf5-serial-dev \ + libhwloc-dev \ + libjpeg-dev \ + liblapack-dev \ + libomp-dev \ + libopenblas-dev \ + libnuma-dev \ + libpng-dev \ + libproj-dev \ + libvtk6-dev \ + make \ + mpi-default-bin \ + mpi-default-dev \ + ninja-build \ + python-dev \ + python-pip \ + python-pygments \ + python-virtualenv \ + python3-dev \ + python3-pip \ + python3-pkg-resources \ + python3-setuptools \ + python3-virtualenv \ + rocm-libs \ + rsync \ + ssh \ + vim-nox \ + virtualenv \ + voro++-dev \ + wget \ + xxd + + export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64 + git clone -b master-rocm-3.3 https://github.com/ROCmSoftwarePlatform/hipCUB.git + mkdir hipCUB/build + cd hipCUB/build + CXX=hcc cmake -D BUILD_TEST=off .. + make -j4 + make package + make install + + echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf + echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf + +%environment + LC_ALL=C + export LC_ALL + +%labels + Author rbberger From 7b79b3101892888772542440a20b8a56fd3b68a8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 15:17:45 -0400 Subject: [PATCH 72/85] remove latex support from accelerator image definitions --- tools/singularity/README.md | 2 +- tools/singularity/ubuntu18.04_amd_rocm.def | 6 ------ tools/singularity/ubuntu18.04_intel_opencl.def | 6 ------ tools/singularity/ubuntu18.04_nvidia.def | 6 ------ 4 files changed, 1 insertion(+), 19 deletions(-) diff --git a/tools/singularity/README.md b/tools/singularity/README.md index a01b1688b8..abef8b2886 100644 --- a/tools/singularity/README.md +++ b/tools/singularity/README.md @@ -53,7 +53,7 @@ make | ubuntu16.04.def | Ubuntu 16.04LTS with MPI == OpenMPI, no LaTeX | | ubuntu18.04.def | Ubuntu 18.04LTS with MPI == OpenMPI | | ubuntu18.04_amd_rocm.def | Ubuntu 18.04LTS with AMD ROCm toolkit | -| ubuntu18.04_amd_rocm_cuda.def | Ubuntu 18.04LTS with -"- plus Nvidia CUDA 10.2 | +| ubuntu18.04_gpu.def | Ubuntu 18.04LTS with -"- plus Nvidia CUDA 10.2 | | ubuntu18.04_nvidia.def | Ubuntu 18.04LTS with Nvidia CUDA 10.2 toolkit | | ubuntu18.04_intel_opencl.def | Ubuntu 18.04LTS with Intel OpenCL runtime | | ubuntu20.04.def | Ubuntu 20.04LTS with MPI == OpenMPI | diff --git a/tools/singularity/ubuntu18.04_amd_rocm.def b/tools/singularity/ubuntu18.04_amd_rocm.def index 0338ff3c45..ffb609a5c4 100644 --- a/tools/singularity/ubuntu18.04_amd_rocm.def +++ b/tools/singularity/ubuntu18.04_amd_rocm.def @@ -57,12 +57,6 @@ From: rocm/dev-ubuntu-18.04 rocm-libs \ rsync \ ssh \ - texlive \ - texlive-latex-recommended \ - texlive-pictures \ - texlive-publishers \ - texlive-science \ - dvipng \ vim-nox \ virtualenv \ voro++-dev \ diff --git a/tools/singularity/ubuntu18.04_intel_opencl.def b/tools/singularity/ubuntu18.04_intel_opencl.def index 6dabb94cb1..7f24fb0782 100644 --- a/tools/singularity/ubuntu18.04_intel_opencl.def +++ b/tools/singularity/ubuntu18.04_intel_opencl.def @@ -55,12 +55,6 @@ From: ubuntu:18.04 python3-virtualenv \ rsync \ ssh \ - texlive \ - texlive-latex-recommended \ - texlive-pictures \ - texlive-publishers \ - texlive-science \ - dvipng \ vim-nox \ virtualenv \ voro++-dev \ diff --git a/tools/singularity/ubuntu18.04_nvidia.def b/tools/singularity/ubuntu18.04_nvidia.def index bec17adf7f..6c24fb6d9c 100644 --- a/tools/singularity/ubuntu18.04_nvidia.def +++ b/tools/singularity/ubuntu18.04_nvidia.def @@ -55,12 +55,6 @@ From: nvidia/cuda:10.2-devel-ubuntu18.04 python3-virtualenv \ rsync \ ssh \ - texlive \ - texlive-latex-recommended \ - texlive-pictures \ - texlive-publishers \ - texlive-science \ - dvipng \ vim-nox \ virtualenv \ voro++-dev \ From 76d7699abe144738345dc2237ccaab20c42aaf0f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 16:58:43 -0400 Subject: [PATCH 73/85] remove trailing whitespace --- src/KOKKOS/compute_orientorder_atom_kokkos.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp index b9722f9e2a..d00dc3e238 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -161,7 +161,7 @@ void ComputeOrientOrderAtomKokkos::compute_peratom() d_distsq = t_sna_2d_lr("orientorder/atom:distsq",chunk_size,maxneigh); d_nearest = t_sna_2i_lr("orientorder/atom:nearest",chunk_size,maxneigh); d_rlist = t_sna_3d_lr("orientorder/atom:rlist",chunk_size,maxneigh,3); - + d_distsq_um = d_distsq; d_rlist_um = d_rlist; d_nearest_um = d_nearest; @@ -194,11 +194,11 @@ void ComputeOrientOrderAtomKokkos::compute_peratom() typename Kokkos::TeamPolicy policy_neigh(chunk_size,team_size,vector_length); Kokkos::parallel_for("ComputeOrientOrderAtomNeigh",policy_neigh,*this); } - + //Select3 typename Kokkos::RangePolicy policy_select3(0,chunk_size); Kokkos::parallel_for("ComputeOrientOrderAtomSelect3",policy_select3,*this); - + //BOOP1 { int vector_length = vector_length_default; @@ -207,7 +207,7 @@ void ComputeOrientOrderAtomKokkos::compute_peratom() typename Kokkos::TeamPolicy policy_boop1(((chunk_size+team_size-1)/team_size)*maxneigh,team_size,vector_length); Kokkos::parallel_for("ComputeOrientOrderAtomBOOP1",policy_boop1,*this); } - + //BOOP2 typename Kokkos::RangePolicy policy_boop2(0,chunk_size); Kokkos::parallel_for("ComputeOrientOrderAtomBOOP2",policy_boop2,*this); From edd708dbcef0416bf17b7b11866f31e4984e10e9 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 17:17:33 -0400 Subject: [PATCH 74/85] fix command ordering issues with gpu image build --- tools/singularity/ubuntu18.04_gpu.def | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tools/singularity/ubuntu18.04_gpu.def b/tools/singularity/ubuntu18.04_gpu.def index 127cf65412..999b69522d 100644 --- a/tools/singularity/ubuntu18.04_gpu.def +++ b/tools/singularity/ubuntu18.04_gpu.def @@ -9,10 +9,6 @@ From: rocm/dev-ubuntu-18.04 export LIBRARY_PATH=/usr/local/cuda/lib64/stubs %post export DEBIAN_FRONTEND=noninteractive - wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin - mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 - apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub - add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /" apt-get update apt-get upgrade --no-install-recommends -y apt-get install --no-install-recommends -y software-properties-common @@ -23,8 +19,6 @@ From: rocm/dev-ubuntu-18.04 clang \ cmake \ cmake-curses-gui \ - cuda \ - cuda-compiler-10-2 \ curl \ doxygen \ enchant \ @@ -71,6 +65,14 @@ From: rocm/dev-ubuntu-18.04 voro++-dev \ wget \ xxd + wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin + mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 + apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub + add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /" + apt-get update + apt-get install --no-install-recommends -y \ + cuda \ + cuda-compiler-10-2 \ export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64 git clone -b master-rocm-3.3 https://github.com/ROCmSoftwarePlatform/hipCUB.git From 29d667721ae70b24fb5644fabd84f01696ba4c9a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 22:29:41 -0400 Subject: [PATCH 75/85] tweak GPU.cmake so that hip_get_devices compiles and links --- cmake/Modules/Packages/GPU.cmake | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 574be941f7..c59b350b56 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -338,6 +338,10 @@ elseif(GPU_API STREQUAL "HIP") target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/include) target_include_directories(hip_get_devices PRIVATE ${CUDA_INCLUDE_DIRS}) target_link_libraries(hip_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) + elseif(HIP_PLATFORM STREQUAL "hcc") + target_compile_definitions(hip_get_devices PRIVATE -D__HIP_PLATFORM_HCC__) + target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/include) + target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/../hsa/include) endif() target_link_libraries(lammps PRIVATE gpu) From dd5ebb0a81196bc90a4de902b5491bd2424ac0ef Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 22:30:17 -0400 Subject: [PATCH 76/85] add preset to compile with hcc --- cmake/presets/hip.cmake | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 cmake/presets/hip.cmake diff --git a/cmake/presets/hip.cmake b/cmake/presets/hip.cmake new file mode 100644 index 0000000000..9bfea33b54 --- /dev/null +++ b/cmake/presets/hip.cmake @@ -0,0 +1,14 @@ +# preset that will enable hcc plus gcc with support for MPI and OpenMP (on Linux boxes) + +set(CMAKE_CXX_COMPILER "hcc" CACHE STRING "" FORCE) +set(CMAKE_C_COMPILER "gcc" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBG" CACHE STRING "" FORCE) +set(MPI_CXX "hcc" CACHE STRING "" FORCE) +set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) +unset(HAVE_OMP_H_INCLUDE CACHE) + +set(OpenMP_CXX "hcc" CACHE STRING "" FORCE) +set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE) +set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE) +set(OpenMP_omp_LIBRARY "libomp.so" CACHE PATH "" FORCE) + From b362a06ca32f745eddbd0fb252bf044118758650 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 23:17:43 -0400 Subject: [PATCH 77/85] (temporarily) disable CMAKE_TUNE_FLAGS verification script code --- cmake/CMakeLists.txt | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 9f29220d4f..0e408ae25b 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -326,16 +326,17 @@ foreach(PKG_WITH_INCL KSPACE PYTHON VORONOI USER-COLVARS USER-MOLFILE USER-NETCD endforeach() set(CMAKE_TUNE_FLAGS "${CMAKE_TUNE_DEFAULT}" CACHE STRING "Compiler specific optimization or instrumentation") -separate_arguments(CMAKE_TUNE_FLAGS) -include(CheckCXXCompilerFlag) -foreach(_FLAG ${CMAKE_TUNE_FLAGS}) - check_cxx_compiler_flag("${_FLAG}" COMPILER_SUPPORTS${_FLAG}) - if(COMPILER_SUPPORTS${_FLAG}) - target_compile_options(lammps PRIVATE ${_FLAG}) - else() - message(WARNING "${_FLAG} found in CMAKE_TUNE_FLAGS, but not supported by the compiler, skipping") - endif() -endforeach() +# this is broken for many flags and compilers +#separate_arguments(CMAKE_TUNE_FLAGS) +#include(CheckCXXCompilerFlag) +#foreach(_FLAG ${CMAKE_TUNE_FLAGS}) +# check_cxx_compiler_flag("${_FLAG}" COMPILER_SUPPORTS${_FLAG}) +# if(COMPILER_SUPPORTS${_FLAG}) +# target_compile_options(lammps PRIVATE ${_FLAG}) +# else() +# message(WARNING "${_FLAG} found in CMAKE_TUNE_FLAGS, but not supported by the compiler, skipping") +# endif() +#endforeach() ######################################################################## # Basic system tests (standard libraries, headers, functions, types) # ######################################################################## From 25d1ad7714db6d600df9f2ba70c22494b32d9295 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 23:18:25 -0400 Subject: [PATCH 78/85] update HIP compilation makefile for updated legacy build --- src/MAKE/OPTIONS/Makefile.hip | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/MAKE/OPTIONS/Makefile.hip b/src/MAKE/OPTIONS/Makefile.hip index 76affc796c..062b92fb6d 100644 --- a/src/MAKE/OPTIONS/Makefile.hip +++ b/src/MAKE/OPTIONS/Makefile.hip @@ -27,12 +27,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64 # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -45,7 +45,7 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -56,7 +56,7 @@ FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -91,18 +91,22 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules From d3017744a946cd445112a3521dea4daedc75f5ce Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 23:55:41 -0400 Subject: [PATCH 79/85] updates for building with hip --- cmake/Modules/Packages/GPU.cmake | 10 ++++++---- cmake/presets/hip.cmake | 8 ++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index c59b350b56..a6d5c77ad2 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -278,7 +278,7 @@ elseif(GPU_API STREQUAL "HIP") set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h ${LAMMPS_LIB_BINARY_DIR}/gpu/*.cu.cpp") - hip_add_library(gpu STATIC ${GPU_LIB_SOURCES}) + add_library(gpu STATIC ${GPU_LIB_SOURCES}) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu) target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_HIP) @@ -330,7 +330,7 @@ elseif(GPU_API STREQUAL "HIP") if(HIP_PLATFORM STREQUAL "nvcc") target_compile_definitions(gpu PRIVATE -D__HIP_PLATFORM_NVCC__) - target_include_directories(gpu PRIVATE ${HIP_ROOT_DIR}/include) + target_include_directories(gpu PRIVATE ${HIP_ROOT_DIR}/../include) target_include_directories(gpu PRIVATE ${CUDA_INCLUDE_DIRS}) target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) @@ -339,9 +339,11 @@ elseif(GPU_API STREQUAL "HIP") target_include_directories(hip_get_devices PRIVATE ${CUDA_INCLUDE_DIRS}) target_link_libraries(hip_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) elseif(HIP_PLATFORM STREQUAL "hcc") + target_compile_definitions(gpu PRIVATE -D__HIP_PLATFORM_HCC__) + target_include_directories(gpu PRIVATE ${HIP_ROOT_DIR}/../include) + target_compile_definitions(hip_get_devices PRIVATE -D__HIP_PLATFORM_HCC__) - target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/include) - target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/../hsa/include) + target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/../include) endif() target_link_libraries(lammps PRIVATE gpu) diff --git a/cmake/presets/hip.cmake b/cmake/presets/hip.cmake index 9bfea33b54..765fcecf5e 100644 --- a/cmake/presets/hip.cmake +++ b/cmake/presets/hip.cmake @@ -1,13 +1,13 @@ -# preset that will enable hcc plus gcc with support for MPI and OpenMP (on Linux boxes) +# preset that will enable hipcc plus gcc with support for MPI and OpenMP (on Linux boxes) -set(CMAKE_CXX_COMPILER "hcc" CACHE STRING "" FORCE) +set(CMAKE_CXX_COMPILER "hipcc" CACHE STRING "" FORCE) set(CMAKE_C_COMPILER "gcc" CACHE STRING "" FORCE) set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBG" CACHE STRING "" FORCE) -set(MPI_CXX "hcc" CACHE STRING "" FORCE) +set(MPI_CXX "hipcc" CACHE STRING "" FORCE) set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) unset(HAVE_OMP_H_INCLUDE CACHE) -set(OpenMP_CXX "hcc" CACHE STRING "" FORCE) +set(OpenMP_CXX "hipcc" CACHE STRING "" FORCE) set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE) set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE) set(OpenMP_omp_LIBRARY "libomp.so" CACHE PATH "" FORCE) From d931365e4e1030d32d4e7b27a9cdac42cd60ed7f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 28 Apr 2020 01:11:54 -0400 Subject: [PATCH 80/85] fix typos --- cmake/presets/clang.cmake | 2 +- cmake/presets/hip.cmake | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/cmake/presets/clang.cmake b/cmake/presets/clang.cmake index e2b1e02cc9..bfc355669d 100644 --- a/cmake/presets/clang.cmake +++ b/cmake/presets/clang.cmake @@ -2,7 +2,7 @@ set(CMAKE_CXX_COMPILER "clang++" CACHE STRING "" FORCE) set(CMAKE_C_COMPILER "clang" CACHE STRING "" FORCE) -set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBG" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE) set(MPI_CXX "clang++" CACHE STRING "" FORCE) set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) unset(HAVE_OMP_H_INCLUDE CACHE) diff --git a/cmake/presets/hip.cmake b/cmake/presets/hip.cmake index 765fcecf5e..047c8e8eb0 100644 --- a/cmake/presets/hip.cmake +++ b/cmake/presets/hip.cmake @@ -2,9 +2,7 @@ set(CMAKE_CXX_COMPILER "hipcc" CACHE STRING "" FORCE) set(CMAKE_C_COMPILER "gcc" CACHE STRING "" FORCE) -set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBG" CACHE STRING "" FORCE) -set(MPI_CXX "hipcc" CACHE STRING "" FORCE) -set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE) unset(HAVE_OMP_H_INCLUDE CACHE) set(OpenMP_CXX "hipcc" CACHE STRING "" FORCE) From 867088dbd8f48821b3ef76c940e97a5e8d0dffdb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 28 Apr 2020 01:12:31 -0400 Subject: [PATCH 81/85] add packages to also allow a regular build not just cross-compilation --- tools/singularity/fedora30_mingw.def | 10 ++++++---- tools/singularity/fedora32_mingw.def | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/tools/singularity/fedora30_mingw.def b/tools/singularity/fedora30_mingw.def index ef83d8f0a7..ab9ea7b738 100644 --- a/tools/singularity/fedora30_mingw.def +++ b/tools/singularity/fedora30_mingw.def @@ -3,9 +3,11 @@ From: fedora:30 %post dnf -y update - dnf -y install vim-enhanced git file make cmake patch which file \ - dos2unix findutils rsync \ - ccache gcc-c++ gdb valgrind eigen3-devel \ + dnf -y install vim-enhanced git file make cmake patch which file Lmod \ + ninja-build clang libomp-devel libubsan libasan libtsan \ + dos2unix findutils rsync python-devel libjpeg-devel libpng-devel \ + ccache gcc-c++ gcc-gfortran gdb valgrind eigen3-devel openblas-devel \ + openmpi-devel mpich-devel fftw-devel voro++-devel gsl-devel \ mingw-filesystem-base mingw32-nsis mingw-binutils-generic \ mingw32-filesystem mingw32-pkg-config \ mingw64-filesystem mingw64-pkg-config \ @@ -39,7 +41,7 @@ From: fedora:30 # we need to reset any module variables # inherited from the host. unset LOADEDMODULES - source /etc/profile.d/modules.sh + . /etc/profile.d/modules.sh module purge module load mpi diff --git a/tools/singularity/fedora32_mingw.def b/tools/singularity/fedora32_mingw.def index 43d5659a19..3f4ded6298 100644 --- a/tools/singularity/fedora32_mingw.def +++ b/tools/singularity/fedora32_mingw.def @@ -38,6 +38,8 @@ From: fedora:32 %environment LC_ALL=C export LC_ALL + # we need to reset any module variables + # inherited from the host. unset LOADEDMODULES . /etc/profile.d/modules.sh module purge From 705c10ef473add065107d7d15010f26752c0d943 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 28 Apr 2020 01:12:49 -0400 Subject: [PATCH 82/85] restore original command --- cmake/Modules/Packages/GPU.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index a6d5c77ad2..16b492cbe0 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -278,7 +278,7 @@ elseif(GPU_API STREQUAL "HIP") set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h ${LAMMPS_LIB_BINARY_DIR}/gpu/*.cu.cpp") - add_library(gpu STATIC ${GPU_LIB_SOURCES}) + hip_add_library(gpu STATIC ${GPU_LIB_SOURCES}) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu) target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_HIP) From 6be36196da03a407f0f93176d12317ce8b78636e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 28 Apr 2020 01:36:21 -0400 Subject: [PATCH 83/85] explicitly include STUBS MPI headers for serial compile since we seem to pick up the OpenMP ones otherwise --- cmake/Modules/Packages/GPU.cmake | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 16b492cbe0..8c1b4d25e4 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -99,6 +99,9 @@ if(GPU_API STREQUAL "CUDA") add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS}) target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS}) + if(NOT BUILD_MPI) + target_include_directories(gpu PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS) + endif() target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS}) if(CUDPP_OPT) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) @@ -177,6 +180,9 @@ elseif(GPU_API STREQUAL "OPENCL") add_library(gpu STATIC ${GPU_LIB_SOURCES}) target_link_libraries(gpu PRIVATE OpenCL::OpenCL) target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu) + if(NOT BUILD_MPI) + target_include_directories(gpu PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS) + endif() target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_OPENCL) @@ -280,6 +286,9 @@ elseif(GPU_API STREQUAL "HIP") hip_add_library(gpu STATIC ${GPU_LIB_SOURCES}) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu) + if(NOT BUILD_MPI) + target_include_directories(gpu PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS) + endif() target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_HIP) From 24fe5bc1876f17b84676ad0c0c029b199c8d7c09 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 28 Apr 2020 06:03:34 -0600 Subject: [PATCH 84/85] cmake: reenable CMAKE_TUNE_FLAGS check --- cmake/CMakeLists.txt | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 0e408ae25b..d9c82678eb 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -326,17 +326,17 @@ foreach(PKG_WITH_INCL KSPACE PYTHON VORONOI USER-COLVARS USER-MOLFILE USER-NETCD endforeach() set(CMAKE_TUNE_FLAGS "${CMAKE_TUNE_DEFAULT}" CACHE STRING "Compiler specific optimization or instrumentation") -# this is broken for many flags and compilers -#separate_arguments(CMAKE_TUNE_FLAGS) -#include(CheckCXXCompilerFlag) -#foreach(_FLAG ${CMAKE_TUNE_FLAGS}) -# check_cxx_compiler_flag("${_FLAG}" COMPILER_SUPPORTS${_FLAG}) -# if(COMPILER_SUPPORTS${_FLAG}) -# target_compile_options(lammps PRIVATE ${_FLAG}) -# else() -# message(WARNING "${_FLAG} found in CMAKE_TUNE_FLAGS, but not supported by the compiler, skipping") -# endif() -#endforeach() +separate_arguments(CMAKE_TUNE_FLAGS) +include(CheckCXXCompilerFlag) +foreach(_FLAG ${CMAKE_TUNE_FLAGS}) + string(REGEX REPLACE "[=\"]" "" _FLAGX ${_FLAG}) + check_cxx_compiler_flag("${_FLAG}" COMPILER_SUPPORTS${_FLAGX}) + if(COMPILER_SUPPORTS${_FLAGX}) + target_compile_options(lammps PRIVATE ${_FLAG}) + else() + message(WARNING "${_FLAG} found in CMAKE_TUNE_FLAGS, but not supported by the compiler, skipping") + endif() +endforeach() ######################################################################## # Basic system tests (standard libraries, headers, functions, types) # ######################################################################## From ef3e071067f5e5fa5ee6caaeadc15529fef57661 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 28 Apr 2020 07:43:31 -0600 Subject: [PATCH 85/85] GPU.cmake: localize hackery --- cmake/Modules/Packages/GPU.cmake | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 8c1b4d25e4..9299914b9b 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -99,9 +99,6 @@ if(GPU_API STREQUAL "CUDA") add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS}) target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS}) - if(NOT BUILD_MPI) - target_include_directories(gpu PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS) - endif() target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS}) if(CUDPP_OPT) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) @@ -180,9 +177,6 @@ elseif(GPU_API STREQUAL "OPENCL") add_library(gpu STATIC ${GPU_LIB_SOURCES}) target_link_libraries(gpu PRIVATE OpenCL::OpenCL) target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu) - if(NOT BUILD_MPI) - target_include_directories(gpu PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS) - endif() target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_OPENCL) @@ -286,9 +280,6 @@ elseif(GPU_API STREQUAL "HIP") hip_add_library(gpu STATIC ${GPU_LIB_SOURCES}) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu) - if(NOT BUILD_MPI) - target_include_directories(gpu PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS) - endif() target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_HIP) @@ -368,7 +359,12 @@ RegisterStylesExt(${GPU_SOURCES_DIR} gpu GPU_SOURCES) get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) -target_link_libraries(gpu PRIVATE MPI::MPI_CXX) +if(NOT BUILD_MPI) + # mpistubs is aliased to MPI::MPI_CXX, but older versions of cmake won't work forward the include path + target_link_libraries(gpu PRIVATE mpi_stubs) +else() + target_link_libraries(gpu PRIVATE MPI::MPI_CXX) +endif() if(NOT BUILD_SHARED_LIBS) install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif()

    NUpo_W{6*ZV7+9;8+%#_(WhjjZ$u4i%-f@T`s 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Ξpu>&B(jV+n5VN^JM_ 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

    9&$_Gw+VOEZX( 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 diff --git a/doc/src/Eqs/pair_morse_soft.tex b/doc/src/Eqs/pair_morse_soft.tex deleted file mode 100644 index 5e724077e8..0000000000 --- a/doc/src/Eqs/pair_morse_soft.tex +++ /dev/null @@ -1,13 +0,0 @@ -\documentclass[12pt]{article} -\usepackage{amsmath} - -\begin{document} - - -\begin{align*} - s(\lambda) =& (1 - \lambda) / (1 - \lambda_f), \qquad B = -2D e^{-2 \alpha r_0} (e^{\alpha r_0} - 1) / 3 \\ - E =& D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} \right] + s(\lambda) B e^{-3\alpha(r-r_0)}, \qquad \hspace{2.85em}\lambda \geq \lambda_f,\quad r < r_c \\ - E =& \left( D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} \right] + B e^{-3\alpha(r-r_0)} \right)(\lambda/\lambda_f)^n, \qquad \lambda < \lambda_f,\quad r < r_c -\end{align*} - -\end{document} diff --git a/doc/src/Eqs/pair_nm.jpg b/doc/src/Eqs/pair_nm.jpg deleted file mode 100644 index 1e7fe0981c9e35855471a040ba5a83c38fb0fa37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6304 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%0D>%w_7}?V%4%u>19TGn@7*S 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 S>fevGe>W!o?~XJ5JN_U2M;?m+ diff --git a/doc/src/Eqs/pair_sw.tex b/doc/src/Eqs/pair_sw.tex deleted file mode 100644 index ebcc39d77b..0000000000 --- a/doc/src/Eqs/pair_sw.tex +++ /dev/null @@ -1,18 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} - E & = & \sum_i \sum_{j > i} \phi_2 (r_{ij}) + - \sum_i \sum_{j \neq i} \sum_{k > j} - \phi_3 (r_{ij}, r_{ik}, \theta_{ijk}) \\ - \phi_2(r_{ij}) & = & A_{ij} \epsilon_{ij} \left[ B_{ij} (\frac{\sigma_{ij}}{r_{ij}})^{p_{ij}} - - (\frac{\sigma_{ij}}{r_{ij}})^{q_{ij}} \right] - \exp \left( \frac{\sigma_{ij}}{r_{ij} - a_{ij} \sigma_{ij}} \right) \\ - \phi_3(r_{ij},r_{ik},\theta_{ijk}) & = & \lambda_{ijk} \epsilon_{ijk} \left[ \cos \theta_{ijk} - - \cos \theta_{0ijk} \right]^2 - \exp \left( \frac{\gamma_{ij} \sigma_{ij}}{r_{ij} - a_{ij} \sigma_{ij}} \right) - \exp \left( \frac{\gamma_{ik} \sigma_{ik}}{r_{ik} - a_{ik} \sigma_{ik}} \right) -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_tersoff.jpg b/doc/src/Eqs/pair_tersoff.jpg deleted file mode 100644 index bd3e147192707ee8845611fb31abb71410e67006..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36139 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≧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 R + D - \end{array} \right. \\ - f_R(r) & = & A \exp (-\lambda_1 r) \\ - f_A(r) & = & -B \exp (-\lambda_2 r) \\ - b_{ij} & = & \left( 1 + \beta^n {\zeta_{ij}}^n \right)^{-\frac{1}{2n}} \\ - \zeta_{ij} & = & \sum_{k \neq i,j} f_C(r_{ik}) g(\theta_{ijk}) - \exp \left[ {\lambda_3}^m (r_{ij} - r_{ik})^m \right] \\ - g(\theta) & = & \gamma_{ijk} \left( 1 + \frac{c^2}{d^2} - - \frac{c^2}{\left[ d^2 + - (\cos \theta - \cos \theta_0)^2\right]} \right) -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_tersoff_2.jpg b/doc/src/Eqs/pair_tersoff_2.jpg deleted file mode 100644 index 6cb8778a094253cc38776e110baef3e89948b75b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13756 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 diff --git a/doc/src/Eqs/pair_tersoff_2.tex b/doc/src/Eqs/pair_tersoff_2.tex deleted file mode 100644 index 7b5beb8ef3..0000000000 --- a/doc/src/Eqs/pair_tersoff_2.tex +++ /dev/null @@ -1,14 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} -\lambda_1^{i,j} &=& \frac{1}{2}(\lambda_1^i + \lambda_1^j)\\ -\lambda_2^{i,j} &=& \frac{1}{2}(\lambda_2^i + \lambda_2^j)\\ -A_{i,j} &=& (A_{i}A_{j})^{1/2}\\ -B_{i,j} &=& \chi_{ij}(B_{i}B_{j})^{1/2}\\ -R_{i,j} &=& (R_{i}R_{j})^{1/2}\\ -S_{i,j} &=& (S_{i}S_{j})^{1/2}\\ -\end{eqnarray*} - -\end{document} \ No newline at end of file diff --git a/doc/src/Eqs/pair_tersoff_mod.jpg b/doc/src/Eqs/pair_tersoff_mod.jpg deleted file mode 100644 index 2618943d85d79e82873253fea293fb98c4d5ac21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91727 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