├── .gitignore
├── .gitmodules
├── CMakeLists.txt
├── LICENSE
├── README.md
├── build.sh
├── cmake
├── euler_core.cmake
├── googletest.cmake
├── grpc.cmake
├── jemalloc.cmake
├── linenoise.cmake
├── utils.cmake
└── zookeeper.cmake
├── doc
├── GQL-1.png
├── GQL-2.png
├── GQL-3.png
├── GQL-4.png
├── GQL-5.png
├── data-prepare-1.png
├── data-prepare-2.jpeg
├── message-algo-1.svg
├── message-algo-2.svg
├── message-algo-3.svg
├── messagepassing-1.png
├── messagepassing-2.png
├── overview-1.png
└── overview-2.png
├── euler
├── CMakeLists.txt
├── __init__.py
├── client
│ ├── CMakeLists.txt
│ ├── client_manager.cc
│ ├── client_manager.h
│ ├── completion_queue_pool.h
│ ├── end2end_gp_test.cc
│ ├── end2end_local_test.cc
│ ├── end2end_test.cc
│ ├── graph.h
│ ├── graph_config.cc
│ ├── graph_config.h
│ ├── grpc_channel.cc
│ ├── grpc_channel.h
│ ├── grpc_channel_test.cc
│ ├── grpc_manager.cc
│ ├── grpc_manager.h
│ ├── impl_register.h
│ ├── query.cc
│ ├── query.h
│ ├── query_proxy.cc
│ ├── query_proxy.h
│ ├── rpc_client.cc
│ ├── rpc_client.h
│ ├── rpc_client_end2end_test.cc
│ ├── rpc_client_test.cc
│ ├── rpc_manager.cc
│ ├── rpc_manager.h
│ ├── rpc_manager_test.cc
│ └── testing
│ │ ├── CMakeLists.txt
│ │ ├── echo.h
│ │ ├── echo.proto
│ │ ├── mock_rpc_manager.cc
│ │ ├── mock_rpc_manager.h
│ │ └── simple_server_monitor.h
├── common
│ ├── CMakeLists.txt
│ ├── alias_method.cc
│ ├── alias_method.h
│ ├── bytes_compute.h
│ ├── bytes_io.cc
│ ├── bytes_io.h
│ ├── bytes_io_test.cc
│ ├── compact_weighted_collection.h
│ ├── compact_weighted_collection_test.cc
│ ├── data_types.cc
│ ├── data_types.h
│ ├── data_types_test.cc
│ ├── env.cc
│ ├── env.h
│ ├── env_posix.cc
│ ├── env_test.cc
│ ├── error_code.h
│ ├── fast_weighted_collection.h
│ ├── fast_weighted_collection_test.cc
│ ├── file_io.cc
│ ├── file_io.h
│ ├── hash.cc
│ ├── hash.h
│ ├── hdfs_file_io.cc
│ ├── hdfs_file_io_test.cc
│ ├── local_file_io.cc
│ ├── local_file_io_test.cc
│ ├── logging.cc
│ ├── logging.h
│ ├── macros.h
│ ├── mutex.h
│ ├── net_util.cc
│ ├── net_util.h
│ ├── random.cc
│ ├── random.h
│ ├── refcount.h
│ ├── server_meta.proto
│ ├── server_monitor.cc
│ ├── server_monitor.h
│ ├── server_register.h
│ ├── signal.h
│ ├── singleton.h
│ ├── slice.cc
│ ├── slice.h
│ ├── status.cc
│ ├── status.h
│ ├── str_util.cc
│ ├── str_util.h
│ ├── str_util_test.cc
│ ├── time_utils.h
│ ├── timmer.cc
│ ├── timmer.h
│ ├── weighted_collection.h
│ ├── zk_server_monitor.cc
│ ├── zk_server_monitor.h
│ ├── zk_server_register.cc
│ ├── zk_server_register.h
│ └── zk_util_cache.h
├── core
│ ├── CMakeLists.txt
│ ├── api
│ │ ├── CMakeLists.txt
│ │ ├── api.cc
│ │ └── api.h
│ ├── dag
│ │ ├── CMakeLists.txt
│ │ ├── dag.cc
│ │ ├── dag.h
│ │ ├── dag_test.cc
│ │ ├── edge.h
│ │ ├── node.cc
│ │ └── node.h
│ ├── dag_def
│ │ ├── CMakeLists.txt
│ │ ├── dag_def.cc
│ │ ├── dag_def.h
│ │ ├── dag_def_test.cc
│ │ ├── dag_node_def.cc
│ │ ├── dag_node_def.h
│ │ ├── sub_graph_iso.cc
│ │ └── sub_graph_iso.h
│ ├── framework
│ │ ├── CMakeLists.txt
│ │ ├── allocator.cc
│ │ ├── allocator.h
│ │ ├── attr_value.h
│ │ ├── dag.proto
│ │ ├── dag_node.proto
│ │ ├── executor.cc
│ │ ├── executor.h
│ │ ├── executor_test.cc
│ │ ├── op_kernel.cc
│ │ ├── op_kernel.h
│ │ ├── tensor.cc
│ │ ├── tensor.h
│ │ ├── tensor.proto
│ │ ├── tensor_shape.h
│ │ ├── tensor_shape.proto
│ │ ├── tensor_shape_test.cc
│ │ ├── tensor_test.cc
│ │ ├── tensor_util.cc
│ │ ├── tensor_util.h
│ │ ├── tensor_util_test.cc
│ │ ├── thread_pool.h
│ │ ├── types.h
│ │ ├── types.proto
│ │ ├── udf.cc
│ │ └── udf.h
│ ├── graph
│ │ ├── CMakeLists.txt
│ │ ├── edge.cc
│ │ ├── edge.h
│ │ ├── edge_test.cc
│ │ ├── graph.cc
│ │ ├── graph.h
│ │ ├── graph_builder.cc
│ │ ├── graph_builder.h
│ │ ├── graph_meta.cc
│ │ ├── graph_meta.h
│ │ ├── graph_test.cc
│ │ ├── local_graph_test.cc
│ │ ├── node.cc
│ │ ├── node.h
│ │ └── node_test.cc
│ ├── index
│ │ ├── CMakeLists.txt
│ │ ├── common_index_result.cc
│ │ ├── common_index_result.h
│ │ ├── common_index_result_test.cc
│ │ ├── hash_index_result.h
│ │ ├── hash_index_result_test.cc
│ │ ├── hash_range_sample_index.h
│ │ ├── hash_range_sample_index_test.cc
│ │ ├── hash_sample_index.h
│ │ ├── hash_sample_index_test.cc
│ │ ├── index_manager.cc
│ │ ├── index_manager.h
│ │ ├── index_manager_test.cc
│ │ ├── index_meta.cc
│ │ ├── index_meta.h
│ │ ├── index_meta_test.cc
│ │ ├── index_result.h
│ │ ├── index_types.h
│ │ ├── index_util.h
│ │ ├── range_index_result.h
│ │ ├── range_index_result_test.cc
│ │ ├── range_sample_index.h
│ │ ├── range_sample_index_test.cc
│ │ └── sample_index.h
│ └── kernels
│ │ ├── CMakeLists.txt
│ │ ├── append_merge_op.cc
│ │ ├── append_merge_op_test.cc
│ │ ├── as_op.cc
│ │ ├── broad_cast_split_op.cc
│ │ ├── common.cc
│ │ ├── common.h
│ │ ├── data_gather_op.cc
│ │ ├── data_merge_op.cc
│ │ ├── data_merge_op_test.cc
│ │ ├── data_row_append_merge_op.cc
│ │ ├── gather_result_op.cc
│ │ ├── get_adj_op.cc
│ │ ├── get_edge_op.cc
│ │ ├── get_edge_sum_weight_op.cc
│ │ ├── get_feature_op.cc
│ │ ├── get_graph_by_label_op.cc
│ │ ├── get_nb_filter_op.cc
│ │ ├── get_nb_filter_op_test.cc
│ │ ├── get_neighbor_edge_op.cc
│ │ ├── get_neighbor_op.cc
│ │ ├── get_node_op.cc
│ │ ├── get_node_type_op.cc
│ │ ├── gp_unique_merge_op.cc
│ │ ├── gp_unique_merge_op_test.cc
│ │ ├── id_split_op.cc
│ │ ├── id_unique_op.cc
│ │ ├── idx_gather_op.cc
│ │ ├── idx_merge_op.cc
│ │ ├── idx_merge_op_test.cc
│ │ ├── idx_row_append_merge_op.cc
│ │ ├── layerwise_op_test.cc
│ │ ├── local_sample_layer_op.cc
│ │ ├── max_udf.cc
│ │ ├── mean_udf.cc
│ │ ├── min_udf.cc
│ │ ├── multi_type_data_merge_op.cc
│ │ ├── multi_type_idx_merge_op.cc
│ │ ├── multi_type_merge_op_test.cc
│ │ ├── ops_test.cc
│ │ ├── post_process_op.cc
│ │ ├── post_process_op_test.cc
│ │ ├── regular_data_merge_op.cc
│ │ ├── regular_data_merge_op_test.cc
│ │ ├── remote_op.cc
│ │ ├── remote_op_test.cc
│ │ ├── reshape_op.cc
│ │ ├── sample_edge_op.cc
│ │ ├── sample_edge_split_op.cc
│ │ ├── sample_graph_label_op.cc
│ │ ├── sample_layer_op.cc
│ │ ├── sample_n_with_types_op.cc
│ │ ├── sample_n_with_types_split_op.cc
│ │ ├── sample_neighbor_op.cc
│ │ ├── sample_node_op.cc
│ │ ├── sample_node_split_op.cc
│ │ ├── sample_root_op.cc
│ │ ├── sparse_gen_adj_op.cc
│ │ ├── sparse_get_adj_op.cc
│ │ ├── udf_test.cc
│ │ └── unique_gather_test.cc
├── parser
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── attribute_calculator.cc
│ ├── attribute_calculator.h
│ ├── compiler.cc
│ ├── compiler.h
│ ├── compiler_test.cc
│ ├── gen_node_def_input_output.cc
│ ├── gen_node_def_input_output.h
│ ├── gremlin.l
│ ├── gremlin.y
│ ├── optimize_rule.h
│ ├── optimize_type.cc
│ ├── optimize_type.h
│ ├── optimizer.cc
│ ├── optimizer.h
│ ├── optimizer_test.cc
│ ├── translator.cc
│ ├── translator.h
│ ├── translator_test.cc
│ ├── tree.h
│ └── tree_test.cc
├── proto
│ ├── CMakeLists.txt
│ ├── service.proto
│ └── worker.proto
├── python
│ ├── __init__.py
│ ├── hash_test.py
│ └── start_service.py
├── service
│ ├── CMakeLists.txt
│ ├── async_service_interface.h
│ ├── grpc_call.h
│ ├── grpc_euler_service.cc
│ ├── grpc_euler_service.h
│ ├── grpc_server.cc
│ ├── grpc_server.h
│ ├── grpc_server_test.cc
│ ├── grpc_worker.cc
│ ├── grpc_worker.h
│ ├── grpc_worker_service.cc
│ ├── grpc_worker_service.h
│ ├── mock_api.cc
│ ├── python_api.cc
│ ├── server_interface.cc
│ ├── server_interface.h
│ └── worker.h
├── tools
│ ├── CMakeLists.txt
│ ├── __init__.py
│ ├── edge.py
│ ├── gen_graph_partition_test_data.sh
│ ├── gen_partitioned_data.sh
│ ├── generate_euler_data.py
│ ├── graph_meta.py
│ ├── json2meta.py
│ ├── json2partdat.py
│ ├── json2partindex.py
│ ├── node.py
│ ├── remote_console
│ │ ├── CMakeLists.txt
│ │ ├── remote_console.cc
│ │ └── remote_console.h
│ └── util.py
└── util
│ ├── CMakeLists.txt
│ └── python_api.cc
├── euler_estimator
├── README.md
├── __init__.py
└── python
│ ├── __init__.py
│ ├── base_estimator.py
│ ├── edge_estimator.py
│ ├── gae_estimator.py
│ ├── graph_estimator.py
│ ├── node_estimator.py
│ └── sample_estimator.py
├── examples
├── TransX
│ ├── README.md
│ ├── run_transD.py
│ ├── run_transE.py
│ ├── run_transH.py
│ ├── run_transR.py
│ ├── transD.py
│ ├── transE.py
│ ├── transH.py
│ ├── transR.py
│ └── transX.py
├── adaptivegcn
│ ├── README.md
│ ├── adaptivegcn.py
│ └── run_adaptivegcn.py
├── agnn
│ ├── README.md
│ ├── agnn.py
│ └── run_agnn.py
├── appnp
│ ├── README.md
│ ├── appnp.py
│ └── run_appnp.py
├── arma
│ ├── README.md
│ ├── arma.py
│ └── run_arma.py
├── deepwalk
│ ├── README.md
│ ├── deepwalk.py
│ └── run_deepwalk.py
├── dgi
│ ├── README.md
│ ├── dgi.py
│ └── run_dgi.py
├── distmult
│ ├── README.md
│ ├── distmult.py
│ └── run_distmult.py
├── dna
│ ├── README.md
│ ├── dna.py
│ └── run_dna.py
├── fastgcn
│ ├── README.md
│ ├── fastgcn.py
│ └── run_fastgcn.py
├── gae
│ ├── README.md
│ ├── gae.py
│ ├── run_gae.py
│ └── run_vgae.py
├── gat
│ ├── README.md
│ ├── gat.py
│ └── run_gat.py
├── gated_graph
│ ├── README.md
│ ├── gated_graph.py
│ └── run_gated_graph.py
├── gcn
│ ├── README.md
│ ├── gcn.py
│ └── run_gcn.py
├── geniepath
│ ├── README.md
│ ├── geniepath.py
│ └── run_geniepath.py
├── gin
│ ├── README.md
│ ├── gin.py
│ └── run_gin.py
├── graphgcn
│ ├── README.md
│ ├── graphgcn.py
│ └── run_graphgcn.py
├── graphsage
│ ├── README.md
│ ├── graphsage.py
│ └── run_graphsage.py
├── lgcn
│ ├── README.md
│ ├── lgcn.py
│ └── run_lgcn.py
├── line
│ ├── README.md
│ ├── line.py
│ └── run_line.py
├── rgcn
│ ├── README.md
│ ├── rgcn.py
│ └── run_rgcn.py
├── sample_solution
│ ├── readme.md
│ ├── sample.txt
│ └── sample_solution_model.py
├── set2set
│ ├── README.md
│ ├── run_set2set.py
│ └── set2set.py
├── sgcn
│ ├── README.md
│ ├── run_sgcn.py
│ └── sgcn.py
├── solution
│ ├── readme.md
│ ├── run_solution.py
│ └── solution_model.py
└── tagcn
│ ├── README.md
│ ├── run_tagcn.py
│ └── tagcn.py
├── knn
└── knn.py
├── requirements.txt
├── setup.cfg
├── tf_euler
├── CMakeLists.txt
├── __init__.py
├── kernels
│ ├── gather_op.cc
│ ├── gen_pair_op.cc
│ ├── get_binary_feature_op.cc
│ ├── get_dense_feature_op.cc
│ ├── get_edge_binary_feature_op.cc
│ ├── get_edge_dense_feature_op.cc
│ ├── get_edge_sparse_feature_op.cc
│ ├── get_full_neighbor_op.cc
│ ├── get_graph_by_label_op.cc
│ ├── get_node_type_op.cc
│ ├── get_sorted_full_neighbor_op.cc
│ ├── get_sparse_feature_op.cc
│ ├── get_top_k_neighbor_op.cc
│ ├── inflate_idx_op.cc
│ ├── random_walk_op.cc
│ ├── sample_edge_op.cc
│ ├── sample_fanout_op.cc
│ ├── sample_fanout_with_feature_op.cc
│ ├── sample_graph_label_op.cc
│ ├── sample_n_with_types_op.cc
│ ├── sample_neighbor_layerwise_with_adj_op.cc
│ ├── sample_neighbor_op.cc
│ ├── sample_node_op.cc
│ ├── scatter_op.cc
│ ├── sparse_gather_op.cc
│ └── sparse_get_adj_op.cc
├── ops
│ ├── euler_ops.cc
│ ├── feature_ops.cc
│ ├── mp_ops.cc
│ ├── neighbor_ops.cc
│ ├── sample_ops.cc
│ ├── type_ops.cc
│ ├── util_ops.cc
│ └── walk_ops.cc
├── python
│ ├── __init__.py
│ ├── contrib
│ │ ├── py_scatter.py
│ │ └── spmm.py
│ ├── convolution
│ │ ├── __init__.py
│ │ ├── agnn_conv.py
│ │ ├── appnp_conv.py
│ │ ├── arma_conv.py
│ │ ├── conv.py
│ │ ├── conv_test.py
│ │ ├── dna_conv.py
│ │ ├── gat_conv.py
│ │ ├── gated_graph_conv.py
│ │ ├── gcn_conv.py
│ │ ├── gin_conv.py
│ │ ├── graph_conv.py
│ │ ├── relation_conv.py
│ │ ├── sage_conv.py
│ │ ├── sgcn_conv.py
│ │ └── tag_conv.py
│ ├── dataflow
│ │ ├── __init__.py
│ │ ├── base_dataflow.py
│ │ ├── fast_dataflow.py
│ │ ├── gcn_dataflow.py
│ │ ├── layerwise_dataflow.py
│ │ ├── neighbor_dataflow.py
│ │ ├── relation_dataflow.py
│ │ ├── sage_dataflow.py
│ │ └── whole_dataflow.py
│ ├── dataset
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── base_dataset.py
│ │ ├── citeseer.py
│ │ ├── cora.py
│ │ ├── fb15k.py
│ │ ├── fb15k237.py
│ │ ├── gcn_utils.py
│ │ ├── ml_1m.py
│ │ ├── multigraph_util.py
│ │ ├── mutag.py
│ │ ├── ppi.py
│ │ ├── pubmed.py
│ │ ├── pubmed_utils.py
│ │ ├── reddit.py
│ │ ├── sage_util.py
│ │ ├── test_data.py
│ │ ├── utils.py
│ │ └── wn18.py
│ ├── euler_ops
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── base_test.py
│ │ ├── feature_ops.py
│ │ ├── feature_ops_test.py
│ │ ├── mp_ops.py
│ │ ├── mp_ops_test.py
│ │ ├── neighbor_ops.py
│ │ ├── neighbor_ops_test.py
│ │ ├── sample_ops.py
│ │ ├── sample_ops_test.py
│ │ ├── type_ops.py
│ │ ├── type_ops_test.py
│ │ ├── util_ops.py
│ │ ├── util_ops_test.py
│ │ ├── walk_ops.py
│ │ └── walk_ops_test.py
│ ├── graph_pool
│ │ ├── __init__.py
│ │ ├── attention_pool.py
│ │ ├── base_pool.py
│ │ └── set2set_pool.py
│ ├── mp_utils
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── base_gae.py
│ │ ├── base_gnn.py
│ │ ├── base_graph.py
│ │ ├── graph_gnn.py
│ │ ├── group_gnn.py
│ │ └── utils.py
│ ├── node_pool
│ │ └── __init__.py
│ ├── solution
│ │ ├── __init__.py
│ │ ├── base_sample.py
│ │ ├── base_supervise.py
│ │ ├── base_unsupervise.py
│ │ ├── logits.py
│ │ ├── losses.py
│ │ ├── samplers.py
│ │ └── utils.py
│ └── utils
│ │ ├── __init__.py
│ │ ├── aggregators.py
│ │ ├── embedding.py
│ │ ├── encoders.py
│ │ ├── flags.py
│ │ ├── hooks.py
│ │ ├── layers.py
│ │ ├── metrics.py
│ │ ├── optimizers.py
│ │ ├── sparse_aggregators.py
│ │ ├── to_dense_adj.py
│ │ ├── to_dense_adj_test.py
│ │ ├── to_dense_batch.py
│ │ └── to_dense_batch_test.py
├── scripts
│ ├── dist_tf_euler.sh
│ ├── run_ppi.sh
│ └── start_service.py
└── utils
│ ├── euler_query_proxy.h
│ ├── init_query_proxy.cc
│ └── sparse_tensor_builder.h
├── third_party
├── CMakeLists.txt
└── hdfs
│ └── hdfs.h
└── tools
├── .gitignore
├── CMakeLists.txt
├── pip
├── build_wheel.sh
└── setup.py
├── start_zk
├── zk_start.sh
├── zk_stop.sh
└── zoo.cfg
└── test_data
├── graph.json
└── meta
/.gitignore:
--------------------------------------------------------------------------------
1 | *~
2 | *.so
3 | *.pyc
4 | build/
5 | build-new/
6 | *.pyc
7 | target
8 | .idea
9 | *.iml
10 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "third_party/grpc"]
2 | path = third_party/grpc
3 | url = https://github.com/grpc/grpc
4 | ignore = dirty
5 | [submodule "third_party/googletest"]
6 | path = third_party/googletest
7 | url = https://github.com/google/googletest.git
8 | [submodule "third_party/zookeeper"]
9 | path = third_party/zookeeper
10 | url = https://github.com/apache/zookeeper
11 | ignore = dirty
12 |
--------------------------------------------------------------------------------
/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | export PYTHONPATH=`pwd`
4 |
5 | CMAKE_FLAGS="-DBUILD_TESTING=off"
6 |
7 | if [ "x$1" == "xtest" ] ; then
8 | CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_COVERAGE=ON"
9 | fi
10 |
11 | cd $(dirname ${BASH_SOURCE[0]})
12 |
13 | set -e
14 |
15 | # build zookeeper
16 | (cd third_party/zookeeper; ant compile_jute)
17 |
18 | rm -fr build && mkdir build
19 | (cd build && cmake ${CMAKE_FLAGS} .. && make -j32)
20 |
21 | rm -f tools/remote_console
22 | ln -s $(pwd)/build/euler/tools/remote_console/remote_console tools/
23 |
24 | python tools/pip/setup.py install
25 |
26 | if [ "x$1" == "xtest" ] ; then
27 | echo "Generating test data ----"
28 | python euler/tools/generate_euler_data.py tools/test_data/graph.json /tmp/euler 2 tools/test_data/meta
29 |
30 | cd build && make test
31 | fi
32 |
33 |
--------------------------------------------------------------------------------
/cmake/googletest.cmake:
--------------------------------------------------------------------------------
1 | set(GTEST_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest)
2 |
3 | add_subdirectory(${GTEST_ROOT_DIR} third_party/googletest)
4 |
5 | set(GTEST_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include"
6 | "${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googlemock/include")
7 |
--------------------------------------------------------------------------------
/cmake/grpc.cmake:
--------------------------------------------------------------------------------
1 | set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "disable benchmark testing" FORCE)
2 | set(GRPC_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/grpc)
3 |
4 | add_subdirectory(${PROTOBUF_ROOT_DIR} third_party/grpc)
5 |
6 | # Set grpc package
7 | set(GRPC_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/grpc/include)
8 |
9 | # Set protobuf package
10 | set(PROTOBUF_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/grpc/third_party/protobuf/src/)
11 |
--------------------------------------------------------------------------------
/cmake/jemalloc.cmake:
--------------------------------------------------------------------------------
1 | include (ExternalProject)
2 |
3 | set(jemalloc_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/jemalloc/src/jemalloc/include)
4 | set(jemalloc_URL https://github.com/jemalloc/jemalloc/archive/5.1.0.tar.gz)
5 | set(jemalloc_HASH SHA256=ff28aef89df724bd7b6bd6fde8597695514e0e3404d1afad2f1eb8b55ef378d3)
6 |
7 | set(jemalloc_BUILD ${CMAKE_CURRENT_BINARY_DIR}/jemalloc/)
8 |
9 | ExternalProject_Add(jemalloc
10 | PREFIX jemalloc
11 | URL ${jemalloc_URL}
12 | URL_HASH ${jemalloc_HASH}
13 | DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
14 | BUILD_IN_SOURCE 1
15 | LOG_UPDATE 0
16 | LOG_CONFIGURE 0
17 | LOG_BUILD 0
18 | BUILD_BYPRODUCTS ${jemalloc_STATIC} ${jemalloc_STATIC_PIC}
19 | CONFIGURE_COMMAND ./autogen.sh && ./configure --disable-initial-exec-tls --prefix=${CMAKE_CURRENT_BINARY_DIR}/jemalloc
20 | BUILD_COMMAND ${MAKE}
21 | INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install step."
22 | )
23 |
24 | ExternalProject_Get_Property(jemalloc INSTALL_DIR)
25 |
26 | add_library(jemalloc_STATIC STATIC IMPORTED)
27 | set_property(TARGET jemalloc_STATIC PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/src/jemalloc/lib/libjemalloc.a)
28 | add_dependencies(jemalloc_STATIC jemalloc)
29 |
30 | add_library(jemalloc_STATIC_PIC STATIC IMPORTED)
31 | set_property(TARGET jemalloc_STATIC_PIC PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/src/jemalloc/lib/libjemalloc_pic.a)
32 | add_dependencies(jemalloc_STATIC_PIC jemalloc)
33 |
34 | add_library(jemalloc_SHARED SHARED IMPORTED)
35 | set_property(TARGET jemalloc_SHARED PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/src/jemalloc/lib/libjemalloc.so)
36 | add_dependencies(jemalloc_SHARED jemalloc)
37 |
38 | if (!APPLE)
39 | link_libraries(-Wl,--no-as-needed)
40 | endif(!APPLE)
41 |
42 | link_libraries(dl ${jemalloc_STATIC_PIC})
43 |
--------------------------------------------------------------------------------
/cmake/linenoise.cmake:
--------------------------------------------------------------------------------
1 | include (ExternalProject)
2 |
3 | set(linenoise_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/linenoise/src)
4 |
5 | set(linenoise_URL http://github.com/antirez/linenoise/archive/1.0.tar.gz)
6 | set(linenoise_HASH SHA256=f5054a4fe120d43d85427cf58af93e56b9bb80389d507a9bec9b75531a340014)
7 |
8 | set(linenoise_BUILD ${CMAKE_CURRENT_BINARY_DIR}/linenoise/src/linenoise)
9 |
10 | ExternalProject_Add(
11 | linenoise
12 | PREFIX linenoise
13 | URL ${linenoise_URL}
14 | URL_HASH ${linenoise_HASH}
15 | DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
16 | BUILD_IN_SOURCE 1
17 | BUILD_BYPRODUCTS linenoise_STATIC
18 | CONFIGURE_COMMAND ${CMAKE_COMMAND} -E echo "Skipping configure"
19 | BUILD_COMMAND cc -c -fPIC linenoise.c && ${CMAKE_AR} rcs liblinenoise.a linenoise.o
20 | INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install"
21 | )
22 |
23 | ExternalProject_Get_Property(linenoise INSTALL_DIR)
24 |
25 | set(linenoise_STATIC ${linenoise_BUILD}/liblinenoise.a)
26 |
--------------------------------------------------------------------------------
/cmake/zookeeper.cmake:
--------------------------------------------------------------------------------
1 | set(WANT_CPPUNIT OFF CACHE BOOL "disable test" FORCE)
2 | set(ZOOKEEPER_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/zookeeper/src/c)
3 | add_subdirectory(${ZOOKEEPER_ROOT_DIR} third_party/zookeeper)
4 | set(ZOOKEEPER_INCLUDE_DIRS ${ZOOKEEPER_ROOT_DIR}/include ${ZOOKEEPER_ROOT_DIR}/generated)
5 |
--------------------------------------------------------------------------------
/doc/GQL-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/euler/c2a71faae59c1495b6dabcf6aec0acb4d93a7bb1/doc/GQL-1.png
--------------------------------------------------------------------------------
/doc/GQL-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/euler/c2a71faae59c1495b6dabcf6aec0acb4d93a7bb1/doc/GQL-2.png
--------------------------------------------------------------------------------
/doc/GQL-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/euler/c2a71faae59c1495b6dabcf6aec0acb4d93a7bb1/doc/GQL-3.png
--------------------------------------------------------------------------------
/doc/GQL-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/euler/c2a71faae59c1495b6dabcf6aec0acb4d93a7bb1/doc/GQL-4.png
--------------------------------------------------------------------------------
/doc/GQL-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/euler/c2a71faae59c1495b6dabcf6aec0acb4d93a7bb1/doc/GQL-5.png
--------------------------------------------------------------------------------
/doc/data-prepare-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/euler/c2a71faae59c1495b6dabcf6aec0acb4d93a7bb1/doc/data-prepare-1.png
--------------------------------------------------------------------------------
/doc/data-prepare-2.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/euler/c2a71faae59c1495b6dabcf6aec0acb4d93a7bb1/doc/data-prepare-2.jpeg
--------------------------------------------------------------------------------
/doc/message-algo-1.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/doc/message-algo-3.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/doc/messagepassing-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/euler/c2a71faae59c1495b6dabcf6aec0acb4d93a7bb1/doc/messagepassing-1.png
--------------------------------------------------------------------------------
/doc/messagepassing-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/euler/c2a71faae59c1495b6dabcf6aec0acb4d93a7bb1/doc/messagepassing-2.png
--------------------------------------------------------------------------------
/doc/overview-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/euler/c2a71faae59c1495b6dabcf6aec0acb4d93a7bb1/doc/overview-1.png
--------------------------------------------------------------------------------
/doc/overview-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/euler/c2a71faae59c1495b6dabcf6aec0acb4d93a7bb1/doc/overview-2.png
--------------------------------------------------------------------------------
/euler/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | add_definitions(-Wall -Wextra)
2 |
3 | if (BUILD_COVERAGE)
4 | set(CMAKE_CXX_FLAGS "-g -O0 --coverage")
5 | set (CMAKE_EXE_LINKER_FLAGS "--coverage")
6 | endif(BUILD_COVERAGE)
7 |
8 | # Add subdirectories
9 | add_subdirectory(client)
10 | add_subdirectory(parser)
11 | add_subdirectory(core)
12 | add_subdirectory(common)
13 | add_subdirectory(proto)
14 | add_subdirectory(service)
15 | add_subdirectory(util)
16 | add_subdirectory(tools)
17 |
--------------------------------------------------------------------------------
/euler/__init__.py:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Alibaba Group Holding Limited. All Rights Reserved.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | # ==============================================================================
15 |
16 | from __future__ import absolute_import
17 | from __future__ import division
18 | from __future__ import print_function
19 |
20 | from euler.python.start_service import *
21 |
--------------------------------------------------------------------------------
/euler/client/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | add_subdirectory(testing)
2 |
3 | add_library(client SHARED
4 | graph_config.cc
5 | grpc_channel.cc
6 | grpc_manager.cc
7 | rpc_client.cc
8 | rpc_manager.cc
9 | client_manager.cc
10 | query_proxy.cc
11 | query.cc)
12 | target_link_libraries(client common framework core compiler dag index grpc++_unsecure)
13 |
14 | add_executable(rpc_client_end2end_test rpc_client_end2end_test.cc)
15 | target_link_libraries(rpc_client_end2end_test client client_testing_util gtest gtest_main)
16 | add_test(NAME rpc_client_end2end_test COMMAND rpc_client_end2end_test)
17 |
18 | add_executable(rpc_manager_test rpc_manager_test.cc)
19 | target_link_libraries(rpc_manager_test client client_testing_util gmock gtest gtest_main)
20 | add_test(NAME rpc_manager_test COMMAND rpc_manager_test)
21 |
22 | add_executable(rpc_client_test rpc_client_test.cc)
23 | target_link_libraries(rpc_client_test client client_testing_util gmock gtest gtest_main)
24 | add_test(NAME rpc_client_test COMMAND rpc_client_test)
25 |
26 | add_executable(grpc_channel_test grpc_channel_test.cc)
27 | target_link_libraries(grpc_channel_test client client_testing_util gtest gtest_main)
28 | add_test(NAME grpc_channel_test COMMAND grpc_channel_test)
29 |
30 | add_executable(end2end_test end2end_test.cc)
31 | target_link_libraries(end2end_test client ops compiler dag gtest gtest_main grpc++_unsecure dag_def service api)
32 | add_test(NAME end2end_test COMMAND end2end_test)
33 |
34 | add_executable(end2end_gp_test end2end_gp_test.cc)
35 | target_link_libraries(end2end_gp_test client ops compiler dag gtest gtest_main grpc++_unsecure dag_def service api)
36 |
37 | add_executable(end2end_local_test end2end_local_test.cc)
38 | target_link_libraries(end2end_local_test gtest_main euler_core)
39 | add_test(NAME end2end_local_test COMMAND end2end_local_test)
40 |
--------------------------------------------------------------------------------
/euler/client/graph_config.h:
--------------------------------------------------------------------------------
1 | /* Copyright 2020 Alibaba Group Holding Limited. All Rights Reserved.
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
14 | ==============================================================================*/
15 |
16 | #ifndef EULER_CLIENT_GRAPH_CONFIG_H_
17 | #define EULER_CLIENT_GRAPH_CONFIG_H_
18 |
19 | #include
20 | #include