diff options
Diffstat (limited to 'sci-libs/magma')
-rw-r--r-- | sci-libs/magma/ChangeLog | 21 | ||||
-rw-r--r-- | sci-libs/magma/Manifest | 1 | ||||
-rw-r--r-- | sci-libs/magma/files/magma-1.2.1-duplicate-symbols.patch | 612 | ||||
-rw-r--r-- | sci-libs/magma/files/magma-1.2.1-no-cuda-driver.patch | 38 | ||||
-rw-r--r-- | sci-libs/magma/magma-1.2.1.ebuild | 111 | ||||
-rw-r--r-- | sci-libs/magma/metadata.xml | 15 |
6 files changed, 798 insertions, 0 deletions
diff --git a/sci-libs/magma/ChangeLog b/sci-libs/magma/ChangeLog new file mode 100644 index 000000000..460bde832 --- /dev/null +++ b/sci-libs/magma/ChangeLog @@ -0,0 +1,21 @@ +# ChangeLog for sci-libs/magma +# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2 +# $Header: $ + +*magma-1.2.1 (03 Jul 2012) + + 03 Jul 2012; Sébastien Fabbro <bicatali@gentoo.org> + +files/magma-1.2.1-duplicate-symbols.patch, + +files/magma-1.2.1-no-cuda-driver.patch, +magma-1.2.1.ebuild, + -files/magma-1.2.0-cblas-dotc.patch, + -files/magma-1.2.0-duplicate-symbols.patch, -magma-1.2.0.ebuild: + sci-libs/magma: Version bump. Updated patches + +*magma-1.2.0 (25 Jun 2012) + + 25 Jun 2012; Sébastien Fabbro <bicatali@gentoo.org> + +files/magma-1.2.0-cblas-dotc.patch, + +files/magma-1.2.0-duplicate-symbols.patch, +magma-1.2.0.ebuild, + +metadata.xml: + sci-libs/magma: Initial import + diff --git a/sci-libs/magma/Manifest b/sci-libs/magma/Manifest new file mode 100644 index 000000000..9a312f75d --- /dev/null +++ b/sci-libs/magma/Manifest @@ -0,0 +1 @@ +DIST magma-1.2.1.tar.gz 2978267 RMD160 914c1cb21dee07cceb0099ec4c77e6affc6c2e3b SHA1 f843ac1364d1964e6cfd2ee69c57aff7727814c5 SHA256 a1036a9d523c2ec974c743e21a33a1a6aad1a61c8d4cb686ea08249749a0c73d SHA512 1c2045031a3d2df218e0717628ff0c0e1a074020b35b0146ee4c915e0d30ea9fa0b9a198014503a4f35f7ab15dd44d58e79339df17624c52f164b99bd86c6aac WHIRLPOOL 1efebb520cbae1ccf3a3435663d6e304c48948c05590bd866e4a82089bbf4147d37d730cea899471df8a24ded7a804bb86cc237cafbfcc93783578fc33caf975 diff --git a/sci-libs/magma/files/magma-1.2.1-duplicate-symbols.patch b/sci-libs/magma/files/magma-1.2.1-duplicate-symbols.patch new file mode 100644 index 000000000..8fd2d0dde --- /dev/null +++ b/sci-libs/magma/files/magma-1.2.1-duplicate-symbols.patch @@ -0,0 +1,612 @@ +diff -Nur magma-1.2.1.orig/src/cheevx_gpu.cpp magma-1.2.1/src/cheevx_gpu.cpp +--- magma-1.2.1.orig/src/cheevx_gpu.cpp 2012-07-03 11:59:28.923659921 -0700 ++++ magma-1.2.1/src/cheevx_gpu.cpp 2012-07-03 11:59:45.428746349 -0700 +@@ -12,27 +12,6 @@ + */ + #include "common_magma.h" + +-/* These interfaces are used for TAU profiling */ +-extern"C"{ +- void Mylapackf77_cstein(magma_int_t *n, float *d, float *e, magma_int_t *m, +- float *w, magma_int_t *iblock, magma_int_t *isplit, +- cuFloatComplex *z, magma_int_t *ldz, float *work, +- magma_int_t *iwork, magma_int_t *ifail, magma_int_t *info) +- { +- lapackf77_cstein(n, d, e, m, w, iblock, isplit, z, ldz, work, iwork, ifail, info); +- } +- +- void Mylapackf77_sstebz(char *range, char *order, magma_int_t *n, float *vl, +- float *vu, magma_int_t *il, magma_int_t *iu, float *abstol, +- float *d, float *e, magma_int_t *m, magma_int_t *nsplit, +- float *w, magma_int_t *iblock, magma_int_t *isplit, +- float *work, magma_int_t *iwork, magma_int_t *info) +- { +- lapackf77_sstebz(range, order, n, vl, vu, il, iu, abstol, +- d, e, m, nsplit, w, iblock, isplit, work, iwork,info); +- } +-} +- + extern "C" magma_int_t + magma_cheevx_gpu(char jobz, char range, char uplo, magma_int_t n, + cuFloatComplex *da, magma_int_t ldda, float vl, float vu, +@@ -404,12 +383,12 @@ + indisp = indibl + n; + indiwk = indisp + n; + +- Mylapackf77_sstebz(range_, order, &n, &vl, &vu, &il, &iu, &abstol, &rwork[indd], &rwork[inde], m, ++ lapackf77_sstebz(range_, order, &n, &vl, &vu, &il, &iu, &abstol, &rwork[indd], &rwork[inde], m, + &nsplit, &w[1], &iwork[indibl], &iwork[indisp], &rwork[indrwk], &iwork[indiwk], info); + + if (wantz) { + +- Mylapackf77_cstein(&n, &rwork[indd], &rwork[inde], m, &w[1], &iwork[indibl], &iwork[indisp], ++ lapackf77_cstein(&n, &rwork[indd], &rwork[inde], m, &w[1], &iwork[indibl], &iwork[indisp], + wz, &ldwz, &rwork[indrwk], &iwork[indiwk], &ifail[1], info); + + magma_csetmatrix( n, *m, wz, ldwz, dz, lddz ); +diff -Nur magma-1.2.1.orig/src/chegvd.cpp magma-1.2.1/src/chegvd.cpp +--- magma-1.2.1.orig/src/chegvd.cpp 2012-07-03 11:59:28.932659966 -0700 ++++ magma-1.2.1/src/chegvd.cpp 2012-07-03 11:59:45.428746349 -0700 +@@ -13,26 +13,6 @@ + */ + #include "common_magma.h" + +-/* This ctrmm interface is used for TAU profiling */ +-void Mymagma_ctrmm(char side, char uplo, char trans, char unit, +- magma_int_t n, magma_int_t m, +- cuFloatComplex alpha, cuFloatComplex *db, magma_int_t lddb, +- cuFloatComplex *dz, magma_int_t lddz) +-{ +- magma_ctrmm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- +-/* This ctrsm interface is used for TAU profiling */ +-void Mymagma_ctrsm(char side, char uplo, char trans, char unit, +- magma_int_t n, magma_int_t m, +- cuFloatComplex alpha, cuFloatComplex *db, magma_int_t lddb, +- cuFloatComplex *dz, magma_int_t lddz) +-{ +- magma_ctrsm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- + extern "C" magma_int_t + magma_chegvd(magma_int_t itype, char jobz, char uplo, magma_int_t n, + cuFloatComplex *a, magma_int_t lda, cuFloatComplex *b, magma_int_t ldb, +@@ -324,7 +304,7 @@ + *(unsigned char *)trans = MagmaNoTrans; + } + +- Mymagma_ctrsm(MagmaLeft, uplo_[0], *trans, MagmaNonUnit, ++ magma_ctrsm(MagmaLeft, uplo_[0], *trans, MagmaNonUnit, + n, n, c_one, db, lddb, da, ldda); + + } else if (itype == 3) +@@ -337,7 +317,7 @@ + *(unsigned char *)trans = MagmaConjTrans; + } + +- Mymagma_ctrmm(MagmaLeft, uplo_[0], *trans, MagmaNonUnit, ++ magma_ctrmm(MagmaLeft, uplo_[0], *trans, MagmaNonUnit, + n, n, c_one, db, lddb, da, ldda); + } + +diff -Nur magma-1.2.1.orig/src/chegvdx.cpp magma-1.2.1/src/chegvdx.cpp +--- magma-1.2.1.orig/src/chegvdx.cpp 2012-07-03 11:59:28.921659909 -0700 ++++ magma-1.2.1/src/chegvdx.cpp 2012-07-03 11:59:45.428746349 -0700 +@@ -12,22 +12,6 @@ + */ + #include "common_magma.h" + +-void Mymagma_ctrmm(char side, char uplo, char trans, char unit, magma_int_t n, magma_int_t m, +- cuFloatComplex alpha, cuFloatComplex *db, magma_int_t lddb, +- cuFloatComplex *dz, magma_int_t lddz) +-{ +- magma_ctrmm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- +-void Mymagma_ctrsm(char side, char uplo, char trans, char unit, magma_int_t n, magma_int_t m, +- cuFloatComplex alpha, cuFloatComplex *db, magma_int_t lddb, +- cuFloatComplex *dz, magma_int_t lddz) +-{ +- magma_ctrsm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- + extern "C" magma_int_t + magma_chegvdx(magma_int_t itype, char jobz, char range, char uplo, magma_int_t n, + cuFloatComplex *a, magma_int_t lda, cuFloatComplex *b, magma_int_t ldb, +@@ -363,7 +347,7 @@ + *(unsigned char *)trans = MagmaNoTrans; + } + +- Mymagma_ctrsm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, da, ldda); ++ magma_ctrsm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, da, ldda); + + } else if (itype == 3) { + +@@ -375,7 +359,7 @@ + *(unsigned char *)trans = MagmaConjTrans; + } + +- Mymagma_ctrmm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, da, ldda); ++ magma_ctrmm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, da, ldda); + + } + +diff -Nur magma-1.2.1.orig/src/chegvr.cpp magma-1.2.1/src/chegvr.cpp +--- magma-1.2.1.orig/src/chegvr.cpp 2012-07-03 11:59:28.932659966 -0700 ++++ magma-1.2.1/src/chegvr.cpp 2012-07-03 11:59:45.429746354 -0700 +@@ -12,24 +12,6 @@ + */ + #include "common_magma.h" + +-void Mymagma_ctrmm(char side, char uplo, char trans, char unit, +- magma_int_t n, magma_int_t m, +- cuFloatComplex alpha, cuFloatComplex *db, magma_int_t lddb, +- cuFloatComplex *dz, magma_int_t lddz) +-{ +- magma_ctrmm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- +-void Mymagma_ctrsm(char side, char uplo, char trans, char unit, +- magma_int_t n, magma_int_t m, +- cuFloatComplex alpha, cuFloatComplex *db, magma_int_t lddb, +- cuFloatComplex *dz, magma_int_t lddz) +-{ +- magma_ctrsm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- + extern "C" magma_int_t + magma_chegvr(magma_int_t itype, char jobz, char range, char uplo, magma_int_t n, + cuFloatComplex *a, magma_int_t lda, cuFloatComplex *b, magma_int_t ldb, +@@ -408,7 +390,7 @@ + *(unsigned char *)trans = MagmaNoTrans; + } + +- Mymagma_ctrsm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, ++ magma_ctrsm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, + db, lddb, dz, lddz); + + } else if (itype == 3) { +@@ -421,7 +403,7 @@ + *(unsigned char *)trans = MagmaConjTrans; + } + +- Mymagma_ctrmm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, ++ magma_ctrmm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, + db, lddb, dz, lddz); + } + +diff -Nur magma-1.2.1.orig/src/chegvx.cpp magma-1.2.1/src/chegvx.cpp +--- magma-1.2.1.orig/src/chegvx.cpp 2012-07-03 11:59:28.923659921 -0700 ++++ magma-1.2.1/src/chegvx.cpp 2012-07-03 11:59:45.429746354 -0700 +@@ -12,22 +12,6 @@ + */ + #include "common_magma.h" + +-void Mymagma_ctrmm(char side, char uplo, char trans, char unit, magma_int_t n, magma_int_t m, +- cuFloatComplex alpha, cuFloatComplex *db, magma_int_t lddb, +- cuFloatComplex *dz, magma_int_t lddz) +-{ +- magma_ctrmm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- +-void Mymagma_ctrsm(char side, char uplo, char trans, char unit, magma_int_t n, magma_int_t m, +- cuFloatComplex alpha, cuFloatComplex *db, magma_int_t lddb, +- cuFloatComplex *dz, magma_int_t lddz) +-{ +- magma_ctrsm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- + extern "C" magma_int_t + magma_chegvx(magma_int_t itype, char jobz, char range, char uplo, magma_int_t n, + cuFloatComplex *a, magma_int_t lda, cuFloatComplex *b, magma_int_t ldb, +@@ -330,7 +314,7 @@ + *(unsigned char *)trans = MagmaNoTrans; + } + +- Mymagma_ctrsm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, dz, lddz); ++ magma_ctrsm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, dz, lddz); + + } else if (itype == 3) { + +@@ -343,7 +327,7 @@ + *(unsigned char *)trans = MagmaConjTrans; + } + +- Mymagma_ctrmm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, dz, lddz); ++ magma_ctrmm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, dz, lddz); + + } + +diff -Nur magma-1.2.1.orig/src/cstedx_m.cpp magma-1.2.1/src/cstedx_m.cpp +--- magma-1.2.1.orig/src/cstedx_m.cpp 2012-07-03 11:59:28.921659909 -0700 ++++ magma-1.2.1/src/cstedx_m.cpp 2012-07-03 11:59:45.429746354 -0700 +@@ -16,10 +16,7 @@ + float* work, magma_int_t lwork, magma_int_t* iwork, magma_int_t liwork, + magma_int_t* info); + +- magma_int_t get_cstedx_smlsize() +- { +- return 25; +- } ++ magma_int_t get_cstedx_smlsize(); + } + + extern "C" magma_int_t +diff -Nur magma-1.2.1.orig/src/dlaex0_m.cpp magma-1.2.1/src/dlaex0_m.cpp +--- magma-1.2.1.orig/src/dlaex0_m.cpp 2012-07-03 11:59:28.933659971 -0700 ++++ magma-1.2.1/src/dlaex0_m.cpp 2012-07-03 11:59:45.430746359 -0700 +@@ -22,10 +22,7 @@ + + int magma_get_dlaex3_m_nb(); + +- magma_int_t get_dlaex0_smlsize() +- { +- return 25; +- } ++ magma_int_t get_dlaex0_smlsize(); + } + + extern "C" magma_int_t +diff -Nur magma-1.2.1.orig/src/dlaex3_m.cpp magma-1.2.1/src/dlaex3_m.cpp +--- magma-1.2.1.orig/src/dlaex3_m.cpp 2012-07-03 11:59:28.929659951 -0700 ++++ magma-1.2.1/src/dlaex3_m.cpp 2012-07-03 11:59:45.430746359 -0700 +@@ -34,7 +34,7 @@ + } + + extern"C"{ +- void dvrange(magma_int_t k, double *d, magma_int_t *il, magma_int_t *iu, double vl, double vu) ++ void ddvrange(magma_int_t k, double *d, magma_int_t *il, magma_int_t *iu, double vl, double vu) + { + magma_int_t i; + +@@ -51,7 +51,7 @@ + return; + } + +- void dirange(magma_int_t k, magma_int_t* indxq, magma_int_t *iil, magma_int_t *iiu, magma_int_t il, magma_int_t iu) ++ void ddirange(magma_int_t k, magma_int_t* indxq, magma_int_t *iil, magma_int_t *iiu, magma_int_t il, magma_int_t iu) + { + magma_int_t i; + +@@ -362,9 +362,9 @@ + + //compute the lower and upper bound of the non-deflated eigenvectors + if (valeig) +- dvrange(k, d, &iil, &iiu, vl, vu); ++ ddvrange(k, d, &iil, &iiu, vl, vu); + else if (indeig) +- dirange(k, indxq, &iil, &iiu, il, iu); ++ ddirange(k, indxq, &iil, &iiu, il, iu); + else { + iil = 1; + iiu = k; +diff -Nur magma-1.2.1.orig/src/dstedx_m.cpp magma-1.2.1/src/dstedx_m.cpp +--- magma-1.2.1.orig/src/dstedx_m.cpp 2012-07-03 11:59:28.920659903 -0700 ++++ magma-1.2.1/src/dstedx_m.cpp 2012-07-03 11:59:45.430746359 -0700 +@@ -26,10 +26,7 @@ + + double lapackf77_dlanst( char* norm, magma_int_t* n, double* d, double* e); + +- magma_int_t get_dstedx_smlsize() +- { +- return 25; +- } ++ magma_int_t get_dstedx_smlsize(); + } + + extern "C" magma_int_t +diff -Nur magma-1.2.1.orig/src/slaex0_m.cpp magma-1.2.1/src/slaex0_m.cpp +--- magma-1.2.1.orig/src/slaex0_m.cpp 2012-07-03 11:59:28.931659961 -0700 ++++ magma-1.2.1/src/slaex0_m.cpp 2012-07-03 11:59:45.431746364 -0700 +@@ -22,10 +22,7 @@ + + int magma_get_slaex3_m_nb(); + +- magma_int_t get_slaex0_smlsize() +- { +- return 25; +- } ++ magma_int_t get_slaex0_smlsize(); + } + + extern "C" magma_int_t +diff -Nur magma-1.2.1.orig/src/slaex3_m.cpp magma-1.2.1/src/slaex3_m.cpp +--- magma-1.2.1.orig/src/slaex3_m.cpp 2012-07-03 11:59:28.920659903 -0700 ++++ magma-1.2.1/src/slaex3_m.cpp 2012-07-03 11:59:45.431746364 -0700 +@@ -34,7 +34,7 @@ + } + + extern"C"{ +- void dvrange(magma_int_t k, float *d, magma_int_t *il, magma_int_t *iu, float vl, float vu) ++ void sdvrange(magma_int_t k, float *d, magma_int_t *il, magma_int_t *iu, float vl, float vu) + { + magma_int_t i; + +@@ -51,7 +51,7 @@ + return; + } + +- void dirange(magma_int_t k, magma_int_t* indxq, magma_int_t *iil, magma_int_t *iiu, magma_int_t il, magma_int_t iu) ++ void sdirange(magma_int_t k, magma_int_t* indxq, magma_int_t *iil, magma_int_t *iiu, magma_int_t il, magma_int_t iu) + { + magma_int_t i; + +@@ -362,9 +362,9 @@ + + //compute the lower and upper bound of the non-deflated eigenvectors + if (valeig) +- dvrange(k, d, &iil, &iiu, vl, vu); ++ sdvrange(k, d, &iil, &iiu, vl, vu); + else if (indeig) +- dirange(k, indxq, &iil, &iiu, il, iu); ++ sdirange(k, indxq, &iil, &iiu, il, iu); + else { + iil = 1; + iiu = k; +diff -Nur magma-1.2.1.orig/src/sstedx_m.cpp magma-1.2.1/src/sstedx_m.cpp +--- magma-1.2.1.orig/src/sstedx_m.cpp 2012-07-03 11:59:28.932659966 -0700 ++++ magma-1.2.1/src/sstedx_m.cpp 2012-07-03 11:59:45.431746364 -0700 +@@ -26,10 +26,7 @@ + + float lapackf77_slanst( char* norm, magma_int_t* n, float* d, float* e); + +- magma_int_t get_sstedx_smlsize() +- { +- return 25; +- } ++ magma_int_t get_sstedx_smlsize(); + } + + extern "C" magma_int_t +diff -Nur magma-1.2.1.orig/src/zheevx_gpu.cpp magma-1.2.1/src/zheevx_gpu.cpp +--- magma-1.2.1.orig/src/zheevx_gpu.cpp 2012-07-03 11:59:28.934659976 -0700 ++++ magma-1.2.1/src/zheevx_gpu.cpp 2012-07-03 11:59:45.431746364 -0700 +@@ -12,27 +12,6 @@ + */ + #include "common_magma.h" + +-/* These interfaces are used for TAU profiling */ +-extern"C"{ +- void Mylapackf77_zstein(magma_int_t *n, double *d, double *e, magma_int_t *m, +- double *w, magma_int_t *iblock, magma_int_t *isplit, +- cuDoubleComplex *z, magma_int_t *ldz, double *work, +- magma_int_t *iwork, magma_int_t *ifail, magma_int_t *info) +- { +- lapackf77_zstein(n, d, e, m, w, iblock, isplit, z, ldz, work, iwork, ifail, info); +- } +- +- void Mylapackf77_dstebz(char *range, char *order, magma_int_t *n, double *vl, +- double *vu, magma_int_t *il, magma_int_t *iu, double *abstol, +- double *d, double *e, magma_int_t *m, magma_int_t *nsplit, +- double *w, magma_int_t *iblock, magma_int_t *isplit, +- double *work, magma_int_t *iwork, magma_int_t *info) +- { +- lapackf77_dstebz(range, order, n, vl, vu, il, iu, abstol, +- d, e, m, nsplit, w, iblock, isplit, work, iwork,info); +- } +-} +- + extern "C" magma_int_t + magma_zheevx_gpu(char jobz, char range, char uplo, magma_int_t n, + cuDoubleComplex *da, magma_int_t ldda, double vl, double vu, +@@ -404,12 +383,12 @@ + indisp = indibl + n; + indiwk = indisp + n; + +- Mylapackf77_dstebz(range_, order, &n, &vl, &vu, &il, &iu, &abstol, &rwork[indd], &rwork[inde], m, ++ lapackf77_dstebz(range_, order, &n, &vl, &vu, &il, &iu, &abstol, &rwork[indd], &rwork[inde], m, + &nsplit, &w[1], &iwork[indibl], &iwork[indisp], &rwork[indrwk], &iwork[indiwk], info); + + if (wantz) { + +- Mylapackf77_zstein(&n, &rwork[indd], &rwork[inde], m, &w[1], &iwork[indibl], &iwork[indisp], ++ lapackf77_zstein(&n, &rwork[indd], &rwork[inde], m, &w[1], &iwork[indibl], &iwork[indisp], + wz, &ldwz, &rwork[indrwk], &iwork[indiwk], &ifail[1], info); + + magma_zsetmatrix( n, *m, wz, ldwz, dz, lddz ); +diff -Nur magma-1.2.1.orig/src/zhegvd.cpp magma-1.2.1/src/zhegvd.cpp +--- magma-1.2.1.orig/src/zhegvd.cpp 2012-07-03 11:59:28.920659903 -0700 ++++ magma-1.2.1/src/zhegvd.cpp 2012-07-03 11:59:45.432746370 -0700 +@@ -13,26 +13,6 @@ + */ + #include "common_magma.h" + +-/* This ztrmm interface is used for TAU profiling */ +-void Mymagma_ztrmm(char side, char uplo, char trans, char unit, +- magma_int_t n, magma_int_t m, +- cuDoubleComplex alpha, cuDoubleComplex *db, magma_int_t lddb, +- cuDoubleComplex *dz, magma_int_t lddz) +-{ +- magma_ztrmm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- +-/* This ztrsm interface is used for TAU profiling */ +-void Mymagma_ztrsm(char side, char uplo, char trans, char unit, +- magma_int_t n, magma_int_t m, +- cuDoubleComplex alpha, cuDoubleComplex *db, magma_int_t lddb, +- cuDoubleComplex *dz, magma_int_t lddz) +-{ +- magma_ztrsm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- + extern "C" magma_int_t + magma_zhegvd(magma_int_t itype, char jobz, char uplo, magma_int_t n, + cuDoubleComplex *a, magma_int_t lda, cuDoubleComplex *b, magma_int_t ldb, +@@ -324,7 +304,7 @@ + *(unsigned char *)trans = MagmaNoTrans; + } + +- Mymagma_ztrsm(MagmaLeft, uplo_[0], *trans, MagmaNonUnit, ++ magma_ztrsm(MagmaLeft, uplo_[0], *trans, MagmaNonUnit, + n, n, c_one, db, lddb, da, ldda); + + } else if (itype == 3) +@@ -337,7 +317,7 @@ + *(unsigned char *)trans = MagmaConjTrans; + } + +- Mymagma_ztrmm(MagmaLeft, uplo_[0], *trans, MagmaNonUnit, ++ magma_ztrmm(MagmaLeft, uplo_[0], *trans, MagmaNonUnit, + n, n, c_one, db, lddb, da, ldda); + } + +diff -Nur magma-1.2.1.orig/src/zhegvdx.cpp magma-1.2.1/src/zhegvdx.cpp +--- magma-1.2.1.orig/src/zhegvdx.cpp 2012-07-03 11:59:28.922659915 -0700 ++++ magma-1.2.1/src/zhegvdx.cpp 2012-07-03 11:59:45.432746370 -0700 +@@ -12,22 +12,6 @@ + */ + #include "common_magma.h" + +-void Mymagma_ztrmm(char side, char uplo, char trans, char unit, magma_int_t n, magma_int_t m, +- cuDoubleComplex alpha, cuDoubleComplex *db, magma_int_t lddb, +- cuDoubleComplex *dz, magma_int_t lddz) +-{ +- magma_ztrmm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- +-void Mymagma_ztrsm(char side, char uplo, char trans, char unit, magma_int_t n, magma_int_t m, +- cuDoubleComplex alpha, cuDoubleComplex *db, magma_int_t lddb, +- cuDoubleComplex *dz, magma_int_t lddz) +-{ +- magma_ztrsm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- + extern "C" magma_int_t + magma_zhegvdx(magma_int_t itype, char jobz, char range, char uplo, magma_int_t n, + cuDoubleComplex *a, magma_int_t lda, cuDoubleComplex *b, magma_int_t ldb, +@@ -363,7 +347,7 @@ + *(unsigned char *)trans = MagmaNoTrans; + } + +- Mymagma_ztrsm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, da, ldda); ++ magma_ztrsm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, da, ldda); + + } else if (itype == 3) { + +@@ -375,7 +359,7 @@ + *(unsigned char *)trans = MagmaConjTrans; + } + +- Mymagma_ztrmm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, da, ldda); ++ magma_ztrmm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, da, ldda); + + } + +diff -Nur magma-1.2.1.orig/src/zhegvr.cpp magma-1.2.1/src/zhegvr.cpp +--- magma-1.2.1.orig/src/zhegvr.cpp 2012-07-03 11:59:28.930659956 -0700 ++++ magma-1.2.1/src/zhegvr.cpp 2012-07-03 11:59:45.432746370 -0700 +@@ -12,24 +12,6 @@ + */ + #include "common_magma.h" + +-void Mymagma_ztrmm(char side, char uplo, char trans, char unit, +- magma_int_t n, magma_int_t m, +- cuDoubleComplex alpha, cuDoubleComplex *db, magma_int_t lddb, +- cuDoubleComplex *dz, magma_int_t lddz) +-{ +- magma_ztrmm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- +-void Mymagma_ztrsm(char side, char uplo, char trans, char unit, +- magma_int_t n, magma_int_t m, +- cuDoubleComplex alpha, cuDoubleComplex *db, magma_int_t lddb, +- cuDoubleComplex *dz, magma_int_t lddz) +-{ +- magma_ztrsm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- + extern "C" magma_int_t + magma_zhegvr(magma_int_t itype, char jobz, char range, char uplo, magma_int_t n, + cuDoubleComplex *a, magma_int_t lda, cuDoubleComplex *b, magma_int_t ldb, +@@ -408,7 +390,7 @@ + *(unsigned char *)trans = MagmaNoTrans; + } + +- Mymagma_ztrsm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, ++ magma_ztrsm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, + db, lddb, dz, lddz); + + } else if (itype == 3) { +@@ -421,7 +403,7 @@ + *(unsigned char *)trans = MagmaConjTrans; + } + +- Mymagma_ztrmm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, ++ magma_ztrmm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, + db, lddb, dz, lddz); + } + +diff -Nur magma-1.2.1.orig/src/zhegvx.cpp magma-1.2.1/src/zhegvx.cpp +--- magma-1.2.1.orig/src/zhegvx.cpp 2012-07-03 11:59:28.914659873 -0700 ++++ magma-1.2.1/src/zhegvx.cpp 2012-07-03 11:59:45.433746376 -0700 +@@ -12,22 +12,6 @@ + */ + #include "common_magma.h" + +-void Mymagma_ztrmm(char side, char uplo, char trans, char unit, magma_int_t n, magma_int_t m, +- cuDoubleComplex alpha, cuDoubleComplex *db, magma_int_t lddb, +- cuDoubleComplex *dz, magma_int_t lddz) +-{ +- magma_ztrmm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- +-void Mymagma_ztrsm(char side, char uplo, char trans, char unit, magma_int_t n, magma_int_t m, +- cuDoubleComplex alpha, cuDoubleComplex *db, magma_int_t lddb, +- cuDoubleComplex *dz, magma_int_t lddz) +-{ +- magma_ztrsm(side, uplo, trans, unit, n, m, alpha, db, lddb, dz, lddz); +- magma_device_sync(); +-} +- + extern "C" magma_int_t + magma_zhegvx(magma_int_t itype, char jobz, char range, char uplo, magma_int_t n, + cuDoubleComplex *a, magma_int_t lda, cuDoubleComplex *b, magma_int_t ldb, +@@ -330,7 +314,7 @@ + *(unsigned char *)trans = MagmaNoTrans; + } + +- Mymagma_ztrsm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, dz, lddz); ++ magma_ztrsm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, dz, lddz); + + } else if (itype == 3) { + +@@ -343,7 +327,7 @@ + *(unsigned char *)trans = MagmaConjTrans; + } + +- Mymagma_ztrmm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, dz, lddz); ++ magma_ztrmm(MagmaLeft, uplo, *trans, MagmaNonUnit, n, *m, c_one, db, lddb, dz, lddz); + + } + +diff -Nur magma-1.2.1.orig/src/zstedx_m.cpp magma-1.2.1/src/zstedx_m.cpp +--- magma-1.2.1.orig/src/zstedx_m.cpp 2012-07-03 11:59:28.921659909 -0700 ++++ magma-1.2.1/src/zstedx_m.cpp 2012-07-03 11:59:45.433746376 -0700 +@@ -16,10 +16,7 @@ + double* work, magma_int_t lwork, magma_int_t* iwork, magma_int_t liwork, + magma_int_t* info); + +- magma_int_t get_zstedx_smlsize() +- { +- return 25; +- } ++ magma_int_t get_zstedx_smlsize(); + } + + extern "C" magma_int_t diff --git a/sci-libs/magma/files/magma-1.2.1-no-cuda-driver.patch b/sci-libs/magma/files/magma-1.2.1-no-cuda-driver.patch new file mode 100644 index 000000000..9dc99a865 --- /dev/null +++ b/sci-libs/magma/files/magma-1.2.1-no-cuda-driver.patch @@ -0,0 +1,38 @@ +--- magma-1.2.1.orig/testing/lin/Makefile 2012-07-03 11:59:28.875659669 -0700 ++++ magma-1.2.1/testing/lin/Makefile 2012-07-03 12:01:05.546166252 -0700 +@@ -266,7 +266,7 @@ + ../matgen/$(TMGLIB) -o xlintsts \ + ../fortran.o \ + $(LDOPTS) -L../../lib \ +- -lcuda -lmagma -lmagmablas \ ++ -lmagma -lmagmablas \ + $(LIBDIR) $(LIB) + + xlintstc : $(ALINTST) $(CLINTST) $(SCLNTST) ../fortran.o +@@ -274,7 +274,7 @@ + ../matgen/$(TMGLIB) -o xlintstc \ + ../fortran.o \ + $(LDOPTS) -L../../lib \ +- -lcuda -lmagma -lmagmablas \ ++ -lmagma -lmagmablas \ + $(LIBDIR) $(LIB) + + xlintstd : $(ALINTST) $(DLINTST) $(DZLNTST) ../fortran.o +@@ -282,7 +282,7 @@ + ../matgen/$(TMGLIB) -o xlintstd \ + ../fortran.o \ + $(LDOPTS) -L../../lib \ +- -lcuda -lmagma -lmagmablas \ ++ -lmagma -lmagmablas \ + $(LIBDIR) $(LIB) + + xlintstz : $(ALINTST) $(ZLINTST) $(DZLNTST) ../fortran.o +@@ -290,7 +290,7 @@ + ../matgen/$(TMGLIB) -o xlintstz \ + ../fortran.o \ + $(LDOPTS) -L../../lib \ +- -lcuda -lmagma -lmagmablas -lmagma \ ++ -lmagma -lmagmablas -lmagma \ + $(LIBDIR) $(LIB) + + $(ALINTST): $(FRC) diff --git a/sci-libs/magma/magma-1.2.1.ebuild b/sci-libs/magma/magma-1.2.1.ebuild new file mode 100644 index 000000000..65b822c11 --- /dev/null +++ b/sci-libs/magma/magma-1.2.1.ebuild @@ -0,0 +1,111 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=4 + +FORTRAN_STANDARD="77 90" +inherit eutils fortran-2 toolchain-funcs versionator + +DESCRIPTION="Matrix Algebra on GPU and Multicore Architectures" +HOMEPAGE="http://icl.cs.utk.edu/magma/" +SRC_URI="http://icl.cs.utk.edu/projectsfiles/${PN}/${P}.tar.gz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" +IUSE="fermi static-libs tesla" + +RDEPEND="dev-util/nvidia-cuda-toolkit + virtual/cblas + virtual/lapack" +DEPEND="${RDEPEND} + virtual/pkgconfig" + +make_shared_lib() { + local libstatic=${1} + local soname=$(basename "${1%.a}").so.$(get_major_version) + shift + einfo "Making ${soname}" + ${LINK:-$(tc-getCC)} ${LDFLAGS} \ + -shared -Wl,-soname="${soname}" \ + -Wl,--whole-archive "${libstatic}" -Wl,--no-whole-archive \ + "$@" -o $(dirname "${libstatic}")/"${soname}" \ + || die "${soname} failed" + ln -s "${soname}" $(dirname "${libstatic}")/"${soname%.*}" +} + +src_prepare() { + epatch \ + "${FILESDIR}"/${P}-duplicate-symbols.patch \ + "${FILESDIR}"/${P}-no-cuda-driver.patch + + # distributed pc file not so useful so replace it + cat <<-EOF > ${PN}.pc + prefix=${EPREFIX}/usr + libdir=\${prefix}/$(get_libdir) + includedir=\${prefix}/include/${PN} + Name: ${PN} + Description: ${DESCRIPTION} + Version: ${PV} + URL: ${HOMEPAGE} + Libs: -L\${libdir} -lmagma -lmagmablas + Libs.private: -lm -lpthread -ldl -lcublas -lcudart + Cflags: -I\${includedir} + Requires: cblas lapack + EOF +} + +src_configure() { + cat <<-EOF > make.inc + ARCH = $(tc-getAR) + ARCHFLAGS = cr + RANLIB = $(tc-getRANLIB) + NVCC = nvcc + CC = $(tc-getCXX) + FORT = $(tc-getFC) + INC = -I${EPREFIX}/opt/cuda/include -DADD_ + OPTS = ${CFLAGS} -fPIC + FOPTS = ${FFLAGS} -fPIC -x f95-cpp-input + F77OPTS = ${FFLAGS} -fPIC + NVOPTS = -DADD_ --compiler-options '-fPIC ${CFLAGS}' -DUNIX + LOADER = $(tc-getFC) + LIBBLAS = $(pkg-config --libs cblas) + LIBLAPACK = $(pkg-config --libs lapack) + CUDADIR = ${EPREFIX}/opt/cuda + LIBCUDA = -L\$(CUDADIR)/$(get_libdir) -lcublas -lcudart + LIB = -pthread -lm -ldl \$(LIBCUDA) \$(LIBBLAS) \$(LIBLAPACK) -lstdc++ + EOF + if use fermi; then + echo >> make.inc "GPU_TARGET = Fermi" + elif use tesla; then + echo >> make.inc "GPU_TARGET = Tesla" + fi +} + +src_compile() { + emake lib + make_shared_lib lib/libmagma.a + make_shared_lib lib/libmagmablas.a + if use static-libs; then + emake cleanall + sed 's/-fPIC//g' make.inc + emake lib + fi +} + +src_test() { + emake test lapacktest + cd testing/lin + python lapack_testing.py || die +} + +src_install() { + dolib.so lib/lib*.so* + use static-libs && dolib.a lib/lib*.a + insinto /usr/include/${PN} + doins include/*.h + insinto /usr/$(get_libdir)/pkgconfig + doins ${PN}.pc + dodoc README ReleaseNotes +} diff --git a/sci-libs/magma/metadata.xml b/sci-libs/magma/metadata.xml new file mode 100644 index 000000000..195c0d273 --- /dev/null +++ b/sci-libs/magma/metadata.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> +<herd>sci</herd> +<longdescription lang="en"> + The Matrix Algebra on GPU and Multicore Architectures + project aims to develop a dense linear algebra library + similar to LAPACK but for heterogeneous/hybrid architectures, starting + with current "Multicore+GPU" systems. +</longdescription> +<use> + <flag name="fermi">Compile for GPU NVIDIA Fermi family (2.x cards)</flag> + <flag name="tesla">Compile for GPU NVIDIA Tesla family (1.x cards)></flag> +</use> +</pkgmetadata> |