[Eeglablist] Installing CUDAICA on Windows 10 (2021 update)

Scott Makeig smakeig at gmail.com
Wed Nov 17 13:21:53 PST 2021


John,

Makoto  seems to forget the result of Fiorenzo Artoni that applying PCA
before ICA is suboptimal - better to reduce the number of channels and run
ICA decomposition full-rank. Or, if you are more ambitious / exacting, run
multiple ICA decompositions on different channel subsets (for example,
random sets of 70 channels picked from 128) and then apply clustering to
the resulting independent component (IC) maps - I haven't seen that
approach applied yet ...

Artoni, F., Delorme, A. and Makeig, S., 2018. Applying dimension reduction
to EEG data by Principal Component Analysis reduces the quality of its
subsequent Independent Component decomposition
<https://urldefense.proofpoint.com/v2/url?u=https-3A__www.sciencedirect.com_science_article_pii_S1053811918302143-3Fcasa-5Ftoken-3DKT3XImh-2D-2Dl0AAAAA-3Aut0ozF7mVGYDngMVu-2Di0PowjzqzZEhuIl153z6MNgM8NRHDXZZj2CWlYEd0948glBn11q-5FXk7B8&d=DwIFaQ&c=-35OiAkTchMrZOngvJPOeA&r=kB5f6DjXkuOQpM1bq5OFA9kKiQyNm1p6x6e36h3EglE&m=1V0Pv3GEpWcH6cnTBfF3OkPCw1q6sV7i1KkpmTcZLPR5Zk6IrpoO-v9AHej5thXX&s=FOCvyuz-g601FyZjGqxKwagPUyY_Gu5CXL6z7hBIY40&e= >
. *NeuroImage*, *175*, pp.176-187.

Fiorenzo's RELICA plug-in does something related - applying (full-rank) ICA
decomposition to randomly selected subsets of data points, followed by
component clustering. Zeynep Akalin Acar has recently demonstrated that
using RELICA component cluster scalp map means *and* variances  can
increase the accuracy of high-resolution source location estimation.

Acar, Z.A. and Makeig, S., 2020, October. Improved cortical source
localization of ICA-derived EEG components using a source scalp projection
noise model
<https://urldefense.proofpoint.com/v2/url?u=https-3A__ieeexplore.ieee.org_iel7_9287816_9287978_09288020.pdf-3Fcasa-5Ftoken-3DdOEYtrVfetoAAAAA-3AQsY-2D7AQl9TzSyk3IMqlsy7KnMhUI-2DJ-2DQ68H5cKzjpbPWRVpN-2D4xrR-5FJPMBwDEDF-5FQ9nLkIHLH5U&d=DwIFaQ&c=-35OiAkTchMrZOngvJPOeA&r=kB5f6DjXkuOQpM1bq5OFA9kKiQyNm1p6x6e36h3EglE&m=1V0Pv3GEpWcH6cnTBfF3OkPCw1q6sV7i1KkpmTcZLPR5Zk6IrpoO-v9AHej5thXX&s=9LgBnRFI9F58j5n8Uw4aiQt5VnRltfPcbOsHPjefflA&e= >.
In *2020 IEEE 20th International Conference on Bioinformatics and
Bioengineering (BIBE)* (pp. 543-547). IEEE.

Scott

On Wed, Nov 17, 2021 at 3:24 PM Makoto Miyakoshi via eeglablist <
eeglablist at sccn.ucsd.edu> wrote:

