[Eeglablist] Accelerating lowpass running time

Pål Gunnar Larsson pall at ous-hf.no
Mon Jun 10 11:45:03 PDT 2013


This is way outside my area, but it is my experience that finite impulse length filters are much slower than infite impulse. I think this suits the theoretical aspects of this.

Pål

Denne meldingen inneholder ikke sensitiv informasjon som bryter med Oslo universitetssykehus HFs krav til informasjonssikkerhet.
(In compliance with the Security Policy of Oslo University Hospital, the content of this message (including any attachments) is of a non-sensitive nature)

Fra: eeglablist-bounces at sccn.ucsd.edu [mailto:eeglablist-bounces at sccn.ucsd.edu] På vegne av Avi Lazarovits
Sendt: 9. juni 2013 09:40
Til: eeglablist at sccn.ucsd.edu
Emne: [Eeglablist] Accelerating lowpass running time

Hello,
I am using EEGlab to process EEG recordings, and running low pass 100 Hz is very slow. I am looking for code modifications I can make to accelerate the running time, and also recommendation for optimal hardware specs for this process.
The files I process are recordings of 66 channles @ 2KHz ~10 minutes long (1086734 samples) bug. I can't resample the files because I need high temporal resolution.
I use EEGlab version 11.0.3.1b, and run "firls" filter. I run the filter with the following command:
EEG = pop_eegfilt( EEG, 0, 100, [], 0,0, 0, 'firls', 0);
When I run this command I get the following message:
eegfilt() - performing 6144-point highpass filtering.
eegfilt() - highpass transition band width is 0.2 Hz.

The computer I run the processing on now is i5 3470 (4 cores@ 3.2 Ghz) with 4Gb RAM running windows 7 enterprise 64 bit and Matlab 2012a.
I tried running the same process on an i7 extreme edition 3930k with 64Gb RAM system and it didn't shorten the running time at all. I also tried running this filter on a workstation with Xeon CPU and it shortened the running time, but not significantly. I looked on the CPU monitor and found that it doesn't use more than 1 core, and that the maximal RAM memory usage during the processing was about 6.5 Gb.
1.     I found that using SSD shortens the time significantly, and therefore I assume that one of the big bottlenecks of this processing is that the process is made on the hard disk and not on the RAM. Is there a way to "make" Matlab use RAM instead of the hard drive?
2.     Are there code changes I can make in EEGlab's code to run this filter multithreaded so that the process will use all the cores of my CPU? Is there any way to make this process on GPU? Will it accelerate the process more than using parallel computing of the CPU?

Thank you
Avi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://sccn.ucsd.edu/pipermail/eeglablist/attachments/20130610/0d8a7e97/attachment.html>


More information about the eeglablist mailing list