Ignore:
Timestamp:
Jan 28, 2010 6:09:34 PM (13 years ago)
Author:
srkline
Message:

Updated the MonteCarlo? code to allow 4 processors, but simply copying the function 4 times, and defining 4 different random number generators. Still can't figure out what the problem is with threading a single version, but not worth the effort. Copy/paste is way faster.

Also added some simple (non-optimized) calculations for using Debye's sphere method. These are largely undocumented at this point - so see the code. These are XOP versions of the old ipf code I've used in the past, and stripped of the now-obsolete AltiVec? code (I now lose the 4x speedup from the vectorization...)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sans/XOP_Dev/MonteCarlo/MonteCarlo.r

    r458 r623  
    6363                }, 
    6464                 
     65                "DebyeSpheresX",                                                /* function name */ 
     66                F_UTIL | F_THREADSAFE | F_EXTERNAL,                             /* function category == Utility */ 
     67                NT_FP64,                                                        /* return value type */  
     68                { 
     69                                                NT_FP64,                        /* single precision wave (q-wave) */ 
     70                        NT_FP32 + WAVE_TYPE,                            /* single precision wave (x coordinates) */ 
     71                        NT_FP32 + WAVE_TYPE,                            /* single precision wave (y coordinates) */ 
     72                        NT_FP32 + WAVE_TYPE,                            /* single precision wave (z coordinates) */ 
     73                        NT_FP32 + WAVE_TYPE,                            /* single precision wave (rho at xyz) */ 
     74                        NT_FP64,                                // Rprimary, the primary sphere radius 
     75                        NT_FP64,                                // grid, should be passed as 0.62*Rprimary 
     76                }, 
     77                 
     78                "Monte_SANSX3",         /* function name */ 
     79                F_UTIL | F_THREADSAFE | F_EXTERNAL,                                     /* function category == UTILITY */ 
     80                NT_FP64,                                                        /* return value type */                  
     81                { 
     82                        NT_FP64 + WAVE_TYPE, 
     83                        NT_FP64 + WAVE_TYPE, 
     84                        NT_FP64 + WAVE_TYPE, 
     85                        NT_FP64 + WAVE_TYPE, 
     86                        NT_FP64 + WAVE_TYPE, 
     87                        NT_FP64 + WAVE_TYPE, 
     88                        NT_FP64 + WAVE_TYPE, 
     89                        NT_FP64 + WAVE_TYPE, 
     90                }, 
     91                 
     92                "Monte_SANSX4",         /* function name */ 
     93                F_UTIL | F_THREADSAFE | F_EXTERNAL,                                     /* function category == UTILITY */ 
     94                NT_FP64,                                                        /* return value type */                  
     95                { 
     96                        NT_FP64 + WAVE_TYPE, 
     97                        NT_FP64 + WAVE_TYPE, 
     98                        NT_FP64 + WAVE_TYPE, 
     99                        NT_FP64 + WAVE_TYPE, 
     100                        NT_FP64 + WAVE_TYPE, 
     101                        NT_FP64 + WAVE_TYPE, 
     102                        NT_FP64 + WAVE_TYPE, 
     103                        NT_FP64 + WAVE_TYPE, 
     104                }, 
     105                 
    65106        } 
    66107}; 
Note: See TracChangeset for help on using the changeset viewer.