OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-CompactHash commits / d76a1f5

Merging in changes from other version of hash library
d76a1f559f9d68d2b3d3c39c04a4feb4f535154e
by brobey <brobey@lanl.gov> · 2015-11-06T23:41:24.000Z

Changed files (6) +321 -4

HashFactory/HashFactory.c +255 -0
……@@ -579,6 +579,7 @@ struct intintHash_Table_ {
579579 char *tableData;
580580 cl_mem tableDataBuffer;
581581 int (*destroyFunc) (intintHash_Table *);
582 int (*setupFunc) (intintHash_Table *);
582583 int (*emptyFunc) (intintHash_Table *);
583584 int (*queryFunc) (intintHash_Table *, size_t, int *, int *);
584585 int (*querySingleFunc) (intintHash_Table *, int, int *);
……@@ -874,6 +875,10 @@ intintHash_Table *intintHash_CreateTable(intintHash_Factory * factory,
874875 numEntries, loadFactor);
875876 return table;
876877}
878int intintHash_SetupTable(intintHash_Table * table) {
879 table->setupFunc(table);
880 return (0);
881}
877882int intintHash_EmptyTable(intintHash_Table * table) {
878883 table->emptyFunc(table);
879884 return (0);
……@@ -952,6 +957,7 @@ intintHash_Table *intintIdentityPerfectHash_CreateTable(intintHash_Factory *
952957 intintHash_Table *table =
953958 (intintHash_Table *) malloc(sizeof(intintHash_Table));
954959 table->destroyFunc = &intintIdentityPerfectHash_DestroyTable;
960 table->setupFunc = &intintIdentityPerfectHash_SetupTable;
955961 table->emptyFunc = &intintIdentityPerfectHash_EmptyTable;
956962 table->queryFunc = &intintIdentityPerfectHash_Query;
957963 table->querySingleFunc = &intintIdentityPerfectHash_QuerySingle;
……@@ -995,6 +1001,23 @@ int intintIdentityPerfectHash_DestroyTable(intintHash_Table * table) {
9951001 free(table);
9961002 return exitCode;
9971003}
1004int intintIdentityPerfectHash_SetupTable(intintHash_Table * table) {
1005 int exitCode = 0;
1006 intintIdentityPerfectHash_Bucket *buckets =
1007 (intintIdentityPerfectHash_Bucket *) & table->
1008 tableData[sizeof(intintIdentityPerfectHash_TableData)];
1009 if (intintHash_GetTableType(table) & ~HASH_SENTINEL_PERFECT_HASHES) {
1010 int index;
1011 for (index = 0;
1012 index <
1013 ((intintIdentityPerfectHash_TableData *) table->
1014 tableData)->numBuckets; index++) {
1015 buckets[index].key = HASH_BUCKET_STATUS_EMPTY;
1016 }
1017 }
1018 exitCode = HASH_EXIT_CODE_NORMAL;
1019 return exitCode;
1020}
9981021int intintIdentityPerfectHash_EmptyTable(intintHash_Table * table) {
9991022 int exitCode = 0;
10001023 intintIdentityPerfectHash_Bucket *buckets =
……@@ -1286,6 +1309,7 @@ intintHash_Table *intintIdentityPerfectCLHash_CreateTable(intintHash_Factory *
12861309 intintHash_Table *table =
12871310 (intintHash_Table *) malloc(sizeof(intintHash_Table));
12881311 table->destroyFunc = &intintIdentityPerfectCLHash_DestroyTable;
1312 table->setupFunc = &intintIdentityPerfectCLHash_SetupTable;
12891313 table->emptyFunc = &intintIdentityPerfectCLHash_EmptyTable;
12901314 table->queryFunc = &intintIdentityPerfectCLHash_Query;
12911315 table->querySingleFunc = &intintIdentityPerfectCLHash_QuerySingle;
……@@ -1427,6 +1451,30 @@ int intintIdentityPerfectCLHash_DestroyTable(intintHash_Table * table) {
14271451 free(table);
14281452 return exitCode;
14291453}
1454int intintIdentityPerfectCLHash_SetupTable(intintHash_Table * table) {
1455 int exitCode = 0;
1456 cl_int err;
1457 err =
1458 clSetKernelArg(table->emptyKernel, 0, sizeof(cl_mem),
1459 &table->tableDataBuffer);
1460 CLHash_Utilities_HandleError(err,
1461 "intintIdentityPerfectCLHash_EmptyTable",
1462 "clSetKernelArg");
1463 const size_t groupWorkSize =
1464 roundUpToNearest(((intintIdentityPerfectHash_TableData *) table->
1465 tableData)->numBuckets,
1466 table->emptyKernelLocalWorkSize);
1467 err =
1468 clEnqueueNDRangeKernel(table->queue, table->emptyKernel, 1, 0,
1469 &groupWorkSize,
1470 (const size_t *)&table->
1471 emptyKernelLocalWorkSize, 0, NULL, NULL);
1472 CLHash_Utilities_HandleError(err,
1473 "intintIdentityPerfectCLHash_EmptyTable",
1474 "clEnqueueNDRangeKernel");
1475 exitCode = HASH_EXIT_CODE_NORMAL;;
1476 return exitCode;
1477}
14301478int intintIdentityPerfectCLHash_EmptyTable(intintHash_Table * table) {
14311479 int exitCode = 0;
14321480 cl_int err;
……@@ -1681,6 +1729,7 @@ intintHash_Table *intintIdentityPerfectOpenMPHash_CreateTable(intintHash_Factory
16811729 intintHash_Table *table =
16821730 (intintHash_Table *) malloc(sizeof(intintHash_Table));
16831731 table->destroyFunc = &intintIdentityPerfectOpenMPHash_DestroyTable;
1732 table->setupFunc = &intintIdentityPerfectOpenMPHash_SetupTable;
16841733 table->emptyFunc = &intintIdentityPerfectOpenMPHash_EmptyTable;
16851734 table->queryFunc = &intintIdentityPerfectOpenMPHash_Query;
16861735 table->querySingleFunc = &intintIdentityPerfectOpenMPHash_QuerySingle;
……@@ -1725,6 +1774,23 @@ int intintIdentityPerfectOpenMPHash_DestroyTable(intintHash_Table * table) {
17251774 free(table);
17261775 return exitCode;
17271776}
1777int intintIdentityPerfectOpenMPHash_SetupTable(intintHash_Table * table) {
1778 int exitCode = 0;
1779 intintIdentityPerfectOpenMPHash_Bucket *buckets =
1780 (intintIdentityPerfectOpenMPHash_Bucket *) & table->
1781 tableData[sizeof(intintIdentityPerfectOpenMPHash_TableData)];
1782 if (intintHash_GetTableType(table) & ~HASH_SENTINEL_PERFECT_HASHES) {
1783 int index;
1784 for (index = 0;
1785 index <
1786 ((intintIdentityPerfectOpenMPHash_TableData *) table->
1787 tableData)->numBuckets; index++) {
1788 buckets[index].key = HASH_BUCKET_STATUS_EMPTY;
1789 }
1790 }
1791 exitCode = HASH_EXIT_CODE_NORMAL;
1792 return exitCode;
1793}
17281794int intintIdentityPerfectOpenMPHash_EmptyTable(intintHash_Table * table) {
17291795 int exitCode = 0;
17301796 intintIdentityPerfectOpenMPHash_Bucket *buckets =
……@@ -2026,6 +2092,7 @@ intintHash_Table
20262092 intintHash_Table *table =
20272093 (intintHash_Table *) malloc(sizeof(intintHash_Table));
20282094 table->destroyFunc = &intintIdentitySentinelPerfectHash_DestroyTable;
2095 table->setupFunc = &intintIdentitySentinelPerfectHash_SetupTable;
20292096 table->emptyFunc = &intintIdentitySentinelPerfectHash_EmptyTable;
20302097 table->queryFunc = &intintIdentitySentinelPerfectHash_Query;
20312098 table->querySingleFunc = &intintIdentitySentinelPerfectHash_QuerySingle;
……@@ -2073,6 +2140,25 @@ int intintIdentitySentinelPerfectHash_DestroyTable(intintHash_Table * table) {
20732140 free(table);
20742141 return exitCode;
20752142}
2143int intintIdentitySentinelPerfectHash_SetupTable(intintHash_Table * table) {
2144 int exitCode = 0;
2145 intintIdentitySentinelPerfectHash_Bucket *buckets =
2146 (intintIdentitySentinelPerfectHash_Bucket *) & table->
2147 tableData[sizeof(intintIdentitySentinelPerfectHash_TableData)];
2148 if (intintHash_GetTableType(table) & ~HASH_SENTINEL_PERFECT_HASHES) {
2149 int index;
2150 for (index = 0;
2151 index <
2152 ((intintIdentitySentinelPerfectHash_TableData *) table->
2153 tableData)->numBuckets; index++) {
2154 buckets[index].value =
2155 ((intintIdentitySentinelPerfectHash_TableData *)
2156 table->tableData)->emptyValue;
2157 }
2158 }
2159 exitCode = HASH_EXIT_CODE_NORMAL;
2160 return exitCode;
2161}
20762162int intintIdentitySentinelPerfectHash_EmptyTable(intintHash_Table * table) {
20772163 int exitCode = 0;
20782164 intintIdentitySentinelPerfectHash_Bucket *buckets =
……@@ -2349,6 +2435,7 @@ intintHash_Table
23492435 intintHash_Table *table =
23502436 (intintHash_Table *) malloc(sizeof(intintHash_Table));
23512437 table->destroyFunc = &intintIdentitySentinelPerfectCLHash_DestroyTable;
2438 table->setupFunc = &intintIdentitySentinelPerfectCLHash_SetupTable;
23522439 table->emptyFunc = &intintIdentitySentinelPerfectCLHash_EmptyTable;
23532440 table->queryFunc = &intintIdentitySentinelPerfectCLHash_Query;
23542441 table->querySingleFunc =
……@@ -2499,6 +2586,30 @@ int intintIdentitySentinelPerfectCLHash_DestroyTable(intintHash_Table * table) {
24992586 free(table);
25002587 return exitCode;
25012588}
2589int intintIdentitySentinelPerfectCLHash_SetupTable(intintHash_Table * table) {
2590 int exitCode = 0;
2591 cl_int err;
2592 err =
2593 clSetKernelArg(table->emptyKernel, 0, sizeof(cl_mem),
2594 &table->tableDataBuffer);
2595 CLHash_Utilities_HandleError(err,
2596 "intintIdentitySentinelPerfectCLHash_EmptyTable",
2597 "clSetKernelArg");
2598 const size_t groupWorkSize =
2599 roundUpToNearest(((intintIdentitySentinelPerfectHash_TableData *)
2600 table->tableData)->numBuckets,
2601 table->emptyKernelLocalWorkSize);
2602 err =
2603 clEnqueueNDRangeKernel(table->queue, table->emptyKernel, 1, 0,
2604 &groupWorkSize,
2605 (const size_t *)&table->
2606 emptyKernelLocalWorkSize, 0, NULL, NULL);
2607 CLHash_Utilities_HandleError(err,
2608 "intintIdentitySentinelPerfectCLHash_EmptyTable",
2609 "clEnqueueNDRangeKernel");
2610 exitCode = HASH_EXIT_CODE_NORMAL;;
2611 return exitCode;
2612}
25022613int intintIdentitySentinelPerfectCLHash_EmptyTable(intintHash_Table * table) {
25032614 int exitCode = 0;
25042615 cl_int err;
……@@ -2772,6 +2883,7 @@ intintHash_Table
27722883 (intintHash_Table *) malloc(sizeof(intintHash_Table));
27732884 table->destroyFunc =
27742885 &intintIdentitySentinelPerfectOpenMPHash_DestroyTable;
2886 table->setupFunc = &intintIdentitySentinelPerfectOpenMPHash_SetupTable;
27752887 table->emptyFunc = &intintIdentitySentinelPerfectOpenMPHash_EmptyTable;
27762888 table->queryFunc = &intintIdentitySentinelPerfectOpenMPHash_Query;
27772889 table->querySingleFunc =
……@@ -2825,6 +2937,26 @@ int intintIdentitySentinelPerfectOpenMPHash_DestroyTable(intintHash_Table *
28252937 free(table);
28262938 return exitCode;
28272939}
2940int intintIdentitySentinelPerfectOpenMPHash_SetupTable(intintHash_Table * table) {
2941 int exitCode = 0;
2942 intintIdentitySentinelPerfectOpenMPHash_Bucket *buckets =
2943 (intintIdentitySentinelPerfectOpenMPHash_Bucket *) & table->
2944 tableData[sizeof
2945 (intintIdentitySentinelPerfectOpenMPHash_TableData)];
2946 if (intintHash_GetTableType(table) & ~HASH_SENTINEL_PERFECT_HASHES) {
2947 int index;
2948 for (index = 0;
2949 index <
2950 ((intintIdentitySentinelPerfectOpenMPHash_TableData *)
2951 table->tableData)->numBuckets; index++) {
2952 buckets[index].value =
2953 ((intintIdentitySentinelPerfectOpenMPHash_TableData
2954 *) table->tableData)->emptyValue;
2955 }
2956 }
2957 exitCode = HASH_EXIT_CODE_NORMAL;
2958 return exitCode;
2959}
28282960int intintIdentitySentinelPerfectOpenMPHash_EmptyTable(intintHash_Table * table) {
28292961 int exitCode = 0;
28302962 intintIdentitySentinelPerfectOpenMPHash_Bucket *buckets =
……@@ -3123,6 +3255,7 @@ intintHash_Table *intintLCGLinearOpenCompactHash_CreateTable(intintHash_Factory
31233255 intintHash_Table *table =
31243256 (intintHash_Table *) malloc(sizeof(intintHash_Table));
31253257 table->destroyFunc = &intintLCGLinearOpenCompactHash_DestroyTable;
3258 table->setupFunc = &intintLCGLinearOpenCompactHash_SetupTable;
31263259 table->emptyFunc = &intintLCGLinearOpenCompactHash_EmptyTable;
31273260 table->queryFunc = &intintLCGLinearOpenCompactHash_Query;
31283261 table->querySingleFunc = &intintLCGLinearOpenCompactHash_QuerySingle;
……@@ -3177,6 +3310,23 @@ int intintLCGLinearOpenCompactHash_DestroyTable(intintHash_Table * table) {
31773310 free(table);
31783311 return exitCode;
31793312}
3313int intintLCGLinearOpenCompactHash_SetupTable(intintHash_Table * table) {
3314 int exitCode = 0;
3315 intintLCGLinearOpenCompactHash_Bucket *buckets =
3316 (intintLCGLinearOpenCompactHash_Bucket *) & table->
3317 tableData[sizeof(intintLCGLinearOpenCompactHash_TableData)];
3318 if (intintHash_GetTableType(table) & ~HASH_SENTINEL_PERFECT_HASHES) {
3319 int index;
3320 for (index = 0;
3321 index <
3322 ((intintLCGLinearOpenCompactHash_TableData *) table->
3323 tableData)->numBuckets; index++) {
3324 buckets[index].key = HASH_BUCKET_STATUS_EMPTY;
3325 }
3326 }
3327 exitCode = HASH_EXIT_CODE_NORMAL;
3328 return exitCode;
3329}
31803330int intintLCGLinearOpenCompactHash_EmptyTable(intintHash_Table * table) {
31813331 int exitCode = 0;
31823332 intintLCGLinearOpenCompactHash_Bucket *buckets =
……@@ -3556,6 +3706,7 @@ intintHash_Table
35563706 intintHash_Table *table =
35573707 (intintHash_Table *) malloc(sizeof(intintHash_Table));
35583708 table->destroyFunc = &intintLCGLinearOpenCompactCLHash_DestroyTable;
3709 table->setupFunc = &intintLCGLinearOpenCompactCLHash_SetupTable;
35593710 table->emptyFunc = &intintLCGLinearOpenCompactCLHash_EmptyTable;
35603711 table->queryFunc = &intintLCGLinearOpenCompactCLHash_Query;
35613712 table->querySingleFunc = &intintLCGLinearOpenCompactCLHash_QuerySingle;
……@@ -3710,6 +3861,30 @@ int intintLCGLinearOpenCompactCLHash_DestroyTable(intintHash_Table * table) {
37103861 free(table);
37113862 return exitCode;
37123863}
3864int intintLCGLinearOpenCompactCLHash_SetupTable(intintHash_Table * table) {
3865 int exitCode = 0;
3866 cl_int err;
3867 err =
3868 clSetKernelArg(table->emptyKernel, 0, sizeof(cl_mem),
3869 &table->tableDataBuffer);
3870 CLHash_Utilities_HandleError(err,
3871 "intintLCGLinearOpenCompactCLHash_EmptyTable",
3872 "clSetKernelArg");
3873 const size_t groupWorkSize =
3874 roundUpToNearest(((intintLCGLinearOpenCompactHash_TableData *)
3875 table->tableData)->numBuckets,
3876 table->emptyKernelLocalWorkSize);
3877 err =
3878 clEnqueueNDRangeKernel(table->queue, table->emptyKernel, 1, 0,
3879 &groupWorkSize,
3880 (const size_t *)&table->
3881 emptyKernelLocalWorkSize, 0, NULL, NULL);
3882 CLHash_Utilities_HandleError(err,
3883 "intintLCGLinearOpenCompactCLHash_EmptyTable",
3884 "clEnqueueNDRangeKernel");
3885 exitCode = HASH_EXIT_CODE_NORMAL;;
3886 return exitCode;
3887}
37133888int intintLCGLinearOpenCompactCLHash_EmptyTable(intintHash_Table * table) {
37143889 int exitCode = 0;
37153890 cl_int err;
……@@ -3973,6 +4148,7 @@ intintHash_Table
39734148 intintHash_Table *table =
39744149 (intintHash_Table *) malloc(sizeof(intintHash_Table));
39754150 table->destroyFunc = &intintLCGLinearOpenCompactOpenMPHash_DestroyTable;
4151 table->setupFunc = &intintLCGLinearOpenCompactOpenMPHash_SetupTable;
39764152 table->emptyFunc = &intintLCGLinearOpenCompactOpenMPHash_EmptyTable;
39774153 table->queryFunc = &intintLCGLinearOpenCompactOpenMPHash_Query;
39784154 table->querySingleFunc =
……@@ -4032,6 +4208,23 @@ int intintLCGLinearOpenCompactOpenMPHash_DestroyTable(intintHash_Table * table)
40324208 free(table);
40334209 return exitCode;
40344210}
4211int intintLCGLinearOpenCompactOpenMPHash_SetupTable(intintHash_Table * table) {
4212 int exitCode = 0;
4213 intintLCGLinearOpenCompactOpenMPHash_Bucket *buckets =
4214 (intintLCGLinearOpenCompactOpenMPHash_Bucket *) & table->
4215 tableData[sizeof(intintLCGLinearOpenCompactOpenMPHash_TableData)];
4216 if (intintHash_GetTableType(table) & ~HASH_SENTINEL_PERFECT_HASHES) {
4217 int index;
4218 for (index = 0;
4219 index <
4220 ((intintLCGLinearOpenCompactOpenMPHash_TableData *) table->
4221 tableData)->numBuckets; index++) {
4222 buckets[index].key = HASH_BUCKET_STATUS_EMPTY;
4223 }
4224 }
4225 exitCode = HASH_EXIT_CODE_NORMAL;
4226 return exitCode;
4227}
40354228int intintLCGLinearOpenCompactOpenMPHash_EmptyTable(intintHash_Table * table) {
40364229 int exitCode = 0;
40374230 intintLCGLinearOpenCompactOpenMPHash_Bucket *buckets =
……@@ -4425,6 +4618,7 @@ intintHash_Table
44254618 intintHash_Table *table =
44264619 (intintHash_Table *) malloc(sizeof(intintHash_Table));
44274620 table->destroyFunc = &intintLCGQuadraticOpenCompactHash_DestroyTable;
4621 table->setupFunc = &intintLCGQuadraticOpenCompactHash_SetupTable;
44284622 table->emptyFunc = &intintLCGQuadraticOpenCompactHash_EmptyTable;
44294623 table->queryFunc = &intintLCGQuadraticOpenCompactHash_Query;
44304624 table->querySingleFunc = &intintLCGQuadraticOpenCompactHash_QuerySingle;
……@@ -4484,6 +4678,23 @@ int intintLCGQuadraticOpenCompactHash_DestroyTable(intintHash_Table * table) {
44844678 free(table);
44854679 return exitCode;
44864680}
4681int intintLCGQuadraticOpenCompactHash_SetupTable(intintHash_Table * table) {
4682 int exitCode = 0;
4683 intintLCGQuadraticOpenCompactHash_Bucket *buckets =
4684 (intintLCGQuadraticOpenCompactHash_Bucket *) & table->
4685 tableData[sizeof(intintLCGQuadraticOpenCompactHash_TableData)];
4686 if (intintHash_GetTableType(table) & ~HASH_SENTINEL_PERFECT_HASHES) {
4687 int index;
4688 for (index = 0;
4689 index <
4690 ((intintLCGQuadraticOpenCompactHash_TableData *) table->
4691 tableData)->numBuckets; index++) {
4692 buckets[index].key = HASH_BUCKET_STATUS_EMPTY;
4693 }
4694 }
4695 exitCode = HASH_EXIT_CODE_NORMAL;
4696 return exitCode;
4697}
44874698int intintLCGQuadraticOpenCompactHash_EmptyTable(intintHash_Table * table) {
44884699 int exitCode = 0;
44894700 intintLCGQuadraticOpenCompactHash_Bucket *buckets =
……@@ -4884,6 +5095,7 @@ intintHash_Table
48845095 intintHash_Table *table =
48855096 (intintHash_Table *) malloc(sizeof(intintHash_Table));
48865097 table->destroyFunc = &intintLCGQuadraticOpenCompactCLHash_DestroyTable;
5098 table->setupFunc = &intintLCGQuadraticOpenCompactCLHash_SetupTable;
48875099 table->emptyFunc = &intintLCGQuadraticOpenCompactCLHash_EmptyTable;
48885100 table->queryFunc = &intintLCGQuadraticOpenCompactCLHash_Query;
48895101 table->querySingleFunc =
……@@ -5045,6 +5257,30 @@ int intintLCGQuadraticOpenCompactCLHash_DestroyTable(intintHash_Table * table) {
50455257 free(table);
50465258 return exitCode;
50475259}
5260int intintLCGQuadraticOpenCompactCLHash_SetupTable(intintHash_Table * table) {
5261 int exitCode = 0;
5262 cl_int err;
5263 err =
5264 clSetKernelArg(table->emptyKernel, 0, sizeof(cl_mem),
5265 &table->tableDataBuffer);
5266 CLHash_Utilities_HandleError(err,
5267 "intintLCGQuadraticOpenCompactCLHash_EmptyTable",
5268 "clSetKernelArg");
5269 const size_t groupWorkSize =
5270 roundUpToNearest(((intintLCGQuadraticOpenCompactHash_TableData *)
5271 table->tableData)->numBuckets,
5272 table->emptyKernelLocalWorkSize);
5273 err =
5274 clEnqueueNDRangeKernel(table->queue, table->emptyKernel, 1, 0,
5275 &groupWorkSize,
5276 (const size_t *)&table->
5277 emptyKernelLocalWorkSize, 0, NULL, NULL);
5278 CLHash_Utilities_HandleError(err,
5279 "intintLCGQuadraticOpenCompactCLHash_EmptyTable",
5280 "clEnqueueNDRangeKernel");
5281 exitCode = HASH_EXIT_CODE_NORMAL;;
5282 return exitCode;
5283}
50485284int intintLCGQuadraticOpenCompactCLHash_EmptyTable(intintHash_Table * table) {
50495285 int exitCode = 0;
50505286 cl_int err;
……@@ -5318,6 +5554,7 @@ intintHash_Table
53185554 (intintHash_Table *) malloc(sizeof(intintHash_Table));
53195555 table->destroyFunc =
53205556 &intintLCGQuadraticOpenCompactOpenMPHash_DestroyTable;
5557 table->setupFunc = &intintLCGQuadraticOpenCompactOpenMPHash_SetupTable;
53215558 table->emptyFunc = &intintLCGQuadraticOpenCompactOpenMPHash_EmptyTable;
53225559 table->queryFunc = &intintLCGQuadraticOpenCompactOpenMPHash_Query;
53235560 table->querySingleFunc =
……@@ -5382,6 +5619,24 @@ int intintLCGQuadraticOpenCompactOpenMPHash_DestroyTable(intintHash_Table *
53825619 free(table);
53835620 return exitCode;
53845621}
5622int intintLCGQuadraticOpenCompactOpenMPHash_SetupTable(intintHash_Table * table) {
5623 int exitCode = 0;
5624 intintLCGQuadraticOpenCompactOpenMPHash_Bucket *buckets =
5625 (intintLCGQuadraticOpenCompactOpenMPHash_Bucket *) & table->
5626 tableData[sizeof
5627 (intintLCGQuadraticOpenCompactOpenMPHash_TableData)];
5628 if (intintHash_GetTableType(table) & ~HASH_SENTINEL_PERFECT_HASHES) {
5629 int index;
5630 for (index = 0;
5631 index <
5632 ((intintLCGQuadraticOpenCompactOpenMPHash_TableData *)
5633 table->tableData)->numBuckets; index++) {
5634 buckets[index].key = HASH_BUCKET_STATUS_EMPTY;
5635 }
5636 }
5637 exitCode = HASH_EXIT_CODE_NORMAL;
5638 return exitCode;
5639}
53855640int intintLCGQuadraticOpenCompactOpenMPHash_EmptyTable(intintHash_Table * table) {
53865641 int exitCode = 0;
53875642 intintLCGQuadraticOpenCompactOpenMPHash_Bucket *buckets =
HashFactory/HashFactory.cm +6 -0
……@@ -40,6 +40,7 @@
4040 char* tableData;\
4141 cl_mem tableDataBuffer;\
4242 int (*destroyFunc)(NAME##Hash_Table*);\
43 int (*setupFunc)(NAME##Hash_Table*);\
4344 int (*emptyFunc)(NAME##Hash_Table*);\
4445 int (*queryFunc)(NAME##Hash_Table*, size_t, KEY_TYPE*, VALUE_TYPE*);\
4546 int (*querySingleFunc)(NAME##Hash_Table*, KEY_TYPE, VALUE_TYPE*);\
……@@ -220,6 +221,11 @@
220221 return table;\
221222 }\
222223 \
224 int NAME##Hash_SetupTable(NAME##Hash_Table *table){\
225 table->setupFunc(table);\
226 return(0);\
227 }\
228 \
223229 int NAME##Hash_EmptyTable(NAME##Hash_Table *table){\
224230 table->emptyFunc(table);\
225231 return(0);\
HashFactory/HashFactory.h +22 -0
……@@ -272,6 +272,7 @@ extern "C" {
272272 int hashTypes, size_t keyRange,
273273 size_t numEntries,
274274 float loadFactor);
275 int intintHash_SetupTable(intintHash_Table * table);
275276 int intintHash_EmptyTable(intintHash_Table * table);
276277 int intintHash_DestroyTable(intintHash_Table * table);
277278 cl_mem intintHash_GetTableDataBuffer(intintHash_Table * table);
……@@ -328,6 +329,7 @@ extern "C" {
328329 va_list args);
329330 int intintIdentityPerfectHash_DestroyTable(intintHash_Table * table);
330331 char *intintIdentityPerfectHash_Report(intintHash_Table * table);
332 int intintIdentityPerfectHash_SetupTable(intintHash_Table * table);
331333 int intintIdentityPerfectHash_EmptyTable(intintHash_Table * table);
332334 int intintIdentityPerfectHash_Query(intintHash_Table * table,
333335 size_t numKeys, int *keys,
……@@ -360,6 +362,7 @@ extern "C" {
360362 va_list args);
361363 int intintIdentityPerfectCLHash_DestroyTable(intintHash_Table * table);
362364 char *intintIdentityPerfectCLHash_Report(intintHash_Table * table);
365 int intintIdentityPerfectCLHash_SetupTable(intintHash_Table * table);
363366 int intintIdentityPerfectCLHash_EmptyTable(intintHash_Table * table);
364367 int intintIdentityPerfectCLHash_Query(intintHash_Table * table,
365368 size_t numKeys, int *keys,
……@@ -413,6 +416,8 @@ extern "C" {
413416 int intintIdentityPerfectOpenMPHash_DestroyTable(intintHash_Table *
414417 table);
415418 char *intintIdentityPerfectOpenMPHash_Report(intintHash_Table * table);
419 int intintIdentityPerfectOpenMPHash_SetupTable(intintHash_Table *
420 table);
416421 int intintIdentityPerfectOpenMPHash_EmptyTable(intintHash_Table *
417422 table);
418423 int intintIdentityPerfectOpenMPHash_Query(intintHash_Table * table,
……@@ -466,6 +471,8 @@ extern "C" {
466471 table);
467472 char *intintIdentitySentinelPerfectHash_Report(intintHash_Table *
468473 table);
474 int intintIdentitySentinelPerfectHash_SetupTable(intintHash_Table *
475 table);
469476 int intintIdentitySentinelPerfectHash_EmptyTable(intintHash_Table *
470477 table);
471478 int intintIdentitySentinelPerfectHash_Query(intintHash_Table * table,
……@@ -506,6 +513,8 @@ extern "C" {
506513 table);
507514 char *intintIdentitySentinelPerfectCLHash_Report(intintHash_Table *
508515 table);
516 int intintIdentitySentinelPerfectCLHash_SetupTable(intintHash_Table *
517 table);
509518 int intintIdentitySentinelPerfectCLHash_EmptyTable(intintHash_Table *
510519 table);
511520 int intintIdentitySentinelPerfectCLHash_Query(intintHash_Table * table,
……@@ -555,6 +564,8 @@ extern "C" {
555564 (intintHash_Table * table);
556565 char *intintIdentitySentinelPerfectOpenMPHash_Report(intintHash_Table *
557566 table);
567 int intintIdentitySentinelPerfectOpenMPHash_SetupTable(intintHash_Table
568 * table);
558569 int intintIdentitySentinelPerfectOpenMPHash_EmptyTable(intintHash_Table
559570 * table);
560571 int intintIdentitySentinelPerfectOpenMPHash_Query(intintHash_Table *
……@@ -608,6 +619,7 @@ extern "C" {
608619 int intintLCGLinearOpenCompactHash_DestroyTable(intintHash_Table *
609620 table);
610621 char *intintLCGLinearOpenCompactHash_Report(intintHash_Table * table);
622 int intintLCGLinearOpenCompactHash_SetupTable(intintHash_Table * table);
611623 int intintLCGLinearOpenCompactHash_EmptyTable(intintHash_Table * table);
612624 int intintLCGLinearOpenCompactHash_Query(intintHash_Table * table,
613625 size_t numKeys, int *keys,
……@@ -646,6 +658,8 @@ extern "C" {
646658 int intintLCGLinearOpenCompactCLHash_DestroyTable(intintHash_Table *
647659 table);
648660 char *intintLCGLinearOpenCompactCLHash_Report(intintHash_Table * table);
661 int intintLCGLinearOpenCompactCLHash_SetupTable(intintHash_Table *
662 table);
649663 int intintLCGLinearOpenCompactCLHash_EmptyTable(intintHash_Table *
650664 table);
651665 int intintLCGLinearOpenCompactCLHash_Query(intintHash_Table * table,
……@@ -698,6 +712,8 @@ extern "C" {
698712 table);
699713 char *intintLCGLinearOpenCompactOpenMPHash_Report(intintHash_Table *
700714 table);
715 int intintLCGLinearOpenCompactOpenMPHash_SetupTable(intintHash_Table *
716 table);
701717 int intintLCGLinearOpenCompactOpenMPHash_EmptyTable(intintHash_Table *
702718 table);
703719 int intintLCGLinearOpenCompactOpenMPHash_Query(intintHash_Table * table,
……@@ -753,6 +769,8 @@ extern "C" {
753769 table);
754770 char *intintLCGQuadraticOpenCompactHash_Report(intintHash_Table *
755771 table);
772 int intintLCGQuadraticOpenCompactHash_SetupTable(intintHash_Table *
773 table);
756774 int intintLCGQuadraticOpenCompactHash_EmptyTable(intintHash_Table *
757775 table);
758776 int intintLCGQuadraticOpenCompactHash_Query(intintHash_Table * table,
……@@ -793,6 +811,8 @@ extern "C" {
793811 table);
794812 char *intintLCGQuadraticOpenCompactCLHash_Report(intintHash_Table *
795813 table);
814 int intintLCGQuadraticOpenCompactCLHash_SetupTable(intintHash_Table *
815 table);
796816 int intintLCGQuadraticOpenCompactCLHash_EmptyTable(intintHash_Table *
797817 table);
798818 int intintLCGQuadraticOpenCompactCLHash_Query(intintHash_Table * table,
……@@ -842,6 +862,8 @@ extern "C" {
842862 (intintHash_Table * table);
843863 char *intintLCGQuadraticOpenCompactOpenMPHash_Report(intintHash_Table *
844864 table);
865 int intintLCGQuadraticOpenCompactOpenMPHash_SetupTable(intintHash_Table
866 * table);
845867 int intintLCGQuadraticOpenCompactOpenMPHash_EmptyTable(intintHash_Table
846868 * table);
847869 int intintLCGQuadraticOpenCompactOpenMPHash_Query(intintHash_Table *
HashFactory/HashFactory.hm +2 -0
……@@ -67,6 +67,8 @@
6767 \
6868 NAME##Hash_Table* NAME##Hash_CreateTable(NAME##Hash_Factory* factory, int hashTypes, size_t keyRange, size_t numEntries, float loadFactor);\
6969 \
70 int NAME##Hash_SetupTable(NAME##Hash_Table *table);\
71 \
7072 int NAME##Hash_EmptyTable(NAME##Hash_Table *table);\
7173 \
7274 int NAME##Hash_DestroyTable(NAME##Hash_Table *table);\
HashFactory/baseHash.cm +34 -4
……@@ -72,11 +72,12 @@
7272 }NAME##MODIFIER##Hash_Bucket;\
7373\
7474
75#define BASE_HASH_UTIL(NAME, MODIFIER, HASH_ID, KEY_TYPE, VALUE_TYPE, COMPRESS_FUNC, COMPRESS_FUNC_DATA, FACTORY_CREATE_EXP, FACTORY_DESTROY_EXP, CREATE_EXP, INIT_EXP, ALLOC_EXP, DESTROY_EXP, EMPTY_EXP)\
75#define BASE_HASH_UTIL(NAME, MODIFIER, HASH_ID, KEY_TYPE, VALUE_TYPE, COMPRESS_FUNC, COMPRESS_FUNC_DATA, FACTORY_CREATE_EXP, FACTORY_DESTROY_EXP, CREATE_EXP, INIT_EXP, ALLOC_EXP, DESTROY_EXP, SETUP_EXP, EMPTY_EXP)\
7676 \
7777 NAME##Hash_Table *NAME##MODIFIER##Hash_CreateTable(NAME##Hash_Factory* factory, int hashIndex, size_t keyRange, size_t numEntries, float loadFactor){\
7878 NAME##Hash_Table* table = (NAME##Hash_Table*)malloc(sizeof(NAME##Hash_Table));\
7979 table->destroyFunc= &NAME##MODIFIER##Hash_DestroyTable;\
80 table->setupFunc = &NAME##MODIFIER##Hash_SetupTable;\
8081 table->emptyFunc = &NAME##MODIFIER##Hash_EmptyTable;\
8182 table->queryFunc = &NAME##MODIFIER##Hash_Query;\
8283 table->querySingleFunc = &NAME##MODIFIER##Hash_QuerySingle;\
……@@ -116,6 +117,12 @@
116117 return exitCode;\
117118 }\
118119 \
120 int NAME##MODIFIER##Hash_SetupTable(NAME##Hash_Table *table){\
121 int exitCode=0;\
122 SETUP_EXP\
123 return exitCode;\
124 }\
125 \
119126 int NAME##MODIFIER##Hash_EmptyTable(NAME##Hash_Table *table){\
120127 int exitCode=0;\
121128 EMPTY_EXP\
……@@ -258,6 +265,17 @@
258265 }\
259266\
260267
268#define HASH_SETUP_EXP(NAME, MODIFIER, INNER_EMPTY_EXP)\
269 NAME##MODIFIER##Hash_Bucket *buckets = (NAME##MODIFIER##Hash_Bucket*)&table->tableData[sizeof(NAME##MODIFIER##Hash_TableData)];\
270 if (intintHash_GetTableType(table) & ~HASH_SENTINEL_PERFECT_HASHES) {\
271 int index;\
272 for(index = 0; index < ((NAME##MODIFIER##Hash_TableData*)table->tableData)->numBuckets; index++){\
273 INNER_EMPTY_EXP\
274 }\
275 }\
276 exitCode = HASH_EXIT_CODE_NORMAL;\
277\
278
261279#define HASH_EMPTY_EXP(NAME, MODIFIER, INNER_EMPTY_EXP)\
262280 NAME##MODIFIER##Hash_Bucket *buckets = (NAME##MODIFIER##Hash_Bucket*)&table->tableData[sizeof(NAME##MODIFIER##Hash_TableData)];\
263281 int index;\
……@@ -275,7 +293,7 @@
275293 \
276294 BASE_TYPES_DEFINE(NAME, MODIFIER, KEY_TYPE, VALUE_TYPE, COMPRESS_FUNC_DATA)\
277295 \
278 BASE_HASH_UTIL(NAME, MODIFIER, HASH_ID, KEY_TYPE, VALUE_TYPE, COMPRESS_FUNC, COMPRESS_FUNC_DATA, FACTORY_CREATE_EXP, , CREATE_EXP, INIT_EXP, , , HASH_EMPTY_EXP(NAME, MODIFIER, INNER_EMPTY_EXP))\
296 BASE_HASH_UTIL(NAME, MODIFIER, HASH_ID, KEY_TYPE, VALUE_TYPE, COMPRESS_FUNC, COMPRESS_FUNC_DATA, FACTORY_CREATE_EXP, , CREATE_EXP, INIT_EXP, , ,HASH_SETUP_EXP(NAME, MODIFIER, INNER_EMPTY_EXP), HASH_EMPTY_EXP(NAME, MODIFIER, INNER_EMPTY_EXP))\
279297 \
280298 BASE_HASH_METHODS(NAME, MODIFIER, KEY_TYPE, VALUE_TYPE, COMPRESS_FUNC, COMPRESS_FUNC_DATA, SEARCH_EXP, CMPXCHG_HASH_READ_KEY_EXP, ,##__VA_ARGS__)\
281299 \
……@@ -362,6 +380,18 @@
362380 CLHash_Utilities_HandleError(err, STRINGIFY(NAME##MODIFIER##CLHash_InitTable), "clEnqueueWriteBuffer");\
363381\
364382
383#define CL_SETUP_EXP(NAME, MODIFIER, EMPTY_EXP)\
384 cl_int err;\
385 err = clSetKernelArg(table->emptyKernel, 0, sizeof(cl_mem), &table->tableDataBuffer);\
386 CLHash_Utilities_HandleError(err, STRINGIFY(NAME##MODIFIER##CLHash_EmptyTable), "clSetKernelArg");\
387 const size_t groupWorkSize = roundUpToNearest(((NAME##MODIFIER##Hash_TableData*)table->tableData)->numBuckets, table->emptyKernelLocalWorkSize);\
388 err = clEnqueueNDRangeKernel(table->queue, table->emptyKernel, 1, 0, &groupWorkSize, (const size_t*)&table->emptyKernelLocalWorkSize, 0, NULL, NULL);\
389 \
390 CLHash_Utilities_HandleError(err, STRINGIFY(NAME##MODIFIER##CLHash_EmptyTable), "clEnqueueNDRangeKernel");\
391 exitCode = HASH_EXIT_CODE_NORMAL;\
392 EMPTY_EXP;\
393\
394
365395#define CL_EMPTY_EXP(NAME, MODIFIER, EMPTY_EXP)\
366396 cl_int err;\
367397 err = clSetKernelArg(table->emptyKernel, 0, sizeof(cl_mem), &table->tableDataBuffer);\
……@@ -491,7 +521,7 @@
491521 \
492522 BASE_TYPES_DEFINE(NAME, MODIFIER##CL, KEY_TYPE, VALUE_TYPE, COMPRESS_FUNC_DATA)\
493523 \
494 BASE_HASH_UTIL(NAME, MODIFIER##CL, HASH_ID, KEY_TYPE, VALUE_TYPE, COMPRESS_FUNC, COMPRESS_FUNC_DATA, CL_FACTORY_CREATE_EXP(NAME, MODIFIER, FACTORY_CREATE_EXP, STRINGIFY(CL_UTIL_PROGRAM(NAME, MODIFIER, KEY_TYPE, VALUE_TYPE, BASE_TYPES_DEFINE, COMPRESS_FUNC_DATA, INNER_EMPTY_EXP))), CL_FACTORY_DESTROY_EXP(NAME, MODIFIER, ), CL_CREATE_EXP(NAME, MODIFIER, CREATE_EXP), INIT_EXP, CL_ALLOC_EXP(NAME, MODIFIER), CL_DESTROY_EXP(NAME), CL_EMPTY_EXP(NAME, MODIFIER, ))\
524 BASE_HASH_UTIL(NAME, MODIFIER##CL, HASH_ID, KEY_TYPE, VALUE_TYPE, COMPRESS_FUNC, COMPRESS_FUNC_DATA, CL_FACTORY_CREATE_EXP(NAME, MODIFIER, FACTORY_CREATE_EXP, STRINGIFY(CL_UTIL_PROGRAM(NAME, MODIFIER, KEY_TYPE, VALUE_TYPE, BASE_TYPES_DEFINE, COMPRESS_FUNC_DATA, INNER_EMPTY_EXP))), CL_FACTORY_DESTROY_EXP(NAME, MODIFIER, ), CL_CREATE_EXP(NAME, MODIFIER, CREATE_EXP), INIT_EXP, CL_ALLOC_EXP(NAME, MODIFIER), CL_DESTROY_EXP(NAME), CL_SETUP_EXP(NAME, MODIFIER, ), CL_EMPTY_EXP(NAME, MODIFIER, ))\
495525 \
496526 int NAME##MODIFIER##CLHash_QuerySingle(NAME##Hash_Table *table, KEY_TYPE key, VALUE_TYPE *valueOutput){\
497527 return NAME##MODIFIER##CLHash_Query(table, 1, &key, valueOutput);\
……@@ -597,7 +627,7 @@
597627 \
598628 BASE_TYPES_DEFINE(NAME, MODIFIER, KEY_TYPE, VALUE_TYPE, COMPRESS_FUNC_DATA)\
599629 \
600 BASE_HASH_UTIL(NAME, MODIFIER, HASH_ID, KEY_TYPE, VALUE_TYPE, COMPRESS_FUNC, COMPRESS_FUNC_DATA, FACTORY_CREATE_EXP, , CREATE_EXP, INIT_EXP, , , HASH_EMPTY_EXP(NAME, MODIFIER, INNER_EMPTY_EXP))\
630 BASE_HASH_UTIL(NAME, MODIFIER, HASH_ID, KEY_TYPE, VALUE_TYPE, COMPRESS_FUNC, COMPRESS_FUNC_DATA, FACTORY_CREATE_EXP, , CREATE_EXP, INIT_EXP, , ,HASH_SETUP_EXP(NAME, MODIFIER, INNER_EMPTY_EXP), HASH_EMPTY_EXP(NAME, MODIFIER, INNER_EMPTY_EXP))\
601631 \
602632 BASE_HASH_METHODS(NAME, MODIFIER, KEY_TYPE, VALUE_TYPE, COMPRESS_FUNC, COMPRESS_FUNC_DATA, SEARCH_EXP, CMPXCHG_HASH_READ_KEY_EXP, ,##__VA_ARGS__)\
603633 \
HashFactory/baseHash.hm +2 -0
……@@ -54,6 +54,8 @@
5454 \
5555 char *NAME##MODIFIER##Hash_Report(NAME##Hash_Table *table);\
5656 \
57 int NAME##MODIFIER##Hash_SetupTable(NAME##Hash_Table *table);\
58 \
5759 int NAME##MODIFIER##Hash_EmptyTable(NAME##Hash_Table *table);\
5860 \
5961 int NAME##MODIFIER##Hash_Query(NAME##Hash_Table *table, size_t numKeys, KEY_TYPE *keys, VALUE_TYPE *valuesOutput);\