Seti@Home optimized science apps and information
 
Welcome, Guest. Please login or register.
Did you miss your activation email?
19 Nov 2008, 08:53:20 am

Login with username, password and session length
 
If you've registered already but never got your activation email, please click here.
 
 
Seti@Home optimized science apps and information  |  Optimized Seti@Home apps  |  Discussion Forum  |  Topic: Outline of "what seti@home code really does" 0 Members and 0 Guests are viewing this topic. « previous next »
Pages: [1] Go Down Print
Author Topic: Outline of "what seti@home code really does"  (Read 710 times)
BenHer
Code Wizard
Knight Templar
*****
Offline Offline

Posts: 395


View Profile
Outline of "what seti@home code really does"
« on: 18 Aug 2006, 05:31:56 pm »

I figured since I'm down to the two main time hogs in seti, I should figure out which functions do what to what buffers of data, and in what order.

How long is this buffer's data needed?
Which functions call which...how many loops do they do...etc?

Here is the result...it explains why 'GetFixedPot' and 'analyze_pot' are the main CPU hogs (cache miss hogs really).

analyze_seti

foreach fft/gauss pair
    {
    if chirp rate ind changes
        ChirpData - fills array ChirpedData[]
            CalcTrigArray
    // Now we will process the just chirped data...
    //  We will break the entire ChirpedData[] into 'fftlen' chunks and do each one
    //  as a block
    //  1. backward FFT over each block and output to WorkData[]
    //  2. compute power spectrum table over fft'ed output, store in PowerSpectrum[CurrentSub]
    //  3. if pot freq bin == -1, then try to find spike in PowerSpectrum[]

    analyze_pot <- PowerSpectrum[]
        // Look for gaussians :: by looping through frequencies * FftLength
            GetFixedPoT()  <- PowerSpectrum[] --> GaussPoT[]
                If fftlen were 1024...then for Frequency=1...GaussPot[] would contain
                    GaussPoT[0] = spectrum[0]
                    GaussPoT[1] = spectrum[1024]  // cache miss
                    GaussPoT[2] = spectrum[2048]  // ...and so on
                frequency = 2
                    GaussPoT[0] = spectrum[1]
                    GaussPoT[1] = spectrum[1025]
                    GaussPoT[2] = spectrum[2049]
            GaussFit() <- GaussPoT[]
           
        // Look for pulses :: by looping through frequencies * FftLength
            // loop through time for each frequency. PulsePoTNum is used
                Build a PulsePoT[] table extracted from the PowerSpectrum[] buffer
                   (similar to method in GetFixedPot above)
                - find_triplets on this PulsePoT[]
                - find_pulse(s) on this PulsePoT[]

    // end of fft/gauss pair
Logged
Josef W. Segur
Global Moderator
Knight who says 'Ni!'
*****
Offline Offline

Posts: 788


View Profile
Re: Outline of "what seti@home code really does"
« Reply #1 on: 19 Aug 2006, 04:17:35 pm »

I figured since I'm down to the two main time hogs in seti, I should figure out which functions do what to what buffers of data, and in what order.

How long is this buffer's data needed?
Which functions call which...how many loops do they do...etc?

Here is the result...it explains why 'GetFixedPot' and 'analyze_pot' are the main CPU hogs (cache miss hogs really)....

All true, but 5.17+ will have the transposed PowerSpectrum. Then all the data points for a frequency will be in a contiguous vector.

Of course doing the transposition will have to deal with the same cache issue. I wonder how well the IPP functions ippmCopy_va_32f_SS() or
ippmTranspose_m_32f() would do for that. The docs say that the matrix operations are meant for much smaller sizes, but I guess the routines may still be coded so autovectorization works well anyhow.

If it seems I'm urging you to go on to the 5.17 source, that's true. Simon's 5.17 builds have so far not shown the expected improvement from transposition, if you could profile a 5.17 build that might indicate why not.
                                                                   Joe
Logged
Pages: [1] Go Up Print 
Seti@Home optimized science apps and information  |  Optimized Seti@Home apps  |  Discussion Forum  |  Topic: Outline of "what seti@home code really does" « previous next »
Jump to:  


Quote!
There is a theory which states that if ever anybody discovers exactly what the Universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarre and inexplicable.
There is another theory which states that this has already happened.

- Douglas Adams

 
Site Statistics
Total Members:1,067
Total Posts:10,656
Total Topics:445
Downloads
Apps
Windows R-1.x25,140
Windows R-2.020,352
Windows R-2.236,609
Linux 32bit 1.x6,573
Linux 32bit 2.24,405
Linux 64bit 2.21,783
Alpha/IA64203
FreeBSD628
HPUX345
Subtotal:94,862
Source packs:4,169
Tool/WU packs:7,918
Total:157,813
GBs dl'd:281.83
Pages served
Today:1,358
Total:3,343,455
(since 6/26/2006)
173 Donations to S@H
U.S. Dollars:3,196.59
Euros:863.90
Last 24h:$ 0.00
Avg./24h:$ 6.66
Estim. total:$ 4,319.66
Latest Member:
Win95GUI
 
 
Seti@Home optimized science apps and information | Powered by Enigma 2.0 (RC1).
© 2003-2008, LSP Dev Team. All Rights Reserved.
Seti@Home optimized science apps and information Forums | Powered by SMF.
© 2005, Simple Machines LLC. All Rights Reserved.
Powered by MySQL Powered by PHP Valid XHTML 1.0! Valid CSS!