[Debian-med-packaging] Bug#813438: Iqtree accepted in Debian

Bui Quang Minh minh.bui at univie.ac.at
Thu Feb 4 10:44:45 UTC 2016


Hi Andreas,

> On Feb 2, 2016, at 9:37 AM, Andreas Tille <tille at debian.org> wrote:
> 
> Hi,
> 
> since you helped a lot getting iqtree into Debian I now have the good
> news that it was accepted yesterday in Debian[1] (finally - I would have
> loved if this would have taken less time).  For the moment the package
> resides in Debian unstable.  Once it might have migrated to Debian
> testing (which is the case if it stays in unstable for five days without
> any known release critical bug) I will also create a backport for the
> current stable release Jessie.
> 

thanks for the update!

> Unfortunately the package received three bug reports over night which is
> basically connected to gcc command line options and one name change.  I
> have created patches for all three bugs which you can find in the
> packaging Git[2].  Please inspect the patches after reading below.  Each
> patch has a header pointing with description and a link to the according
> bug report if you need some more verbose explanation.
> 
> Since I noticed that meanwhile new versions are released and I intend to
> upload the latest version with bug fixes.  So I downloaded 1.3.13

yes this version is desirable as it fixed 3 bugs compared with 1.3.11

> and
> tried to build this.  When trying to do so I was running into
> 
> 
> ...
> /usr/bin/c++   -DIQ_TREE -D_USE_PTHREADS -D__SSE3 -I/build/iqtree-1.3.13+dfsg -I/build/iqtree-1.3.13+dfsg/obj-x86_64-linux-gnu -I/usr/include/eigen3  -g -O2 -fstack-protector-strong -Wformat -Werror=format-    security -Wdate-time -D_FORTIFY_SOURCE=2  -fopenmp    -D__AVX  -o CMakeFiles/avxkernel.dir/phylotreeavx.cpp.o -c /build/iqtree-1.3.13+dfsg/phylotreeavx.cpp
> In file included from /build/iqtree-1.3.13+dfsg/phylotreeavx.cpp:9:0:
> /build/iqtree-1.3.13+dfsg/phylokernel.h:19:2: error: #error "You must compile with SSE3 enabled!"
> #error "You must compile with SSE3 enabled!"
>  ^
> /build/iqtree-1.3.13+dfsg/phylotreeavx.cpp:15:2: error: #error "You must compile this file with AVX enabled!"
> #error "You must compile this file with AVX enabled!"
>  ^
> In file included from /build/iqtree-1.3.13+dfsg/phylotreeavx.cpp:11:0:
> /build/iqtree-1.3.13+dfsg/phylokernelmixrate.h: In instantiation of 'double PhyloTree::computeMixrateLikelihoodBranchEigenSIMD(PhyloNeighbor*, PhyloNode*) [with VectorClass = Vec4d; int VCSIZE = 4; int nstates = 4]':
> /build/iqtree-1.3.13+dfsg/phylotreeavx.cpp:38:36:   required from here
> /build/iqtree-1.3.13+dfsg/phylokernelmixrate.h:802:27: error: no matching function for call to 'horizontal_add(Vec4d [4])'
>    lh_ptn = horizontal_add(vc_ptn) + VectorClass().load_a(&ptn_invar[ptn]);
>                           ^
> ...
> 
> /build/iqtree-1.3.13+dfsg/phylokernelmixrate.h:802:27: error: invalid conversion from 'Vec4d*' to 'int' [-fpermissive]
> In file included from /build/iqtree-1.3.13+dfsg/vectorclass/vectorclass.h:41:0,
>                 from /build/iqtree-1.3.13+dfsg/phylokernel.h:12,
>                 from /build/iqtree-1.3.13+dfsg/phylotreeavx.cpp:9:
> /build/iqtree-1.3.13+dfsg/vectorclass/vectori128.h:1085:5: note:   initializing argument 1 of 'Vec8s::Vec8s(int)'
>     Vec8s(int i) {^M
>     ^
> 
> and a lot of similar errors.  From the preprocessor error message above
> it seems obvious that dropping sse3 and avx options is not intended and
> will break the build.  

that’s right, I have a C++ template that implements the core computational kernel of IQ-TREE. This C++ class is compiled twice, one under SSE3 and another under AVX. Then at run time, IQ-TREE will detect the CPU feature. Depending on the availability of AVX or not, the appropriate kernel will be used. In fact IQ-TREE also has a non-SSE kernel, that can be used. However, I thought that >95% of the computers nowadays support SSE anyway, thus I did not include this switch.

> Does this mean that you intend to support intel
> processors exclusively?  

no, I indeed want to support any CPU. I don’t have much knowledge in this deep aspect. Thus, can you advice us how that can be done?

> This can be specified in the package metadata
> and will prevent other architectures from trying to build the package.
> However, in the long run this might not be a good idea since
> architectures like arm64, ppc64 or others might play some rule in the
> future.  If you confirm for the moment my Intel-only assumption I will
> rewert the patches removing sse3 and avx and will close the bugs with
> the Intel-only restriction but please keep the hint in mind to rethink
> this decision from time to time.
> 

ok

> In any case I will keep the patch that adds the string "32" to the
> executable name[3] which IMHO makes no sense on Linux.

I wanted to make distinction between 64-bit and 32-bit binary, so that users can have both executables actually. But it’s fine if you think that is not necessary for Debian

> 
> Finally I would like to let you know that we now have packaged ncl
> library.  I remember that we discussed this in the past but as far as my
> weak mind kept it you intended to drop the differences to upstream
> ncl[4].  When doing a quick diff I can see some differences in the code
> but I have no idea in how far this is relevant and whether you possibly
> could forward your patches to ncl upstream to stay in sync with current
> development.

my local NCL copy was ~ 10 years old, and that’s was enough for my need. I modified it a bit but can’t remember anymore. I saw recently that they changed a lot. Therefore, right now I don’t have a plan to include the latest NCL version. 

Cheers, Minh

> 
> Kind regards
> 
>        Andreas.
> 
> [1] https://tracker.debian.org/pkg/iqtree
> [2] https://anonscm.debian.org/cgit/debian-med/iqtree.git/tree/debian/patches
> [3] https://anonscm.debian.org/cgit/debian-med/iqtree.git/tree/debian/patches/32bit_name.patch
> [4] http://sourceforge.net/projects/ncl/
> 
> -- 
> http://fam-tille.de

--
Bui Quang Minh
Center for Integrative Bioinformatics Vienna (CIBIV)
Campus Vienna Biocenter 5, VBC5, Ebene 1
A-1030 Vienna, Austria
Phone: ++43 1 4277 74326
Email: minh.bui (AT) univie.ac.at



More information about the Debian-med-packaging mailing list