30 if (gettimeofday(&time,NULL)){
33 return (
double)time.tv_sec + (double)time.tv_usec * .000001;
40 int len = strlen(gpu_list);
43 for(i = 0; i < len; ++i){
44 if (gpu_list[i] ==
',') ++*ngpus;
46 gpus = calloc(*ngpus,
sizeof(
int));
47 for(i = 0; i < *ngpus; ++i){
48 gpus[i] = atoi(gpu_list);
49 gpu_list = strchr(gpu_list,
',')+1;
52 gpus = calloc(1,
sizeof(
float));
64 FILE *file = fopen(filename,
"r");
66 while((str=
fgetl(file))){
68 map = realloc(map, n*
sizeof(
int));
77 for(i = 0; i < sections; ++i){
78 size_t start = n*i/sections;
79 size_t end = n*(i+1)/sections;
80 size_t num = end-start;
81 shuffle(arr+(start*size), num, size);
88 void *swp = calloc(1, size);
89 for(i = 0; i < n-1; ++i){
90 size_t j = i + rand()/(RAND_MAX / (n-i)+1);
91 memcpy(swp, arr+(j*size), size);
92 memcpy(arr+(j*size), arr+(i*size), size);
93 memcpy(arr+(i*size), swp, size);
99 int *inds = calloc(max-min,
sizeof(
int));
101 for(i = min; i < max; ++i){
104 for(i = min; i < max-1; ++i){
106 int index = i + rand()%(max-i);
107 inds[i] = inds[index];
113 void del_arg(
int argc,
char **argv,
int index)
116 for(i = index; i < argc-1; ++i) argv[i] = argv[i+1];
123 for(i = 0; i < argc; ++i) {
124 if(!argv[i])
continue;
125 if(0==strcmp(argv[i], arg)) {
136 for(i = 0; i < argc-1; ++i){
137 if(!argv[i])
continue;
138 if(0==strcmp(argv[i], arg)){
139 def = atoi(argv[i+1]);
151 for(i = 0; i < argc-1; ++i){
152 if(!argv[i])
continue;
153 if(0==strcmp(argv[i], arg)){
154 def = atof(argv[i+1]);
166 for(i = 0; i < argc-1; ++i){
167 if(!argv[i])
continue;
168 if(0==strcmp(argv[i], arg)){
183 while((next = strchr(c,
'/')))
188 next = strchr(c,
'.');
195 return (c < 58) ? c - 48 : c-87;
199 if (i == 36)
return '.';
200 return (i < 10) ? i + 48 : i + 87;
203 void pm(
int M,
int N,
float *A)
206 for(i =0 ; i < M; ++i){
208 for(j = 0; j < N; ++j){
209 printf(
"%2.4f, ", A[i*N+j]);
218 char buffer[4096] = {0};
221 sprintf(buffer,
"%s", str);
222 if(!(p = strstr(buffer, orig))){
223 sprintf(output,
"%s", str);
229 sprintf(output,
"%s%s%s", buffer, rep, p+strlen(orig));
234 return (
float)clocks/CLOCKS_PER_SEC;
237 void top_k(
float *a,
int n,
int k,
int *index)
240 for(j = 0; j < k; ++j) index[j] = -1;
241 for(i = 0; i < n; ++i){
243 for(j = 0; j < k; ++j){
244 if((index[j] < 0) || a[curr] > a[index[j]]){
262 FILE *fp = fopen(filename,
"rb");
265 fseek(fp, 0, SEEK_END);
267 fseek(fp, 0, SEEK_SET);
269 unsigned char *text = calloc(size+1,
sizeof(
char));
270 fread(text, 1, size, fp);
277 fprintf(stderr,
"Malloc error\n");
283 fprintf(stderr,
"Couldn't open file: %s\n", s);
290 size_t len = strlen(s);
293 for(i = 0; i < len; ++i){
305 size_t len = strlen(s);
307 for(i = 0; i < len; ++i){
309 if(c==
' '||c==
'\t'||c==
'\n') ++offset;
310 else s[i-offset] = c;
312 s[len-offset] =
'\0';
318 size_t len = strlen(s);
320 for(i = 0; i < len; ++i){
323 else s[i-offset] = c;
325 s[len-offset] =
'\0';
331 for(i = 0; i < n; ++i) free(ptrs[i]);
337 if(feof(fp))
return 0;
339 char *line = malloc(size*
sizeof(
char));
340 if(!fgets(line, size, fp)){
345 size_t curr = strlen(line);
347 while((line[curr-1] !=
'\n') && !feof(fp)){
350 line = realloc(line, size*
sizeof(
char));
352 printf(
"%ld\n", size);
356 size_t readsize = size-curr;
357 if(readsize > INT_MAX) readsize = INT_MAX-1;
358 fgets(&line[curr], readsize, fp);
361 if(line[curr-1] ==
'\n') line[curr-1] =
'\0';
369 int next = read(fd, &n,
sizeof(
int));
370 if(next <= 0)
return -1;
376 int next = write(fd, &n,
sizeof(
int));
377 if(next <= 0)
error(
"read failed");
384 int next = read(fd, buffer + n, bytes-n);
385 if(next <= 0)
return 1;
395 size_t next = write(fd, buffer + n, bytes-n);
396 if(next <= 0)
return 1;
406 int next = read(fd, buffer + n, bytes-n);
407 if(next <= 0)
error(
"read failed");
416 size_t next = write(fd, buffer + n, bytes-n);
417 if(next <= 0)
error(
"write failed");
425 char *copy = malloc(strlen(s)+1);
426 strncpy(copy, s, strlen(s)+1);
435 for(c = line, p = line; *c !=
'\0'; ++c){
436 if(*c ==
'"') in = !in;
437 else if(*c ==
',' && !in){
452 for(c = line; !done; ++c){
454 if(*c ==
',' || done) ++count;
461 float *field = calloc(n,
sizeof(
float));
465 for(c = line, p = line; !done; ++c){
467 if(*c ==
',' || done){
469 field[count] = strtod(p, &end);
470 if(p == c) field[count] = nan(
"");
471 if(end != c && (end != c-1 || *end !=
'\r')) field[count] = nan(
"");
483 for(i = 0; i < n; ++i) sum += a[i];
496 memset(avg, 0, els*
sizeof(
float));
497 for(j = 0; j < n; ++j){
498 for(i = 0; i < els; ++i){
502 for(i = 0; i < els; ++i){
511 printf(
"MSE: %.6f, Mean: %.6f, Variance: %.6f\n",
mse_array(a, n), m, v);
519 for(i = 0; i < n; ++i) sum += (a[i] - mean)*(a[i]-mean);
520 float variance = sum/n;
526 if (a < min)
return min;
527 if (a > max)
return max;
533 if (a < min)
return min;
534 if (a > max)
return max;
542 for(i = 0; i < n; i += sub) sum += pow(a[i]-b[i], 2);
550 for(i = 0; i < n; ++i) sum += a[i]*a[i];
559 for(i = 0; i < n; ++i){
560 a[i] = (a[i] - mu)/sigma;
569 for(i = 0; i < n; ++i){
578 for(i = 0; i < n; ++i){
587 for(i = 0; i < n; ++i){
598 for(i = 0; i < n; ++i){
600 if (r <= 0)
return i;
607 if(n <= 0)
return -1;
610 for(i = 1; i < n; ++i){
621 if(n <= 0)
return -1;
624 for(i = 1; i < n; ++i){
636 for(i = 0; i < n; ++i){
637 if(a[i] == val)
return i;
649 int r = (rand()%(max - min + 1)) + min;
656 static int haveSpare = 0;
657 static double rand1, rand2;
662 return sqrt(rand1) * sin(rand2);
667 rand1 = rand() / ((double) RAND_MAX);
668 if(rand1 < 1e-100) rand1 = 1e-100;
669 rand1 = -2 * log(rand1);
670 rand2 = (rand() / ((double) RAND_MAX)) *
TWO_PI;
672 return sqrt(rand1) * cos(rand2);
688 return ((
size_t)(rand()&0xff) << 56) |
689 ((size_t)(rand()&0xff) << 48) |
690 ((size_t)(rand()&0xff) << 40) |
691 ((size_t)(rand()&0xff) << 32) |
692 ((size_t)(rand()&0xff) << 24) |
693 ((size_t)(rand()&0xff) << 16) |
694 ((size_t)(rand()&0xff) << 8) |
695 ((size_t)(rand()&0xff) << 0);
705 return ((
float)rand()/RAND_MAX * (max - min)) + min;
711 if(rand()%2)
return scale;
718 float **
t = calloc(n,
sizeof(
float*));
719 for(i = 0; i < n; ++i){
720 t[i] = calloc(k,
sizeof(
float));
721 int index = (int)a[i];
int * random_index_order(int min, int max)
void write_int(int fd, int n)
void list_insert(list *l, void *val)
float * parse_fields(char *line, int n)
float constrain(float min, float max, float a)
float rand_scale(float s)
void write_all(int fd, char *buffer, size_t bytes)
float ** one_hot_encode(float *a, int n, int k)
char int_to_alphanum(int i)
int int_index(int *a, int val, int n)
void error(const char *s)
int find_int_arg(int argc, char **argv, char *arg, int def)
void find_replace(char *str, char *orig, char *rep, char *output)
char * basecfg(char *cfgfile)
list * parse_csv_line(char *line)
void top_k(float *a, int n, int k, int *index)
void print_statistics(float *a, int n)
float mean_array(float *a, int n)
void mean_arrays(float **a, int n, int els, float *avg)
int constrain_int(int a, int min, int max)
int alphanum_to_int(char c)
float rand_uniform(float min, float max)
int sample_array(float *a, int n)
int max_int_index(int *a, int n)
void sorta_shuffle(void *arr, size_t n, size_t size, size_t sections)
float sum_array(float *a, int n)
void free_ptrs(void **ptrs, int n)
float sec(clock_t clocks)
char * find_char_arg(int argc, char **argv, char *arg, char *def)
int max_index(float *a, int n)
float find_float_arg(int argc, char **argv, char *arg, float def)
float dist_array(float *a, float *b, int n, int sub)
void shuffle(void *arr, size_t n, size_t size)
void translate_array(float *a, int n, float s)
void read_all(int fd, char *buffer, size_t bytes)
int * read_intlist(char *gpu_list, int *ngpus, int d)
void del_arg(int argc, char **argv, int index)
void strip_char(char *s, char bad)
int read_all_fail(int fd, char *buffer, size_t bytes)
void normalize_array(float *a, int n)
float mse_array(float *a, int n)
int find_arg(int argc, char *argv[], char *arg)
unsigned char * read_file(char *filename)
float mag_array(float *a, int n)
int count_fields(char *line)
double what_time_is_it_now()
list * split_str(char *s, char delim)
int write_all_fail(int fd, char *buffer, size_t bytes)
int rand_int(int min, int max)
void scale_array(float *a, int n, float s)
int * read_map(char *filename)
float variance_array(float *a, int n)
void pm(int M, int N, float *A)
char * copy_string(char *s)