diff --git a/pyg_lib/csrc/classes/cpu/neighbor_sampler.cpp b/pyg_lib/csrc/classes/cpu/neighbor_sampler.cpp index 83b1658de..c563e6a06 100644 --- a/pyg_lib/csrc/classes/cpu/neighbor_sampler.cpp +++ b/pyg_lib/csrc/classes/cpu/neighbor_sampler.cpp @@ -12,9 +12,9 @@ struct NeighborSampler : torch::CustomClassHolder { public: NeighborSampler(const at::Tensor& rowptr, const at::Tensor& col, - const std::optional& edge_weight, - const std::optional& node_time, - const std::optional& edge_time) + const c10::optional& edge_weight, + const c10::optional& node_time, + const c10::optional& edge_time) : rowptr_(rowptr), col_(col), edge_weight_(edge_weight), @@ -24,13 +24,13 @@ struct NeighborSampler : torch::CustomClassHolder { std::tuple, // edge_id, - std::optional, // batch, + c10::optional, // edge_id, + c10::optional, // batch, std::vector, // num_sampled_nodes, std::vector> // num_sampled_edges, sample(const std::vector& num_neighbors, const at::Tensor& seed_node, - const std::optional& seed_time, + const c10::optional& seed_time, bool disjoint = false, std::string temporal_strategy = "uniform", bool return_edge_id = true) { @@ -49,9 +49,9 @@ struct NeighborSampler : torch::CustomClassHolder { private: const at::Tensor& rowptr_; const at::Tensor& col_; - const std::optional& edge_weight_; - const std::optional& node_time_; - const std::optional& edge_time_; + const c10::optional& edge_weight_; + const c10::optional& node_time_; + const c10::optional& edge_time_; }; struct HeteroNeighborSampler : torch::CustomClassHolder { @@ -61,9 +61,9 @@ struct HeteroNeighborSampler : torch::CustomClassHolder { const std::vector& edge_types, const c10::Dict& rowptr, const c10::Dict& col, - const std::optional>& edge_weight, - const std::optional>& node_time, - const std::optional>& edge_time) + const c10::optional>& edge_weight, + const c10::optional>& node_time, + const c10::optional>& edge_time) : node_types_(node_types), edge_types_(edge_types), rowptr_(rowptr), @@ -75,13 +75,13 @@ struct HeteroNeighborSampler : torch::CustomClassHolder { std::tuple, // row c10::Dict, // col c10::Dict, // node_id - std::optional>, // edge_id - std::optional>, // batch + c10::optional>, // edge_id + c10::optional>, // batch c10::Dict>, // num_sampled_nodes c10::Dict>> // num_sampled_edges sample(const c10::Dict>& num_neighbors, const c10::Dict& seed_node, - const std::optional>& seed_time, + const c10::optional>& seed_time, bool disjoint = false, std::string temporal_strategy = "uniform", bool return_edge_id = true) { @@ -102,26 +102,26 @@ struct HeteroNeighborSampler : torch::CustomClassHolder { const std::vector& edge_types_; const c10::Dict& rowptr_; const c10::Dict& col_; - const std::optional>& edge_weight_; - const std::optional>& node_time_; - const std::optional>& edge_time_; + const c10::optional>& edge_weight_; + const c10::optional>& node_time_; + const c10::optional>& edge_time_; }; } // namespace TORCH_LIBRARY_FRAGMENT(pyg, m) { m.class_("NeighborSampler") - .def(torch::init, - std::optional, std::optional>()) + .def(torch::init, + c10::optional, c10::optional>()) .def("sample", &NeighborSampler::sample); m.class_("HeteroNeighborSampler") .def(torch::init, std::vector, c10::Dict, c10::Dict, - std::optional>, - std::optional>, - std::optional>>()) + c10::optional>, + c10::optional>, + c10::optional>>()) .def("sample", &HeteroNeighborSampler::sample); } diff --git a/pyg_lib/csrc/partition/cpu/metis_kernel.cpp b/pyg_lib/csrc/partition/cpu/metis_kernel.cpp index 7478b4e43..56f6da886 100644 --- a/pyg_lib/csrc/partition/cpu/metis_kernel.cpp +++ b/pyg_lib/csrc/partition/cpu/metis_kernel.cpp @@ -13,8 +13,8 @@ namespace { at::Tensor metis_kernel(const at::Tensor& rowptr, const at::Tensor& col, int64_t num_partitions, - const std::optional& node_weight, - const std::optional& edge_weight, + const c10::optional& node_weight, + const c10::optional& edge_weight, bool recursive) { #ifdef _WIN32 TORCH_INTERNAL_ASSERT(false, "METIS not yet supported on Windows"); diff --git a/pyg_lib/csrc/partition/metis.cpp b/pyg_lib/csrc/partition/metis.cpp index 6fd68d4d7..02e85c2b4 100644 --- a/pyg_lib/csrc/partition/metis.cpp +++ b/pyg_lib/csrc/partition/metis.cpp @@ -11,8 +11,8 @@ namespace partition { at::Tensor metis(const at::Tensor& rowptr, const at::Tensor& col, int64_t num_partitions, - const std::optional& node_weight, - const std::optional& edge_weight, + const c10::optional& node_weight, + const c10::optional& edge_weight, bool recursive) { at::TensorArg rowptr_t{rowptr, "rowtpr", 1}; at::TensorArg col_t{col, "col", 1}; diff --git a/pyg_lib/csrc/random/cpu/biased_sampling.cpp b/pyg_lib/csrc/random/cpu/biased_sampling.cpp index f441aed85..386459761 100644 --- a/pyg_lib/csrc/random/cpu/biased_sampling.cpp +++ b/pyg_lib/csrc/random/cpu/biased_sampling.cpp @@ -5,7 +5,7 @@ namespace pyg { namespace random { -std::optional biased_to_cdf(const at::Tensor& rowptr, +c10::optional biased_to_cdf(const at::Tensor& rowptr, at::Tensor& bias, bool inplace) { TORCH_CHECK(rowptr.is_cpu(), "'rowptr' must be a CPU tensor"); diff --git a/pyg_lib/csrc/sampler/cpu/dist_merge_outputs_kernel.cpp b/pyg_lib/csrc/sampler/cpu/dist_merge_outputs_kernel.cpp index 3bb7cd670..f187478e0 100644 --- a/pyg_lib/csrc/sampler/cpu/dist_merge_outputs_kernel.cpp +++ b/pyg_lib/csrc/sampler/cpu/dist_merge_outputs_kernel.cpp @@ -15,7 +15,7 @@ namespace { template std::tuple, + c10::optional, std::vector> merge_outputs( const std::vector& node_ids, @@ -25,10 +25,10 @@ merge_outputs( const std::vector& partition_orders, const int64_t num_partitions, const int64_t num_neighbors, - const std::optional& batch) { + const c10::optional& batch) { at::Tensor out_node_id; at::Tensor out_edge_id; - std::optional out_batch = c10::nullopt; + c10::optional out_batch = c10::nullopt; auto offset = num_neighbors; @@ -140,7 +140,7 @@ merge_outputs( std::tuple, + c10::optional, std::vector> merge_sampler_outputs_kernel( const std::vector& node_ids, @@ -150,7 +150,7 @@ merge_sampler_outputs_kernel( const std::vector& partition_orders, const int64_t num_partitions, const int64_t num_neighbors, - const std::optional& batch, + const c10::optional& batch, bool disjoint) { DISPATCH_MERGE_OUTPUTS( disjoint, node_ids, edge_ids, cumsum_neighbors_per_node, partition_ids, diff --git a/pyg_lib/csrc/sampler/cpu/dist_relabel_kernel.cpp b/pyg_lib/csrc/sampler/cpu/dist_relabel_kernel.cpp index 6a6877d9f..90831736c 100644 --- a/pyg_lib/csrc/sampler/cpu/dist_relabel_kernel.cpp +++ b/pyg_lib/csrc/sampler/cpu/dist_relabel_kernel.cpp @@ -33,7 +33,7 @@ std::tuple relabel( const at::Tensor& sampled_nodes_with_duplicates, const std::vector& num_sampled_neighbors_per_node, const int64_t num_nodes, - const std::optional& batch, + const c10::optional& batch, const bool csc) { if (disjoint) { TORCH_CHECK(batch.has_value(), @@ -103,7 +103,7 @@ relabel( const c10::Dict>>& num_sampled_neighbors_per_node_dict, const c10::Dict& num_nodes_dict, - const std::optional>& batch_dict, + const c10::optional>& batch_dict, const bool csc) { c10::Dict out_row_dict, out_col_dict; @@ -281,7 +281,7 @@ std::tuple relabel_neighborhood_kernel( const at::Tensor& sampled_nodes_with_duplicates, const std::vector& num_sampled_neighbors_per_node, const int64_t num_nodes, - const std::optional& batch, + const c10::optional& batch, bool csc, bool disjoint) { DISPATCH_RELABEL(disjoint, seed, sampled_nodes_with_duplicates, @@ -297,7 +297,7 @@ hetero_relabel_neighborhood_kernel( const c10::Dict>>& num_sampled_neighbors_per_node_dict, const c10::Dict& num_nodes_dict, - const std::optional>& batch_dict, + const c10::optional>& batch_dict, bool csc, bool disjoint) { c10::Dict out_row_dict, out_col_dict; diff --git a/pyg_lib/csrc/sampler/cpu/neighbor_kernel.cpp b/pyg_lib/csrc/sampler/cpu/neighbor_kernel.cpp index b934a7598..72d4777a3 100644 --- a/pyg_lib/csrc/sampler/cpu/neighbor_kernel.cpp +++ b/pyg_lib/csrc/sampler/cpu/neighbor_kernel.cpp @@ -136,12 +136,12 @@ class NeighborSampler { dst_mapper, generator, out_global_dst_nodes); } - std::tuple> + std::tuple> get_sampled_edges(bool csc = false) { TORCH_CHECK(save_edges, "No edges have been stored") const auto row = pyg::utils::from_vector(sampled_rows_); const auto col = pyg::utils::from_vector(sampled_cols_); - std::optional edge_id = c10::nullopt; + c10::optional edge_id = c10::nullopt; if (save_edge_ids) { edge_id = pyg::utils::from_vector(sampled_edge_ids_); } @@ -330,7 +330,7 @@ template , + c10::optional, std::vector, std::vector, std::vector> @@ -338,10 +338,10 @@ sample(const at::Tensor& rowptr, const at::Tensor& col, const at::Tensor& seed, const std::vector& num_neighbors, - const std::optional& node_time, - const std::optional& edge_time, - const std::optional& seed_time, - const std::optional& edge_weight, + const c10::optional& node_time, + const c10::optional& edge_time, + const c10::optional& seed_time, + const c10::optional& edge_weight, const bool csc, const std::string temporal_strategy) { TORCH_CHECK(!node_time.has_value() || disjoint, @@ -373,7 +373,7 @@ sample(const at::Tensor& rowptr, "Biased edge temporal sampling not yet supported"); at::Tensor out_row, out_col, out_node_id; - std::optional out_edge_id = c10::nullopt; + c10::optional out_edge_id = c10::nullopt; std::vector num_sampled_nodes_per_hop; std::vector num_sampled_edges_per_hop; std::vector cumsum_neighbors_per_node = @@ -516,7 +516,7 @@ template , c10::Dict, c10::Dict, - std::optional>, + c10::optional>, c10::Dict>, c10::Dict>> sample(const std::vector& node_types, @@ -525,10 +525,10 @@ sample(const std::vector& node_types, const c10::Dict& col_dict, const c10::Dict& seed_dict, const c10::Dict>& num_neighbors_dict, - const std::optional>& node_time_dict, - const std::optional>& edge_time_dict, - const std::optional>& seed_time_dict, - const std::optional>& edge_weight_dict, + const c10::optional>& node_time_dict, + const c10::optional>& edge_time_dict, + const c10::optional>& seed_time_dict, + const c10::optional>& edge_weight_dict, const bool csc, const std::string temporal_strategy) { TORCH_CHECK(!node_time_dict.has_value() || disjoint, @@ -576,7 +576,7 @@ sample(const std::vector& node_types, c10::Dict out_row_dict, out_col_dict; c10::Dict out_node_id_dict; - std::optional> out_edge_id_dict; + c10::optional> out_edge_id_dict; if (return_edge_id) { out_edge_id_dict = c10::Dict(); } else { @@ -892,17 +892,17 @@ sample(const std::vector& node_types, std::tuple, + c10::optional, std::vector, std::vector> neighbor_sample_kernel(const at::Tensor& rowptr, const at::Tensor& col, const at::Tensor& seed, const std::vector& num_neighbors, - const std::optional& node_time, - const std::optional& edge_time, - const std::optional& seed_time, - const std::optional& edge_weight, + const c10::optional& node_time, + const c10::optional& edge_time, + const c10::optional& seed_time, + const c10::optional& edge_weight, bool csc, bool replace, bool directed, @@ -921,7 +921,7 @@ neighbor_sample_kernel(const at::Tensor& rowptr, std::tuple, c10::Dict, c10::Dict, - std::optional>, + c10::optional>, c10::Dict>, c10::Dict>> hetero_neighbor_sample_kernel( @@ -931,10 +931,10 @@ hetero_neighbor_sample_kernel( const c10::Dict& col_dict, const c10::Dict& seed_dict, const c10::Dict>& num_neighbors_dict, - const std::optional>& node_time_dict, - const std::optional>& edge_time_dict, - const std::optional>& seed_time_dict, - const std::optional>& edge_weight_dict, + const c10::optional>& node_time_dict, + const c10::optional>& edge_time_dict, + const c10::optional>& seed_time_dict, + const c10::optional>& edge_weight_dict, bool csc, bool replace, bool directed, @@ -952,10 +952,10 @@ dist_neighbor_sample_kernel(const at::Tensor& rowptr, const at::Tensor& col, const at::Tensor& seed, const int64_t num_neighbors, - const std::optional& node_time, - const std::optional& edge_time, - const std::optional& seed_time, - const std::optional& edge_weight, + const c10::optional& node_time, + const c10::optional& edge_time, + const c10::optional& seed_time, + const c10::optional& edge_weight, bool csc, bool replace, bool directed, diff --git a/pyg_lib/csrc/sampler/cpu/subgraph_kernel.cpp b/pyg_lib/csrc/sampler/cpu/subgraph_kernel.cpp index 21d173cfc..7c464bb1b 100644 --- a/pyg_lib/csrc/sampler/cpu/subgraph_kernel.cpp +++ b/pyg_lib/csrc/sampler/cpu/subgraph_kernel.cpp @@ -10,7 +10,7 @@ namespace sampler { namespace { -std::tuple> subgraph_kernel( +std::tuple> subgraph_kernel( const at::Tensor& rowptr, const at::Tensor& col, const at::Tensor& nodes, @@ -21,7 +21,7 @@ std::tuple> subgraph_kernel( const auto out_rowptr = rowptr.new_empty({nodes.size(0) + 1}); at::Tensor out_col; - std::optional out_edge_id = c10::nullopt; + c10::optional out_edge_id = c10::nullopt; AT_DISPATCH_INTEGRAL_TYPES(nodes.scalar_type(), "subgraph_kernel", [&] { const auto rowptr_data = rowptr.data_ptr(); diff --git a/pyg_lib/csrc/sampler/dist_merge_outputs.cpp b/pyg_lib/csrc/sampler/dist_merge_outputs.cpp index 8a1fdacef..4caa06a68 100644 --- a/pyg_lib/csrc/sampler/dist_merge_outputs.cpp +++ b/pyg_lib/csrc/sampler/dist_merge_outputs.cpp @@ -10,7 +10,7 @@ namespace sampler { std::tuple, + c10::optional, std::vector> merge_sampler_outputs( const std::vector& node_ids, @@ -20,7 +20,7 @@ merge_sampler_outputs( const std::vector& partition_orders, const int64_t num_partitions, const int64_t num_neighbors, - const std::optional& batch, + const c10::optional& batch, bool disjoint) { std::vector node_ids_args; std::vector edge_ids_args; diff --git a/pyg_lib/csrc/sampler/dist_relabel.cpp b/pyg_lib/csrc/sampler/dist_relabel.cpp index ebc112374..78533336e 100644 --- a/pyg_lib/csrc/sampler/dist_relabel.cpp +++ b/pyg_lib/csrc/sampler/dist_relabel.cpp @@ -13,7 +13,7 @@ std::tuple relabel_neighborhood( const at::Tensor& sampled_nodes_with_duplicates, const std::vector& num_sampled_neighbors_per_node, const int64_t num_nodes, - const std::optional& batch, + const c10::optional& batch, bool csc, bool disjoint) { at::TensorArg seed_t{seed, "seed", 1}; @@ -41,7 +41,7 @@ hetero_relabel_neighborhood( const c10::Dict>>& num_sampled_neighbors_per_node_dict, const c10::Dict& num_nodes_dict, - const std::optional>& batch_dict, + const c10::optional>& batch_dict, bool csc, bool disjoint) { std::vector seed_dict_args; diff --git a/pyg_lib/csrc/sampler/neighbor.cpp b/pyg_lib/csrc/sampler/neighbor.cpp index 64b0121e1..a3304f2f8 100644 --- a/pyg_lib/csrc/sampler/neighbor.cpp +++ b/pyg_lib/csrc/sampler/neighbor.cpp @@ -11,17 +11,17 @@ namespace sampler { std::tuple, + c10::optional, std::vector, std::vector> neighbor_sample(const at::Tensor& rowptr, const at::Tensor& col, const at::Tensor& seed, const std::vector& num_neighbors, - const std::optional& node_time, - const std::optional& edge_time, - const std::optional& seed_time, - const std::optional& edge_weight, + const c10::optional& node_time, + const c10::optional& edge_time, + const c10::optional& seed_time, + const c10::optional& edge_weight, bool csc, bool replace, bool directed, @@ -47,7 +47,7 @@ neighbor_sample(const at::Tensor& rowptr, std::tuple, c10::Dict, c10::Dict, - std::optional>, + c10::optional>, c10::Dict>, c10::Dict>> hetero_neighbor_sample( @@ -57,10 +57,10 @@ hetero_neighbor_sample( const c10::Dict& col_dict, const c10::Dict& seed_dict, const c10::Dict>& num_neighbors_dict, - const std::optional>& node_time_dict, - const std::optional>& edge_time_dict, - const std::optional>& seed_time_dict, - const std::optional>& edge_weight_dict, + const c10::optional>& node_time_dict, + const c10::optional>& edge_time_dict, + const c10::optional>& seed_time_dict, + const c10::optional>& edge_weight_dict, bool csc, bool replace, bool directed, @@ -101,10 +101,10 @@ std::tuple> dist_neighbor_sample( const at::Tensor& col, const at::Tensor& seed, const int64_t num_neighbors, - const std::optional& node_time, - const std::optional& edge_time, - const std::optional& seed_time, - const std::optional& edge_weight, + const c10::optional& node_time, + const c10::optional& edge_time, + const c10::optional& seed_time, + const c10::optional& edge_weight, bool csc, bool replace, bool directed, diff --git a/pyg_lib/csrc/sampler/subgraph.cpp b/pyg_lib/csrc/sampler/subgraph.cpp index faae6b60e..d1416e106 100644 --- a/pyg_lib/csrc/sampler/subgraph.cpp +++ b/pyg_lib/csrc/sampler/subgraph.cpp @@ -6,7 +6,7 @@ namespace pyg { namespace sampler { -std::tuple> subgraph( +std::tuple> subgraph( const at::Tensor& rowptr, const at::Tensor& col, const at::Tensor& nodes,