You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@uima.apache.org by Mario Gazzo <ma...@gmail.com> on 2015/04/13 13:44:39 UTC

UIMA CPE appears not to utilise more than a single thread

It appears that I can only utilise a single CAS processor even if I specify many more. I am not sure what I am doing wrong but I think I must be missing something important in my configuration.

We only need multithreading and not the distributed features of UIMA CPE or similar. I copied and modified the UIMA FIT CpePipeline and CpeBuilder to do this and I only altered thread counts and error handling since I want the CAS just to be dropped on exceptions. I have verified that the accurate number of CAS processors are created using the debugger and I can in JConsole see that an equivalent amount of active threads are created but only one thread seems to be fed from my simple custom collection reader, which in the simple test setup only reads input entries from a file. I can see this because I log the thread id inside the AEs, which is always the same. I have also verified that the CAS pool size equals the number of processors + 2.

Is there some additional collection reader configuration required to feed all the other CAS processors?






Re: UIMA CPE appears not to utilise more than a single thread

Posted by Mario Gazzo <ma...@gmail.com>.
Yep, that was it :)

Still struggling with getting the overview of all these details and it can feel kinda uphill at times so I really appreciate the quick response from the community. Thanks a lot.

Cheers
Mario

> On 14 Apr 2015, at 15:58 , Richard Eckart de Castilho <re...@apache.org> wrote:
> 
> Hi,
> 
> you have to inherit from the uimaFIT version of JCasAnnotator_ImplBase, not from the UIMA core version. Please make sure that your import is:
> 
> import org.apache.uima.fit.component.JCasAnnotator_ImplBase
> 
> Cf. http://uima.apache.org/d/uimafit-2.1.0/api/org/apache/uima/fit/component/JCasAnnotator_ImplBase.html
> 
> Cheers,
> 
> -- Richard
> 
> On 14.04.2015, at 13:53, Mario Gazzo <ma...@gmail.com> wrote:
> 
>> Thanks guys.
>> 
>> Both suggestions gav me some key points to work with in order to solve the problem. It turned out that the analysis engines in question oddly inherited from JCasConsumer_ImplBase and not JCasAnnotator_ImplBase. Couldn’t see the forrest for the trees :)
>> 
>> Anyway, this suddenly caused a new problem to appear. Parameters set in the analysis engine descriptions generated by UIMA FIT no longer gets loaded and injected. Switching back to JCasConsumer_ImplBase gets them injected again but then its single-threaded. Are there any additional annotations (descriptors) or some other configuration parameters I need to set?
> 


Re: UIMA CPE appears not to utilise more than a single thread

Posted by Richard Eckart de Castilho <re...@apache.org>.
Hi,

you have to inherit from the uimaFIT version of JCasAnnotator_ImplBase, not from the UIMA core version. Please make sure that your import is:

import org.apache.uima.fit.component.JCasAnnotator_ImplBase

Cf. http://uima.apache.org/d/uimafit-2.1.0/api/org/apache/uima/fit/component/JCasAnnotator_ImplBase.html

Cheers,

-- Richard

On 14.04.2015, at 13:53, Mario Gazzo <ma...@gmail.com> wrote:

> Thanks guys.
> 
> Both suggestions gav me some key points to work with in order to solve the problem. It turned out that the analysis engines in question oddly inherited from JCasConsumer_ImplBase and not JCasAnnotator_ImplBase. Couldn’t see the forrest for the trees :)
> 
> Anyway, this suddenly caused a new problem to appear. Parameters set in the analysis engine descriptions generated by UIMA FIT no longer gets loaded and injected. Switching back to JCasConsumer_ImplBase gets them injected again but then its single-threaded. Are there any additional annotations (descriptors) or some other configuration parameters I need to set?


Re: UIMA CPE appears not to utilise more than a single thread

Posted by Mario Gazzo <ma...@gmail.com>.
Thanks guys.

Both suggestions gav me some key points to work with in order to solve the problem. It turned out that the analysis engines in question oddly inherited from JCasConsumer_ImplBase and not JCasAnnotator_ImplBase. Couldn’t see the forrest for the trees :)

Anyway, this suddenly caused a new problem to appear. Parameters set in the analysis engine descriptions generated by UIMA FIT no longer gets loaded and injected. Switching back to JCasConsumer_ImplBase gets them injected again but then its single-threaded. Are there any additional annotations (descriptors) or some other configuration parameters I need to set?


