scheduler_apis.cc 922 Bytes
Newer Older
1
2
3
4
5
/*!
 *  Copyright (c) 2018 by Contributors
 * \file scheduler/scheduler_apis.cc
 * \brief DGL scheduler APIs
 */
Lingfan Yu's avatar
Lingfan Yu committed
6
7
#include <dgl/graph.h>
#include <dgl/scheduler.h>
8
#include "../c_api_common.h"
Lingfan Yu's avatar
Lingfan Yu committed
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

using tvm::runtime::TVMArgs;
using tvm::runtime::TVMRetValue;
using tvm::runtime::NDArray;

namespace dgl {

TVM_REGISTER_GLOBAL("scheduler._CAPI_DGLDegreeBucketing")
.set_body([] (TVMArgs args, TVMRetValue* rv) {
    const IdArray vids = IdArray::FromDLPack(CreateTmpDLManagedTensor(args[0]));
    *rv = ConvertNDArrayVectorToPackedFunc(sched::DegreeBucketing(vids));
  });

TVM_REGISTER_GLOBAL("scheduler._CAPI_DGLDegreeBucketingFromGraph")
.set_body([] (TVMArgs args, TVMRetValue* rv) {
    GraphHandle ghandle = args[0];
    const Graph* gptr = static_cast<Graph*>(ghandle);
26
    const auto& edges = gptr->Edges(false);
Lingfan Yu's avatar
Lingfan Yu committed
27
28
29
    *rv = ConvertNDArrayVectorToPackedFunc(sched::DegreeBucketing(edges.dst));
  });

30
}  // namespace dgl