<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi All,<br>
    <br>
    I know that there is a lightning fast cudaica implementation that
    leverages GPUs on Linux, but has anyone tried making use of new CUDA
    gpu functionality that is now built in to the latest versions of
    matlab to optimize runica?  I'm particularly interested in this so
    that we could make use of CUDA GPUs on windows machines within
    matlab.<br>
    <br>
    Thanks,<br>
    Brian<br>
    <br>
    <div class="moz-cite-prefix">On 6/12/13 12:31 PM, Makoto Miyakoshi
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAEqC+SVbLxdg7fJE-cxKn=8gGNgU_Mi2kO+A2ViOcFkwT04SnQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">Dear Avi,
        <div><br>
        </div>
        <div style="">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.</div>
        <div style=""><br>
        </div>
        <div style="">Makoto</div>
        <div class="gmail_extra"><br>
          <br>
          <div class="gmail_quote">2013/6/9 Avi Lazarovits <span
              dir="ltr"><<a moz-do-not-send="true"
                href="mailto:avila@post.bgu.ac.il" target="_blank">avila@post.bgu.ac.il</a>></span><br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div dir="rtl">
                <div dir="ltr">Hello, </div>
                <div dir="ltr">Thank you very much, I will try to run
                  this function with the new filter.</div>
                <div dir="ltr">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
                    style="font-size:13px;font-family:arial,sans-serif">0,0,
                    0, ‘firls’, 0</span>);</div>
                <div dir="ltr">
                  <div dir="ltr"><br>
                  </div>
                  <div>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)?</div>
                  <div><br>
                  </div>
                  <div>Thanks</div>
                  <span class="HOEnZb"><font color="#888888">
                      <div>Avi</div>
                      <div dir="ltr"><br>
                      </div>
                      <div><br>
                      </div>
                    </font></span></div>
              </div>
              <div class="HOEnZb">
                <div class="h5">
                  <div class="gmail_extra"><br>
                    <br>
                    <div class="gmail_quote">
                      <div dir="ltr">2013/6/9 Andreas Widmann <span
                          dir="ltr"><<a moz-do-not-send="true"
                            href="mailto:widmann@uni-leipzig.de"
                            target="_blank">widmann@uni-leipzig.de</a>></span></div>
                      <blockquote class="gmail_quote" style="margin:0 0
                        0 .8ex;border-left:1px #ccc
                        solid;padding-left:1ex">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. <a
                          moz-do-not-send="true"
href="http://www.frontiersin.org/Perception_Science/10.3389/fpsyg.2012.00233/full"
                          target="_blank">http://www.frontiersin.org/Perception_Science/10.3389/fpsyg.2012.00233/full</a>
                        and <a moz-do-not-send="true"
                          href="https://sccn.ucsd.edu/bugzilla/show_bug.cgi?id=631for"
                          target="_blank">https://sccn.ucsd.edu/bugzilla/show_bug.cgi?id=631for</a>
                        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<br>
                        <div>
                          <div><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 <<a
                              moz-do-not-send="true"
                              href="mailto:arno@sccn.ucsd.edu"
                              target="_blank">arno@sccn.ucsd.edu</a>><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>
                            > > <a moz-do-not-send="true"
                              href="http://www.mathworks.de/support/solutions/en/data/1-4PG4AN/"
                              target="_blank">http://www.mathworks.de/support/solutions/en/data/1-4PG4AN/</a><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 <<a moz-do-not-send="true"
                              href="mailto:arno@sccn.ucsd.edu"
                              target="_blank">arno@sccn.ucsd.edu</a>>:<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>
                            ><br>
                            <br>
                          </div>
                        </div>
                      </blockquote>
                    </div>
                    <br>
                  </div>
                </div>
              </div>
              <br>
              _______________________________________________<br>
              Eeglablist page: <a moz-do-not-send="true"
                href="http://sccn.ucsd.edu/eeglab/eeglabmail.html"
                target="_blank">http://sccn.ucsd.edu/eeglab/eeglabmail.html</a><br>
              To unsubscribe, send an empty email to <a
                moz-do-not-send="true"
                href="mailto:eeglablist-unsubscribe@sccn.ucsd.edu">eeglablist-unsubscribe@sccn.ucsd.edu</a><br>
              For digest mode, send an email with the subject "set
              digest mime" to <a moz-do-not-send="true"
                href="mailto:eeglablist-request@sccn.ucsd.edu">eeglablist-request@sccn.ucsd.edu</a><br>
            </blockquote>
          </div>
          <br>
          <br clear="all">
          <div><br>
          </div>
          -- <br>
          <div dir="ltr">Makoto Miyakoshi<br>
            Swartz Center for Computational Neuroscience<br>
            Institute for Neural Computation, University of California
            San Diego<br>
          </div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Eeglablist page: <a class="moz-txt-link-freetext" href="http://sccn.ucsd.edu/eeglab/eeglabmail.html">http://sccn.ucsd.edu/eeglab/eeglabmail.html</a>
To unsubscribe, send an empty email to <a class="moz-txt-link-abbreviated" href="mailto:eeglablist-unsubscribe@sccn.ucsd.edu">eeglablist-unsubscribe@sccn.ucsd.edu</a>
For digest mode, send an email with the subject "set digest mime" to <a class="moz-txt-link-abbreviated" href="mailto:eeglablist-request@sccn.ucsd.edu">eeglablist-request@sccn.ucsd.edu</a></pre>
    </blockquote>
  </body>
</html>