Compilation at Jefferson Lab
In order to get this to compile at JLAB, I had to make a couple changes to CMakeLists.txt, namely:
# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -O3 -fgpu-rdc --hip-link --craype-prepend-opt=-Wl,-rpath=${ROCM_PATH}/deps")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -O3 -fgpu-rdc --hip-link -Wl,-rpath=${ROCM_PATH}/deps")
and
include_directories(SYSTEM "${SIMULATEQCD_INCLUDE_DIRS}" "/opt/rocm-5.1.3/include/roctracer") #include_directories(SYSTEM "${SIMULATEQCD_INCLUDE_DIRS}") link_libraries("${SIMULATEQCD_LIBRARIES}")
What is the best way to implement a change that does this on JLAB? Should I create some variable to export? I don't want to mess up the compilation on other machines.
Those settings that you commented out were added specifically for either Lumi-G or Frontier (judging by the craype flag) and could potentially be dropped. Will check once I have access to Frontier again. I think it might be enough to keep your CMakeLists.txt changes in your own local branch on Jlab? I wouldn't want to have your second change (the hard coded roctracer path) in the main branch.
Yeah, I was thinking maybe there could be some logic that lets you add such a path to the SIMULATEQCD_INCLUDE_DIRS variable in case a situation like that arises. I mean to some extent it's probably impossible to have a one-size-fits-all Makefile.
Thanks for looking into it.