Loading...
Searching...
No Matches
tum_device.hpp File Reference

Device-safe TUM ice-score pieces: hop-bound primitive six-rings and claim-free HC/DDC affiliation. More...

Go to the source code of this file.

Namespaces

namespace  tum
namespace  tum::device

Functions

bool tum::device::bonded (const int *deg, const int *cols, int nAtoms, int kMax, int a, int b)
bool tum::device::inSix (const int *r, int atom)
bool tum::device::shareAtoms (const int *a, const int *b)
int tum::device::commonCount (const int *a, const int *b)
bool tum::device::commonInThree (const int *a, const int *b, const int *c)
bool tum::device::shareNeigh (const int *deg, const int *cols, int nAtoms, int kMax, int a, int b)
int tum::device::hopsAtMost (const int *deg, const int *cols, int nAtoms, int kMax, int a, int b, int cap)
 Graph distance from a to b when it is at most cap, else -1.
bool tum::device::hopBoundPrimitiveSix (const int *r, const int *deg, const int *cols, int nAtoms, int kMax)
 Hop-bounded Franzblau SP test on a six-cycle of the bond graph.
bool tum::device::basalNeighbours (const int *deg, const int *cols, int nAtoms, int kMax, int n1, int n2, int atomOne, int atomTwo)
bool tum::device::notNeighboursOfRing (const int *deg, const int *cols, int nAtoms, int kMax, const int *trip, const int *ring)
bool tum::device::basalConditions (const int *deg, const int *cols, int nAtoms, int kMax, const int *b1, const int *b2)
int tum::device::firstRingThrough (const int *A, int nA, const int *B, int nB, const int *C, int nC, int skipA, int skipB)
int tum::device::ringsThrough (const int *A, int nA, const int *B, int nB, const int *C, int nC, int skipA, int skipB, int *out, int cap)
int tum::device::fetchAdd (int *p)
void tum::device::enumSixFrom (int i, const int *deg, const int *cols, int nAtoms, int kMax, int maxRings, int *nRings, int *ringAtoms, int *dropped)
 Enumerate hop-bound primitive six-rings whose lowest vertex is i.
void tum::device::invertOneRing (int r, const int *nRings, const int *ringAtoms, int nAtoms, int maxPer, int *throughCount, int *through)
void tum::device::sortThroughRow (int *row, int n)
void tum::device::emitBasalFrom (int i, const int *nRings, const int *ringAtoms, const int *deg, const int *cols, const int *throughCount, const int *through, int nAtoms, int kMax, int maxPer, int maxPairs, int *nPairs, int *pairs)
void tum::device::applyHcPair (int p, const int *nPairs, const int *pairs, const int *ringAtoms, const int *throughCount, const int *through, int nAtoms, int maxPer, int *hc)
void tum::device::ddcFrom (int i, const int *nRings, const int *ringAtoms, const int *throughCount, const int *through, const int *hc, int nAtoms, int maxPer, int *ddc)
void tum::device::atomIceFrom (int r, const int *nRings, const int *ringAtoms, const int *hc, const int *ddc, int nAtoms, int *atomHc, int *atomDdc)

Detailed Description

Device-safe TUM ice-score pieces: hop-bound primitive six-rings and claim-free HC/DDC affiliation.

No STL containers, no function-local statics. Host OpenMP and OpenMP target regions call the same functions. CHILL and q_lm are not here.

A six-cycle is primitive when the hop-bounded Franzblau test holds: every pair of non-adjacent members is at least as far through the graph as around the ring. On a 4-regular bond graph that is no chords (ring hops 2) and no common neighbour of opposite vertices (ring hops 3).

Definition in file tum_device.hpp.