JeffersonLab / qphix

QCD for Intel Xeon Phi and Xeon processors
http://jeffersonlab.github.io/qphix/
Other
13 stars 11 forks source link

Travis CI compilation time must be reduced #80

Closed martin-ueding closed 7 years ago

martin-ueding commented 7 years ago

The whole run time on Travis CI is limited to 50 minutes. In that time we need to do a lot of things:

We already have the problem that we cannot compile for the AVX2 and KNL architectures, this is bad enough. Now we have the issue that the added multi-shift test pushes us beyond those 50 minutes for AVX (scalar still works) and we are about to lose another architecture.

The QPhiX stuff should better be run every time, we do want to test this. The other stuff is not relevant here and there are no significant API breaking changes to expect. So we will have to do the following:

bjoo commented 7 years ago

Ubuntu should have a libxml2. I think it is called libxml2-dev. We could use that. Either we could give qdp++ no —with-libxml2 option or we can point it to /usr/local

From what I could read, packaging for Debian may not be very hard. The question is whether we could for example build it in travis, and then export the package. That way we could use the same travis.yml and travis_ci.sh to ensure we set up the same compiler and MPI.

I can do a little reading about this perhaps. Best, B

On Jun 28, 2017, at 11:02 AM, Martin Ueding notifications@github.com wrote:

The whole run time on Travis CI is limited to 50 minutes. In that time we need to do a lot of things:

Add Ubuntu packet source and update package meta data. On Debian, this always takes ages. Install GCC 6 and OpenMPI. This again takes quite a while. Download, configure and build libxml2. Compilation is usually fast thanks to ccache but Autotools wastes a lot of our precious build time. Either we use a package from the distribution of make our own package. Download, configure and build QMP. Need to package this. Download, configure and build QDP++. This takes even longer to configure because of the submodules. QPhiX: Configure outer level Compile codegen (cached with ccache) Generate code Generate specialization headers Compile kernel code (cached with ccache) Compile QPhiX test cases Actually run the tests The QPhiX stuff should better be run every time, we do want to test this. The other stuff is not relevant here and there are no significant API breaking changes to expect. So we will have to do the following:

Speed up libxml2 Provide a package of QMP for Ubuntu 14.04 with GCC 6 Provide a package of QDP++ for Ubuntu 14.04 with GCC 6 — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_JeffersonLab_qphix_issues_80&d=DwMCaQ&c=lz9TcOasaINaaC3U7FbMev2lsutwpI4--09aP8Lu18s&r=SC-qvz5njMoFH6cliT5XZQ&m=9hVsc5UKi8vJD1zsFdeLaodaoN5npJpxvCETb7kf2aQ&s=843ErahccO47ELyOWZYrqnztbK8SEwTWViCKu9jQYtE&e=, or mute the thread https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_AAj16PdEWc0kh5qmvWYMxB9mkH7JXLIfks5sIhadgaJpZM4OHrw3&d=DwMCaQ&c=lz9TcOasaINaaC3U7FbMev2lsutwpI4--09aP8Lu18s&r=SC-qvz5njMoFH6cliT5XZQ&m=9hVsc5UKi8vJD1zsFdeLaodaoN5npJpxvCETb7kf2aQ&s=gZmzv-i9_W8MU_ULFUTNT7A_L6sZ9UCr4On1mAnLYfI&e=.

martin-ueding commented 7 years ago

I did a fair share of Ubuntu packaging. We don't really need a source package, we just need a binary package. But even that is overkill, we don't need dependency management. We only need to make install QMP and QDP++ into a directory, put that into an archive and then make it available for download. This should not be hard, one just needs to be a bit careful with versions and paths.

I think I will set up an Ubuntu 14.04 machine that mimics the Travis CI environment. Then I can just execute those parts of the build script there and then do a tar archive of that. It is probably not that big of a deal if one gets the --prefix right. I am not sure whether any of the scripts bake in absolute paths.

martin-ueding commented 7 years ago

It turned out to be really easy: I have set up a virtual machine with Ubuntu 14.04 and created a user account called travis. Then in /home/travis/build/JeffersonLab I just ran the travis-ci.sh script (with a new needed changes). The local directory was then filled with compiled versions and header files for libxml2, QMP and QDP++. I have made an archive and uploaded that to my website. On Travis CI it will just download that archive, unpack it, and directly compile QPhiX.

This should save a bit of time because we don't have to go through all the Autotools stuff on each build for three projects and their submodules. Compilation was instant before thanks to ccache anyway. The bulk of time time is still taken up with the compilation of the kernels. And I think it makes sense to test them on every build because they are integral part of QPhiX. If this means that we can only compile Scalar and AVX on Travis CI, it should still be okay.

bjoo commented 7 years ago

That’s pretty cool! Best, B

On Jul 18, 2017, at 4:53 AM, Martin Ueding notifications@github.com wrote:

It turned out to be really easy: I have set up a virtual machine with Ubuntu 14.04 and created a user account called travis. Then in /home/travis/build/JeffersonLab I just ran the travis-ci.sh script (with a new needed changes). The local directory was then filled with compiled versions and header files for libxml2, QMP and QDP++. I have made an archive and uploaded that to my website. On Travis CI it will just download that archive, unpack it, and directly compile QPhiX.

This should save a bit of time because we don't have to go through all the Autotools stuff on each build for three projects and their submodules. Compilation was instant before thanks to ccache anyway. The bulk of time time is still taken up with the compilation of the kernels. And I think it makes sense to test them on every build because they are integral part of QPhiX. If this means that we can only compile Scalar and AVX on Travis CI, it should still be okay.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.


Dr Balint Joo High Performance Computational Scientist Jefferson Lab 12000 Jefferson Ave, Suite 3, MS 12B2, Room F217, Newport News, VA 23606, USA Tel: +1-757-269-5339, Fax: +1-757-269-5427 email: bjoo@jlab.org