OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-CompactHash / HashFactory / HashFactory.clp

231 lines · clp ref:
/* Copyright 2013-14.  Los Alamos National Security, LLC. This material was produced
 * under U.S. Government contract DE-AC52-06NA25396 for Los Alamos National 
 * Laboratory (LANL), which is operated by Los Alamos National Security, LLC
 * for the U.S. Department of Energy. The U.S. Government has rights to use,
 * reproduce, and distribute this software.  NEITHER THE GOVERNMENT NOR LOS
 * ALAMOS NATIONAL SECURITY, LLC MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR
 * ASSUMES ANY LIABILITY FOR THE USE OF THIS SOFTWARE.  If software is modified
 * to produce derivative works, such modified software should be clearly marked,
 * so as not to confuse it with the version available from LANL.   
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy
 * of the License at 
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed
 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 *
 * Under this license, it is required to include a reference to this work. We
 * request that each derivative work contain a reference to LANL Copyright 
 * Disclosure C14043/LA-CC-14-003 so that this work's impact can be roughly
 * measured. In addition, it is requested that a modifier is included as in
 * the following example:
 *
 * //<Uses | improves on | modified from> LANL Copyright Disclosure C14043/LA-CC-14-003
 *
 * This is LANL Copyright Disclosure C14043/LA-CC-14-003
 */

#define GLOBAL __global

int intintIdentityPerfectCLHash_InsertSingle(__global char *tableData,
                                                  int key, int value);
int intintIdentityPerfectCLHash_InnerInsertSingle(__global char *tableData,
						  int key, int value);
int intintHash_InsertSingle(__global char *tableData, int key, int value);
int intintIdentityPerfectCLHash_InnerQuery(__global char *tableData,
					   unsigned int numKeys,
					   __global int *keys,
					   __global int *valuesOutput);
int intintIdentityPerfectCLHash_InnerQuerySingle(__global char *tableData,
						 int key,
						 __global int *valueOutput);
int intintIdentityPerfectCLHash_InnerInsert(__global char *tableData,
					    unsigned int numEntries,
					    __global int *keys,
					    __global int *values);
int intintIdentityPerfectCLHash_InnerInsertSingleNoOverwrite(__global char
							     *tableData,
							     int key,
							     int value);
int intintIdentityPerfectCLHash_InnerInsertNoOverwrite(__global char *tableData,
						       unsigned int numEntries,
						       __global int *keys,
						       __global int *values);
int intintIdentityPerfectCLHash_QuerySingle(__global char *tableData, int key,
					    __global int *valueOutput);
int intintIdentityPerfectCLHash_QuerySingle(__global char *tableData, int key,
					    __global int *valueOutput);
int intintIdentityPerfectCLHash_Query(__global char *tableData, size_t numKeys,
				      __global int *keys,
				      __global int *valuesOutput);
int intintIdentityPerfectCLHash_Insert(__global char *tableData,
				       size_t numEntries, __global int *keys,
				       __global int *values);
int intintIdentityPerfectCLHash_InsertSingleNoOverwrite(__global char
							*tableData, int key,
							int value);
int intintIdentityPerfectCLHash_InsertNoOverwrite(__global char *tableData,
						  size_t numEntries,
						  __global int *keys,
						  __global int *values);
int intintIdentitySentinelPerfectCLHash_InnerInsertNoOverwrite(__global char *tableData,
							       unsigned int numEntries,
							       __global int *keys,
							       __global int *values);
int intintIdentitySentinelPerfectCLHash_InnerQuerySingle(__global char *tableData, int key,
							 __global int *valueOutput);
int intintIdentitySentinelPerfectCLHash_InnerQuery(__global char *tableData,
						   unsigned int numKeys,
						   __global int *keys,
						   __global int *valuesOutput);
int intintIdentitySentinelPerfectCLHash_InnerInsertSingle(__global char *tableData, int key,
							  int value);
int intintIdentitySentinelPerfectCLHash_InnerInsert(__global char *tableData,
						    unsigned int numEntries,
						    __global int *keys,
						    __global int *values);
int intintIdentitySentinelPerfectCLHash_InnerInsertSingleNoOverwrite(__global char *tableData,
								     int key,
								     int value);
int intintIdentitySentinelPerfectCLHash_QuerySingle(__global char *tableData,
						    int key,
						    __global int *valueOutput);
int intintIdentitySentinelPerfectCLHash_Query(__global char *tableData,
					      size_t numKeys,
					      __global int *keys,
					      __global int *valuesOutput);
int intintIdentitySentinelPerfectCLHash_InsertSingle(__global char *tableData,
						     int key, int value);
int intintIdentitySentinelPerfectCLHash_Insert(__global char *tableData,
					       size_t numEntries,
					       __global int *keys,
					       __global int *values);
int intintIdentitySentinelPerfectCLHash_InsertSingleNoOverwrite(__global char
								*tableData,
								int key,
								int value);
int intintIdentitySentinelPerfectCLHash_InsertNoOverwrite(__global char *tableData,
							  size_t numEntries,
							  __global int *keys,
							  __global int *values);
int intintLCGLinearOpenCompactCLHash_InnerQuerySingle(__global char *tableData,
						      int key,
						      __global int *valueOutput);
int intintLCGLinearOpenCompactCLHash_QuerySingle(__global char *tableData,
						 int key,
						 __global int *valueOutput);
int intintLCGLinearOpenCompactCLHash_Query(__global char *tableData,
					   size_t numKeys, __global int *keys,
					   __global int *valuesOutput);
int intintLCGLinearOpenCompactCLHash_InsertSingle(__global char *tableData,
						  int key, int value);
