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

Optimization and GPU porting of information flow implementation #71

Open
5 of 10 tasks
StanSStanman opened this issue Dec 1, 2020 · 3 comments
Open
5 of 10 tasks

Comments

@StanSStanman
Copy link

StanSStanman commented Dec 1, 2020

Project info

Title:
Optimization and GPU porting of information flow implementation

Project lead and collaborators:
Etienne Combrisson & Ruggero Basanisi

Image of the project:
project1

Registered Brainhack Global 2020 Event:
BrainHack Marseille

Project Description:
Frites is a recent pure Python package (https://github.com/brainets/frites) to analyse neurophysiological data within the Information Theoretical framework and to perform group-level statistics on information-based measures. The aim of the software is to extract brain networks that are modulated according to the task (model-based and model-free analysis). To this end, Frites contains several CPU-based functions to estimate the directed information flow between brain areas. While those methods estimate the directed connectivity in a reasonable amount of time on small networks, the complexity of larger networks are too demanding for the current CPU implementation. Therefore, the ultimate goal of this project would be to have both a CPU and a GPU implementations of our recent multivariate information flow measure.

Data to use:
No data are needed, Frites includes functions to generate simulated data.

Link to project repository/sources:
GitHub: https://github.com/brainets/frites

Goals for Brainhack Global 2020:
The following points are going to be addressed in this project:

  • Code a GPU implementation of the conditional mutual-information
  • Include a switch for the user to specify if a CPU or a GPU implementations are going to be used when computing the univariate information flow
  • GPU porting of the multivariate information flow measure (which is also going to use the GPU version of scikit-learn)

Good first issues:
Translate the core functions to be executed on GPU devices
Benchmark those functions against CPU implementations and decide whether it's better in the future to have two implementations (CPU / GPU) or to have system-agnostic functions
Skills:
Good knowledge of python is needed. We will mostly use basic libraries used in computer science, especially numpy. No needing about specific knowledge of GPU programming.

Tools/Software/Methods to Use:
Python, Jupyter, GitHub, and Nextjournal or Colab.

Project labels

  • Type of project:
    coding_methods, data_management, documentation, #method_development,
    pipeline_development, tutorial_recording, visualization

  • Project development status:
    0_concept_no_content, 1_basic structure, #2_releases_existing

  • Topic of the projet:
    Bayesian_approaches, #causality, connectome, data_visualisation, deep_learning,
    diffusion, diversity_inclusivity_equality, EEG_EventRelatedResponseModelling,
    EEG_source_modelling, Granger_causality, hypothesis_testing, ICA, #information_theory,
    machine_learning, MR_methodologies, neural_decoding, neural_encoding, neural_networks,
    PCA, #physiology, reinforcement_learning, reproducible_scientific_methods, single_neuron_models,
    statistical_modelling, systems_neuroscience, tractography, #connectivity

  • Tools used in the project:
    AFNI, ANTs, BIDS, Brainstorm, CPAC, Datalad, DIPY, FieldTrip, fMRIPrep, Freesurfer,
    FSL, #Jupyter, #MNE, MRtrix, Nipype, NWB, SPM

  • Tools skill level required to enter the project (more than one possible):
    comfortable, #expert, #familiar, no_skills_required

  • Programming language used in the project:
    no_programming_involved, C++, containerization, documentation, Java, Julia, Matlab,
    #Python, R, shell_scripting, Unix_command_line, Web, workflows

  • Modalities involved in the project (if any):
    behavioral, DWI, ECG, ECOG, EEG, eye_tracking, fMRI, fNIRS, MEG, MRI, PET, TDCS, TMS

  • Git skills reuired to enter the project (more than one possible):
    0_no_git_skills, #1_commit_push, #2_branches_PRs, 3_continuous_integration

  • I added all of the labels I want an associate to my project

Project Submission

Submission checklist

Once the issue is submitted, please check items in this list as you add under ‘Additional project info’

  • Link to your project: could be a code repository, a shared document, etc.
  • Goals for Brainhack Global 2020: describe what you want to achieve during this brainhack.
  • Flesh out at least 2 “good first issues”: those are tasks that do not require any prior knowledge about your project, could be defined as issues in a GitHub repository, or in a shared document.
  • Skills: list skills that would be particularly suitable for your project. We ask you to include at least one non-coding skill. Use the issue labels for this purpose.

Optionally, you can also include information about:

  • Number of participants required.
  • Twitter-sized summary of your project pitch.
  • Provide an image of your project for the Brainhack Global 2020 website.

We would like to think about how you will credit and onboard new members to your project. If you’d like to share your thoughts with future project participants, you can include information about:

  • Specify how you will acknowledge contributions (e.g. listing members on a contributing page).
  • Provide links to onboarding documents if you have some:
@complexbrains
Copy link
Contributor

Dear @StanSStanman Thank you very much for your project submission and welcome to the Brainhack Global 2020 🎉 I see that you didn't include good first 2 issues to your description. I will merge your project to the website but we always recommend to have those issues listed to guide the participants better on deciding how they can contribute to your project. Please do no hesitate to add when you have time.

Hope you enjoy your participation in Brainhack Global 2020 🚀 🧠

@EtienneCmb
Copy link

Hi @complexbrains, here's the missing section (or maybe you prefer that we edit the text from @StanSStanman ?) :

Good first issues:

  • Translate the core functions to be executed on GPU devices
  • Benchmark those functions against CPU implementations and decide whether it's better in the futur to have two implementations (CPU / GPU) or to have system agnostic functions

Let me know if it's ok for you !

@complexbrains
Copy link
Contributor

Perfect! Let's add those too! Thank you 🤗

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment