51 lines
1.5 KiB
C++
51 lines
1.5 KiB
C++
#ifndef PAIRHMM_UTIL_H
|
|
#define PAIRHMM_UTIL_H
|
|
|
|
#include "template.h"
|
|
|
|
template<class T>
|
|
std::string to_string(T obj)
|
|
{
|
|
std::stringstream ss;
|
|
std::string ret_string;
|
|
ss.clear();
|
|
ss << std::scientific << obj;
|
|
ss >> ret_string;
|
|
ss.clear();
|
|
return ret_string;
|
|
}
|
|
void debug_dump(std::string filename, std::string s, bool to_append, bool add_newline=true);
|
|
|
|
int read_mod_testcase(std::ifstream& fptr, testcase* tc, bool reformat=false);
|
|
|
|
bool is_avx_supported();
|
|
bool is_sse42_supported();
|
|
extern float (*g_compute_full_prob_float)(testcase *tc, float *before_last_log);
|
|
extern double (*g_compute_full_prob_double)(testcase *tc, double* before_last_log);
|
|
void debug_dump(std::string filename, std::string s, bool to_append, bool add_newline);
|
|
template<class NUMBER>
|
|
NUMBER compute_full_prob(testcase *tc, NUMBER *before_last_log=0);
|
|
double getCurrClk();
|
|
void get_time(struct timespec* x);
|
|
uint64_t diff_time(struct timespec& prev_time);
|
|
|
|
//bit 0 is sse4.2, bit 1 is AVX
|
|
enum ProcessorCapabilitiesEnum
|
|
{
|
|
SSE41_CUSTOM_IDX=0,
|
|
SSE42_CUSTOM_IDX,
|
|
AVX_CUSTOM_IDX
|
|
};
|
|
#define ENABLE_ALL_HARDWARE_FEATURES 0xFFFFFFFFFFFFFFFFull
|
|
uint64_t get_machine_capabilities();
|
|
void initialize_function_pointers(uint64_t mask=ENABLE_ALL_HARDWARE_FEATURES);
|
|
void do_compute(char* filename, bool use_old_read_testcase=true, unsigned chunk_size=10000, bool do_check=true);
|
|
|
|
//#define DO_WARMUP
|
|
//#define DO_REPEAT_PROFILING
|
|
//#define DUMP_COMPUTE_VALUES 1
|
|
#define BATCH_SIZE 10000
|
|
#define RUN_HYBRID
|
|
|
|
#endif
|