Dear community
I apologize for the long e-mail, but my questions need some introduction.
For my bachelor's thesis I worked on a distributed graph visualization tool that uses the Fruchterman-Reingold’s force-based graph layouting algorithm (FR) implemented in Regent. I am currently evaluating whether to continue the implementation in Regent.
Our solution is split into a Regent backend that iteratively calculates the graph layout (calculates new node positions) and a separate rendering frontend that communicates with the backend using sockets.
We needed a multi-threaded backend: we needed at least one thread for network communication in combination with Regent tasks that do the graph layouting calculations.
Our solution is that we create a new thread in Effil that communicates with Regent using Effil channels. In the newly started Effil thread, we created socket communication with the frontend using lzmq sockets. Then we call regentlib.start.
_listen = effil.thread(listen)()
regentlib.start(main)
The problem with this implementation is that in order to communicate between Regent and Effil, we have to pass a Lua table to the Effil channel (user data is not allowed). Therefore, we dynamically allocate a C array in Terra and copy the Regent regions within the task into that array. Then, in the Terra function, we copy the C array into a Effil table and place the Effil table into a channel. This solution requires creating many copies of the same data and is therefore a performance problem.
So the question is how to efficiently share Regent data (the graph’s nodes and edges stored in Regent regions) to code outside of Regent tasks, e.g.:
How to stream intermediate results from Regent tasks via network sockets to external network processes ?
How to receive input data from external processes via network sockets into continuously running Regent tasks ?
Also, our question is how to implement interactive applications in Regent. Or is Regent only aimed for “batch processing” of large datasets in HPC environments?
Thank you for any help,
Marek
--
You received this message because you are subscribed to the Google Groups "Legion Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to legionusers...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/legionusers/30c24ce4-bf6f-410b-ba47-09e005ab2ce2n%40googlegroups.com.