Cilk


Cilk , Cilk++ , Cilk Plus y OpenCilk son lenguajes de programación de propósito general diseñados para computación paralela multiproceso . Se basan en los lenguajes de programación C y C++ , que amplían con construcciones para expresar bucles paralelos y el idioma fork-join .

Originalmente desarrollado en la década de 1990 en el Instituto de Tecnología de Massachusetts (MIT) en el grupo de Charles E. Leiserson , Cilk fue comercializado más tarde como Cilk ++ por una empresa derivada, Cilk Arts. Esa empresa fue adquirida posteriormente por Intel , que aumentó la compatibilidad con el código C y C++ existente, llamando al resultado Cilk Plus. Después de que Intel dejó de admitir Cilk Plus en 2017, el MIT volvió a desarrollar Cilk en forma de OpenCilk.

El lenguaje de programación Cilk surgió de tres proyectos separados en el Laboratorio de Ciencias de la Computación del MIT: [2]

En abril de 1994, los tres proyectos se combinaron y se bautizaron como "Cilk". El nombre Cilk no es un acrónimo, sino una alusión a "nice threads" ( seda ) y al lenguaje de programación C. El compilador Cilk-1 se lanzó en septiembre de 1994.

El lenguaje Cilk original se basó en ANSI C , con la adición de palabras clave específicas de Cilk para señalar el paralelismo. Cuando las palabras clave de Cilk se eliminan del código fuente de Cilk, el resultado siempre debe ser un programa C válido, denominado elisión en serie (o elisión C ) del programa Cilk completo, con la misma semántica que el programa Cilk que se ejecuta en un solo procesador. A pesar de varias similitudes, [ ¿cuál? ] Cilk no está directamente relacionado con Concurrent C de AT&T Bell Labs .

Cilk se implementó como un traductor a C, apuntando al compilador GNU C (GCC). La última versión, Cilk 5.4.6, está disponible en el Laboratorio de Ciencias de la Computación e Inteligencia Artificial (CSAIL) del MIT, pero ya no es compatible. [3]