multicore.setup: Multicore Processing Wrappers

Description Usage Arguments Details Value Note Examples

Description

A set of wrapper functions for multicore processing, using the parallel package.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10

Arguments

max.cores

integer specifying how many cores to request. NULL means use all available

sampleSet

character vector (or list of character vectors), usually SampleIDs, that need to be turned into a list of all pairs from sampleSet, for a subsequent multicore call to a function that expects two arguments, such as a differential expression operation. When sampleSet is a list, only pairs from within each element are generated.

symmetric.pairs

logical, are symmetric pairs needed. This is for cases where the function to be called is sensitive to the order of its 2 arguments (i.e. f(x1,x2) != f(x2,x1). If true, more pairs are generated.

x, INDEX, FUN, ...

the usual arguments passed on to the respective 'apply' function

data, INDICES, FUN, ...

the usual arguments passed on to the 'by' function

Details

These are simple wrappers around the parallel routines, to facilitate parcelling computations that involve entire chromosomes or samples out to separate cores.

Value

For multicore.setup, the maximum of the number of cores actually available or the number of cores requested. The function tries to load package parallel, and if successful, sets the number of cores to be used. This value can be subsequently returned by multicore.currentCoreCount.

For multicore.currentCoreCount, integer telling the number of cores currently requested via multicore.setup.

For multicore.totalCoreCount, integer telling the number of cores actually present on this compute node. If multicore.setup has not yet been called, it does so and requests all cores available.

For multicore.samplePairs, a list of vectors (each of length 2), suitable for a call to multicore.lapply for a function expecting a vector of length 2 as its argument.

For multicore.tapply and multicore.lapply, the same type result as their primitive functions, after being gathered from the separate cores.

Note

All multicore functions turn off prescheduling ( mc.preschedule=FALSE), because we assume the processing time of each piece is highly variable.

All multicore functions turn off recursion ( mc.allow.recursive=FALSE), because we assume all available cores will be used by the parent call.

Examples

1
multicore.samplePairs( list( c("Tom", "Dick", "Harry"), c("Jack","Jill")), symmetric.pairs=TRUE)

robertdouglasmorrison/DuffyTools documentation built on Dec. 14, 2018, 3:05 p.m.