[FieldTrip] Run ft_prepare_vol_sens on multiple cores

Richards, John RICHARDS at mailbox.sc.edu
Thu Apr 14 18:25:57 CEST 2022


Frans.

I was able to do this.  There are two places where there is an iterative part of the ft_prepare_leadfield.  I think one of these is the main program, and another is the sb_transfer.  I was able to recode that section and use parfor for the parallel processing.  We do 3mm hex source volumes for adults, or dense tetra source/head models, both which have something like 100K source voxels; and 2mm hex source models for infants, or dense tetra source/head models.  We run this on 48-core machines and it takes 90 min or so to do the LF.  I used to do these with the single-threaded matlab and it took something like 18 hrs. 

I don't remember offhand exactly which sections I did this in.  I have customized versions for the files below.  I would be glad to give you a further description if you are interested.

John 

./JERLab_ft_prepare_leadfield.m
./external/simbio/JERLab_sb_transfer.m
./forward/JERLab_ft_prepare_vol_sens_notransfer.m
./forward/JERLab_ft_prepare_vol_sens.m
./forward/private/JERLab_leadfield_simbio.m
Also in sb_solve I commented out the disp because they were distracting on the matlab output, but I don't think I changed this module.

It takes a few steps to upgrade to a new fieldtrip version because I have these extra programs.  The last time I upgraded was june 2021 to the fieldtrip-20210330 version.  These are the notes I used to upgrade, so they might be a good hint where to look for parallelization with MATLAB.
ERLab_ft_prepare_leadfield
  add computeparallel to the cfg file
  will do the parallel, OR, use the original code if computeparallel is not set
private/prepare_headmodel
 adds parfor based on computeparallel in the cfg
JERLab_ft_prepare_vol_sens, substitute JERLab_sb_transfer
external/simbio/JERLab_sb_transfer
  adds the parfor for the parallel pool
external/simbio/sb_solve 
  removed the disp's, so don't print during the parallel
  clears are ok in subroutines, but not in external parfor loop


This used to be ft_prepare_vol_sens_notransfer, but is a JERLab program, so rename.
it is used in private/prepare_headmodel
x forward/JERLab_ft_prepare_vol_sens_notransfer.m
 

***********************************************
John E. Richards
Carolina Distinguished Professor
Department of Psychology
University of South Carolina
Columbia, SC  29208
Dept Phone: 803 777 2079
Fax: 803 777 9558
Email: richards-john at sc.edu
https://jerlab.sc.edu
*************************************************


----------------------------------------------------------------------

Message: 1
Date: Wed, 13 Apr 2022 10:48:41 +0000
From: "Schoffelen, J.M. (Jan Mathijs)"
	<janmathijs.schoffelen at donders.ru.nl>
To: FieldTrip discussion list <fieldtrip at science.ru.nl>
Subject: Re: [FieldTrip] Run ft_prepare_vol_sens on multiple cores
Message-ID: <34E8671E-BDFF-40B0-A8FC-51B6DE832330 at donders.ru.nl>
Content-Type: text/plain; charset="utf-8"

Hi Frans,

Perhaps the simbio folks who are reading along can comment on this?

Best wishes,
Jan-Mathijs


On 12 Apr 2022, at 17:51, Frans Nord via fieldtrip <fieldtrip at science.ru.nl<mailto:fieldtrip at science.ru.nl>> wrote:

Hello all,

In the article "The FieldTrip-SimBio pipeline for EEG forward modelling" (https://pubmed.ncbi.nlm.nih.gov/29580236/<https://protect2.fireeye.com/v1/url?k=31323334-501d2dca-31327df5-454455534531-2af725325d4aef4b&q=1&e=57cfd234-1f5c-425d-a911-de4097b63ba0&u=https%3A%2F%2Furldefense.com%2Fv3%2F__https%3A%2F%2Fpubmed.ncbi.nlm.nih.gov%2F29580236%2F__%3B%21%21HJOPV4FYYWzcc1jazlU%214B2vOR7eEquYu23rZZqYB7aXimMxJhGdqndb2U4xGpnQc91i_jchiCZIl946JbymXnDbqWfKxg16WtwFDXZTXNI-VKqad34BCpR5Yg%24>) it is stated that they were able to reduce the computational time substantially when calling ft_prepare_vol_sens and ft_calculate_leadfield through running it on all 16 cores.

Looking at the code I would assume that it's the call to sb_transfer that takes a long time to compute but I don't know how to attempt any parallelizing there. Anyone who has any idea on how to do that?

Best regards and thank you for developing a great toolbox!
//Frans
_______________________________________________
fieldtrip mailing list
https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
https://protect2.fireeye.com/v1/url?k=31323334-501d2dca-31327df5-454455534531-6da7080247d95362&q=1&e=57cfd234-1f5c-425d-a911-de4097b63ba0&u=https%3A%2F%2Furldefense.com%2Fv3%2F__https%3A%2F%2Fdoi.org%2F10.1371%2Fjournal.pcbi.1002202__%3B%21%21HJOPV4FYYWzcc1jazlU%214B2vOR7eEquYu23rZZqYB7aXimMxJhGdqndb2U4xGpnQc91i_jchiCZIl946JbymXnDbqWfKxg16WtwFDXZTXNI-VKqad34U9MFCNg%24





More information about the fieldtrip mailing list