Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue Getting Example Program to Run with Apple M3 #606

Open
cmaloney111 opened this issue Nov 18, 2024 · 2 comments
Open

Issue Getting Example Program to Run with Apple M3 #606

cmaloney111 opened this issue Nov 18, 2024 · 2 comments

Comments

@cmaloney111
Copy link

Describe the bug
The bug occurs when attempting to run the provided example program from the NekRS README using mpirun -np 2 nekrs --setup turbPipe.par. Initially, issues related to OpenMP linkage arise, manifesting as "no such file" errors. After attempting a fix involving setting environment variables and paths, a new error surfaces. This error indicates a problem with dlopen() and a missing symbol _adj_logical_ in the file libturbPipe.so.

To Reproduce
Steps to reproduce the behavior:

  1. Follow the steps outlined in the README for building the NekRS repository.
  2. Execute the example program with these steps (from the README):
    cd <directory outside of installation/source folder>
    cp -a $NEKRS_HOME/examples/turbPipePeriodic .
    mpirun -np 2 nekrs --setup turbPipe.par
  3. Initially encounter OpenMP-related errors:
    dyld[90248]: Library not loaded: @rpath/libomp.dylib
      Referenced from: <BEA5CF92-0C49-30E9-A331-3C68742198F6> ~/.local/nekrs/lib/libocca.so
      Reason: tried: '~/.local/nekrs/lib/libomp.dylib' (no such file), '~/.local/nekrs/lib/libomp.dylib' (no such file), 
  4. Apply the suggested fix as shown below (installing llvm and libomp using Homebrew, and setting environment variables).
  5. Run the example program again, resulting in a new error:
    dlopen(~/.local/nekrs/examples/turbPipePeriodic/.cache/nek5000/libturbPipe.so, 0x0006): symbol not found in flat namespace '_adj_logical_'

Expected behavior
The example program is expected to execute successfully.

Suggested Fix For First Problem (Does Not Fix Second Problem)
To resolve the initial OpenMP linkage issue:

  1. Install LLVM and libomp using Homebrew:
    brew install llvm libomp
  2. Add the following environment variables to $HOME/.bash_profile for Bash:
    export LDFLAGS="-L$HOME/opt/homebrew/opt/libomp/lib $LDFLAGS"
    export CPPFLAGS="-I$HOME/opt/homebrew/opt/libomp/include $CPPFLAGS"
    export DYLD_LIBRARY_PATH="$HOME/opt/homebrew/opt/libomp/lib:$DYLD_LIBRARY_PATH"
    Alternatively, if using Zsh, place these lines in ~/.zshrc:
    export LDFLAGS="-L/opt/homebrew/opt/libomp/lib $LDFLAGS"
    export CPPFLAGS="-I/opt/homebrew/opt/libomp/include $CPPFLAGS"
    export DYLD_LIBRARY_PATH="/opt/homebrew/opt/libomp/lib:$DYLD_LIBRARY_PATH"

Finally, run either one of the following depending on what you are using:

source $HOME/.bash_profile
source ~/.zshrc

Desktop:

  • OS: macOS
  • Version: 15.1 (Sequoia)
@stgeke
Copy link
Collaborator

stgeke commented Nov 18, 2024

What Fortran compiler are you using?

@stgeke
Copy link
Collaborator

stgeke commented Nov 18, 2024

Regardless of the issue reported here, LLVM + ARM is currently not functional:
#485

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants