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 · 7 comments
Open

Issue Getting Example Program to Run with Apple M3 #606

cmaloney111 opened this issue Nov 18, 2024 · 7 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

@cmaloney111
Copy link
Author

Was using GFortran. Thanks for letting me know that LLVM + ARM is currently not functional. I'll see if I can do anything on my end to get it to work.

@cmaloney111
Copy link
Author

Quick update. Same issue occurring with the following system configuration:

Apple clang version 16.0.0 (clang-1600.0.26.4)
Target: arm64-apple-darwin24.1.0
open-mpi: 5.0.6
gcc: 14.2.0
cmake: 3.30.5

@stgeke stgeke changed the title Issue Getting Example Program to Run with Apple M3 Remove mtune compiler flag Nov 19, 2024
@stgeke stgeke changed the title Remove mtune compiler flag Issue Getting Example Program to Run with Apple M3 Nov 19, 2024
@stgeke
Copy link
Collaborator

stgeke commented Nov 19, 2024

I assume you're referring to the symbol issue. Which compilers are recognized by CMake for CXX, CC, and FC?

@cmaloney111
Copy link
Author

cmaloney111 commented Nov 19, 2024

Yes, I am referring to the missing symbol _adj_logical_ error

CC: AppleClang 16.0.0 located at /opt/homebrew/bin/mpicc

CXX: AppleClang 16.0.0 located at /opt/homebrew/bin/mpic++

FC: GNU Fortran 14.2.0 located at /opt/homebrew/bin/mpif77

@stgeke
Copy link
Collaborator

stgeke commented Nov 20, 2024 via email

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