EPMacro does not compile when building E+ from sources for ARMv8 architecture (RPi-4B) inside Docker #8876
Replies: 3 comments 1 reply
-
About EPMacro compilation: We are not able to compile EPMacro anymore. I believe the Intel Fortran compiler can still do it, but we do not compiler with Intel. I don't recall exactly what the problem was, maybe corner-case Hollerith constant support? Anyway, it doesn't matter much, the point is that we have been packaging up precompiled EPMacro binaries for quite some time. Now to your problem, the fact that you aren't getting ExpandObjects or EPMacro makes me think you have BUILD_FORTRAN turned off. When you run CMake, pass some additional arguments:
What? While I'll concede that you may want to run ExpandObjects on some HVAC Template stuff, I cannot imagine you actually need EPMacro. ExpandObjects should build on your platform once you turn on those CMake variables. EPMacro won't run since it is the wrong platform. Probably just having the dummy EPMacro binary sitting there will suffice. |
Beta Was this translation helpful? Give feedback.
-
Thank you very much for your explanatory answer. I ran the CMakeFiles.txt by setting the options to ON as you suggested (I used sed):
Now, the ExpandObjects and EPMacro are compiled in the destiny folder. However, when I run the PyFMI instruction, I still get the error with EPMacro:
The EPMacro gives the "Exec format error" which I think is related to the problem of platform compatibility. Regarding the error of EnergyPlus, I don't think there is a problem with the IDF/FMU, since exactly the same version of the IDF/FMU runs in an AMD machine (with precisely the exact PyFMI instructions). For some reason, the PyFMI calls EPMacro and ExpandObjects when initializing the simulation, even though the IDF does not contain measures or HVAC systems. So, do you think there is something we can do to work around this error? There is a way to compile EPMacro for ARMv8? Should I try to deactivate the EPMacro call from PyFMI? Better to try with energysim instead of PyFMI? Better to change to AMD and not bother with the Raspberry Pi? It seems to me that E+ works for ARMv8 architecture (I launched a command line simulation and worked fine). Maybe the problem is just the EPMacro, the ExpandObjects seems to compile good (at leas I do not receive the Exec format error). Thank you very much again for your help, |
Beta Was this translation helpful? Give feedback.
-
Let me say it again: we don't compile EPMacro. There is a difference between what we do for EPMacro and ExpandObjects. ExpandObjects is compiled from source into a binary on the platform that it is built. EPMacro is precompiled, assuming the platform ahead of time. So this all makes sense. You should definitely just disable the EPMacro call from PyFMI and it should work fine. |
Beta Was this translation helpful? Give feedback.
-
Hello,
I want to compile E+ 9.x.0 for ARMv8 architecture (RPI-4B) using Docker. However, when using:
the compiler does not create EPMacro and ExpandObjects in the destiny directory (/usr/local in my case).
I found ExpandObjects CMakeLists.txt inside /EnergyPlus-9.x.0/src/ExpandObjects. So, by running
the problem was solved (I think; I did not test yet but at least the sequence of commands creates the ExpandObjects file in the destiny directory). However, I can not find the EPMacro CMakeLists.txt inside the /EnergyPlus-9.x.0 directory to compile it. The only thing I found was /EnergyPlus-9.x.0/bin/EPMacro, which contains three directories: Linux, Windows, Mac. Each of the directories contains an EPMacro executable. However, I believe these EPMacro files are precompiled, and copying them to the destiny directory will not work since they are precompiled for different architectures, right? (I tried to copy them, it didn't work).
I read in the build E+ page that it is possible to use ccmake to choose the characteristics you want to E+ to compile. However, since I'm using a Dockerfile to create an image, I can not use interactive selection as suggested on the wiki page. And, honestly, I do not know if that will solve my problem. At this point, I do not know what to do.
So, I want to know if it is possible to compile EPMacro from the sources for ARMv8 architecture. I will highly appreciate some light on this subject and thank you very much in advance.
Pdt: I'm doing the process because I want to use E+ with PyFMI, which requires EPMacro and ExpandObjects to function properly. Thank you again!
Beta Was this translation helpful? Give feedback.
All reactions