Commit bf115f19 authored by Mathieu Faverge's avatar Mathieu Faverge

Merge back the parsec branch

parent ca1ddd54
This diff is collapsed.
......@@ -158,10 +158,7 @@ void morse_pzlange(MORSE_enum norm, MORSE_desc_t *A, double *result,
}
}
RUNTIME_sequence_wait(morse, sequence);
*result = *(double *)VECNORMS_STEP1->get_blkaddr(VECNORMS_STEP1, A->myrank / A->q, A->myrank % A->q );
MORSE_Desc_Destroy( &(VECNORMS_STEP1) );
MORSE_Desc_Destroy( &(VECNORMS_STEP2) );
MORSE_Desc_Destroy( &(RESULT) );
break;
/*
......@@ -278,10 +275,7 @@ void morse_pzlange(MORSE_enum norm, MORSE_desc_t *A, double *result,
}
}
RUNTIME_sequence_wait(morse, sequence);
*result = *(double *)VECNORMS_STEP1->get_blkaddr(VECNORMS_STEP1, A->myrank / A->q, A->myrank % A->q );
MORSE_Desc_Destroy( &(VECNORMS_STEP1) );
MORSE_Desc_Destroy( &(VECNORMS_STEP2) );
MORSE_Desc_Destroy( &(RESULT) );
break;
/*
......@@ -349,9 +343,6 @@ void morse_pzlange(MORSE_enum norm, MORSE_desc_t *A, double *result,
}
RUNTIME_sequence_wait(morse, sequence);
*result = *(double *)VECNORMS_STEP1->get_blkaddr(VECNORMS_STEP1, A->myrank / A->q, A->myrank % A->q );
MORSE_Desc_Destroy( &(VECNORMS_STEP1) );
MORSE_Desc_Destroy( &(RESULT) );
break;
/*
......@@ -413,10 +404,12 @@ void morse_pzlange(MORSE_enum norm, MORSE_desc_t *A, double *result,
}
RUNTIME_sequence_wait(morse, sequence);
*result = *(double *)VECNORMS_STEP1->get_blkaddr(VECNORMS_STEP1, A->myrank / A->q, A->myrank % A->q );
MORSE_Desc_Destroy( &(VECNORMS_STEP1) );
MORSE_Desc_Destroy( &(RESULT) );
}
*result = *(double *)VECNORMS_STEP1->get_blkaddr(VECNORMS_STEP1, A->myrank / A->q, A->myrank % A->q );
MORSE_Desc_Destroy( &(VECNORMS_STEP1) );
MORSE_Desc_Destroy( &(RESULT) );
RUNTIME_options_ws_free(&options);
RUNTIME_options_finalize(&options, morse);
MORSE_TASK_dataflush_all();
......
......@@ -50,11 +50,11 @@ void morse_pzplgsy( MORSE_Complex64_t bump, MORSE_desc_t *A, unsigned long long
for (m = 0; m < A->mt; m++) {
tempmm = m == A->mt-1 ? A->m-m*A->mb : A->mb;
ldam = BLKLDD(A, m);
for (n = 0; n < A->nt; n++) {
tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
MORSE_TASK_zplgsy(
MORSE_TASK_zplgsy(
&options,
bump, tempmm, tempnn, A(m, n), ldam,
A->m, m*A->mb, n*A->nb, seed );
......
......@@ -54,7 +54,7 @@ void morse_pzplrnt( MORSE_desc_t *A, unsigned long long int seed,
for (n = 0; n < A->nt; n++) {
tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
MORSE_TASK_zplrnt(
MORSE_TASK_zplrnt(
&options,
tempmm, tempnn, A(m, n), ldam,
A->m, m*A->mb, n*A->nb, seed );
......
......@@ -77,7 +77,7 @@ void morse_pzlapack_to_tile(MORSE_Complex64_t *Af77, int lda, MORSE_desc_t *dA,
}
}
RUNTIME_barrier( morse );
RUNTIME_sequence_wait( morse, sequence );
RUNTIME_options_finalize( &options, morse );
MORSE_TASK_dataflush_all();
RUNTIME_desc_getoncpu( &dB );
......@@ -133,7 +133,7 @@ void morse_pztile_to_lapack(MORSE_desc_t *dA, MORSE_Complex64_t *Af77, int lda,
}
}
RUNTIME_barrier( morse );
RUNTIME_sequence_wait( morse, sequence );
RUNTIME_options_finalize( &options, morse );
MORSE_TASK_dataflush_all();
RUNTIME_desc_getoncpu( &dB );
......@@ -174,7 +174,7 @@ void morse_pztile_zero(MORSE_desc_t *dA, MORSE_sequence_t *sequence, MORSE_reque
}
}
RUNTIME_barrier( morse );
RUNTIME_sequence_wait( morse, sequence );
RUNTIME_options_finalize( &options, morse );
MORSE_TASK_dataflush_all();
}
......@@ -37,7 +37,7 @@
*******************************************************************************
*
* @param[in] bump
* The value to add to the diagonal to be sure
* The value to add to the diagonal to be sure
* to have a positive definite matrix.
*
* @param[in] N
......@@ -104,17 +104,16 @@ int MORSE_zplghe( double bump, int N,
morse_error("MORSE_zplghe", "morse_tune() failed");
return status;
}
/* Set NT */
NB = MORSE_NB;
morse_sequence_create(morse, &sequence);
morse_zdesc_alloc(descA, NB, NB, LDA, N, 0, 0, N, N, morse_desc_mat_free(&descA));
/* Call the tile interface */
MORSE_zplghe_Tile_Async( bump, &descA, seed, sequence, &request );
morse_sequence_wait(morse, sequence);
morse_zooptile2lap(descA, A, NB, NB, LDA, N, sequence, &request);
morse_sequence_wait(morse, sequence);
morse_desc_mat_free(&descA);
......@@ -138,7 +137,7 @@ int MORSE_zplghe( double bump, int N,
*******************************************************************************
*
* @param[in] bump
* The value to add to the diagonal to be sure
* The value to add to the diagonal to be sure
* to have a positive definite matrix.
*
* @param[in] A
......
......@@ -37,7 +37,7 @@
*******************************************************************************
*
* @param[in] bump
* The value to add to the diagonal to be sure
* The value to add to the diagonal to be sure
* to have a positive definite matrix.
*
* @param[in] N
......@@ -104,17 +104,16 @@ int MORSE_zplgsy( MORSE_Complex64_t bump, int N,
morse_error("MORSE_zplgsy", "morse_tune() failed");
return status;
}
/* Set NT */
NB = MORSE_NB;
morse_sequence_create(morse, &sequence);
morse_zdesc_alloc(descA, NB, NB, LDA, N, 0, 0, N, N, morse_desc_mat_free(&descA));
/* Call the tile interface */
MORSE_zplgsy_Tile_Async( bump, &descA, seed, sequence, &request );
morse_sequence_wait(morse, sequence);
morse_zooptile2lap(descA, A, NB, NB, LDA, N, sequence, &request);
morse_sequence_wait(morse, sequence);
morse_desc_mat_free(&descA);
......@@ -138,7 +137,7 @@ int MORSE_zplgsy( MORSE_Complex64_t bump, int N,
*******************************************************************************
*
* @param[in] bump
* The value to add to the diagonal to be sure
* The value to add to the diagonal to be sure
* to have a positive definite matrix.
*
* @param[in] A
......
......@@ -107,7 +107,7 @@ int MORSE_zplrnt( int M, int N,
morse_error("MORSE_zplrnt", "morse_tune() failed");
return status;
}
/* Set NT */
NB = MORSE_NB;
morse_sequence_create(morse, &sequence);
......@@ -116,8 +116,7 @@ int MORSE_zplrnt( int M, int N,
/* Call the tile interface */
MORSE_zplrnt_Tile_Async( &descA, seed, sequence, &request );
morse_sequence_wait(morse, sequence);
morse_zooptile2lap(descA, A, NB, NB, LDA, N, sequence, &request);
morse_zooptile2lap(descA, A, NB, NB, LDA, N, sequence, &request);
morse_sequence_wait(morse, sequence);
morse_desc_mat_free(&descA);
......@@ -213,7 +212,7 @@ int MORSE_zplrnt_Tile( MORSE_desc_t *A,
******************************************************************************/
int MORSE_zplrnt_Tile_Async( MORSE_desc_t *A,
unsigned long long int seed,
MORSE_sequence_t *sequence,
MORSE_sequence_t *sequence,
MORSE_request_t *request)
{
MORSE_context_t *morse;
......
......@@ -82,7 +82,7 @@ int MORSE_zLapack_to_Tile(MORSE_Complex64_t *Af77, int LDA, MORSE_desc_t *A)
morse_pzlapack_to_tile( Af77, LDA, A, sequence, &request);
RUNTIME_barrier( morse );
RUNTIME_sequence_wait( morse, sequence );
RUNTIME_desc_getoncpu( A );
status = sequence->status;
......@@ -207,7 +207,7 @@ int MORSE_zTile_to_Lapack(MORSE_desc_t *A, MORSE_Complex64_t *Af77, int LDA)
morse_sequence_create(morse, &sequence);
morse_pztile_to_lapack( A, Af77, LDA, sequence, &request);
RUNTIME_barrier( morse );
RUNTIME_sequence_wait( morse, sequence );
RUNTIME_desc_getoncpu( A );
status = sequence->status;
morse_sequence_destroy(morse, sequence);
......
......@@ -52,7 +52,7 @@ MORSE_desc_t morse_desc_init(MORSE_enum dtyp, int mb, int nb, int bsiz,
// Matrix properties
desc.dtyp = dtyp;
// seems useless
//desc.styp = MorseCCRB;
desc.styp = MorseCCRB;
desc.mb = mb;
desc.nb = nb;
desc.bsiz = bsiz;
......@@ -137,7 +137,7 @@ MORSE_desc_t morse_desc_init_diag(MORSE_enum dtyp, int mb, int nb, int bsiz,
// Matrix properties
desc.dtyp = dtyp;
// seems useless
//desc.styp = MorseCCRB;
desc.styp = MorseCCRB;
desc.mb = mb;
desc.nb = nb;
desc.bsiz = bsiz;
......@@ -225,7 +225,7 @@ MORSE_desc_t morse_desc_init_user(MORSE_enum dtyp, int mb, int nb, int bsiz,
// Matrix properties
desc.dtyp = dtyp;
// seems useless
//desc.styp = MorseCCRB
desc.styp = MorseCCRB;
desc.mb = mb;
desc.nb = nb;
desc.bsiz = bsiz;
......
......@@ -59,6 +59,12 @@ if(CHAMELEON_SCHED_STARPU)
)
endif()
link_directories(${STARPU_LIBRARY_DIRS})
elseif(CHAMELEON_SCHED_PARSEC)
list(APPEND libs_for_examples
chameleon_parsec
${PARSEC_LIBRARIES_DEP}
)
link_directories(${PARSEC_LIBRARY_DIRS_DEP})
elseif(CHAMELEON_SCHED_QUARK)
list(APPEND libs_for_examples
chameleon_quark
......
......@@ -2,7 +2,7 @@
# Check Example basic_zposv
#
set(TESTLIST
set(TESTLIST
posv_morse_functions
posv_users_functions
)
......
......@@ -54,6 +54,12 @@ if(CHAMELEON_SCHED_STARPU)
)
endif()
link_directories(${STARPU_LIBRARY_DIRS})
elseif(CHAMELEON_SCHED_PARSEC)
list(APPEND libs_for_ltm
chameleon_parsec
${PARSEC_LIBRARIES_DEP}
)
link_directories(${PARSEC_LIBRARY_DIRS_DEP})
elseif(CHAMELEON_SCHED_QUARK)
list(APPEND libs_for_ltm
chameleon_quark
......
......@@ -36,6 +36,7 @@
* - StarPU
**/
typedef enum morse_sched_e {
RUNTIME_SCHED_PARSEC,
RUNTIME_SCHED_QUARK,
RUNTIME_SCHED_STARPU,
} MORSE_sched_t;
......
......@@ -30,6 +30,8 @@
# ----------------------------
if( CHAMELEON_SCHED_QUARK )
add_subdirectory(quark)
elseif( CHAMELEON_SCHED_PARSEC )
add_subdirectory(parsec)
elseif( CHAMELEON_SCHED_STARPU )
add_subdirectory(starpu)
endif()
......
###
#
# @copyright (c) 2009-2015 The University of Tennessee and The University
# of Tennessee Research Foundation.
# All rights reserved.
# @copyright (c) 2012-2015 Inria. All rights reserved.
# @copyright (c) 2012-2015 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
#
###
#
# @file CMakeLists.txt
#
# @project CHAMELEON
# CHAMELEON is a software package provided by:
# Inria Bordeaux - Sud-Ouest,
# Univ. of Tennessee,
# King Abdullah Univesity of Science and Technology
# Univ. of California Berkeley,
# Univ. of Colorado Denver.
#
# @version 0.9.0
# @author Cedric Castagnede
# @author Emmanuel Agullo
# @author Mathieu Faverge
# @author Florent Pruvost
# @date 13-07-2012
#
###
# check if magma_dgetrf_incpiv_gpu is accessible in libmagma and activate it in chameleon
if ( CBLAS_FOUND AND LAPACKE_FOUND AND LAPACK_FOUND AND CUDA_FOUND AND CUDA_CUBLAS_LIBRARIES AND MAGMA_FOUND )
set(CMAKE_REQUIRED_LIBRARIES "${CBLAS_LIBRARIES};${LAPACKE_LIBRARIES};${LAPACK_SEQ_LIBRARIES};${CUDA_LIBRARIES};${CUDA_CUBLAS_LIBRARIES};${MAGMA_LIBRARIES};${COREBLAS_LIBRARIES}")
unset(MAGMA_DGETRF_INCPIV_GPU_FOUND CACHE)
check_function_exists(magma_dgetrf_incpiv_gpu MAGMA_DGETRF_INCPIV_GPU_FOUND)
if ( MAGMA_DGETRF_INCPIV_GPU_FOUND )
message(STATUS "Set HAVE_MAGMA_GETRF_INCPIV_GPU")
add_definitions(-DHAVE_MAGMA_GETRF_INCPIV_GPU)
endif()
endif()
# Generate headers for all possible precisions
# --------------------------------------------
set(RUNTIME_HDRS_GENERATED "")
#set(ZHDR
#)
#
#precisions_rules_py(RUNTIME_HDRS_GENERATED "${ZHDR}"
# PRECISIONS "s;d;c;z;ds;zc"
# TARGETDIR "include")
# Define the list of headers
# --------------------------
set(RUNTIME_HDRS
include/morse_parsec.h
${RUNTIME_HDRS_GENERATED}
)
# Force generation of headers
# ---------------------------
add_custom_target(runtime_parsec_include ALL SOURCES ${RUNTIME_HDRS})
# Generate the morse common for all possible precisions
# -----------------------------------------------------
set(RUNTIME_COMMON_GENERATED "")
set(ZSRC
control/runtime_zprofiling.c
control/runtime_zlocality.c
)
precisions_rules_py(RUNTIME_COMMON_GENERATED "${ZSRC}"
PRECISIONS "${CHAMELEON_PRECISION}"
TARGETDIR "control")
set(RUNTIME_COMMON
control/runtime_control.c
control/runtime_context.c
control/runtime_descriptor.c
control/runtime_async.c
control/runtime_options.c
control/runtime_profiling.c
codelets/codelet_dataflush.c
${RUNTIME_COMMON_GENERATED}
)
# Generate the morse sources for all possible precisions
# ------------------------------------------------------
set(RUNTIME_SRCS_GENERATED "")
set(ZSRC
codelets/codelet_ztile_zero.c
codelets/codelet_zasum.c
##################
# BLAS 1
##################
codelets/codelet_zaxpy.c
##################
# BLAS 3
##################
codelets/codelet_zgemm.c
codelets/codelet_zhemm.c
codelets/codelet_zher2k.c
codelets/codelet_zherk.c
codelets/codelet_zsymm.c
codelets/codelet_zsyr2k.c
codelets/codelet_zsyrk.c
codelets/codelet_ztrmm.c
codelets/codelet_ztrsm.c
##################
# LAPACK
##################
codelets/codelet_zgeadd.c
codelets/codelet_zgelqt.c
codelets/codelet_zgeqrt.c
codelets/codelet_zgessm.c
codelets/codelet_zgessq.c
codelets/codelet_zgetrf.c
codelets/codelet_zgetrf_incpiv.c
codelets/codelet_zgetrf_nopiv.c
codelets/codelet_zhessq.c
codelets/codelet_zlacpy.c
codelets/codelet_zlange.c
codelets/codelet_zlanhe.c
codelets/codelet_zlansy.c
codelets/codelet_zlantr.c
codelets/codelet_zlaset2.c
codelets/codelet_zlaset.c
codelets/codelet_zlauum.c
codelets/codelet_zplghe.c
codelets/codelet_zplgsy.c
codelets/codelet_zplrnt.c
codelets/codelet_zplssq.c
codelets/codelet_zpotrf.c
codelets/codelet_zssssm.c
codelets/codelet_zsyssq.c
codelets/codelet_zsytrf_nopiv.c
codelets/codelet_ztradd.c
codelets/codelet_ztrasm.c
codelets/codelet_ztrssq.c
codelets/codelet_ztrtri.c
codelets/codelet_ztslqt.c
codelets/codelet_ztsmlq.c
codelets/codelet_ztsmqr.c
codelets/codelet_ztsqrt.c
codelets/codelet_ztstrf.c
codelets/codelet_zttlqt.c
codelets/codelet_zttmlq.c
codelets/codelet_zttmqr.c
codelets/codelet_zttqrt.c
codelets/codelet_zunmlq.c
codelets/codelet_zunmqr.c
)
list(REMOVE_DUPLICATES ZSRC)
precisions_rules_py(RUNTIME_SRCS_GENERATED "${ZSRC}"
PRECISIONS "${CHAMELEON_PRECISION}"
TARGETDIR "codelets")
set(RUNTIME_SRCS
${RUNTIME_COMMON}
${RUNTIME_SRCS_GENERATED}
)
# Add library
# -----------
add_library(chameleon_parsec ${RUNTIME_SRCS})
set_property(TARGET chameleon_parsec PROPERTY LINKER_LANGUAGE Fortran)
add_dependencies(chameleon_parsec
chameleon_include
coreblas_include
control_include
runtime_parsec_include
)
# installation
# ------------
install(TARGETS chameleon_parsec
DESTINATION lib)
###
### END CMakeLists.txt
###
/**
*
* @copyright (c) 2009-2015 The University of Tennessee and The University
* of Tennessee Research Foundation.
* All rights reserved.
* @copyright (c) 2012-2015 Inria. All rights reserved.
* @copyright (c) 2012-2015 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
*
**/
/**
*
* MORSE codelets kernel
* MORSE is a software package provided by Univ. of Tennessee,
* Univ. of California Berkeley and Univ. of Colorado Denver
*
* @version 2.5.0
* @author Reazul Hoque
* @precisions normal z -> c d s
*
**/
#include "runtime/parsec/include/morse_parsec.h"
void MORSE_TASK_dataflush(MORSE_option_t *options,
MORSE_desc_t *A, int Am, int An)
{
(void)options; (void)A;
/*
* This is useful for StarPU implementation, if it happens in Quark, it will
* need to be done carefuly to not break both runtimes.
*/
}
void MORSE_TASK_dataflush_all()
{
}
/**
*
* @copyright (c) 2009-2015 The University of Tennessee and The University
* of Tennessee Research Foundation.
* All rights reserved.
* @copyright (c) 2012-2015 Inria. All rights reserved.
* @copyright (c) 2012-2015 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
*
**/
/**
* @file codelet_zasum.c
*
* MORSE codelets kernel
* MORSE is a software package provided by Univ. of Tennessee,
* Univ. of California Berkeley and Univ. of Colorado Denver
*
* @version 2.5.0
* @author Reazul Hoque
* @precisions normal z -> c d s
*
**/
#include "runtime/parsec/include/morse_parsec.h"
static int
CORE_dzasum_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
{
MORSE_enum *storev;
MORSE_enum *uplo;
int *M;
int *N;
dague_data_copy_t *gA;
int *lda;
dague_data_copy_t *gwork;
dague_dtd_unpack_args(this_task,
UNPACK_VALUE, &storev,
UNPACK_VALUE, &uplo,
UNPACK_VALUE, &M,
UNPACK_VALUE, &N,
UNPACK_DATA, &gA,
UNPACK_VALUE, &lda,
UNPACK_DATA, &gwork
);
void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
void *work = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gwork);
CORE_dzasum(*storev, *uplo, *M, *N, A, *lda, work);
return 0;
}
void MORSE_TASK_dzasum(MORSE_option_t *options,
MORSE_enum storev, MORSE_enum uplo, int M, int N,
MORSE_desc_t *A, int Am, int An, int lda,
MORSE_desc_t *B, int Bm, int Bn)
{
dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
insert_task_generic_fptr(DAGUE_dtd_handle, CORE_dzasum_parsec, "zasum",
sizeof(MORSE_enum), &storev, VALUE,
sizeof(MORSE_enum), &uplo, VALUE,
sizeof(int), &M, VALUE,
sizeof(int), &N, VALUE,
PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT | REGION_FULL,
sizeof(int), &lda, VALUE,
PASSED_BY_REF, RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ), INOUT | REGION_FULL,
0);
}
/**
*
* @copyright (c) 2009-2015 The University of Tennessee and The University
* of Tennessee Research Foundation.
* All rights reserved.
* @copyright (c) 2012-2015 Inria. All rights reserved.
* @copyright (c) 2012-2015 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
*
**/
/**
* @file codelet_zaxpy.c
*
* MORSE codelets kernel
* MORSE is a software package provided by Univ. of Tennessee,
* Univ. of California Berkeley and Univ. of Colorado Denver
*
* @version 2.5.0
* @author Reazul Hoque
* @precisions normal z -> c d s
*
**/
#include "runtime/parsec/include/morse_parsec.h"
static int
CORE_zaxpy_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
{
int *M;
MORSE_Complex64_t *alpha;
dague_data_copy_t *gA;
int *incA;
dague_data_copy_t *gB;
int *incB;
dague_dtd_unpack_args(this_task,
UNPACK_VALUE, &M,
UNPACK_VALUE, &alpha,
UNPACK_DATA, &gA,
UNPACK_VALUE, &incA,
UNPACK_DATA, &gB,
UNPACK_VALUE, &incB
);
void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
void *B = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gB);
CORE_zaxpy(*M, *alpha, A, *incA, B, *incB);
return 0;
}
void MORSE_TASK_zaxpy(MORSE_option_t *options,
int M, MORSE_Complex64_t *alpha,
MORSE_desc_t *A, int Am, int An, int incA,
MORSE_desc_t *B, int Bm, int Bn, int incB)
{
dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
insert_task_generic_fptr(DAGUE_dtd_handle, CORE_zaxpy_parsec, "axpy",
sizeof(int), &M, VALUE,
sizeof(MORSE_Complex64_t), alpha, VALUE,
PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT | REGION_FULL,
sizeof(int), &incA, VALUE,
PASSED_BY_REF, RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ), INOUT | REGION_FULL,
sizeof(int), &incB, VALUE,
0);
}
/**
*
* @copyright (c) 2009-2015 The University of Tennessee and The University
* of Tennessee Research Foundation.
* All rights reserved.
* @copyright (c) 2012-2015 Inria. All rights reserved.
* @copyright (c) 2012-2015 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
*
**/
/**
*
* @file codelet_zgeadd.c
*
* MORSE codelets kernel
* MORSE is a software package provided by Univ. of Tennessee,
* Univ. of California Berkeley and Univ. of Colorado Denver
*
* @version 2.5.0
* @comment This file has been automatically generated
* from Plasma 2.5.0 for MORSE 1.0.0
* @author Mathieu Faverge
* @author Reazul Hoque
* @date 2010-11-15
* @precisions normal z -> c d s
*
**/
#include "runtime/parsec/include/morse_parsec.h"
static int
CORE_zgeadd_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
{
MORSE_enum *trans;
int *M;
int *N;
MORSE_Complex64_t *alpha;
dague_data_copy_t *gA;
int *LDA;
MORSE_Complex64_t *beta;
dague_data_copy_t *gB;
int *LDB;