Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[far future] CUDA implementation of AMICA #4

Open
kevmtan opened this issue Oct 30, 2022 · 0 comments
Open

[far future] CUDA implementation of AMICA #4

kevmtan opened this issue Oct 30, 2022 · 0 comments
Labels
enhancement New feature or request

Comments

@kevmtan
Copy link
Owner

kevmtan commented Oct 30, 2022

AMICA is better than the Infomax algorithm used in CUDAICA; the former is noise-resistant & quasi-nonstationary (can use multiple mixture models with adaptive likelihood across timeframes)... AMICA is currently Intel CPU-only & much slower than CUDAICA

Compile AMICA's fortran source with CUDA's Fortran compiler... sounds simple but it's not

Required Fortran edits:

  • Switch all calls to Intel MKL libraries/functions to their CUDA-optimized alternatives (function names are different)
  • Add logic for ascertaining available RAM & VRAM, edit existing data chunking logic to account for both (e.g. differentiate GPU-constrained machines)
  • Convert all data to single-precision (Jason: 'ok for theaters multiplication') except during precision-critical operations (follow CUDAICA as guide for implementing this)

Alternate Matlab-CUDA implementation:

  • See Jason's e-mail with matlab implementation of AMICA
  • Add logic for data chunking using gpuArray calls
  • Add logic for normalization & integration of weights across data chunks
  • Keep as Matlab code or use Matlab CUDA compiler?

Lots of work but keep in back burner

@kevmtan kevmtan added the enhancement New feature or request label Oct 30, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant