Control: tags -1 + patch Hi Andreas, Le mercredi 29 novembre 2023 à 10:06 +0100, Andreas Tille a écrit : > Control: tags -1 help > > Am Fri, Jul 14, 2023 at 01:40:22AM +0200 schrieb Sébastien Villemot: > > Le lundi 10 juillet 2023 à 22:01 +0200, Andreas Tille a écrit : > > > I've checked my responsibility for the dependencies and stumbled about > > > emmax > > > > > > > > > emmax.c:10:10: fatal error: clapack.h: No such file or directory > > > 10 | #include <clapack.h> > > > | ^~~~~~~~~~~ > > > compilation terminated. > > > ... > > > > clapack.h is apparently an early attempt at providing a C interface to > > some LAPACK functions (which are in Fortran). It indeed looks ATLAS- > > specific. > > > > The modern solution for that problem is to use LAPACKE (note the final > > “E”), which is provided by liblapacke-dev. It is a standardized and > > maintained C interface to all LAPACK routines. > > > > I guess it should be feasible to adapt emmax to make it work with > > LAPACKE. > > I tried to do so in Salsa. Unfortunately LAPACKE is not a drop in > replacement and I'm lacking the necessary knowledge about all these > LAPACK implementations. For instance I have no idea how to fix the > error you can see in Salsa CI[1] which has > > ... > emmax.c: In function 'dsyevd': > emmax.c:1633:17: error: conflicting types for 'dsyevd_'; have 'void(char *, char *, int *, double *, int *, double *, double *, int *, int *, int *, int *)' > 1633 | extern void dsyevd_ (char *JOBZp, char *UPLOp, int *Np, > | ^~~~~~~ > In file included from /usr/include/lapack.h:11, > from emmax.c:10: > /usr/include/lapack.h:17096:6: note: previous declaration of 'dsyevd_' with type 'void(const char *, const char *, const int32_t *, double *, const int32_t *, double *, double *, const int32_t *, int32_t *, const int32_t *, int32_t *, size_t, size_t)' {aka 'void(const char *, const char *, const int *, double *, const int *, double *, double *, const int *, int *, const int *, int *, long unsigned int, long unsigned int)'} > 17096 | void LAPACK_dsyevd_base( > | ^~~~~~~~~~~~~~~~~~ > emmax.c: In function 'dsyevr': > emmax.c:1652:17: error: conflicting types for 'dsyevr_'; have 'void(char *, char *, char *, int *, double *, int *, double *, double *, int *, int *, double *, int *, double *, double *, int *, int *, double *, int *, int *, int *, int *)' > 1652 | extern void dsyevr_ (char *JOBZp, char *RANGEp, char *UPLOp, int *Np, > | ^~~~~~~ > > Looking at the last line of this snippet (line 901 in the linked CI > log[1]) the parameter char *RANGEp is not part of the declaration of > LAPACK_dsyevd_base given in line 17096 of /usr/include/lapack.h. > > I admit this is hard to solve for me and I would love if someone > with some knowledge of LAPACK could provide some patch. A similar > issue exists for dgetrf. > > Any help would be appreciated. I opened a merge request that completes the migration away from ATLAS: https://salsa.debian.org/med-team/emmax/-/merge_requests/1 Best, -- ⢀⣴⠾⠻⢶⣦⠀ Sébastien Villemot ⣾⠁⢠⠒⠀⣿⡁ Debian Developer ⢿⡄⠘⠷⠚⠋⠀ https://sebastien.villemot.name ⠈⠳⣄⠀⠀⠀⠀ https://www.debian.org
Attachment:
signature.asc
Description: This is a digitally signed message part