THCGreedy.cu 1.12 KB
Newer Older
rusty1s's avatar
rusty1s committed
1
2
#include "THCGreedy.h"

3
4
#include "common.cuh"
#include "THCDegree.cu"
rusty1s's avatar
rusty1s committed
5
#include "THCColor.cu"
rusty1s's avatar
rusty1s committed
6
7
#include "THCPropose.cu"
#include "THCResponse.cu"
8

rusty1s's avatar
rusty1s committed
9
void THCGreedy(THCState *state, THCudaLongTensor *cluster, THCudaLongTensor *row,
10
               THCudaLongTensor *col) {
rusty1s's avatar
rusty1s committed
11
  THCAssertSameGPU(THCudaLongTensor_checkGPU(state, 3, cluster, row, col));
12
13

  int nNodes = THCudaLongTensor_nElement(state, cluster);
rusty1s's avatar
rusty1s committed
14
15

  THCudaLongTensor_fill(state, cluster, -1);
16
17
18
  THCudaLongTensor *prop = THCudaLongTensor_newClone(state, cluster);

  THCudaLongTensor *deg = THCudaLongTensor_newWithSize1d(state, nNodes);
rusty1s's avatar
rusty1s committed
19
  THCudaLongTensor_degree(state, deg, row);
20
21
22
23

  THCudaLongTensor *cumDeg = THCudaLongTensor_newWithSize1d(state, nNodes);
  THCudaLongTensor_cumsum(state, cumDeg, deg, 0);

rusty1s's avatar
rusty1s committed
24
25
26
27
  while(!THCGreedy_assignColor(state, cluster)) {
    THCGreedy_propose(state, cluster, prop, row, col, deg, cumDeg);
    THCGreedy_response(state, cluster, prop, row, col, deg, cumDeg);
  };
28
29
30
31

  THCudaLongTensor_free(state, prop);
  THCudaLongTensor_free(state, deg);
  THCudaLongTensor_free(state, cumDeg);
rusty1s's avatar
rusty1s committed
32
33
34
35
}

#include "generic/THCGreedy.cu"
#include "THC/THCGenerateAllTypes.h"