plumed / plumed2

Development version of plumed 2
https://www.plumed.org
GNU Lesser General Public License v3.0
357 stars 284 forks source link

`asmjit` supported architectures #982

Closed casparvl closed 11 months ago

casparvl commented 11 months ago

I was building PLUMED 2.7.3 on an aarch64 architecture (neoverse_v1 and neoverse_n1, using the configure line:

./configure --prefix=/tmp/easybuild/software/PLUMED/2.7.3-foss-2021b  --build=aarch64-unknown-linux-gnu  --host=aarch64-unknown-linux-gnu --exec-prefix=/tmp/easybuild/software/PLUMED/2.7.3-foss-2021b --enable-gsl --enable-modules=all --enable-python --enable-boost_graph --enable-boost_serialization --enable-asmjit 

This build ran into an error

In file included from ./././codeholder.h:37,
                 from ././codeemitter.h:37,
                 from ./assembler.h:36,
                 from assembler.cpp:33:
././././func.h:210:3: error: #error "[asmjit] Couldn't determine the target's calling convention."
  210 | # error "[asmjit] Couldn't determine the target's calling convention."
      |   ^~~~~
make[6]: *** [../maketools/make.rules:16: assembler.o] Error 1
make[6]: Leaving directory '/tmp/easybuild/easybuild/build/PLUMED/2.7.3/foss-2021b/plumed-2.7.3/src/asmjit'
make[5]: *** [Makefile:423: ../asmjit] Error 2
make[5]: *** Waiting for unfinished jobs....

This made me wonder on which architectures asmjit is supported for PLUMED. I found this for conda which suggests that ppc64le and aarch64 are not supported by PLUMED's asmjit.

Is there a support matrix of PLUMED versions and supported architectures for the asmjit functionality? I could not find something like this in the official documentation, hoping someone here can tell me :)

GiovanniBussi commented 11 months ago

Hi,

there's nothing like an official table... But starting with plumed 2.8:

Currently, we test the same macros that are used in the asmjit version that is embedded in plumed. Basically, one of the macros listed here should be defined for asmjit to be enabled: https://github.com/plumed/plumed2/blob/ae54bc52a4727872a2b6c235646fc74dc7ef7928/configure.ac#L695-L699

Giovanni

On Mon, Oct 23, 2023 at 1:08 PM Caspar van Leeuwen @.***> wrote:

I was building PLUMED 2.7.3 on an aarch64 architecture (neoverse_v1 and neoverse_n1, using the configure line:

./configure --prefix=/tmp/easybuild/software/PLUMED/2.7.3-foss-2021b --build=aarch64-unknown-linux-gnu --host=aarch64-unknown-linux-gnu --exec-prefix=/tmp/easybuild/software/PLUMED/2.7.3-foss-2021b --enable-gsl --enable-modules=all --enable-python --enable-boost_graph --enable-boost_serialization --enable-asmjit

This build ran into an error

In file included from ./././codeholder.h:37, from ././codeemitter.h:37, from ./assembler.h:36, from assembler.cpp:33: ././././func.h:210:3: error: #error "[asmjit] Couldn't determine the target's calling convention." 210 | # error "[asmjit] Couldn't determine the target's calling convention." | ^~~~~ make[6]: [../maketools/make.rules:16: assembler.o] Error 1 make[6]: Leaving directory '/tmp/easybuild/easybuild/build/PLUMED/2.7.3/foss-2021b/plumed-2.7.3/src/asmjit' make[5]: [Makefile:423: ../asmjit] Error 2 make[5]: *** Waiting for unfinished jobs....

This made me wonder on which architectures asmjit is supported for PLUMED. I found this https://github.com/conda-forge/plumed-feedstock/blob/f6b2aae20ec705173e59b6706c9b7ffa7908cee7/recipe/meta.yaml#L65C1-L65C78 for conda which suggests that ppc64le and aarch64 are not supported by PLUMED's asmjit.

Is there a support matrix of PLUMED versions and supported architectures for the asmjit functionality? I could not find something like this in the official documentation, hoping someone here can tell me :)

— Reply to this email directly, view it on GitHub https://github.com/plumed/plumed2/issues/982, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABBNCXR5RXUIARLE56KAXP3YAZF2XAVCNFSM6AAAAAA6L4LDZ6VHI2DSMVQWIX3LMV43ASLTON2WKOZRHE2TMOJRGQ2DQOA . You are receiving this because you are subscribed to this thread.Message ID: @.***>

casparvl commented 11 months ago

Hey Giovanni,

Thanks for the quick response! Those macro's are pretty clear, indeed means it won't work for aarch64.

From what you're saying about the automatic enablement of asmjit from 2.8 onwards (just checking if I got that right): I guess that means

right?

GiovanniBussi commented 11 months ago

Yes this is correct

casparvl commented 11 months ago

Thanks again! I'll close this issue, all is clear :)