Forum Discussion
Hi,
We have two D5005 (Stratix 10). Installing the BSP works fine; and the cards can be enumerated by a plain SYCL (no kernel) program. But trying to run the fpga_compile example causes the SEGV - so it isn't actually even trying to access the card.
My suspicion is that this is because it is RHEL 7 - but the card BSP requires that, and apparently the old instructions for how to do this don't work any more (and have been removed).
Nick
Here is a Dockerfile to reproduce the CentOS 7 install, following the instructions Intel previously published for running on CentOS 7. It ends with attempting to run the fpga_compile example (which then SEGV).
FROM centos:7
RUN yum install -y wget git gcc gcc-c++ make xz bzip2 file gdb
WORKDIR /opt/build
# Get a newer version of CMake than in the base CentOS repos (2.8)
RUN curl -L https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2-linux-x86_64.tar.gz \
| tar -zxf - --strip-components=1 -C /usr/local
# Get and build gcc 9.5.0 - this version chosen because it matches the
# default of Ubuntu 20.04, the lowest "officially" supported OS. The
# devcloud runs on Ubuntu 18.04, with gcc 7.4 (which the old instructions
# for getting this to work on CentOS 7 used)
RUN wget -q --no-check-certificate https://mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-9.5.0/gcc-9.5.0.tar.xz && \
tar -xf gcc-9.5.0.tar.xz && \
( cd gcc-9.5.0 && contrib/download_prerequisites ) && \
mkdir _build_gcc && \
cd _build_gcc && \
/opt/build/gcc-9.5.0/configure --disable-multilib --enable-languages=c,c++ --prefix=/opt/gcc-9.5 --enable-shared && \
make -j $(grep -c ^processor /proc/cpuinfo) && \
make install
# Get and install oneAPI
RUN wget https://registrationcenter-download.intel.com/akdlm/irc_nas/19079/l_BaseKit_p_2023.0.0.25537_offline.sh
RUN sh ./l_BaseKit_p_2023.0.0.25537_offline.sh -a -s -c --eula accept --install-dir=/opt/intel
# Get the oneAPI samples repository
RUN cd /opt && git clone https://github.com/oneapi-src/oneAPI-samples.git -b 2023.0.0 --depth 1
RUN mkdir /opt/build/fpga_compile
WORKDIR /opt/build/fpga_compile
# Set the environment variables to use a more recent libstdc++ base for icpx.
# These were previously at:
# https://www.intel.com/content/www/us/en/developer/articles/technical/oneapi-dpcpp-fpga-designs-on-rhel-7.html
# but the documentation appears to have been removed.
ENV LD_PRELOAD=/opt/gcc-9.5/lib64/libstdc++.so
ENV CXXFLAGS=--gcc-toolchain=/opt/gcc-9.5
ENV CFLAGS=--gcc-toolchain=/opt/gcc-9.5
ENV LD_LIBRARY_PATH=/opt/gcc-9.5/lib64:$LD_LIBRARY_PATH
# Build the fpga_compile example
RUN source /opt/intel/setvars.sh && \
cmake /opt/oneAPI-samples/DirectProgramming/DPC++FPGA/Tutorials/GettingStarted/fpga_compile && \
cmake --build .
# Running this for emulator SEGV
RUN source /opt/intel/setvars.sh && \
./fpga_compile.fpga_emu
I've been trying to track down the issue in GDB - I suspect the corruption causing the crash is "warning: Corrupted shared library list" which happens in khrIcdOsLibraryLoad, attempting to dlopen("libintelocl_emu.so"). I haven't found out why loading this corrupts the memory, yet.
If there is some instructions for getting the toolkit working on CentOS7, or some way to download the older version of oneAPI and fpga base toolkits? I believe I have copies of oneAPI 2022.1, 2022.2, but without the fpga addon download I'm not sure how to use these (not to mention there were several bugs I encountered with the early 2022 editions that would be nice to fix).
Failing that, some way to actually use the PAC on a newer OS would be good - we were told that it would only work on RHEL/CENTOS 7, and although the card is discontinued, you do seem to still be selling them.