The purpose of this thesis was to investigate the use of General Purpose computing on Graphics Processing Units (GPGPU) to process electroencephalogram (EEG) signals in real-time. The main body of this work required the implementation of Independent Component Analysis were investigated: FastICA and JADE. Both were implemented three times: first using M-file syntax to serve as a benchmark, next, as native C code to measure performance of the algorithms when running natively on a CPU, and finally, as GPGPU code using the NVIDIA CUDA C language extension. In previous works, Independent Component Analysis represented the largest roadblock to achieving the real-time goal of processing 10 seconds of EEG within a 10 second window. It was found that both FastICA and JADE see speedups, with a maximum measured speedup of approximately 6x for FastICA, and approximately 2.5x for JADE, when operating on the largest datasets. In addition, speedups of between 1x and 2x were seen when working on datasets of the expected size provided by 10 seconds of 32-channel EEG sampled at 500 Hz. However, it was also found that GPGPU solutions are not necessary for real-time performance on a modern desktop computer as the FastICA algorithm is capable of a worst-case performance of between approximately 1 and 2 seconds depending on configuration parameters.
Library of Congress Subject Headings
Electroencephalography--Data processing; Eye--Movements--Data processing; Graphics processing units--Programming; Computer architecture
Department, Program, or Center
Computer Engineering (KGCOE)
Brandt, Dan, "Investigation of GPGPU for use in processing of EEG in real-time" (2010). Thesis. Rochester Institute of Technology. Accessed from
RIT – Main Campus