Hi Matthias,
Thank you for the detailed information. I was able to reproduce the behavior.
Before today, I've never seen such long FindRoute execution times. After investigation, I believe that I know why we're experiencing this issue with the Pickering LXI devices and why I have not experienced a similar issue with NI devices.
Using NI Spy, I was able to monitor the number of CanConnect calls that the Pickering IVI specific driver was executing. You can do this too. NI Spy is installed with the IVI Compliance Package:
Start >> All Programs >> National Instruments >> NI Spy, or
"C:\Program Files\National Instruments\NI Spy\NI Spy.exe"
When monitoring with NI Spy, a FindRoute from A1 to B1 required 27 seconds to execute. There were over 500,000 IVI specific driver calls, and the majority of them were CanConnect.
Curious if a similar setup using NI hardware would require the same amount of time to execute the FindRoute, I created an 8x200 matrix (with SPST isolation) utilizing 4 NI PXI-2569 SPST switch modules (each configured as a 100-SPST) and 4 NI PXI-2532 matrices (each configured as a 1-wire 4x128 matrix), as shown below.
The A1 to B1 route only required 385 ms and less than 3000 IVI specific driver calls (with only 200 or so CanConnect calls)!
So, what was the difference? -> The number of possible interconnections per module.
The number of channels on one Pickering switch module (comprised of 6 Sub Units, 3 75x4 Matrix units and 3 units with 75 SPST relays) far exceeds the number of channels on any one NI switch module. When there is no direct route from A1 to B1, FindRoute uses hardwire information and CanConnect to attempt channel-to-channel connections within each switch module until an optimal route path is determined.
With the NI configuration, FindRoute was able to quickly propagate through each of the possible connections within each NI switch module until it determined an optimal route from A1 to B1.
FindRoute was not able to do the same with the Pickering switch module; optimized to perform on one module at a time, and not on Sub Units, FindRoute must check for possible connections throughout the entire Pickering module.
For comparison, refer to the NI configuration above. When finding a route path from A1 to B1, FindRoute notes the hardwire and begins searching for a path on the PXI-2569 switch module. CanConnect is called to attempt ch0->com0 and the call returns that this path can be made. The ensuing hardwire now allows FindRoute to search for a path on the second PXI-2569 switch module. Once again, CanConnect is called to attempt a ch0->com0 connection. The result is Path Available, and the B1 destination is reached. Other paths are then attempted, but this initial path is quickly determined optimal.
When finding a route path from A1 to B1 on the Pickering module, FindRoute attempts to directly connect A1 to B1 (since both connections are now on the "same" switch module). CanConnect returns Path Unsupported, so FindRoute notes the hardwire and begins searching for a path. The key difference here is that it must now search for a path between the current channel and every other point in the entire module, even in different Sub Units. This is the reason for the 500,000+ CanConnect calls.
Is there a way to decrease the time for route finding?
1. Instead of A1 to B1, Search for B1 to A1
As FindRoute determines the optimal path from a Startpoint to an Endpoint, and the configuration above is not the same from left-to-right, as it is from right-to-left, you can attempt reordering the FindRoute inputs. This may not always help you, as in the end the duration of FindRoute depends on the number of possible route paths between the two channels.
2. Matrix Reduction
Matrices increase the number of possible route paths because of column-to-column and row-to-row possibilities. If you can eliminate a matrix in the configuration, then you can speed the execution of FindRoute. In this particular configuration, is it possible to expand the matrix from top-to-bottom instead of from left-to-right? In other words, create a 4x300 matrix instead of an 8x150? I know you stated that the example configuration was part of a larger one. If possible, then I believe this would eliminate a number of possible route paths, and all connections would be column-to-column.
3. Reserved for Routing Reduction
Reserved for Routing paths create route possibilities. Eliminate Reserved for Routing paths to speed the execution of FindRoute.
4. Modular Architecture
FindRoute is optimized for routing across multiple switch modules. Use a modular architecture instead of a multiple-bank or Sub-Unit solution for a faster FindRoute execution time.
Let me know if you have questions or comments!
Chad Erickson
Switch Product Support Engineer
NI - USA
Message Edited by Chad PSE on 11-19-2009 09:36 PM