Commit 2e8a8bb2 authored by Mathieu Faverge's avatar Mathieu Faverge

Merge branch 'interface/parsec' into 'master'

PaRSEC DTD Interface

See merge request solverstack/chameleon!72
parents 1ff90ef1 59361c0a
......@@ -37,6 +37,10 @@ if ( CHAMELEON_SCHED_QUARK )
# No need for those extra diagonale tiles
set( CHAMELEON_COPY_DIAG OFF )
endif()
if ( CHAMELEON_SCHED_PARSEC )
# Actual DIAG can not be used with PaRSEC
set( CHAMELEON_COPY_DIAG OFF )
endif()
mark_as_advanced(CHAMELEON_COPY_DIAG)
......
......@@ -31,8 +31,8 @@
**/
#include "control/common.h"
#define A(m,n) A, (m), (n)
#define T(m,n) T, (m), (n)
#define A(m,n) A, (m), (n)
#define T(m,n) T, (m), (n)
#define T2(m,n) T, (m), ((n)+A->nt)
#if defined(CHAMELEON_COPY_DIAG)
#define D(m,n) D, ((m)/BS), 0
......
......@@ -35,9 +35,9 @@
#define A(_m_,_n_) A, _m_, _n_
#if defined(CHAMELEON_COPY_DIAG)
#define DIAG(_k_) DIAG, _k_, 0
#define D(k) D, k, 0
#else
#define DIAG(_k_) A, _k_, _k_
#define D(k) A, k, k
#endif
#define L(_m_,_n_) L, _m_, _n_
#define IPIV(_m_,_n_) &(IPIV[(int64_t)A->mb*((int64_t)(_m_)+(int64_t)A->mt*(int64_t)(_n_))])
......@@ -45,13 +45,13 @@
/*******************************************************************************
* Parallel tile LU factorization - dynamic scheduling
**/
void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
MORSE_sequence_t *sequence, MORSE_request_t *request)
void morse_pzgetrf_incpiv( MORSE_desc_t *A, MORSE_desc_t *L, MORSE_desc_t *D, int *IPIV,
MORSE_sequence_t *sequence, MORSE_request_t *request )
{
MORSE_desc_t *DIAG = NULL;
MORSE_context_t *morse;
MORSE_option_t options;
size_t h_work_size, d_work_size;
size_t ws_worker = 0;
size_t ws_host = 0;
int k, m, n;
int ldak, ldam;
......@@ -65,14 +65,19 @@ void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
RUNTIME_options_init(&options, morse, sequence, request);
ib = MORSE_IB;
h_work_size = sizeof(MORSE_Complex64_t)*( ib*L->nb );
d_work_size = 0;
RUNTIME_options_ws_alloc( &options, h_work_size, d_work_size );
/*
* zgetrf_incpiv = 0
* zgessm = 0
* ztstrf = A->mb * ib
* zssssm = 0
*/
ws_worker = A->mb * ib;
/* necessary to avoid dependencies between tasks regarding the diag tile */
DIAG = (MORSE_desc_t*)malloc(sizeof(MORSE_desc_t));
morse_zdesc_alloc_diag(*DIAG, A->mb, A->nb, chameleon_min(A->m, A->n), A->nb, 0, 0, chameleon_min(A->m, A->n), A->nb, A->p, A->q);
ws_worker *= sizeof(MORSE_Complex64_t);
ws_host *= sizeof(MORSE_Complex64_t);
RUNTIME_options_ws_alloc( &options, ws_worker, ws_host );
for (k = 0; k < minMNT; k++) {
RUNTIME_iteration_push(morse, k);
......@@ -94,7 +99,7 @@ void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
&options,
MorseUpperLower, tempkm, tempkn, A->nb,
A(k, k), ldak,
DIAG(k), ldak);
D(k), ldak);
#endif
}
......@@ -105,7 +110,7 @@ void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
tempkm, tempnn, tempkm, ib, L->nb,
IPIV(k, k),
L(k, k), L->mb,
DIAG(k), ldak,
D(k), ldak,
A(k, n), ldak);
}
for (m = k+1; m < A->mt; m++) {
......@@ -138,7 +143,5 @@ void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
RUNTIME_options_ws_free(&options);
RUNTIME_options_finalize(&options, morse);
morse_desc_mat_free(DIAG);
free(DIAG);
(void)D;
}
......@@ -37,8 +37,8 @@
/*******************************************************************************
* Parallel forward substitution for tile LU - dynamic scheduling
**/
void morse_pztrsmpl(MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *L, int *IPIV,
MORSE_sequence_t *sequence, MORSE_request_t *request)
void morse_pztrsmpl( MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *L, int *IPIV,
MORSE_sequence_t *sequence, MORSE_request_t *request )
{
MORSE_context_t *morse;
MORSE_option_t options;
......
......@@ -132,6 +132,7 @@ int MORSE_zgelqf( int M, int N,
/* Submit the matrix conversion back */
morse_ztile2lap( morse, &descAl, &descAt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -129,6 +129,8 @@ int MORSE_zgelqf_param( const libhqr_tree_t *qrtree, int M, int N,
/* Submit the matrix conversion back */
morse_ztile2lap( morse, &descAl, &descAt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -152,6 +152,7 @@ int MORSE_zgelqs( int M, int N, int NRHS,
MorseDescInput, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -154,6 +154,8 @@ int MORSE_zgelqs_param( const libhqr_tree_t *qrtree, int M, int N, int NRHS,
MorseDescInput, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -194,6 +194,7 @@ int MORSE_zgels( MORSE_enum trans, int M, int N, int NRHS,
MorseDescInout, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -195,6 +195,8 @@ int MORSE_zgels_param( const libhqr_tree_t *qrtree, MORSE_enum trans, int M, int
MorseDescInout, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -131,6 +131,7 @@ int MORSE_zgeqrf( int M, int N,
/* Submit the matrix conversion back */
morse_ztile2lap( morse, &descAl, &descAt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -134,6 +134,8 @@ int MORSE_zgeqrf_param( const libhqr_tree_t *qrtree, int M, int N,
/* Submit the matrix conversion back */
morse_ztile2lap( morse, &descAl, &descAt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -152,6 +152,7 @@ int MORSE_zgeqrs( int M, int N, int NRHS,
MorseDescInput, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -147,6 +147,8 @@ int MORSE_zgeqrs_param( const libhqr_tree_t *qrtree, int M, int N, int NRHS,
MorseDescInput, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -151,6 +151,7 @@ int MORSE_zgesv_incpiv( int N, int NRHS,
MorseDescInout, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descL, sequence );
morse_sequence_wait( morse, sequence );
......@@ -267,6 +268,7 @@ int MORSE_zgesv_incpiv_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
MORSE_sequence_t *sequence, MORSE_request_t *request )
{
MORSE_context_t *morse;
MORSE_desc_t D, *Dptr = NULL;
morse = morse_context_self();
if (morse == NULL) {
......@@ -313,11 +315,28 @@ int MORSE_zgesv_incpiv_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
return MORSE_SUCCESS;
*/
morse_pzgetrf_incpiv( A, L, IPIV, sequence, request );
#if defined(CHAMELEON_COPY_DIAG)
{
int n = chameleon_min(A->mt, A->nt) * A->nb;
morse_zdesc_alloc(D, A->mb, A->nb, A->m, n, 0, 0, A->m, n, );
Dptr = &D;
}
#endif
morse_pzgetrf_incpiv( A, L, Dptr, IPIV, sequence, request );
morse_pztrsmpl( A, B, L, IPIV, sequence, request );
morse_pztrsm( MorseLeft, MorseUpper, MorseNoTrans, MorseNonUnit, (MORSE_Complex64_t)1.0, A, B, sequence, request );
if (Dptr != NULL) {
MORSE_Desc_Flush( A, sequence );
MORSE_Desc_Flush( L, sequence );
MORSE_Desc_Flush( Dptr, sequence );
MORSE_Desc_Flush( B, sequence );
morse_sequence_wait( morse, sequence );
morse_desc_mat_free( Dptr );
}
(void)D;
return MORSE_SUCCESS;
}
......@@ -133,6 +133,7 @@ int MORSE_zgetrf_incpiv( int M, int N,
/* Submit the matrix conversion back */
morse_ztile2lap( morse, &descAl, &descAt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descL, sequence );
morse_sequence_wait( morse, sequence );
......@@ -244,6 +245,7 @@ int MORSE_zgetrf_incpiv_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
MORSE_sequence_t *sequence, MORSE_request_t *request )
{
MORSE_context_t *morse;
MORSE_desc_t D, *Dptr = NULL;
morse = morse_context_self();
if (morse == NULL) {
......@@ -286,7 +288,23 @@ int MORSE_zgetrf_incpiv_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
return MORSE_SUCCESS;
*/
morse_pzgetrf_incpiv( A, L, IPIV, sequence, request );
#if defined(CHAMELEON_COPY_DIAG)
{
int n = chameleon_min(A->mt, A->nt) * A->nb;
morse_zdesc_alloc(D, A->mb, A->nb, A->m, n, 0, 0, A->m, n, );
Dptr = &D;
}
#endif
morse_pzgetrf_incpiv( A, L, Dptr, IPIV, sequence, request );
if (Dptr != NULL) {
MORSE_Desc_Flush( A, sequence );
MORSE_Desc_Flush( L, sequence );
MORSE_Desc_Flush( Dptr, sequence );
morse_sequence_wait( morse, sequence );
morse_desc_mat_free( Dptr );
}
(void)D;
return MORSE_SUCCESS;
}
......@@ -157,6 +157,7 @@ int MORSE_zgetrs_incpiv( MORSE_enum trans, int N, int NRHS,
MorseDescInput, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descL, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -232,6 +232,8 @@ int MORSE_ztpgqrt( int M, int N, int K, int L,
MorseDescInout, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descQ2l, &descQ2t,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT1, sequence );
MORSE_Desc_Flush( descT2, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -200,6 +200,7 @@ int MORSE_ztpqrt( int M, int N, int L,
MorseDescInout, MorseUpper, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -151,6 +151,7 @@ int MORSE_zunglq( int M, int N, int K,
MorseDescInput, MorseUpper, sequence, &request );
morse_ztile2lap( morse, &descQl, &descQt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -148,6 +148,8 @@ int MORSE_zunglq_param( const libhqr_tree_t *qrtree, int M, int N, int K,
MorseDescInput, MorseUpper, sequence, &request );
morse_ztile2lap( morse, &descQl, &descQt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -150,6 +150,7 @@ int MORSE_zungqr( int M, int N, int K,
MorseDescInput, MorseLower, sequence, &request );
morse_ztile2lap( morse, &descQl, &descQt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -149,6 +149,8 @@ int MORSE_zungqr_param( const libhqr_tree_t *qrtree,
MorseDescInput, MorseLower, sequence, &request );
morse_ztile2lap( morse, &descQl, &descQt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -188,6 +188,7 @@ int MORSE_zunmlq( MORSE_enum side, MORSE_enum trans, int M, int N, int K,
MorseDescInput, MorseUpper, sequence, &request );
morse_ztile2lap( morse, &descCl, &descCt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -187,6 +187,8 @@ int MORSE_zunmlq_param( const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_enum
MorseDescInput, MorseUpper, sequence, &request );
morse_ztile2lap( morse, &descCl, &descCt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -191,6 +191,7 @@ int MORSE_zunmqr( MORSE_enum side, MORSE_enum trans, int M, int N, int K,
MorseDescInput, MorseLower, sequence, &request );
morse_ztile2lap( morse, &descCl, &descCt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -192,6 +192,8 @@ int MORSE_zunmqr_param( const libhqr_tree_t *qrtree,
MorseDescInput, MorseLower, sequence, &request );
morse_ztile2lap( morse, &descCl, &descCt,
MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence );
......
......@@ -78,7 +78,7 @@ void morse_pzgemm(MORSE_enum transA, MORSE_enum transB, MORSE_Complex64_t alpha,
void morse_pzgeqrf(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *D, MORSE_sequence_t *sequence, MORSE_request_t *request);
void morse_pzgeqrfrh(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *D, int BS, MORSE_sequence_t *sequence, MORSE_request_t *request);
void morse_pzgetmi2(MORSE_enum idep, MORSE_enum odep, MORSE_enum storev, int m, int n, int mb, int nb, MORSE_Complex64_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request);
void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, MORSE_desc_t *D, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request);
void morse_pzgetrf_nopiv(MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
void morse_pzgetrf_reclap(MORSE_desc_t *A, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request);
void morse_pzgetrf_rectil(MORSE_desc_t *A, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request);
......
......@@ -199,6 +199,8 @@ int MORSE_Dealloc_Workspace(MORSE_desc_t **desc)
return MORSE_ERR_UNALLOCATED;
}
morse_desc_mat_free( *desc );
RUNTIME_desc_destroy( *desc );
free(*desc);
*desc = NULL;
return MORSE_SUCCESS;
......
......@@ -85,7 +85,6 @@ set(RUNTIME_COMMON
control/runtime_descriptor.c
control/runtime_options.c
control/runtime_profiling.c
codelets/codelet_dataflush.c
${RUNTIME_COMMON_GENERATED}
)
......
/**
*
* @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-2016 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 "chameleon_parsec.h"
#include "chameleon/morse_tasks.h"
void MORSE_TASK_flush_data( const MORSE_option_t *options,
const MORSE_desc_t *A, int Am, int An )
{
parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
parsec_dtd_data_flush( PARSEC_dtd_taskpool, RTBLKADDR( A, MORSE_Complex64_t, Am, An ) );
}
void MORSE_TASK_flush_desc( const MORSE_option_t *options,
MORSE_enum uplo, const MORSE_desc_t *A )
{
parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
parsec_dtd_data_flush_all( PARSEC_dtd_taskpool, (parsec_data_collection_t*)(A->schedopt) );
(void)uplo;
}
void MORSE_TASK_flush_all()
{
}
......@@ -24,31 +24,25 @@
#include "chameleon/morse_tasks_z.h"
#include "coreblas/coreblas_z.h"
static int
CORE_dzasum_parsec(parsec_execution_stream_t *context,
parsec_task_t *this_task)
static inline int
CORE_dzasum_parsec( parsec_execution_stream_t *context,
parsec_task_t *this_task )
{
MORSE_enum *storev;
MORSE_enum *uplo;
int *M;
int *N;
MORSE_enum storev;
MORSE_enum uplo;
int M;
int N;
MORSE_Complex64_t *A;
int *lda;
int lda;
double *work;
parsec_dtd_unpack_args(
this_task,
UNPACK_VALUE, &storev,
UNPACK_VALUE, &uplo,
UNPACK_VALUE, &M,
UNPACK_VALUE, &N,
UNPACK_DATA, &A,
UNPACK_VALUE, &lda,
UNPACK_DATA, &work );
this_task, &storev, &uplo, &M, &N, &A, &lda, &work );
CORE_dzasum(*storev, *uplo, *M, *N, A, *lda, work);
CORE_dzasum( storev, uplo, M, N, A, lda, work );
return 0;
(void)context;
return PARSEC_HOOK_RETURN_DONE;
}
void MORSE_TASK_dzasum(const MORSE_option_t *options,
......@@ -67,5 +61,5 @@ void MORSE_TASK_dzasum(const MORSE_option_t *options,
PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT,
sizeof(int), &lda, VALUE,
PASSED_BY_REF, RTBLKADDR( B, double, Bm, Bn ), INOUT,
0);
PARSEC_DTD_ARG_END );
}
......@@ -24,32 +24,28 @@
#include "chameleon/morse_tasks_z.h"
#include "coreblas/coreblas_z.h"
static int
CORE_zaxpy_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
static inline int
CORE_zaxpy_parsec( parsec_execution_stream_t *context,
parsec_task_t *this_task )
{
int *M;
MORSE_Complex64_t *alpha;
int M;
MORSE_Complex64_t alpha;
MORSE_Complex64_t *A;
int *incA;
int incA;
MORSE_Complex64_t *B;
int *incB;
int incB;
parsec_dtd_unpack_args(
this_task,
UNPACK_VALUE, &M,
UNPACK_VALUE, &alpha,
UNPACK_DATA, &A,
UNPACK_VALUE, &incA,
UNPACK_DATA, &B,
UNPACK_VALUE, &incB );
this_task, &M, &alpha, &A, &incA, &B, &incB );
CORE_zaxpy(*M, *alpha, A, *incA, B, *incB);
CORE_zaxpy( M, alpha, A, incA, B, incB );
return 0;
(void)context;
return PARSEC_HOOK_RETURN_DONE;
}
void MORSE_TASK_zaxpy(const MORSE_option_t *options,
int M, MORSE_Complex64_t *alpha,
int M, MORSE_Complex64_t alpha,
const MORSE_desc_t *A, int Am, int An, int incA,
const MORSE_desc_t *B, int Bm, int Bn, int incB)
{
......@@ -63,5 +59,5 @@ void MORSE_TASK_zaxpy(const MORSE_option_t *options,
sizeof(int), &incA, VALUE,
PASSED_BY_REF, RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ), INOUT,
sizeof(int), &incB, VALUE,
0);
PARSEC_DTD_ARG_END );
}
......@@ -27,29 +27,23 @@
#include "coreblas/coreblas_z.h"
static inline int
CORE_zbuild_parsec(parsec_execution_stream_t *context,
parsec_task_t *this_task)
CORE_zbuild_parsec( parsec_execution_stream_t *context,
parsec_task_t *this_task )
{
MORSE_Complex64_t *A;
int lda;
void *user_data;
void (*user_build_callback)(int row_min, int row_max, int col_min, int col_max, void *buffer, int ld, void *user_data) ;
void (*user_build_callback)( int row_min, int row_max, int col_min, int col_max,
void *buffer, int ld, void *user_data );
int row_min, row_max, col_min, col_max;
parsec_dtd_unpack_args(
this_task,
UNPACK_VALUE, &row_min,
UNPACK_VALUE, &row_max,
UNPACK_VALUE, &col_min,
UNPACK_VALUE, &col_max,
UNPACK_DATA, &A,
UNPACK_VALUE, &lda,
UNPACK_VALUE, &user_data,
UNPACK_VALUE, &user_build_callback );
this_task, &row_min, &row_max, &col_min, &col_max, &A, &lda, &user_data, &user_build_callback );
user_build_callback(row_min, row_max, col_min, col_max, A, lda, user_data);
return 0;
(void)context;
return PARSEC_HOOK_RETURN_DONE;
}
void MORSE_TASK_zbuild( const MORSE_option_t *options,
......@@ -73,5 +67,5 @@ void MORSE_TASK_zbuild( const MORSE_option_t *options,
sizeof(int), &lda, VALUE,
sizeof(void*), &user_data, VALUE,
sizeof(void*), &user_build_callback, VALUE,
0);
PARSEC_DTD_ARG_END );
}
......@@ -29,34 +29,27 @@
#include "chameleon/morse_tasks_z.h"
#include "coreblas/coreblas_z.h"
static int
CORE_zgeadd_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
static inline int
CORE_zgeadd_parsec( parsec_execution_stream_t *context,
parsec_task_t *this_task )
{
MORSE_enum *trans;
int *M;
int *N;
MORSE_Complex64_t *alpha;
MORSE_enum trans;
int M;
int N;