“Uma nova abordagem paradetecção e extração deparalelismo em programas Java”1paralelismo em programas Java”Marcio Machado ...
EstruturaIntroduçãoMotivaçãoLinhas de Pesquisa2Linhas de PesquisaTrabalhos RelacionadosConclusões “The greatest ideas are(...
IntroduçãoA extração de paralelismo para algumas classes deaplicações single-threaded tornou-se um problemaaltamente relev...
Paralelização baseada em CompiladorTécnicas de Paralelizaçãoo DOALL, DOACROSS, DSWP, PS-DSWP, ...A incapacidade destas téc...
Compilação DinâmicaA compilação dinâmica tem algumas desvantagens em relaçãoà compilação estática tradicional, mais especi...
Otimizações dirigidas por feedbackOtimizações automáticas guiadas por profile:Em contraste com as técnicas de otimização t...
Motivação [1]O obstáculo chave na paralelização de aplicações são asdependências existentes entre as instruções do program...
Motivação [2]Latência de 2instruções8Cada threadexecuta umaparte docorpo do laço
Motivação [3]No exemplo abaixo, todas as instruções do laço participamde uma única dependência cíclica (uma única SCC no g...
Motivação [4]O aumento do paralelismo é determinadopelo número (e “custo”) das SCCs no PDGde um laço!10Identificado os laç...
Linhas de PesquisaTrês questões são então levantadas:o Como garantir a semântica do programa ?o Como determinar quais depe...
Paralelização com suporte de STM[1]Lembrando que nosso objetivo é a paralelização de laços:o Nossa proposta modifica o alg...
Paralelização com suporte de STM[2]Similar ao DSWP, construímos o Grafo de Dependências(PDG) e identificamos as Componente...
Exemplo Paralelizado com DSWPDSWP aloca cada SCC a uma thread e insere as operações“produce/consume” para transmitir dados...
Heuristica com STM[1]Diferentemente de DSWP, cada SCC define um chunk docorpo do laço, que por sua vez é encapsulado em um...
Exemplo Paralelizado com STM [1]int id = 1;try {while (node != null) {new taskB (id+1, node);node = node.next;id += 3; }vo...
taskAtaskB taskCExemplo Paralelizado com STM [2]Iteração1tempoId=1 Id=2 Id=347586917123471081191212,5% 50% 37,5%8 “worker”...
Heuristica com STM[2]o No caso de um conflito, a transação com o maior IDé selecionada para ser abortada, podendo ser re-e...
Planejamento ExperimentalO ganho de desempenho é limitado pela SCC crítica. Istoposto, o planejamento experimental tem com...
Seleção de Arestas Críticas[1]Nosso objetivo nesta linha de pesquisa é usar o“Instrumentation Sampling Framework – ISF” e ...
Seleção de Arestas Críticas[2]21
Seleção de Arestas Críticas[3]Instrumentar todasas arestas cujasdependências sãofortes candidataspara especulaçãoInferir s...
Mecanismos de especulação[1]Biased branchspeculation23InfrequentBasic Blockspeculation
Mecanismos de especulação[2]Alias Speculationo Uma analise de Alias indica que dependências dememória podem ocorrer, mesmo...
Exemplo com especulação[1]ListNode findNode (Pair dataPtr) {ListNode nodePtr = head;A: for (; nodePtr != null; nodePtr = n...
Exemplo com especulação[2]ListNode findNode (Pair dataPtr) {ListNode nodePtr = head; int id = 1;try {for (; nodePtr != nul...
taskAtaskBExemplo com especulação[3]Iteração1tempoId=1 Id=23546speeduppotencial = 5x27123476820% 80%5 “worker”threads“send...
Trabalhos relacionados (DSWP)N. Vachharajani, R. Rangan, E. Raman, M. J. Bridges, G. Ottoni, and D. I.August. Speculative ...
Trabalhos relacionados (ISF/AOS)Matthew Arnold, Stephen Fink, David Grove, Michael Hind, and Peter F.Sweeney. Adaptive opt...
Trabalhos relacionados (STM)M. Mehrara, J. Hao, P.-C. Hsu, and S. Mahlke. Parallelizing sequentialB. Carlstrom, J. Chung, ...
Trabalhos relacionados (Outros)J.-S. Yur, B. G. Ryder, and W. Landi. An incremental flow and context-sensitive pointer ali...
ConclusãoEste trabalho apresentou uma nova abordagem paradetecção e extração de paralelismo em programas Java.o O mesmo te...
Próximos SlideShares
Carregando em…5
×

[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo em programas Java

216 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
216
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo em programas Java

  1. 1. “Uma nova abordagem paradetecção e extração deparalelismo em programas Java”1paralelismo em programas Java”Marcio Machado Pereira
  2. 2. EstruturaIntroduçãoMotivaçãoLinhas de Pesquisa2Linhas de PesquisaTrabalhos RelacionadosConclusões “The greatest ideas are(literally) worthless ifyou keep them toyourself”
  3. 3. IntroduçãoA extração de paralelismo para algumas classes deaplicações single-threaded tornou-se um problemaaltamente relevante para a computação moderna. e. g.:o Processamento de Imagens, Multimídia3o Processamento de Imagens, MultimídiaAbordagens baseadas no Modelo de Programaçãoo MPI, OpenMP, TM, HPF, X10, ...Paralelização automática ou semi-automáticao Baseada em compiladoro Compilação Dinâmica
  4. 4. Paralelização baseada em CompiladorTécnicas de Paralelizaçãoo DOALL, DOACROSS, DSWP, PS-DSWP, ...A incapacidade destas técnicas de, até agora,4Técnicas Especulativaso Spec-DSWP, DSWP+, ...A incapacidade destas técnicas de, até agora,proporcionar um bom desempenho em umaampla gama de aplicações é um dos principaisproblemas para que a paralelizaçãoautomática possa ser amplamente adotada.
  5. 5. Compilação DinâmicaA compilação dinâmica tem algumas desvantagens em relaçãoà compilação estática tradicional, mais especificamente, asobrecarga incorrida através da realização da compilação emtempo de execução pode ser substancial.A compilação dinâmica tem algumas desvantagens em relaçãoà compilação estática tradicional, mais especificamente, asobrecarga incorrida através da realização da compilação emtempo de execução pode ser substancial.Otimização Seletiva5Otimização Seletivao aplicação de otimização apenas nas partescríticas do aplicativoOtimização dirigida por feedbacko capacidade de adaptar as otimizações aoambiente de execução atual
  6. 6. Otimizações dirigidas por feedbackOtimizações automáticas guiadas por profile:Em contraste com as técnicas de otimização tradicionais,que apenas usam o código-fonte, otimizações dirigidas porfeedback utilizam-se dos resultados de ensaios do programainstrumentado (profile) para otimizar o código final gerado.Em contraste com as técnicas de otimização tradicionais,que apenas usam o código-fonte, otimizações dirigidas porfeedback utilizam-se dos resultados de ensaios do programainstrumentado (profile) para otimizar o código final gerado.6Otimizações automáticas guiadas por profile:o Coletados offlineAplicação pode não se comportar similar ao treinoo Coletados onlinesobrecarga de coleta de dados instrumentados pode serum problema.
  7. 7. Motivação [1]O obstáculo chave na paralelização de aplicações são asdependências existentes entre as instruções do programa.Considere o exemplo abaixo:71 int cost = 0;2 node = list.head;3 while (node != null) {4 int ncost = visit (node);5 cost += ncost;6 node = node.getNext();7 }3546(a) laço com dependências loop-carried (b) PDG
  8. 8. Motivação [2]Latência de 2instruções8Cada threadexecuta umaparte docorpo do laço
  9. 9. Motivação [3]No exemplo abaixo, todas as instruções do laço participamde uma única dependência cíclica (uma única SCC no grafode dependências). Em função disto, o grafo não pode serparticionado.não ocorre comfrequência91 int cost = 0;2 node = list.head;3 while (cost < threshold && node != null) {4 int ncost = visit (node);5 cost += ncost;6 node = node.getNext();7 }3645(a) laço com dependências loop-carried (b) PDGfrequência
  10. 10. Motivação [4]O aumento do paralelismo é determinadopelo número (e “custo”) das SCCs no PDGde um laço!10Identificado os laços “quentes” do programa,definimos um Plano de Ataque:o Especular a remoção de arestas de dependências demaneira a aumentar o número de SCCs.o Encapsular e executar as SCCs (partes do corpo dolaço ou chunks) na forma de “transações”
  11. 11. Linhas de PesquisaTrês questões são então levantadas:o Como garantir a semântica do programa ?o Como determinar quais dependências podem serespeculadas? e;11especuladas? e;o Como manter a corretude do programa na presençade “falhas de especulação” ?Para endereçar estas questões definimos duaslinhas de pesquisa:o “Paralelização com suporte de STM”o “Seleção e Especulação de Arestas Críticas”
  12. 12. Paralelização com suporte de STM[1]Lembrando que nosso objetivo é a paralelização de laços:o Nossa proposta modifica o algoritmo DSWP fazendocom que as partes do corpo do laço que serãoexecutadas em diferentes cores, sejam encapsuladase executadas na forma de transações12e executadas na forma de transaçõesConsidere o exemplo:node = list.head;A: while (node != null) {B: index = calc (node.data, arr[ ]);C: density[index] = update_density (density[index], node.data);D: node = node.next;}
  13. 13. Paralelização com suporte de STM[2]Similar ao DSWP, construímos o Grafo de Dependências(PDG) e identificamos as Componentes FortementeConexas (SCCs):Tempo deexecução1312,5%50%37,5%
  14. 14. Exemplo Paralelizado com DSWPDSWP aloca cada SCC a uma thread e insere as operações“produce/consume” para transmitir dados e controle:node = list.head;while (node != null) {produce (queue[1][2], node);produce (queue[1][3], node);while (true) {node = consume (queue[1][3]);if (!node) break;index = consume (queue[2][3]);14o Com isso, o desempenho dolaço é limitado pela SCCmais lenta: SCCB (1 /50% = 2x)SCCADproduce (queue[1][3], node);node = node.next;}SCCBwhile (true) {node = consume (queue[1][2]);if (!node) break;index = calc (node.data, arr[]);produce (queue[2][3], index);}SCCCindex = consume (queue[2][3]);density[index] = update_density(density[index], node.data);}
  15. 15. Heuristica com STM[1]Diferentemente de DSWP, cada SCC define um chunk docorpo do laço, que por sua vez é encapsulado em umatransação.Para garantir a semântica do programa sequencial,assumimos um modelo de transações ordenadas:15Para garantir a semântica do programa sequencial,assumimos um modelo de transações ordenadas:o Um identificador (ID) crescente é atribuído a cadatransação, definindo o pipeline de execução.o Os chunks são forçados a realizar o “commit” emordem para manter a execução correta e aindapermitir a recuperação parcial do laço.
  16. 16. Exemplo Paralelizado com STM [1]int id = 1;try {while (node != null) {new taskB (id+1, node);node = node.next;id += 3; }void run (id, node) {try { stm.begin ( );index = calc (node.data, arr[ ]);new taskC (id+1,node, index);} catch (stmException e) { }finally {SCCAD==taskA SCCB == taskB:16id += 3; }} catch (stmException e) { }finally {stm.commit(id); }}void run (id, node, index) {try { stm.begin( );density[index] = update_density(density[index], node.data);} catch (stmException e) { }finally {stm.commit(id); }}o Na nossa proposta, odesempenho do laço élimitado somente pelaSCCAB: (1 /12,5% = 8x)SCCC == taskC:
  17. 17. taskAtaskB taskCExemplo Paralelizado com STM [2]Iteração1tempoId=1 Id=2 Id=347586917123471081191212,5% 50% 37,5%8 “worker”threads
  18. 18. Heuristica com STM[2]o No caso de um conflito, a transação com o maior IDé selecionada para ser abortada, podendo ser re-escalonada.o No caso de “falhas de especulação”, as transaçõescom ID maior que a transação corrente são18com ID maior que a transação corrente sãoselecionadas para serem abortadas.Esta decisões são baseadas no fato de que laços “while”,e laços “for” com desvios condicionais, ocorrem com maisfrequência em aplicações de propósito geral:o a execução de cada iteração do laço depende doresultado dos branchs de saída nas iteraçõesanteriores.
  19. 19. Planejamento ExperimentalO ganho de desempenho é limitado pela SCC crítica. Istoposto, o planejamento experimental tem como objetivodeterminar o “upper bond” esperado com a aplicação destaheurística nos benchmarks de mercado (dacapo, specjvm)Utilizando a máquina Virtual Jikes-RVM devemos:19Utilizando a máquina Virtual Jikes-RVM devemos:o Identificar os laços ”quentes” e medir a % média dotempo de execução (p1) dos mesmos em relação aotempo da aplicação (T)o Determinar a % média do tempo de execução (p2) dasSCCs críticas nestes mesmos laçoso speedup: T / (T * (1 – p1 + p2))
  20. 20. Seleção de Arestas Críticas[1]Nosso objetivo nesta linha de pesquisa é usar o“Instrumentation Sampling Framework – ISF” e o“Adaptive Optimization System – AOS”, presentes namáquina Virtual Jikes-RVM para prover,respectivamente, um Profile eficiente e um contexto20respectivamente, um Profile eficiente e um contextopara a implementação dos “mecanismos de especulação”,e.g.:o Biased Branch Speculationo Infrequent Basic Block Speculationo Alias Speculation
  21. 21. Seleção de Arestas Críticas[2]21
  22. 22. Seleção de Arestas Críticas[3]Instrumentar todasas arestas cujasdependências sãofortes candidataspara especulaçãoInferir se asmesmas tem suafrequência deexecução baixa(<= threshold)22fortes candidataspara especulaçãoexecução baixa(<= threshold)ISFEspecular asde especulaçãoEspecular asdependênciasselecionadas e inserircódigo paratratamento das falhasde especulaçãoAOS
  23. 23. Mecanismos de especulação[1]Biased branchspeculation23InfrequentBasic Blockspeculation
  24. 24. Mecanismos de especulação[2]Alias Speculationo Uma analise de Alias indica que dependências dememória podem ocorrer, mesmo que tais dependênciasse manifestem raramente na prática. Porém, com o uso24se manifestem raramente na prática. Porém, com o usode instrumentação adequada no código, com o suportedos frameworks ISF e AOS, podemos estimar afrequência com que um Alias ocorre. Isto posto, o“controle de especulação” poderá instruir o compiladora remover esta aresta do grafo de dependências,aumentando potencialmente assim o número de SCCse, consequentemente, o nível de paralelização.
  25. 25. Exemplo com especulação[1]ListNode findNode (Pair dataPtr) {ListNode nodePtr = head;A: for (; nodePtr != null; nodePtr = nodePtr.nextPtr) {B: if (nodePtr.dataPtr.firstPtr.compareTo(dataPtr.firstPtr) >= 0) {C: return nodePtr; }D: }25D: }return null;}Este ramo seráexecutado umaúnica vez SCCADSCCBCTempo deexecução20%80%
  26. 26. Exemplo com especulação[2]ListNode findNode (Pair dataPtr) {ListNode nodePtr = head; int id = 1;try {for (; nodePtr != null; nodePtr = nodePtr.nextPtr)new taskB (id+1, nodePtr, dataPtr); id += 2;}catch (stmAbort e) {stm.abortAll( ); nodePtr = fndPtr; }static ListNodefndPtr = null;“Fila detaskA:26void run (int id, ListNode nodePtr, Pair dataPtr) throws stm.abort {bool isFound = false;try { stm.begin( );if (nodePtr.dataPtr.firstPtr.compareTo(dataPtr.firstPtr) >= 0){ isFound = true; fndPtr = nodePtr; }}catch (stmException e) { }finally { stm.commit(id); if (isFound) throw new stmAbort( ); }}stm.abortAll( ); nodePtr = fndPtr; }finally { return nodePtr; }}“Fila decomunicação”taskB:
  27. 27. taskAtaskBExemplo com especulação[3]Iteração1tempoId=1 Id=23546speeduppotencial = 5x27123476820% 80%5 “worker”threads“send”stmAbortAll()isFound=true
  28. 28. Trabalhos relacionados (DSWP)N. Vachharajani, R. Rangan, E. Raman, M. J. Bridges, G. Ottoni, and D. I.August. Speculative decoupled software pipelining. In Proceedings ofthe 16th International Conference on Parallel Architectures and CompilationG. Ottoni, R. Rangan, A. Stoler, and D. I. August. Automatic threadextraction with decoupled software pipelining. In Proceedings of the38th IEEE/ACM International Symposium on Microarchitecture (MICRO 05).28the 16th International Conference on Parallel Architectures and CompilationTechniques (PACT 07).E. Raman, G. Ottoni, A. Raman. M. J. Bridges, D. I. August. Parallel-StageDecoupled Software Pipelining. In Proceedings of the 6th annualinternational symposium on Code generation and optimization (CGO 08).Jialu Huang, Arun Raman, Thomas B. Jablin, Yun Zhang, Tzu-Han Hung, andDavid I. August. 2010. Decoupled software pipelining createsparallelization opportunities. In Proceedings of the 8th annualinternational symposium on Code generation and optimization (CGO 10).
  29. 29. Trabalhos relacionados (ISF/AOS)Matthew Arnold, Stephen Fink, David Grove, Michael Hind, and Peter F.Sweeney. Adaptive optimization in the Jalapeño JVM. In ACMConference on Object-Oriented Programming Systems, Languages, andApplications (OOPSLA 00).Matthew Arnold, Michael Hind, and Barbara G. Ryder. An empirical study of29Matthew Arnold, Michael Hind, and Barbara Ryder. Online feedback-directed optimization of Java. In ACM Conference on Object OrientedProgramming, Systems, Languages and Applications (OOPSLA 02).Matthew Arnold, Michael Hind, and Barbara G. Ryder. An empirical study ofselective optimization. In 13th International Workshop on Languages andCompilers for Parallel Computing (LCPC 00).Matthew Arnold, and Barbara Ryder. A framework for reducing the costof instrumented code. In Conference on Programming Language Designand Implementation (PLDI 01).
  30. 30. Trabalhos relacionados (STM)M. Mehrara, J. Hao, P.-C. Hsu, and S. Mahlke. Parallelizing sequentialB. Carlstrom, J. Chung, H. Chafi, A. McDonald, C. Minh, L. Hammond, C.Kozyrakis, and K. Olukotun. Executing java programs with transactionalmemory. Science of Computer Programming, 63(2):111–129, 2006.30M. Mehrara, J. Hao, P.-C. Hsu, and S. Mahlke. Parallelizing sequentialapplications on commodity hardware using a low-cost softwaretransactional memory. In Proceedings of the conference on Programminglanguage design and implementation (PLDI ’09).A. Raman, H. Kim, T. R. Mason, T. B. Jablin, and D. I. August. Speculativeparallelization using software multi-threaded transactions. InProceedings of the fifteenth Architectural support for programminglanguages and operating systems (ASPLOS ’10).
  31. 31. Trabalhos relacionados (Outros)J.-S. Yur, B. G. Ryder, and W. Landi. An incremental flow and context-sensitive pointer aliasing analysis. In Twenty-first InternationalConference on Software Engineering (ICSE ’99).Chandra Krintz, and Brad Calder. Using Annotations to Reduce DynamicOptimization Time. In Conference on Programming Language Design and31Optimization Time. In Conference on Programming Language Design andImplementation (PLDI ’01).
  32. 32. ConclusãoEste trabalho apresentou uma nova abordagem paradetecção e extração de paralelismo em programas Java.o O mesmo teve por base outros trabalhos na área que compartilhamuma solidez, fruto de vários anos de pesquisa e conhecimento.A abordagem endereça o aumento na exploração do32A abordagem endereça o aumento na exploração doparalelismo de código de forma automatizada.o decisões de projeto podem se mostrar equivocadas, o que não é detodo improvável em um trabalho de tal extensão e escopo.o se os equívocos forem sustados e se ao menos algumas dasavaliações e conclusões se mostrarem promissoras, teremosatingido nosso objetivo.Marcio Machado Pereira

×