10 #include "../../datastructures/datastructures.h"
11 #include "../../shared/io/Comm/IssmComm.h"
12 #include "../toolkitsenums.h"
16 #define MATRIXBUCKETSIZEOFREQUESTS 7
17 #define VECTORBUCKETSIZEOFREQUESTS 5
45 this->idxm=xNew<int>(this->m);
46 xMemCpy(this->idxm,idxmin,this->m);
49 this->idxn=xNew<int>(this->n);
50 xMemCpy(this->idxn,idxnin,this->n);
53 this->values=xNew<doubletype>(this->n*this->m);
54 xMemCpy(this->values,valuesin,this->n*this->m);
64 this->idxm=xNew<int>(this->m);
65 xMemCpy(this->idxm,idxmin,this->m);
67 this->values=xNew<doubletype>(this->m);
68 xMemCpy(this->values,valuesin,this->m);
74 xDelete<doubletype>(
values);
92 _printf_(
"num rows: "<<this->m<<
" num cols: "<<this->n <<
"\n");
99 _printf_(
"num rows: "<<this->m<<
" num cols: "<<this->n <<
"\n");
101 for (i=0;i<this->
m;i++){
102 _printf_(
"row "<<this->idxm[i]<<
", column indices: \n");
103 for (j=0;j<this->
n;j++){
104 _printf_(
" "<<this->idxn[j] <<
"\n");
107 for (j=0;j<this->
n;j++){
108 _printf_(
" "<<this->values[
m*i+j] <<
"\n");
113 for (i=0;i<this->
m;i++){
114 _printf_(
"row "<<this->idxm[i]<<
", value " << this->values[i] <<
"\n");
117 else _error_(
"unknown type of bucket!");
127 if (this->type==
MATRIX_BUCKET)
return new Bucket(this->m,this->idxm,this->n,this->idxn,this->values,this->mode);
128 else if (this->type==
VECTOR_BUCKET)
return new Bucket(this->m,this->idxm,this->values,this->mode);
129 else _error_(
"No Copy of Bucket because its type is invalid."); };
131 void Marshall(
char** pmarshalled_data,
int* pmarshalled_data_size,
int marshall_direction){
132 _error_(
"not implemented yet!");
141 for(
int i=0;i<
m;i++){
142 if (rowranks[
idxm[i]]==rank_i){
159 void Marshall(
int** prow_indices_forcpu,
int** pcol_indices_forcpu,doubletype** pvalues_forcpu,
int** pmodes_forcpu){
166 int *row_indices_forcpu = NULL;
167 int *col_indices_forcpu = NULL;
168 doubletype *values_forcpu = NULL;
169 int *modes_forcpu = NULL;
172 row_indices_forcpu=*prow_indices_forcpu;
173 col_indices_forcpu=*pcol_indices_forcpu;
174 values_forcpu=*pvalues_forcpu;
175 modes_forcpu=*pmodes_forcpu;
180 row_indices_forcpu[i*
n+j]=
idxm[i];
181 col_indices_forcpu[i*
n+j]=
idxn[j];
183 modes_forcpu[i*
n+j]=
mode;
188 row_indices_forcpu+=(
m*
n);
189 col_indices_forcpu+=(
m*
n);
190 values_forcpu+=(
m*
n);
194 *prow_indices_forcpu=row_indices_forcpu;
195 *pcol_indices_forcpu=col_indices_forcpu;
196 *pvalues_forcpu=values_forcpu;
197 *pmodes_forcpu=modes_forcpu;
200 void Marshall(
int** prow_indices_forcpu,doubletype** pvalues_forcpu,
int** pmodes_forcpu){
206 int *row_indices_forcpu = NULL;
207 doubletype *values_forcpu = NULL;
208 int *modes_forcpu = NULL;
211 row_indices_forcpu=*prow_indices_forcpu;
212 values_forcpu=*pvalues_forcpu;
213 modes_forcpu=*pmodes_forcpu;
217 row_indices_forcpu[i]=
idxm[i];
218 values_forcpu[i]=
values[i];
219 modes_forcpu[i]=
mode;
223 row_indices_forcpu+=
m;
228 *prow_indices_forcpu=row_indices_forcpu;
229 *pvalues_forcpu=values_forcpu;
230 *pmodes_forcpu=modes_forcpu;