# Errors when using ParallelTable inside a package

I'm developing a package that contains a function that requires evaluation of an expensive Table, so I use ParallelTable instead. It works correctly, but always gives an error message, repeatedly, for each kernel, like this:

Table::iterb: Iterator {mypackagePrivatem,1,mypackagePrivatensrc$663} does not have appropriate bounds How can I avoid this error? Do I need to distribute variables explicitly? - ## 1 Answer The iterator variable in the package lives in the context that your package sets (in this case, mypackagePrivate), but the call to ParallelTable from inside your package does not distribute the definitions in your package, because the parallel functions only distribute contexts that are listed in $DistributedContexts. This is by default set to \$Context, which will most probably be Global if you're running the package in a notebook. So the definitions in your package are unknown to the worker kernels, which is the cause of the error.

Instead, change the function call to

ParallelTable[..., {m, nsrc}, DistributedContexts -> {"mypackagePrivate"}]


Distribute contexts that other symbols might depend on (you don't need to distribute System and the current context).

-
Thanks... I'm new to writing Packages and this is a great help! – Tom Dickens Aug 21 '13 at 11:18
This really works! Tks. +1 – Murta Aug 13 '15 at 14:55