Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
AGULLO Emmanuel
Chameleon
Commits
8f7daef4
Commit
8f7daef4
authored
Jan 22, 2018
by
Mathieu Faverge
Browse files
Move zpotrf to the new conversion functions
parent
63273913
Changes
2
Hide whitespace changes
Inline
Side-by-side
compute/zpotrf.c
View file @
8f7daef4
...
...
@@ -91,7 +91,7 @@ int MORSE_zpotrf(MORSE_enum uplo, int N,
MORSE_context_t
*
morse
;
MORSE_sequence_t
*
sequence
=
NULL
;
MORSE_request_t
request
=
MORSE_REQUEST_INITIALIZER
;
MORSE_desc_t
descA
;
MORSE_desc_t
descA
t
,
descAl
;
morse
=
morse_context_self
();
if
(
morse
==
NULL
)
{
...
...
@@ -123,29 +123,25 @@ int MORSE_zpotrf(MORSE_enum uplo, int N,
}
/* Set NT */
NB
=
MORSE_NB
;
NB
=
MORSE_NB
;
morse_sequence_create
(
morse
,
&
sequence
);
/* if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
morse_zooplap2tile
(
descA
,
A
,
NB
,
NB
,
LDA
,
N
,
0
,
0
,
N
,
N
,
sequence
,
&
request
,
morse_desc_mat_free
(
&
(
descA
))
);
/* } else {*/
/* morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, N, N,*/
/* sequence, &request);*/
/* }*/
/* Submit the matrix conversion */
morse_zlap2tile
(
morse
,
&
descAl
,
&
descAt
,
uplo
,
A
,
NB
,
NB
,
LDA
,
N
,
N
,
N
,
sequence
,
&
request
);
/* Call the tile interface */
MORSE_zpotrf_Tile_Async
(
uplo
,
&
descA
,
sequence
,
&
request
);
MORSE_zpotrf_Tile_Async
(
uplo
,
&
descA
t
,
sequence
,
&
request
);
/*
if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {
*/
morse_z
oop
tile2lap
(
descA
,
A
,
NB
,
NB
,
LDA
,
N
,
sequence
,
&
request
);
morse_sequence_wait
(
morse
,
s
eque
nce
);
morse_desc_mat_free
(
&
descA
);
/*
} else {*/
/* morse_ziptile2lap( descA, A, NB, NB, LDA, N, sequence, &request);*/
/*
morse_sequence_wait(morse, sequence);
*/
/*
}*/
/* Submit the matrix conversion back
*/
morse_ztile2lap
(
morse
,
&
descA
l
,
&
descAt
,
uplo
,
A
,
NB
,
NB
,
LDA
,
N
,
N
,
N
,
sequence
,
&
r
eque
st
);
morse_sequence_wait
(
morse
,
sequence
);
/* Cleanup the temporary data
*/
morse_ztile2lap_cleanup
(
morse
,
&
descAl
,
&
descAt
);
status
=
sequence
->
status
;
morse_sequence_destroy
(
morse
,
sequence
);
...
...
control/compute_z.h
View file @
8f7daef4
...
...
@@ -31,7 +31,7 @@
/***************************************************************************//**
* Macro for matrix conversion / Lapack interface
**/
#define morse_zdesc_alloc_diag(descA, mb, nb, lm, ln, i, j, m, n, p, q) \
#define morse_zdesc_alloc_diag(
descA, mb, nb, lm, ln, i, j, m, n, p, q) \
descA = morse_desc_init_diag( \
MorseComplexDouble, (mb), (nb), ((mb)*(nb)), \
(m), (n), (i), (j), (m), (n), p, q); \
...
...
@@ -171,3 +171,82 @@ void morse_pzunglq_param(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_des
void
morse_pzungqr_param
(
const
libhqr_tree_t
*
qrtree
,
MORSE_desc_t
*
A
,
MORSE_desc_t
*
Q
,
MORSE_desc_t
*
TS
,
MORSE_desc_t
*
TT
,
MORSE_desc_t
*
D
,
MORSE_sequence_t
*
sequence
,
MORSE_request_t
*
request
);
/**
* @brief Internal function to convert the lapack format to tile format in
* LAPACK interface calls
*/
static
inline
int
morse_zlap2tile
(
MORSE_context_t
*
morse
,
MORSE_desc_t
*
descAl
,
MORSE_desc_t
*
descAt
,
MORSE_enum
uplo
,
MORSE_Complex64_t
*
A
,
int
mb
,
int
nb
,
int
lm
,
int
ln
,
int
m
,
int
n
,
MORSE_sequence_t
*
seq
,
MORSE_request_t
*
req
)
{
/* Initialize the Lapack descriptor */
*
descAl
=
morse_desc_init_user
(
MorseComplexDouble
,
mb
,
nb
,
(
mb
)
*
(
nb
),
lm
,
ln
,
0
,
0
,
m
,
n
,
1
,
1
,
morse_getaddr_cm
,
morse_getblkldd_cm
,
NULL
);
descAl
->
mat
=
A
;
descAl
->
styp
=
MorseCM
;
/* Initialize the tile descriptor */
*
descAt
=
morse_desc_init
(
MorseComplexDouble
,
mb
,
nb
,
(
mb
)
*
(
nb
),
lm
,
ln
,
0
,
0
,
m
,
n
,
1
,
1
);
RUNTIME_desc_create
(
descAl
);
RUNTIME_desc_create
(
descAt
);
if
(
MORSE_TRANSLATION
==
MORSE_OUTOFPLACE
)
{
if
(
morse_desc_mat_alloc
(
descAt
)
)
{
morse_error
(
"morse_zlap2tile"
,
"morse_desc_mat_alloc() failed"
);
RUNTIME_desc_destroy
(
descAl
);
RUNTIME_desc_destroy
(
descAt
);
return
MORSE_ERR_OUT_OF_RESOURCES
;
}
morse_pzlacpy
(
uplo
,
descAl
,
descAt
,
seq
,
req
);
}
else
{
morse_fatal_error
(
"morse_zlap2tile"
,
"INPLACE translation not supported yet"
);
descAt
->
mat
=
A
;
/* MORSE_zgecfi_Async( lm, ln, A, MorseCM, mb, nb, */
/* MorseCCRB, mb, nb, seq, req ); */
}
}
/**
* @brief Internal function to convert back the tile format to the lapack format
* in LAPACK interface calls
*/
static
inline
int
morse_ztile2lap
(
MORSE_context_t
*
morse
,
MORSE_desc_t
*
descAl
,
MORSE_desc_t
*
descAt
,
MORSE_enum
uplo
,
MORSE_Complex64_t
*
A
,
int
mb
,
int
nb
,
int
lm
,
int
ln
,
int
m
,
int
n
,
MORSE_sequence_t
*
seq
,
MORSE_request_t
*
req
)
{
if
(
MORSE_TRANSLATION
==
MORSE_OUTOFPLACE
)
{
morse_pzlacpy
(
uplo
,
descAt
,
descAl
,
seq
,
req
);
}
else
{
morse_fatal_error
(
"morse_ztile2lap"
,
"INPLACE translation not supported yet"
);
/* MORSE_zgecfi_Async( lm, ln, A, MorseCCRB, mb, nb, */
/* MorseCM, mb, nb, seq, req ); */
}
RUNTIME_desc_flush
(
descAl
,
seq
);
RUNTIME_desc_flush
(
descAt
,
seq
);
}
/**
* @brief Internal function to cleanup the temporary data from the layout
* conversions in LAPACK interface calls
*/
static
inline
int
morse_ztile2lap_cleanup
(
MORSE_context_t
*
morse
,
MORSE_desc_t
*
descAl
,
MORSE_desc_t
*
descAt
)
{
if
(
MORSE_TRANSLATION
==
MORSE_OUTOFPLACE
)
{
morse_desc_mat_free
(
descAt
);
}
RUNTIME_desc_destroy
(
descAl
);
RUNTIME_desc_destroy
(
descAt
);
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment