Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Full Autotools build #415

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
Open

Full Autotools build #415

wants to merge 14 commits into from

Conversation

sunpho84
Copy link
Contributor

@sunpho84 sunpho84 commented Feb 4, 2018

  • GPU and SPI not yet enabled
  • A single long Makefile.am: this might be broken in many files if you prefer, though I can't see a practical reason for doing that

@sunpho84 sunpho84 closed this Feb 4, 2018
@sunpho84 sunpho84 reopened this Feb 4, 2018
@sunpho84 sunpho84 closed this Feb 4, 2018
@sunpho84 sunpho84 reopened this Feb 4, 2018
@sunpho84 sunpho84 closed this Feb 4, 2018
@sunpho84 sunpho84 reopened this Feb 4, 2018
@sunpho84 sunpho84 closed this Feb 4, 2018
@sunpho84 sunpho84 reopened this Feb 4, 2018
@sunpho84 sunpho84 closed this Feb 5, 2018
@sunpho84 sunpho84 reopened this Feb 5, 2018
@kostrzewa
Copy link
Member

Thanks, I'll take a look at this next week. I'm not sure I like the single list of all source files too much, but if that's the only way to achieve the desired goal, so be it.

@sunpho84
Copy link
Contributor Author

No no one can certainly split the Makefile.am across multiple files and use include directive to collect them in the main Makefile.am, if you prefer. I can do that quickly.
What I find cumbersome, is to split the build into (in)convenient sublibraries. Given that you always link all of them, there is little reason to have a libsolver, a libhmc, etc etc, I would keep just libtmlQCD as a single target. That's also beneficial to parallel compilation.
In any case, I can arrange for split sublibs if you wish.

@sunpho84
Copy link
Contributor Author

Ok now the Makefile.am is split across different files, included in subdirs, there is still a bit of a mess in the master Makefile.am and one would probably split the main folder sourcefiles list into a dedicated file (or put the files in an appropriate directory?)

@urbach
Copy link
Contributor

urbach commented Mar 14, 2018

did I tell already how much I love automake!? ;)

anyhow, I guess I have to type automake in the main directory, correct?

Here
automake-warnings.txt the list of warnings and errors... anyone?

@urbach
Copy link
Contributor

urbach commented Mar 14, 2018

btw: I have automake (GNU automake) 1.15

@urbach
Copy link
Contributor

urbach commented Mar 14, 2018

even if I invoke automake --add-missing I do not get a configure script that would be working

@kostrzewa
Copy link
Member

Works for me.

$ automake --add-missing
$ autoreconf

@kostrzewa
Copy link
Member

include files are not installed by make install, the rest seems to work as expected

@kostrzewa
Copy link
Member

of course, the external libraries should be taken care of

@urbach
Copy link
Contributor

urbach commented Mar 14, 2018 via email

@kostrzewa
Copy link
Member

That's why one usually has an autogen.sh script.

It worked with a single invocation of automake --add-missing for me though (in a fresh source directory). Should be tested on Marconi and Jureca, just in case problems arise there.

@urbach
Copy link
Contributor

urbach commented Mar 14, 2018 via email

@kostrzewa
Copy link
Member

I think the full set of configure options needs to be mapped out. Ideally one would do this via travis...

@kostrzewa
Copy link
Member

SSE2 / SSE3 seem to work, but produce the kinds of errors upon compilation that we got a while ago from the single precision stuff

@urbach
Copy link
Contributor

urbach commented Mar 14, 2018

for me it does not compile with SSE2

@urbach
Copy link
Contributor

urbach commented Mar 14, 2018

but this might not be due to automake

@kostrzewa
Copy link
Member

for me it does not compile with SSE2

no, it doesn't compile, but the flags seem to be defined correctly

the errors come from the single precision hopping matrix...

@kostrzewa
Copy link
Member

and D_psi, respectively

@sunpho84
Copy link
Contributor Author

My autgen.sh -like script (for nissa) goes like this

#!/bin/sh

rm -fr \
    aclocal.m4 \
    autom4te.cache \
    $(find . -name "Makefile.in") \
    config/{compile,config.guess,config.sub,depcomp,install-sh,missing,ylwrap} \
    configure

aclocal
autoreconf --verbose --install --force

@urbach
Copy link
Contributor

urbach commented Mar 14, 2018 via email

@sunpho84
Copy link
Contributor Author

For what concern flags, I've modified the ALIGN stuff, adding or removing the description (if I believe correctly), but it would be better if you could check it...

@kostrzewa
Copy link
Member

The README should probably be adjusted to contain

aclocal
autoreconf --verbose --install --force

as an instruction for generating configure.

@sunpho84
Copy link
Contributor Author

Yes, but the autogen.sh or boostrap.shwould be advisable

@kostrzewa
Copy link
Member

Agreed.

@urbach
Copy link
Contributor

urbach commented Mar 14, 2018 via email

@martin-ueding
Copy link
Contributor

The wikipedia article about GNU Autotools has a nice flowchart, this really helped me when I tried to compile the USQCD code.

I have found that aclocal && autoreconf -fiv is indeed sufficient. Just calling autoconf (even with flags like --install or --add-missing) does not do everything that is needed. In principle one does not need to call autoconf manually. automake should not be called manually, the configure script will do that.

For USQCD projects the following commands do all I need:

aclocal
autoreconf -fiv
./configure
make
make install

@sunpho84
Copy link
Contributor Author

The wikipedia article about GNU Autotools has a nice flowchart, this really helped me when I tried to compile the USQCD code.

If this is nice, I don't want to hear what's the feeling of setting up a project with cmake

autoreconf -fiv

same same

So what about the gpu side?

@urbach
Copy link
Contributor

urbach commented Mar 15, 2018

there are very good reasons that I never used cmake or automake for tmLQCD... ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants