-
Notifications
You must be signed in to change notification settings - Fork 18
Open
2 / 72 of 7 issues completedLabels
enhancementNew feature or requestNew feature or request
Description
-
- [Fixed] It can be super slow to convert graph to gedlib c++ type by string (what is currently used). Especially if it is a float (e.g., 1.456496488 becomes "1.456496488").
-
- In the newly added attribute version in GEDLIB, Eigen C++ library is used to represent the arrays and operate them. Currently, gedlibpy converts Python list or np array first to a c++ std vector of doubles, Then it is converted to Eigen Vector. However, it seems that it's possible to convert np arrays directly to Eigen vector using Cython, They may even share the same memory without copying anything. There are also some Python API for Eigen library, so it's also possible to use this in Python directly.
-
- [Fixed] In GEDModel, We are still trying to construct a C++ Ged env inside the pair wise computation. Which can be super slow, especially you have to create two c++ graphs every time. So this should be done at the very beginning and once for all. And it's better to profile the difference.
- For memory efficiency issues, check points 4 and 5 for refactorization.
-
- Similarly, do the parallelization, either with the Python one or the ones inside the GEDLIB c++ lib. Suffering of the nodes can be done similarly.
-
- It is also possible to write a Python API for the GEDLIB c++ graph. In this case, we can load directly the graphs into this object instead of creating a networkx graph and then convert them. An important thing to consider is that the API should be compatible with the networkx ones since many of my libraries are using the current ones.
-
- Beside use c++ graph directly, labels can be done so as well. Now all the labels are copied, e.g., from dict to std::map, but it is possible to share the memory without copying at all. Let's say we have a dict from string to np.array(float), now we convert it to std::vector by copying element by element. Moreover, std::vector does not support direct conversion without copying.
-
- GEDLIBPY .pyx and binding's c++ can be further optimized: put out common tools, create separate .so for each part, create a .so for gedlib itself.
Sub-issues
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request