Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
torch-cluster
Commits
a7c265bf
Commit
a7c265bf
authored
Mar 31, 2018
by
rusty1s
Browse files
propose kernel, deg and cumDeg computation
parent
ef9677c5
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
71 additions
and
25 deletions
+71
-25
aten/THC/THCColor.cu
aten/THC/THCColor.cu
+0
-2
aten/THC/THCDegree.cu
aten/THC/THCDegree.cu
+10
-0
aten/THC/THCGreedy.cu
aten/THC/THCGreedy.cu
+46
-7
aten/THC/THCGreedy.h
aten/THC/THCGreedy.h
+1
-1
aten/THC/generic/THCGreedy.cu
aten/THC/generic/THCGreedy.cu
+1
-1
aten/THC/generic/THCGreedy.h
aten/THC/generic/THCGreedy.h
+1
-1
aten/THCC/THCCGreedy.c
aten/THCC/THCCGreedy.c
+2
-3
aten/THCC/THCCGreedy.h
aten/THCC/THCCGreedy.h
+8
-8
aten/THCC/generic/THCCGreedy.c
aten/THCC/generic/THCCGreedy.c
+2
-2
No files found.
aten/THC/THCColor.cu
View file @
a7c265bf
...
@@ -14,8 +14,6 @@ __global__ void assignColorKernel(int64_t *color, curandStateMtgp32 *state, uint
...
@@ -14,8 +14,6 @@ __global__ void assignColorKernel(int64_t *color, curandStateMtgp32 *state, uint
}
}
int
THCGreedy_assignColor
(
THCState
*
state
,
THCudaLongTensor
*
color
)
{
int
THCGreedy_assignColor
(
THCState
*
state
,
THCudaLongTensor
*
color
)
{
THCAssertSameGPU
(
THCudaLongTensor_checkGPU
(
state
,
1
,
color
));
int64_t
*
colorData
=
THCudaLongTensor_data
(
state
,
color
);
int64_t
*
colorData
=
THCudaLongTensor_data
(
state
,
color
);
ptrdiff_t
nNodes
=
THCudaLongTensor_nElement
(
state
,
color
);
ptrdiff_t
nNodes
=
THCudaLongTensor_nElement
(
state
,
color
);
uint8_t
*
d_done
;
cudaMalloc
(
&
d_done
,
sizeof
(
uint8_t
));
cudaMemset
(
d_done
,
1
,
sizeof
(
uint8_t
));
uint8_t
*
d_done
;
cudaMalloc
(
&
d_done
,
sizeof
(
uint8_t
));
cudaMemset
(
d_done
,
1
,
sizeof
(
uint8_t
));
...
...
aten/THC/THCDegree.cu
0 → 100644
View file @
a7c265bf
void
THCDegree
(
THCState
*
state
,
THCudaLongTensor
*
self
,
THCudaLongTensor
*
index
)
{
int
nEdges
=
THCudaLongTensor_nElement
(
state
,
index
);
THCudaLongTensor
*
one
=
THCudaLongTensor_newWithSize1d
(
state
,
nEdges
);
THCudaLongTensor_fill
(
state
,
one
,
1
);
THCudaLongTensor_fill
(
state
,
self
,
0
);
THCudaLongTensor_scatterAdd
(
state
,
self
,
0
,
index
,
one
);
THCudaLongTensor_free
(
state
,
one
);
}
aten/THC/THCGreedy.cu
View file @
a7c265bf
#include "THCGreedy.h"
#include "THCGreedy.h"
#include "common.cuh"
#include "THCDegree.cu"
#include "THCColor.cu"
#include "THCColor.cu"
__global__
void
proposeKernel
(
int64_t
*
tensor
,
int64_t
*
color
,
int64_t
*
row
,
int64_t
*
col
,
int64_t
*
deg
,
int64_t
*
cumDeg
,
ptrdiff_t
nNodes
)
{
KERNEL_LOOP
(
i
,
nNodes
)
{
if
(
color
[
i
]
!=
-
1
)
continue
;
// Only visit blue nodes.
ptrdiff_t
c
;
for
(
ptrdiff_t
e
=
cumDeg
[
i
];
e
<
cumDeg
[
i
]
+
deg
[
i
];
e
++
)
{
c
=
col
[
e
];
if
(
color
[
c
]
==
-
2
)
{
tensor
[
i
]
=
c
;
break
;
}
// Propose to first red node.
}
if
(
tensor
[
i
]
<
0
)
color
[
i
]
=
i
;
// Mark node as dead.
}
}
void
THCGreedy_propose
(
THCState
*
state
,
THCudaLongTensor
*
tensor
,
THCudaLongTensor
*
color
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaLongTensor
*
deg
,
THCudaLongTensor
*
cumDeg
)
{
ptrdiff_t
nNodes
=
THCudaLongTensor_nElement
(
state
,
color
);
int64_t
*
tensorData
=
THCudaLongTensor_data
(
state
,
tensor
);
int64_t
*
colorData
=
THCudaLongTensor_data
(
state
,
color
);
int64_t
*
rowData
=
THCudaLongTensor_data
(
state
,
row
);
int64_t
*
colData
=
THCudaLongTensor_data
(
state
,
col
);
int64_t
*
degData
=
THCudaLongTensor_data
(
state
,
deg
);
int64_t
*
cumDegData
=
THCudaLongTensor_data
(
state
,
cumDeg
);
KERNEL_RUN
(
proposeKernel
,
nNodes
,
tensorData
,
colorData
,
rowData
,
colData
,
degData
,
cumDegData
);
}
void
THCGreedy
(
THCState
*
state
,
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
void
THCGreedy
(
THCState
*
state
,
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaLongTensor
*
deg
)
{
THCudaLongTensor
*
col
)
{
THCAssertSameGPU
(
THCudaLongTensor_checkGPU
(
state
,
4
,
cluster
,
row
,
col
,
deg
));
THCAssertSameGPU
(
THCudaLongTensor_checkGPU
(
state
,
4
,
cluster
,
row
,
col
));
int
nNodes
=
THCudaLongTensor_nElement
(
state
,
cluster
);
THCudaLongTensor_fill
(
state
,
cluster
,
-
1
);
THCudaLongTensor_fill
(
state
,
cluster
,
-
1
);
THCudaLongTensor
*
prop
=
THCudaLongTensor_newClone
(
state
,
cluster
);
THCudaLongTensor
*
deg
=
THCudaLongTensor_newWithSize1d
(
state
,
nNodes
);
THCDegree
(
state
,
deg
,
row
);
THCudaLongTensor
*
cumDeg
=
THCudaLongTensor_newWithSize1d
(
state
,
nNodes
);
THCudaLongTensor_cumsum
(
state
,
cumDeg
,
deg
,
0
);
THCGreedy_assignColor
(
state
,
cluster
);
THCGreedy_assignColor
(
state
,
cluster
);
THCGreedy_propose
(
state
,
prop
,
cluster
,
row
,
col
,
deg
,
cumDeg
);
/* while(!THCGreedy_assignColor(state, cluster)) { */
/* while(!THCGreedy_assignColor(state, cluster)) { */
/* printf("DRIN"); */
/* printf("DRIN"); */
/* }; */
// Fill cluster with -1
// assign color to clusters < 0 (return done)
// Generate proposal vector with length of nodes (init?)
// call propose step
// call propose step
// call response step
// call response step
/* }; */
THCudaLongTensor_free
(
state
,
prop
);
THCudaLongTensor_free
(
state
,
deg
);
THCudaLongTensor_free
(
state
,
cumDeg
);
}
}
#include "generic/THCGreedy.cu"
#include "generic/THCGreedy.cu"
...
...
aten/THC/THCGreedy.h
View file @
a7c265bf
...
@@ -10,7 +10,7 @@ extern "C" {
...
@@ -10,7 +10,7 @@ extern "C" {
#endif // __cplusplus
#endif // __cplusplus
void
THCGreedy
(
THCState
*
state
,
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
void
THCGreedy
(
THCState
*
state
,
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaLongTensor
*
deg
);
THCudaLongTensor
*
col
);
#include "generic/THCGreedy.h"
#include "generic/THCGreedy.h"
#include "THC/THCGenerateAllTypes.h"
#include "THC/THCGenerateAllTypes.h"
...
...
aten/THC/generic/THCGreedy.cu
View file @
a7c265bf
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
#else
#else
void
THCGreedy_
(
THCState
*
state
,
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
void
THCGreedy_
(
THCState
*
state
,
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaLongTensor
*
deg
,
THCTensor
*
weight
)
{
THCudaLongTensor
*
col
,
THCTensor
*
weight
)
{
printf
(
"THCGreedy dynamic drin"
);
printf
(
"THCGreedy dynamic drin"
);
}
}
...
...
aten/THC/generic/THCGreedy.h
View file @
a7c265bf
...
@@ -3,6 +3,6 @@
...
@@ -3,6 +3,6 @@
#else
#else
void
THCGreedy_
(
THCState
*
state
,
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
void
THCGreedy_
(
THCState
*
state
,
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaLongTensor
*
deg
,
THCTensor
*
weight
);
THCudaLongTensor
*
col
,
THCTensor
*
weight
);
#endif // THC_GENERIC_FILE
#endif // THC_GENERIC_FILE
aten/THCC/THCCGreedy.c
View file @
a7c265bf
...
@@ -7,9 +7,8 @@
...
@@ -7,9 +7,8 @@
extern
THCState
*
state
;
extern
THCState
*
state
;
void
THCCGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
void
THCCGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
)
{
THCudaLongTensor
*
deg
)
{
THCGreedy
(
state
,
cluster
,
row
,
col
);
THCGreedy
(
state
,
cluster
,
row
,
col
,
deg
);
}
}
#include "generic/THCCGreedy.c"
#include "generic/THCCGreedy.c"
...
...
aten/THCC/THCCGreedy.h
View file @
a7c265bf
void
THCCGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaLongTensor
*
deg
);
void
THCCGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
);
void
THCCByteGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaLongTensor
*
deg
,
THCudaByteTensor
*
weight
);
void
THCCByteGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaByteTensor
*
weight
);
void
THCCCharGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaLongTensor
*
deg
,
THCudaCharTensor
*
weight
);
void
THCCCharGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaCharTensor
*
weight
);
void
THCCShortGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaLongTensor
*
deg
,
THCudaShortTensor
*
weight
);
void
THCCShortGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaShortTensor
*
weight
);
void
THCCIntGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaLongTensor
*
deg
,
THCudaIntTensor
*
weight
);
void
THCCIntGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaIntTensor
*
weight
);
void
THCCLongGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaLongTensor
*
deg
,
THCudaLongTensor
*
weight
);
void
THCCLongGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaLongTensor
*
weight
);
void
THCCFloatGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaLongTensor
*
deg
,
THCudaTensor
*
weight
);
void
THCCFloatGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaTensor
*
weight
);
void
THCCDoubleGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaLongTensor
*
deg
,
THCudaDoubleTensor
*
weight
);
void
THCCDoubleGreedy
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaDoubleTensor
*
weight
);
aten/THCC/generic/THCCGreedy.c
View file @
a7c265bf
...
@@ -3,8 +3,8 @@
...
@@ -3,8 +3,8 @@
#else
#else
void
THCCGreedy_
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
void
THCCGreedy_
(
THCudaLongTensor
*
cluster
,
THCudaLongTensor
*
row
,
THCudaLongTensor
*
col
,
THCudaLongTensor
*
deg
,
THCTensor
*
weight
)
{
THCTensor
*
weight
)
{
THCGreedy_
(
state
,
cluster
,
row
,
col
,
deg
,
weight
);
THCGreedy_
(
state
,
cluster
,
row
,
col
,
weight
);
}
}
#endif
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment