Skip to content

sccn/amica

Repository files navigation

Amica

Code for AMICA: Adaptive Mixture ICA with shared component

Refer to the Amica wiki for documentation.

Refer also to Jason Palmer's AMICA page.

TO COMPILE WITH INTEL FORTRAN ON WINDOWS

  1. Install Intel OneAPI Base Toolkit for Windows.

  2. Install Intel OneAPI HPC Toolkit for Windows.

  3. Open Intel OneAPI command window (in Start menu, 32 or 64 bit as appropriate). Change to directory with Amica code, and compile Amica with the command (/F sets the stack size):

      > mpif90 /Qopenmp /Qmkl /F2147483648 /DMKL /fpp /O3 /exe:amica15mkl.exe funmod2.f90 amica15.f90
    
  4. Test:

      > .\amica15mkl.exe .\amicadefs.param
    
  5. The files impi.dll and libfabric.dll should be copied to executable folder when running outside OneAPI command window. Search OneAPI mpi directory for locations.

TO COMPILE WITH INTEL FORTRAN ON MAC

  1. These are old instructions. Try using Intel OneAPI modifiying the commands similar to the instructions for Windows above.

  2. Install Intel Fortran compiler for Mac/Linux (free demo). See https://software.intel.com/en-us/intel-parallel-studio-xe

  3. Compile MPICH2 setting environmental vars CC, CXX, FC, and F77 to icc and ifort. Set $FBIN to Intel Fortran bin directory.

    i) Download the mpich-3.2 code from: http://www.mpich.org/static/downloads/3.2/mpich-3.2.tar.gz

    ii) Compile mpich-3.2:

      $ cp /Users/$USER/downloads/mpich-3.2.tar.gz .   
      $ setenv CC $FBIN/icc
      $ setenv CXX $FBIN/icc
      $ setenv F77 $FBIN/ifort
      $ setenv FC $FBIN/ifort   
      $ tar xvf mpich-3.2.tar.gz   
      $ cd mpich-3.2   
      $ ./configure --prefix=/Users/$USER/mpich-3.2-install   
      $ make   
      $ make install
    
  4. Compile Amica with the command:

      $ ~/mpich-3.2-install/bin/mpif90 -L/Users/$USER/mpich-3.2-install/lib/ -I/Users/$USER/mpich-3.2-install/include/ -qopenmp -mkl -static-intel -O3 -fpp -DMKL amica15.f90 funmod2.f90 -o amica15mac
    
  5. Test:

    i) Download Sample EEG Data (Memorize.fdt and amicadefs.param) from: https://sccn.ucsd.edu/~jason/amica_web.html

    ii) Test binary:

      $ ./amica15mac ./amicadefs.param
    

TO COMPILE WITH INTEL FORTRAN ON UBUNTU

  1. These are old instructions. Try using Intel OneAPI modifiying the commands similar to the instructions for Windows above.

  2. Install Intel Fortran compiler for Linux.

  3. Compile MPICH2 setting environmental vars CC, CXX, FC, and F77 to icc and ifort.

  4. Compile Amica with the command:

      $ /home/jason/mpich2-3.2-install/bin/mpif90 -I/opt/intel/mkl/include/ -fpp -qopenmp -O3 -mkl -static -static-intel -DMKL funmod2.f90 amica15.f90 -o amica15ub
    
  5. Test:

      $ ./amica15ub ./amicadefs.param
    

TO COMPILE WITH INTEL FORTRAN ON EXPANSE SUPERCOMPUTER

  1. load appropriate modules:
   module purge
   module load cpu/0.15.4 intel intel-mkl mvapich2
  1. Compile Amica with the command:
   mpif90 -static-intel -fpp -O3 -march=core-avx2 -heap-arrays \
       -qopenmp -mkl -DMKL -o amica15ex funmod2.f90 amica17.f90
  1. Test:
   $ ./amica17nsg ./amicadefs.param
  1. Run on compute partition:
   <Edit amicadefs.param file line to: maxthreads 4>
   $ module load cpu/0.15.4 slurm intel intel-mkl mvapich2
   $ export OMP_NUM_THREADS=4 ; export SRUN_CPUS_PER_TASK=4 ; export MV2_ENABLE_AFFINITY=0
   $ srun --partition=compute --nodes=<NUM_NODES> --tasks-per-node=32 --cpus-per-task=4 \
        --mem=249208M --account=<ACCOUNT> --export=ALL -t 04:00:00 ./amica17nsg ./amicadefs.param
   <If job fails, reduce block_size in amicadefs.param. Increase block_size to speed up.>

VERSION HISTORY

1.7 - Update documentation for pop_runamica and add test file

1.6.1 - Modify Windows compilation instructions. Intel OneAPI should be tested for Mac and Ubuntu.

1.6 - Deprecate Comet and replace with Expanse supercomputer executable

1.5.2 - Comet supercomputer executable

About

Code for AMICA: Adaptive Mixture ICA with shared components

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published