ContributionsMost RecentMost LikesSolutionsfpga programs are not running Hi, it seems all my FPGA codes cannot run at the moment on the nodes with Arria 10 OneAPI. Depending if I directly run on the node (e.g. s001-n090) or through devcloud_login -b A10OAPI walltime=12:00:00 job1.sh I get error messages like: Error enumerating AFCs: not found Error enumerating AFCs: not found Error enumerating AFCs: not found Error enumerating AFCs: not found Segmentation fault or Error: Could not load board library /opt/intel/inteloneapi/intelfpgadpcpp/latest/board/intel_a10gx_pac/linux64/lib/libintel_opae_mmd.so (error_msg: libMPF.so: cannot open shared object file: No such file or directory) Failed to dynamically load board MMD /opt/intel/inteloneapi/intelfpgadpcpp/latest/board/intel_a10gx_pac/linux64/lib/libintel_opae_mmd.so I had similar problems before, but they seemed solved. It seems like there is no hardware attached. Is it OK to just run: ./executable or I need to do something first? Thanks in advance for your help. performances on Arria 10 Hello, I would like to ask you a question about the performances on the FPGA board Arria 10. I'm using DPC++ and adapted the sample code of the matrix multiplication https://github.com/oneapi-src/oneAPI-samples/tree/master/DirectProgramming/DPC%2B%2B/DenseLinearAlgebra/matrix_mul to run on FPGAs, as described in https://pp4fpgas.readthedocs.io/en/latest/devcloud.html The kernel is the following: h.parallel_for(range(M, P), [=](auto index) { // Get global position in Y direction. int row = index[0]; // Get global position in X direction. int col = index[1]; float sum = 0.0f; // Compute the result of one element of c for (int i = 0; i < width_a; i++) { sum += a[row][i] * b[i][col]; } c[index] = sum; }); Changing the matrix size from 128 to 4096 and running the kernel on GPUs, CPUs and FPGAs I have observed the performance on Arria 10 is always below 1 GFlops, while on GPUs and CPUs I can reach far better performances. I've recently found in https://software.intel.com/content/www/us/en/develop/download/oneapi-fpga-optimization-guide.html (Section 4.2.2 ), that I probably need to specify the work group size manually, but I always get performances below 1 GFlops. Could you please tell me if I need to change some lines in the kernel or if I need to use particular compilation flags for optimization? Many thanks. Any suggestion is very welcome. Re: cannot run on fpga hardware Hi. Now it seems to work. I didn't make any change. Re: cannot run on fpga hardware Hi, no, I still have the same problem unfortunately. Re: cannot run on fpga hardware Hello and thank you for your reply. Below you can find the Makefile that I am using to compile and execute. Makefile -------------------------------------------------------- TARGET_EMU = fpga_emu TARGET_HW = fpga_hardware TARGET_REPORT = fpga_report.a SRCS = src/template.cpp OBJS = $(SRCS:.cpp=.o) ETS = $(SRCS:.cpp=.d) CXX = dpcpp CXXFLAGS = -std=c++17 .PHONY: build build_emu build_hw report run_emu run_hw clean run .DEFAULT_GOAL := build_emu # Intel-supported FPGA cards FPGA_DEVICE_A10 = intel_a10gx_pac:pac_a10 FPGA_DEVICE_S10 = intel_s10sx_pac:pac_s10 FPGA_DEVICE = $(FPGA_DEVICE_A10) # Compile flags EMULATOR_FLAGS = -fintelfpga -DFPGA_EMULATOR HARDWARE_FLAGS = -fintelfpga -Xshardware -Xsboard=$(FPGA_DEVICE) #HARDWARE_FLAGS = -fintelfpga -Xshardware REPORT_FLAGS = $(HARDWARE_FLAGS) -fsycl-link # Build for FPGA emulator build: build_emu build_emu: $(TARGET_EMU) $(TARGET_EMU): $(SRCS) $(CXX) $(CXXFLAGS) $(EMULATOR_FLAGS) -o $@ $^ # Generate FPGA optimization report (without compiling all the way to hardware) report: $(TARGET_REPORT) $(TARGET_REPORT): $(SRCS) $(CXX) $(CXXFLAGS) $(REPORT_FLAGS) -o $@ $^ # Build for FPGA hardware build_hw: $(TARGET_HW) $(TARGET_HW): $(SRCS) $(CXX) $(CXXFLAGS) $(HARDWARE_FLAGS) -fintelfpga -o $@ $^ # Run on the FPGA emulator run: run_emu run_emu: $(TARGET_EMU) ./$(TARGET_EMU) # Run on the FPGA card run_hw: $(TARGET_HW) ./$(TARGET_HW) # Clean all clean: -$(RM) $(OBJS) $(TARGET_EMU) $(TARGET_HW) $(TARGET_REPORT) *.d -$(RM) -R *.prj -------------------------------------------------------------------- Then I use the following commands to compile and execute 1)make build_emu 2)make report 3)make build_hw 4)make run_emu 5)make run_hw The executables are compiled, but: if I try to run on the device through 5) I get the following Makefile:45: recipe for target 'fpga_hardware' failed if I login to a node with Arria 10 OneAPI and then run the executable through ./fpga_hardware I obtain: Error enumerating AFCs: not found Error enumerating AFCs: not found Error enumerating AFCs: not found Error enumerating AFCs: not found Segmentation fault Do you think I am doing some mistakes? I do not understand why, but everything was working until about a week ago. Thanks for you help. Best regards. PS: the commands 1), 2) ... 5) are executed through qsub -l nodes=1:fpga_compile:ppn=2 -d . job1.sh or qsub -l nodes=1:fpga_runtime:ppn=2 -d . job2.sh and the file job.sh look like #!/bin/bash cd /home/my_directory source /opt/intel/inteloneapi/setvars.sh make run_hw cannot run on fpga hardware Hello, I've recently noticed that programs previously running on the fpga hardware are no longer working. I've also tried to recompile but I get the same problem. Here's the message I receive for arria 10 oneAPI. Error enumerating AFCs: not found Error enumerating AFCs: not found Error enumerating AFCs: not found Error enumerating AFCs: not found Segmentation fault Do you have any suggestions? Thank you for your help. Solved