LLNL / libROM

Model reduction library with an emphasis on large scale parallelism and linear subspace methods
https://www.librom.net
Other
201 stars 36 forks source link

CMake package config for installation #173

Closed JacobLotz closed 1 year ago

JacobLotz commented 1 year ago

Hi,

I have been working on a CMake package config for installation of this library as it was still unable to do a make install. Would you be interested in adding this to this library? Also, is this project open for contributions? In other words, can I create a branch to implement this CMake installation config myself?

Kind regards and have a good Christmas,

Jacob Lotz

chldkdtn commented 1 year ago

Hi Jacob, This is open source project, so anyone is welcome to contribute. Your contribution to CMake package config would be very helpful. Just curious, /scripts/compile.sh doe not work for you? What machine are you using? Mac or Linux?

JacobLotz commented 1 year ago

Great! Glad I can contribute! Indeed, /scripts/compile.sh does not work for me and neither for my colleague, but that is not strange as the script states that it only works for macOS or LLNL machines. I am in Ubuntu 22.04. I circumvented it in a way described in another issue.

However, now I would like to install libROM to a specific location after compiling it with for instance cmake .. -DCMAKE_INSTALL_PREFIX = 'path' and make install. In this way we can use the library reliably in our own code. So currently I think I have modified the cmake scripts in such a way it can be installed in such a manner.

JacobLotz commented 1 year ago

Hi @chldkdtn, Who can I ask for the correct access rights? I will probably need some kind of rights before I can push. Thank you!

Kind regards, Jacob

chldkdtn commented 1 year ago

Hi @chldkdtn, Who can I ask for the correct access rights? I will probably need some kind of rights before I can push. Thank you!

Kind regards, Jacob

Hi JacobLotz, I have added you with "write" permission for libROM GitHub repo. Thank you for your contribution!

chldkdtn commented 1 year ago

@youngkyu-kim is trying to compile libROM both in his linux and MacBook machine. @JacobLotz if you can help him in anyway, that would be wonderful as well.

JacobLotz commented 1 year ago

@youngkyu-kim you will have to adapt the script below for your own configuration.

Building steps:

  1. Get libROM (git clone etc)
  2. In libROM folder run: ./scripts/setup.sh
  3. Save your modification of the script below as for instance build.sh
  4. Run it with ./build.sh

Change in script below:

  1. Absolute path to mpicc. This might be the same as mine. I can find the path with the command which mpicc.
  2. Path to libROM folder path/to to the location where your libROM folder is

Does this work for you? You might need to install some libraries.

rm -r build
mkdir build
cd build

cmake .. \
-DCMAKE_CXX_COMPILER=/usr/bin/mpicxx \
-DUSE_MFEM=On \
-DHYPRE=/path/to/libROM/dependencies/hypre/src/lib/libHYPRE.a \
-DHYPRE_INCLUDES=/path/to/libROM/dependencies/hypre/src/hypre/include \
-DMETIS=/path/to/libROM/dependencies/parmetis-4.0.3/build/Linux-x86_64/libmetis/libmetis.a \
-DMFEM=/path/to/libROM/dependencies/mfem/libmfem.so  \
-DMFEM_INCLUDES=/path/to/libROM/dependencies/mfem    \

make -j 4

cd ..
youngkyu-kim commented 1 year ago

Hi Jacob,

Thank you for your kind steps. I will try it out. I have one question. Can libROM be compiled on an apple silicon mac?

Thanks, Youngkyu

From: Jacob Lotz @.> Date: Wednesday, January 11, 2023 5:23 PM To: LLNL/libROM @.> Cc: youngkyu-kim @.>, Mention @.> Subject: Re: [LLNL/libROM] CMake package config for installation (Issue #173)

@youngkyu-kimhttps://github.com/youngkyu-kim you will have to adapt the script below for your own configuration.

Building steps:

  1. Get libROM (git clone etc)
  2. In libROM folder run: ./scripts/setup.sh
  3. Save your modification of the script below as for instance build.sh
  4. Run it with ./build.sh

Change in script below:

  1. Absolute path to mpicc. This might be the same as mine. I can find the path with the command which mpicc.
  2. Path to libROM folder path/to to the location where your libROM folder is

Does this work for you? You might need to install some libraries.

rm -r build

mkdir build

cd build

cmake .. \

-DCMAKE_CXX_COMPILER=/usr/bin/mpicxx \

-DUSE_MFEM=On \

-DHYPRE=/path/to/libROM/dependencies/hypre/src/lib/libHYPRE.a \

-DHYPRE_INCLUDES=/path/to/libROM/dependencies/hypre/src/hypre/include \

-DMETIS=/path/to/libROM/dependencies/parmetis-4.0.3/build/Linux-x86_64/libmetis/libmetis.a \

-DMFEM=/path/to/libROM/dependencies/mfem/libmfem.so \

-DMFEM_INCLUDES=/path/to/libROM/dependencies/mfem \

make -j 4

cd ..

— Reply to this email directly, view it on GitHubhttps://github.com/LLNL/libROM/issues/173#issuecomment-1378388991, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AGBOXJJOLFGH253HTVXCATTWRZUXVANCNFSM6AAAAAATHZK5CQ. You are receiving this because you were mentioned.Message ID: @.***>

JacobLotz commented 1 year ago

@youngkyu-kim I would assume that the same procedure would work for the mac case. Unfortunately I am unable to try it myself as I do not own one. I am also very unfamiliar with builds on mac machines, but from what I have seen it seems to be very alike to building on linux.

JacobLotz commented 1 year ago

@youngkyu-kim Btw, the readme states that ./scripts/compile.sh should work for mac machines. Did you try that?

youngkyu-kim commented 1 year ago

I wasn’t able to compile libROM on my mac due to arm architecture. Instead, I will compile libROM on a linux machine.

Thanks, Youngkyu

Get Outlook for iOShttps://aka.ms/o0ukef


From: Jacob Lotz @.> Sent: Thursday, January 12, 2023 10:57:21 PM To: LLNL/libROM @.> Cc: youngkyu-kim @.>; Mention @.> Subject: Re: [LLNL/libROM] CMake package config for installation (Issue #173)

@youngkyu-kimhttps://github.com/youngkyu-kim Btw, the readme states that ./scripts/compile.sh should work for mac machines. Did you try that?

— Reply to this email directly, view it on GitHubhttps://github.com/LLNL/libROM/issues/173#issuecomment-1380393138, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AGBOXJKZB2DZ2GKIKJSEPUTWSAEUDANCNFSM6AAAAAATHZK5CQ. You are receiving this because you were mentioned.Message ID: @.***>

pranav-vempati commented 1 year ago

@youngkyu-kim If you are still interested, it is actually possible to compile libROM on ARM(e.g. Apple M1) architecture. I have personally had success compiling libROM with the following steps on my Apple M1 Macbook Air.

First, please follow https://www.courier.com/blog/tips-and-tricks-to-setup-your-apple-m1-for-development/ (until the part in Step 2 where the arch command returns i386).

Once a Rosetta Terminal is ready, it is possible to clone libROM's master branch and run ./scripts/compile.sh -m.

Please let me know if you still encounter any issues if you try these steps.