From f24220169798243dce330be9881903eb8f63d370 Mon Sep 17 00:00:00 2001 From: Qianqian Fang Date: Sun, 21 Jul 2019 16:45:38 -0400 Subject: [PATCH] add replay support --- example/digimouse/digimouse_0.8mm.bin.lzma | Bin 141348 -> 0 bytes example/validation/run_validation.sh | 2 +- example/validation/run_validation_b.sh | 3 +- src/mcx_core.cl | 71 +++++++++++--- src/mcx_host.cpp | 93 ++++++++++++------ src/mcx_host.hpp | 2 + src/mcx_utils.c | 108 ++++++++++++++++----- 7 files changed, 209 insertions(+), 70 deletions(-) delete mode 100644 example/digimouse/digimouse_0.8mm.bin.lzma diff --git a/example/digimouse/digimouse_0.8mm.bin.lzma b/example/digimouse/digimouse_0.8mm.bin.lzma deleted file mode 100644 index 140d54466b32ea0cb6fe241514f81ff18427e0c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141348 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%0D)fEvwN$>Av*P^c~$eC`o~cq=+vmx!b* zBASCaP4sC6sI&c36w#cp<{3%{`fN*MCr;s)=yIg}2xn zLr6T}ZG8!+G~`pdNap)1PZ^;wnNxLc9Zbx0Khrz!uT(YS4YS6|(%Eeq*3hvC%(j31EQO`?Olz%p@p}Cb&3-3G#Q1a>xbnDoq(3v z8E(CgPSxl7@HwerV%y?#+Ufz|tCCbRTg-?-;VvC}E#=U78`J>szQe+OWmY=dTfN5! zdB*ix>7ns6w>FDvBbk#EJNy-E-C1={2No#K*5)Yf=4vdTQSN?eztW2V?0Vt!=es7} zCzlh>D%K=6XYGCtb1U_PFFZAW3N2ft?aMv2V$o9HjbinB`{J7b|G!G%#-aLmpry5T zp%g*3nQ@s%?if`8HGM73dDF>CpiKl+ABlft;moX z9^!SJ$f1J-9v^huxd42fL>fCC5>Yu+gwBTwV&2Sdr1Apa+M`J>x{ZℜX^Cf8I8z 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 K(gXkcqgPrC9!W6( diff --git a/example/validation/run_validation.sh b/example/validation/run_validation.sh index 0231958..baccd29 100755 --- a/example/validation/run_validation.sh +++ b/example/validation/run_validation.sh @@ -1,2 +1,2 @@ #!/bin/sh -time ../../bin/mcxcl -t 32768 -T 64 -g 50 -n 1e7 -f validation.inp -s semi_infinite -r 1 -a 0 -b 0 -d 0 +time ../../bin/mcxcl -A -n 1e7 -f validation.inp -s semi_infinite -a 0 -b 0 -d 0 diff --git a/example/validation/run_validation_b.sh b/example/validation/run_validation_b.sh index 9063cc6..a73c77e 100755 --- a/example/validation/run_validation_b.sh +++ b/example/validation/run_validation_b.sh @@ -1,3 +1,2 @@ #!/bin/sh -time ../../bin/mcx -t 1792 -g 50 -m 596072 -f validation_b.inp -s semi_infinite_b -r 160 -a 0 -b 1 -B 0 -U 1 -#time ../../bin/mcx -t 1024 -g 50 -m 1000000 -f validation_dark_b.inp -s semi_infinite_dark_b -r 18 -a 0 -b 1 -U 1 +time ../../bin/mcxcl -A 1 -f validation_b.inp -s semi_infinite_b -a 0 -b 1 -U 1 diff --git a/src/mcx_core.cl b/src/mcx_core.cl index 7fe749c..5ab7b5d 100644 --- a/src/mcx_core.cl +++ b/src/mcx_core.cl @@ -134,6 +134,8 @@ typedef struct KernelParams { uint issaveref; /**<1 save diffuse reflectance at the boundary voxels, 0 do not save*/ uint isspecular; /**< 0 do not perform specular reflection at launch, 1 do specular reflection */ uint maxgate; + int seed; /**< RNG seed passted from the host */ + uint outputtype; /**< Type of output to be accummulated */ uint threadphoton; /**< how many photons to be simulated in a thread */ int oddphoton; /**< how many threads need to simulate 1 more photon above the basic load (threadphoton) */ uint debuglevel; /**< debug flags */ @@ -151,6 +153,7 @@ typedef struct KernelParams { } MCXParam __attribute__ ((aligned (32))); enum TBoundary {bcUnknown, bcReflect, bcAbsorb, bcMirror, bcCylic}; /**< boundary conditions */ +enum TOutputType {otFlux, otFluence, otEnergy, otJacobian, otWP, otDCS}; /**< types of output */ //#ifndef USE_XORSHIFT128P_RAND // xorshift128+ is the default RNG #ifdef USE_LL5_RAND //enable the legacy Logistic Lattic RNG @@ -288,16 +291,18 @@ void savedetphoton(__global float *n_det,__global uint *detectedphoton,float nsc __local float *ppath,float4 *p0,float4 *v, __local RandType t[RAND_BUF_LEN], __global RandType *gseeddata, __constant float4 *gdetpos,__constant MCXParam *gcfg); +void saveexitppath(__global float *n_det,__local float *ppath,float4 *p0,uint *idx1d, __constant MCXParam *gcfg); #endif int launchnewphoton(float4 *p,float4 *v,float4 *f,FLOAT4VEC *prop,uint *idx1d, __global float *field, uint *mediaid,float *w0,float *Lmove,uint isdet, - __local float *ppath, - __global float *n_det,__global uint *dpnum, __private RandType t[RAND_BUF_LEN], + __local float *ppath,__global float *n_det,__global uint *dpnum, + __private RandType t[RAND_BUF_LEN],__global RandType *rngseed, __constant float4 *gproperty, __global const uint *media, __global float *srcpattern, __constant float4 *gdetpos,__constant MCXParam *gcfg,int threadid, __local int *blockphoton, volatile __global uint *gprogress, __local RandType *photonseed, __global RandType gseeddata[], __global uint *gjumpdebug,__global float *gdebugdata); +void savedebugdata(float4 *p,uint id,__global uint *gjumpdebug,__global float *gdebugdata,__constant MCXParam *gcfg); #ifdef USE_ATOMIC @@ -736,8 +741,8 @@ int skipvoid(float4 *p,float4 *v,float4 *f,__global const uint *media, __constan int launchnewphoton(float4 *p,float4 *v,float4 *f,FLOAT4VEC *prop,uint *idx1d, __global float *field, uint *mediaid,float *w0,float *Lmove,uint isdet, - __local float *ppath, - __global float *n_det,__global uint *dpnum, __private RandType t[RAND_BUF_LEN], + __local float *ppath, __global float *n_det,__global uint *dpnum, + __private RandType t[RAND_BUF_LEN],__global RandType *rngseed, __constant float4 *gproperty, __global const uint *media, __global float *srcpattern, __constant float4 *gdetpos,__constant MCXParam *gcfg,int threadid, __local int *blockphoton, volatile __global uint *gprogress, @@ -781,9 +786,11 @@ int launchnewphoton(float4 *p,float4 *v,float4 *f,FLOAT4VEC *prop,uint *idx1d, } } #endif - }else{ + } +#ifdef MCX_SAVE_DETECTORS + else saveexitppath(n_det,ppath,p,idx1d,gcfg); - } +#endif } #ifdef MCX_SAVE_DETECTORS // let's handle detectors here @@ -807,13 +814,13 @@ int launchnewphoton(float4 *p,float4 *v,float4 *f,FLOAT4VEC *prop,uint *idx1d, /** * If this is a replay of a detected photon, initilize the RNG with the stored seed here. */ -/* + if(gcfg->seed==SEED_FROM_FILE){ int seedoffset=(threadid*gcfg->threadphoton+min(threadid,gcfg->oddphoton-1)+max(0,(int)f[0].w+1))*RAND_BUF_LEN; for(int i=0;iissaveseed*RAND_BUF_LEN*sizeof(RandType)), gseeddata,gjumpdebug,gdebugdata)){ n_seed[idx]=NO_LAUNCH; @@ -1190,6 +1198,25 @@ __kernel void mcx_main_loop(__global const uint *media, rotatevector(&v,stheta,ctheta,sphi,cphi); v.w+=1.f; + if(gcfg->outputtype==otWP || gcfg->outputtype==otDCS){ + ///< photontof[] and replayweight[] should be cached using local mem to avoid global read + int tshift=(idx*gcfg->threadphoton+min(idx,gcfg->oddphoton-1)+(int)f.w); + tmp0=(gcfg->outputtype==otDCS)? (1.f-ctheta) : 1.f; + tshift=(int)(floor((photontof[tshift]-gcfg->twin0)*gcfg->Rtstep)) + + ( (gcfg->replaydet==-1)? ((photondetid[tshift]-1)*gcfg->maxgate) : 0); +#ifndef USE_ATOMIC + field[idx1d+tshift*gcfg->dimlen.z]+=tmp0*replayweight[(idx*gcfg->threadphoton+min(idx,gcfg->oddphoton-1)+(int)f.w)]; +#else + float oldval=atomicadd(& field[idx1d+tshift*gcfg->dimlen.z], tmp0*replayweight[(idx*gcfg->threadphoton+min(idx,gcfg->oddphoton-1)+(int)f.w)]); + if(oldval>MAX_ACCUM){ + if(atomicadd(& field[idx1d+tshift*gcfg->dimlen.z], -oldval)<0.f) + atomicadd(& field[idx1d+tshift*gcfg->dimlen.z], oldval); + else + atomicadd(& field[idx1d+tshift*gcfg->dimlen.z+gcfg->dimlen.w], oldval); + } + GPUDEBUG(("atomic write to [%d] %e, w=%f\n",idx1d,tmp0*replayweight[(idx*gcfg->threadphoton+min(idx,gcfg->oddphoton-1)+(int)f.w)],p.w)); +#endif + } if(gcfg->debuglevel & MCX_DEBUG_MOVE) savedebugdata(&p,(uint)f.w+idx*gcfg->threadphoton+min(idx,(idxoddphoton)*idx),gjumpdebug,gdebugdata,gcfg); } @@ -1253,12 +1280,27 @@ __kernel void mcx_main_loop(__global const uint *media, GPUDEBUG(((__constant char*)"field add to %d->%f(%d)\n",idx1dold,w0-p.w,(int)f.w)); // if t is within the time window, which spans cfg->maxgate*cfg->tstep wide if(gcfg->save2pt && f.y>=gcfg->twin0 && f.ytwin1){ + float weight=0.f; + int tshift=(int)(floor((f.y-gcfg->twin0)*gcfg->Rtstep)); + + /** calculate the quality to be accummulated */ + if(gcfg->outputtype==otEnergy) + weight=w0-p.w; + else if(gcfg->seed==SEED_FROM_FILE){ + if(gcfg->outputtype==otJacobian){ + weight=replayweight[(idx*gcfg->threadphoton+min(idx,gcfg->oddphoton-1)+(int)f.w)]*f.z; + tshift=(idx*gcfg->threadphoton+min(idx,gcfg->oddphoton-1)+(int)f.w); + tshift=(int)(floor((photontof[tshift]-gcfg->twin0)*gcfg->Rtstep)) + + ( (gcfg->replaydet==-1)? ((photondetid[tshift]-1)*gcfg->maxgate) : 0); + } + }else + weight=(prop.x==0.f) ? 0.f : ((w0-p.w)/(prop.x)); + GPUDEBUG(((__constant char*)"deposit to [%d] %e, w=%f\n",idx1dold,w0-p.w,p.w)); #ifndef USE_ATOMIC field[idx1dold+(int)(floor((f.y-gcfg->twin0)*gcfg->Rtstep))*gcfg->dimlen.z]+=w0-p.w; #else #if !defined(MCX_SRC_PATTERN) && !defined(MCX_SRC_PATTERN3D) - int tshift=(int)(floor((f.y-gcfg->twin0)*gcfg->Rtstep)); float oldval=atomicadd(& field[idx1dold+tshift*gcfg->dimlen.z], w0-p.w); if(oldval>MAX_ACCUM){ if(atomicadd(& field[idx1dold+tshift*gcfg->dimlen.z], -oldval)<0.f) @@ -1305,7 +1347,7 @@ __kernel void mcx_main_loop(__global const uint *media, } GPUDEBUG(((__constant char*)"direct relaunch at idx=[%d] mediaid=[%d], ref=[%d]\n",idx1d,mediaid,gcfg->doreflect)); if(launchnewphoton(&p,&v,&f,&prop,&idx1d,field,&mediaid,&w0,&Lmove,(mediaidold & DET_MASK),ppath, - n_det,detectedphoton,t,gproperty,media,srcpattern,gdetpos,gcfg,idx,blockphoton,gprogress, + n_det,detectedphoton,t,(__global RandType*)n_seed,gproperty,media,srcpattern,gdetpos,gcfg,idx,blockphoton,gprogress, (__local RandType*)(sharedmem+get_local_id(0)*gcfg->issaveseed*RAND_BUF_LEN*sizeof(RandType)),gseeddata,gjumpdebug,gdebugdata)){ break; } @@ -1342,8 +1384,8 @@ __kernel void mcx_main_loop(__global const uint *media, if(mediaid==0){ // transmission to external boundary GPUDEBUG(((__constant char*)"transmit to air, relaunch\n")); if(launchnewphoton(&p,&v,&f,&prop,&idx1d,field,&mediaid,&w0,&Lmove,(mediaidold & DET_MASK), - ppath,n_det,detectedphoton,t,gproperty,media,srcpattern,gdetpos,gcfg,idx,blockphoton,gprogress, - (__local RandType*)(sharedmem+get_local_id(0)*gcfg->issaveseed*RAND_BUF_LEN*sizeof(RandType)),seedata,gjumpdebug,gdebugdata)){ + ppath,n_det,detectedphoton,t,(__global RandType*)n_seed,gproperty,media,srcpattern,gdetpos,gcfg,idx,blockphoton,gprogress, + (__local RandType*)(sharedmem+get_local_id(0)*gcfg->issaveseed*RAND_BUF_LEN*sizeof(RandType)),gseeddata,gjumpdebug,gdebugdata)){ break; } isdet=mediaid & DET_MASK; @@ -1371,5 +1413,8 @@ __kernel void mcx_main_loop(__global const uint *media, } genergy[idx<<1] =ppath[gcfg->partialdata]; genergy[(idx<<1)+1]=ppath[gcfg->partialdata+1]; + + if(gcfg->issaveref>1) + *detectedphoton=gcfg->maxdetphoton; } diff --git a/src/mcx_host.cpp b/src/mcx_host.cpp index d02b06d..9d3b5e4 100644 --- a/src/mcx_host.cpp +++ b/src/mcx_host.cpp @@ -290,7 +290,8 @@ void mcx_run_simulation(Config *cfg,float *fluence,float *totalenergy){ cl_uint totalcucore; cl_uint devid=0; cl_mem gmedia,gproperty,gparam; - cl_mem *gfield=NULL,*gdetphoton,*gseed=NULL,*genergy=NULL, *gseeddata=NULL; + cl_mem greplaydetid=NULL,greplayw=NULL,greplaytof=NULL; + cl_mem *gfield=NULL,*gdetphoton,*gseed=NULL,*genergy=NULL,*gseeddata=NULL; cl_mem *gprogress=NULL,*gdetected=NULL,*gdetpos=NULL, *gsrcpattern=NULL, *gjumpdebug=NULL, *gdebugdata=NULL; cl_uint dimxyz=cfg->dim.x*cfg->dim.y*cfg->dim.z*((cfg->srctype==MCX_SRC_PATTERN || cfg->srctype==MCX_SRC_PATTERN3D) ? cfg->srcnum : 1); @@ -298,12 +299,12 @@ void mcx_run_simulation(Config *cfg,float *fluence,float *totalenergy){ cl_uint *media=(cl_uint *)(cfg->vol); cl_float *field; - cl_uint *Pseed; - float *Pdet; + float *Pdet=NULL; float *srcpw=NULL,*energytot=NULL,*energyabs=NULL; // for multi-srcpattern char opt[MAX_PATH_LENGTH]={'\0'}; GPUInfo *gpu=NULL; RandType *seeddata=NULL; + RandType *Pseed=NULL; /* |-----------------------------------------------> hostdetreclen <--------------------------------------| @@ -321,13 +322,14 @@ void mcx_run_simulation(Config *cfg,float *fluence,float *totalenergy){ {{cfg->srcdir.x,cfg->srcdir.y,cfg->srcdir.z,cfg->srcdir.w}}, {{(float)cfg->dim.x,(float)cfg->dim.y,(float)cfg->dim.z,0}},dimlen,cp0,cp1,cachebox, minstep,0.f,0.f,cfg->tend,R_C0*cfg->unitinmm,(uint)cfg->isrowmajor, - (uint)cfg->issave2pt,(uint)cfg->isreflect,(uint)cfg->isrefint,(uint)cfg->issavedet,1.f/cfg->tstep, - cfg->minenergy, + (uint)cfg->issave2pt,(uint)cfg->isreflect,(uint)cfg->isrefint, + (uint)cfg->issavedet,1.f/cfg->tstep,cfg->minenergy, cfg->sradius*cfg->sradius,minstep*R_C0*cfg->unitinmm,cfg->maxdetphoton, cfg->medianum-1,cfg->detnum,0,0,0,0,(uint)cfg->voidtime,(uint)cfg->srctype, {{cfg->srcparam1.x,cfg->srcparam1.y,cfg->srcparam1.z,cfg->srcparam1.w}}, {{cfg->srcparam2.x,cfg->srcparam2.y,cfg->srcparam2.z,cfg->srcparam2.w}}, - (uint)cfg->maxvoidstep,cfg->issaveexit>0,cfg->issaveseed>0,cfg->issaveref>0,cfg->isspecular>0,cfg->maxgate,0,0, + (uint)cfg->maxvoidstep,cfg->issaveexit>0,cfg->issaveseed>0,(uint)cfg->issaveref, + cfg->isspecular>0,cfg->maxgate,cfg->seed,(uint)cfg->outputtype,0,0, (uint)cfg->debuglevel, cfg->savedetflag,hostdetreclen,partialdata,w0offset,(uint)cfg->mediabyte, (uint)cfg->maxjumpdebug,cfg->gscatter,is2d,cfg->replaydet,cfg->srcnum}; @@ -408,6 +410,12 @@ void mcx_run_simulation(Config *cfg,float *fluence,float *totalenergy){ gpu[i].maxgate=MIN(((cfg->tend-cfg->tstart)/cfg->tstep+0.5),gpu[i].maxgate); } } + + if(is2d){ + float *vec=&(param.c0.x); + if(ABS(vec[is2d-1])>EPS) + mcx_error(-1,"input domain is 2D, the initial direction can not have non-zero value in the singular dimension",__FILE__,__LINE__); + } cfg->maxgate=(int)((cfg->tend-cfg->tstart)/cfg->tstep+0.5); param.maxgate=cfg->maxgate; @@ -420,8 +428,11 @@ void mcx_run_simulation(Config *cfg,float *fluence,float *totalenergy){ cfg->workload[i]=gpu[i].core; fullload=totalcucore; } - - field=(cl_float *)calloc(sizeof(cl_float)*dimxyz,cfg->maxgate*2); + if(cfg->seed==SEED_FROM_FILE && cfg->replaydet==-1){ + field=(cl_float *)calloc(sizeof(cl_float)*dimxyz,cfg->maxgate*2*cfg->detnum); + }else{ + field=(cl_float *)calloc(sizeof(cl_float)*dimxyz,cfg->maxgate*2); + } Pdet=(float*)calloc(cfg->maxdetphoton,sizeof(float)*(cfg->medianum+1)); if(cfg->seed==SEED_FROM_FILE && cfg->replaydet==-1) @@ -460,13 +471,27 @@ void mcx_run_simulation(Config *cfg,float *fluence,float *totalenergy){ progress = (cl_uint *)clEnqueueMapBuffer(mcxqueue[0], gprogress[0], CL_TRUE, CL_MAP_WRITE, 0, sizeof(cl_uint), 0, NULL, NULL, NULL); *progress=0; clEnqueueUnmapMemObject(mcxqueue[0], gprogress[0], progress, 0, NULL, NULL); + + if(cfg->seed==SEED_FROM_FILE){ + // replay should only work with a single device + OCL_ASSERT(((gseed[0]=clCreateBuffer(mcxcontext,RO_MEM,sizeof(RandType)*cfg->nphoton*RAND_BUF_LEN,cfg->replay.seed,&status),status))); + if(cfg->replay.weight) + OCL_ASSERT(((greplayw=clCreateBuffer(mcxcontext,RO_MEM,sizeof(float)*cfg->nphoton,cfg->replay.weight,&status),status))); + if(cfg->replay.tof) + OCL_ASSERT(((greplaytof=clCreateBuffer(mcxcontext,RO_MEM,sizeof(float)*cfg->nphoton,cfg->replay.tof,&status),status))); + if(cfg->replay.detid) + OCL_ASSERT(((greplaydetid=clCreateBuffer(mcxcontext,RO_MEM,sizeof(int)*cfg->nphoton,cfg->replay.detid,&status),status))); + } for(i=0;iseed!=SEED_FROM_FILE){ + Pseed=(RandType*)malloc(sizeof(RandType)*gpu[i].autothread*RAND_BUF_LEN); + cl_uint *iseed=(cl_uint *)Pseed; + for (j=0; jmaxdetphoton*(cfg->medianum+1),Pdet,&status),status))); OCL_ASSERT(((genergy[i]=clCreateBuffer(mcxcontext,RW_MEM, sizeof(float)*(gpu[i].autothread<<1),energy,&status),status))); @@ -489,7 +514,8 @@ void mcx_run_simulation(Config *cfg,float *fluence,float *totalenergy){ OCL_ASSERT(((gsrcpattern[i]=clCreateBuffer(mcxcontext,RO_MEM, sizeof(float)*(int)(cfg->srcparam1.x*cfg->srcparam1.y*cfg->srcparam1.z)*cfg->srcnum,cfg->srcpattern,&status),status))); else gsrcpattern[i]=NULL; - free(Pseed); + if(cfg->seed!=SEED_FROM_FILE) + free(Pseed); free(energy); } @@ -565,17 +591,20 @@ void mcx_run_simulation(Config *cfg,float *fluence,float *totalenergy){ OCL_ASSERT((clSetKernelArg(mcxkernel[i], 0, sizeof(cl_mem), (void*)&gmedia))); OCL_ASSERT((clSetKernelArg(mcxkernel[i], 1, sizeof(cl_mem), (void*)(gfield+i)))); OCL_ASSERT((clSetKernelArg(mcxkernel[i], 2, sizeof(cl_mem), (void*)(genergy+i)))); - OCL_ASSERT((clSetKernelArg(mcxkernel[i], 3, sizeof(cl_mem), (void*)(gseed+i)))); + OCL_ASSERT((clSetKernelArg(mcxkernel[i], 3, sizeof(cl_mem), (void*)(gseed+((cfg->seed!=SEED_FROM_FILE)?i:0))))); OCL_ASSERT((clSetKernelArg(mcxkernel[i], 4, sizeof(cl_mem), (void*)(gdetphoton+i)))); OCL_ASSERT((clSetKernelArg(mcxkernel[i], 5, sizeof(cl_mem), (void*)&gproperty))); OCL_ASSERT((clSetKernelArg(mcxkernel[i], 6, sizeof(cl_mem), (void*)(gsrcpattern+i)))); OCL_ASSERT((clSetKernelArg(mcxkernel[i], 7, sizeof(cl_mem), (void*)(gdetpos+i)))); OCL_ASSERT((clSetKernelArg(mcxkernel[i], 8, sizeof(cl_mem), (void*)(gprogress)))); OCL_ASSERT((clSetKernelArg(mcxkernel[i], 9, sizeof(cl_mem), (void*)(gdetected+i)))); - OCL_ASSERT((clSetKernelArg(mcxkernel[i],10, sizeof(cl_mem), ((cfg->issaveseed) ? (void*)(gseeddata+i) : NULL) ))); - OCL_ASSERT((clSetKernelArg(mcxkernel[i],11, sizeof(cl_mem), ((cfg->debuglevel & MCX_DEBUG_MOVE) ? (void*)(gjumpdebug+i) : NULL) ))); - OCL_ASSERT((clSetKernelArg(mcxkernel[i],12, sizeof(cl_mem), ((cfg->debuglevel & MCX_DEBUG_MOVE) ? (void*)(gdebugdata+i) : NULL) ))); - OCL_ASSERT((clSetKernelArg(mcxkernel[i],13, cfg->issavedet? gpu[i].autoblock*(cfg->issaveseed*(RAND_BUF_LEN*sizeof(RandType))+sizeof(float)*(param.w0offset+cfg->srcnum)) : sizeof(int), NULL))); + OCL_ASSERT((clSetKernelArg(mcxkernel[i],10, sizeof(cl_mem), ((cfg->seed==SEED_FROM_FILE) ? (void*)(greplayw) : NULL) ))); + OCL_ASSERT((clSetKernelArg(mcxkernel[i],11, sizeof(cl_mem), ((cfg->seed==SEED_FROM_FILE) ? (void*)(greplaytof) : NULL) ))); + OCL_ASSERT((clSetKernelArg(mcxkernel[i],12, sizeof(cl_mem), ((cfg->seed==SEED_FROM_FILE) ? (void*)(greplaydetid) : NULL) ))); + OCL_ASSERT((clSetKernelArg(mcxkernel[i],13, sizeof(cl_mem), ((cfg->issaveseed) ? (void*)(gseeddata+i) : NULL) ))); + OCL_ASSERT((clSetKernelArg(mcxkernel[i],14, sizeof(cl_mem), ((cfg->debuglevel & MCX_DEBUG_MOVE) ? (void*)(gjumpdebug+i) : NULL) ))); + OCL_ASSERT((clSetKernelArg(mcxkernel[i],15, sizeof(cl_mem), ((cfg->debuglevel & MCX_DEBUG_MOVE) ? (void*)(gdebugdata+i) : NULL) ))); + OCL_ASSERT((clSetKernelArg(mcxkernel[i],16, cfg->issavedet? gpu[i].autoblock*(cfg->issaveseed*(RAND_BUF_LEN*sizeof(RandType))+sizeof(float)*(param.w0offset+cfg->srcnum)) : sizeof(int), NULL))); } MCX_FPRINTF(cfg->flog,"set kernel arguments complete : %d ms\n",GetTimeMillis()-tic);fflush(cfg->flog); @@ -626,7 +655,7 @@ void mcx_run_simulation(Config *cfg,float *fluence,float *totalenergy){ param.blockphoton =(int)(np*cfg->workload[devid]/(fullload*nblock*cfg->respin)); param.blockextra =(int)(np*cfg->workload[devid]/(fullload*cfg->respin)-param.blockphoton*nblock); OCL_ASSERT((clEnqueueWriteBuffer(mcxqueue[devid],gparam,CL_TRUE,0,sizeof(MCXParam),¶m, 0, NULL, NULL))); - OCL_ASSERT((clSetKernelArg(mcxkernel[devid],14, sizeof(cl_mem), (void*)&gparam))); + OCL_ASSERT((clSetKernelArg(mcxkernel[devid],17, sizeof(cl_mem), (void*)&gparam))); // launch mcxkernel #ifndef USE_OS_TIMER OCL_ASSERT((clEnqueueNDRangeKernel(mcxqueue[devid],mcxkernel[devid],1,NULL,&gpu[devid].autothread,&gpu[devid].autoblock, 0, NULL, &kernelevent))); @@ -641,7 +670,7 @@ void mcx_run_simulation(Config *cfg,float *fluence,float *totalenergy){ mcx_progressbar(-0.f,cfg); - progress = (cl_uint *)clEnqueueMapBuffer(mcxqueue[0], gprogress[0], CL_FALSE, CL_MAP_READ, 0, sizeof(cl_uint), 0, NULL, NULL, NULL); + progress = (cl_uint *)clEnqueueMapBuffer(mcxqueue[0], gprogress[0], CL_TRUE, CL_MAP_READ, 0, sizeof(cl_uint), 0, NULL, NULL, NULL); do{ ndone = *progress; @@ -746,7 +775,6 @@ is more than what your have specified (%d), please use the -H option to specify for(i=0;ienergyesc+=energy[(i<<1)]; cfg->energytot+=energy[(i<<1)+1]; - //eabsorp+=Plen[i].z; // the accumulative absorpted energy near the source } free(energy); } @@ -762,11 +790,12 @@ is more than what your have specified (%d), please use the -H option to specify field, 0, NULL, NULL))); OCL_ASSERT((clSetKernelArg(mcxkernel[devid], 1, sizeof(cl_mem), (void*)(gfield+devid)))); } - if(cfg->respin>1 && RAND_SEED_LEN>1){ - Pseed=(cl_uint*)malloc(sizeof(cl_uint)*gpu[devid].autothread*RAND_SEED_LEN); - for (i=0; irespin>1 && RAND_SEED_LEN>1 && cfg->seed!=SEED_FROM_FILE){ + Pseed=(RandType*)malloc(sizeof(RandType)*gpu[devid].autothread*RAND_BUF_LEN); + cl_uint *iseed=(cl_uint *)Pseed; + for (j=0; jseed==SEED_FROM_FILE){ + if(greplayw) + clReleaseMemObject(greplayw); + if(greplaytof) + clReleaseMemObject(greplaytof); + if(greplaydetid) + clReleaseMemObject(greplaydetid); + } for(i=0;idetpos) clReleaseMemObject(gdetpos[i]); - if(cfg->issaveseed){ + if(cfg->issaveseed) clReleaseMemObject(gseeddata[i]); - } if(cfg->srctype==MCX_SRC_PATTERN || cfg->srctype==MCX_SRC_PATTERN3D) clReleaseMemObject(gsrcpattern[i]); clReleaseKernel(mcxkernel[i]); diff --git a/src/mcx_host.hpp b/src/mcx_host.hpp index 2768b6d..ce899f3 100644 --- a/src/mcx_host.hpp +++ b/src/mcx_host.hpp @@ -86,6 +86,8 @@ typedef struct KernelParams { cl_uint issaveref; /**<1 save diffuse reflectance at the boundary voxels, 0 do not save*/ cl_uint isspecular; /**<1 save diffuse reflectance at the boundary voxels, 0 do not save*/ cl_uint maxgate; + cl_int seed; /**< RNG seed passted from the host */ + cl_uint outputtype; /**< Type of output to be accummulated */ cl_uint threadphoton; /**< how many photons to be simulated in a thread */ cl_int oddphoton; /**< how many threads need to simulate 1 more photon above the basic load (threadphoton) */ cl_uint debuglevel; /**< debug flags */ diff --git a/src/mcx_utils.c b/src/mcx_utils.c index c5c033c..e72ee15 100644 --- a/src/mcx_utils.c +++ b/src/mcx_utils.c @@ -58,7 +58,8 @@ char shortopt[]={'h','i','f','n','m','t','T','s','a','g','b','B','D','-','G','W','z', 'd','r','S','p','e','U','R','l','L','M','I','-','o','k','v','J', - 'A','P','E','F','H','K','u','-','x','X','-','w','-','q','V','\0'}; + 'A','P','E','F','H','K','u','-','x','X','-','w','-','q','V','m', + 'Y','O','-','-','\0'}; /** * Long command line options @@ -73,7 +74,8 @@ const char *fullopt[]={"--help","--interactive","--input","--photon","--move", "--printgpu","--root","--optlevel","--kernel","--verbose","--compileropt", "--autopilot","--shapes","--seed","--outputformat","--maxdetphoton", "--mediabyte","--unitinmm","--atomic","--saveexit","--saveref", - "--internalsrc","--savedetflag","--gscatter","--saveseed","--specular",""}; + "--internalsrc","--savedetflag","--gscatter","--saveseed","--specular" + "--momentum","--replaydet","--outputtype","--voidtime","--showkernel",""}; /** * Debug flags @@ -856,6 +858,16 @@ void mcx_prepdomain(char *filename, Config *cfg){ cfg->savedetflag=UNSET_SAVE_PPATH(cfg->savedetflag); cfg->savedetflag=UNSET_SAVE_MOM(cfg->savedetflag); } + if(cfg->issaveref>1){ + if(cfg->issavedet==0) + MCX_ERROR(-4,"you must have at least two outputs if issaveref is greater than 1"); + + if(cfg->dim.x*cfg->dim.y*cfg->dim.z > cfg->maxdetphoton){ + MCX_FPRINTF(cfg->flog,"you must set --maxdetphoton larger than the total size of the voxels when --issaveref is greater than 1; autocorrecting ...\n"); + cfg->maxdetphoton=cfg->dim.x*cfg->dim.y*cfg->dim.z; + } + cfg->savedetflag=0x5; + } } int mcx_loadjson(cJSON *root, Config *cfg){ @@ -1537,7 +1549,7 @@ int mcx_remap(char *opt){ return 1; } void mcx_parsecmd(int argc, char* argv[], Config *cfg){ - int i=1,isinteractive=1,issavelog=0; + int i=1,isinteractive=1,issavelog=0,showkernel=0; char filename[MAX_PATH_LENGTH]={0}, *jsoninput=NULL; char logfile[MAX_PATH_LENGTH]={0}; float np=0.f; @@ -1575,9 +1587,6 @@ void mcx_parsecmd(int argc, char* argv[], Config *cfg){ }else i=mcx_readarg(argc,argv,i,filename,"string"); break; - case 'm': - mcx_error(-2,"specifying photon move is not supported any more, please use -n",__FILE__,__LINE__); - i=mcx_readarg(argc,argv,i,&(cfg->nphoton),"int"); break; case 'n': i=mcx_readarg(argc,argv,i,&(np),"float"); @@ -1612,6 +1621,10 @@ void mcx_parsecmd(int argc, char* argv[], Config *cfg){ case 'd': i=mcx_readarg(argc,argv,i,&(cfg->issavedet),"char"); break; + case 'm': + i=mcx_readarg(argc,argv,i,&(cfg->ismomentum),"char"); + if (cfg->ismomentum) cfg->issavedet=1; + break; case 'r': i=mcx_readarg(argc,argv,i,&(cfg->respin),"int"); break; @@ -1710,12 +1723,32 @@ void mcx_parsecmd(int argc, char* argv[], Config *cfg){ case 'M': i=mcx_readarg(argc,argv,i,&(cfg->isdumpmask),"char"); break; + case 'Y': + i=mcx_readarg(argc,argv,i,&(cfg->replaydet),"int"); + break; + case 'H': + i=mcx_readarg(argc,argv,i,&(cfg->maxdetphoton),"int"); + break; case 'P': cfg->shapedata=argv[++i]; break; case 'E': - i=mcx_readarg(argc,argv,i,&(cfg->seed),"int"); + if(iseedfile,"string"); + cfg->seed=SEED_FROM_FILE; +#endif + }else + i=mcx_readarg(argc,argv,i,&(cfg->seed),"int"); break; + case 'O': + i=mcx_readarg(argc,argv,i,&(cfg->outputtype),"string"); + if(mcx_lookupindex(&(cfg->outputtype), outputtype)){ + mcx_error(-2,"the specified output data type is not recognized",__FILE__,__LINE__); + } + break; case 'K': i=mcx_readarg(argc,argv,i,&(cfg->maxdetphoton),"int"); break; @@ -1734,10 +1767,14 @@ void mcx_parsecmd(int argc, char* argv[], Config *cfg){ i=mcx_readarg(argc,argv,i,cfg->rootpath,"string"); else if(strcmp(argv[i]+2,"atomic")==0) i=mcx_readarg(argc,argv,i,&(cfg->isatomic),"int"); + else if(strcmp(argv[i]+2,"voidtime")==0) + i=mcx_readarg(argc,argv,i,&(cfg->voidtime),"char"); else if(strcmp(argv[i]+2,"maxjumpdebug")==0) i=mcx_readarg(argc,argv,i,&(cfg->maxjumpdebug),"int"); else if(strcmp(argv[i]+2,"gscatter")==0) i=mcx_readarg(argc,argv,i,&(cfg->gscatter),"int"); + else if(strcmp(argv[i]+2,"showkernel")==0) + i=mcx_readarg(argc,argv,i,&showkernel,"char"); else if(strcmp(argv[i]+2,"internalsrc")==0) i=mcx_readarg(argc,argv,i,&(cfg->internalsrc),"int"); else @@ -1771,6 +1808,13 @@ void mcx_parsecmd(int argc, char* argv[], Config *cfg){ cfg->clsource[srclen]='\0'; fclose(fp); } + if(showkernel){ + fprintf(cfg->flog,"%s\n",cfg->clsource); + exit(0); + } + + if((cfg->outputtype==otJacobian ||cfg->outputtype==otWP || cfg->outputtype==otDCS) && cfg->seed!=SEED_FROM_FILE) + MCX_ERROR(-1,"Jacobian output is only valid in the reply mode. Please give an mch file after '-E'."); if(cfg->isgpuinfo!=2){ /*print gpu info only*/ if(isinteractive){ mcx_readconfig((char*)"",cfg); @@ -1923,7 +1967,8 @@ where possible parameters include (the first value in [*|*] is the default)\n\ \n"S_BOLD S_CYAN"\ == MC options ==\n"S_RESET"\ -n [0|int] (--photon) total photon number (exponential form accepted)\n\ - -r [1|int] (--repeat) divide photons into r groups (1 per GPU call)\n\ + -r [1|+/-int] (--repeat) if positive, repeat by r times,total= #photon*r\n\ + if negative, divide #photon into r subsets\n\ -b [1|0] (--reflect) 1 to reflect photons at ext. boundary;0 to exit\n\ -B '______' (--bc) per-face boundary condition (BC), 6 letters for\n\ /case insensitive/ bounding box faces at -x,-y,-z,+x,+y,+z axes;\n\ @@ -1936,25 +1981,19 @@ where possible parameters include (the first value in [*|*] is the default)\n\ 'c': cyclic BC, enter from opposite face\n\ -u [1.|float] (--unitinmm) defines the length unit for the grid edge\n\ -U [1|0] (--normalize) 1 to normalize flux to unitary; 0 save raw\n\ - -E [0|int] (--seed) set random-number-generator seed, -1 to generate\n\ + -E [0|int|mch](--seed) set random-number-generator seed, -1 to generate\n\ + if an mch file is followed, MCX \"replays\" \n\ + the detected photon; the replay mode can be used\n\ + to calculate the mua/mus Jacobian matrices\n\ -z [0|1] (--srcfrom0) 1 volume origin is [0 0 0]; 0: origin at [1 1 1]\n\ - -k [1|0] (--voidtime) when src is outside, 1 enables timer inside void\n\ + -Y [0|int] (--replaydet) replay only the detected photons from a given \n\ + detector (det ID starts from 1), used with -E \n\ + if 0, replay all detectors and sum all Jacobians\n\ + if -1, replay all detectors and save separately\n\ + -V [0|1] (--specular) 1 source located in the background,0 inside mesh\n\ -e [0.|float] (--minenergy) minimum energy level to terminate a photon\n\ -g [1|int] (--gategroup) number of time gates per run\n\ \n"S_BOLD S_CYAN"\ -== Input options ==\n"S_RESET"\ - -P '{...}' (--shapes) a JSON string for additional shapes in the grid\n\ - -K [1|int|str](--mediabyte) volume data format, use either a number or a str\n\ - 1 or byte: 0-128 tissue labels\n\ - 2 or short: 0-65535 (max to 4000) tissue labels\n\ - 4 or integer: integer tissue labels \n\ - 100 or muamus_float: 2x 32bit floats for mua/mus\n\ - 101 or mua_float: 1 float per voxel for mua\n\ - 102 or muamus_half: 2x 16bit float for mua/mus\n\ - 103 or asgn_byte: 4x byte gray-levels for mua/s/g/n\n\ - 104 or muamus_short: 2x short gray-levels for mua/s\n\ - -a [0|1] (--array) 1 for C array (row-major); 0 for Matlab array\n\ -\n"S_BOLD S_CYAN"\ == GPU options ==\n"S_RESET"\ -L (--listgpu) print GPU information only\n\ -t [16384|int](--thread) total thread number\n\ @@ -1966,9 +2005,24 @@ where possible parameters include (the first value in [*|*] is the default)\n\ -W '50,30,20' (--workload) workload for active devices; normalized by sum\n\ -I (--printgpu) print GPU information and run program\n\ -o [1|int] (--optlevel) optimization level 0-no opt;1,2,3 more optimized\n\ - -J '-D MCX' (--compileropt) specify additional JIT compiler options\n\ + -J '-DMACRO' (--compileropt) specify additional JIT compiler options\n\ + A few built-in preprocessors include\n\ + -DMCX_GPU_DEBUG - print step-by-step debug info\n\ -k my_simu.cl (--kernel) user specified OpenCL kernel source file\n\ \n"S_BOLD S_CYAN"\ +== Input options ==\n"S_RESET"\ + -P '{...}' (--shapes) a JSON string for additional shapes in the grid\n\ + -K [1|int|str](--mediabyte) volume data format, use either a number or a str\n\ + 1 or byte: 0-128 tissue labels\n\ + 2 or short: 0-65535 (max to 4000) tissue labels\n\ + 4 or integer: integer tissue labels \n\ + 100 or muamus_float: 2x 32bit floats for mua/mus\n\ + 101 or mua_float: 1 float per voxel for mua\n\ + 102 or muamus_half: 2x 16bit float for mua/mus\n\ + 103 or asgn_byte: 4x byte gray-levels for mua/s/g/n\n\ + 104 or muamus_short: 2x short gray-levels for mua/s\n\ + -a [0|1] (--array) 1 for C array (row-major); 0 for Matlab array\n\ +\n"S_BOLD S_CYAN"\ == Output options ==\n"S_RESET"\ -s sessionid (--session) a string to label all output file names\n\ -d [1|0] (--savedet) 1 to save photon info at detectors; 0 not save\n\ @@ -2012,11 +2066,15 @@ where possible parameters include (the first value in [*|*] is the default)\n\ == Debug options ==\n"S_RESET"\ -D [0|int] (--debug) print debug information (you can use an integer\n\ or or a string by combining the following flags)\n\ - -D [''|RMP] 4 P print progress bar\n\ + -D [''|RMP] 1 R debug RNG\n\ + /case insensitive/ 2 M store photon trajectory info\n\ + 4 P print progress bar\n\ combine multiple items by using a string, or add selected numbers together\n\ \n"S_BOLD S_CYAN"\ == Additional options ==\n"S_RESET"\ --atomic [1|0] 1: use atomic operations; 0: do not use atomics\n\ + --voidtime [1|0] when src is outside, 1 enables timer inside void\n\ + --showkernel [1|0] 1:display the default or loaded (-k) MCXCL kernel\n\ --root [''|string] full path to the folder storing the input files\n\ --internalsrc [0|1] set to 1 to skip entry search to speedup launch\n\ --gscatter [1e9|int] after a photon completes the specified number of\n\