libsnark: convert long long and unsigned long to C++11 fixed-width types
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
@@ -66,14 +66,14 @@ merkle_tree<HashT>::merkle_tree(const size_t depth,
|
||||
assert(log2(contents_as_vector.size()) <= depth);
|
||||
for (size_t address = 0; address < contents_as_vector.size(); ++address)
|
||||
{
|
||||
const size_t idx = address + (1ul<<depth) - 1;
|
||||
const size_t idx = address + (UINT64_C(1)<<depth) - 1;
|
||||
values[idx] = contents_as_vector[address];
|
||||
hashes[idx] = contents_as_vector[address];
|
||||
hashes[idx].resize(digest_size);
|
||||
}
|
||||
|
||||
size_t idx_begin = (1ul<<depth) - 1;
|
||||
size_t idx_end = contents_as_vector.size() + ((1ul<<depth) - 1);
|
||||
size_t idx_begin = (UINT64_C(1)<<depth) - 1;
|
||||
size_t idx_end = contents_as_vector.size() + ((UINT64_C(1)<<depth) - 1);
|
||||
|
||||
for (int layer = depth; layer > 0; --layer)
|
||||
{
|
||||
@@ -100,13 +100,13 @@ merkle_tree<HashT>::merkle_tree(const size_t depth,
|
||||
|
||||
if (!contents.empty())
|
||||
{
|
||||
assert(contents.rbegin()->first < 1ul<<depth);
|
||||
assert(contents.rbegin()->first < UINT64_C(1)<<depth);
|
||||
|
||||
for (auto it = contents.begin(); it != contents.end(); ++it)
|
||||
{
|
||||
const size_t address = it->first;
|
||||
const bit_vector value = it->second;
|
||||
const size_t idx = address + (1ul<<depth) - 1;
|
||||
const size_t idx = address + (UINT64_C(1)<<depth) - 1;
|
||||
|
||||
values[address] = value;
|
||||
hashes[idx] = value;
|
||||
@@ -167,7 +167,7 @@ void merkle_tree<HashT>::set_value(const size_t address,
|
||||
const bit_vector &value)
|
||||
{
|
||||
assert(log2(address) <= depth);
|
||||
size_t idx = address + (1ul<<depth) - 1;
|
||||
size_t idx = address + (UINT64_C(1)<<depth) - 1;
|
||||
|
||||
assert(value.size() == value_size);
|
||||
values[address] = value;
|
||||
@@ -201,7 +201,7 @@ typename HashT::merkle_authentication_path_type merkle_tree<HashT>::get_path(con
|
||||
{
|
||||
typename HashT::merkle_authentication_path_type result(depth);
|
||||
assert(log2(address) <= depth);
|
||||
size_t idx = address + (1ul<<depth) - 1;
|
||||
size_t idx = address + (UINT64_C(1)<<depth) - 1;
|
||||
|
||||
for (size_t layer = depth; layer > 0; --layer)
|
||||
{
|
||||
@@ -209,7 +209,7 @@ typename HashT::merkle_authentication_path_type merkle_tree<HashT>::get_path(con
|
||||
auto it = hashes.find(sibling_idx);
|
||||
if (layer == depth)
|
||||
{
|
||||
auto it2 = values.find(sibling_idx - ((1ul<<depth) - 1));
|
||||
auto it2 = values.find(sibling_idx - ((UINT64_C(1)<<depth) - 1));
|
||||
result[layer-1] = (it2 == values.end() ? bit_vector(value_size, false) : it2->second);
|
||||
result[layer-1].resize(digest_size);
|
||||
}
|
||||
@@ -227,7 +227,7 @@ typename HashT::merkle_authentication_path_type merkle_tree<HashT>::get_path(con
|
||||
template<typename HashT>
|
||||
void merkle_tree<HashT>::dump() const
|
||||
{
|
||||
for (size_t i = 0; i < 1ul<<depth; ++i)
|
||||
for (size_t i = 0; i < UINT64_C(1)<<depth; ++i)
|
||||
{
|
||||
auto it = values.find(i);
|
||||
printf("[%zu] -> ", i);
|
||||
|
||||
@@ -28,14 +28,14 @@
|
||||
|
||||
namespace libsnark {
|
||||
|
||||
long long get_nsec_time()
|
||||
int64_t get_nsec_time()
|
||||
{
|
||||
auto timepoint = std::chrono::high_resolution_clock::now();
|
||||
return std::chrono::duration_cast<std::chrono::nanoseconds>(timepoint.time_since_epoch()).count();
|
||||
}
|
||||
|
||||
/* Return total CPU time consumed by all threads of the process, in nanoseconds. */
|
||||
long long get_nsec_cpu_time()
|
||||
int64_t get_nsec_cpu_time()
|
||||
{
|
||||
::timespec ts;
|
||||
if ( ::clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts) )
|
||||
@@ -45,10 +45,10 @@ long long get_nsec_cpu_time()
|
||||
return ts.tv_sec * 1000000000ll + ts.tv_nsec;
|
||||
}
|
||||
|
||||
static long long start_time;
|
||||
static long long last_time;
|
||||
static long long start_cpu_time;
|
||||
static long long last_cpu_time;
|
||||
static int64_t start_time;
|
||||
static int64_t last_time;
|
||||
static int64_t start_cpu_time;
|
||||
static int64_t last_cpu_time;
|
||||
|
||||
void start_profiling()
|
||||
{
|
||||
@@ -59,20 +59,20 @@ void start_profiling()
|
||||
}
|
||||
|
||||
std::map<std::string, size_t> invocation_counts;
|
||||
static std::map<std::string, long long> enter_times;
|
||||
std::map<std::string, long long> last_times;
|
||||
std::map<std::string, long long> cumulative_times;
|
||||
static std::map<std::string, int64_t> enter_times;
|
||||
std::map<std::string, int64_t> last_times;
|
||||
std::map<std::string, int64_t> cumulative_times;
|
||||
//TODO: Instead of analogous maps for time and cpu_time, use a single struct-valued map
|
||||
static std::map<std::string, long long> enter_cpu_times;
|
||||
static std::map<std::string, long long> last_cpu_times;
|
||||
static std::map<std::pair<std::string, std::string>, long long> op_counts;
|
||||
static std::map<std::pair<std::string, std::string>, long long> cumulative_op_counts; // ((msg, data_point), value)
|
||||
static std::map<std::string, int64_t> enter_cpu_times;
|
||||
static std::map<std::string, int64_t> last_cpu_times;
|
||||
static std::map<std::pair<std::string, std::string>, int64_t> op_counts;
|
||||
static std::map<std::pair<std::string, std::string>, int64_t> cumulative_op_counts; // ((msg, data_point), value)
|
||||
// TODO: Convert op_counts and cumulative_op_counts from pair to structs
|
||||
static size_t indentation = 0;
|
||||
|
||||
static std::vector<std::string> block_names;
|
||||
|
||||
static std::list<std::pair<std::string, long long*> > op_data_points = {
|
||||
static std::list<std::pair<std::string, int64_t*> > op_data_points = {
|
||||
#ifdef PROFILE_OP_COUNTS
|
||||
std::make_pair("Fradd", &Fr<default_ec_pp>::add_cnt),
|
||||
std::make_pair("Frsub", &Fr<default_ec_pp>::sub_cnt),
|
||||
@@ -100,7 +100,7 @@ void clear_profiling_counters()
|
||||
cumulative_times.clear();
|
||||
}
|
||||
|
||||
void print_cumulative_time_entry(const std::string &key, const long long factor)
|
||||
void print_cumulative_time_entry(const std::string &key, const int64_t factor)
|
||||
{
|
||||
const double total_ms = (cumulative_times.at(key) * 1e-6);
|
||||
const size_t cnt = invocation_counts.at(key);
|
||||
@@ -108,7 +108,7 @@ void print_cumulative_time_entry(const std::string &key, const long long factor)
|
||||
printf(" %-45s: %12.5fms = %lld * %0.5fms (%zu invocations, %0.5fms = %lld * %0.5fms per invocation)\n", key.c_str(), total_ms, factor, total_ms/factor, cnt, avg_ms, factor, avg_ms/factor);
|
||||
}
|
||||
|
||||
void print_cumulative_times(const long long factor)
|
||||
void print_cumulative_times(const int64_t factor)
|
||||
{
|
||||
printf("Dumping times:\n");
|
||||
for (auto& kv : cumulative_times)
|
||||
@@ -157,7 +157,7 @@ void print_op_profiling(const std::string &msg)
|
||||
|
||||
printf("(opcounts) = (");
|
||||
bool first = true;
|
||||
for (std::pair<std::string, long long*> p : op_data_points)
|
||||
for (std::pair<std::string, int64_t*> p : op_data_points)
|
||||
{
|
||||
if (!first)
|
||||
{
|
||||
@@ -173,14 +173,14 @@ void print_op_profiling(const std::string &msg)
|
||||
#endif
|
||||
}
|
||||
|
||||
static void print_times_from_last_and_start(long long now, long long last,
|
||||
long long cpu_now, long long cpu_last)
|
||||
static void print_times_from_last_and_start(int64_t now, int64_t last,
|
||||
int64_t cpu_now, int64_t cpu_last)
|
||||
{
|
||||
long long time_from_start = now - start_time;
|
||||
long long time_from_last = now - last;
|
||||
int64_t time_from_start = now - start_time;
|
||||
int64_t time_from_last = now - last;
|
||||
|
||||
long long cpu_time_from_start = cpu_now - start_cpu_time;
|
||||
long long cpu_time_from_last = cpu_now - cpu_last;
|
||||
int64_t cpu_time_from_start = cpu_now - start_cpu_time;
|
||||
int64_t cpu_time_from_last = cpu_now - cpu_last;
|
||||
|
||||
if (time_from_last != 0) {
|
||||
double parallelism_from_last = 1.0 * cpu_time_from_last / time_from_last;
|
||||
@@ -201,8 +201,8 @@ void print_time(const char* msg)
|
||||
return;
|
||||
}
|
||||
|
||||
long long now = get_nsec_time();
|
||||
long long cpu_now = get_nsec_cpu_time();
|
||||
int64_t now = get_nsec_time();
|
||||
int64_t cpu_now = get_nsec_cpu_time();
|
||||
|
||||
printf("%-35s\t", msg);
|
||||
print_times_from_last_and_start(now, last_time, cpu_now, last_cpu_time);
|
||||
@@ -233,7 +233,7 @@ void print_indent()
|
||||
|
||||
void op_profiling_enter(const std::string &msg)
|
||||
{
|
||||
for (std::pair<std::string, long long*> p : op_data_points)
|
||||
for (std::pair<std::string, int64_t*> p : op_data_points)
|
||||
{
|
||||
op_counts[std::make_pair(msg, p.first)] = *(p.second);
|
||||
}
|
||||
@@ -247,9 +247,9 @@ void enter_block(const std::string &msg, const bool indent)
|
||||
}
|
||||
|
||||
block_names.emplace_back(msg);
|
||||
long long t = get_nsec_time();
|
||||
int64_t t = get_nsec_time();
|
||||
enter_times[msg] = t;
|
||||
long long cpu_t = get_nsec_cpu_time();
|
||||
int64_t cpu_t = get_nsec_cpu_time();
|
||||
enter_cpu_times[msg] = cpu_t;
|
||||
|
||||
if (inhibit_profiling_info)
|
||||
@@ -290,15 +290,15 @@ void leave_block(const std::string &msg, const bool indent)
|
||||
|
||||
++invocation_counts[msg];
|
||||
|
||||
long long t = get_nsec_time();
|
||||
int64_t t = get_nsec_time();
|
||||
last_times[msg] = (t - enter_times[msg]);
|
||||
cumulative_times[msg] += (t - enter_times[msg]);
|
||||
|
||||
long long cpu_t = get_nsec_cpu_time();
|
||||
int64_t cpu_t = get_nsec_cpu_time();
|
||||
last_cpu_times[msg] = (cpu_t - enter_cpu_times[msg]);
|
||||
|
||||
#ifdef PROFILE_OP_COUNTS
|
||||
for (std::pair<std::string, long long*> p : op_data_points)
|
||||
for (std::pair<std::string, int64_t*> p : op_data_points)
|
||||
{
|
||||
cumulative_op_counts[std::make_pair(msg, p.first)] += *(p.second)-op_counts[std::make_pair(msg, p.first)];
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
namespace libsnark {
|
||||
|
||||
void start_profiling();
|
||||
long long get_nsec_time();
|
||||
int64_t get_nsec_time();
|
||||
void print_time(const char* msg);
|
||||
void print_header(const char* msg);
|
||||
|
||||
@@ -31,13 +31,13 @@ void print_indent();
|
||||
extern bool inhibit_profiling_info;
|
||||
extern bool inhibit_profiling_counters;
|
||||
extern std::map<std::string, size_t> invocation_counts;
|
||||
extern std::map<std::string, long long> last_times;
|
||||
extern std::map<std::string, long long> cumulative_times;
|
||||
extern std::map<std::string, int64_t> last_times;
|
||||
extern std::map<std::string, int64_t> cumulative_times;
|
||||
|
||||
void clear_profiling_counters();
|
||||
|
||||
void print_cumulative_time_entry(const std::string &key, const long long factor=1);
|
||||
void print_cumulative_times(const long long factor=1);
|
||||
void print_cumulative_time_entry(const std::string &key, const int64_t factor=1);
|
||||
void print_cumulative_times(const int64_t factor=1);
|
||||
void print_cumulative_op_counts(const bool only_fq=false);
|
||||
|
||||
void enter_block(const std::string &msg, const bool indent=true);
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
namespace libsnark {
|
||||
|
||||
size_t log2(size_t n)
|
||||
/* returns ceil(log2(n)), so 1ul<<log2(n) is the smallest power of 2,
|
||||
/* returns ceil(log2(n)), so UINT64_C(1)<<log2(n) is the smallest power of 2,
|
||||
that is not less than n. */
|
||||
{
|
||||
size_t r = ((n & (n-1)) == 0 ? 0 : 1); // add 1 if n is not power of 2
|
||||
@@ -41,20 +41,20 @@ size_t bitreverse(size_t n, const size_t l)
|
||||
return r;
|
||||
}
|
||||
|
||||
bit_vector int_list_to_bits(const std::initializer_list<unsigned long> &l, const size_t wordsize)
|
||||
bit_vector int_list_to_bits(const std::initializer_list<uint64_t> &l, const size_t wordsize)
|
||||
{
|
||||
bit_vector res(wordsize*l.size());
|
||||
for (size_t i = 0; i < l.size(); ++i)
|
||||
{
|
||||
for (size_t j = 0; j < wordsize; ++j)
|
||||
{
|
||||
res[i*wordsize + j] = (*(l.begin()+i) & (1ul<<(wordsize-1-j)));
|
||||
res[i*wordsize + j] = (*(l.begin()+i) & (UINT64_C(1)<<(wordsize-1-j)));
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
long long div_ceil(long long x, long long y)
|
||||
int64_t div_ceil(int64_t x, int64_t y)
|
||||
{
|
||||
return (x + (y-1)) / y;
|
||||
}
|
||||
|
||||
@@ -20,14 +20,14 @@ namespace libsnark {
|
||||
|
||||
typedef std::vector<bool> bit_vector;
|
||||
|
||||
/// returns ceil(log2(n)), so 1ul<<log2(n) is the smallest power of 2, that is not less than n
|
||||
/// returns ceil(log2(n)), so UINT64_C(1)<<log2(n) is the smallest power of 2, that is not less than n
|
||||
size_t log2(size_t n);
|
||||
|
||||
inline size_t exp2(size_t k) { return 1ul << k; }
|
||||
inline size_t exp2(size_t k) { return UINT64_C(1) << k; }
|
||||
|
||||
size_t bitreverse(size_t n, const size_t l);
|
||||
bit_vector int_list_to_bits(const std::initializer_list<unsigned long> &l, const size_t wordsize);
|
||||
long long div_ceil(long long x, long long y);
|
||||
bit_vector int_list_to_bits(const std::initializer_list<uint64_t> &l, const size_t wordsize);
|
||||
int64_t div_ceil(int64_t x, int64_t y);
|
||||
|
||||
bool is_little_endian();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user