This is an archive of the discontinued LLVM Phabricator instance.

[buildbot] Extend libomp builder to test bot standalone and in-tree builds with and without clang bootstrapping.
Needs ReviewPublic

Authored by sfantao on Jan 12 2017, 6:27 PM.

Details

Summary

This patch extend the exiting libomp builder with a set of new option to control the creation of standalone and in-tree builds. With this patch the following configurations can be tested:

  • in-tree build of libomp
  • standalone build with host compiler
  • standalone build with latest clang

The new functionalities are activated for the slave ppc64le-nvidia-K40. The maximum number of jobs was increased so that the clang in-tree compile runs a little faster. For the other libomp slave, gribozavr4`, the behavior is unchanged except for a slightly different naming of the steps.

A new build category was created to distinguish libomp builds that depend on llvm and clang.

Diff Detail

Event Timeline

sfantao updated this revision to Diff 84210.Jan 12 2017, 6:27 PM
sfantao retitled this revision from to [buildbot] Extend libomp builder to test bot standalone and in-tree builds with and without clang bootstrapping..
sfantao updated this object.
Hahnfeld edited edge metadata.Jan 12 2017, 11:44 PM

I don't quite like Libiomp5Builder to know all that complex steps. Would it be possible to extend the existing logic for building Clang to include openmp? That way we could later enable the testing on more builders that already build clang on each commit - and finally get rid of rebuilding clang for a simple standalone build

lijiansong added inline comments.
zorg/buildbot/builders/Libiomp5Builder.py
74

how to offload with host ?

If I want to compile device-only device code, e.g. clang foo.mlu a.cpp -o bar,
I want to get the following action graph:
for foo.mlu:
input -> preprocess->compile->backend->assemble ,
Then i will get foo.o,
for a.cpp:
input -> preprocess->compile->backend->assemble
then I will get a.o
i want to link foo.o with a.o to get bar, a.cpp is the main, while foo.mlu has the device computation logic.

How can I manage it with offload?

Testing of openmp is currently very lacking, but I don't think this change will apply cleanly anymore...