What is Tascell?

Tascell is a parallel a work-stealing based parallel programming language, which has the following advantages.

  • You can efficiently parallelize irregular applications, such as tree/graph search applications.
  • Tascell supports distributed memory environments as well as shared memory environments. It also supports heterogeneous environments and wide-area distributed computing environments where multiple clusters are connected in WAN each other.
  • You can add new computating nodes during the computation.
  • You can write a Tascell program with reasonble programming cost starting with a sequential C program.

Unlike LTC-based multithreaded languges such as Cilk (recently incorporated in Intel Parallel Composer as Cilk Plus), and X10, Tascell worker does not create any threads without any requests. When the worker receives a request, it performs temporarily backtracking (goes back to the past), spawns a new task, returns from the backtracking (restores the time), and it resumes its own task.

Behavior of a Tascell

The SC Language System

The Tascell compiler is implemented as a translater to C based on the SC language system. The SC language is a C language with S-expression-based (Scheme-like) syntax, implemented in Common Lisp. For example, the following C code:
long sum(long *ar, int n){
  long s=0;
  int i=0;
    if (i >= n) break;
    s += ar[i++];
  } while(1);
  return s;

is equivalent to
(def (sum ar n) (fn long (ptr long) int)
  (def s long 0)
  (def i int 0)
  (do-while 1
    (if (>= i n) (break))
    (+= s (aref ar (inc i))) )
  (return s) )

We can implement an extended language to an SC lanugage by wrinting "transformation rules." Transformation rules are written in the extended Common Lisp with the pattern-matching facility over S-expressions.The archive includes transformation rule-sets for realizing several extended SC languages.


May 21, 2014
Updated the download page.
Sep 24, 2013
Our Mercurial repositry has been moved to Bitbucket.
Mar 22, 2012
Web page renewal.
Jan 7, 2009
Added a missing directory src/c2scpp/tests.
Jul 9, 2008
  • Improved performances of code translators remarkably.
  • Fixed some bugs in transformation rule-sets.
Jun 3, 2008
  • Modified some transformation rule-sets as extensions to existing rule-sets.
  • Modified CtoSC preprocessor as an implementation based on the newest version (2.7.4) of MCPP.
Apr 24, 2008
Initial release.