Cloudy
Spectral Synthesis Code for Astrophysics
Loading...
Searching...
No Matches
vectorhash.cpp File Reference
#include <iostream>
#include <iomanip>
#include <stdint.h>
#include <cstdio>
#include <string>
#include <sstream>
#include <cstdlib>
Include dependency graph for vectorhash.cpp:

Macros

#define _POSIX_MAPPED_FILES   0
 
#define ROTL32(x, y)
 
#define VEC(X)
 
#define VEC(X)
 

Functions

uint32_t rotl32 (uint32_t x, int r)
 
void posix_memalign_free (void *p)
 
uint32_t getblock32 (uint32_t p)
 
uint32_t fmix32 (uint32_t h0, uint32_t h1=0xd86b048b)
 
void pad_buffer (const char *src, char *buf, size_t len)
 
void VectorHashFold (uint32_t *res, uint32_t *z[], size_t nbits)
 
static void VectorHashFinalize (size_t len, uint32_t *h1, uint32_t *h2, uint32_t *h3, uint32_t *h4, void *out)
 
static void stateinit (uint32_t st[], uint32_t &seed)
 
void VectorHashBody (const uint32_t *data, uint32_t h1[], uint32_t h2[], uint32_t h3[], uint32_t h4[])
 
void VectorHash (const void *key, size_t len, uint32_t seed, void *out)
 
string VHstream (FILE *io)
 
string VHstring (const string &s)
 

Variables

static const size_t vh_hash_width = 128
 
static const size_t vh_hwreg_width = 512
 
static const size_t vh_virtreg_width = ( 2*vh_hash_width > vh_hwreg_width ) ? 2*vh_hash_width : vh_hwreg_width
 
static const size_t vh_nstate = vh_hash_width/32
 
static const size_t vh_nint = vh_virtreg_width/32
 
static const size_t blocksize = 4*vh_nint*sizeof(uint32_t)
 

Macro Definition Documentation

◆ _POSIX_MAPPED_FILES

#define _POSIX_MAPPED_FILES   0

◆ ROTL32

#define ROTL32 ( x,
y )
Value:
rotl32(x,y)
uint32_t rotl32(uint32_t x, int r)
Definition vectorhash.cpp:82

Referenced by fmix32(), and VectorHashBody().

◆ VEC [1/2]

#define VEC ( X)
Value:
for( size_t j=0; j < vh_nint; j++ ) { X; }
static const size_t vh_nint
Definition vectorhash.cpp:68

Referenced by VectorHashBody(), and VectorHashFinalize().

◆ VEC [2/2]

#define VEC ( X)
Value:
for( size_t j=0; j < vh_nint; j++ ) { X; }

Function Documentation

◆ fmix32()

uint32_t fmix32 ( uint32_t h0,
uint32_t h1 = 0xd86b048b )
inline

References ROTL32.

Referenced by stateinit(), and VectorHashFinalize().

◆ getblock32()

uint32_t getblock32 ( uint32_t p)
inline

Referenced by VectorHashBody().

◆ pad_buffer()

void pad_buffer ( const char * src,
char * buf,
size_t len )
inline

References blocksize.

Referenced by VectorHash().

◆ posix_memalign_free()

void posix_memalign_free ( void * p)
inline

Referenced by VHstream().

◆ rotl32()

uint32_t rotl32 ( uint32_t x,
int r )
inline

◆ stateinit()

static void stateinit ( uint32_t st[],
uint32_t & seed )
static

References fmix32(), and vh_nint.

Referenced by VectorHash().

Here is the call graph for this function:

◆ VectorHash()

void VectorHash ( const void * key,
size_t len,
uint32_t seed,
void * out )

References blocksize, h2, pad_buffer(), stateinit(), VectorHashBody(), VectorHashFinalize(), and vh_nint.

Referenced by VHstream(), and VHstring().

Here is the call graph for this function:

◆ VectorHashBody()

void VectorHashBody ( const uint32_t * data,
uint32_t h1[],
uint32_t h2[],
uint32_t h3[],
uint32_t h4[] )
inline

References getblock32(), h2, ROTL32, VEC, and vh_nint.

Referenced by VectorHash().

Here is the call graph for this function:

◆ VectorHashFinalize()

static void VectorHashFinalize ( size_t len,
uint32_t * h1,
uint32_t * h2,
uint32_t * h3,
uint32_t * h4,
void * out )
static

References fmix32(), h2, VEC, VectorHashFold(), vh_hash_width, vh_nint, and vh_nstate.

Referenced by VectorHash().

Here is the call graph for this function:

◆ VectorHashFold()

void VectorHashFold ( uint32_t * res,
uint32_t * z[],
size_t nbits )
inline

References vh_virtreg_width.

Referenced by VectorHashFinalize().

◆ VHstream()

string VHstream ( FILE * io)

References NULL, posix_memalign_free(), VectorHash(), vh_hwreg_width, and vh_nstate.

Referenced by t_cpu_i::check_data, and main().

Here is the call graph for this function:

◆ VHstring()

string VHstring ( const string & s)

References VectorHash(), and vh_nstate.

Here is the call graph for this function:

Variable Documentation

◆ blocksize

const size_t blocksize = 4*vh_nint*sizeof(uint32_t)
static

Referenced by pad_buffer(), and VectorHash().

◆ vh_hash_width

const size_t vh_hash_width = 128
static

Referenced by VectorHashFinalize().

◆ vh_hwreg_width

const size_t vh_hwreg_width = 512
static

Referenced by VHstream().

◆ vh_nint

const size_t vh_nint = vh_virtreg_width/32
static

◆ vh_nstate

const size_t vh_nstate = vh_hash_width/32
static

◆ vh_virtreg_width

const size_t vh_virtreg_width = ( 2*vh_hash_width > vh_hwreg_width ) ? 2*vh_hash_width : vh_hwreg_width
static

Referenced by VectorHashFold().