Skip to content

Guidelines needed for gpu running interfaces #3726

Open
@mauriliogenovese

Description

@mauriliogenovese

I am trying to update some fsl interfaces to implement support for gpu multiproc queue (#3722 #3721) and I plan to implement interfaces for some new freesuerfer cuda capable commands (easyreg, synth_strip, etc).
I don't know if and how handle the detection of a cuda capable system.

There are some premise:

  1. Some tools automatically run on cpu (eg fsl probtrackx2 or bedpostx) and have a gpu counterpart (probtrackx2_gpu and bedpostx_gpu)
  2. Some tools try to automatically run on GPU if available (eg new version of fsl eddy or fs mri_synthseg) and the user need actively switch to cpu execution if they will, either using an alternative command (eddy_mp/eddy_cpu) or a parameter (mri_synthseg --cpu)
  3. Some commands can be parallelized with their cpu version but can/should not in their gpu version

How should we implement interfaces in nipype? Always use CPU unless stated by the user or let each tool "choose" his way and intercept it to select the right cpu/gpu queue in multiproc plugin?

And another question: should each nipype dev check the presence of a cuda capable system to generate the correct workflow or do we want that devs can just set use_gpu=True and the interfaces will automatically switch to cpu it if the end-user has a cuda-less system?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions