EEGLab-Pannon / CEEMDAN-GPU

High-performance parallel GPU implementation of the Improved Complete Empirical Mode Decomposition with Adaptive Noise algorithm in CUDA
MIT License
5 stars 3 forks source link
c cuda eeg emd

CEEMDAN-GPU

This repo contains our CUDA implementation of the Improved CEEMDAN algorithm. The original algorithm is described in

and implemented in MATLAB available at http://perso.ens-lyon.fr/patrick.flandrin/emd.html

Our version achieves several orders of magnitude higher speed compared to the MATLAB implementation, reducing the execution time from hours (even days) to seconds.

If you download and use our program, please cite the following paper in your relevant publications:

Compiling and usage instructions

The supplied code has been tested in Linux and Windows environments. On Linux, compile the code as follows after changing the -arch parameter to match your target CUDA device architecture. This example assumes Volta architecture, compute capability 7.0.

The implementation can be found in the source files cudaICEEMDAN.cu and statistics.cu. We have provided two sample C program files that demonstrate how to use the implementation. The program sample_synthetic_signal.cu creates and uses synthetic signals, while the file sample_binary_file.cu demonstrates how to read in a binary input data file generated in, say, MATLAB and process on the GPU.

nvcc -arch=sm_70 -Xcompiler -fopenmp -lcublas -lcusparse -lcurand ./sample_synthetic_signal.cu ./cudaICEEMDAN.cu ./statistics.cu -o CUDA_ICEEMDAN

On Windows systems, we recommend using the Visual Studio or Visual Studio Code environment. Create a CUDA project, place the file from this project into the source directory and add them to the VS project. After setting the necessary project configuration parameters, the project can be built.

We have also providing an implementation for direct execution from MATLAB. This can be downloaded from the folder MatlabMEXCUDA.