- Timestamp:
- Jan 28, 2010 5:59:51 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/MultScatter_MonteCarlo_2D.ipf
r615 r622 106 106 Variable NNeutron=inputWave[0] 107 107 Variable i,nthreads= ThreadProcessorCount 108 if(nthreads>2) //only support 2 processors until I can figure out how to properly thread the XOP and to loop it 109 nthreads=2 110 endif 108 109 // make sure that the XOP exists if we are going to thread 110 #if exists("Monte_SANSX4") 111 //OK 112 if(nthreads>4) //only support 4 processors until I can figure out how to properly thread the XOP and to loop it 113 nthreads=4 114 endif 115 #else 116 nthreads = 1 117 #endif 111 118 112 119 // nthreads = 1 … … 134 141 WAVE inputWave0,ran_dev0,nt0,j10,j20,nn0,linear_data0,retWave0 135 142 retWave0 = 0 //clear the return wave 136 retWave0[0] = -1* (datetime-gInitTime) //to initialize ran3143 retWave0[0] = -1*trunc(datetime-gInitTime) //to initialize ran3 137 144 ThreadStart mt,i,Monte_SANS_W1(inputWave0,ran_dev0,nt0,j10,j20,nn0,linear_data0,retWave0) 138 145 Print "started thread 0" … … 141 148 WAVE inputWave1,ran_dev1,nt1,j11,j21,nn1,linear_data1,retWave1 142 149 retWave1 = 0 //clear the return wave 143 retWave1[0] = -1* (datetime-gInitTime) //to initialize ran1150 retWave1[0] = -1*trunc(datetime-gInitTime-2) //to initialize ran1 144 151 ThreadStart mt,i,Monte_SANS_W2(inputWave1,ran_dev1,nt1,j11,j21,nn1,linear_data1,retWave1) 145 152 Print "started thread 1" 146 153 endif 147 //if(i==2)148 //WAVE inputWave2,ran_dev2,nt2,j12,j22,nn2,linear_data2,retWave2149 // retWave2[0] = -1*datetime //to initialize ran3 150 // ThreadStart mt,i,Monte_SANS_W(inputWave2,ran_dev2,nt2,j12,j22,nn2,linear_data2,retWave2)151 //endif152 //if(i==3)153 //WAVE inputWave3,ran_dev3,nt3,j13,j23,nn3,linear_data3,retWave3154 // retWave3[0] = -1*datetime //to initialize ran3 155 // ThreadStart mt,i,Monte_SANS_W(inputWave3,ran_dev3,nt3,j13,j23,nn3,linear_data3,retWave3)156 //endif154 if(i==2) 155 WAVE inputWave2,ran_dev2,nt2,j12,j22,nn2,linear_data2,retWave2 156 retWave2[0] = -1*trunc(datetime-gInitTime-3) //to initialize ran3a 157 ThreadStart mt,i,Monte_SANS_W3(inputWave2,ran_dev2,nt2,j12,j22,nn2,linear_data2,retWave2) 158 endif 159 if(i==3) 160 WAVE inputWave3,ran_dev3,nt3,j13,j23,nn3,linear_data3,retWave3 161 retWave3[0] = -1*trunc(datetime-gInitTime-4) //to initialize ran1a 162 ThreadStart mt,i,Monte_SANS_W4(inputWave3,ran_dev3,nt3,j13,j23,nn3,linear_data3,retWave3) 163 endif 157 164 endfor 158 165 … … 182 189 retWave = retWave0+retWave1 183 190 endif 184 //if(nthreads == 3)185 //nt = nt0+nt1+nt2 // add up each instance186 //j1 = j10+j11+j12187 //j2 = j20+j21+j22188 //nn = nn0+nn1+nn2189 //linear_data = linear_data0+linear_data1+linear_data2190 //retWave = retWave0+retWave1+retWave2191 //endif192 //if(nthreads == 4)193 //nt = nt0+nt1+nt2+nt3 // add up each instance194 //j1 = j10+j11+j12+j13195 //j2 = j20+j21+j22+j23196 //nn = nn0+nn1+nn2+nn3197 //linear_data = linear_data0+linear_data1+linear_data2+linear_data3198 //retWave = retWave0+retWave1+retWave2+retWave3199 //endif191 if(nthreads == 3) 192 nt = nt0+nt1+nt2 // add up each instance 193 j1 = j10+j11+j12 194 j2 = j20+j21+j22 195 nn = nn0+nn1+nn2 196 linear_data = linear_data0+linear_data1+linear_data2 197 retWave = retWave0+retWave1+retWave2 198 endif 199 if(nthreads == 4) 200 nt = nt0+nt1+nt2+nt3 // add up each instance 201 j1 = j10+j11+j12+j13 202 j2 = j20+j21+j22+j23 203 nn = nn0+nn1+nn2+nn3 204 linear_data = linear_data0+linear_data1+linear_data2+linear_data3 205 retWave = retWave0+retWave1+retWave2+retWave3 206 endif 200 207 201 208 // fill up the results wave … … 240 247 Monte_SANSX2(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 241 248 #else 242 Monte_SANS(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results)249 // Monte_SANS(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 243 250 #endif 244 251 245 252 return (0) 246 253 End 254 255 // uses ran3a 256 ThreadSafe Function Monte_SANS_W3(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 257 WAVE inputWave,ran_dev,nt,j1,j2,nn,linear_data,results 258 259 #if exists("Monte_SANSX3") 260 Monte_SANSX3(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 261 #else 262 // Monte_SANS(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 263 #endif 264 265 return (0) 266 End 267 268 // uses ran1a 269 ThreadSafe Function Monte_SANS_W4(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 270 WAVE inputWave,ran_dev,nt,j1,j2,nn,linear_data,results 271 272 #if exists("Monte_SANSX4") 273 Monte_SANSX4(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 274 #else 275 // Monte_SANS(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 276 #endif 277 278 return (0) 279 End 280 281 247 282 248 283 // NON-threaded call to the main function returns what is to be displayed
Note: See TracChangeset
for help on using the changeset viewer.