How to reuse previous compilations?
See original GitHub issueAs far as I can see, test dependencies only allow you to reuse compilations for multiple tests within a single run of reframe, not between runs, is that right? I can see why, but is there an easy way to reuse a binary built in a previous run? (assuming I have some way to know its actually the correct binary, which is not trivial.)
What I’ve come up with so far is:
- Define a build system which doesn’t do anything:
class NoBuild(BuildSystem):
def __init__(self):
super().__init__()
def emit_build_commands(self, environ):
return []
- Create a
CompileOnlyRegressionTest
with arun_before('compile')
-tagged method which
- checks for a binary in a
builds
tree. - if it exists, copy it to the
stage
directory then set thebuild_system
toNoBuild()
Just wondering if there’s an easier way!
Issue Analytics
- State:
- Created 3 years ago
- Comments:8 (6 by maintainers)
Top Results From Across the Web
How to reuse previous compilations? · Issue #1313 - GitHub
As far as I can see, test dependencies only allow you to reuse compilations for multiple tests within a single run of reframe, ......
Read more >Compilation and Reuse in Regular Expressions
An alternative is to use precompiled regular expressions. You can compile all of your expressions into a reusable DLL by using the ...
Read more >Is it okay to reuse your own old videos to make compilations?
It's fine as long as you transform it from the original content. Otherwise you might get demonetized for "reused content".
Read more >Reuse *compilation* window in another frame - Stack Overflow
It sounds like you want to be using the reusable-frames entry in your ALIST argument to display-buffer-reuse-window , rather than ...
Read more >retrying using normal preservation of the previous compilation ...
Incremental compilation encountered a problem with optimized reuse of the previous compilation results -- retrying using normal preservation of the previous ...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
@sjpb, I have played a bit with this sometime ago. I have shared this gist to show you more or less the concept.
The class that runs GROMACS is not shown. But it can be easily created from the GROMACS test
The downside of this gist method is that it relies on an external tool like EasyBuild. I also have played with Spack and I have a similar set of classes. The concept, though, does not require any tool. I have also a test that compiles GROMACS using the CMake build system, but I haven’t combined it with the GROMACS test. It should be simple, though.
Here is a possible implementation for this
CachedRegressionTest
(I haven’t tested it):Actually, there is this possibility internally, but not exposed. I think that’s a valid feature request and we could implement it easily now that the new configuration mechanism is in place. What we usually do for debugging such issues is to switch to the stage directory of the failing test and manually change the build script generated by ReFrame, then port back these changes to ReFrame.
Have you considered using EasyBuild or Spack from ReFrame to compile GROMACS? I know that @victorusu has experimented quite extensively with that.