Você está na página 1de 26

CILK PLUS

DISCIPLINA: PROGRAMAO PARALELA E DISTRIBUDA


Luis Gustavo Rotoly de Lima
Nicholas Pereira Sabino
ROTEIRO
O que Cilk Plus
Histria
Funes Principais
Exemplos de Aplicao
Palavras Chave
Exemplo
Escalonamento Work-Stealing
Trabalhos futuros
Concluso
Referncias
O QUE A CILK PLUS?
Intel Cilk Plus uma extenso para C e C + +, que oferece uma maneira rpida e
fcil para aproveitar o poder de ambos multicore e processamento vetorial para
as CPUs modernas.
Possui trs palavras-chave do Cilk Plus fornecem um modelo simples mas
poderosa para programao paralela
projetado para Windows, Linux e OS X
HISTRIA
A linguagem de programao Cilk surgiu de trs projetos separados no Laboratrio
de Cincia da Computao do MIT :
- Trabalho terico sobre escalonamento de aplicaes com multi-threads
- StarTech - programa de xadrez paralelo
- PCM / rosca-C pacote baseado em C para escalonamento de threads
Em 2009 a Cilk foi adquirida pela Intel, para avanar ainda mais a tecnologia
fornecendo uma extenso a linguagem.
Em abril de 1994, os trs projetos foram combinados e batizado de "Cilk, que fora
lanado em setembro do mesmo ano
FUNES PRINCIPAIS
Alta Performance:
- Utiliza do algoritmo de balaceamento de carga chamado Work-Stealing
que oferece um otimo ganho as tarefas paralelas
- Auxilio a vetor destrava o desempenho que estava escondido em seus
processadores
- Poderosos objetos da linguagem que permitem uma boa programao
FUNES PRINCIPAIS
Fcil de Aprender:
- Possui apenas 3 novas palavras-chave para implementar paralelismo de
tarefas
- Semntica Serial torna a compreenso e depurao do programa paralelo
mais fcil
- Notaes de matriz fornecem uma maneira mais natural de expressar o
paralelismo de dados
FUNES PRINCIPAIS
Fcil de Usar :
- Balanceamento de carga automtico fornece um bom
comportamento em ambientes multi-programados
- Algoritmos existentes podem ser facilmente adaptados para
paralelismo com modificaes mnimas
- Linguagem boa e fcil pra programadores de C e C++
EXEMPLO DE APLICAES
Renderio grfico
Simulao em n-processadores
Computao de Matrizes densas e esparsas
Heursticas de Buscas
Evoluo Artificial
Entre outras
COMO ELA FAZ PARA PARARELIZAR?
Utiliza o algoritmo de diviso e conquista
Este algoritmo resolve problemas quebrando-os em sub-problemas (tarefas) que
podem ser resolvidos de forma independente e em seguida, combinar os
resultados
PALAVRAS CHAVE
cilk_for - Permite que as iteraes do corpo do lao sejam executadas em paralelo
cilk_spawn - Especifica que uma chamada de funo pode executar de forma
assncrona, sem exigir que o chamador espere para a volta dos filhos. Esta uma
expresso que da a oportunidade para existir o paralelismo, no obriga-o de
acontecer
cilk_sync - Especifica que todas as chamadas geradas em uma funo devem ser
concludas antes que a execuo continue
REDUCES
Eliminam a disputa de variveis compartilhadas entre as tarefas criando
automaticamente views delas quando necessrio e reduz-las de uma forma livre
de bloqueio
Array Notation
Paralelismo de dados para matrizes ou sees de matrizes.
EXEMPLO FIBONACCI
Cdigo em C
Cdigo em Cilk
EXEMPLO FIBONACCI
EXECUO FIBONACCI MULTI-THREADS
DINNIMAS
ESCALONAMENTO WORK-STEALING DO
CILK
Cada processador mantm um deque de trabalho de threads
prontas, manipulando o fundo do deque como uma pilha.
ESCALONAMENTO WORK-STEALING DO
CILK
Cada processador mantm um deque de trabalho de threads
prontas, manipulando o fundo do deque como uma pilha.
ESCALONAMENTO WORK-STEALING DO
CILK
Cada processador mantm um deque de trabalho de threads
prontas, manipulando o fundo do deque como uma pilha.
ESCALONAMENTO WORK-STEALING DO
CILK
Cada processador mantm um deque de trabalho de threads
prontas, manipulando o fundo do deque como uma pilha.
ESCALONAMENTO WORK-STEALING DO
CILK
Cada processador mantm um deque de trabalho de threads
prontas, manipulando o fundo do deque como uma pilha.
ESCALONAMENTO WORK-STEALING DO
CILK
Cada processador mantm um deque de trabalho de threads
prontas, manipulando o fundo do deque como uma pilha.
ESCALONAMENTO WORK-STEALING DO
CILK
Cada processador mantm um deque de trabalho de threads
prontas, manipulando o fundo do deque como uma pilha.
TRABALHOS FUTUROS PARA O CILK
Construir um escalonador de tarefas que utiliza feedback do paralelismo para
equilibrar os recursos do processador entre as tarefas do Cilk
Desenvolver tambm um escalonador que capaz de alocar recursos do pipe para
os processos Cilk.
Construir apoios na linguagem para comunicao entre os processos Cilk.
CONCLUSO
Cilk uma linguagem de programa multi-threads muito poderosa em
paralelismo de instrues, se bem utilizada, pode reduzir muito o tempo de
execuo do programa.
Infelizmente ela no possui uma maneira de controlar melhor a execuo das
threads.
Tem a imensa vantagem de ser muito fcil de usar, pois programadores de C e
C++ podem facilmente adequar seus programas, alm de possuir comandos
bem simples.
REFERNCIAS
Leiserson C. E. Multithreaded Programming in Cilk. Disponvel em:
<http://supertech.csail.mit.edu/cilk/lecture-1.pdf> Acesso em: 22/07/2014
Intel. Cilk Plus. Disponvel em: <http://www.cilkplus.org> Acesso em:
22/07/2014
Intel Developer Zone. A Quick, Easy and Reliable way to Improve Performance.
Disponvel em: <https://software.intel.com/en-us/intel-cilk-plus> Acesso
em: 22/07/2014
Wikipdia. Cilk Plus. Disponvel em: <http://en.wikipedia.org/wiki/Cilk_Plus>
Acesso em: 22/07/2014
OBRIGADO!