allow the user to tweak chunk sizes
This commit is contained in:
parent
549d1c35e1
commit
5ab4577cf1
2 changed files with 10 additions and 1 deletions
|
@ -43,9 +43,10 @@
|
||||||
typedef complex double dcmplx;
|
typedef complex double dcmplx;
|
||||||
typedef complex float fcmplx;
|
typedef complex float fcmplx;
|
||||||
|
|
||||||
|
static int chunksize_min=500, nchunks_max=10;
|
||||||
|
|
||||||
static void get_chunk_info (int ndata, int nmult, int *nchunks, int *chunksize)
|
static void get_chunk_info (int ndata, int nmult, int *nchunks, int *chunksize)
|
||||||
{
|
{
|
||||||
static const int chunksize_min=500, nchunks_max=10;
|
|
||||||
*chunksize = IMAX(chunksize_min,(ndata+nchunks_max-1)/nchunks_max);
|
*chunksize = IMAX(chunksize_min,(ndata+nchunks_max-1)/nchunks_max);
|
||||||
*chunksize = ((*chunksize+nmult-1)/nmult)*nmult;
|
*chunksize = ((*chunksize+nmult-1)/nmult)*nmult;
|
||||||
*nchunks = (ndata+*chunksize-1) / *chunksize;
|
*nchunks = (ndata+*chunksize-1) / *chunksize;
|
||||||
|
@ -625,6 +626,11 @@ void sharp_execute (sharp_jobtype type, int spin, int add_output, void *alm,
|
||||||
if (opcnt!=NULL) *opcnt = job.opcnt;
|
if (opcnt!=NULL) *opcnt = job.opcnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sharp_set_chunksize_min(int new_chunksize_min)
|
||||||
|
{ chunksize_min=new_chunksize_min; }
|
||||||
|
void sharp_set_nchunks_max(int new_nchunks_max)
|
||||||
|
{ nchunks_max=new_nchunks_max; }
|
||||||
|
|
||||||
int sharp_get_nv_max (void)
|
int sharp_get_nv_max (void)
|
||||||
{ return 6; }
|
{ return 6; }
|
||||||
|
|
||||||
|
|
|
@ -179,6 +179,9 @@ void sharp_execute (sharp_jobtype type, int spin, int add_output, void *alm,
|
||||||
void *map, const sharp_geom_info *geom_info, const sharp_alm_info *alm_info,
|
void *map, const sharp_geom_info *geom_info, const sharp_alm_info *alm_info,
|
||||||
int ntrans, int dp, int nv, double *time, unsigned long long *opcnt);
|
int ntrans, int dp, int nv, double *time, unsigned long long *opcnt);
|
||||||
|
|
||||||
|
void sharp_set_chunksize_min(int new_chunksize_min);
|
||||||
|
void sharp_set_nchunks_max(int new_nchunks_max);
|
||||||
|
|
||||||
/*! \} */
|
/*! \} */
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue