SynonymsBot
Synonyms for cilk or Related words with cilk
openmp
openacc
watcom
clojure
nemerle
quickbasic
algol
binutils
freebasic
haxe
rebol
realbasic
ironruby
numpy
ocaml
javac
prolog
jython
ratfor
rexx
msvc
hypertalk
cython
autoit
scipy
ironpython
hypercard
simula
intercal
modula
snobol
zortech
libxml
mingw
jruby
scons
memcpy
cpython
wxpython
interlisp
pthreads
troff
zend
watfor
netwide
invokespecial
wxwidgets
aspectj
hlasm
xojo
Examples of "cilk"
Inlets were removed when
Cilk
became
Cilk
++, and are not present in
Cilk
Plus.
In the original MIT
Cilk
implementation, the first
Cilk
keyword is in fact codice_1, which identifies a function which is written in
Cilk
. Since
Cilk
procedures can call C procedures directly, but C procedures cannot directly call or spawn
Cilk
procedures, this keyword is needed to distinguish
Cilk
code from C code.
Cilk
Plus removes this restriction, as well as the codice_1 keyword, so C and C++ functions can call into
Cilk
Plus code and vice versa.
On July 31, 2009,
Cilk
Arts announced on its web site that its products and engineering team were now part of Intel Corp. Intel and
Cilk
Arts integrated and advanced the technology further resulting in a September 2010 release of Intel
Cilk
Plus.
Cilk
Plus adopts simplifications, proposed by
Cilk
Arts in
Cilk
++, to eliminate the need for several of the original
Cilk
keywords while adding the ability to spawn functions and to deal with variables involved in reduction operations.
Cilk
Plus differs from
Cilk
and
Cilk
++ by adding array extensions, being incorporated in a commercial compiler (from Intel), and compatibility with existing debuggers.
The original
Cilk
language was based on ANSI C, with the addition of
Cilk
-specific keywords to signal parallelism. When the
Cilk
keywords are removed from
Cilk
source code, the result should always be a valid C program, called the "serial elision" (or "C elision") of the full
Cilk
program, with the same semantics as the
Cilk
program running on a single processor. Despite several similarities,
Cilk
is not directly related to AT&T Bell Labs' Concurrent C.
Cilk
++ added an additional construct, the parallel loop, denoted in
Cilk
Plus. These loops look like
The code example above uses the syntax of
Cilk
-5. The original
Cilk
(
Cilk
-1) used a rather different syntax that required programming in an explicit continuation-passing style, and the Fibonacci examples looks as follows:
Originally developed in the 1990s at the Massachusetts Institute of Technology (MIT) in the group of Charles E. Leiserson,
Cilk
was later commercialized as
Cilk
++ by a spinoff company,
Cilk
Arts. That company was subsequently acquired by Intel, which increased compatibility with existing C and C++ code, calling the result
Cilk
Plus.
Below is a recursive implementation of the Fibonacci function in
Cilk
, with parallel recursive calls, which demonstrates the , and keywords. The original
Cilk
required any function using these to be annotated with the keyword, which is gone as of
Cilk
Plus. (
Cilk
program code is not numbered; the numbers have been added only to make the discussion easier to follow.)
Cilk
,
Cilk
++ and
Cilk
Plus are general-purpose programming languages designed for multithreaded parallel computing. They are based on the C and C++ programming languages, which they extend with constructs to express parallel loops and the fork–join idiom.
(In
Cilk
Plus, the keywords are spelled and , or and if the
Cilk
Plus headers are included.)
In April 1994 the three projects were combined and christened "
Cilk
". The name
Cilk
is not an acronym, but an allusion to "nice threads" (silk) and the C programming language. The
Cilk
-1 compiler was released in September 1994.
Cilk
++ differs from
Cilk
in several ways: support for C++, support for loops, and hyperobjects a new construct designed to solve data race problems created by parallel accesses to global variables.
Cilk
++ was proprietary software. Like its predecessor, it was implemented as a
Cilk
-to-C++ compiler. It supported the Microsoft and GNU compilers.
Cilk
Plus's array slicing differs from Fortran's in two ways:
Prior to , the market for
Cilk
was restricted to high-performance computing. The emergence of multicore processors in mainstream computing means that hundreds of millions of new parallel computers are now being shipped every year.
Cilk
Arts was formed to capitalize on that opportunity: in 2006, Leiserson launched
Cilk
Arts to create and bring to market a modern version of
Cilk
that supports the commercial needs of an upcoming generation of programmers. The company closed a Series A venture financing round in October 2007, and its product,
Cilk
++ 1.0, shipped in December, 2008.
The
Cilk
scheduler uses a policy called "work-stealing" to divide procedure execution efficiently among multiple processors. Again, it is easiest to understand if we look first at how
Cilk
code is executed on a single-processor machine.
Cilk
was implemented as a translator to C, targeting the GNU C Compiler (GCC). The last version,
Cilk
5.4.6, is available from the MIT Computer Science and Artificial Intelligence Laboratory (CSAIL), but is no longer supported.
As an example, consider the following trivial fork–join program in
Cilk
-like syntax:
In October 2012 the project was discontinued in favour of other Intel projects:
Cilk
Plus and Threading Building Blocks.
In addition to C++ and Objective-C, Ch,
Cilk
and Unified Parallel C are nearly supersets of C.
The
Cilk
programming language grew out of three separate projects at the MIT Laboratory for Computer Science: