.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "MCE 3pm" .TH MCE 3pm "2014-10-24" "perl v5.20.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" MCE \- Many\-core Engine for Perl. Provides parallel processing capabilities. .SH "VERSION" .IX Header "VERSION" This document describes \s-1MCE\s0 version 1.517 .SH "DESCRIPTION" .IX Header "DESCRIPTION" Many-core Engine (\s-1MCE\s0) for Perl helps enable a new level of performance by maximizing all available cores. \s-1MCE\s0 spawns a pool of workers and therefore does not fork a new process per each element of data. Instead, \s-1MCE\s0 follows a bank queuing model. Imagine the line being the data and bank-tellers the parallel workers. \s-1MCE\s0 enhances that model by adding the ability to chunk the next n elements from the input stream to the next available worker. .PP Chunking and input data are optional in \s-1MCE.\s0 One may use \s-1MCE\s0 to run many workers in parallel without specifying input data. .SH "CORE MODULES" .IX Header "CORE MODULES" Three modules make up the core engine for \s-1MCE.\s0 .IP "MCE::Core" 3 .IX Item "MCE::Core" Provides the core \s-1API\s0 for Many-core Engine. .IP "MCE::Signal" 3 .IX Item "MCE::Signal" Temporary directory creation/cleanup & signal handling. .IP "MCE::Util" 3 .IX Item "MCE::Util" Public and private utility functions. .SH "MCE ADDONS" .IX Header "MCE ADDONS" Currently, there are 2 addon modules. .IP "MCE::Queue" 3 .IX Item "MCE::Queue" Provides a hybrid queuing implementation for \s-1MCE\s0 supporting normal queues and priority queues from a single module. MCE::Queue exchanges data via the core engine to enable queueing to work for both children (spawned from fork) and threads. .IP "MCE::Subs" 3 .IX Item "MCE::Subs" Exports functions mapped directly to \s-1MCE\s0's methods, e.g. mce_wid. The module allows 3 options; :manager, :worker, :getter. .SH "MCE MODELS" .IX Header "MCE MODELS" \&\s-1MCE 1.5\s0 includes 6 models. They configure the \s-1MCE\s0 instance and tune chunk_size and max_workers for you. Spawning and shutdown is also automatic. In essence, the models take Many-core Engine to a new level for ease of use. .IP "MCE::Loop" 3 .IX Item "MCE::Loop" Provides a parallel loop utilizing \s-1MCE\s0 for building creative loops. .IP "MCE::Flow" 3 .IX Item "MCE::Flow" A parallel flow model for building creative applications. This makes use of user_tasks in \s-1MCE.\s0 The author has full control when utilizing this model. MCE::Flow is similar to MCE::Loop, but allows for multiple code blocks to run simultaneously with a slight change to syntax. .IP "MCE::Grep" 3 .IX Item "MCE::Grep" Provides a parallel grep implementation similar to the native grep function. .IP "MCE::Map" 3 .IX Item "MCE::Map" Provides a parallel map model similar to the native map function. .IP "MCE::Step" 3 .IX Item "MCE::Step" Provides a parallel step implementation utilizing MCE::Queue between user tasks. MCE::Step is a spin off from MCE::Flow with a touch of MCE::Stream. This model, introduced in 1.506, allows one to pass data from one sub-task into the next transparently. .IP "MCE::Stream" 3 .IX Item "MCE::Stream" Provides an efficient parallel implementation for chaining multiple maps and greps together through user_tasks and MCE::Queue. Like with MCE::Flow, MCE::Stream can run multiple code blocks simultaneously with a slight change to syntax from MCE::Map and MCE::Grep. .SH "EXAMPLES" .IX Header "EXAMPLES" A placeholder for the examples included with the distribution. .IP "MCE::Examples" 3 .IX Item "MCE::Examples" Describes various demonstations for \s-1MCE\s0 including a Monte Carlo simulation. .SH "REQUIREMENTS" .IX Header "REQUIREMENTS" Perl 5.8.0 or later. PDL::IO::Storable is required in scripts running \s-1PDL\s0 and using \s-1MCE\s0 for parallelization. .SH "SOURCE" .IX Header "SOURCE" The source is hosted at .SH "AUTHOR" .IX Header "AUTHOR" Mario E. Roy, .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" Copyright (C) 2012\-2014 by Mario E. Roy .PP This program is free software; you can redistribute it and/or modify it under the terms of either: the \s-1GNU\s0 General Public License as published by the Free Software Foundation; or the Artistic License. .PP See for more information.