From 55d46c997772131fd7bd38c3a563ee976b50858c Mon Sep 17 00:00:00 2001 From: Luca Fedeli Date: Tue, 17 Sep 2024 11:53:21 +0200 Subject: [PATCH 1/3] increase coverage of clang sanitizer tests --- .github/workflows/clang_sanitizers.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/clang_sanitizers.yml b/.github/workflows/clang_sanitizers.yml index 119a893eb72..ce538d371d2 100644 --- a/.github/workflows/clang_sanitizers.yml +++ b/.github/workflows/clang_sanitizers.yml @@ -63,16 +63,25 @@ jobs: export OMPI_ALLOW_RUN_AS_ROOT=1 export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 - export OMP_NUM_THREADS=2 - #MPI implementations often leak memory export "ASAN_OPTIONS=detect_leaks=0" + export OMP_NUM_THREADS=2 mpirun -n 2 ./build/bin/warpx.rz Examples/Physics_applications/laser_acceleration/inputs_base_rz mpirun -n 2 ./build/bin/warpx.1d Examples/Physics_applications/laser_acceleration/inputs_test_1d_laser_acceleration mpirun -n 2 ./build/bin/warpx.2d Examples/Physics_applications/laser_acceleration/inputs_base_2d mpirun -n 2 ./build/bin/warpx.3d Examples/Physics_applications/laser_acceleration/inputs_base_3d + export OMP_NUM_THREADS=1 + mpirun -n 1 ./build/bin/warpx.rz Examples/Tests/collision/inputs_test_3d_collision + mpirun -n 1 ./build/bin/warpx.1d Examples/Tests/collision/inputs_test_3d_collision_z + mpirun -n 1 ./build/bin/warpx.2d Examples/Tests/collision/inputs_test_3d_collision_xz + mpirun -n 1 ./build/bin/warpx.3d Examples/Tests/collision/inputs_test_3d_collision_xyz + + export OMP_NUM_THREADS=2 + mpirun -n 2 ./build/bin/warpx.2d Examples/Tests/qed/inputs_base_2d_breit_wheeler + mpirun -n 2 ./build/bin/warpx.3d Examples/Tests/qed/inputs_base_3d_breit_wheeler + build_thread_sanitizer: name: Clang thread sanitizer runs-on: ubuntu-22.04 @@ -154,6 +163,9 @@ jobs: mpirun -n 2 ./build/bin/warpx.2d Examples/Physics_applications/laser_acceleration/inputs_base_2d warpx.serialize_initial_conditions = 0 mpirun -n 2 ./build/bin/warpx.3d Examples/Physics_applications/laser_acceleration/inputs_base_3d warpx.serialize_initial_conditions = 0 + mpirun -n 2 ./build/bin/warpx.2d Examples/Tests/qed/inputs_base_2d_breit_wheeler + mpirun -n 2 ./build/bin/warpx.3d Examples/Tests/qed/inputs_base_3d_breit_wheeler + git clone https://github.com/ECP-WarpX/warpx-data ../warpx-data cd Examples/Tests/embedded_circle From d6a90c98cecab45a7b2e7601a7a775723ab5188a Mon Sep 17 00:00:00 2001 From: Luca Fedeli Date: Tue, 17 Sep 2024 14:18:03 +0200 Subject: [PATCH 2/3] fix bug --- .github/workflows/clang_sanitizers.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/clang_sanitizers.yml b/.github/workflows/clang_sanitizers.yml index ce538d371d2..176f98b3e52 100644 --- a/.github/workflows/clang_sanitizers.yml +++ b/.github/workflows/clang_sanitizers.yml @@ -73,9 +73,9 @@ jobs: mpirun -n 2 ./build/bin/warpx.3d Examples/Physics_applications/laser_acceleration/inputs_base_3d export OMP_NUM_THREADS=1 - mpirun -n 1 ./build/bin/warpx.rz Examples/Tests/collision/inputs_test_3d_collision - mpirun -n 1 ./build/bin/warpx.1d Examples/Tests/collision/inputs_test_3d_collision_z - mpirun -n 1 ./build/bin/warpx.2d Examples/Tests/collision/inputs_test_3d_collision_xz + mpirun -n 1 ./build/bin/warpx.rz Examples/Tests/collision/inputs_test_rz_collision + mpirun -n 1 ./build/bin/warpx.1d Examples/Tests/collision/inputs_test_1d_collision_z + mpirun -n 1 ./build/bin/warpx.2d Examples/Tests/collision/inputs_test_2d_collision_xz mpirun -n 1 ./build/bin/warpx.3d Examples/Tests/collision/inputs_test_3d_collision_xyz export OMP_NUM_THREADS=2 From 0784a46020330b9b30e6a34d69ee76f420ee1e1e Mon Sep 17 00:00:00 2001 From: Luca Fedeli Date: Wed, 2 Oct 2024 11:40:17 +0200 Subject: [PATCH 3/3] try solving data race --- Source/Particles/MultiParticleContainer.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/Source/Particles/MultiParticleContainer.cpp b/Source/Particles/MultiParticleContainer.cpp index 619b54ed7ad..fca55c58d4e 100644 --- a/Source/Particles/MultiParticleContainer.cpp +++ b/Source/Particles/MultiParticleContainer.cpp @@ -895,12 +895,10 @@ MultiParticleContainer::doFieldIonization (int lev, pc_source ->defineAllParticleTiles(); pc_product->defineAllParticleTiles(); - auto info = getMFItInfo(*pc_source, *pc_product); - #ifdef AMREX_USE_OMP #pragma omp parallel if (Gpu::notInLaunchRegion()) #endif - for (WarpXParIter pti(*pc_source, lev, info); pti.isValid(); ++pti) + for (WarpXParIter pti(*pc_source, lev); pti.isValid(); ++pti) { if (cost && WarpX::load_balance_costs_update_algo == LoadBalanceCostsUpdateAlgo::Timers) { @@ -1530,12 +1528,10 @@ void MultiParticleContainer::doQedBreitWheeler (int lev, pc_product_pos->defineAllParticleTiles(); pc_product_ele->defineAllParticleTiles(); - auto info = getMFItInfo(*pc_source, *pc_product_ele, *pc_product_pos); - #ifdef AMREX_USE_OMP #pragma omp parallel if (Gpu::notInLaunchRegion()) #endif - for (WarpXParIter pti(*pc_source, lev, info); pti.isValid(); ++pti) + for (WarpXParIter pti(*pc_source, lev); pti.isValid(); ++pti) { if (cost && WarpX::load_balance_costs_update_algo == LoadBalanceCostsUpdateAlgo::Timers) { @@ -1607,12 +1603,10 @@ void MultiParticleContainer::doQedQuantumSync (int lev, pc_source ->defineAllParticleTiles(); pc_product_phot->defineAllParticleTiles(); - auto info = getMFItInfo(*pc_source, *pc_product_phot); - #ifdef AMREX_USE_OMP #pragma omp parallel if (Gpu::notInLaunchRegion()) #endif - for (WarpXParIter pti(*pc_source, lev, info); pti.isValid(); ++pti) + for (WarpXParIter pti(*pc_source, lev); pti.isValid(); ++pti) { if (cost && WarpX::load_balance_costs_update_algo == LoadBalanceCostsUpdateAlgo::Timers) {