PRUNERS / FLiT

A project to quickly detect discrepancies in floating point computation across hardware, compilers, libraries and software.
Other
36 stars 6 forks source link

For very large projects, the Makefile takes a long time #310

Closed mikebentley15 closed 4 years ago

mikebentley15 commented 4 years ago

Bug Report

Describe the problem For a project with not too many compilations, but many many source files, the Makefile takes way too long to load and run. I would like something that runs faster.

Suggested Fix More recursion. Only have variable valeues and phony targets on the top level. One layer of recursion to define the phony targets and the next for the definition of each phony target. A second layer of recursion for each regular flit compilation. The bisect target and trouble target for the bisect Makefile would also be one level of recursion.

Alternative approaches: It may be beneficial to make a flat Makefile instead of a recursive one. It is unclear if it is the size of the dependency tree or the logic in the Makefile to generate all of the targets. I may want to try both approaches to see which one is more fruitful.

This alternative approach could be built from a copy of the flit_ninja.py script in the experimental folder.

ganeshutah commented 4 years ago

I'm sure you've seen papers on recursive Makefiles and recommended solutions http://sites.e-advies.nl/nonrecursive-make.html

On Fri, Dec 13, 2019 at 7:30 PM Michael Bentley notifications@github.com wrote:

Bug Report

Describe the problem For a project with not too many compilations, but many many source files, the Makefile takes way too long to load and run. I would like something that runs faster.

Suggested Fix More recursion. Only have variable valeues and phony targets on the top level. One layer of recursion to define the phony targets and the next for the definition of each phony target. A second layer of recursion for each regular flit compilation. The bisect target and trouble target for the bisect Makefile would also be one level of recursion.

Alternative approaches: It may be beneficial to make a flat Makefile instead of a recursive one. It is unclear if it is the size of the dependency tree or the logic in the Makefile to generate all of the targets. I may want to try both approaches to see which one is more fruitful.

This alternative approach could be built from a copy of the flit_ninja.py script in the experimental folder.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/PRUNERS/FLiT/issues/310?email_source=notifications&email_token=ABGKECT433EESYP7IJLNPGTQYRANFA5CNFSM4J2YHQN2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4IAO7VVA, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABGKECRDC5SENRVXA6ULY6LQYRANFANCNFSM4J2YHQNQ .