OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-CompactHash commits / 88b029a

Fixing Hash define enums
88b029af0ae0cfd29a6ea12569810d12dfcd6ff1
by Bob Robey <brobey@lanl.gov> · 2015-10-25T04:04:51.000Z

Changed files (5) +83 -54

HashFactory/HashFactory.c +4 -4
……@@ -4360,10 +4360,10 @@ const char *HashFactory_source =
43604360"#define HASH_SEARCH_CODE_MISMATCH /**/ 1\n"
43614361"#define HASH_SEARCH_CODE_EMPTY /*****/ 2\n"
43624362"//\n"
4363"#define LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID /**/ 8\n"
4364"#define LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID /**/ 4\n"
4365"#define IDENTITY_SENTINEL_PERFECT_CL_HASH_ID /*******/ 2\n"
4366"#define IDENTITY_PERFECT_CL_HASH_ID /*******/ 1\n"
4363"#define IDENTITY_PERFECT_CL_HASH_ID /****************/ 16\n"
4364"#define IDENTITY_SENTINEL_PERFECT_CL_HASH_ID /*******/ 32\n"
4365"#define LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID /*********/ 64\n"
4366"#define LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID /******/ 128\n"
43674367"//\n"
43684368"#define HASH_BUCKET_STATUS_EMPTY /**/ -1\n"
43694369"#define HASH_BUCKET_STATUS_FULL /***/ -2\n"
HashFactory/HashFactory.cl +4 -4
……@@ -245,10 +245,10 @@ int intintHash_InsertSingleNoOverwrite(__global char *tableData, int key,
245245#define HASH_SEARCH_CODE_MISMATCH /**/ 1
246246#define HASH_SEARCH_CODE_EMPTY /*****/ 2
247247//
248#define LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID /**/ 8
249#define LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID /**/ 4
250#define IDENTITY_SENTINEL_PERFECT_CL_HASH_ID /*******/ 2
251#define IDENTITY_PERFECT_CL_HASH_ID /*******/ 1
248#define IDENTITY_PERFECT_CL_HASH_ID /****************/ 16
249#define IDENTITY_SENTINEL_PERFECT_CL_HASH_ID /*******/ 32
250#define LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID /*********/ 64
251#define LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID /******/ 128
252252//
253253#define HASH_BUCKET_STATUS_EMPTY /**/ -1
254254#define HASH_BUCKET_STATUS_FULL /***/ -2
HashFactory/HashFactory.clp +4 -4
……@@ -219,10 +219,10 @@ DELAY(#define HASH_SEARCH_CODE_MATCH /*****/ 0)
219219DELAY(#define HASH_SEARCH_CODE_MISMATCH /**/ 1)
220220DELAY(#define HASH_SEARCH_CODE_EMPTY /*****/ 2)
221221//
222DELAY(#define LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID /**/ 8)
223DELAY(#define LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID /**/ 4)
224DELAY(#define IDENTITY_SENTINEL_PERFECT_CL_HASH_ID /*******/ 2)
225DELAY(#define IDENTITY_PERFECT_CL_HASH_ID /*******/ 1)
222DELAY(#define IDENTITY_PERFECT_CL_HASH_ID /****************/ 16)
223DELAY(#define IDENTITY_SENTINEL_PERFECT_CL_HASH_ID /*******/ 32)
224DELAY(#define LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID /*********/ 64)
225DELAY(#define LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID /******/ 128)
226226//
227227DELAY(#define HASH_BUCKET_STATUS_EMPTY /**/ -1)
228228DELAY(#define HASH_BUCKET_STATUS_FULL /***/ -2)
HashFactory/HashFactory.h +36 -20
……@@ -37,8 +37,8 @@
3737 */
3838//
3939
40#ifndef HASH_H
41#define HASH_H
40#ifndef HASHFACTORY_H
41#define HASHFACTORY_H
4242//
4343#include <stdlib.h>
4444#include <stdio.h>
……@@ -116,38 +116,50 @@ int clFinish(int command_queue);
116116#define HASH_SEARCH_CODE_MISMATCH /**/ 1
117117#define HASH_SEARCH_CODE_EMPTY /*****/ 2
118118//
119#define HASH_NUM_HASHES /**/ 8
120#define HASH_NUM_CL_HASHES /**/ 4
119#define HASH_NUM_HASHES /********/ 12
120#define HASH_NUM_C_HASHES /*******/ 4
121#define HASH_NUM_CL_HASHES /******/ 4
122#define HASH_NUM_OPENMP_HASHES /**/ 4
121123//
122#define LCG_QUADRATIC_OPEN_COMPACT_HASH_ID 128
123#define LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID 8
124#define LCG_LINEAR_OPEN_COMPACT_HASH_ID 64
125#define LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID 4
126#define IDENTITY_SENTINEL_PERFECT_HASH_ID 32
127#define IDENTITY_SENTINEL_PERFECT_CL_HASH_ID 2
128#define IDENTITY_PERFECT_HASH_ID 16
129#define IDENTITY_PERFECT_CL_HASH_ID 1
124#define IDENTITY_PERFECT_HASH_ID /*******************/ 1
125#define IDENTITY_SENTINEL_PERFECT_HASH_ID /**********/ 2
126#define LCG_LINEAR_OPEN_COMPACT_HASH_ID /************/ 4
127#define LCG_QUADRATIC_OPEN_COMPACT_HASH_ID /*********/ 8
130128//
129#define IDENTITY_PERFECT_CL_HASH_ID /****************/ 16
130#define IDENTITY_SENTINEL_PERFECT_CL_HASH_ID /*******/ 32
131#define LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID /*********/ 64
132#define LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID /******/ 128
133//
134#define IDENTITY_PERFECT_OPENMP_HASH_ID /***********/ 256
135#define IDENTITY_SENTINEL_PERFECT_OPENMP_HASH_ID /***/ 512
136#define LCG_LINEAR_OPEN_COMPACT_OPENMP_HASH_ID /*****/ 1024
137#define LCG_QUADRATIC_OPEN_COMPACT_OPENMP_HASH_ID /**/ 2048
138//
139/**
140 * HASH_ALL_C_HASHES hash table types that run on the host.
141 */
142#define HASH_ALL_C_HASHES (IDENTITY_PERFECT_HASH_ID | IDENTITY_SENTINEL_PERFECT_HASH_ID | LCG_LINEAR_OPEN_COMPACT_HASH_ID | LCG_QUADRATIC_OPEN_COMPACT_HASH_ID)
131143/**
132144 * HASH_ALL_CL_HASHES hash table types that run in an OpenCL context.
133145 */
134146#define HASH_ALL_CL_HASHES (IDENTITY_PERFECT_CL_HASH_ID | IDENTITY_SENTINEL_PERFECT_CL_HASH_ID | LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID | LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID)
135147/**
136 * HASH_ALL_C_HASHES hash table types that run on the host.
148 * HASH_ALL_OPENMP_HASHES hash table types that run with OpenMP.
137149 */
138#define HASH_ALL_C_HASHES (IDENTITY_PERFECT_HASH_ID | IDENTITY_SENTINEL_PERFECT_HASH_ID | LCG_LINEAR_OPEN_COMPACT_HASH_ID | LCG_QUADRATIC_OPEN_COMPACT_HASH_ID)
150#define HASH_ALL_OPENMP_HASHES (IDENTITY_PERFECT_OPENMP_HASH_ID | IDENTITY_SENTINEL_PERFECT_OPENMP_HASH_ID | LCG_LINEAR_OPEN_COMPACT_OPENMP_HASH_ID | LCG_QUADRATIC_OPEN_COMPACT_OPENMP_HASH_ID)
139151/**
140152 * HASH_ALL_HASHES all hash table types.
141153 */
142#define HASH_ALL_HASHES (HASH_ALL_CL_HASHES | HASH_ALL_C_HASHES)
154#define HASH_ALL_HASHES (HASH_ALL_C_HASHES | HASH_ALL_CL_HASHES | HASH_ALL_OPENMP_HASHES)
143155/**
144156 * HASH_NOSENTINEL_PERFECT_HASHES perfect hash table types that do not use a sentinel value to mark empty buckets.
145157 */
146#define HASH_NOSENTINEL_PERFECT_HASHES (IDENTITY_PERFECT_HASH_ID | IDENTITY_PERFECT_CL_HASH_ID)
158#define HASH_NOSENTINEL_PERFECT_HASHES (IDENTITY_PERFECT_HASH_ID | IDENTITY_PERFECT_CL_HASH_ID | IDENTITY_PERFECT_OPENMP_HASH_ID)
147159/**
148160 * HASH_SENTINEL_PERFECT_HASHES perfect hash table types that use a sentinel value to mark empty buckets.
149161 */
150#define HASH_SENTINEL_PERFECT_HASHES (IDENTITY_SENTINEL_PERFECT_HASH_ID | IDENTITY_SENTINEL_PERFECT_CL_HASH_ID)
162#define HASH_SENTINEL_PERFECT_HASHES (IDENTITY_SENTINEL_PERFECT_HASH_ID | IDENTITY_SENTINEL_PERFECT_CL_HASH_ID | IDENTITY_SENTINEL_PERFECT_OPENMP_HASH_ID)
151163/**
152164 * HASH_PERFECT_HASHES perfect hash table types.
153165 */
……@@ -155,11 +167,11 @@ int clFinish(int command_queue);
155167/**
156168 * HASH_QUADRATIC_COMPACT_HASHES compact hash table types that use a quadratic probe sequence.
157169 */
158#define HASH_QUADRATIC_COMPACT_HASHES (LCG_QUADRATIC_OPEN_COMPACT_HASH_ID | LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID)
170#define HASH_QUADRATIC_COMPACT_HASHES (LCG_QUADRATIC_OPEN_COMPACT_HASH_ID | LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID | LCG_QUADRATIC_OPEN_COMPACT_OPENMP_HASH_ID)
159171/**
160172 * HASH_LINEAR_COMPACT_HASHES compact hash table types that use a linear probe sequence.
161173 */
162#define HASH_LINEAR_COMPACT_HASHES (LCG_LINEAR_OPEN_COMPACT_HASH_ID | LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID)
174#define HASH_LINEAR_COMPACT_HASHES (LCG_LINEAR_OPEN_COMPACT_HASH_ID | LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID | LCG_LINEAR_OPEN_COMPACT_OPENMP_HASH_ID)
163175/**
164176 * HASH_COMPACT_HASHES compact hash table types that use a linear probe sequence.
165177 */
……@@ -583,4 +595,8 @@ int intintLCGQuadraticOpenCompactCLHash_BufferInsertNoOverwrite(intintHash_Table
583595 cl_mem
584596 valuesBuffer);
585597
586#endif
598#ifdef __cplusplus
599}
600#endif /* __cplusplus */
601
602#endif /* HASHFACTORY_H */
HashFactory/HashFactory.hp +35 -22
……@@ -47,8 +47,8 @@
4747#define DELAY(x) x
4848#define STRINGIFY_(x) #x
4949#define STRINGIFY(x) STRINGIFY_(x)
50DELAY(#ifndef HASH_H)
51DELAY(#define HASH_H)
50DELAY(#ifndef HASHFACTORY_H)
51DELAY(#define HASHFACTORY_H)
5252//
5353DELAY(#include <stdlib.h>)
5454DELAY(#include <stdio.h>)
……@@ -118,38 +118,50 @@ DELAY(#define HASH_SEARCH_CODE_MATCH /*****/ 0)
118118DELAY(#define HASH_SEARCH_CODE_MISMATCH /**/ 1)
119119DELAY(#define HASH_SEARCH_CODE_EMPTY /*****/ 2)
120120//
121DELAY(#define HASH_NUM_HASHES /**/ 8)
122DELAY(#define HASH_NUM_CL_HASHES /**/ 4)
121DELAY(#define HASH_NUM_HASHES /********/ 12)
122DELAY(#define HASH_NUM_C_HASHES /*******/ 4)
123DELAY(#define HASH_NUM_CL_HASHES /******/ 4)
124DELAY(#define HASH_NUM_OPENMP_HASHES /**/ 4)
123125//
124DELAY(#define LCG_QUADRATIC_OPEN_COMPACT_HASH_ID 128)
125DELAY(#define LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID 8)
126DELAY(#define LCG_LINEAR_OPEN_COMPACT_HASH_ID 64)
127DELAY(#define LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID 4)
128DELAY(#define IDENTITY_SENTINEL_PERFECT_HASH_ID 32)
129DELAY(#define IDENTITY_SENTINEL_PERFECT_CL_HASH_ID 2)
130DELAY(#define IDENTITY_PERFECT_HASH_ID 16)
131DELAY(#define IDENTITY_PERFECT_CL_HASH_ID 1)
126DELAY(#define IDENTITY_PERFECT_HASH_ID /*******************/ 1)
127DELAY(#define IDENTITY_SENTINEL_PERFECT_HASH_ID /**********/ 2)
128DELAY(#define LCG_LINEAR_OPEN_COMPACT_HASH_ID /************/ 4)
129DELAY(#define LCG_QUADRATIC_OPEN_COMPACT_HASH_ID /*********/ 8)
132130//
131DELAY(#define IDENTITY_PERFECT_CL_HASH_ID /****************/ 16)
132DELAY(#define IDENTITY_SENTINEL_PERFECT_CL_HASH_ID /*******/ 32)
133DELAY(#define LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID /*********/ 64)
134DELAY(#define LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID /******/ 128)
135//
136DELAY(#define IDENTITY_PERFECT_OPENMP_HASH_ID /***********/ 256)
137DELAY(#define IDENTITY_SENTINEL_PERFECT_OPENMP_HASH_ID /***/ 512)
138DELAY(#define LCG_LINEAR_OPEN_COMPACT_OPENMP_HASH_ID /*****/ 1024)
139DELAY(#define LCG_QUADRATIC_OPEN_COMPACT_OPENMP_HASH_ID /**/ 2048)
140//
141/**
142 * HASH_ALL_C_HASHES hash table types that run on the host.
143 */
144DELAY(#define HASH_ALL_C_HASHES (IDENTITY_PERFECT_HASH_ID | IDENTITY_SENTINEL_PERFECT_HASH_ID | LCG_LINEAR_OPEN_COMPACT_HASH_ID | LCG_QUADRATIC_OPEN_COMPACT_HASH_ID))
133145/**
134146 * HASH_ALL_CL_HASHES hash table types that run in an OpenCL context.
135147 */
136148DELAY(#define HASH_ALL_CL_HASHES (IDENTITY_PERFECT_CL_HASH_ID | IDENTITY_SENTINEL_PERFECT_CL_HASH_ID | LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID | LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID))
137149/**
138 * HASH_ALL_C_HASHES hash table types that run on the host.
150 * HASH_ALL_OPENMP_HASHES hash table types that run with OpenMP.
139151 */
140DELAY(#define HASH_ALL_C_HASHES (IDENTITY_PERFECT_HASH_ID | IDENTITY_SENTINEL_PERFECT_HASH_ID | LCG_LINEAR_OPEN_COMPACT_HASH_ID | LCG_QUADRATIC_OPEN_COMPACT_HASH_ID))
152DELAY(#define HASH_ALL_OPENMP_HASHES (IDENTITY_PERFECT_OPENMP_HASH_ID | IDENTITY_SENTINEL_PERFECT_OPENMP_HASH_ID | LCG_LINEAR_OPEN_COMPACT_OPENMP_HASH_ID | LCG_QUADRATIC_OPEN_COMPACT_OPENMP_HASH_ID))
141153/**
142154 * HASH_ALL_HASHES all hash table types.
143155 */
144DELAY(#define HASH_ALL_HASHES (HASH_ALL_CL_HASHES | HASH_ALL_C_HASHES))
156DELAY(#define HASH_ALL_HASHES (HASH_ALL_C_HASHES | HASH_ALL_CL_HASHES | HASH_ALL_OPENMP_HASHES))
145157/**
146158 * HASH_NOSENTINEL_PERFECT_HASHES perfect hash table types that do not use a sentinel value to mark empty buckets.
147159 */
148DELAY(#define HASH_NOSENTINEL_PERFECT_HASHES (IDENTITY_PERFECT_HASH_ID | IDENTITY_PERFECT_CL_HASH_ID))
160DELAY(#define HASH_NOSENTINEL_PERFECT_HASHES (IDENTITY_PERFECT_HASH_ID | IDENTITY_PERFECT_CL_HASH_ID | IDENTITY_PERFECT_OPENMP_HASH_ID))
149161/**
150162 * HASH_SENTINEL_PERFECT_HASHES perfect hash table types that use a sentinel value to mark empty buckets.
151163 */
152DELAY(#define HASH_SENTINEL_PERFECT_HASHES (IDENTITY_SENTINEL_PERFECT_HASH_ID | IDENTITY_SENTINEL_PERFECT_CL_HASH_ID))
164DELAY(#define HASH_SENTINEL_PERFECT_HASHES (IDENTITY_SENTINEL_PERFECT_HASH_ID | IDENTITY_SENTINEL_PERFECT_CL_HASH_ID | IDENTITY_SENTINEL_PERFECT_OPENMP_HASH_ID))
153165/**
154166 * HASH_PERFECT_HASHES perfect hash table types.
155167 */
……@@ -157,11 +169,11 @@ DELAY(#define HASH_PERFECT_HASHES (HASH_NOSENTINEL_PERFECT_HASHES | HASH_SENTIN
157169/**
158170 * HASH_QUADRATIC_COMPACT_HASHES compact hash table types that use a quadratic probe sequence.
159171 */
160DELAY(#define HASH_QUADRATIC_COMPACT_HASHES (LCG_QUADRATIC_OPEN_COMPACT_HASH_ID | LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID))
172DELAY(#define HASH_QUADRATIC_COMPACT_HASHES (LCG_QUADRATIC_OPEN_COMPACT_HASH_ID | LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID | LCG_QUADRATIC_OPEN_COMPACT_OPENMP_HASH_ID))
161173/**
162174 * HASH_LINEAR_COMPACT_HASHES compact hash table types that use a linear probe sequence.
163175 */
164DELAY(#define HASH_LINEAR_COMPACT_HASHES (LCG_LINEAR_OPEN_COMPACT_HASH_ID | LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID))
176DELAY(#define HASH_LINEAR_COMPACT_HASHES (LCG_LINEAR_OPEN_COMPACT_HASH_ID | LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID | LCG_LINEAR_OPEN_COMPACT_OPENMP_HASH_ID))
165177/**
166178 * HASH_COMPACT_HASHES compact hash table types that use a linear probe sequence.
167179 */
……@@ -232,7 +244,8 @@ int largestProthPrimeUnder(int N);
232244
233245HASH_DECLARE(intint, int, int)
234246
235#ifdef __cplusplus
247DELAY(#ifdef __cplusplus)
236248}
237#endif
238DELAY(#endif)
249DELAY(#endif /* __cplusplus */)
250
251DELAY(#endif /* HASHFACTORY_H */)