/** * * @file openmp/codelet_zgeadd.c * * @copyright 2009-2014 The University of Tennessee and The University of * Tennessee Research Foundation. All rights reserved. * @copyright 2012-2016 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, * Univ. Bordeaux. All rights reserved. * *** * * @brief Chameleon zgeadd StarPU codelet * * @version 1.0.0 * @comment This file has been automatically generated * from Plasma 2.5.0 for CHAMELEON 1.0.0 * @author Mathieu Faverge * @author Emmanuel Agullo * @author Cedric Castagnede * @author Philippe Virouleau * @date 2018-06-20 * @precisions normal z -> c d s * */ #include "chameleon_openmp.h" #include "chameleon/tasks_z.h" #include "coreblas/coreblas_z.h" /** ****************************************************************************** * * @ingroup CORE_CHAMELEON_Complex64_t * * INSERT_TASK_zgeadd adds two general matrices together as in PBLAS pzgeadd. * * B <- alpha * op(A) + beta * B, * * where op(X) = X, X', or conj(X') * ******************************************************************************* * * @param[in] trans * Specifies whether the matrix A is non-transposed, transposed, or * conjugate transposed * = ChamNoTrans: op(A) = A * = ChamTrans: op(A) = A' * = ChamConjTrans: op(A) = conj(A') * * @param[in] M * Number of rows of the matrices op(A) and B. * * @param[in] N * Number of columns of the matrices op(A) and B. * * @param[in] alpha * Scalar factor of A. * * @param[in] A * Matrix of size LDA-by-N, if trans = ChamNoTrans, LDA-by-M * otherwise. * * @param[in] LDA * Leading dimension of the array A. LDA >= max(1,k), with k=M, if * trans = ChamNoTrans, and k=N otherwise. * * @param[in] beta * Scalar factor of B. * * @param[in,out] B * Matrix of size LDB-by-N. * On exit, B = alpha * op(A) + beta * B * * @param[in] LDB * Leading dimension of the array B. LDB >= max(1,M) * ******************************************************************************* * * @return * \retval CHAMELEON_SUCCESS successful exit * \retval <0 if -i, the i-th argument had an illegal value * */ void INSERT_TASK_zgeadd(const RUNTIME_option_t *options, cham_trans_t trans, int m, int n, int nb, CHAMELEON_Complex64_t alpha, const CHAM_desc_t *A, int Am, int An, int lda, CHAMELEON_Complex64_t beta, const CHAM_desc_t *B, int Bm, int Bn, int ldb) { CHAMELEON_Complex64_t *ptrA = RTBLKADDR(A, CHAMELEON_Complex64_t, Am, An); CHAMELEON_Complex64_t *ptrB = RTBLKADDR(B, CHAMELEON_Complex64_t, Bm, Bn); #pragma omp task firstprivate(trans, m, n, alpha, beta, lda, ldb, ptrA, ptrB) depend(in:ptrA[0:Am*An]) depend(inout:ptrB[0:Bm*Bn]) CORE_zgeadd(trans, m, n, alpha, ptrA, lda, beta, ptrB, ldb); }