> Dear John,
>
> I found it interesting that in your case runica()'s processing time
> linearly increased (63 -> 168 min) as the input data length increased (8 ->
> 25 min), but that for CUDAICA did not (2.3 -> 2.8 min).
>
> If you have 126 ch, you want to have 126^2*30 = 476280 data points as a
> minimum (from SCCN's never-verified rule of thumb). But you have 275*474=
> 130350 datapoints, which seems suboptimal to ensure a good learning.
> Perhaps you want to apply dimension reduction using PCA to obtain 70 ICs,
> so that the same rule of thumb predicts 70^2*30 = 147000 datapoints for
> learning, which is much closer.
>
> Do you want to know more detail about this optimization?
> In fact, without running a simulation you can't theoretically determine
> what number is a good number. This is why I wrote this simulator as an
> EEGLAB plugin. Try it out to 'feel' how much deviation/violation from the
> 'rule of thumb' can negatively impact the decomposition.
>
> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.youtube.com_watch-3Fv-3DCGOw04Ukqws&d=DwIFaQ&c=-35OiAkTchMrZOngvJPOeA&r=kB5f6DjXkuOQpM1bq5OFA9kKiQyNm1p6x6e36h3EglE&m=YfSSJdGbaWUJjsVGL_Bd3kbvoWDALgCGOA44Hn93INujbnQT8WNcijz3CAaY7Km2&s=HuuZdy7O3viOY-fIz_ayjeDkatQ_038Fa2wbfMDeg9I&e=
>
> Makoto
>
> On Tue, Nov 16, 2021 at 2:59 PM Richards, John <RICHARDS at mailbox.sc.edu>
> wrote:
>
> > I was curious about the speed differences for my applications.  I have
> > tested this before, did not write down my results.
> >
> > I ran an EEGlab file, 126 channels * 275 samples * 474 trials, about 8
> min
> > of EEG data.  This is done on a linux node in a a linux cluster, Intel(R)
> > Xeon(R) CPU E5-2680 v4 @ 2.40GHz node, with 256G memory, 28 cores.  The
> > runica appears to be working on 12 cores.   The gpu was a dual Tesla
> > P100-PCIE-16G.  The cudaica ran on one GPU.
> >
> > runica version took 63 min.  cudaica version took 2 min 15 s;
> > runica appeared to be running on multiple CPUs, ~ 12 CPUs.
> >
> > I concatenated the data for 1422 trials, about 25 min
> > Cudica took 2 min 50s|
> > runica took 2.8 hours, 12 CPUs
> >
> > Most of our runs with infants take 8 to 10 min, some of our adults runs
> > are 25 min.
> >
> > I understand from the earlier conversation the binica might be able to
> > match these results?   I'm not going to do a full test, but this
> convinces
> > me to stick with cudaica for now.
> >
> > John
> >
> >
> > -----Original Message-----
> > From: Richards, John
> > Sent: Thursday, November 11, 2021 1:15 AM
> > To: Makoto Miyakoshi <mmiyakoshi at ucsd.edu>; ugob at siu.edu;
> > eeglablist at sccn.ucsd.edu
> > Subject: RE: [Eeglablist] Installing CUDAICA on Windows 10 (2021 update)
> >
> > Re CUDAICA.  I was able to install it, i don't remember it being that
> > difficult.  I had to mess around with the CUDA version.
> >
> > I have found it "blazing" fast compared to runica. I have not timed it.
> > We have 10-15 min sessions with EGI 128, 250 hz, do the Prep pipeline to
> > get avg ref, and then CUDAICA.  It takes < 5 min to do the Prep, and  < 5
> > min to do the CUDAICA; cf 45 min to 60 min with runica.  I may not be
> using
> > the most recent runica.   BTW, we have fairly powerful computers; we use
> 48
> > cores for the Prep pipeline which is a vast speedup, and V100's with 16gb
> > or 32gb.   Definitely not bargain chips.  We use the 48core computers for
> > the runica, but it does not appear to profit from the multiple CPUs.  The
> > Prep pipeline also is very slow on single CPUs, but very fast on the 48
> CPU
> > machines.
> >
> > I would be glad to share more details if anyone is interested.
> >
> > John
> >
> >
> > ***********************************************
> > John E. Richards
> > Carolina Distinguished Professor
> > Department of Psychology
> > University of South Carolina
> > Columbia, SC  29208
> > Dept Phone: 803 777 2079
> > Fax: 803 777 9558
> > Email: richards-john at sc.edu
> >
> >
> https://urldefense.proofpoint.com/v2/url?u=https-3A__jerlab.sc.edu&d=DwIFAw&c=-35OiAkTchMrZOngvJPOeA&r=pyiMpJA6aQ3IKcfd-jIW1kWlr8b1b2ssGmoavJHHJ7Q&m=XWfhosWnNSjs97eRAV2Ysofk5w2Z2_mbQvfeek3KRqTVlZ-2fBHSCo5P_bnFInes&s=yvIsDcwOpKjhTPokE_cuv5RlAl7bUeNjmpt7-e34zWk&e=
> > *************************************************
> >
> > -----Original Message-----
> > From: eeglablist <eeglablist-bounces at sccn.ucsd.edu> On Behalf Of Makoto
> > Miyakoshi via eeglablist
> > Sent: Thursday, November 11, 2021 1:02 AM
> > To: EEGLAB List <eeglablist at sccn.ucsd.edu>; ugob at siu.edu
> > Subject: [Eeglablist] Installing CUDAICA on Windows 10 (2021 update)
> >
> > Dear list members,
> >
> > I summarized the steps to install cudaica() which uses GPU computation to
> > calculate infomax ICA (Raimondo et al., 2012). The result from the speed
> > comparison between runica() and cudaica() was not as dramatic as x25
> > reported by the original paper, probably because Tjerk's smart hack alone
> > already gave x4-5 speed up to runica(). Still, using a relatively cheap
> > GTX1660 (the pre-COVID price range is $250), I confirmed x4-5 speed up
> > compared with runica(). The detailed instruction can be found in the
> > following link.
> >
> >
> >
> https://sccn.ucsd.edu/wiki/Makoto%27s_useful_EEGLAB_code#By_using_CUDAICA_.2811.2F10.2F2021_added.29
> >
> > WARNING: The installation was difficult.
> >
> > Makoto
> > _______________________________________________
> > Eeglablist page: http://sccn.ucsd.edu/eeglab/eeglabmail.html
> > To unsubscribe, send an empty email to
> > eeglablist-unsubscribe at sccn.ucsd.edu
> > For digest mode, send an email with the subject "set digest mime" to
> > eeglablist-request at sccn.ucsd.edu
> >
> _______________________________________________
> Eeglablist page: http://sccn.ucsd.edu/eeglab/eeglabmail.html
> To unsubscribe, send an empty email to
> eeglablist-unsubscribe at sccn.ucsd.edu
> For digest mode, send an email with the subject "set digest mime" to
> eeglablist-request at sccn.ucsd.edu
>


-- 
Scott Makeig, Research Scientist and Director, Swartz Center for
Computational Neuroscience, Institute for Neural Computation, University of
California San Diego, La Jolla CA 92093-0559, http://sccn.ucsd.edu/~scott


More information about the eeglablist mailing list