Ускорить пост кровать параллелизмом
Я использую инструмент под названием bedpostx, который используется для подгонки диффузионной модели к моим (предварительно обработанным) данным. Проблема в том, что этот процесс был запущен более 24 часов. Я хотел бы ускорить процесс путем распараллеливания бедняков. Для этого я должен запустить bedpostx_single_slice.sh в нескольких терминалах, применяя это к пакету срезов. Я продолжаю получать ошибки, хотя. Это команда, которую я запускаю в терминале:
bedpostx_single_slice.sh Tirocinio/Dati_DTI/DTI_analysis_copy 37
Где первый вход - это каталог с моими данными, а 37 - это i-й срез, который я хочу проанализировать. Это ошибка, которую я получаю:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted (core dumped)
К сожалению, документации по этим инструментам немного, плюс я довольно новичок в программировании.
Если это может помочь, ниже следует скрипт bedpostx_single_slice.sh:
#!/bin/sh
# Copyright (C) 2012 University of Oxford
export LC_ALL=C
subjdir=$1
slice=$2
shift
shift
opts=$*
slicezp=`${FSLDIR}/bin/zeropad $slice 4`
${FSLDIR}/bin/xfibres\
--data=$subjdir/data_slice_$slicezp\
--mask=$subjdir/nodif_brain_mask_slice_$slicezp\
-b $subjdir/bvals -r $subjdir/bvecs\
--forcedir --logdir=$subjdir.bedpostX/diff_slices/data_slice_$slicezp \
$opts > $subjdir.bedpostX/logs/log$slicezp && echo Done && touch $subjdir.bedpostX/logs/monitor/$slice
1 ответ
BedpostX довольно хорошо распараллелил себя командой FSL. Тебе было бы гораздо лучше воспользоваться этим напрямую.
Если вы хотите быстрый и простой способ распараллеливания, посмотрите Распараллеливание FSL без боли от NeuroDebian.