> On 13 Apr 2015, at 18:19 , Jaroslaw Cwiklik <ui...@gmail.com> wrote:
> 
> Not sure if this is the cause but check if your AE descriptor has this
> <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
> 
> Jerry
> 
> On Mon, Apr 13, 2015 at 12:07 PM, Eddie Epstein <ea...@gmail.com> wrote:
> 
>> The CPE runs pipeline threads in parallel, not necessarily CAS processors.
>> In a CPE descriptor, generally all non-CasConsumer components make up the
>> pipeline.
>> 
>> Change the following line to indicate how many pipeline threads to run, and
>> make sure the casPoolSize is number of threads +2.
>> 
>> <casProcessors casPoolSize="2" processingUnitThreadCount="1">
>> 
>> Eddie
>> 
>> On Mon, Apr 13, 2015 at 7:44 AM, Mario Gazzo <ma...@gmail.com>
>> wrote:
>> 
>>> It appears that I can only utilise a single CAS processor even if I
>>> specify many more. I am not sure what I am doing wrong but I think I must
>>> be missing something important in my configuration.
>>> 
>>> We only need multithreading and not the distributed features of UIMA CPE
>>> or similar. I copied and modified the UIMA FIT CpePipeline and CpeBuilder
>>> to do this and I only altered thread counts and error handling since I
>> want
>>> the CAS just to be dropped on exceptions. I have verified that the
>> accurate
>>> number of CAS processors are created using the debugger and I can in
>>> JConsole see that an equivalent amount of active threads are created but
>>> only one thread seems to be fed from my simple custom collection reader,
>>> which in the simple test setup only reads input entries from a file. I
>> can
>>> see this because I log the thread id inside the AEs, which is always the
>>> same. I have also verified that the CAS pool size equals the number of
>>> processors + 2.
>>> 
>>> Is there some additional collection reader configuration required to feed
>>> all the other CAS processors?
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>> 


Re: UIMA CPE appears not to utilise more than a single thread

Posted by Jaroslaw Cwiklik <ui...@gmail.com>.
Not sure if this is the cause but check if your AE descriptor has this
<multipleDeploymentAllowed>true</multipleDeploymentAllowed>

Jerry

On Mon, Apr 13, 2015 at 12:07 PM, Eddie Epstein <ea...@gmail.com> wrote:

> The CPE runs pipeline threads in parallel, not necessarily CAS processors.
> In a CPE descriptor, generally all non-CasConsumer components make up the
> pipeline.
>
> Change the following line to indicate how many pipeline threads to run, and
> make sure the casPoolSize is number of threads +2.
>
> <casProcessors casPoolSize="2" processingUnitThreadCount="1">
>
> Eddie
>
> On Mon, Apr 13, 2015 at 7:44 AM, Mario Gazzo <ma...@gmail.com>
> wrote:
>
> > It appears that I can only utilise a single CAS processor even if I
> > specify many more. I am not sure what I am doing wrong but I think I must
> > be missing something important in my configuration.
> >
> > We only need multithreading and not the distributed features of UIMA CPE
> > or similar. I copied and modified the UIMA FIT CpePipeline and CpeBuilder
> > to do this and I only altered thread counts and error handling since I
> want
> > the CAS just to be dropped on exceptions. I have verified that the
> accurate
> > number of CAS processors are created using the debugger and I can in
> > JConsole see that an equivalent amount of active threads are created but
> > only one thread seems to be fed from my simple custom collection reader,
> > which in the simple test setup only reads input entries from a file. I
> can
> > see this because I log the thread id inside the AEs, which is always the
> > same. I have also verified that the CAS pool size equals the number of
> > processors + 2.
> >
> > Is there some additional collection reader configuration required to feed
> > all the other CAS processors?
> >
> >
> >
> >
> >
> >
>

Re: UIMA CPE appears not to utilise more than a single thread

Posted by Eddie Epstein <ea...@gmail.com>.
The CPE runs pipeline threads in parallel, not necessarily CAS processors.
In a CPE descriptor, generally all non-CasConsumer components make up the
pipeline.

Change the following line to indicate how many pipeline threads to run, and
make sure the casPoolSize is number of threads +2.

<casProcessors casPoolSize="2" processingUnitThreadCount="1">

Eddie

On Mon, Apr 13, 2015 at 7:44 AM, Mario Gazzo <ma...@gmail.com> wrote:

> It appears that I can only utilise a single CAS processor even if I
> specify many more. I am not sure what I am doing wrong but I think I must
> be missing something important in my configuration.
>
> We only need multithreading and not the distributed features of UIMA CPE
> or similar. I copied and modified the UIMA FIT CpePipeline and CpeBuilder
> to do this and I only altered thread counts and error handling since I want
> the CAS just to be dropped on exceptions. I have verified that the accurate
> number of CAS processors are created using the debugger and I can in
> JConsole see that an equivalent amount of active threads are created but
> only one thread seems to be fed from my simple custom collection reader,
> which in the simple test setup only reads input entries from a file. I can
> see this because I log the thread id inside the AEs, which is always the
> same. I have also verified that the CAS pool size equals the number of
> processors + 2.
>
> Is there some additional collection reader configuration required to feed
> all the other CAS processors?
>
>
>
>
>
>