LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

multicore queueing problems

Hello,

 

    I've been trying to take a program which had been optimized for dual core and making it better suited for quad core use. The original program had been spread algorithm execution over two different while loops, pipelining data between the two while loops by using queues. I've tried to do something similar between 4 loops, however only the processes in the original two loops are working, and the other two loops seem to not be getting data passed to them from the queues. From what I can tell, the enqueue element passing data from the second to third loop is working, however the dequeue element is not; when I stop the program, I receive an error 1 from he dequeue element. I've attached the llb this message.

 

Thanks,

 

     Grant

0 Kudos
Message 1 of 3
(2,447 Views)

You have tunnels carrying boolean data from the second loop to the third loop, and from the third loop to the fourth loop.  This prevents the third loop from running until the second loop exits.  You can't use wires to link stop buttons that way.  A simple solution would be to destroy all of the queues when the top loop exits, and then let the resulting error stop the remaining loops.

 

By the way, is this actually any faster than using a single while loop and shift registers to accomplish the pipelining?

0 Kudos
Message 2 of 3
(2,439 Views)

Thanks for the response. I got rid of the boolean stop links, so the loops started running. Its running all four loops now and passing all the data, though it seems to be wrong, probably something with passing it through so may queues.

 

Well i got this dual core optimized program from someone else and I figured that using a bunch of while loops would be the best way to do it. I'll try doing the single loop with shift registers.

 

-Grant

0 Kudos
Message 3 of 3
(2,426 Views)