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.
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;
do{
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.
Topics
- 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.