<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.hoenzb
        {mso-style-name:hoenzb;}
span.E-postmall18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=SV link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'>Dear Makoto<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'>When you run CUDAICA how do you reduce the rank of your data? <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'>Best,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'>Jens <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><div><p class=MsoNormal><span lang=EN-US>Dear Avi,<o:p></o:p></span></p><div><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div><div><p class=MsoNormal><span lang=EN-US>runica() runs slowly, and spending 50 min is not surprising (assuming you have >32 channels and >30min data). binica() runs faster, but does not run on windows. We have cudaica() which runs super-fast but requires configuration of GPU.<o:p></o:p></span></p></div><div><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div><div><p class=MsoNormal>Makoto<o:p></o:p></p></div><div><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p><div><p class=MsoNormal>2013/6/9 Avi Lazarovits <<a href="mailto:avila@post.bgu.ac.il" target="_blank">avila@post.bgu.ac.il</a>><o:p></o:p></p><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt'><div><div><p class=MsoNormal><span lang=EN-US>Hello, <o:p></o:p></span></p></div><div><p class=MsoNormal><span lang=EN-US>Thank you very much, I will try to run this function with the new filter.<o:p></o:p></span></p></div><div><p class=MsoNormal><span lang=EN-US>About the inconsistency, actually I run a bandpass filter and by mistake I quoted the code for the low pass filter which is much faster. The code for the highpass is: EEG = pop_eegfilt( EEG, 1, 0, [], 0,</span><span lang=EN-US style='font-size:10.0pt;font-family:"Arial","sans-serif"'>0,0, 0, ‘firls’, 0</span><span lang=EN-US>);<o:p></o:p></span></p></div><div><div><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div><div><p class=MsoNormal><span lang=EN-US>Another function I intend to use is running ICA on these files. Is there any way to accelerate the ICA (in my computer it took about 50 min wuth deafult settings of ICA)?<o:p></o:p></span></p></div><div><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div><div><p class=MsoNormal><span lang=EN-US>Thanks<o:p></o:p></span></p></div><div><p class=MsoNormal><span lang=EN-US style='color:#888888'>Avi<o:p></o:p></span></p></div><div><p class=MsoNormal><span lang=EN-US style='color:#888888'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span lang=EN-US style='color:#888888'><o:p> </o:p></span></p></div></div></div><div><div><div><p class=MsoNormal style='margin-bottom:12.0pt'><span lang=EN-US><o:p> </o:p></span></p><div><div><p class=MsoNormal><span lang=EN-US>2013/6/9 Andreas Widmann <</span><a href="mailto:widmann@uni-leipzig.de" target="_blank"><span lang=EN-US>widmann@uni-leipzig.de</span></a><span lang=EN-US>><o:p></o:p></span></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt'><p class=MsoNormal><span lang=EN-US>Hi Avi,<br><br>short answer:<br>upgrading to a recent 12.x EEGLAB version and using pop_eegfiltnew should solve your problem.<br><br>Long answer:<br>* I have to slightly correct my previous statement. The legacy (fir1/firls) FIR filter uses MATLAB filtfilt instead of MATAB filter and is thus not multi-threaded by default.<br>* The legacy filter is flawed (see e.g. </span><a href="http://www.frontiersin.org/Perception_Science/10.3389/fpsyg.2012.00233/full" target="_blank"><span lang=EN-US>http://www.frontiersin.org/Perception_Science/10.3389/fpsyg.2012.00233/full</span></a><span lang=EN-US> and </span><a href="https://sccn.ucsd.edu/bugzilla/show_bug.cgi?id=631for" target="_blank"><span lang=EN-US>https://sccn.ucsd.edu/bugzilla/show_bug.cgi?id=631for</span></a><span lang=EN-US> a more detailed description) and is not recommended.<br>* The new FIR filter in EEGLAB 12.x uses plain MATLAB filter an is thus genuinely multi-threaded. Filtering a 1086734-point 66-channel dataset takes 5 seconds with 265-point filter (default for 100 Hz-lowpass) and 2 min 16 seconds with 6145-point filter (your filter length) on my 1.7 Ghz dual core i5. Should be much faster on your machine.<br>* Note: there is an inconsistency between your command (EEG = pop_eegfilt( EEG, 0, 100, [], 0,0, 0, ‘firls’, 0);) and your reported output. This command should give a 60-point lowpass filter and *not* a 6144-point highpass. Did you change something in your EEGLAB code?<br><br>Hope this helps! Best,<br>Andreas<o:p></o:p></span></p><div><div><p class=MsoNormal style='margin-bottom:12.0pt'><span lang=EN-US><br>> 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.<br>><br>> 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.<br>><br>> I use EEGlab version 11.0.3.1b, and run “firls” filter. I run the filter with the following command:<br>> EEG = pop_eegfilt( EEG, 0, 100, [], 0,0, 0, ‘firls’, 0);<br>> When I run this command I get the following message:<br>><br>> eegfilt() - performing 6144-point highpass filtering.<br>> eegfilt() - highpass transition band width is 0.2 Hz.<br>><br>> 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.<br>><br>> 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.<br>><br>> 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?<br>><br>> 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?<br>><br>><br>> Thank you<br>><br>> Avi<br>><br>><br>><br>> 2013/6/8 Arnaud Delorme <</span><a href="mailto:arno@sccn.ucsd.edu" target="_blank"><span lang=EN-US>arno@sccn.ucsd.edu</span></a><span lang=EN-US>><br>> Thanks Andreas for the clarification.<br>><br>> Arno<br>><br>> On 8 Jun 2013, at 06:58, Andreas Widmann wrote:<br>><br>> > Hi Avi and Arno,<br>> ><br>> > no using parfor won't help here, filtering is already multithreaded since MATLAB R2007a.<br>> > </span><a href="http://www.mathworks.de/support/solutions/en/data/1-4PG4AN/" target="_blank"><span lang=EN-US>http://www.mathworks.de/support/solutions/en/data/1-4PG4AN/</span></a><span lang=EN-US><br>> ><br>> > I can try to narrow down the problem, but please on list (eeglablist). This might be interesting also for others. Many relevant parameters are missing:<br>> > * Length of dataset (samples or time and fs)<br>> > * Filter length or order<br>> > * OS and version<br>> > * EEGLAB version<br>> > * Why legacy filter (fir1/firls)? Using the new filter will immediately halve computation time.<br>> ><br>> > Best,<br>> > Andreas<br>> ><br>> > Am 07.06.2013 um 22:20 schrieb Arnaud Delorme <</span><a href="mailto:arno@sccn.ucsd.edu" target="_blank"><span lang=EN-US>arno@sccn.ucsd.edu</span></a><span lang=EN-US>>:<br>> ><br>> >> Dear Avi,<br>> >><br>> >> yes, it is possible to shorten the time.<br>> >> If you have multiple processor, you could try replacing line 74 of firfilt.m<br>> >><br>> >> for iDc = 1:(length(dcArray) - 1)<br>> >><br>> >> with<br>> >><br>> >> parfor iDc = 1:(length(dcArray) - 1)<br>> >><br>> >><br>> >> Channels will be filtered in parallel.<br>> >> GPU could help as well, but that's another story.<br>> >><br>> >> Hope this helps,<br>> >><br>> >> Arno<br>> >><br>> >> On 2 Jun 2013, at 23:53, Avi Lazarovits wrote:<br>> >><br>> >>> Hello,<br>> >>> My name is Avi and I work in lab with EEG recordings. I am using the EEGlab on matlab 2012b and would like to thank you for writing this useful toolbox.<br>> >>><br>> >>> the Processing time of the fir1/firls lowpass filters is very long (20 minutes for 66 channels SSD and I am looking for ways to shorten it. Is there any way to shorten it by changing the code for using parallel computingqGPU computing? will EEGlab use parallel computing in next versions?<br>> >>> If not, what are the best hardware specs to run these filters? I tried running it on an i7 3930k with 64Gb RAM system and it didn't shorten the time vs. my i5 3470 4Gb RAM system. I also tried to run this filter on a workstation system with Xeon CPU and it shortened the running time, but not significantly. I found that using SSD shortens the time significantly. Do you have any other hardware specs recommendations?<br>> >>><br>> >>> Thank you<br>> >>> Avi<br>> >><br>> ><br>><br>><o:p></o:p></span></p></div></div></blockquote></div><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div></div></div><p class=MsoNormal><span lang=EN-US><br>_______________________________________________<br>Eeglablist page: </span><a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" target="_blank"><span lang=EN-US>http://sccn.ucsd.edu/eeglab/eeglabmail.html</span></a><span lang=EN-US><br>To unsubscribe, send an empty email to </span><a href="mailto:eeglablist-unsubscribe@sccn.ucsd.edu"><span lang=EN-US>eeglablist-unsubscribe@sccn.ucsd.edu</span></a><span lang=EN-US><br>For digest mode, send an email with the subject "set digest mime" to </span><a href="mailto:eeglablist-request@sccn.ucsd.edu"><span lang=EN-US>eeglablist-request@sccn.ucsd.edu</span></a><span lang=EN-US><o:p></o:p></span></p></blockquote></div><p class=MsoNormal><span lang=EN-US><br><br clear=all><o:p></o:p></span></p><div><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div><p class=MsoNormal><span lang=EN-US>-- <o:p></o:p></span></p><div><p class=MsoNormal><span lang=EN-US>Makoto Miyakoshi<br>Swartz Center for Computational Neuroscience<br>Institute for Neural Computation, University of California San Diego<o:p></o:p></span></p></div></div></div></div></body></html>