-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
exatn::getService failure #7
Comments
I observed a failure in TAProlParserTester. It was missing exatn::initialize(). Can you post the other errors you saw, ctest --output-on-failure |
Test project /home/dima/src/exatn/build
3/5 Test #3: TAProLInterpreterTester ..........***Exception: SegFault 0.10 sec
4/5 Test #4: DirectedBoostGraphTester ......... Passed 0.00 sec 40% tests passed, 3 tests failed out of 5 Total Test time (real) = 0.32 sec The following tests FAILED: |
Oh cool, these are easy to fix. You just need to update the failing testers main() functions to first run exatn::initialize(). |
I actually did that in NumericsTester but it still fails for some reason ... |
Oh, you meant I should put exatn::initialize() into main() instead of test itself? |
Well either would do if there is only one TEST(). Did you run make install? |
NumericsTester has two tests and I put exatn::initialize() and exatn::finalize() in the second one since it was failing. So, I guess I should just move this to main() instead. Will try. |
Do you think getService not being able to find registered exatn::runtime services was because of this as well? |
yes, if you don't call initialize() then the ServiceRegistry is not instantiated and initialized. ServiceRegistry::initialize() searches the ~/.exatn/plugins directory for shared libraries, loads them, and calls *Activator::start() on each one. Without doing this, there are no services available to get. |
Nope, it does not help either, same thing: |
Also note that it only complains about exatn runtime services: EagerGraphExecutor and TalshNodeExecutor. |
This is interesting. I was able to reproduce this. It is happening because TensorRuntime::TensorRuntime(..) constructor is getting reference to the executor services before the exatn::initialize() call is finished. So exatn::initalize() gets called, which loads the bundles, which loads the MPIRPCActivator.start(), which constructs MPIServer, which calls DriverServer super constructor, which instantiates a TAProlInterpreter, which creates the NumServer, which creates the TensorRuntime, which calls getService()... all before initialize() finishes. Phew.... Simple fix is to move the Taprol parser construction from DriverServer constructor initializer list, to the MPIServer.start() method. |
Signed-off-by: Alex McCaskey <mccaskeyaj@ornl.gov>
Branch devel. After gluing together exatn::numerics and exatn::runtime it looks like CPP microservices exatn::getService does not work (it does not discover tensor runtime services). Three test fail with the same error.
The text was updated successfully, but these errors were encountered: