Jack Howarth via llvm-dev
2017-Jul-09 22:57 UTC
[llvm-dev] Uncovering non-determinism in LLVM - The Next Steps
On Sun, Jul 9, 2017 at 1:26 PM, Daniel Berlin <dberlin at dberlin.org> wrote:> > > On Sun, Jul 9, 2017 at 9:19 AM, Jack Howarth via llvm-dev > <llvm-dev at lists.llvm.org> wrote: >> >> FYI, I just successfully performed a 3-stage bootstrap with >> stage2/stage3 object file comparison on x86_64-apple-darwin16 for >> llvm/clang/clang-tools-extra/compiler-rt/libcxx/openmp/polly using our >> custom fink packaging scripts with the >> -DLLVM_REVERSE_ITERATION:BOOL=ON cmake option. There were no >> stage2/stage3 object file comparison failures or test suite >> regressions. >> I do have one question though. Is there any particular reason >> not to leave this option on for deployed release builds of the >> compiler? > > > Because it wouldn't accomplish anything. > The goal is to have a different iteration order than the default. > If you make this the default, that doesn't help, because now the default is > reverse >So perhaps I am doing this wrong? Should I have have the stage2 build without -DLLVM_REVERSE_ITERATION:BOOL=ON and stage3 with that option so that any variation in the object files generated for the llvm build is picked up?>> >> Other than possibly running into some extreme corner case of >> non-deterministism that the stage2/stage3 comparisons and test suites >> miss, is there any performance issues introduced in compile time by >> leaving -DLLVM_REVERSE_ITERATION:BOOL=ON defaulted on? > > >> Thanks in >> advance for any clarifications. >> Jack >> ps Is it still the case that none of the llvm.org build bots are doing >> a full 3-stage bootstrap with stage2/stage3 file comparison (ala FSF >> gcc)? >Really? From https://llvm.org/svn/llvm-project/zorg/trunk/buildbot/osuosl/master/config/builders.py, it seemed like those where commented out. no? # {'name' : "clang-3stage-ubuntu", # 'slavenames' : ["ps4-buildslave1a"], # 'builddir' : "clang-3stage-ubuntu", # 'factory': ClangLTOBuilder3Stage.get3StageClangLTOBuildFactory( # clean=True, # env=None, # build_gold=True, # cmake_cache_file="../llvm.src/tools/clang/cmake/caches/3-stage.cmake", # extra_cmake_options=[ # '-GNinja', # '-DLLVM_TARGETS_TO_BUILD=all', # '-DLLVM_BINUTILS_INCDIR=/opt/binutils/include'])},,> > Errr, last i looked, a ton were doing so?
Daniel Berlin via llvm-dev
2017-Jul-09 23:07 UTC
[llvm-dev] Uncovering non-determinism in LLVM - The Next Steps
On Sun, Jul 9, 2017 at 3:57 PM, Jack Howarth < howarth.mailing.lists at gmail.com> wrote:> On Sun, Jul 9, 2017 at 1:26 PM, Daniel Berlin <dberlin at dberlin.org> wrote: > > > > > > On Sun, Jul 9, 2017 at 9:19 AM, Jack Howarth via llvm-dev > > <llvm-dev at lists.llvm.org> wrote: > >> > >> FYI, I just successfully performed a 3-stage bootstrap with > >> stage2/stage3 object file comparison on x86_64-apple-darwin16 for > >> llvm/clang/clang-tools-extra/compiler-rt/libcxx/openmp/polly using our > >> custom fink packaging scripts with the > >> -DLLVM_REVERSE_ITERATION:BOOL=ON cmake option. There were no > >> stage2/stage3 object file comparison failures or test suite > >> regressions. > >> I do have one question though. Is there any particular reason > >> not to leave this option on for deployed release builds of the > >> compiler? > > > > > > Because it wouldn't accomplish anything. > > The goal is to have a different iteration order than the default. > > If you make this the default, that doesn't help, because now the default > is > > reverse > > > > So perhaps I am doing this wrong? Should I have have the stage2 build > without > -DLLVM_REVERSE_ITERATION:BOOL=ON and stage3 with that option > so that any variation in the object files generated for the llvm build > is picked up? > >This would be ideal, yes :) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170709/67121f80/attachment.html>
Jack Howarth via llvm-dev
2017-Jul-10 10:45 UTC
[llvm-dev] Uncovering non-determinism in LLVM - The Next Steps
On Sun, Jul 9, 2017 at 7:07 PM, Daniel Berlin <dberlin at dberlin.org> wrote:> > > On Sun, Jul 9, 2017 at 3:57 PM, Jack Howarth > <howarth.mailing.lists at gmail.com> wrote: >> >> On Sun, Jul 9, 2017 at 1:26 PM, Daniel Berlin <dberlin at dberlin.org> wrote: >> > >> > >> > On Sun, Jul 9, 2017 at 9:19 AM, Jack Howarth via llvm-dev >> > <llvm-dev at lists.llvm.org> wrote: >> >> >> >> FYI, I just successfully performed a 3-stage bootstrap with >> >> stage2/stage3 object file comparison on x86_64-apple-darwin16 for >> >> llvm/clang/clang-tools-extra/compiler-rt/libcxx/openmp/polly using our >> >> custom fink packaging scripts with the >> >> -DLLVM_REVERSE_ITERATION:BOOL=ON cmake option. There were no >> >> stage2/stage3 object file comparison failures or test suite >> >> regressions. >> >> I do have one question though. Is there any particular reason >> >> not to leave this option on for deployed release builds of the >> >> compiler? >> > >> > >> > Because it wouldn't accomplish anything. >> > The goal is to have a different iteration order than the default. >> > If you make this the default, that doesn't help, because now the default >> > is >> > reverse >> > >> >> So perhaps I am doing this wrong? Should I have have the stage2 build >> without >> -DLLVM_REVERSE_ITERATION:BOOL=ON and stage3 with that option >> so that any variation in the object files generated for the llvm build >> is picked up? >> > > This would be ideal, yes :) >This produces no regressions in the file comparison between stage2 and stage3 except for the expected... --- stage2/include/llvm/Config/abi-breaking.h 2017-07-09 20:42:54.000000000 -0400 +++ stage3/include/llvm/Config/abi-breaking.h 2017-07-09 21:27:57.000000000 -0400 @@ -16,7 +16,7 @@ #define LLVM_ENABLE_ABI_BREAKING_CHECKS 0 /* Define to enable reverse iteration of unordered llvm containers */ -#define LLVM_ENABLE_REVERSE_ITERATION 1 +#define LLVM_ENABLE_REVERSE_ITERATION 0 /* Allow selectively disabling link-time mismatch checking so that header-only ADT content from LLVM can be used without linking libSupport. */ when stage2 is passed -DLLVM_REVERSE_ITERATION:BOOL=ON and stage3 is not for a llvm/clang/clang-tools-extra/compiler-rt/libcxx/openmp/polly 3-stage bootstrap on x86_64-apple-darwin16. Jack