ibs-lab / cedalion

fNIRS analysis toolbox
15 stars 4 forks source link

cudatoolkit not available for osx arm 64 #10

Open dboas opened 1 month ago

dboas commented 1 month ago

Cedalion seems to have a dependency on cudatoolkit. Alas, cudatoolkit is not available for osx arm 64. I am thus unable to work with Cedalion on my Macbook Pro M1 from 2021. I was hoping to move to my newer M3 chip, but it won't work there either

Why does Cedalion require Cuda? Can it be optional?

emiddell commented 1 month ago

My fault. We actually do not depend on cudatoolkit. I erroneously thought it was required for MCX but that was wrong. Hence, I removed this dependency in 1e16dba.

dboas commented 1 month ago

@emiddell I got much further... but then it failed to finish creating the environment because of an error finding pmcx I think your fix above missed this somewhere. Error message follows further below

Despite the below error message, I was still able to activate the cedalion enviroment and install it with

$ conda activate cedalion
$ pip install -e .

But then once I launched spyder and tried to import cedalion, I got an error no module named 'mne' which i gather happened because the error I got creating the env resulted in some modules not being installed. I then removed the pmcx line from environment_dev.yml and recreated my cedalion environment and was able to do the import cedalion command.

Here is the env create error

(base) dboas@Davids-MacBook-Pro cedalion % conda env create -n cedalion -f environment_dev.yml
Channels:
 - conda-forge
 - defaults
Platform: osx-arm64
Collecting package metadata (repodata.json): done
Solving environment: done

Downloading and Extracting Packages:

Preparing transaction: done                                                                                                                                
Verifying transaction: done                                                                                                                                
Executing transaction: done                                                                                                                                
Installing pip dependencies: - Ran pip subprocess with arguments:                                                                                          
['/opt/anaconda3/envs/cedalion/bin/python', '-m', 'pip', 'install', '-U', '-r', '/Users/dboas/Documents/GitHub/cedalion/condaenv.pb1kh3dh.requirements.txt', '--exists-action=b']                                                                                                                                     
Pip subprocess output:                                                                                                                                     
Collecting mne==1.4.0 (from -r /Users/dboas/Documents/GitHub/cedalion/condaenv.pb1kh3dh.requirements.txt (line 1))                                         
  Downloading mne-1.4.0-py3-none-any.whl (7.7 MB)                                                                                                          
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.7/7.7 MB 565.4 kB/s eta 0:00:00                                                                            
Collecting mne-bids==0.12 (from -r /Users/dboas/Documents/GitHub/cedalion/condaenv.pb1kh3dh.requirements.txt (line 2))                                     
  Downloading mne_bids-0.12-py2.py3-none-any.whl (1.2 MB)                                                                                                  
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 588.1 kB/s eta 0:00:00                                                                            
Collecting mne-nirs==0.5.0 (from -r /Users/dboas/Documents/GitHub/cedalion/condaenv.pb1kh3dh.requirements.txt (line 3))                                    
  Downloading mne_nirs-0.5.0-py3-none-any.whl (96 kB)                                                                                                      
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.2/96.2 kB 570.1 kB/s eta 0:00:00                                                                          
Collecting pywavefront==1.3.3 (from -r /Users/dboas/Documents/GitHub/cedalion/condaenv.pb1kh3dh.requirements.txt (line 4))                                 
  Downloading PyWavefront-1.3.3-py3-none-any.whl (28 kB)                                                                                                   
Collecting setuptools-scm==7.1.0 (from -r /Users/dboas/Documents/GitHub/cedalion/condaenv.pb1kh3dh.requirements.txt (line 5))                              
  Downloading setuptools_scm-7.1.0-py3-none-any.whl (43 kB)                                                                                                
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 43.8/43.8 kB 539.8 kB/s eta 0:00:00                                                                          
Collecting snirf==0.7.4 (from -r /Users/dboas/Documents/GitHub/cedalion/condaenv.pb1kh3dh.requirements.txt (line 6))                                       
  Downloading snirf-0.7.4-py3-none-any.whl (54 kB)                                                                                                         
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 54.8/54.8 kB 151.9 kB/s eta 0:00:00                                                                          

Pip subprocess error:                                                                                                                                      
ERROR: Could not find a version that satisfies the requirement pmcx (from versions: none)                                                                  
ERROR: No matching distribution found for pmcx                                                                                                             

failed                                                                                                                                                     

CondaEnvException: Pip failed                                                                                                                              

(base) dboas@Davids-MacBook-Pro cedalion %
emiddell commented 1 month ago

pmcx for osx-arm64 is not available for python 3.10. Another package which we considered using (nipype) prevented us from switching to more recent python versions.

So far we make no use of nipype and probably never will. So I removed that dependency and and switched to python 3.11. I also updated GitHub Actions to test on MacOS and Windows.