diff --git a/.github/workflows/suppr.txt b/.github/workflows/suppr.txt index 17e8c743a0..2a43b31eb3 100644 --- a/.github/workflows/suppr.txt +++ b/.github/workflows/suppr.txt @@ -1 +1,5 @@ leak:libpaddle_inference +# TensorFlow 2.20 +leak:xla:: +leak:mlir:: +leak:llvm:: diff --git a/.github/workflows/test_cc.yml b/.github/workflows/test_cc.yml index 6d75507614..32155cc309 100644 --- a/.github/workflows/test_cc.yml +++ b/.github/workflows/test_cc.yml @@ -17,7 +17,23 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - check_memleak: [true, false] + include: + - check_memleak: true + enable_tensorflow: true + enable_pytorch: true + enable_paddle: false + - check_memleak: true + enable_tensorflow: false + enable_pytorch: false + enable_paddle: true + - check_memleak: false + enable_tensorflow: true + enable_pytorch: true + enable_paddle: false + - check_memleak: false + enable_tensorflow: false + enable_pytorch: false + enable_paddle: true steps: - uses: actions/checkout@v6 - uses: actions/setup-python@v6 @@ -46,11 +62,16 @@ jobs: CMAKE_GENERATOR: Ninja CXXFLAGS: ${{ matrix.check_memleak && '-fsanitize=leak' || '' }} LSAN_OPTIONS: suppressions=${{ github.workspace }}/.github/workflows/suppr.txt + ENABLE_TENSORFLOW: ${{ matrix.enable_tensorflow && 'TRUE' || 'FALSE' }} + ENABLE_PYTORCH: ${{ matrix.enable_pytorch && 'TRUE' || 'FALSE' }} + ENABLE_PADDLE: ${{ matrix.enable_paddle && 'TRUE' || 'FALSE' }} # test lammps - run: | cp ${{ github.workspace }}/source/build_tests/paddle_inference_install_dir/paddle/lib/*.so ${{ github.workspace }}/dp_test/lib/ cp ${{ github.workspace }}/source/build_tests/paddle_inference_install_dir/third_party/install/onednn/lib/* ${{ github.workspace }}/dp_test/lib/ cp ${{ github.workspace }}/source/build_tests/paddle_inference_install_dir/third_party/install/mklml/lib/* ${{ github.workspace }}/dp_test/lib/ + if: matrix.enable_paddle + - run: | export LD_LIBRARY_PATH=${{ github.workspace }}/dp_test/lib:$LD_LIBRARY_PATH pytest --cov=deepmd source/lmp/tests env: @@ -58,19 +79,24 @@ jobs: TF_INTRA_OP_PARALLELISM_THREADS: 1 TF_INTER_OP_PARALLELISM_THREADS: 1 LAMMPS_PLUGIN_PATH: ${{ github.workspace }}/dp_test/lib/deepmd_lmp + ENABLE_TENSORFLOW: ${{ matrix.enable_tensorflow && '1' || '0' }} + ENABLE_PYTORCH: ${{ matrix.enable_pytorch && '1' || '0' }} + ENABLE_JAX: ${{ matrix.enable_tensorflow && '1' || '0' }} + ENABLE_PADDLE: ${{ matrix.enable_paddle && '1' || '0' }} if: ${{ !matrix.check_memleak }} # test ipi - run: | export PATH=${{ github.workspace }}/dp_test/bin:$PATH - cp ${{ github.workspace }}/source/build_tests/paddle_inference_install_dir/paddle/lib/*.so ${{ github.workspace }}/dp_test/lib/ - cp ${{ github.workspace }}/source/build_tests/paddle_inference_install_dir/third_party/install/onednn/lib/* ${{ github.workspace }}/dp_test/lib/ - cp ${{ github.workspace }}/source/build_tests/paddle_inference_install_dir/third_party/install/mklml/lib/* ${{ github.workspace }}/dp_test/lib/ pytest --cov=deepmd source/ipi/tests env: OMP_NUM_THREADS: 1 TF_INTRA_OP_PARALLELISM_THREADS: 1 TF_INTER_OP_PARALLELISM_THREADS: 1 LD_LIBRARY_PATH: ${{ github.workspace }}/dp_test/lib + ENABLE_TENSORFLOW: ${{ matrix.enable_tensorflow && '1' || '0' }} + ENABLE_PYTORCH: ${{ matrix.enable_pytorch && '1' || '0' }} + ENABLE_JAX: ${{ matrix.enable_tensorflow && '1' || '0' }} + ENABLE_PADDLE: ${{ matrix.enable_paddle && '1' || '0' }} if: ${{ !matrix.check_memleak }} - uses: codecov/codecov-action@v5 env: diff --git a/.github/workflows/test_python.yml b/.github/workflows/test_python.yml index 4e8137ebaa..541da88556 100644 --- a/.github/workflows/test_python.yml +++ b/.github/workflows/test_python.yml @@ -60,6 +60,7 @@ jobs: - run: pytest --cov=deepmd source/tests --splits 6 --group ${{ matrix.group }} --store-durations --clean-durations --durations-path=.test_durations --splitting-algorithm least_duration env: NUM_WORKERS: 0 + DP_CI_IMPORT_PADDLE_BEFORE_TF: 1 FLAGS_use_stride_compute_kernel: 0 - name: Test TF2 eager mode run: pytest --cov=deepmd --cov-append source/tests/consistent/io/test_io.py source/jax2tf_tests diff --git a/pyproject.toml b/pyproject.toml index 073b32943b..4e55fdd96a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -162,7 +162,7 @@ dev = [ pin_tensorflow_cpu = [ # https://github.com/tensorflow/tensorflow/issues/75279 # macos x86 has been deprecated - "tensorflow-cpu~=2.18.0; platform_machine=='x86_64' and platform_system == 'Linux'", + "tensorflow-cpu>=2.18,<2.21; platform_machine=='x86_64' and platform_system == 'Linux'", "tensorflow~=2.18.0; (platform_machine!='x86_64' or platform_system != 'Linux') and (platform_machine!='x86_64' or platform_system != 'Darwin')", "tensorflow; platform_machine=='x86_64' and platform_system == 'Darwin'", ] diff --git a/source/api_c/tests/CMakeLists.txt b/source/api_c/tests/CMakeLists.txt index 16698ddf09..ef19305004 100644 --- a/source/api_c/tests/CMakeLists.txt +++ b/source/api_c/tests/CMakeLists.txt @@ -11,6 +11,19 @@ target_link_libraries(runUnitTests_c PRIVATE GTest::gtest_main ${LIB_DEEPMD_C} coverage_config) target_link_libraries(runUnitTests_c PRIVATE ${LIB_DEEPMD} ${LIB_DEEPMD_CC}) +if(ENABLE_TENSORFLOW) + target_compile_definitions(runUnitTests_c PRIVATE BUILD_TENSORFLOW) +endif() +if(ENABLE_PYTORCH) + target_compile_definitions(runUnitTests_c PRIVATE BUILD_PYTORCH) +endif() +if(ENABLE_JAX) + target_compile_definitions(runUnitTests_c PRIVATE BUILD_JAX) +endif() +if(ENABLE_PADDLE) + target_compile_definitions(runUnitTests_c PRIVATE BUILD_PADDLE) +endif() + if(UNIX AND NOT APPLE) find_library(RT_LIBRARY rt) if(RT_LIBRARY) diff --git a/source/api_c/tests/test_deepdipole_hpp.cc b/source/api_c/tests/test_deepdipole_hpp.cc index f781c34c5b..c4a2b75d09 100644 --- a/source/api_c/tests/test_deepdipole_hpp.cc +++ b/source/api_c/tests/test_deepdipole_hpp.cc @@ -26,6 +26,9 @@ class TestInferDeepDipole : public ::testing::Test { deepmd::hpp::DeepTensor dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif deepmd::hpp::convert_pbtxt_to_pb("../../tests/infer/deepdipole.pbtxt", "deepdipole.pb"); @@ -221,6 +224,9 @@ class TestInferDeepDipoleNew : public ::testing::Test { deepmd::hpp::DeepTensor dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deepdipole_new.pbtxt"; deepmd::hpp::convert_pbtxt_to_pb("../../tests/infer/deepdipole_new.pbtxt", "deepdipole_new.pb"); @@ -434,6 +440,9 @@ class TestInferDeepDipoleFake : public ::testing::Test { deepmd::hpp::DeepTensor dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif deepmd::hpp::convert_pbtxt_to_pb("../../tests/infer/deepdipole_fake.pbtxt", "deepdipole_fake.pb"); diff --git a/source/api_c/tests/test_deeppolar_hpp.cc b/source/api_c/tests/test_deeppolar_hpp.cc index 63ebf5d760..5e68b23bb4 100644 --- a/source/api_c/tests/test_deeppolar_hpp.cc +++ b/source/api_c/tests/test_deeppolar_hpp.cc @@ -32,6 +32,9 @@ class TestInferDeepPolar : public ::testing::Test { deepmd::hpp::DeepTensor dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppolar.pbtxt"; deepmd::hpp::convert_pbtxt_to_pb("../../tests/infer/deeppolar.pbtxt", "deeppolar.pb"); @@ -453,6 +456,9 @@ class TestInferDeepPolarNew : public ::testing::Test { deepmd::hpp::DeepTensor dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppolar_new.pbtxt"; deepmd::hpp::convert_pbtxt_to_pb("../../tests/infer/deeppolar_new.pbtxt", "deeppolar_new.pb"); diff --git a/source/api_c/tests/test_deeppot_a.cc b/source/api_c/tests/test_deeppot_a.cc index b4a9a81f92..d5e2d42bf8 100644 --- a/source/api_c/tests/test_deeppot_a.cc +++ b/source/api_c/tests/test_deeppot_a.cc @@ -61,9 +61,12 @@ class TestInferDeepPotA : public ::testing::Test { double expected_tot_e; std::vector expected_tot_v; - DP_DeepPot* dp; + DP_DeepPot* dp = nullptr; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif const char* file_name = "../../tests/infer/deeppot.pbtxt"; const char* model_file = "deeppot.pb"; DP_ConvertPbtxtToPb(file_name, model_file); @@ -242,9 +245,12 @@ class TestInferDeepPotANoPBC : public ::testing::Test { double expected_tot_e; std::vector expected_tot_v; - DP_DeepPot* dp; + DP_DeepPot* dp = nullptr; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif const char* file_name = "../../tests/infer/deeppot.pbtxt"; const char* model_file = "deeppot.pb"; DP_ConvertPbtxtToPb(file_name, model_file); diff --git a/source/api_c/tests/test_deeppot_a_fparam_aparam.cc b/source/api_c/tests/test_deeppot_a_fparam_aparam.cc index a728ede22d..635b47fe51 100644 --- a/source/api_c/tests/test_deeppot_a_fparam_aparam.cc +++ b/source/api_c/tests/test_deeppot_a_fparam_aparam.cc @@ -72,6 +72,9 @@ class TestInferDeepPotAFParamAParam : public ::testing::Test { deepmd::hpp::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/fparam_aparam.pbtxt"; deepmd::hpp::convert_pbtxt_to_pb(file_name, "fparam_aparam.pb"); @@ -394,6 +397,9 @@ class TestInferAParamNAll : public ::testing::Test { deepmd::hpp::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/pairwise_dprc.pbtxt"; deepmd::hpp::convert_pbtxt_to_pb(file_name, "pairwise_dprc.pb"); dp.init("pairwise_dprc.pb"); diff --git a/source/api_c/tests/test_deeppot_a_fparam_aparam_nframes.cc b/source/api_c/tests/test_deeppot_a_fparam_aparam_nframes.cc index 383c8f5fb1..2279ad2f66 100644 --- a/source/api_c/tests/test_deeppot_a_fparam_aparam_nframes.cc +++ b/source/api_c/tests/test_deeppot_a_fparam_aparam_nframes.cc @@ -116,6 +116,9 @@ class TestInferDeepPotAFparamAparamNFrames : public ::testing::Test { deepmd::hpp::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/fparam_aparam.pbtxt"; deepmd::hpp::convert_pbtxt_to_pb("../../tests/infer/fparam_aparam.pbtxt", "fparam_aparam.pb"); @@ -757,6 +760,9 @@ class TestInferDeepPotAFparamAparamNFramesSingleParam : public ::testing::Test { deepmd::hpp::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/fparam_aparam.pbtxt"; deepmd::hpp::convert_pbtxt_to_pb("../../tests/infer/fparam_aparam.pbtxt", "fparam_aparam.pb"); diff --git a/source/api_c/tests/test_deeppot_a_hpp.cc b/source/api_c/tests/test_deeppot_a_hpp.cc index 388b53fdfd..3adb47bdf9 100644 --- a/source/api_c/tests/test_deeppot_a_hpp.cc +++ b/source/api_c/tests/test_deeppot_a_hpp.cc @@ -66,6 +66,9 @@ class TestInferDeepPotAHPP : public ::testing::Test { deepmd::hpp::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppot.pbtxt"; deepmd::hpp::convert_pbtxt_to_pb("../../tests/infer/deeppot.pbtxt", "deeppot.pb"); @@ -557,6 +560,9 @@ class TestInferDeepPotANoPbcHPP : public ::testing::Test { deepmd::hpp::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppot.pbtxt"; deepmd::hpp::convert_pbtxt_to_pb(file_name, "deeppot.pb"); diff --git a/source/api_c/tests/test_deeppot_a_nframes_hpp.cc b/source/api_c/tests/test_deeppot_a_nframes_hpp.cc index af132c0146..bee0546bfc 100644 --- a/source/api_c/tests/test_deeppot_a_nframes_hpp.cc +++ b/source/api_c/tests/test_deeppot_a_nframes_hpp.cc @@ -109,6 +109,9 @@ class TestInferDeepPotANFrames : public ::testing::Test { deepmd::hpp::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppot.pbtxt"; deepmd::hpp::convert_pbtxt_to_pb("../../tests/infer/deeppot.pbtxt", "deeppot.pb"); @@ -719,6 +722,9 @@ class TestInferDeepPotANFramesNoPbc : public ::testing::Test { deepmd::hpp::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppot.pbtxt"; deepmd::hpp::convert_pbtxt_to_pb(file_name, "deeppot.pb"); diff --git a/source/api_c/tests/test_deeppot_model_devi_fparam_aparam.cc b/source/api_c/tests/test_deeppot_model_devi_fparam_aparam.cc index 5e77529021..550259b42d 100644 --- a/source/api_c/tests/test_deeppot_model_devi_fparam_aparam.cc +++ b/source/api_c/tests/test_deeppot_model_devi_fparam_aparam.cc @@ -30,6 +30,9 @@ class TestInferDeepPotModeDeviFparamAparam : public ::testing::Test { deepmd::hpp::DeepPotModelDevi dp_md; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif { std::string file_name = "../../tests/infer/fparam_aparam.pbtxt"; deepmd::hpp::convert_pbtxt_to_pb("../../tests/infer/fparam_aparam.pbtxt", diff --git a/source/api_c/tests/test_deeppot_model_devi_hpp.cc b/source/api_c/tests/test_deeppot_model_devi_hpp.cc index 5751c4f69c..2a8242f99f 100644 --- a/source/api_c/tests/test_deeppot_model_devi_hpp.cc +++ b/source/api_c/tests/test_deeppot_model_devi_hpp.cc @@ -24,6 +24,9 @@ class TestInferDeepPotModeDevi : public ::testing::Test { deepmd::hpp::DeepPotModelDevi dp_md; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif { std::string file_name = "../../tests/infer/deeppot.pbtxt"; deepmd::hpp::convert_pbtxt_to_pb("../../tests/infer/deeppot.pbtxt", @@ -74,6 +77,9 @@ class TestInferDeepPotModeDeviPython : public ::testing::Test { deepmd::hpp::DeepPotModelDevi dp_md; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif { std::string file_name = "../../tests/infer/deeppot.pbtxt"; deepmd::hpp::convert_pbtxt_to_pb("../../tests/infer/deeppot.pbtxt", diff --git a/source/api_c/tests/test_deepspin_a.cc b/source/api_c/tests/test_deepspin_a.cc index ccffd7221f..8e3236b776 100644 --- a/source/api_c/tests/test_deepspin_a.cc +++ b/source/api_c/tests/test_deepspin_a.cc @@ -53,9 +53,12 @@ class TestInferDeepSpinA : public ::testing::Test { double expected_tot_e; // std::vector expected_tot_v; - DP_DeepSpin* dp; + DP_DeepSpin* dp = nullptr; void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif dp = DP_NewDeepSpin("../../tests/infer/deeppot_dpa_spin.pth"); natoms = expected_e.size(); @@ -233,9 +236,12 @@ class TestInferDeepSpinANoPBC : public ::testing::Test { double expected_tot_e; // std::vector expected_tot_v; - DP_DeepSpin* dp; + DP_DeepSpin* dp = nullptr; void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif dp = DP_NewDeepSpin("../../tests/infer/deeppot_dpa_spin.pth"); natoms = expected_e.size(); diff --git a/source/api_c/tests/test_deepspin_a_hpp.cc b/source/api_c/tests/test_deepspin_a_hpp.cc index 701d517690..c65a89a45f 100644 --- a/source/api_c/tests/test_deepspin_a_hpp.cc +++ b/source/api_c/tests/test_deepspin_a_hpp.cc @@ -56,6 +56,9 @@ class TestInferDeepSpinAHPP : public ::testing::Test { deepmd::hpp::DeepSpin dp; void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif dp.init("../../tests/infer/deeppot_dpa_spin.pth"); natoms = expected_e.size(); @@ -208,6 +211,9 @@ class TestInferDeepSpinANoPbcHPP : public ::testing::Test { deepmd::hpp::DeepSpin dp; void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif dp.init("../../tests/infer/deeppot_dpa_spin.pth"); natoms = expected_e.size(); diff --git a/source/api_c/tests/test_deepspin_model_devi_hpp.cc b/source/api_c/tests/test_deepspin_model_devi_hpp.cc index c6bbdef8a8..19acccc6f7 100644 --- a/source/api_c/tests/test_deepspin_model_devi_hpp.cc +++ b/source/api_c/tests/test_deepspin_model_devi_hpp.cc @@ -26,6 +26,9 @@ class TestInferDeepSpinModeDevi : public ::testing::Test { deepmd::hpp::DeepSpinModelDevi dp_md; void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif { dp0.init("../../tests/infer/deeppot_dpa_spin.pth"); } diff --git a/source/api_c/tests/test_dipolecharge.cc b/source/api_c/tests/test_dipolecharge.cc index 03e9e44b34..647fa5c3a5 100644 --- a/source/api_c/tests/test_dipolecharge.cc +++ b/source/api_c/tests/test_dipolecharge.cc @@ -54,6 +54,9 @@ class TestDipoleCharge : public ::testing::Test { deepmd::hpp::DipoleChargeModifier dm; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/dipolecharge_e.pbtxt"; std::string model = "dipolecharge_e.pb"; deepmd::hpp::convert_pbtxt_to_pb(file_name, model); diff --git a/source/api_c/tests/test_mixed_type.cc b/source/api_c/tests/test_mixed_type.cc index 13f9edbad9..84280f4131 100644 --- a/source/api_c/tests/test_mixed_type.cc +++ b/source/api_c/tests/test_mixed_type.cc @@ -29,6 +29,9 @@ class TestInferMixedType : public ::testing::Test { deepmd::hpp::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/virtual_type.pbtxt"; deepmd::hpp::convert_pbtxt_to_pb("../../tests/infer/virtual_type.pbtxt", "virtual_type.pb"); diff --git a/source/api_c/tests/test_read_file_to_string.cc b/source/api_c/tests/test_read_file_to_string.cc index cd26e95928..bef2a28da0 100644 --- a/source/api_c/tests/test_read_file_to_string.cc +++ b/source/api_c/tests/test_read_file_to_string.cc @@ -13,6 +13,9 @@ #include "deepmd.hpp" TEST(TestReadFileToString, readfiletostring) { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_content; deepmd::hpp::read_file_to_string("../../tests/infer/deeppot.txt", file_content); @@ -26,6 +29,9 @@ TEST(TestReadFileToString, readfiletostring) { } TEST(TestReadFileToString, readfiletostringerr) { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_content; EXPECT_THROW( { diff --git a/source/api_cc/tests/CMakeLists.txt b/source/api_cc/tests/CMakeLists.txt index cafeb3fd02..8ec3361d3a 100644 --- a/source/api_cc/tests/CMakeLists.txt +++ b/source/api_cc/tests/CMakeLists.txt @@ -6,6 +6,18 @@ file(GLOB TEST_SRC test_*.cc) add_executable(runUnitTests_cc ${TEST_SRC}) target_link_libraries(runUnitTests_cc GTest::gtest_main ${LIB_DEEPMD_CC} coverage_config) +if(ENABLE_TENSORFLOW) + target_compile_definitions(runUnitTests_cc PRIVATE BUILD_TENSORFLOW) +endif() +if(ENABLE_PYTORCH) + target_compile_definitions(runUnitTests_cc PRIVATE BUILD_PYTORCH) +endif() +if(ENABLE_JAX) + target_compile_definitions(runUnitTests_cc PRIVATE BUILD_JAX) +endif() +if(ENABLE_PADDLE) + target_compile_definitions(runUnitTests_cc PRIVATE BUILD_PADDLE) +endif() if(UNIX AND NOT APPLE) find_library(RT_LIBRARY rt) diff --git a/source/api_cc/tests/test_deepdipole.cc b/source/api_cc/tests/test_deepdipole.cc index 86a8a4131f..4c5ec345a6 100644 --- a/source/api_cc/tests/test_deepdipole.cc +++ b/source/api_cc/tests/test_deepdipole.cc @@ -30,6 +30,9 @@ class TestInferDeepDipole : public ::testing::Test { deepmd::DeepTensor dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif deepmd::convert_pbtxt_to_pb("../../tests/infer/deepdipole.pbtxt", "deepdipole.pb"); @@ -225,6 +228,9 @@ class TestInferDeepDipoleNew : public ::testing::Test { deepmd::DeepTensor dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deepdipole_new.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/deepdipole_new.pbtxt", "deepdipole_new.pb"); @@ -438,6 +444,9 @@ class TestInferDeepDipoleFake : public ::testing::Test { deepmd::DeepTensor dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif deepmd::convert_pbtxt_to_pb("../../tests/infer/deepdipole_fake.pbtxt", "deepdipole_fake.pb"); diff --git a/source/api_cc/tests/test_deepdipole_pt.cc b/source/api_cc/tests/test_deepdipole_pt.cc index 70e46dd9e9..473f697188 100644 --- a/source/api_cc/tests/test_deepdipole_pt.cc +++ b/source/api_cc/tests/test_deepdipole_pt.cc @@ -53,6 +53,9 @@ class TestInferDeepTensorPt : public ::testing::Test { deepmd::DeepTensor dt; void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif std::string file_name = "../../tests/infer/deepdipole_pt.pth"; dt.init(file_name); }; diff --git a/source/api_cc/tests/test_deepmd_exception.cc b/source/api_cc/tests/test_deepmd_exception.cc index c28c0f0069..d150004af1 100644 --- a/source/api_cc/tests/test_deepmd_exception.cc +++ b/source/api_cc/tests/test_deepmd_exception.cc @@ -24,25 +24,40 @@ TEST(TestDeepmdException, deepmdexception) { } TEST(TestDeepmdException, deepmdexception_nofile_deeppot) { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif ASSERT_THROW(deepmd::DeepPot("_no_such_file.pb"), deepmd::deepmd_exception); } TEST(TestDeepmdException, deepmdexception_nofile_deeppot_pt) { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif ASSERT_THROW(deepmd::DeepPot("_no_such_file.pth"), deepmd::deepmd_exception); } TEST(TestDeepmdException, deepmdexception_nofile_deeppotmodeldevi) { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif ASSERT_THROW( deepmd::DeepPotModelDevi({"_no_such_file.pb", "_no_such_file.pb"}), deepmd::deepmd_exception); } TEST(TestDeepmdException, deepmdexception_nofile_deeptensor) { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif ASSERT_THROW(deepmd::DeepTensor("_no_such_file.pb"), deepmd::deepmd_exception); } TEST(TestDeepmdException, deepmdexception_nofile_dipolechargemodifier) { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif ASSERT_THROW(deepmd::DipoleChargeModifier("_no_such_file.pb"), deepmd::deepmd_exception); } diff --git a/source/api_cc/tests/test_deeppolar.cc b/source/api_cc/tests/test_deeppolar.cc index 89014fd245..dbeb61db9f 100644 --- a/source/api_cc/tests/test_deeppolar.cc +++ b/source/api_cc/tests/test_deeppolar.cc @@ -36,6 +36,9 @@ class TestInferDeepPolar : public ::testing::Test { deepmd::DeepTensor dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppolar.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/deeppolar.pbtxt", "deeppolar.pb"); @@ -457,6 +460,9 @@ class TestInferDeepPolarNew : public ::testing::Test { deepmd::DeepTensor dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppolar_new.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/deeppolar_new.pbtxt", "deeppolar_new.pb"); diff --git a/source/api_cc/tests/test_deeppot_a.cc b/source/api_cc/tests/test_deeppot_a.cc index ae1384e8a3..ffd2a25a5d 100644 --- a/source/api_cc/tests/test_deeppot_a.cc +++ b/source/api_cc/tests/test_deeppot_a.cc @@ -70,6 +70,9 @@ class TestInferDeepPotA : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppot.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/deeppot.pbtxt", "deeppot.pb"); @@ -607,6 +610,9 @@ class TestInferDeepPotANoPbc : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppot.pbtxt"; deepmd::convert_pbtxt_to_pb(file_name, "deeppot.pb"); diff --git a/source/api_cc/tests/test_deeppot_a_fparam_aparam.cc b/source/api_cc/tests/test_deeppot_a_fparam_aparam.cc index 89e83603a3..93efee28fe 100644 --- a/source/api_cc/tests/test_deeppot_a_fparam_aparam.cc +++ b/source/api_cc/tests/test_deeppot_a_fparam_aparam.cc @@ -73,6 +73,9 @@ class TestInferDeepPotAFParamAParam : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/fparam_aparam.pbtxt"; deepmd::convert_pbtxt_to_pb(file_name, "fparam_aparam.pb"); diff --git a/source/api_cc/tests/test_deeppot_a_fparam_aparam_nframes.cc b/source/api_cc/tests/test_deeppot_a_fparam_aparam_nframes.cc index 0851523814..e33437805c 100644 --- a/source/api_cc/tests/test_deeppot_a_fparam_aparam_nframes.cc +++ b/source/api_cc/tests/test_deeppot_a_fparam_aparam_nframes.cc @@ -117,6 +117,9 @@ class TestInferDeepPotAFparamAparamNFrames : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/fparam_aparam.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/fparam_aparam.pbtxt", "fparam_aparam.pb"); @@ -758,6 +761,9 @@ class TestInferDeepPotAFparamAparamNFramesSingleParam : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/fparam_aparam.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/fparam_aparam.pbtxt", "fparam_aparam.pb"); diff --git a/source/api_cc/tests/test_deeppot_a_fparam_aparam_pt.cc b/source/api_cc/tests/test_deeppot_a_fparam_aparam_pt.cc index e394f86b2a..bc7661f671 100644 --- a/source/api_cc/tests/test_deeppot_a_fparam_aparam_pt.cc +++ b/source/api_cc/tests/test_deeppot_a_fparam_aparam_pt.cc @@ -77,6 +77,9 @@ class TestInferDeepPotAFParamAParamPt : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif dp.init("../../tests/infer/fparam_aparam.pth"); natoms = expected_e.size(); diff --git a/source/api_cc/tests/test_deeppot_a_nframes.cc b/source/api_cc/tests/test_deeppot_a_nframes.cc index c83a7a0b41..1e7c160437 100644 --- a/source/api_cc/tests/test_deeppot_a_nframes.cc +++ b/source/api_cc/tests/test_deeppot_a_nframes.cc @@ -113,6 +113,9 @@ class TestInferDeepPotANFrames : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppot.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/deeppot.pbtxt", "deeppot.pb"); @@ -723,6 +726,9 @@ class TestInferDeepPotANFramesNoPbc : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppot.pbtxt"; deepmd::convert_pbtxt_to_pb(file_name, "deeppot.pb"); diff --git a/source/api_cc/tests/test_deeppot_dpa_jax.cc b/source/api_cc/tests/test_deeppot_dpa_jax.cc index bd7f1ee7af..2e857450b7 100644 --- a/source/api_cc/tests/test_deeppot_dpa_jax.cc +++ b/source/api_cc/tests/test_deeppot_dpa_jax.cc @@ -77,6 +77,9 @@ class TestInferDeepPotDpaJAX : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_JAX + GTEST_SKIP() << "Skip because JAX support is not enabled."; +#endif dp.init("../../tests/infer/deeppot_dpa.savedmodel"); natoms = expected_e.size(); @@ -224,6 +227,9 @@ class TestInferDeepPotDpaJAXNopbc : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_JAX + GTEST_SKIP() << "Skip because JAX support is not enabled."; +#endif dp.init("../../tests/infer/deeppot_dpa.savedmodel"); natoms = expected_e.size(); diff --git a/source/api_cc/tests/test_deeppot_dpa_pt.cc b/source/api_cc/tests/test_deeppot_dpa_pt.cc index 7bf4cbf376..0de83278a9 100644 --- a/source/api_cc/tests/test_deeppot_dpa_pt.cc +++ b/source/api_cc/tests/test_deeppot_dpa_pt.cc @@ -77,6 +77,9 @@ class TestInferDeepPotDpaPt : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif dp.init("../../tests/infer/deeppot_dpa.pth"); natoms = expected_e.size(); @@ -224,6 +227,9 @@ class TestInferDeepPotDpaPtNopbc : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif dp.init("../../tests/infer/deeppot_dpa.pth"); natoms = expected_e.size(); diff --git a/source/api_cc/tests/test_deeppot_dpa_pt_spin.cc b/source/api_cc/tests/test_deeppot_dpa_pt_spin.cc index f14aa7a52e..8b569dd707 100644 --- a/source/api_cc/tests/test_deeppot_dpa_pt_spin.cc +++ b/source/api_cc/tests/test_deeppot_dpa_pt_spin.cc @@ -85,6 +85,9 @@ class TestInferDeepSpinDpaPt : public ::testing::Test { deepmd::DeepSpin dp; void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif dp.init("../../tests/infer/deeppot_dpa_spin.pth"); natoms = expected_e.size(); @@ -248,6 +251,9 @@ class TestInferDeepSpinDpaPtNopbc : public ::testing::Test { deepmd::DeepSpin dp; void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif dp.init("../../tests/infer/deeppot_dpa_spin.pth"); natoms = expected_e.size(); diff --git a/source/api_cc/tests/test_deeppot_jax.cc b/source/api_cc/tests/test_deeppot_jax.cc index 439a271015..80ddf00860 100644 --- a/source/api_cc/tests/test_deeppot_jax.cc +++ b/source/api_cc/tests/test_deeppot_jax.cc @@ -69,6 +69,9 @@ class TestInferDeepPotAJAX : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_JAX + GTEST_SKIP() << "Skip because JAX support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppot_sea.savedmodel"; dp.init(file_name); diff --git a/source/api_cc/tests/test_deeppot_model_devi.cc b/source/api_cc/tests/test_deeppot_model_devi.cc index 5ce4b11c7f..ea89847935 100644 --- a/source/api_cc/tests/test_deeppot_model_devi.cc +++ b/source/api_cc/tests/test_deeppot_model_devi.cc @@ -28,6 +28,9 @@ class TestInferDeepPotModeDevi : public ::testing::Test { deepmd::DeepPotModelDevi dp_md; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif { std::string file_name = "../../tests/infer/deeppot.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/deeppot.pbtxt", @@ -78,6 +81,9 @@ class TestInferDeepPotModeDeviPython : public ::testing::Test { deepmd::DeepPotModelDevi dp_md; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif { std::string file_name = "../../tests/infer/deeppot.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/deeppot.pbtxt", diff --git a/source/api_cc/tests/test_deeppot_model_devi_fparam_aparam.cc b/source/api_cc/tests/test_deeppot_model_devi_fparam_aparam.cc index fb1797961d..3c49a34db5 100644 --- a/source/api_cc/tests/test_deeppot_model_devi_fparam_aparam.cc +++ b/source/api_cc/tests/test_deeppot_model_devi_fparam_aparam.cc @@ -31,6 +31,9 @@ class TestInferDeepPotModeDeviFparamAparam : public ::testing::Test { deepmd::DeepPotModelDevi dp_md; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif { std::string file_name = "../../tests/infer/fparam_aparam.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/fparam_aparam.pbtxt", diff --git a/source/api_cc/tests/test_deeppot_pd.cc b/source/api_cc/tests/test_deeppot_pd.cc index f39aa84640..6da9ee643b 100644 --- a/source/api_cc/tests/test_deeppot_pd.cc +++ b/source/api_cc/tests/test_deeppot_pd.cc @@ -61,6 +61,9 @@ class TestInferDeepPotAPd : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_PADDLE + GTEST_SKIP() << "Skip because Paddle support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppot_sea.json"; dp.init(file_name); @@ -578,6 +581,9 @@ class TestInferDeepPotAPdNoPbc : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_PADDLE + GTEST_SKIP() << "Skip because Paddle support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppot_sea.json"; dp.init(file_name); diff --git a/source/api_cc/tests/test_deeppot_pt.cc b/source/api_cc/tests/test_deeppot_pt.cc index af5b533a5f..144ee8da8c 100644 --- a/source/api_cc/tests/test_deeppot_pt.cc +++ b/source/api_cc/tests/test_deeppot_pt.cc @@ -54,6 +54,9 @@ class TestInferDeepPotAPt : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppot_sea.pth"; dp.init(file_name); @@ -570,6 +573,9 @@ class TestInferDeepPotAPtNoPbc : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppot_sea.pth"; dp.init(file_name); diff --git a/source/api_cc/tests/test_deeppot_r.cc b/source/api_cc/tests/test_deeppot_r.cc index 86fa4b091f..99c5eca6e5 100644 --- a/source/api_cc/tests/test_deeppot_r.cc +++ b/source/api_cc/tests/test_deeppot_r.cc @@ -70,6 +70,9 @@ class TestInferDeepPotR : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppot-r.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/deeppot-r.pbtxt", "deeppot.pb"); @@ -539,6 +542,9 @@ class TestInferDeepPotRNoPbc : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deeppot-r.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/deeppot-r.pbtxt", "deeppot.pb"); diff --git a/source/api_cc/tests/test_deeppot_tf_spin.cc b/source/api_cc/tests/test_deeppot_tf_spin.cc index d03a9b0b57..c7623d8faf 100644 --- a/source/api_cc/tests/test_deeppot_tf_spin.cc +++ b/source/api_cc/tests/test_deeppot_tf_spin.cc @@ -41,6 +41,9 @@ class TestInferDeepSpin : public ::testing::Test { deepmd::DeepSpin dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deepspin_nlist.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/deepspin_nlist.pbtxt", "deepspin_nlist.pb"); @@ -168,6 +171,9 @@ class TestInferDeepSpinNopbc : public ::testing::Test { deepmd::DeepSpin dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/deepspin_nlist.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/deepspin_nlist.pbtxt", "deepspin_nlist.pb"); diff --git a/source/api_cc/tests/test_deepspin_model_devi.cc b/source/api_cc/tests/test_deepspin_model_devi.cc index fcc4a4315d..56104a4f99 100644 --- a/source/api_cc/tests/test_deepspin_model_devi.cc +++ b/source/api_cc/tests/test_deepspin_model_devi.cc @@ -30,6 +30,9 @@ class TestInferDeepSpinModeDevi : public ::testing::Test { deepmd::DeepSpinModelDevi dp_md; void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif { dp0.init("../../tests/infer/deeppot_dpa_spin.pth"); } diff --git a/source/api_cc/tests/test_dipolecharge.cc b/source/api_cc/tests/test_dipolecharge.cc index 1d92215c5c..1a33d5ed1c 100644 --- a/source/api_cc/tests/test_dipolecharge.cc +++ b/source/api_cc/tests/test_dipolecharge.cc @@ -59,6 +59,9 @@ class TestDipoleCharge : public ::testing::Test { deepmd::DipoleChargeModifier dm; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/dipolecharge_e.pbtxt"; std::string model = "dipolecharge_e.pb"; deepmd::convert_pbtxt_to_pb(file_name, model); diff --git a/source/api_cc/tests/test_mixed_type.cc b/source/api_cc/tests/test_mixed_type.cc index b11bd5123a..0a577e21f2 100644 --- a/source/api_cc/tests/test_mixed_type.cc +++ b/source/api_cc/tests/test_mixed_type.cc @@ -30,6 +30,9 @@ class TestInferMixedType : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/virtual_type.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/virtual_type.pbtxt", "virtual_type.pb"); @@ -137,6 +140,9 @@ class TestInferVirtualType : public ::testing::Test { deepmd::DeepPot dp; void SetUp() override { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_name = "../../tests/infer/virtual_type.pbtxt"; deepmd::convert_pbtxt_to_pb("../../tests/infer/virtual_type.pbtxt", "virtual_type.pb"); diff --git a/source/api_cc/tests/test_read_file_to_string.cc b/source/api_cc/tests/test_read_file_to_string.cc index aaa7e6a83f..dd3249d771 100644 --- a/source/api_cc/tests/test_read_file_to_string.cc +++ b/source/api_cc/tests/test_read_file_to_string.cc @@ -13,6 +13,9 @@ #include "common.h" TEST(TestReadFileToString, readfiletostring) { +#ifndef BUILD_TENSORFLOW + GTEST_SKIP() << "Skip because TensorFlow support is not enabled."; +#endif std::string file_content; deepmd::read_file_to_string("../../tests/infer/deeppot.txt", file_content); diff --git a/source/install/test_cc_local.sh b/source/install/test_cc_local.sh index aad04a07b3..86088bc0b3 100755 --- a/source/install/test_cc_local.sh +++ b/source/install/test_cc_local.sh @@ -1,3 +1,4 @@ +#!/bin/bash set -ex if [ "$DP_VARIANT" = "cuda" ]; then @@ -20,18 +21,20 @@ PADDLE_INFERENCE_DIR=${BUILD_TMP_DIR}/paddle_inference_install_dir mkdir -p ${BUILD_TMP_DIR} cd ${BUILD_TMP_DIR} cmake \ - -D ENABLE_TENSORFLOW=TRUE \ - -D ENABLE_PYTORCH=TRUE \ - -D ENABLE_PADDLE=TRUE \ + -D ENABLE_TENSORFLOW=${ENABLE_TENSORFLOW:-TRUE} \ + -D ENABLE_PYTORCH=${ENABLE_PYTORCH:-TRUE} \ + -D ENABLE_PADDLE=${ENABLE_PADDLE:-TRUE} \ -D INSTALL_TENSORFLOW=FALSE \ - -D USE_TF_PYTHON_LIBS=TRUE \ - -D USE_PT_PYTHON_LIBS=TRUE \ + -D USE_TF_PYTHON_LIBS=${ENABLE_TENSORFLOW:-TRUE} \ + -D USE_PT_PYTHON_LIBS=${ENABLE_PYTORCH:-TRUE} \ -D CMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \ -D BUILD_TESTING:BOOL=TRUE \ -D LAMMPS_VERSION=stable_22Jul2025_update2 \ ${CUDA_ARGS} .. cmake --build . -j${NPROC} cmake --install . -PADDLE_INFERENCE_DIR=${BUILD_TMP_DIR}/paddle_inference_install_dir -export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${PADDLE_INFERENCE_DIR}/third_party/install/onednn/lib:${PADDLE_INFERENCE_DIR}/third_party/install/mklml/lib +if [ "${ENABLE_PADDLE:-TRUE}" == "TRUE" ]; then + PADDLE_INFERENCE_DIR=${BUILD_TMP_DIR}/paddle_inference_install_dir + export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${PADDLE_INFERENCE_DIR}/third_party/install/onednn/lib:${PADDLE_INFERENCE_DIR}/third_party/install/mklml/lib +fi ctest --output-on-failure diff --git a/source/ipi/tests/test_driver.py b/source/ipi/tests/test_driver.py index 54c632a2b6..9a30c2c8ce 100644 --- a/source/ipi/tests/test_driver.py +++ b/source/ipi/tests/test_driver.py @@ -53,6 +53,10 @@ def write_input(self, atoms, **kwargs) -> None: atoms.write(self.xyz_file, format="xyz") +@unittest.skipIf( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) class TestDPIPI(unittest.TestCase): # copy from test_deeppot_a.py @classmethod @@ -253,6 +257,10 @@ def test_normalize_coords(self) -> None: np.testing.assert_almost_equal(ee.ravel(), expected_se.ravel(), default_places) +@unittest.skipIf( + os.environ.get("ENABLE_PYTORCH", "1") != "1", + reason="Skip test because PyTorch support is not enabled.", +) class TestDPIPIPt(TestDPIPI): @classmethod def setUpClass(cls) -> None: diff --git a/source/lmp/tests/test_deeptensor.py b/source/lmp/tests/test_deeptensor.py index 41d1c10ed6..20be3033b8 100644 --- a/source/lmp/tests/test_deeptensor.py +++ b/source/lmp/tests/test_deeptensor.py @@ -66,6 +66,10 @@ def setup_module() -> None: + if os.environ.get("ENABLE_TENSORFLOW", "1") != "1": + pytest.skip( + "Skip test because TensorFlow support is not enabled.", + ) write_lmp_data(box, coord, type_OH, data_file) # TODO # write_lmp_data(box, coord, type_HO, data_type_map_file) diff --git a/source/lmp/tests/test_dplr.py b/source/lmp/tests/test_dplr.py index bf8783f233..dd0c03aabe 100644 --- a/source/lmp/tests/test_dplr.py +++ b/source/lmp/tests/test_dplr.py @@ -271,6 +271,10 @@ def setup_module() -> None: + if os.environ.get("ENABLE_TENSORFLOW", "1") != "1": + pytest.skip( + "Skip test because TensorFlow support is not enabled.", + ) write_lmp_data_full( box, coord, mol_list, type_OH, charge, data_file, bond_list, mass_list ) diff --git a/source/lmp/tests/test_lammps.py b/source/lmp/tests/test_lammps.py index c24f032cf6..05de1e69fa 100644 --- a/source/lmp/tests/test_lammps.py +++ b/source/lmp/tests/test_lammps.py @@ -230,6 +230,10 @@ def setup_module() -> None: + if os.environ.get("ENABLE_TENSORFLOW", "1") != "1": + pytest.skip( + "Skip test because TensorFlow support is not enabled.", + ) write_lmp_data(box, coord, type_OH, data_file) write_lmp_data(box, coord, type_HO, data_type_map_file) write_lmp_data( diff --git a/source/lmp/tests/test_lammps_3types.py b/source/lmp/tests/test_lammps_3types.py index a99a83b758..9156914dbc 100644 --- a/source/lmp/tests/test_lammps_3types.py +++ b/source/lmp/tests/test_lammps_3types.py @@ -253,6 +253,10 @@ def setup_module() -> None: + if os.environ.get("ENABLE_TENSORFLOW", "1") != "1": + pytest.skip( + "Skip test because TensorFlow support is not enabled.", + ) write_lmp_data(box, coord, type_OH, data_file) write_lmp_data(box, coord, type_HO, data_type_map_file) diff --git a/source/lmp/tests/test_lammps_dpa_jax.py b/source/lmp/tests/test_lammps_dpa_jax.py index 65991b9732..51b2d56742 100644 --- a/source/lmp/tests/test_lammps_dpa_jax.py +++ b/source/lmp/tests/test_lammps_dpa_jax.py @@ -228,6 +228,10 @@ def setup_module(): + if os.environ.get("ENABLE_JAX", "1") != "1": + pytest.skip( + "Skip test because JAX support is not enabled.", + ) write_lmp_data(box, coord, type_OH, data_file) write_lmp_data(box, coord, type_HO, data_type_map_file) write_lmp_data( @@ -341,6 +345,10 @@ def test_pair_deepmd_virial(lammps): ) / constants.nktv2p == pytest.approx(expected_v[idx_map, ii]) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi(lammps): lammps.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -367,6 +375,10 @@ def test_pair_deepmd_model_devi(lammps): assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_virial(lammps): lammps.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -405,6 +417,10 @@ def test_pair_deepmd_model_devi_virial(lammps): assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative(lammps): relative = 1.0 lammps.pair_style( @@ -434,6 +450,10 @@ def test_pair_deepmd_model_devi_atomic_relative(lammps): assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_v(lammps): relative = 1.0 lammps.pair_style( @@ -520,6 +540,10 @@ def test_pair_deepmd_virial_real(lammps_real): ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_real(lammps_real): lammps_real.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -550,6 +574,10 @@ def test_pair_deepmd_model_devi_real(lammps_real): ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_virial_real(lammps_real): lammps_real.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -594,6 +622,10 @@ def test_pair_deepmd_model_devi_virial_real(lammps_real): ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_real(lammps_real): relative = 1.0 lammps_real.pair_style( @@ -627,6 +659,10 @@ def test_pair_deepmd_model_devi_atomic_relative_real(lammps_real): ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_v_real(lammps_real): relative = 1.0 lammps_real.pair_style( diff --git a/source/lmp/tests/test_lammps_dpa_pt.py b/source/lmp/tests/test_lammps_dpa_pt.py index 2768332c71..6ba71fe52b 100644 --- a/source/lmp/tests/test_lammps_dpa_pt.py +++ b/source/lmp/tests/test_lammps_dpa_pt.py @@ -226,6 +226,10 @@ def setup_module() -> None: + if os.environ.get("ENABLE_PYTORCH", "1") != "1": + pytest.skip( + "Skip test because PyTorch support is not enabled.", + ) write_lmp_data(box, coord, type_OH, data_file) write_lmp_data(box, coord, type_HO, data_type_map_file) write_lmp_data( @@ -337,6 +341,10 @@ def test_pair_deepmd_virial(lammps) -> None: ) / constants.nktv2p == pytest.approx(expected_v[idx_map, ii]) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi(lammps) -> None: lammps.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -363,6 +371,10 @@ def test_pair_deepmd_model_devi(lammps) -> None: assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_virial(lammps) -> None: lammps.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -401,6 +413,10 @@ def test_pair_deepmd_model_devi_virial(lammps) -> None: assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative(lammps) -> None: relative = 1.0 lammps.pair_style( @@ -430,6 +446,10 @@ def test_pair_deepmd_model_devi_atomic_relative(lammps) -> None: assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_v(lammps) -> None: relative = 1.0 lammps.pair_style( @@ -516,6 +536,10 @@ def test_pair_deepmd_virial_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_real(lammps_real) -> None: lammps_real.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -546,6 +570,10 @@ def test_pair_deepmd_model_devi_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_virial_real(lammps_real) -> None: lammps_real.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -590,6 +618,10 @@ def test_pair_deepmd_model_devi_virial_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_real(lammps_real) -> None: relative = 1.0 lammps_real.pair_style( @@ -623,6 +655,10 @@ def test_pair_deepmd_model_devi_atomic_relative_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_v_real(lammps_real) -> None: relative = 1.0 lammps_real.pair_style( @@ -682,6 +718,10 @@ def test_pair_deepmd_si(lammps_si) -> None: ("balance_args",), [(["--balance"],), ([],)], ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_mpi(balance_args: list) -> None: with tempfile.NamedTemporaryFile() as f: sp.check_call( diff --git a/source/lmp/tests/test_lammps_dpa_pt_nopbc.py b/source/lmp/tests/test_lammps_dpa_pt_nopbc.py index 1c2e145c84..989a782b5f 100644 --- a/source/lmp/tests/test_lammps_dpa_pt_nopbc.py +++ b/source/lmp/tests/test_lammps_dpa_pt_nopbc.py @@ -224,6 +224,10 @@ def setup_module() -> None: + if os.environ.get("ENABLE_PYTORCH", "1") != "1": + pytest.skip( + "Skip test because PyTorch support is not enabled.", + ) write_lmp_data(box, coord, type_OH, data_file) write_lmp_data(box, coord, type_HO, data_type_map_file) write_lmp_data( @@ -335,6 +339,10 @@ def test_pair_deepmd_virial(lammps) -> None: ) / constants.nktv2p == pytest.approx(expected_v[idx_map, ii]) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi(lammps) -> None: lammps.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -361,6 +369,10 @@ def test_pair_deepmd_model_devi(lammps) -> None: assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_virial(lammps) -> None: lammps.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -399,6 +411,10 @@ def test_pair_deepmd_model_devi_virial(lammps) -> None: assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative(lammps) -> None: relative = 1.0 lammps.pair_style( @@ -428,6 +444,10 @@ def test_pair_deepmd_model_devi_atomic_relative(lammps) -> None: assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_v(lammps) -> None: relative = 1.0 lammps.pair_style( @@ -514,6 +534,10 @@ def test_pair_deepmd_virial_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_real(lammps_real) -> None: lammps_real.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -544,6 +568,10 @@ def test_pair_deepmd_model_devi_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_virial_real(lammps_real) -> None: lammps_real.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -588,6 +616,10 @@ def test_pair_deepmd_model_devi_virial_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_real(lammps_real) -> None: relative = 1.0 lammps_real.pair_style( @@ -621,6 +653,10 @@ def test_pair_deepmd_model_devi_atomic_relative_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_v_real(lammps_real) -> None: relative = 1.0 lammps_real.pair_style( @@ -680,6 +716,10 @@ def test_pair_deepmd_si(lammps_si) -> None: ("balance_args",), [(["--balance"],), ([],)], ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_mpi(balance_args: list) -> None: with tempfile.NamedTemporaryFile() as f: sp.check_call( diff --git a/source/lmp/tests/test_lammps_dpa_sel_pt.py b/source/lmp/tests/test_lammps_dpa_sel_pt.py index e758251f18..f65c710409 100644 --- a/source/lmp/tests/test_lammps_dpa_sel_pt.py +++ b/source/lmp/tests/test_lammps_dpa_sel_pt.py @@ -229,6 +229,10 @@ def setup_module() -> None: + if os.environ.get("ENABLE_PYTORCH", "1") != "1": + pytest.skip( + "Skip test because PyTorch support is not enabled.", + ) write_lmp_data(box, coord, type_OH, data_file) write_lmp_data(box, coord, type_HO, data_type_map_file) write_lmp_data( @@ -340,6 +344,10 @@ def test_pair_deepmd_virial(lammps) -> None: ) / constants.nktv2p == pytest.approx(expected_v[idx_map, ii]) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi(lammps) -> None: lammps.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -366,6 +374,10 @@ def test_pair_deepmd_model_devi(lammps) -> None: assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_virial(lammps) -> None: lammps.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -404,6 +416,10 @@ def test_pair_deepmd_model_devi_virial(lammps) -> None: assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative(lammps) -> None: relative = 1.0 lammps.pair_style( @@ -433,6 +449,10 @@ def test_pair_deepmd_model_devi_atomic_relative(lammps) -> None: assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_v(lammps) -> None: relative = 1.0 lammps.pair_style( @@ -519,6 +539,10 @@ def test_pair_deepmd_virial_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_real(lammps_real) -> None: lammps_real.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -549,6 +573,10 @@ def test_pair_deepmd_model_devi_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_virial_real(lammps_real) -> None: lammps_real.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -593,6 +621,10 @@ def test_pair_deepmd_model_devi_virial_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_real(lammps_real) -> None: relative = 1.0 lammps_real.pair_style( @@ -626,6 +658,10 @@ def test_pair_deepmd_model_devi_atomic_relative_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_v_real(lammps_real) -> None: relative = 1.0 lammps_real.pair_style( diff --git a/source/lmp/tests/test_lammps_faparam.py b/source/lmp/tests/test_lammps_faparam.py index 4f744119b6..1a614c3d24 100644 --- a/source/lmp/tests/test_lammps_faparam.py +++ b/source/lmp/tests/test_lammps_faparam.py @@ -140,6 +140,10 @@ def setup_module() -> None: + if os.environ.get("ENABLE_TENSORFLOW", "1") != "1": + pytest.skip( + "Skip test because TensorFlow support is not enabled.", + ) write_lmp_data(box, coord, type_OH, data_file) diff --git a/source/lmp/tests/test_lammps_jax.py b/source/lmp/tests/test_lammps_jax.py index 0c488cd1bc..e3d0e5ce74 100644 --- a/source/lmp/tests/test_lammps_jax.py +++ b/source/lmp/tests/test_lammps_jax.py @@ -228,6 +228,10 @@ def setup_module(): + if os.environ.get("ENABLE_JAX", "1") != "1": + pytest.skip( + "Skip test because JAX support is not enabled.", + ) write_lmp_data(box, coord, type_OH, data_file) write_lmp_data(box, coord, type_HO, data_type_map_file) write_lmp_data( @@ -339,6 +343,10 @@ def test_pair_deepmd_virial(lammps): ) / constants.nktv2p == pytest.approx(expected_v[idx_map, ii]) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi(lammps): lammps.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -365,6 +373,10 @@ def test_pair_deepmd_model_devi(lammps): assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_virial(lammps): lammps.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -403,6 +415,10 @@ def test_pair_deepmd_model_devi_virial(lammps): assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative(lammps): relative = 1.0 lammps.pair_style( @@ -432,6 +448,10 @@ def test_pair_deepmd_model_devi_atomic_relative(lammps): assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_v(lammps): relative = 1.0 lammps.pair_style( @@ -518,6 +538,10 @@ def test_pair_deepmd_virial_real(lammps_real): ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_real(lammps_real): lammps_real.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -548,6 +572,10 @@ def test_pair_deepmd_model_devi_real(lammps_real): ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_virial_real(lammps_real): lammps_real.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -592,6 +620,10 @@ def test_pair_deepmd_model_devi_virial_real(lammps_real): ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_real(lammps_real): relative = 1.0 lammps_real.pair_style( @@ -625,6 +657,10 @@ def test_pair_deepmd_model_devi_atomic_relative_real(lammps_real): ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_v_real(lammps_real): relative = 1.0 lammps_real.pair_style( @@ -684,6 +720,10 @@ def test_pair_deepmd_si(lammps_si): ("balance_args",), [(["--balance"],), ([],)], ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_mpi(balance_args: list): with tempfile.NamedTemporaryFile() as f: sp.check_call( diff --git a/source/lmp/tests/test_lammps_pd.py b/source/lmp/tests/test_lammps_pd.py index 92b00aba29..85275c4027 100644 --- a/source/lmp/tests/test_lammps_pd.py +++ b/source/lmp/tests/test_lammps_pd.py @@ -229,6 +229,10 @@ def setup_module(): + if os.environ.get("ENABLE_PADDLE", "1") != "1": + pytest.skip( + "Skip test because Paddle support is not enabled.", + ) write_lmp_data(box, coord, type_OH, data_file) write_lmp_data(box, coord, type_HO, data_type_map_file) write_lmp_data( @@ -340,6 +344,10 @@ def test_pair_deepmd_virial(lammps): ) / constants.nktv2p == pytest.approx(expected_v[idx_map, ii], RTOL, ATOL) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi(lammps): lammps.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -366,6 +374,10 @@ def test_pair_deepmd_model_devi(lammps): assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_virial(lammps): lammps.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -406,6 +418,10 @@ def test_pair_deepmd_model_devi_virial(lammps): ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative(lammps): relative = 1.0 lammps.pair_style( @@ -435,6 +451,10 @@ def test_pair_deepmd_model_devi_atomic_relative(lammps): assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_v(lammps): relative = 1.0 lammps.pair_style( @@ -527,6 +547,10 @@ def test_pair_deepmd_virial_real(lammps_real): ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_real(lammps_real): lammps_real.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -557,6 +581,10 @@ def test_pair_deepmd_model_devi_real(lammps_real): ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_virial_real(lammps_real): lammps_real.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -621,6 +649,10 @@ def test_pair_deepmd_model_devi_virial_real(lammps_real): ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_real(lammps_real): relative = 1.0 lammps_real.pair_style( @@ -654,6 +686,10 @@ def test_pair_deepmd_model_devi_atomic_relative_real(lammps_real): ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_v_real(lammps_real): relative = 1.0 lammps_real.pair_style( @@ -714,6 +750,10 @@ def test_pair_deepmd_si(lammps_si): ("balance_args",), [(["--balance"],), ([],)], ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_mpi(balance_args: list): with tempfile.NamedTemporaryFile() as f: sp.check_call( diff --git a/source/lmp/tests/test_lammps_pt.py b/source/lmp/tests/test_lammps_pt.py index f675b2b671..f6fb8f949b 100644 --- a/source/lmp/tests/test_lammps_pt.py +++ b/source/lmp/tests/test_lammps_pt.py @@ -226,6 +226,10 @@ def setup_module() -> None: + if os.environ.get("ENABLE_PYTORCH", "1") != "1": + pytest.skip( + "Skip test because PyTorch support is not enabled.", + ) write_lmp_data(box, coord, type_OH, data_file) write_lmp_data(box, coord, type_HO, data_type_map_file) write_lmp_data( @@ -337,6 +341,10 @@ def test_pair_deepmd_virial(lammps) -> None: ) / constants.nktv2p == pytest.approx(expected_v[idx_map, ii]) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi(lammps) -> None: lammps.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -363,6 +371,10 @@ def test_pair_deepmd_model_devi(lammps) -> None: assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_virial(lammps) -> None: lammps.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -401,6 +413,10 @@ def test_pair_deepmd_model_devi_virial(lammps) -> None: assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative(lammps) -> None: relative = 1.0 lammps.pair_style( @@ -430,6 +446,10 @@ def test_pair_deepmd_model_devi_atomic_relative(lammps) -> None: assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_v(lammps) -> None: relative = 1.0 lammps.pair_style( @@ -516,6 +536,10 @@ def test_pair_deepmd_virial_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_real(lammps_real) -> None: lammps_real.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -546,6 +570,10 @@ def test_pair_deepmd_model_devi_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_virial_real(lammps_real) -> None: lammps_real.pair_style( f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" @@ -590,6 +618,10 @@ def test_pair_deepmd_model_devi_virial_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_real(lammps_real) -> None: relative = 1.0 lammps_real.pair_style( @@ -623,6 +655,10 @@ def test_pair_deepmd_model_devi_atomic_relative_real(lammps_real) -> None: ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative_v_real(lammps_real) -> None: relative = 1.0 lammps_real.pair_style( @@ -682,6 +718,10 @@ def test_pair_deepmd_si(lammps_si) -> None: ("balance_args",), [(["--balance"],), ([],)], ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_mpi(balance_args: list) -> None: with tempfile.NamedTemporaryFile() as f: sp.check_call( diff --git a/source/lmp/tests/test_lammps_spin.py b/source/lmp/tests/test_lammps_spin.py index 9ab7271f5f..4bced5e3f0 100644 --- a/source/lmp/tests/test_lammps_spin.py +++ b/source/lmp/tests/test_lammps_spin.py @@ -100,6 +100,10 @@ def setup_module() -> None: + if os.environ.get("ENABLE_TENSORFLOW", "1") != "1": + pytest.skip( + "Skip test because TensorFlow support is not enabled.", + ) write_lmp_data_spin(box, coord, spin, type_NiO, data_file) diff --git a/source/lmp/tests/test_lammps_spin_nopbc.py b/source/lmp/tests/test_lammps_spin_nopbc.py index 3ef9a7a355..0147b3da23 100644 --- a/source/lmp/tests/test_lammps_spin_nopbc.py +++ b/source/lmp/tests/test_lammps_spin_nopbc.py @@ -99,6 +99,10 @@ def setup_module() -> None: + if os.environ.get("ENABLE_TENSORFLOW", "1") != "1": + pytest.skip( + "Skip test because TensorFlow support is not enabled.", + ) write_lmp_data_spin(box, coord, spin, type_NiO, data_file) diff --git a/source/lmp/tests/test_lammps_spin_nopbc_pt.py b/source/lmp/tests/test_lammps_spin_nopbc_pt.py index 8a4dc7a7f1..236e94b191 100644 --- a/source/lmp/tests/test_lammps_spin_nopbc_pt.py +++ b/source/lmp/tests/test_lammps_spin_nopbc_pt.py @@ -96,6 +96,10 @@ def setup_module() -> None: + if os.environ.get("ENABLE_PYTORCH", "1") != "1": + pytest.skip( + "Skip test because PyTorch support is not enabled.", + ) write_lmp_data_spin(box, coord, spin, type_NiO, data_file) @@ -146,6 +150,10 @@ def test_pair_deepmd(lammps) -> None: lammps.run(1) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi(lammps) -> None: lammps.pair_style( f"deepspin {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1" @@ -169,6 +177,10 @@ def test_pair_deepmd_model_devi(lammps) -> None: assert md[9] == pytest.approx(np.mean(expected_md_fm)) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative(lammps) -> None: relative = 1.0 lammps.pair_style( @@ -207,6 +219,10 @@ def test_pair_deepmd_model_devi_atomic_relative(lammps) -> None: ("balance_args",), [(["--balance"],), ([],)], ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_mpi(balance_args: list) -> None: with tempfile.NamedTemporaryFile() as f: sp.check_call( diff --git a/source/lmp/tests/test_lammps_spin_pt.py b/source/lmp/tests/test_lammps_spin_pt.py index 9a0771d047..fd46cb6514 100644 --- a/source/lmp/tests/test_lammps_spin_pt.py +++ b/source/lmp/tests/test_lammps_spin_pt.py @@ -96,6 +96,10 @@ def setup_module() -> None: + if os.environ.get("ENABLE_PYTORCH", "1") != "1": + pytest.skip( + "Skip test because PyTorch support is not enabled.", + ) write_lmp_data_spin(box, coord, spin, type_NiO, data_file) @@ -186,6 +190,10 @@ def test_pair_deepmd_virial(lammps) -> None: # ) / constants.nktv2p == pytest.approx(expected_v[idx_map, ii]) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi(lammps) -> None: lammps.pair_style( f"deepspin {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1" @@ -209,6 +217,10 @@ def test_pair_deepmd_model_devi(lammps) -> None: assert md[9] == pytest.approx(np.mean(expected_md_fm)) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_model_devi_atomic_relative(lammps) -> None: relative = 1.0 lammps.pair_style( @@ -247,6 +259,10 @@ def test_pair_deepmd_model_devi_atomic_relative(lammps) -> None: ("balance_args",), [(["--balance"],), ([],)], ) +@pytest.mark.skipif( + os.environ.get("ENABLE_TENSORFLOW", "1") != "1", + reason="Skip test because TensorFlow support is not enabled.", +) def test_pair_deepmd_mpi(balance_args: list) -> None: with tempfile.NamedTemporaryFile() as f: sp.check_call( diff --git a/source/tests/__init__.py b/source/tests/__init__.py index 6ceb116d85..16149c2cd0 100644 --- a/source/tests/__init__.py +++ b/source/tests/__init__.py @@ -1 +1,7 @@ # SPDX-License-Identifier: LGPL-3.0-or-later + +import os + +if os.environ.get("DP_CI_IMPORT_PADDLE_BEFORE_TF", "0") == "1": + import paddle # noqa: F401 + import tensorflow # noqa: F401