PLASMA
2.4.5
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
Main Page
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
tile.c
Go to the documentation of this file.
1
14
#include "
common.h
"
15
#include "
auxiliary.h
"
16
#include "
tile.h
"
17
18
/***************************************************************************/
41
int
PLASMA_Lapack_to_Tile
(
void
*Af77,
int
LDA,
PLASMA_desc
*
A
)
42
{
43
PLASMA_desc
descA = *
A
;
44
plasma_context_t
*
plasma
;
45
PLASMA_sequence
*sequence = NULL;
46
PLASMA_request
request;
47
int
status;
48
49
plasma =
plasma_context_self
();
50
if
(plasma == NULL) {
51
plasma_fatal_error
(
"PLASMA_Lapack_to_Tile"
,
"PLASMA not initialized"
);
52
return
PLASMA_ERR_NOT_INITIALIZED
;
53
}
54
/* Check descriptor for correctness */
55
if
(
plasma_desc_check
(&descA) !=
PLASMA_SUCCESS
) {
56
plasma_error
(
"PLASMA_Lapack_to_Tile"
,
"invalid descriptor"
);
57
return
PLASMA_ERR_ILLEGAL_VALUE
;
58
}
59
plasma_sequence_create
(plasma, &sequence);
60
switch
( A->
dtyp
) {
61
case
PlasmaRealFloat
:
62
plasma_parallel_call_5
(
63
plasma_pslapack_to_tile
,
64
float
*, Af77,
65
int
, LDA,
66
PLASMA_desc
, descA,
67
PLASMA_sequence
*, sequence,
68
PLASMA_request
*, &request);
69
break
;
70
case
PlasmaRealDouble
:
71
plasma_parallel_call_5
(
72
plasma_pdlapack_to_tile
,
73
double
*, Af77,
74
int
, LDA,
75
PLASMA_desc
, descA,
76
PLASMA_sequence
*, sequence,
77
PLASMA_request
*, &request);
78
break
;
79
case
PlasmaComplexFloat
:
80
plasma_parallel_call_5
(
81
plasma_pclapack_to_tile
,
82
PLASMA_Complex32_t
*, Af77,
83
int
, LDA,
84
PLASMA_desc
, descA,
85
PLASMA_sequence
*, sequence,
86
PLASMA_request
*, &request);
87
break
;
88
case
PlasmaComplexDouble
:
89
plasma_parallel_call_5
(
90
plasma_pzlapack_to_tile
,
91
PLASMA_Complex64_t
*, Af77,
92
int
, LDA,
93
PLASMA_desc
, descA,
94
PLASMA_sequence
*, sequence,
95
PLASMA_request
*, &request);
96
break
;
97
default
:
98
plasma_error
(
"PLASMA_Lapack_to_Tile"
,
"Type unknown"
);
99
}
100
plasma_dynamic_sync
();
101
status = sequence->
status
;
102
plasma_sequence_destroy
(plasma, sequence);
103
return
status;
104
}
105
106
/***************************************************************************/
129
int
PLASMA_Tile_to_Lapack
(
PLASMA_desc
*
A
,
void
*Af77,
int
LDA)
130
{
131
PLASMA_desc
descA = *
A
;
132
plasma_context_t
*
plasma
;
133
PLASMA_sequence
*sequence = NULL;
134
PLASMA_request
request;
135
int
status;
136
137
plasma =
plasma_context_self
();
138
if
(plasma == NULL) {
139
plasma_fatal_error
(
"PLASMA_Tile_to_Lapack"
,
"PLASMA not initialized"
);
140
return
PLASMA_ERR_NOT_INITIALIZED
;
141
}
142
/* Check descriptor for correctness */
143
if
(
plasma_desc_check
(&descA) !=
PLASMA_SUCCESS
) {
144
plasma_error
(
"PLASMA_Tile_to_Lapack"
,
"invalid descriptor"
);
145
return
PLASMA_ERR_ILLEGAL_VALUE
;
146
}
147
plasma_sequence_create
(plasma, &sequence);
148
switch
( A->
dtyp
) {
149
case
PlasmaRealFloat
:
150
plasma_parallel_call_5
(
151
plasma_pstile_to_lapack
,
152
PLASMA_desc
, descA,
153
float
*, Af77,
154
int
, LDA,
155
PLASMA_sequence
*, sequence,
156
PLASMA_request
*, &request);
157
break
;
158
case
PlasmaRealDouble
:
159
plasma_parallel_call_5
(
160
plasma_pdtile_to_lapack
,
161
PLASMA_desc
, descA,
162
double
*, Af77,
163
int
, LDA,
164
PLASMA_sequence
*, sequence,
165
PLASMA_request
*, &request);
166
break
;
167
case
PlasmaComplexFloat
:
168
plasma_parallel_call_5
(
169
plasma_pctile_to_lapack
,
170
PLASMA_desc
, descA,
171
PLASMA_Complex32_t
*, Af77,
172
int
, LDA,
173
PLASMA_sequence
*, sequence,
174
PLASMA_request
*, &request);
175
break
;
176
case
PlasmaComplexDouble
:
177
plasma_parallel_call_5
(
178
plasma_pztile_to_lapack
,
179
PLASMA_desc
, descA,
180
PLASMA_Complex64_t
*, Af77,
181
int
, LDA,
182
PLASMA_sequence
*, sequence,
183
PLASMA_request
*, &request);
184
break
;
185
default
:
186
plasma_error
(
"PLASMA_Tile_to_Lapack"
,
"Type unknown"
);
187
}
188
plasma_dynamic_sync
();
189
status = sequence->
status
;
190
plasma_sequence_destroy
(plasma, sequence);
191
return
status;
192
}
plasma_2.4.5
control
tile.c
Generated on Mon Jul 9 2012 12:44:59 for PLASMA by
1.8.1