cloudydory / cudaica_win Goto Github PK
View Code? Open in Web Editor NEWCUDAICA on Windows
CUDAICA on Windows
Hi Yun hui,
I've recently acquired a new computer and tested running cudaica in parallel. Although when compared individually cudaica runs faster than binica, cudaica really slows down when I run it in parallel (say, 12 files at a time), to the point that the CPU can perform 3 or 4x faster than the GPU.
Do you have any suggestions on how to improve performance? I know cudaica isn't using 100% of my GPU's power, so I imagine there is some headroom and I was wondering what are your thoughts. I remember reading somewhere that there was a way to modify the parameters that cudaica uses on the GPU but I can't find it. Ideally one would use the combo of the GPU and CPU to achieve 100% use of power, but I can't imagine that would be easy (right now I have it randomly chosing GPU or CPU giving CPU preference 2/3s of the time).
Side note: I'm running cudaica.exe you made on an RTX3070 and it runs is flawlessly.
Hi! First of all, thank you for building upon Freimound work!
I'm trying to use your compiled Windows Version.
I'm constantly getting this error 'Cannot read the result file. Please make sure you have installed NVIDIA CUDA and Intel MKL (or oneAPI), correctly set the environment variables, and have sufficient GPU memory.'
I have installed Nvidia cuda. Actually I even confirmed the correct installation by using nvcc - V in the cmd.
Not sure if this was necessary but also installed Intel MLK and added to path (E:\Program Files (x86)\Intel\oneAPI\mkl\2022.0.0\redist\intel64).
I'm using Windows 10, matlab R2018a, EEGlab 2021.1 and my GPU is NVIDIA GTX 1650 4GB VRam
Do you have any how to solve this issue? Thank you!
https://user-images.githubusercontent.com/55894612/147018015-802cf21e-18dc-4583-a066-6a490ec533d5.mp4
By googling, the fwrite function doesn't support struct class in windows.
I've already successfully installed and run cudaica on a couple windows computers so I'm unsure as to why it's not working on my new one. It errors when I try to run it saying to make sure I have CUDA, mkl, the environment variable set, and enough GPU memory. I'm running on a NVIDIA GeForce RTX 3070 with 16GB memory, i've downloaded the NVIDIA CUDA toolbox (https://developer.nvidia.com/cuda-downloads), installed the oneAPI kit and set the environment variable to C:\Program Files (x86)\Intel\oneAPI\mkl\latest\redist\intel64 which is a folder that exists and is, in fact, full of MKL application extensions. I'm using EEGLAB version 2022.0 which is the only thing I can think of because cudaICA1.1 doesn't appear to have a "replace" folder for this version but I'm not sure why this would make it error at "cannot read result file" (line 261 of cudaica). This is my first time using the oneAPI kit and can't find the old intel MKL library download that was separate so that's the only other thing that's different from previous successes. Any advice or suggestions welcome.
First of all, wonderful job with restarting this project.
I have it running (Matlab 2018a, Titan Black). I installed CUDA 8.1.
However, though the ICA finishes quickly, the GPU usage according to windows is 0-1%. Is that normal? GPU memory is being used and CPU process is 20-40%
Dear Yunhui,
I want to thank you for the implementation of CUDAICA in Matlab running on Windows 10 - it works perfectly in EEGLAB using an HP workstation and NVIDIA Quadro K6000 graphic card.
Iโm wondering if you have also implemented FastICA in the CUDAICA code for Matlab / EEGLAB.
Thanks in advance.
Yours sincerely,
Giorgio Di Lorenzo
Hi,
I'm thinking about using cudaica on a linux machine, and I was wondering if you got an answer from Fraimondo about the differences in step 3 between your implementations. I know this is a windows build but I was wondering about this, because this has to do with the basic CUDA code. I have an NVIDIA NVS 315 with 1 GB RAM (the data I plan to run ICA on is ~0.6 GB so I'm hoping this will be enough).
Thanks,
Nir
I'm having issues with the code and can't figure it out on my own. Could you help me?
I'm running the code on matlab 2017a,
Inter core i7 4702HQ CPU 2.20 GHz, 8gb ram Nvidia GTX 870M (razer 2014 laptop)
I'm using your version because I have no idea how to compile the code (I tried installing the CUDA10 but it corrupted my windows and I had to reset it twice)
when I run via the GUI, the code runs ok, but it gives me the same elapsed time for any versions (runica, binica and cudaica). When I run the code via syntax, it doesn't run it at all giving this error:
tic
EEG = pop_runica(EEG, 'extended',1,'icatype','cudaica','interupt','on','pca',29);
toc
Scaling components to RMS microvolt
Saving current ICA decomposition in "EEG.etc.oldicaweights" (etc.).
Decomposition saved as entry 5.
Attempting to convert data matrix to double precision for more accurate ICA results.
cudaica: using source file 'C:\Program Files\MATLAB\R2017a\bin\eeglab14_1_2b\functions\sigprocfunc\binica.sc'
cudaica(): using binary ica file 'C:\Program Files\MATLAB\R2017a\bin\eeglab14_1_2b\plugins\CudaICA1.0\cudaica_win.exe'
cudaica(): processing 4 (flag, arg) pairs.
setting lrate, 0.001
setting extended, 1
Reducing the data to 29 principal dimensions...
setting pca, 29
scriptfile = cudaica7323.sc
cudaica(): ica script file cudaica7323.sc data C:\cudaica7323.fdt pwd C:.
Running ica from script file cudaica7323.sc
Finding 29 components.
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
Output argument "A" (and maybe others) not assigned during call to "cudaica>floatread".
Error in cudaica (line 345)
weights = floatread(weightsfile,[ncomps Inf],[],0,'double');
Error in pop_runica (line 436)
[EEG.icaweights,EEG.icasphere] = cudaica(tmpdata, 'lrate', 0.001, g.options{:} );
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.