From 594d8b7a5e8aed2dc176e20320ae567f13f94db8 Mon Sep 17 00:00:00 2001 From: Peter Bakkum Date: Wed, 15 Feb 2012 23:43:20 -0500 Subject: [PATCH] removed binaries --- lib/virginian.a | Bin 378122 -> 0 bytes lib/virginian.h | 674 ------------------------------------------------ 2 files changed, 674 deletions(-) delete mode 100644 lib/virginian.a delete mode 100644 lib/virginian.h diff --git a/lib/virginian.a b/lib/virginian.a deleted file mode 100644 index 304db2fb021fad03eb9d0830f24745813fa2f7ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378122 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 - * - * @section License - * - * This software is provided "as is" and any expressed or implied warranties, - * including, but not limited to, the implied warranties of merchantibility and - * fitness for a particular purpose are disclaimed. In no event shall the - * regents or contributors be liable for any direct, indirect, incidental, - * special, exemplary, or consequential damages (including, but not limited to, - * procurement of substitute goods or services; loss of use, data, or profits; - * or business interruption) however caused and on any theory of liability, - * whether in contract, strict liability, or tort (including negligence or - * otherwise) arising in any way out of the use of this software, even if - * advised of the possibility of such damage. - * - * @section Description - * - * This is the header file for the entire Virginian database. It contains nearly - * all of the includes, macros, data structures, and function definitions for - * the database and can be used with a static object file containing the - * database's entire functionality. - */ - -/** - * @defgroup virginian Virginian Functions - * @defgroup database Database File functions - * @defgroup table Table Functions - * @defgroup tablet Tablet Functions - * @defgroup vm Virtual Machine Functions - * @defgroup reader Tablet Reader Functions - */ - -#ifdef _XOPEN_SOURCE -#undef _XOPEN_SOURCE -#endif -/// enables 64bit file operations -#define _XOPEN_SOURCE 500 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -/// shortcut for 2^10 -#define VIRG_KB 1024 -/// shortcut for 2^20 -#define VIRG_MB 1048576 -/// shortcut for 2^30 -#define VIRG_GB 1073741824 - -/// acceptable error in floating point comparisons -#define VIRG_FLOAT_ERROR 0.0001 - -/// size of tablets, must be equal for the db file and the database -#define VIRG_TABLET_SIZE (8 * VIRG_MB) -/// rows to allocate when a tablet is created -#define VIRG_TABLET_INITIAL_KEYS 256 -/// rows to add when a tablet is full and rows still need to be added -#define VIRG_TABLET_KEY_INCREMENT (2048 * 128) -/// initial size of the fixed block -#define VIRG_TABLET_INITIAL_FIXED 0 -/// initial size of the variable block -#define VIRG_TABLET_INITIAL_VARIABLE 0 -/// size reserved for the variable block when the fixed is maxed out -#define VIRG_TABLET_MAXED_VARIABLE (VIRG_TABLET_SIZE / 16) -/// initial area reserved for the variable size block of result tablets -#define VIRG_RESULT_INITIAL_VARIABLE (512 * VIRG_KB) -/// initial disk slot meta informations to allocate for tablets -#define VIRG_TABLET_INFO_SIZE 16 -/// meta information structs to add when all are used up and we need another -#define VIRG_TABLET_INFO_INCREMENT 32 - -/// maximum table columns supported -#define VIRG_MAX_COLUMNS 16 -/// maximum tables supported -#define VIRG_MAX_TABLES 16 -/// maximum column name length supported -#define VIRG_MAX_COLUMN_NAME 16 -/// maximum table name length supported -#define VIRG_MAX_TABLE_NAME 32 - -/// tablet slots to allocate in memory -#define VIRG_MEM_TABLETS 64 -/// tablet slots to allocate in gpu memory -#define VIRG_GPU_TABLETS 2 -/// maximum number of tables to read from supported in vm -#define VIRG_VM_TABLES 1 -/// number of rows to process on the cpu in a block -#define VIRG_CPU_SIMD 64 -/// buffer size to store a single row in virg_reader -#define VIRG_ROW_BUFFER 256 -/// number of vm registers allocated -#define VIRG_REGS 16 -/// number of vm global registers allocated -#define VIRG_GLOBAL_REGS 16 -/// maximum number of query statement opcodes allowed -#define VIRG_OPS 32 - -/// cuda device selected -#define VIRG_CUDADEVICE 0 -/// cuda threads per block -#define VIRG_THREADSPERBLOCK 128 - -/** - * mask used for math operations dependent on the size of threads per block - * with two's complement integers this should be the negative of the threads - * per block variable above but I get casting warning when I don't use hex - * that can probably be fixed - */ -#define VIRG_THREADSPERBLOCK_MASK 0xFFFFFF80 -/// number of threads to use for the multicore cpu virtual machine -#define VIRG_MULTITHREADS 8 - -/// used to return a function failure -#define VIRG_FAIL 0 -/// used to return a function success -#define VIRG_SUCCESS 1 - -/// convenience macro to return the min of the two inputs -#define VIRG_MIN(a, b) (a < b ? a : b) -/// convenience macro to return the max of the two inputs -#define VIRG_MAX(a, b) (a < b ? b : a) -/// convenience macro to verify a number is a power of 2 -#define VIRG_ISPWR2(x) ((x != 0) && ((x & (~x + 1)) == x)) - -/// print out an error with the file and line -#define VIRG_ERROR(x) fprintf(stderr, "::: Virginian error %s line %d:: " x "\n", __FILE__, __LINE__); - -/// print an error and return failure if the condition is true -#define VIRG_CHECK(cond, args) \ - if(cond) { \ - VIRG_ERROR(args) \ - return VIRG_FAIL; \ - } - -/// return failure and print it if there is an outstanding cuda error -#define VIRG_CUDCHK(desc) VIRG_CUDCHKCALL(cudaGetLastError(), desc) - -/// return failure and print it if there in a cuda error returned from a call -#define VIRG_CUDCHKCALL(call, desc) \ - { cudaError_t r; \ - if((r = call) != cudaSuccess) { \ - fprintf(stderr, "CUDA %s error: %s :: %s line %d\n", \ - desc, cudaGetErrorString(r), __FILE__, __LINE__); \ - return VIRG_FAIL; \ - }} - - -/** VIRG_DEBUG_CHECK calls are like VIRG_CHECK calls but only get compiled in if - * the VIRG_DEBUG macro is defined - */ -#ifdef VIRG_DEBUG - #define VIRG_DEBUG_CHECK(cond, args) VIRG_CHECK(cond, args) -#else - #define VIRG_DEBUG_CHECK(cond, args); -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/// enumeration and integer assignments of all virtual machine opcodes -typedef enum { - OP_Table = 0, - OP_ResultColumn = 1, - OP_Parallel = 2, - OP_Finish = 3, - OP_Column = 4, - OP_Rowid = 5, - OP_Result = 6, - OP_Converge = 7, - OP_Invalid = 8, - OP_Cast = 9, - OP_Integer = 10, - OP_Float = 11, - OP_Le = 12, - OP_Lt = 13, - OP_Ge = 14, - OP_Gt = 15, - OP_Eq = 16, - OP_Neq = 17, - OP_Add = 18, - OP_Sub = 19, - OP_Mul = 20, - OP_Div = 21, - OP_And = 22, - OP_Or = 23, - OP_Not = 24, - OP_Nop = 25 -} virg_ops; - - -/// enumeration of all variable types used by the database -typedef enum { - VIRG_INT = 0, - VIRG_INT64 = 1, - VIRG_FLOAT = 2, - VIRG_DOUBLE = 3, - VIRG_CHAR = 4, - VIRG_STRING = 5, - VIRG_NULL = 6 -} virg_t; - -/// used when operating on two types to get the more general type -virg_t virg_generalizetype(virg_t t1, virg_t t2); - -/// size in bytes of variables types, indexed by their enumeration values -static const size_t virg_sizes[7] = { - sizeof(int), // 0 - sizeof(long long int), // 1 - sizeof(float), // 2 - sizeof(double), // 3 - sizeof(char), // 4 - (sizeof(char) * 4), // 5 - 0 // 6 -}; - -/** - * @brief Information associated with a tablet on disk - * - * This struct is used in a dynamically allocated array to store the locations - * of tablets on disk. To find a tablet on disk, these will be iterated over. - * Note that though a tablet is in disk it may also be in memory, possibly with - * changes that have not been flushed to disk - */ -typedef struct { - /// id of the tablet stored in this slot, valid only if used == 1 - unsigned id; - /// note whether or not there is a tablet stored in this disk slot - int used; - /// the index of this struct in the array of tablet infos - unsigned disk_slot; -} virg_tablet_info; - - -/** - * @brief Tablet meta information - * - * This stores the entire structure and all attributes of a tablet. It occupies - * the first sizeof(virg_tablet_meta) bytes of the allocated tablet area, and is - * used to track all associated information, including the next tablet in the - * tablet string and whether or not this is the last tablet in the string. It - * also has the number of columns stored and the offset beginnings of each - * column, etc. This tablet meta struct is stored directly in constant memory - * during GPU query execution. Note that this struct is 64-bit aligned and it - * significantly hurts performance if this is not guaranteed. - */ -typedef struct { - /// number of rows stored in this tablet - unsigned rows; - /// variable type of the key column - virg_t key_type; - /// stride of the variable type of the key column - size_t key_stride; - /// stride of the key pointer variable type - size_t key_pointer_stride; - - // TODO make this a 64-bit - /// tablet id - unsigned id; - /// id of the next tablet in the tablet string - unsigned next; - /// boolean indicating whether this is the last tablet in the tablet string - int last_tablet; - /// boolean indicating whether or not this tablet is part of a table - int in_table; - /// id of the table that this tablet is a part of, if applicable - unsigned table_id; - - /// relative ptr to the beginning of the key column - size_t key_block; - /// relative ptr to the beginning of the key pointer column - size_t key_pointers_block; - /// relative ptr to the beginning of the fixed-column area - size_t fixed_block; - /// relative ptr to the beginning of the variable-sized data area - size_t variable_block; - /// total size of this tablet - size_t size; - /// fixed-size rows that can be in this tablet without reorganizing columns - unsigned possible_rows; - /// stride of fixed-size columns, including key and key pointer - size_t row_stride; - - /// number of fixed-size columns - unsigned fixed_columns; - // TODO pad to 16 byte align the following two arrays - /// name of each of the fixed-size columns - char fixed_name [VIRG_MAX_COLUMNS][VIRG_MAX_COLUMN_NAME]; - /// types of the fixed-size columns - virg_t fixed_type [VIRG_MAX_COLUMNS]; - /// size in bytes of each of the fixed-size columns - size_t fixed_stride [VIRG_MAX_COLUMNS]; - /// relative pointer from fixed_block indicating the beginning of the column - size_t fixed_offset [VIRG_MAX_COLUMNS]; - - /// pointer to the disk info struct associated with this tablet - virg_tablet_info *info; -}__attribute__((aligned(64))) virg_tablet_meta; - -/** - * @brief Union used to store any of the possible types of virg_t in a single memory - * location, used for the 4th argument for opcodes - */ -typedef union { - int i; - float f; - long long int li; - double d; - char c; - char *s; -}__attribute__((aligned(8))) virg_var; - -/** - * @brief Opcode, including arguments - * - * This struct is used to store all the attributes of an opcode, including the 3 - * integer arguments and the fourth variable-type argument, in addition to the - * integer opcode corresponding to an op in the virg_ops enum. The 4 arguments - * may be option, and their use is entirely dependent on the current opcode - * being executed. - */ -typedef struct { - int op; - int p1; - int p2; - int p3; - virg_var p4; -} virg_op; - -/** - * @brief Linked list node used to manage result tablets - * - * The multi-core and GPU virtual machines need to manage their result tablets - * in a list that is independent of the content of the meta information of the - * tablets, thus a linked list is used. - */ -typedef struct virg_result_node_{ - /// tablet id - unsigned id; - /// pointer to the next node of the linked list - struct virg_result_node_ *next; -} virg_result_node; - -/** - * @brief State struct of the virtual machine context - * - * This function is used to manage the virtual machine execution for high-level - * CPU execution, but further context is needed for the data parallel execution - * portions. This struct includes the opcode program and pointers to the head - * and tail nodes of the result tablet list. - */ -typedef struct { - /// high-level program counter - unsigned pc; - /// opcode program - virg_op stmt [VIRG_OPS]; - /// number of opcodes in the opcode program - unsigned num_ops; - /// high-level registers - virg_var global_reg [VIRG_GLOBAL_REGS]; - /// types currently stored in the high-level registers - virg_t type [VIRG_GLOBAL_REGS]; - /// table handles used for the query - unsigned table [VIRG_VM_TABLES]; - /// number of table handles used - unsigned num_tables; - /// pointer to the head node of the result tablet list - virg_result_node *head_result; - /// pointer to the tail node of the result tablet list - virg_result_node *tail_result; - /// used to return timing data - float timing1, timing2, timing3; -} virg_vm; - -/** - * @brief Lower-level GPU virtual machine context - * - * This is used to store the registers associated with virtual machine execution - * on the GPU. Note that each thread manages its program counter independently, - * and thus it is not included in this context. - */ -typedef struct { - /// registers - virg_var reg [VIRG_REGS]; - /// variable type currently stored in registers - virg_t type [VIRG_REGS]; - /// size in bytes of the variable stored in registers - size_t stride [VIRG_REGS]; -}virg_vm_context; - -/** - * @brief Lower-level data parallel CPU virtual machine context - * - * This is the cache-efficient data structure used to store intermediate - * information for CPU virtual machine execution. The VIRG_CPU_SIMD macro - * specifies the size of the row blocks that are processed in one step on the - * CPU. Note that the registers are blocked for data-parallel execution, so - * the data used by different rows in the same register location is adjacent. - * This is accomplished with the array of unions. Also note that the type and - * stride of each register only needs to be stored once per register, because - * everything is SIMD in a row block. - */ -typedef struct { - /// global program counter - unsigned pc; - /// program counter for individual rows in the block - unsigned row_pc [VIRG_CPU_SIMD]; - /// block-organized registers - union { - int i [VIRG_CPU_SIMD]; - long long int li [VIRG_CPU_SIMD]; - float f [VIRG_CPU_SIMD]; - double d [VIRG_CPU_SIMD]; - char c [VIRG_CPU_SIMD]; - char *s [VIRG_CPU_SIMD]; - } reg[VIRG_REGS]; - /// type stored in each register - virg_t type [VIRG_REGS]; - /// size in bytes of the variable stored in each registers - size_t stride [VIRG_REGS]; -} virg_vm_simdcontext; - -/** - * @brief State of the currently open database - * - * This structure is used to manage the database file that is currently open in - * the database. It is the head of the database file, is loaded into memory when - * the database is opened, and is accessed in memory until the database is - * closed, when it is written to the start of the table. This has a fixed size, - * but the list of tablets in the database managed with virg_tablet_info structs - * necessarily has a variable size, and is stored just after this on disk. - * - * Note that the fd (file descriptor) variable is meaningless when this data - * is written to disk. - */ -typedef struct { - /// number of tablets on disk - unsigned num_tablets; - /// number of virg_tablet_info structs that have been allocated - unsigned alloced_tablets; - /// used to assign unique ids to each data and result tablet - unsigned tablet_id_counter; - /// size of this struct plus all the virg_tablet_info structs - size_t block_size; - /// maps table id to name - char tables[VIRG_MAX_TABLES][VIRG_MAX_TABLE_NAME]; - /// maps table id to the id of its first tablet - unsigned first_tablet[VIRG_MAX_TABLES]; - /// maps table id to the id of its last tablet - unsigned last_tablet[VIRG_MAX_TABLES]; - /// tablet id of the current write location for adding rows to a table - unsigned write_cursor[VIRG_MAX_TABLES]; - /// number of tablets for each table - unsigned table_tablets[VIRG_MAX_TABLES]; - /// note which table slots have been used - int table_status[VIRG_MAX_TABLES]; - /// pointer to the block allocated to store virg_tablet_info structs - virg_tablet_info *tablet_info; -} virg_db; - -/** - * @brief State struct of the whole database - * - * This is used to manage the overall state of Virginian. It is used in almost - * all function calls and must be initialized and closed with the appropriate - * functions. This holds the tablet slot allocations, virg_db struct, and - * virtual machine execution options. - */ -typedef struct { - /// database file state - virg_db db; - /// id of the tablet in each slot, valid only if status is above 0 - unsigned tablet_slot_ids [VIRG_MEM_TABLETS]; - /// use status of the tablet slot, 0 for unused, 1 for used, >1 for each lock - int tablet_slot_status [VIRG_MEM_TABLETS]; - /// number of tablet slots which are unused - unsigned tablet_slots_taken; - /// round-robin counter to kick out tablets - unsigned tablet_slot_counter; - /// pointer to each main-memory tablet slot - virg_tablet_meta *tablet_slots [VIRG_MEM_TABLETS]; - /// pointer to the beginning of the allocated gpu tablet slots - void *gpu_slots; - /// mutex for multi-core manipulation of the tablet slots - pthread_mutex_t slot_lock; - /// file descriptor for the open database - int dbfd; - /// threads per block for gpu execution - unsigned threads_per_block; - /// number of threads to use for multi-core cpu execution - unsigned multi_threads; - /// enables multicore - int use_multi; - /// enables gpu execution - int use_gpu; - /// enables stream execution - int use_stream; - /// enables mapped execution, only used if stream is false - int use_mmap; -} virginian; - -/** - * @brief Holds the arguments for the multicore GPU virtual machine - * - * The virtual machine is run directly from pthread_create(), which can only - * pass a single argument to the function, so this struct is used to package - * arguments together. - */ -typedef struct { - virginian *v; - virg_vm *vm; - virg_tablet_meta *tab; - virg_tablet_meta *res; - unsigned row; - unsigned num_rows; - unsigned num_tablets; - unsigned tablets_proced; - pthread_mutex_t tab_lock; - pthread_mutex_t res_lock; -} virg_vm_arg; - -/** - * @brief State of the results reader object - * - * This stores the current cursor location of a result reader and holds the - * buffer through which row information is returned - */ -typedef struct { - /// virtual machine context from which the results are taken - virg_vm *vm; - /// pointer to the current results object - virg_tablet_meta *res; - /// current result row - unsigned row; - /// buffer to hold the contents of returned rows - char buffer [VIRG_ROW_BUFFER]; -} virg_reader; - -/** - * @brief Array of data structure sizes used for testing - * - * There are certain instances where data structures compile with different - * sizes on gcc/icc versus nvcc because of different optimization criteria. For - * example, structs will get rounded up to a power of 2 on one platform but not - * the other. This creates bugs which are extremely difficult to diagnose. This - * array is used by the testing code to ensure that all data types are identical - * between cpu and gpu code. - */ -static const size_t virg_testsizes[15] = { - sizeof(int), - sizeof(float), - sizeof(long long int), - sizeof(double), - sizeof(char), - sizeof(virg_tablet_meta), - sizeof(virg_tablet_info), - sizeof(virg_var), - sizeof(virg_vm), - sizeof(virg_op), - sizeof(virg_result_node), - sizeof(virg_db), - sizeof(virg_reader), - sizeof(virg_vm_arg), - sizeof(virginian) -}; - -int virg_db_alloc(virginian *v, virg_tablet_meta **meta, int id); -int virg_db_open(virginian *v, const char *file); -int virg_db_create(virginian *v, const char *file); -int virg_db_close(virginian *v); -int virg_db_clear(virginian *v, unsigned slot); -int virg_db_write(virginian *v, unsigned slot); -int virg_db_load(virginian *v, unsigned tablet_id, virg_tablet_meta **tab); -int virg_db_loadnext(virginian *v, virg_tablet_meta **tab); -int virg_db_findslot(virginian *v, unsigned *slot_); - -int virg_table_addcolumn(virginian *v, - unsigned table_id, const char *name, virg_t type); -int virg_table_create(virginian *v, const char *name, virg_t key_type); -int virg_table_insert(virginian *v, unsigned table_id, char *key, - char *data, char *blob); -int virg_table_loadmem(virginian *v, unsigned table_id); -int virg_table_getid(virginian *v, const char* name, unsigned *id); -int virg_table_getcolumn(virginian *v, unsigned tid, const char* name, - unsigned *id); -int virg_table_getcolumntype(virginian *v, unsigned tid, unsigned cid, - virg_t *type); -int virg_table_getkeytype(virginian *v, unsigned tid, virg_t *type); -int virg_table_numrows(virginian *v, unsigned id, unsigned *rows); - -int virg_tablet_addcolumn(virg_tablet_meta *tab, const char *name, virg_t type); -int virg_tablet_addrows(virginian *v, virg_tablet_meta *tab, unsigned rows); -int virg_tablet_addmaxrows(virginian *v, virg_tablet_meta *tab); -int virg_tablet_create(virginian *v, int *id, virg_t key_type, - unsigned table_id); -int virg_tablet_check(virg_tablet_meta *t); -int virg_tablet_growfixed(virg_tablet_meta *tab, size_t size); -int virg_tablet_lock(virginian *v, unsigned tablet_id); -int virg_tablet_unlock(virginian *v, unsigned tablet_id); -int virg_tablet_addtail(virginian *v, virg_tablet_meta *head, - virg_tablet_meta **tail, unsigned possible_rows); -int virg_tablet_remove(virginian *v, unsigned id); - -int virg_vm_addop(virg_vm *vm, int op, int p1, int p2, int p3, virg_var p4); -int virg_vm_allocresult(virginian *v, virg_vm *vm, - virg_tablet_meta **meta, virg_tablet_meta *template_); -int virg_vm_execute(virginian *v, virg_vm *vm); -int virg_vm_freeresults(virginian *v, virg_vm *vm); -virg_vm *virg_vm_init(); -void virg_vm_cleanup(virginian *v, virg_vm *vm); -void virginia_single(virginian *v, virg_vm *vm, virg_tablet_meta *tab, - virg_tablet_meta **res_, unsigned row, unsigned num_rows); -void *virginia_multi(void *arg_); -int virg_vm_cpu(virginian *v, virg_vm *vm, virg_tablet_meta **tab_, - virg_tablet_meta **res, unsigned num_tablets); -int virg_vm_gpu(virginian *v, virg_vm *vm, virg_tablet_meta **tab_, - virg_tablet_meta **res, unsigned num_tablets); -const size_t *virg_gpu_getsizes(); -const size_t *virg_cpu_getsizes(); - -int virg_reader_init(virginian *v, virg_reader *r, virg_vm *vm); -int virg_reader_free(virginian *v, virg_reader *r); -int virg_reader_row(virginian *v, virg_reader *r); -int virg_reader_print(virg_reader *r); -int virg_reader_nexttablet(virginian *v, virg_reader *r); -int virg_reader_getrows(virginian *v, virg_reader *r, unsigned *rows_); - -int virg_sql(virginian *v, const char *querystr, virg_vm *vm); - -int virg_init(virginian *v); -int virg_close(virginian *v); -int virg_query(virginian *v, virg_reader **reader, const char *query); -void virg_release(virginian *v, virg_reader *reader); - -size_t virg_sizeof(virg_t type); -const char* virg_opstring(int op); -void virg_print_tablet(virginian *v, virg_tablet_meta *m, const char* filename); -void virg_print_tablet_meta(virg_tablet_meta *m); -void virg_print_stmt(const virg_vm *vm); -void virg_print_slots(virginian *v); -void virg_print_tablet_info(virginian *v); -int virg_lock_sum(virginian *v); - -/// global variable used to store the timer value after virg_timer_start() -extern struct timeval virg_starttime; -/// global variable used to store the timer value after virg_timer_stop() -extern struct timeval virg_endtime; - -void virg_timer_start(); -double virg_timer_stop(); -double virg_timer_end(const char* label); - -#ifdef __cplusplus -} -#endif -#endif -