[DEBUG] Issue with undefined symbol in MKL #5210
Workflow file for this run
This file contains hidden or 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: Generate coverage data for dpnp | |
on: | |
pull_request: | |
push: | |
branches: [master] | |
permissions: read-all | |
jobs: | |
prev-release: | |
name: Install oneAPI with 2025.0 | |
runs-on: ubuntu-latest | |
permissions: | |
# Needed to cancel any previous runs that are not completed for a given workflow | |
actions: write | |
defaults: | |
run: | |
shell: bash -el {0} | |
env: | |
environment-file: 'environments/environment.yml' | |
build-with-oneapi-env: 'environments/build_with_oneapi.yml' | |
coverage-env: 'environments/coverage.yml' | |
oneapi-pkgs-env: '' | |
# Enable env when it's required to use only conda packages without OneAPI installation | |
# oneapi-pkgs-env: '${{ github.workspace }}/environments/oneapi_pkgs.yml' | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 | |
with: | |
access_token: ${{ github.token }} | |
- name: Add Intel repository | |
if: env.oneapi-pkgs-env == '' | |
run: | | |
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
cat GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null | |
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
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 | |
sudo apt update | |
- name: Install latest Intel OneAPI | |
if: env.oneapi-pkgs-env == '' | |
run: | | |
sudo apt install hwloc \ | |
intel-oneapi-mkl=2025.0.1-14 \ | |
intel-oneapi-umf=0.9.1-6 \ | |
intel-oneapi-mkl-devel=2025.0.1-14 \ | |
intel-oneapi-tbb-devel=2022.0.0-402 \ | |
intel-oneapi-libdpstd-devel=2022.7.1-14 \ | |
intel-oneapi-compiler-dpcpp-cpp=2025.0.4-1519 | |
- name: Debug new oneAPI pkgs | |
run: | | |
[ -f /opt/intel/oneapi/setvars.sh ] && source /opt/intel/oneapi/setvars.sh | |
echo "Running LDD:" | |
sudo ldd /opt/intel/oneapi/mkl/2025.0/lib/libmkl_sycl_vm.so.5 | |
echo "Running ReadELF:" | |
sudo readelf -d /opt/intel/oneapi/mkl/2025.0/lib/libmkl_sycl_vm.so.5 | |
echo "Searching for libsycl:" | |
sudo find /opt/intel/oneapi -name "libsycl.so*" | |
echo "Running LDD with LD_LIBRARY_PATH to compiler:" | |
sudo LD_LIBRARY_PATH="/opt/intel/oneapi/compiler/2025.0/lib" ldd /opt/intel/oneapi/mkl/2025.0/lib/libmkl_sycl_vm.so.5 | |
echo "Looking for undefined symbols in libmkl_sycl_vm.so.5:" | |
sudo nm -A -u /opt/intel/oneapi/mkl/2025.0/lib/libmkl_sycl_vm.so.5 | |
- name: Create test file | |
uses: 1arp/[email protected] | |
with: | |
path: 'example' | |
isAbsolutePath: false | |
file: 'test.cpp' | |
content: | | |
#include <sycl/sycl.hpp> | |
#include <oneapi/mkl.hpp> | |
namespace mkl_vm = oneapi::mkl::vm; | |
int main(void) | |
{ | |
sycl::queue q{sycl::default_selector_v}; | |
const auto &dev = q.get_device(); | |
std::cout << "Device: " << dev.get_info<sycl::info::device::name>() << std::endl; | |
std::cout << "Driver_version: " << dev.get_info<sycl::info::device::driver_version>() << std::endl; | |
using T = float; | |
constexpr std::size_t size = 10; | |
T *data = sycl::malloc_device<T>(size, q); | |
T *res = sycl::malloc_device<T>(size, q); | |
auto fill_ev = q.fill<T>(data, T(-1.0), size); | |
mkl_vm::abs(q, size, data, res, {fill_ev}).wait_and_throw(); | |
sycl::free(data, q); | |
sycl::free(res, q); | |
std::cout << "Exit" << std::endl; | |
return 0; | |
} | |
- name: Cat test file | |
run: cat example/test.cpp | |
- name: Build test file | |
run: | | |
[ -f /opt/intel/oneapi/setvars.sh ] && source /opt/intel/oneapi/setvars.sh | |
icpx -fsycl test.cpp -DMKL_ILP64 -qmkl-ilp64=parallel -qtbb -o test.x | |
working-directory: example | |
- name: Run test file | |
run: | | |
[ -f /opt/intel/oneapi/setvars.sh ] && source /opt/intel/oneapi/setvars.sh | |
./test.x | |
working-directory: example | |
new-release: | |
name: Install oneAPI with 2025.1 | |
runs-on: ubuntu-latest | |
permissions: | |
# Needed to cancel any previous runs that are not completed for a given workflow | |
actions: write | |
defaults: | |
run: | |
shell: bash -el {0} | |
env: | |
environment-file: 'environments/environment.yml' | |
build-with-oneapi-env: 'environments/build_with_oneapi.yml' | |
coverage-env: 'environments/coverage.yml' | |
oneapi-pkgs-env: '' | |
# Enable env when it's required to use only conda packages without OneAPI installation | |
# oneapi-pkgs-env: '${{ github.workspace }}/environments/oneapi_pkgs.yml' | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 | |
with: | |
access_token: ${{ github.token }} | |
- name: Add Intel repository | |
if: env.oneapi-pkgs-env == '' | |
run: | | |
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
cat GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null | |
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
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 | |
sudo apt update | |
- name: Install latest Intel OneAPI | |
if: env.oneapi-pkgs-env == '' | |
run: | | |
sudo apt install hwloc \ | |
intel-oneapi-mkl \ | |
intel-oneapi-umf \ | |
intel-oneapi-mkl-devel \ | |
intel-oneapi-tbb-devel \ | |
intel-oneapi-libdpstd-devel \ | |
intel-oneapi-compiler-dpcpp-cpp | |
- name: Debug new oneAPI pkgs | |
run: | | |
[ -f /opt/intel/oneapi/setvars.sh ] && source /opt/intel/oneapi/setvars.sh | |
echo "Running LDD:" | |
sudo ldd /opt/intel/oneapi/mkl/2025.1/lib/libmkl_sycl_vm.so.5 | |
echo "Running ReadELF:" | |
sudo readelf -d /opt/intel/oneapi/mkl/2025.1/lib/libmkl_sycl_vm.so.5 | |
echo "Searching for libsycl:" | |
sudo find /opt/intel/oneapi -name "libsycl.so*" | |
echo "Running LDD with LD_LIBRARY_PATH to compiler:" | |
sudo LD_LIBRARY_PATH="/opt/intel/oneapi/compiler/2025.1/lib" ldd /opt/intel/oneapi/mkl/2025.1/lib/libmkl_sycl_vm.so.5 | |
echo "Looking for undefined symbols in libmkl_sycl_vm.so.5:" | |
sudo nm -A -u /opt/intel/oneapi/mkl/2025.1/lib/libmkl_sycl_vm.so.5 | |
echo "Grep for SubmissionInfo:" | |
sudo nm -A /opt/intel/oneapi/mkl/2025.1/lib/libmkl_sycl_vm.so.5 | grep SubmissionInfo | |
new-release-old-compiler: | |
name: Install oneAPI with 2025.1, but DPC++ from 2025.0 | |
runs-on: ubuntu-latest | |
permissions: | |
# Needed to cancel any previous runs that are not completed for a given workflow | |
actions: write | |
defaults: | |
run: | |
shell: bash -el {0} | |
env: | |
environment-file: 'environments/environment.yml' | |
build-with-oneapi-env: 'environments/build_with_oneapi.yml' | |
coverage-env: 'environments/coverage.yml' | |
oneapi-pkgs-env: '' | |
# Enable env when it's required to use only conda packages without OneAPI installation | |
# oneapi-pkgs-env: '${{ github.workspace }}/environments/oneapi_pkgs.yml' | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 | |
with: | |
access_token: ${{ github.token }} | |
- name: Add Intel repository | |
if: env.oneapi-pkgs-env == '' | |
run: | | |
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
cat GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null | |
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
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 | |
sudo apt update | |
- name: Install latest Intel OneAPI | |
if: env.oneapi-pkgs-env == '' | |
run: | | |
sudo apt install hwloc \ | |
intel-oneapi-mkl \ | |
intel-oneapi-umf \ | |
intel-oneapi-mkl-devel \ | |
intel-oneapi-tbb-devel \ | |
intel-oneapi-libdpstd-devel \ | |
intel-oneapi-compiler-dpcpp-cpp=2025.0.4-1519 | |
- name: Debug new oneAPI pkgs | |
run: | | |
[ -f /opt/intel/oneapi/setvars.sh ] && source /opt/intel/oneapi/setvars.sh | |
echo "Running LDD:" | |
sudo ldd /opt/intel/oneapi/mkl/2025.1/lib/libmkl_sycl_vm.so.5 | |
echo "Running ReadELF:" | |
sudo readelf -d /opt/intel/oneapi/mkl/2025.1/lib/libmkl_sycl_vm.so.5 | |
echo "Searching for libsycl:" | |
sudo find /opt/intel/oneapi -name "libsycl.so*" | |
echo "Running LDD with LD_LIBRARY_PATH to compiler:" | |
sudo LD_LIBRARY_PATH="/opt/intel/oneapi/compiler/2025.0/lib" ldd /opt/intel/oneapi/mkl/2025.1/lib/libmkl_sycl_vm.so.5 | |
echo "Looking for undefined symbols in libmkl_sycl_vm.so.5:" | |
sudo nm -A -u /opt/intel/oneapi/mkl/2025.1/lib/libmkl_sycl_vm.so.5 | |
echo "Grep for SubmissionInfo:" | |
sudo nm -A /opt/intel/oneapi/mkl/2025.1/lib/libmkl_sycl_vm.so.5 | grep SubmissionInfo | |
generate-coverage: | |
name: Generate coverage and push to Coveralls.io | |
runs-on: ubuntu-latest | |
permissions: | |
# Needed to cancel any previous runs that are not completed for a given workflow | |
actions: write | |
defaults: | |
run: | |
shell: bash -el {0} | |
env: | |
environment-file: 'environments/environment.yml' | |
build-with-oneapi-env: 'environments/build_with_oneapi.yml' | |
coverage-env: 'environments/coverage.yml' | |
oneapi-pkgs-env: '' | |
# Enable env when it's required to use only conda packages without OneAPI installation | |
# oneapi-pkgs-env: '${{ github.workspace }}/environments/oneapi_pkgs.yml' | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 | |
with: | |
access_token: ${{ github.token }} | |
- name: Add Intel repository | |
if: env.oneapi-pkgs-env == '' | |
run: | | |
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
cat GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null | |
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
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 | |
sudo apt update | |
- name: Install latest Intel OneAPI | |
if: env.oneapi-pkgs-env == '' | |
run: | | |
sudo apt install hwloc \ | |
intel-oneapi-mkl \ | |
intel-oneapi-umf \ | |
intel-oneapi-mkl-devel \ | |
intel-oneapi-tbb-devel \ | |
intel-oneapi-libdpstd-devel \ | |
intel-oneapi-compiler-dpcpp-cpp=2025.0.4-1519 | |
- name: Install Lcov | |
run: | | |
sudo apt-get install lcov | |
sudo gem install coveralls-lcov | |
- name: Checkout repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- name: Install conda-merge tool | |
uses: BSFishy/pip-action@8f2d471d809dc20b6ada98c91910b6ae6243f318 # v1 | |
with: | |
packages: conda-merge | |
- name: Merge conda env files | |
run: | | |
conda-merge ${{ env.build-with-oneapi-env }} ${{ env.coverage-env }} ${{ env.oneapi-pkgs-env }} > ${{ env.environment-file }} | |
cat ${{ env.environment-file }} | |
- name: Setup miniconda | |
id: setup_miniconda | |
continue-on-error: true | |
uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
conda-remove-defaults: 'true' | |
environment-file: ${{ env.environment-file }} | |
activate-environment: 'coverage' | |
- name: ReSetup miniconda | |
if: steps.setup_miniconda.outcome == 'failure' | |
uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
conda-remove-defaults: 'true' | |
environment-file: ${{ env.environment-file }} | |
activate-environment: 'coverage' | |
- name: Conda info | |
run: | | |
mamba info | |
mamba list | |
- name: Build dpnp with coverage | |
id: build_coverage | |
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2 | |
with: | |
shell: bash | |
timeout_minutes: 60 | |
max_attempts: 5 | |
retry_on: error | |
command: | | |
. $CONDA/etc/profile.d/conda.sh | |
conda activate coverage | |
[ -f /opt/intel/oneapi/setvars.sh ] && source /opt/intel/oneapi/setvars.sh | |
git clean -fxd | |
python scripts/gen_coverage.py --verbose | |
- name: Total number of coverage attempts | |
run: | | |
echo "Total number of coverage attempts: ${{ steps.build_coverage.outputs.total_attempts }}" | |
- name: Upload coverage data to coveralls.io | |
run: | | |
echo "Processing pytest-coverage" | |
export DPNP_PYTEST_LCOV=$(find . -name dpnp_pytest.lcov) | |
coveralls-lcov -v -n $DPNP_PYTEST_LCOV > pytest-dpnp-c-api-coverage.json | |
# merge file with coverage data and upload | |
echo "Merging files with coverage data" | |
coveralls --service=github --merge=pytest-dpnp-c-api-coverage.json | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
COVERALLS_PARALLEL: true | |
coveralls: | |
name: Indicate completion to coveralls.io | |
needs: generate-coverage | |
runs-on: ubuntu-latest | |
container: python:3-slim | |
steps: | |
- name: Finished | |
run: | | |
pip3 install --upgrade coveralls==3.3.1 | |
coveralls --service=github --finish | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |