graph
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Functions
spmm_tc.cu File Reference
#include "pangolin/triangle_counter/spmm_tc.hpp"
#include "pangolin/logger.hpp"
#include "pangolin/utilities.hpp"
#include "pangolin/reader/edge_list_reader.hpp"
#include <nvToolsExt.h>
#include <limits>
#include <cub/cub.cuh>
Include dependency graph for spmm_tc.cu:

Functions

template<typename U >
static __device__ uint64_t intersection_count (const U *ab, const U *ae, const U *bb, const U *be)
 
template<typename Index >
__global__ void spmm_csr_csr (Index *edgeSrc, Index *edgeDst, uint64_t *edgeCnt, uint64_t *nextEdge, const pangolin::GPUCSRView< Index > aL, const pangolin::GPUCSRView< Index > aU)
 

Function Documentation

◆ intersection_count()

template<typename U >
static __device__ uint64_t intersection_count ( const U *  ab,
const U *  ae,
const U *  bb,
const U *  be 
)
static

return the number of common elements between sorted lists a and b

Parameters
abbeginning of a
aeend of a
bbbeginning of b
beend of b

◆ spmm_csr_csr()

template<typename Index >
__global__ void spmm_csr_csr ( Index *  edgeSrc,
Index *  edgeDst,
uint64_t *  edgeCnt,
uint64_t *  nextEdge,
const pangolin::GPUCSRView< Index >  aL,
const pangolin::GPUCSRView< Index >  aU 
)

Count triangles using LxU*L CSR method

One thread per row

Parameters
edgeSrcsrc of edge (at least # edges long)
edgeDstdst of edge (at least # edges long)
edgeCnttri count of edge (at least # edges long)
nextEdgepointer to next available edge
aLaL*aU, lower-triangular
aUaL*aU, upper-triagular