allow more flexible adjustment of the max number of simultaneous SHTs

This commit is contained in:
Martin Reinecke 2012-11-06 13:34:20 +01:00
parent 5ab4577cf1
commit ada46c7aa5
4 changed files with 20 additions and 15 deletions

View file

@ -593,7 +593,8 @@ static void sharp_build_job_common (sharp_job *job, sharp_jobtype type,
const sharp_geom_info *geom_info, const sharp_alm_info *alm_info, int ntrans, const sharp_geom_info *geom_info, const sharp_alm_info *alm_info, int ntrans,
int dp, int nv) int dp, int nv)
{ {
UTIL_ASSERT((ntrans>0),"bad number of simultaneous transforms"); UTIL_ASSERT((ntrans>0)&&(ntrans<=SHARP_MAXTRANS),
"bad number of simultaneous transforms");
if (type==SHARP_ALM2MAP_DERIV1) spin=1; if (type==SHARP_ALM2MAP_DERIV1) spin=1;
UTIL_ASSERT((spin>=0)&&(spin<=30), "bad spin"); UTIL_ASSERT((spin>=0)&&(spin<=30), "bad spin");
job->type = type; job->type = type;

View file

@ -41,6 +41,7 @@
typedef complex double dcmplx; typedef complex double dcmplx;
// must be in the range [0;6]
#define MAXJOB_SPECIAL 2 #define MAXJOB_SPECIAL 2
#define XCONCAT2(a,b) a##_##b #define XCONCAT2(a,b) a##_##b
@ -81,7 +82,7 @@ void inner_loop (sharp_job *job, const int *ispair,const double *cth,
{ {
switch (njobs*16+job->nv) switch (njobs*16+job->nv)
{ {
#if (MAXJOB_SPECIAL>=1) #if ((MAXJOB_SPECIAL>=1)&&(SHARP_MAXTRANS>=1))
case 0x11: case 0x11:
CONCAT3(inner_loop,1,1) (job, ispair,cth,sth,llim,ulim,gen,mi,idx); CONCAT3(inner_loop,1,1) (job, ispair,cth,sth,llim,ulim,gen,mi,idx);
return; return;
@ -101,7 +102,7 @@ void inner_loop (sharp_job *job, const int *ispair,const double *cth,
CONCAT3(inner_loop,6,1) (job, ispair,cth,sth,llim,ulim,gen,mi,idx); CONCAT3(inner_loop,6,1) (job, ispair,cth,sth,llim,ulim,gen,mi,idx);
return; return;
#endif #endif
#if (MAXJOB_SPECIAL>=2) #if ((MAXJOB_SPECIAL>=2)&&(SHARP_MAXTRANS>=2))
case 0x21: case 0x21:
CONCAT3(inner_loop,1,2) (job, ispair,cth,sth,llim,ulim,gen,mi,idx); CONCAT3(inner_loop,1,2) (job, ispair,cth,sth,llim,ulim,gen,mi,idx);
return; return;
@ -121,7 +122,7 @@ void inner_loop (sharp_job *job, const int *ispair,const double *cth,
CONCAT3(inner_loop,6,2) (job, ispair,cth,sth,llim,ulim,gen,mi,idx); CONCAT3(inner_loop,6,2) (job, ispair,cth,sth,llim,ulim,gen,mi,idx);
return; return;
#endif #endif
#if (MAXJOB_SPECIAL>=3) #if ((MAXJOB_SPECIAL>=3)&&(SHARP_MAXTRANS>=3))
case 0x31: case 0x31:
CONCAT3(inner_loop,1,3) (job, ispair,cth,sth,llim,ulim,gen,mi,idx); CONCAT3(inner_loop,1,3) (job, ispair,cth,sth,llim,ulim,gen,mi,idx);
return; return;
@ -141,7 +142,7 @@ void inner_loop (sharp_job *job, const int *ispair,const double *cth,
CONCAT3(inner_loop,6,3) (job, ispair,cth,sth,llim,ulim,gen,mi,idx); CONCAT3(inner_loop,6,3) (job, ispair,cth,sth,llim,ulim,gen,mi,idx);
return; return;
#endif #endif
#if (MAXJOB_SPECIAL>=4) #if ((MAXJOB_SPECIAL>=4)&&(SHARP_MAXTRANS>=4))
case 0x41: case 0x41:
CONCAT3(inner_loop,1,4) (job, ispair,cth,sth,llim,ulim,gen,mi,idx); CONCAT3(inner_loop,1,4) (job, ispair,cth,sth,llim,ulim,gen,mi,idx);
return; return;
@ -161,7 +162,7 @@ void inner_loop (sharp_job *job, const int *ispair,const double *cth,
CONCAT3(inner_loop,6,4) (job, ispair,cth,sth,llim,ulim,gen,mi,idx); CONCAT3(inner_loop,6,4) (job, ispair,cth,sth,llim,ulim,gen,mi,idx);
return; return;
#endif #endif
#if (MAXJOB_SPECIAL>=5) #if ((MAXJOB_SPECIAL>=5)&&(SHARP_MAXTRANS>=5))
case 0x51: case 0x51:
CONCAT3(inner_loop,1,5) (job, ispair,cth,sth,llim,ulim,gen,mi,idx); CONCAT3(inner_loop,1,5) (job, ispair,cth,sth,llim,ulim,gen,mi,idx);
return; return;
@ -181,7 +182,7 @@ void inner_loop (sharp_job *job, const int *ispair,const double *cth,
CONCAT3(inner_loop,6,5) (job, ispair,cth,sth,llim,ulim,gen,mi,idx); CONCAT3(inner_loop,6,5) (job, ispair,cth,sth,llim,ulim,gen,mi,idx);
return; return;
#endif #endif
#if (MAXJOB_SPECIAL>=6) #if ((MAXJOB_SPECIAL>=6)&&(SHARP_MAXTRANS>=6))
case 0x61: case 0x61:
CONCAT3(inner_loop,1,6) (job, ispair,cth,sth,llim,ulim,gen,mi,idx); CONCAT3(inner_loop,1,6) (job, ispair,cth,sth,llim,ulim,gen,mi,idx);
return; return;
@ -203,7 +204,7 @@ void inner_loop (sharp_job *job, const int *ispair,const double *cth,
#endif #endif
} }
} }
#if (MAXJOB_SPECIAL<6) #if (SHARP_MAXTRANS>MAXJOB_SPECIAL)
else else
{ {
switch (job->nv) switch (job->nv)

View file

@ -1,11 +1,12 @@
#define Tb CONCAT2(Tb,nvec) #define Tb CONCAT2(Tb,nvec)
#define Y(arg) CONCAT2(arg,nvec) #define Y(arg) CONCAT2(arg,nvec)
#include "sharp_core_inc.c" #include "sharp_core_inc.c"
#if (MAXJOB_SPECIAL<6)
#if (SHARP_MAXTRANS>MAXJOB_SPECIAL)
#include "sharp_core_inc3.c" #include "sharp_core_inc3.c"
#endif #endif
#if (MAXJOB_SPECIAL>=1) #if ((MAXJOB_SPECIAL>=1)&&(SHARP_MAXTRANS>=1))
#define njobs 1 #define njobs 1
#define Z(arg) CONCAT3(arg,nvec,njobs) #define Z(arg) CONCAT3(arg,nvec,njobs)
#include "sharp_core_inc2.c" #include "sharp_core_inc2.c"
@ -13,7 +14,7 @@
#undef njobs #undef njobs
#endif #endif
#if (MAXJOB_SPECIAL>=2) #if ((MAXJOB_SPECIAL>=2)&&(SHARP_MAXTRANS>=2))
#define njobs 2 #define njobs 2
#define Z(arg) CONCAT3(arg,nvec,njobs) #define Z(arg) CONCAT3(arg,nvec,njobs)
#include "sharp_core_inc2.c" #include "sharp_core_inc2.c"
@ -21,7 +22,7 @@
#undef njobs #undef njobs
#endif #endif
#if (MAXJOB_SPECIAL>=3) #if ((MAXJOB_SPECIAL>=3)&&(SHARP_MAXTRANS>=3))
#define njobs 3 #define njobs 3
#define Z(arg) CONCAT3(arg,nvec,njobs) #define Z(arg) CONCAT3(arg,nvec,njobs)
#include "sharp_core_inc2.c" #include "sharp_core_inc2.c"
@ -29,7 +30,7 @@
#undef njobs #undef njobs
#endif #endif
#if (MAXJOB_SPECIAL>=4) #if ((MAXJOB_SPECIAL>=4)&&(SHARP_MAXTRANS>=4))
#define njobs 4 #define njobs 4
#define Z(arg) CONCAT3(arg,nvec,njobs) #define Z(arg) CONCAT3(arg,nvec,njobs)
#include "sharp_core_inc2.c" #include "sharp_core_inc2.c"
@ -37,7 +38,7 @@
#undef njobs #undef njobs
#endif #endif
#if (MAXJOB_SPECIAL>=5) #if ((MAXJOB_SPECIAL>=5)&&(SHARP_MAXTRANS>=5))
#define njobs 5 #define njobs 5
#define Z(arg) CONCAT3(arg,nvec,njobs) #define Z(arg) CONCAT3(arg,nvec,njobs)
#include "sharp_core_inc2.c" #include "sharp_core_inc2.c"
@ -45,7 +46,7 @@
#undef njobs #undef njobs
#endif #endif
#if (MAXJOB_SPECIAL>=6) #if ((MAXJOB_SPECIAL>=6)&&(SHARP_MAXTRANS>=6))
#define njobs 6 #define njobs 6
#define Z(arg) CONCAT3(arg,nvec,njobs) #define Z(arg) CONCAT3(arg,nvec,njobs)
#include "sharp_core_inc2.c" #include "sharp_core_inc2.c"

View file

@ -38,6 +38,8 @@
#include "sharp.h" #include "sharp.h"
#define SHARP_MAXTRANS 10
typedef enum { FLOAT, DOUBLE } sharp_fde; typedef enum { FLOAT, DOUBLE } sharp_fde;
typedef struct typedef struct