/mobile Handheld Friendly website
Ubuntu : Intel® Q6600® quad-core |
Each table row shows performance measurements for this ATS program with a particular command-line input value N.
| N | CPU secs | Elapsed secs | Memory KB | Code B | ≈ CPU Load |
|---|---|---|---|---|---|
| 250,000 | 0.97 | 0.29 | 320 | 3810 | 83% 82% 83% 93% |
| 2,500,000 | 6.76 | 1.95 | 49,608 | 3810 | 86% 83% 96% 85% |
| 25,000,000 | 54.99 | 16.09 | 159,484 | 3810 | 83% 81% 82% 98% |
Read the ↓ make, command line, and program output logs to see how this program was run.
Read k-nucleotide benchmark to see what this program should do.
ATS/Anairiats version 0.2.8
(* ** The Computer Language Benchmarks Game ** http://benchmarksgame.alioth.debian.org/ ** ** contributed by Hongwei Xi ** ** compilation command: ** atscc -D_GNU_SOURCE -D_ATS_MULTITHREAD -D_ATS_GCATS -O3 -o k-nucleotide3_smp -lpthread k-nucleotide3_smp.dats *) (* ****** ****** *) staload "libc/SATS/stdio.sats" staload "libc/SATS/stdlib.sats" staload "libc/SATS/string.sats" staload _(*anonymous*) = "prelude/DATS/array.dats" staload _(*anonymous*) = "prelude/DATS/list_vt.dats" (* ****** ****** *) staload H = "libats/SATS/hashtable_chain.sats" staload _(*anon*) = "libats/DATS/hashtable_chain.dats" (* ****** ****** *) %{^ typedef char *symbol_t ; %} // end of [%{^] (* ****** ****** *) abstype dna_t // boxed type abst@ype symbol_t = $extype "symbol_t" (* ****** ****** *) %{^ ats_void_type print_symbol (symbol_t sym, ats_size_type len) { while (len > 0) { fputc ( *sym, stdout) ; --len ; ++sym ; } return ; } // end of [print_symbol] %} // end of [%{^] extern fun print_symbol (sym: symbol_t, len: size_t): void = "print_symbol" // end of [print_symbol] (* ****** ****** *) %{^ size_t the_symlen = 0 ; ats_size_type symlen_get () { return the_symlen ; } ats_void_type symlen_set (ats_size_type len) { the_symlen = len ; return ; } // end of [symlen_set] %} // end of [%{^] extern fun symlen_get ():<> size_t = "symlen_get" extern fun symlen_set (len: size_t):<> void = "symlen_set" (* ****** ****** *) %{^ // a commonly used simple hash function static // inline ats_ulint_type hash_symbol_len ( symbol_t sym, ats_size_type len ) { unsigned long int hash_val = 31415927UL ; while (len >= 4) { hash_val += hash_val * 33 ; hash_val += sym[0] << 24 ; hash_val += sym[1] << 16 ; hash_val += sym[2] << 8 ; hash_val += sym[3] ; sym += 4 ; len -= 4 ; } // end of [while] if (len >= 2) { hash_val = hash_val * 33 + (sym[0] << 8) + sym[1] ; sym += 2 ; len -= 2 ; } // end of [if] if (len >= 1) { hash_val = hash_val * 33 + sym[0] ; } // end of [while] return hash_val ; } // end of [hash_symbol_len] %} // end of [%{^] extern fun hash_symbol_len (sym: symbol_t, len: size_t):<> ulint = "hash_symbol_len" // end of [hash_symbol] (* ****** ****** *) implement $H.hash_key<symbol_t> (x, _) = hash_symbol_len (x, symlen_get ()) // end of [implement] implement $H.equal_key_key<symbol_t> (x1, x2, _) = let extern castfn __cast (x: symbol_t):<> string val x1 = __cast x1 and x2 = __cast x2 val k = symlen_get () val k = size1_of_size (k) in strncmp (x1, x2, k) = 0 end // end of [implement] (* ****** ****** *) viewtypedef symtbl (l:addr) = $H.HASHTBLptr (symbol_t, int, l) viewtypedef symtbl0 = [l:agez] symtbl l viewtypedef symtbl1 = [l:addr | l > null] symtbl l (* ****** ****** *) extern fun succ_symbol (x: symbol_t): symbol_t = "mac#atspre_psucc" extern fun add_symbol_size (x: symbol_t, n: size_t): symbol_t = "mac#atspre_padd_size" fn dna_count_one {l:agz} {n1,n2:nat} (tbl: !symtbl l, dna: dna_t, n1: size_t n1, n2: size_t n2): void = let var n1: size_t = n1 val sym0: symbol_t = __cast (dna) where { extern castfn __cast (x: dna_t): symbol_t } // end of [var] var sym: symbol_t = add_symbol_size (sym0, n1) in while (n1 < n2) let val [l_itm:addr] p_itm = $H.hashtbl_search_ref<symbol_t,int> (tbl, sym) val () = if p_itm > null then let prval (fpf, pf) = __assert () where { extern praxi __assert (): (int@l_itm -<prf> void, int@l_itm) } // end of [prval] val () = !p_itm := !p_itm + 1 prval () = fpf (pf) in // nothing end else ( $H.hashtbl_insert (tbl, sym, 1) ) // end of [if] in n1 := n1 + 1; sym := succ_symbol sym end // end of [while] end // end of [dna_count_one] (* ****** ****** *) staload "libats/SATS/parworkshop.sats" staload _ = "libats/DATS/parworkshop.dats" (* ****** ****** *) viewtypedef work = () -<lincloptr1> void viewtypedef WSptr (l:addr) = WORKSHOPptr (work, l) (* ****** ****** *) fun fwork {l:addr} (ws: !WSptr l, wk: &work >> work?): int = let val wk = wk val pfun = __cast (wk) where { extern castfn __cast (wk: !work >> opt (work, i >= 1)): #[i:nat] uintptr i } // end of [val] in if pfun >= (uintptr1_of_uint1)1U then let prval () = opt_unsome {work} (wk) val () = wk () val () = cloptr_free (wk) in 1 // the worker is to continue end else let val u = uint1_of_uintptr1 (pfun) val i = int_of_uint (u) prval () = opt_unnone {work} (wk) prval () = cleanup_top {work} (wk) in ~i // the worker is to pause or quit end // end of [if] end // end of [fwork] (* ****** ****** *) val eqfn = $extval ($H.eqfn symbol_t, "0") val fhash = $extval ($H.hash symbol_t, "0") macdef hastbl_make () = $H.hashtbl_make_hint (fhash, eqfn, 24593) fn dna_count {lws:agz} {n:pos;k:pos} {N:pos} ( ws: !WSptr lws , dna: dna_t , n: size_t n , k: size_t k , N: int N // nthread ) : List_vt (symtbl1) = let val () = symlen_set (k) val INC = ((n + N - 1) / N): size_t val [inc:int] INC = size1_of_size (INC) prval () = __assert () where { extern praxi __assert (): [inc > 0] void } fun split {n1,n2:nat} ( ws: !WSptr lws, n1: size_t n1, n2: size_t n2 ) :<cloref1> List_vt (symtbl1) = if n1 < n2 then let val n11 = min (n1 + INC, n2) val [l:addr] tbl = hastbl_make () extern castfn __ref (x: !symtbl l):<> symtbl l val tbl1 = __ref (tbl) val f = lam (): void =<lincloptr1> () where { val () = dna_count_one (tbl1, dna, n1, n11) prval () = __unref tbl1 where { extern praxi __unref (x: symtbl l): void } } // end of [val] val () = workshop_insert_work (ws, f) in list_vt_cons (tbl, split (ws, n11, n2)) end else list_vt_nil () // end of [split] val res = split (ws, 0, n) val () = workshop_wait_blocked_all (ws) in res end // end of [dna_count] extern fun symtbls_merge (xs: List_vt symtbl1): symtbl0 implement symtbls_merge (xs) = let fun loop {l:addr} {l:agz} (x: !symtbl l, xs: List_vt symtbl1): void = case+ xs of | ~list_vt_cons (x1, xs) => let val xp = $H.ptr_of_HASHTBLptr (x) var !p_clo = @lam (pf: !unit_v | k: symbol_t, i: &int): void =<clo> let val x = __ref (xp) where { extern castfn __ref (x: ptr l):<> symtbl l } val [l_itm:addr] p_itm = $H.hashtbl_search_ref<symbol_t,int> (x, k) val () = if p_itm > null then let prval (fpf, pf) = __assert () where { extern praxi __assert (): (int@l_itm -<prf> void, int@l_itm) } // end of [prval] val () = !p_itm := !p_itm + i prval () = fpf (pf) in // nothing end else ( $H.hashtbl_insert (x, k, i) ) // end of [if] prval () = __unref (x) where { extern praxi __unref (x: symtbl l): void } // end of [prval] in // nothing end // end of [var] prval pf = unit_v () val () = $H.hashtbl_foreach_vclo {unit_v} (pf | x1, !p_clo) prval unit_v () = pf val () = $H.hashtbl_free (x1) in loop (x, xs) end // end of [list_vt_cons] | ~list_vt_nil () => () // end of [loop] in case+ xs of | ~list_vt_cons (x, xs) => let val () = loop (x, xs) in x end // end of [list_vt_cons] | ~list_vt_nil () => __cast (null) where { extern castfn __cast (x: ptr null):<> $H.HASHTBLptr (symbol_t, int, null) } // end of [list_vt_nil] end // end of [symtbls_merge] (* ****** ****** *) typedef symflt = @(symbol_t, float) fn compare_symflt_symflt // [>=] (x1: &symflt, x2: &symflt):<> Sgn = compare_float_float (x2.1, x1.1) // end of [compare_symflt_symflt] viewtypedef frqlst = List_vt symflt (* ****** ****** *) // print and free fun print_free_frqlst (kfs: frqlst, len: size_t): void = begin case+ kfs of | ~list_vt_cons (kf, kfs) => begin print_symbol (kf.0, len); printf (" %.3f\n", @(double_of kf.1)); print_free_frqlst (kfs, len) end // end of [FRQLSTcons] | ~list_vt_nil () => () end // end of [print_free_frqlst] fn write_frequencies {lws:agz} {n,k:pos | k <= n} {N:pos} ( ws: !WSptr lws, dna: dna_t, n: size_t n, k: size_t k, N: int N ) : void = let // val tbls = dna_count (ws, dna, n-k+1, k, N) val tbl = symtbls_merge (tbls) val ptbl = $H.ptr_of_HASHTBLptr tbl val () = assert_errmsg (ptbl > null, ": " + #LOCATION) // var total: int = 0 var !p_clo = @lam (pf: !int@total | k: symbol_t, i: &int): void =<clo> (total := total + i) val () = $H.hashtbl_foreach_vclo {int@total} (view@ total | tbl, !p_clo) val ftotal = float_of total var frqs: frqlst = list_vt_nil () var !p_clo = @lam (pf: !frqlst @ frqs | k: symbol_t, cnt: &int): void =<clo> let val f = (float_of 100) * float_of cnt / ftotal; val kf = @(k, f) in frqs := list_vt_cons (kf, frqs) end // end of [f] val () = $H.hashtbl_foreach_vclo {frqlst@frqs} (view@ frqs | tbl, !p_clo) val () = $H.hashtbl_free (tbl) val () = list_vt_quicksort (frqs, compare_symflt_symflt) in print_free_frqlst (frqs, symlen_get ()) end // end of [write_frequencies] (* ****** ****** *) fn write_count {lws:agz} {n,k:pos} {N:pos} ( ws: !WSptr lws, dna: dna_t, n: size_t n, seq: string k, N: int N ): void = let val k = string1_length seq val () = assert_errmsg (k <= n, ": " + #LOCATION) // val tbls = dna_count (ws, dna, n-k+1, k, N) val seq1 = __cast seq where { extern castfn __cast (x: string): symbol_t } // end of [var] val cnt = loop (tbls, seq1, 0) where { fun loop (xs: List_vt symtbl1, seq: symbol_t, cnt: int): int = case+ xs of | ~list_vt_cons (x, xs) => let var res : int val ans = $H.hashtbl_search (x, seq, res) val () = $H.hashtbl_free (x) val () = if ans then let prval () = opt_unsome {int} (res) in (*none*) end else let prval () = opt_unnone {int} (res) in res := 0 end : void // end of [val] in loop (xs, seq, cnt + res) end // end of [list_vt_cons] | ~list_vt_nil () => cnt // end of [loop] } // end of [cnt] // in printf ("%d\t%s\n", @(cnt, seq)) end // end of [write_count] (* ****** ****** *) extern fun getline (): string = "__getline" extern fun getrest (sz: &size_t? >> size_t n): #[n:nat] string n = "__getrest" %{$ #define LINEBUFSZ 1024 char theLineBuffer[LINEBUFSZ] ; ats_ptr_type __getline () { void *ptr = fgets (theLineBuffer, LINEBUFSZ, stdin) ; return theLineBuffer ; } /* end of [getline] */ #define RESTBUFSZ (128 * 1024 * 1024) char theRestBuffer[RESTBUFSZ] ; ats_ptr_type __getrest (ats_ref_type p_n) { int c ; size_t i ; char *s ; s = theRestBuffer ; i = 0 ; while ((c = fgetc(stdin)) != EOF) { if (c != '\n') { *s++ = toupper(c) ; i++ ; } } *s = '\000' ; *((size_t*)p_n) = i ; if (i >= RESTBUFSZ) { fprintf (stderr, "exit(ATS): too much data for processing\n") ; exit(1) ; } return theRestBuffer ; } /* end of [__getrest] */ %} // end of [%{^] (* ****** ****** *) fun is_three (s: string): bool = if strncmp (s, ">THREE", 6) = 0 then true else false // end of [is_three] (* ****** ****** *) staload "libc/SATS/sched.sats" staload TYPES = "libc/sys/SATS/types.sats" macdef pid_t = $TYPES.pid_of_int extern fun ncore_get (): int implement ncore_get () = let var cs: cpu_set0_t // uninitialized prval () = cpusetinit (cs) // not a real initialization stavar nset: int val nset = cpusetsize_get (cs) val () = assert_errmsg (nset >= 2, ": " + #LOCATION) val err = sched_getaffinity ((pid_t)0, nset, cs) var count: Nat = 0 var i: natLte 16 // uninitialized val () = for* (cs: cpu_set_t nset) => (i := 0; i < 16; i := i + 1) if (CPU_ISSET (i, cs) > 0) then count := count + 1 // end of [val] in count end // end of [ncore_get] (* ****** ****** *) #define QSZ 1024 implement main (argc, argv) = let // val () = gc_chunk_count_limit_set (1 << 15) val () = gc_chunk_count_limit_max_set (~1) // no max // val ncore = ncore_get () val nworker = (if (argc >= 2) then int_of argv.[1] else 0): int val nworker : int = if nworker > 0 then nworker else ncore val nworker = int1_of_int (nworker) val () = assert_errmsg (nworker > 0, ": " + #LOCATION) // fun dna_three_get (n: &size_t? >> size_t n): #[n:nat] string n = let val s = getline (); val is3 = is_three (s) in if is3 then getrest (n) else dna_three_get (n) end // end of [dna_three_get] var n: size_t // uninitialized val dna_three = dna_three_get (n) val () = assert_errmsg (n >= 2, ": " + #LOCATION) (* val () = (prerr "main: n = "; prerr n; prerr_newline ()) *) val dna3 = dna_of_string dna_three where { extern castfn dna_of_string (str: string): dna_t } // end of [val] // // val () = (print "nworker = "; print nworker; print_newline ()) // val ws = workshop_make<work> (QSZ, fwork) val _err = workshop_add_nworker (ws, nworker) val () = assert_errmsg (_err = 0, ": " + #LOCATION) // val () = write_frequencies (ws, dna3, n, 1, nworker) val () = print_newline () val () = write_frequencies (ws, dna3, n, 2, nworker) val () = print_newline () val () = write_count (ws, dna3, n, "GGT", nworker) val () = write_count (ws, dna3, n, "GGTA", nworker) val () = write_count (ws, dna3, n, "GGTATT", nworker) val () = write_count (ws, dna3, n, "GGTATTTTAATT", nworker) val () = write_count (ws, dna3, n, "GGTATTTTAATTTATAGT", nworker) // var i: Nat = 0 val () = while (i < nworker) let val _quit = $extval (work, "(void*)0") val () = workshop_insert_work (ws, _quit) in i := i + 1 end // end of [val] val () = workshop_wait_quit_all (ws) val () = workshop_free_vt_exn (ws) in // nothing end (* end of [main] *) (* ****** ****** *) (* end of [k-nucleotide3_smp.dats] *)
Wed, 23 Jan 2013 05:09:13 GMT MAKE: /usr/local/src/ats-lang-anairiats-0.2.9/bin/atscc -D_GNU_SOURCE -D_ATS_MULTITHREAD -D_ATS_GCATS -lpthread -pipe -Wall -O3 -fomit-frame-pointer -march=native knucleotide.dats -o knucleotide.ats-3.ats_run /usr/local/src/ats-lang-anairiats-0.2.9/bin/atsopt --output knucleotide_dats.c --dynamic knucleotide.dats /usr/local/src/ats-lang-anairiats-0.2.9/ccomp/runtime/ats_prelude.c: In function ‘ats_pthread_create_detached’: /usr/local/src/ats-lang-anairiats-0.2.9/ccomp/runtime/ats_prelude.c:181:3: warning: implicit declaration of function ‘gc_pthread_create’ [-Wimplicit-function-declaration] In file included from knucleotide_dats.c:19:0: /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/basics.cats: In function ‘atspre_fprint_newline’: /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/basics.cats:271:11: warning: variable ‘n2’ set but not used [-Wunused-but-set-variable] /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/basics.cats:271:7: warning: variable ‘n1’ set but not used [-Wunused-but-set-variable] knucleotide_dats.c: In function ‘hash_key_01946_symbol_t’: knucleotide_dats.c:494:1: warning: label ‘__ats_lab_hash_key_01946_symbol_t’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘equal_key_key_01947_symbol_t’: knucleotide_dats.c:511:1: warning: label ‘__ats_lab_equal_key_key_01947_symbol_t’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘hashtbl_ptr_split_0744_symbol_t_2cats_int_type’: knucleotide_dats.c:529:1: warning: label ‘__ats_lab_hashtbl_ptr_split_0744_symbol_t_2cats_int_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘chain_search_0681_symbol_t_2cats_int_type’: knucleotide_dats.c:574:1: warning: label ‘__ats_lab_3_1’ defined but not used [-Wunused-label] knucleotide_dats.c:555:1: warning: label ‘__ats_lab_2_1’ defined but not used [-Wunused-label] knucleotide_dats.c:553:1: warning: label ‘__ats_lab_2_0’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘hashtbl_ptr_search_ofs_0752_symbol_t_2cats_int_type’: knucleotide_dats.c:593:1: warning: label ‘__ats_lab_hashtbl_ptr_search_ofs_0752_symbol_t_2cats_int_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘hashtbl_search_ref_01953_symbol_t_2cats_int_type’: knucleotide_dats.c:617:1: warning: label ‘__ats_lab_hashtbl_search_ref_01953_symbol_t_2cats_int_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘chain_insert_0690_symbol_t_2cats_int_type’: knucleotide_dats.c:639:1: warning: label ‘__ats_lab_chain_insert_0690_symbol_t_2cats_int_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘hashtbl_ptr_insert_ofs_0780_symbol_t_2cats_int_type’: knucleotide_dats.c:659:1: warning: label ‘__ats_lab_hashtbl_ptr_insert_ofs_0780_symbol_t_2cats_int_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘hashtbl_ptr_insert_chain_0807_symbol_t_2cats_int_type’: knucleotide_dats.c:704:1: warning: label ‘__ats_lab_5_1’ defined but not used [-Wunused-label] knucleotide_dats.c:688:1: warning: label ‘__ats_lab_4_1’ defined but not used [-Wunused-label] knucleotide_dats.c:686:1: warning: label ‘__ats_lab_4_0’ defined but not used [-Wunused-label] knucleotide_dats.c:683:1: warning: label ‘__ats_lab_hashtbl_ptr_insert_chain_0807_symbol_t_2cats_int_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘hashtbl_resize_0836_symbol_t_2cats_int_type’: knucleotide_dats.c:764:1: warning: label ‘__ats_lab_hashtbl_resize_0836_symbol_t_2cats_int_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘hashtbl_resize_double_0845_symbol_t_2cats_int_type’: knucleotide_dats.c:791:1: warning: label ‘__ats_lab_hashtbl_resize_double_0845_symbol_t_2cats_int_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘hashtbl_insert_01954_symbol_t_2cats_int_type’: knucleotide_dats.c:827:1: warning: label ‘__ats_lab_hashtbl_insert_01954_symbol_t_2cats_int_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘dna_count_one_2’: knucleotide_dats.c:896:1: warning: label ‘__ats_lab_1’ defined but not used [-Wunused-label] knucleotide_dats.c:873:1: warning: label ‘__ats_lab_dna_count_one_2’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘fwork_14’: knucleotide_dats.c:915:1: warning: label ‘__ats_lab_fwork_14’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘__ats_fun_17’: knucleotide_dats.c:939:1: warning: label ‘__ats_lab___ats_fun_17’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘DEQUEptrnxt_02056_ats_clo_ptr_type’: knucleotide_dats.c:988:1: warning: label ‘__ats_lab_DEQUEptrnxt_02056_ats_clo_ptr_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘deque_insert_end_02037_ats_clo_ptr_type’: knucleotide_dats.c:1017:1: warning: label ‘__ats_lab_deque_insert_end_02037_ats_clo_ptr_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘queue_insert_02014_ats_clo_ptr_type’: knucleotide_dats.c:1038:1: warning: label ‘__ats_lab_queue_insert_02014_ats_clo_ptr_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘workshop_insert_work_01993_ats_clo_ptr_type’: knucleotide_dats.c:1101:1: warning: label ‘__ats_lab_workshop_insert_work_01993_ats_clo_ptr_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘split_16’: knucleotide_dats.c:1124:1: warning: label ‘__ats_lab_split_16’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘dna_count_15’: knucleotide_dats.c:1184:1: warning: label ‘__ats_lab_dna_count_15’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘__ats_fun_25’: knucleotide_dats.c:1208:1: warning: label ‘__ats_lab___ats_fun_25’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘chain_foreach_vclo_0705_symbol_t_2cats_int_type’: knucleotide_dats.c:1272:1: warning: label ‘__ats_lab_8_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1258:1: warning: label ‘__ats_lab_7_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1256:1: warning: label ‘__ats_lab_7_0’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘hashtbl_foreach_vclo_01956_symbol_t_2cats_int_type’: knucleotide_dats.c:1321:1: warning: label ‘__ats_lab_hashtbl_foreach_vclo_01956_symbol_t_2cats_int_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘loop_24’: knucleotide_dats.c:1366:1: warning: label ‘__ats_lab_9_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1349:1: warning: label ‘__ats_lab_6_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1347:1: warning: label ‘__ats_lab_6_0’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘_2home_2dunham_2benchmarksgame_quadcore_2knucleotide_2tmp_2knucleotide_2edats__symtbls_merge’: knucleotide_dats.c:1400:1: warning: label ‘__ats_lab_11_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1389:1: warning: label ‘__ats_lab_10_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1387:1: warning: label ‘__ats_lab_10_0’ defined but not used [-Wunused-label] knucleotide_dats.c:1384:1: warning: label ‘__ats_lab__2home_2dunham_2benchmarksgame_quadcore_2knucleotide_2tmp_2knucleotide_2edats__symtbls_merge’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘compare_symflt_symflt_29’: knucleotide_dats.c:1418:1: warning: label ‘__ats_lab_compare_symflt_symflt_29’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘print_free_frqlst_30’: knucleotide_dats.c:1463:1: warning: label ‘__ats_lab_13_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1446:1: warning: label ‘__ats_lab_12_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1444:1: warning: label ‘__ats_lab_12_0’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘__ats_fun_32’: knucleotide_dats.c:1479:1: warning: label ‘__ats_lab___ats_fun_32’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘__ats_fun_33’: knucleotide_dats.c:1518:1: warning: label ‘__ats_lab___ats_fun_33’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘loop_36’: knucleotide_dats.c:1582:1: warning: label ‘__ats_lab_15_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1570:1: warning: label ‘__ats_lab_14_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1568:1: warning: label ‘__ats_lab_14_0’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘list_vt_length_01585_anairiats_rec_4’: knucleotide_dats.c:1598:1: warning: label ‘__ats_lab_list_vt_length_01585_anairiats_rec_4’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘loop_38’: knucleotide_dats.c:1633:1: warning: label ‘__ats_lab_17_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1620:1: warning: label ‘__ats_lab_16_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1618:1: warning: label ‘__ats_lab_16_0’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘array_ptr_initialize_lst_01310_anairiats_rec_4’: knucleotide_dats.c:1648:1: warning: label ‘__ats_lab_array_ptr_initialize_lst_01310_anairiats_rec_4’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘loop_39’: knucleotide_dats.c:1687:1: warning: label ‘__ats_lab_19_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1672:1: warning: label ‘__ats_lab_18_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1670:1: warning: label ‘__ats_lab_18_0’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘list_vt_quicksort_01609_anairiats_rec_4’: knucleotide_dats.c:1710:1: warning: label ‘__ats_lab_list_vt_quicksort_01609_anairiats_rec_4’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘write_frequencies_31’: knucleotide_dats.c:1750:1: warning: label ‘__ats_lab_write_frequencies_31’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘hashtbl_search_01952_symbol_t_2cats_int_type’: knucleotide_dats.c:1790:1: warning: label ‘__ats_lab_hashtbl_search_01952_symbol_t_2cats_int_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘loop_41’: knucleotide_dats.c:1845:1: warning: label ‘__ats_lab_21_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1823:1: warning: label ‘__ats_lab_20_1’ defined but not used [-Wunused-label] knucleotide_dats.c:1821:1: warning: label ‘__ats_lab_20_0’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘write_count_40’: knucleotide_dats.c:1869:1: warning: label ‘__ats_lab_write_count_40’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘is_three_43’: knucleotide_dats.c:1893:1: warning: label ‘__ats_lab_is_three_43’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘_2home_2dunham_2benchmarksgame_quadcore_2knucleotide_2tmp_2knucleotide_2edats__ncore_get’: knucleotide_dats.c:1953:1: warning: label ‘__ats_lab_23’ defined but not used [-Wunused-label] knucleotide_dats.c:1950:1: warning: label ‘__ats_lab_24’ defined but not used [-Wunused-label] knucleotide_dats.c:1926:1: warning: label ‘__ats_lab__2home_2dunham_2benchmarksgame_quadcore_2knucleotide_2tmp_2knucleotide_2edats__ncore_get’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘workshop_make_01986_ats_clo_ptr_type’: knucleotide_dats.c:1990:1: warning: label ‘__ats_lab_workshop_make_01986_ats_clo_ptr_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘deque_remove_beg_02040_ats_clo_ptr_type’: knucleotide_dats.c:2010:1: warning: label ‘__ats_lab_deque_remove_beg_02040_ats_clo_ptr_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘queue_remove_02016_ats_clo_ptr_type’: knucleotide_dats.c:2032:1: warning: label ‘__ats_lab_queue_remove_02016_ats_clo_ptr_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘workshop_remove_work_01994_ats_clo_ptr_type’: knucleotide_dats.c:2110:1: warning: label ‘__ats_lab_workshop_remove_work_01994_ats_clo_ptr_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘worker_51’: knucleotide_dats.c:2209:1: warning: label ‘__ats_lab_27_0’ defined but not used [-Wunused-label] knucleotide_dats.c:2175:1: warning: label ‘__ats_lab_26_0’ defined but not used [-Wunused-label] knucleotide_dats.c:2167:1: warning: label ‘__ats_lab_25_1’ defined but not used [-Wunused-label] knucleotide_dats.c:2166:1: warning: label ‘__ats_lab_25_0’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘workshop_add_worker_01991_ats_clo_ptr_type’: knucleotide_dats.c:2253:1: warning: label ‘__ats_lab_workshop_add_worker_01991_ats_clo_ptr_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘workshop_add_nworker_01992_ats_clo_ptr_type’: knucleotide_dats.c:2306:1: warning: label ‘__ats_lab_workshop_add_nworker_01992_ats_clo_ptr_type’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘mainats’: knucleotide_dats.c:2406:1: warning: label ‘__ats_lab_29’ defined but not used [-Wunused-label] knucleotide_dats.c:2356:1: warning: label ‘__ats_lab_mainats’ defined but not used [-Wunused-label] knucleotide_dats.c: In function ‘__getline’: knucleotide_dats.c:2515:9: warning: unused variable ‘ptr’ [-Wunused-variable] In file included from knucleotide_dats.c:30:0: knucleotide_dats.c: At top level: /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/printf.cats:57:1: warning: ‘atspre_fprintf_err’ defined but not used [-Wunused-function] /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/printf.cats:69:1: warning: ‘atspre_fprintf_exn’ defined but not used [-Wunused-function] /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/printf.cats:105:1: warning: ‘atspre_prerrf_exn’ defined but not used [-Wunused-function] In file included from knucleotide_dats.c:33:0: /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/string.cats:351:14: warning: ‘atspre_stropt_none’ defined but not used [-Wunused-variable] knucleotide_dats.c:1163:1: warning: ‘split_16_closure_make’ defined but not used [-Wunused-function] knucleotide_dats.c:408:18: warning: ‘__ats_fun_25_closure_make’ declared ‘static’ but never defined [-Wunused-function] knucleotide_dats.c:426:18: warning: ‘__ats_fun_32_closure_make’ declared ‘static’ but never defined [-Wunused-function] knucleotide_dats.c:432:18: warning: ‘__ats_fun_33_closure_make’ declared ‘static’ but never defined [-Wunused-function] gcc -I/usr/local/src/ats-lang-anairiats-0.2.9/ -I/usr/local/src/ats-lang-anairiats-0.2.9/ccomp/runtime/ -L/usr/local/src/ats-lang-anairiats-0.2.9/ccomp/lib/ /usr/local/src/ats-lang-anairiats-0.2.9/ccomp/runtime/ats_prelude.c -D_GNU_SOURCE -D_ATS_MULTITHREAD -D_ATS_GCATS -lpthread -pipe -Wall -O3 -fomit-frame-pointer -march=native knucleotide_dats.c -o knucleotide.ats-3.ats_run /usr/local/src/ats-lang-anairiats-0.2.9/ccomp/runtime/GCATS/gc_mt.o -lats_mt -lats 0.90s to complete and log all make actions COMMAND LINE: ./knucleotide.ats-3.ats_run 0 < knucleotide-input25000000.txt PROGRAM OUTPUT: A 30.295 T 30.151 C 19.800 G 19.754 AA 9.177 TA 9.132 AT 9.131 TT 9.091 CA 6.002 AC 6.001 AG 5.987 GA 5.984 CT 5.971 TC 5.971 GT 5.957 TG 5.956 CC 3.917 GC 3.911 CG 3.909 GG 3.902 1471758 GGT 446535 GGTA 47336 GGTATT 893 GGTATTTTAATT 893 GGTATTTTAATTTATAGT