CloudyDory / cudaica_win

CUDAICA on Windows
12 stars 4 forks source link

Windows Compiled Version Error #7

Open DiogoAABranco opened 2 years ago

DiogoAABranco commented 2 years ago

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

winndsd commented 2 years ago

I also had the same bug report when I tried this using Intel oneAPI 2022. However, it believes that the bug from faults calling some MKL functions.

Debugging from Line 237-255 in 'cudaica.m', I found the printed error coming from uncatching 'cudaica.wts' or 'cudaica.wts'. I tried running scripts in commanding window.

E:\eeglab_git\eeglabgit\plugins\CudaICA1.0\cudaica_win.exe -f "D:\DESKTOP\cudaica.sc"

I got no 'done' in whitening process. However, this should be done in 'preprocessing' procedure.

I remembered the previous bug, when cudaica_win.exe trying to find 'mkl_intel_thread.dll'. In OneAPI, which is the 2022 updated version of 'Intel Parallel Studio', there's 'mkl_intel_thread.2.dll' but no Gen1, also shown in your video.

Hence, I believed the 2018 complied version not support MKL 2022. Actually originally designed in 2000, more traditional API should be used in this application.

I uninstalled my MKL 2022 and switched to 'Intel Parallel Studio XE 2020 build 163 Win'.

It works!!!

CloudyDory commented 2 years ago

@DiogoBrancoNeuro @winndsd

Sorry for the late reply.

CUDAICA_Win is updated for the new Intel OneAPI base toolkit now. It is also compatitable with the old Intel MKL 2020. I have actually compiled two binary exe files, and cudaica.m will select which exe file to run depending on your installed MKL version.

Therefore, the installation process is changed slightly. Modifying "icadefs.m" is no longer needed. Selecting the correct exe file is now done in "cudaica.m".

Let me know if there are any further questions.

winndsd commented 2 years ago

@CloudyDory Thank you for your updates. It helps me a lot when I'm trying to get a robust ICA result faster. Good to see the compatibility improvement. If possible, can multithread or multiprocess squeeze more performance?

CloudyDory commented 2 years ago

@winndsd Hi, I really wish that this could happen, filling up the entire GPU by processing multiple datasets at the same time. But this is beyond my coding ability now, sorry for that.

Really appreciate someone with enough knowledge can help.