int intintLCGLinearOpenCompactCLHash_Insert(__global char *tableData,
					    size_t numEntries,
					    __global int *keys,
					    __global int *values);
int intintLCGLinearOpenCompactCLHash_InsertSingleNoOverwrite(__global char
							     *tableData,
							     int key,
							     int value);
int intintLCGLinearOpenCompactCLHash_InsertNoOverwrite(__global char *tableData,
						       size_t numEntries,
						       __global int *keys,
						       __global int *values);
int intintLCGLinearOpenCompactCLHash_InnerQuery(__global char *tableData,
						unsigned int numKeys,
						__global int *keys,
						__global int *valuesOutput);
int intintLCGLinearOpenCompactCLHash_InnerInsertNoOverwrite(__global char *tableData,
							    unsigned int numEntries,
							    __global int *keys,
							    __global int *values);
int intintLCGLinearOpenCompactCLHash_InnerInsertSingle(__global char *tableData,
						       int key, int value);
int intintLCGLinearOpenCompactCLHash_InnerInsertSingleNoOverwrite(__global char *tableData,
								  int key, int value);
int intintLCGLinearOpenCompactCLHash_InnerInsert(__global char *tableData,
						 unsigned int numEntries,
						 __global int *keys,
						 __global int *values);
int intintLCGQuadraticOpenCompactCLHash_InnerQuerySingle(__global char *tableData, int key,
							 __global int *valueOutput);
int intintLCGQuadraticOpenCompactCLHash_InnerQuery(__global char *tableData,
						   unsigned int numKeys,
						   __global int *keys,
						   __global int *valuesOutput);
int intintLCGQuadraticOpenCompactCLHash_InnerInsertSingle(__global char *tableData, int key,
							  int value);
int intintLCGQuadraticOpenCompactCLHash_InnerInsert(__global char *tableData,
						    unsigned int numEntries,
						    __global int *keys,
						    __global int *values);
int intintLCGQuadraticOpenCompactCLHash_InnerInsertSingleNoOverwrite(__global char *tableData,
								     int key, int value);
int intintLCGQuadraticOpenCompactCLHash_InnerInsertNoOverwrite(__global char *tableData,
							       unsigned int numEntries,
							       __global int *keys,
							       __global int *values);
int intintLCGQuadraticOpenCompactCLHash_QuerySingle(__global char *tableData,
						    int key,
						    __global int *valueOutput);
int intintLCGQuadraticOpenCompactCLHash_Query(__global char *tableData,
					      size_t numKeys,
					      __global int *keys,
					      __global int *valuesOutput);
int intintLCGQuadraticOpenCompactCLHash_InsertSingle(__global char *tableData,
						     int key, int value);
int intintLCGQuadraticOpenCompactCLHash_Insert(__global char *tableData,
					       size_t numEntries,
					       __global int *keys,
					       __global int *values);
int intintLCGQuadraticOpenCompactCLHash_InsertSingleNoOverwrite(__global char
								*tableData,
								int key,
								int value);
int intintLCGQuadraticOpenCompactCLHash_InsertNoOverwrite(__global char *tableData,
							  size_t numEntries,
							  __global int *keys,
							  __global int *values);
int intintHash_Query(__global char *tableData, unsigned int numKeys,
		     __global int *keys, __global int *valuesOutput);
int intintHash_QuerySingle(__global char *tableData, int key,
			   __global int *valueOutput);
int intintHash_Insert(__global char *tableData, unsigned int numEntries,
		      __global int *keys, __global int *values);
int intintHash_InsertNoOverwrite(__global char *tableData,
				 unsigned int numEntries, __global int *keys,
				 __global int *values);
int intintHash_InsertSingleNoOverwrite(__global char *tableData, int key,
				       int value);
#define DELAY(X) X
DELAY(#define HASH_REPORT_NEVER /**/ 0)
DELAY(#define HASH_REPORT_CYCLE /**/ 1)
DELAY(#define HASH_REPORT_END /****/ 2)
//
DELAY(#define HASH_EXIT_CODE_NORMAL /****************/ -1)
DELAY(#define HASH_EXIT_CODE_ERROR /*****************/ -2)
DELAY(#define HASH_EXIT_CODE_OVERWRITE /*************/ -3)
DELAY(#define HASH_EXIT_CODE_KEY_DNE /***************/ -4)
DELAY(#define HASH_EXIT_CODE_CYCLE /*****************/ -5)
DELAY(#define HASH_EXIT_CODE_MAX_ENTRIES_EXCEEDED /**/ -6)
DELAY(#define HASH_EXIT_CODE_BUCKET_INDEX_OOB /******/ -7)
//
DELAY(#define HASH_SEARCH_CODE_MATCH /*****/ 0)
DELAY(#define HASH_SEARCH_CODE_MISMATCH /**/ 1)
DELAY(#define HASH_SEARCH_CODE_EMPTY /*****/ 2)
//
DELAY(#define IDENTITY_PERFECT_CL_HASH_ID /****************/ 16)
DELAY(#define IDENTITY_SENTINEL_PERFECT_CL_HASH_ID /*******/ 32)
DELAY(#define LCG_LINEAR_OPEN_COMPACT_CL_HASH_ID /*********/ 64)
DELAY(#define LCG_QUADRATIC_OPEN_COMPACT_CL_HASH_ID /******/ 128)
//
DELAY(#define HASH_BUCKET_STATUS_EMPTY /**/ -1)
DELAY(#define HASH_BUCKET_STATUS_FULL /***/ -2)
DELAY(#define HASH_BUCKET_STATUS_LOCK /***/ -3)
HASH_KERN_DEFINE(intint, int, int)