CI: Run ncrystal_example_py from src dir #387
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: basictest_intel | |
on: | |
push: | |
pull_request: | |
jobs: | |
build: | |
runs-on: ubuntu-20.04 | |
#Note: August 2024 the intel oneapi compilers did not work on ubuntu-22.04 | |
#or ubuntu-latest. This is most likely because these platforms are using a | |
#too new c++ library from gcc, for which the intel compilers have not been | |
#updated. Or something like that. | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
path: src | |
- name: add oneAPI to apt | |
run: | | |
cd /tmp | |
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main" | |
- name: apt update | |
run: sudo apt update | |
- name: install oneAPI dpcpp compiler | |
run: sudo apt install intel-oneapi-compiler-dpcpp-cpp | |
- name: install oneAPI runtime libs | |
run: sudo apt install intel-oneapi-runtime-libs | |
#NB: We don't test matplotlib import here in the next step, since we want | |
#to make sure that our CTest infrastructure correctly avoids problems from | |
#"building font cache" printouts on first imports. | |
- name: pip install extra deps | |
run: | | |
python3 -mpip install numpy matplotlib gemmi spglib ase mpmath | |
python3 -c "import numpy; print('numpy imported ok')" | |
python3 -c "import gemmi; print('gemmi imported ok')" | |
python3 -c "import spglib; print('spglib imported ok')" | |
python3 -c "import ase; print('ase imported ok')" | |
python3 -c "import mpmath; print('mpmath imported ok')" | |
- name: Configure CMake | |
run: | | |
source /opt/intel/oneapi/setvars.sh | |
#NB: We could use | |
# -DCMAKE_CXX_COMPILER=icpx | |
# -DCMAKE_C_COMPILER=icx | |
#But just because it seems to be something that might be useful. we do: | |
export CC=$(which icx) | |
export CXX=$(which icpx) | |
cmake \ | |
-S ${{github.workspace}}/src \ | |
-B ${{github.workspace}}/build \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/install \ | |
-DNCRYSTAL_ENABLE_EXAMPLES=ON \ | |
-DNCRYSTAL_BUILD_STRICT=ON \ | |
-DNCRYSTAL_ENABLE_TESTING=ON \ | |
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ | |
-DMCTOOLS_REQUIRE_ALL_TEST_DEPS=ON | |
#Flags that we didn't need: | |
# -DIntelDPCPP_DIR="/opt/intel/oneapi/compiler/latest/linux/cmake/SYCL" | |
# -DNCRYSTAL_ENABLE_SETUPSH=ON | |
# -DMKL_ROOT="/opt/intel/oneapi/mkl/latest" | |
# -DTBB_ROOT="/opt/intel/oneapi/tbb/latest" | |
- name: Build | |
run: > | |
source /opt/intel/oneapi/setvars.sh && | |
cmake | |
--build ${{github.workspace}}/build | |
--config Release | |
- name: CTest | |
run: ( cd ${{github.workspace}}/build && ctest --output-on-failure --test-output-size-failed 100000 --test-output-truncation middle ) | |
- name: Install | |
run: source /opt/intel/oneapi/setvars.sh && cmake --install ${{github.workspace}}/build | |
- name: Test installed | |
run: | | |
source /opt/intel/oneapi/setvars.sh | |
set -eux | |
#Expose ncrystal-config and examples: | |
export PATH="${{github.workspace}}/install/bin:${PATH:-}" | |
#Add python modules and cmdline scripts: | |
pip install ${{github.workspace}}/src/ncrystal_python | |
ncrystal-config --summary | |
nctool --test | |
ncrystal-config --help | |
ncrystal_example_c | |
ncrystal_example_cpp | |
${{github.workspace}}/src/examples/ncrystal_example_py | |
nctool --help | |
nctool --dump 'Al_sg225.ncmat;dcutoff=1.5' | |
python3 -c 'import NCrystal; NCrystal.test()' | |
ncrystal_vdos2ncmat --help | |
ncrystal_cif2ncmat --help | |
ncrystal_ncmat2cpp --help | |
ncrystal_hfg2ncmat --help | |
ncrystal_verifyatompos --help | |
ncrystal_cif2ncmat codid::9008460 | |
ncrystal_ncmat2hkl --help | |
ncrystal_ncmat2hkl --format=laz 'Al_sg225.ncmat;temp=250K;dcutoff=0.75' -o test_Al.laz | |
ncrystal_ncmat2hkl --format=lau 'Al_sg225.ncmat;temp=250K;dcutoff=0.75' -o test_Al.lau | |
nctool -d ./test_Al.laz | |
nctool -d ./test_Al.lau | |
ncrystal_ncmat2cpp $(ncrystal-config --show datadir)/Al_sg225.ncmat -o test.cpp | |
cat test.cpp | |
nctool --pdf Al_sg225.ncmat | |
#Examples from README: | |
cp ./src/examples/ncrystal_example_cpp.cc ./my_cpp_code.cpp | |
cp ./src/examples/ncrystal_example_c.c ./my_c_code.c | |
cc -std=c11 $(ncrystal-config --show buildflags) my_c_code.c -o my_c_app | |
./my_c_app | |
c++ -std=c++17 $(ncrystal-config --show buildflags)${LDFLAGS} ${CXXFLAGS} my_cpp_code.cpp -o my_cpp_app | |
./my_cpp_app | |
echo "Custom compilation of downstream C/C++ code succeeded" | |
# - name: install oneAPI MKL library | |
# run: | | |
# sudo apt install intel-oneapi-mkl-devel | |
#TK - name: Add Intel package sources | |
#TK run: | | |
#TK wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null | |
#TK echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list | |
#TK sudo apt update | |
#TK | |
#TK - name: Install Intel OneAPI Base Toolkit | |
#TK run: | | |
#TK sudo apt install intel-basekit |