/mobile Handheld Friendly website

 performance measurements

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,0000.970.293203810  83% 82% 83% 93%
2,500,0006.761.9549,6083810  86% 83% 96% 85%
25,000,00054.9916.09159,4843810  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.

 notes

ATS/Anairiats version 0.2.8

 k-nucleotide ATS #3 program source code

(*
** 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] *)

 make, command-line, and program output logs

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

Revised BSD license

  Home   Conclusions   License   Play