REAL-TIME PROCESSING OF MASS SPECTROMETER DATA BY...
Transcript of REAL-TIME PROCESSING OF MASS SPECTROMETER DATA BY...
DEMULTIPLEXING
0
5
10
15
20
25
30
35
40
200147 200148 200149 200150 200151 200152 200153 200154 200155 200156 200157 200158 200159 200160 200161 200162
0
DEMULTIPLEXING
0
5
10
15
20
25
30
35
40
200147 200148 200149 200150 200151 200152 200153 200154 200155 200156 200157 200158 200159 200160 200161 200162
0
71656
143664
216024
288736
361800
435216
508984
583104
657576
732400
807576
883104
958984
1035216
DEMULTIPLEXING
0
5
10
15
20
25
30
35
40
200147 200148 200149 200150 200151 200152 200153 200154 200155 200156 200157 200158 200159 200160 200161 200162
0
71656
143664
216024
288736
361800
435216
508984
583104
657576
732400
807576
883104
958984
1035216
PIPELINE
• Sensor collects data
• FPGA sums spectra
• FPGA compresses
• Sends over Ethernet to
desktop PC
PIPELINE
• Transfer (CPU to GPU)
• Decompress
• Smooth 2D
• Demultiplex
• Resample (bin)
• Filter (skew-ex, statistics)
• Find Peaks
• Transfer (GPU to CPU)
CUDA VS. C++ AMP
• C++ AMP portable (NVIDIA, AMD GPUs, CPUs)
• Built into compiler, no libraries
• Easy to integrate with existing code
However…
• Cuda usually 2-4x faster
• Cuda has streams; C++ AMP does not (large speedup)
• Cuda tools (debugging, profiling, etc.) much better
CONCLUSION
• The GPU made a previously impossible task possible
• CPU ran 10% of realtime, GPU (NVIDIA Titan) runs 400%
• All processing steps previously were on FPGA (except demultiplexing), took years for a team to develop
• GPU code took one summer’s intern to develop