Thanks Val. Looks like BiocNeighbors is all green again in the latest build, so 
that’s a relief.

One down, two to go - Windows CHECK failures seem to be the tokay2’s idea of 
Christmas presents.

-A

> On 20 Dec 2018, at 19:52, Obenchain, Valerie 
> <valerie.obench...@roswellpark.org> wrote:
> 
> The problem is that during the nightly builds, one of the Bioconductor 
> packages writes out a .R/Makevars.win in biocbuild's HOME during R CMD 
> build.
> 
> Yesterday I removed the .R/ directory before the builds started and, as 
> expected, today's NodeInfo on tokay2 and packages using the C++11 show 
> the correct flags.
> 
> If this .R/Makevars.win is not removed, it will (and did in the past) 
> pollute the next build cycle such that the NodeInfo and all packages 
> using C++11 would report/use the wrong flags.
> 
> I think I've narrowed down which package is doing this and will contact 
> the maintainer. We'll also implement some sanitation code in the BBS to 
> prevent this from happening again.
> 
> The reason HOME is writable is that many applications need to create 
> files (often hidden) such as lock files, cache, config files etc. If 
> they can't, they'll break and they will sometimes break in a subtle way 
> that is not immediately obvious.
> 
> One last follow up is to explain why the previous iteration of the 
> NodeInfo on the build report reported the incorrect C++11 flags. The 
> problem there was that previously we were only picking up CXX1XFLAGS 
> instead of the individual CXX11FLAGS, CXX14FLAGS etc.
> 
> Thanks for being persistent on this issue and for bringing the 
> conversation to bioc-devel.
> 
> Val
> 
> 
> 
> On 12/18/18 8:39 AM, Obenchain, Valerie wrote:
>> The devel build report hasn't posted yet but I took a look at the new
>> compiler flag output Herve implemented. The results show tokay2 is
>> indeed using
>> 
>> CXX11FLAGS: -O3 -march=native -mtune=native
>> 
>> This is inconsistent with what we have in the R/etc/<arch>/Makeconf for
>> both architectures on both tokay1 and tokay2. The Makeconf looks like this:
>> 
>> CXX11 = $(BINPREF)g++ $(M_ARCH)
>> CXX11FLAGS = -O2 -Wall $(DEBUGFLAG) -mtune=generic
>> CXX11PICFLAGS =
>> CXX11STD = -std=gnu++11
>> 
>> I don't know why the Makeconf is not being respected on tokay2. I can
>> confirm the inconsistency in an R session -
>> 
>> tokay2:
>> 
>> PS C:\Users\biocbuild\bbs-3.9-bioc\R> ./bin/R CMD config CXX11FLAGS
>> -O3 -march=native -mtune=native
>> 
>> tokay1:
>> 
>> PS C:\Users\biocbuild\bbs-3.8-bioc\R> ./bin/R CMD config CXX11FLAGS
>> -O2 -Wall -mtune=generic
>> 
>> I'll work with Herve to resolve this.
>> 
>> Val
>> 
>> 
>> 
>> On 12/17/18 5:05 PM, Aaron Lun wrote:
>>> Thanks Val. I don�t think it�s a BiocNeighbors thing, as it doesn�t try
>>> to customize the compilation flags or have its own Makevars. Moreover,
>>> the �-O3 -mtune=native -mtune=generic� flags seem to show up on all of
>>> my packages containing C++11 code. Some cursory checks of other packages
>>> suggest that the correct flags (�-O2 -mtune=generic�) are used for C++98
>>> code.
>>> 
>>> -A
>>> 
>>>> On 17 Dec 2018, at 17:47, Obenchain, Valerie 
>>>> <valerie.obench...@roswellpark.org> wrote:
>>>> 
>>>> Hi Aaron,
>>>> 
>>>> The only compilation flags that are different for tokay1 (release) and
>>>> tokay2 (devel) are C++14 flags. BiocNeighbors is not using C++14 but
>>>> C++11 so I think the changes we discussed previously actually don't
>>>> apply to your case.
>>>> 
>>>> All compilation flags we use are listed at the top of the build report,
>>>> e.g., for tokay2:
>>>> 
>>>> https://www.bioconductor.org/checkResults/devel/bioc-LATEST/tokay2-NodeInfo.html
>>> <https://www.bioconductor.org/checkResults/devel/bioc-LATEST/tokay2-NodeInfo.html
>>>  
>>> <https://www.bioconductor.org/checkResults/devel/bioc-LATEST/tokay2-NodeInfo.html>>
>>>> 
>>>> I can look into this further but right now I'm not sure where the '-O3
>>>> -march=native -mtune=native' is coming from in the check output for
>>>> BiocNeighbors. We don't use 'native' on the builders for build/check or
>>>> for creating binaries.
>>>> 
>>>> Herve might have more insight on this.
>>>> 
>>>> Val
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> On 12/15/18 10:56 PM, Aaron Lun wrote:
>>>>> Sometime between 6-18 November, BiocNeighbors� BioC-devel builds began 
>>>>> failing on Windows 64-bit, and have continued to fail since:
>>>>> 
>>>>> http://bioconductor.org/checkResults/devel/bioc-LATEST/BiocNeighbors/
>>> <http://bioconductor.org/checkResults/devel/bioc-LATEST/BiocNeighbors/ 
>>> <http://bioconductor.org/checkResults/devel/bioc-LATEST/BiocNeighbors/>>
>>> <http://bioconductor.org/checkResults/devel/bioc-LATEST/BiocNeighbors/ 
>>> <http://bioconductor.org/checkResults/devel/bioc-LATEST/BiocNeighbors/>
>>> <http://bioconductor.org/checkResults/devel/bioc-LATEST/BiocNeighbors/ 
>>> <http://bioconductor.org/checkResults/devel/bioc-LATEST/BiocNeighbors/>>>
>>>>> 
>>>>> The most interesting part is the nature of the failures. They are not 
>>>>> segmentation faults but rather �incorrect� output in the unit tests:
>>>>> 
>>>>> - BiocNeighbors uses the Annoy algorithm for approximate nearest neighbor 
>>>>> search, which is provided as a header-only C++ library in the RcppAnnoy 
>>>>> package.
>>>>> 
>>>>> - I have compiled the BiocNeighhbors C++ code with an �#include" for 
>>>>> these libraries to use the Annoy routines. For testing, I compared the 
>>>>> output of my C++ code to the output of the code in the RcppAnnoy package.
>>>>> 
>>>>> - It is these tests that are failing (i.e., the output does not match up) 
>>>>> during CHECK on Windows 64-bit only, despite the fact that the same 
>>>>> library is being �#include�d in both the BiocNeighbors and RcppAnnoy 
>>>>> sources!
>>>>> 
>>>>> What makes this particularly intriguing is that the differences between 
>>>>> BiocNeighbors and RcppAnnoy are very minor. Less than 1% of the neighbor 
>>>>> identities differ, and only for some of the scenarios, so it�s not an 
>>>>> obvious bug that would be changing the  output en masse. Now, the package 
>>>>> also uses/tests Annoy in
>>> BioC-release but builds fine on tokay1:
>>>>> 
>>>>> http://bioconductor.org/checkResults/release/bioc-LATEST/BiocNeighbors/
>>> <http://bioconductor.org/checkResults/release/bioc-LATEST/BiocNeighbors/ 
>>> <http://bioconductor.org/checkResults/release/bioc-LATEST/BiocNeighbors/>> 
>>> <http://bioconductor.org/checkResults/release/bioc-LATEST/BiocNeighbors/ 
>>> <http://bioconductor.org/checkResults/release/bioc-LATEST/BiocNeighbors/>
>>> <http://bioconductor.org/checkResults/release/bioc-LATEST/BiocNeighbors/ 
>>> <http://bioconductor.org/checkResults/release/bioc-LATEST/BiocNeighbors/>>>
>>>>> 
>>>>> The major difference between the Bioc-release/devel builds is the 
>>>>> compilation flags, which have changed from �-O2 -mtune=generic� to �-O3 
>>>>> -march=native -mtune=native� in tokay2. I am told (thanks Val) that the 
>>>>> timing of this change is consistent with the  start of the BiocNeighbors 
>>>>> build failures on tokay2. I would guess
>>> that RcppAnnoy is also compiled with �-O2 -mtune=generic� on the CRAN
>>> build systems, introducing differences in optimization levels between
>>> the BiocNeighbors and RcppAnnoy binaries. These could be responsible for
>>> the discrepancies in the search results.
>>>>> 
>>>>> I was able to reproduce this on my Unix cluster (gcc 6.5.0) where setting 
>>>>> �-march=native� with either �-O3� or �-O2� caused a difference in the 
>>>>> calculations. After much trial and error, I eventually narrowed this down 
>>>>> to the �-mfma� flag, which seems to  change the precision of 
>>>>> multiply-and-add operations and thus the
>>> search results. This occurs even when AVX support is turned off; I guess
>>> the compiler tries to be smart if it detects you are doing some kind of
>>> simultaneous multiply and addition, which is a pretty common thing to do
>>> when computing Euclidean distances.
>>>>> 
>>>>> In summary: can we not use �-march=native� on tokay2? (Val, I know we 
>>>>> discussed this, but whatever changes you made to the compilation flags 
>>>>> don�t seem to have propagated to the build machines.) As the case study 
>>>>> with BiocNeighbors shows, this leads to inconsistencies  between the CRAN 
>>>>> and BioC-devel binaries for the same code, which
>>> unnecessarily complicates downstream usage and unit tests. I also wonder
>>> how binaries specialized for tokay2�s architecture would behave on other
>>> CPUs with different instruction sets, if they would run at all.
>>>>> 
>>>>> Cheers,
>>>>> 
>>>>> Aaron
>>>>>        [[alternative HTML version deleted]]
>>>>> 
>>>>> _______________________________________________
>>>>> Bioc-devel@r-project.org <mailto:Bioc-devel@r-project.org> 
>>>>> <mailto:Bioc-devel@r-project.org <mailto:Bioc-devel@r-project.org>> 
>>>>> mailing list
>>>>> https://stat.ethz.ch/mailman/listinfo/bioc-devel 
>>>>> <https://stat.ethz.ch/mailman/listinfo/bioc-devel>
>>> <https://stat.ethz.ch/mailman/listinfo/bioc-devel 
>>> <https://stat.ethz.ch/mailman/listinfo/bioc-devel>>
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> This email message may contain legally privileged and/or confidential 
>>>> information.  If you are not the intended recipient(s), or the employee or 
>>>> agent responsible for the delivery of this message to the intended 
>>>> recipient(s), you are hereby notified that  any disclosure, copying, 
>>>> distribution, or use of this email message is
>>> prohibited.  If you have received this message in error, please notify
>>> the sender immediately by e-mail and delete this email message from your
>>> computer. Thank you.
>>> 
>>> 
>>>          [[alternative HTML version deleted]]
>>> 
>>> _______________________________________________
>>> Bioc-devel@r-project.org <mailto:Bioc-devel@r-project.org> mailing list
>>> https://stat.ethz.ch/mailman/listinfo/bioc-devel 
>>> <https://stat.ethz.ch/mailman/listinfo/bioc-devel>
>> 
>> 
>> 
>> This email message may contain legally privileged and/or confidential 
>> information.  If you are not the intended recipient(s), or the employee or 
>> agent responsible for the delivery of this message to the intended 
>> recipient(s), you are hereby notified that any disclosure, copying, 
>> distribution, or use of this email message is prohibited.  If you have 
>> received this message in error, please notify the sender immediately by 
>> e-mail and delete this email message from your computer. Thank you.
>> _______________________________________________
>> Bioc-devel@r-project.org <mailto:Bioc-devel@r-project.org> mailing list
>> https://stat.ethz.ch/mailman/listinfo/bioc-devel 
>> <https://stat.ethz.ch/mailman/listinfo/bioc-devel>
>> 
> 
> 
> 
> This email message may contain legally privileged and/or confidential 
> information.  If you are not the intended recipient(s), or the employee or 
> agent responsible for the delivery of this message to the intended 
> recipient(s), you are hereby notified that any disclosure, copying, 
> distribution, or use of this email message is prohibited.  If you have 
> received this message in error, please notify the sender immediately by 
> e-mail and delete this email message from your computer. Thank you.


        [[alternative HTML version deleted]]

_______________________________________________
Bioc-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/bioc-devel

Reply via email to