A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Treinamento no GRADEp Framework Master-Worker.

Apresentações semelhantes


Apresentação em tema: "Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Treinamento no GRADEp Framework Master-Worker."— Transcrição da apresentação:

1 Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Treinamento no GRADEp Framework Master-Worker

2 Slide 2 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Autoria Autor Gustavo Cestari Frainer Versão (número, data, autor) V1, junho de 2005 V2, 03 de agosto de 2005, Geyer

3 Slide 3 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Sumário da apresentação 1 Paradigma Master-Worker 2 Implementando uma nova Aplicação

4 Slide 4 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Paradigma Master-Worker Visão geral paradigma utilizado em aplicações distribuídas um dado problema é dividido em várias partes menores que podem ser resolvidas independentemente o Gradep chama estas partes menores de Jobs os Jobs são distribuídos entre vários computadores distribuídos (Workers) que os resolvem em paralelo um único processo (Master) controla a distribuição dos Jobs e coleta os resultados dos Workers o Master faz as operações necessárias para juntar os resultados parciais dos Workers em um resultado final

5 Slide 5 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Paradigma Master-Worker Visão geral o paradigma Master-Worker é adequado para resolver problemas cujo trabalho computacional total possa ser quebrado em vários pedaços onde o resultado da computação de um pedaço não depende da computação de nenhum outro pedaço e a ordem de computação dos pedaços não afeta o resultado exemplos de classes de aplicações: procuras em grandes bancos de dados genéticos algoritmos de renderização de imagens computacional fluid dynamics (CFD) simulações de Monte Carlo outros

6 Slide 6 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Paradigma Master-Worker Visão geral o paradigma Master-Worker também é adequado a uma distribuição em um ambiente de Grade já que os altos custos de comunicação presentes neste tipo de ambiente não afetam tanto as aplicações Master-Worker pois não precisam realizar comunicação durante a execução de cada pedaço. GRADEp reconhecendo a popularidade das aplicações que seguem o paradigma Master-Worker e sua adequação ao ambiente de Grade no Gradep disponibilizou-se um framework para facilitar a criação deste tipo de aplicação.

7 Slide 7 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager O Framework MW do Gradep o framework MW é formado por um conjunto de classes e interfaces Java podem ser utilizadas e estendidas para criar uma nova aplicação Master- Worker as classes do framework contêm toda lógica de distribuição e de comunicação com o Middleware o desenvolvedor fica livre para se concentrar no lógica da aplicação em si

8 Slide 8 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager O Framework MW do Gradep para construir uma nova aplicação o desenvolvedor deve executar os seguintes passos: estender a classe abstrata Job objetos Job são passados aos Workers a pedido e retornados a pedido isto é, Workers chamam o Master implementar a interface WorkSplitter implementar a interface WorkJoiner criar uma classe Main que instancie e chame um JobMasterImpl JobMasterImpl cria os Workers opcionalmente o desenvolvedor também pode implementar a interface JobCriteria empregada no cálculo do tamanho do Job

9 Slide 9 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Passo 1: Classe Job a classe Job é abstrata e deve ser estendida, criando uma classe Job da aplicação um Job vai ser um pedaço do problema que está sendo resolvido o qual pode ser computado independentemente de outros Jobs métodos que devem ser implementados: abstract public int getExitCode(); abstract public boolean hasNext(); abstract public void next(); abstract public Object getParams(); abstract public void init(); abstract public void run();

10 Slide 10 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Passo 1: Classe Job Exemplo do PiJob public class PiJob extends Job{ private long hits; private long numIterations; public PiJob(long n){ numIterations = n; this.hits = 0; } public int getExitCode() { return 0; } public boolean hasNext() { return(false); } public void init() { } public void next() { }

11 Slide 11 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Passo 1: Classe Job Exemplo do PiJob public Object getParams() { return new Long(numIterations); } public void run(){ Random rnums = new Random (); double x,y, value; for (long count=0; count< numIterations; count++) { x= Math.abs(rnums.nextDouble()); y= Math.abs(rnums.nextDouble()); if ( (x*x) + (y*y) < 1) hits++; } public long getHits(){ return hits; }

12 Slide 12 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Passo 2: Interface WorkSplitter a classe que implementa WorkSplitter deve criar os Jobs que vão ser processados distribuidamente. métodos que devem ser implementados: public Job getJob(Object params); quando o trabalho tiver sido completo e nao houverem mais Jobs a serem processados, getJob deve retornar null.

13 Slide 13 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Passo 3: Interface WorkJoiner a classe que implementa WorkJoiner deve receber os Jobs com processamento completado extrair e juntar os resultados desses Jobs métodos que devem ser implementados: public void publishResult(Job job) é comum que tanto WorkSplitter quanto WorkJoiner sejam implementados pela mesma classe

14 Slide 14 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Passos 2 e 3 Exemplo: PiJobManager // implementa WorkSplitter e WorkJoin public class PiJobManager implements PiJobMaster { long defaultJobSize; long done; long totalIterations; long remaining; long hits; public PiJobManager(Long totalIterations, Long defaultJobSize){ this.totalIterations = this.remaining = totalIterations.longValue(); done = 0; this.defaultJobSize = defaultJobSize.longValue(); hits = 0; }

15 Slide 15 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Passos 2 e 3 Exemplo: PiJobManager public synchronized Job getJob(Object params){ if(params == null) { js = (remaining < defaultJobSize)? remaining defaultJobSize; remaining -= js; return new PiJob(js); } long jobSize = ((Long)params).longValue(); if (remaining <= 0 ) return null; long js = 0; if(jobSize == 0) {return null;} else{ js = (remaining < jobSize)? remaining : jobSize; remaining -= js; return new PiJob(js); }

16 Slide 16 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Passos 2 e 3 Exemplo: PiJobManager public synchronized void publishResult( Job job) { hits += ((PiJob) job).getHits(); done += job.getNumIterations(); notifyAll(); } public synchronized double getPi() { while(done != totalIterations) { try { wait(); } catch (InterruptedException ie){ System.out.println(ie); } return 4.00*hits/((double)done); }

17 Slide 17 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Passos 4: Main finalmente, é preciso construir uma classe com um método main para a aplicação dentro desta classe um JobMasterImpl deve ser criado construtor do JobMasterImpl: public JobMasterImpl(WorkSplitter ws, WorkJoiner wj, String jobCriteria, int numInitialWorkers, boolean keepCreatingWorkers) parâmetros: ws : Uma instância de uma classe que implemente WorkSplitter wj : Uma instância de uma classe que implemente WorkJoiner

18 Slide 18 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Passos 4: Main jobCriteria: uma String com o nome da classe que vai definir os parâmetros para getJob use FixedJobCriteria se nenhuma classe especial tiver sido criada para a aplicação numInitialWorkers: número de workers a serem criados inicialmente

19 Slide 19 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Passos 4: Main keepCreatingWorkers: se for verdadeiro o JobMaster vai continuar criando workers nos computadores disponíveis da célula mesmo depois de já tiver criado os iniciais e novos computadores se tornarem disponíveis no meio da execução eles também vão ser utilizados uma vez criado o JobMasterImpl, o seu método starterWorkerCreation deve ser chamado para iniciar a criação dos Workers

20 Slide 20 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Passos 4: Main Exemplo: Pi public static void Main (String[] args){ PiJobManager manager = new PiJobManager(1000000,10000) JobMaster master = new JobMasterImpl(manager,manager,FixedJobCriteria,1,true); master.startWorkerCreation(); System.out.println(Pi is:+manager.getPi()); }

21 Slide 21 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Passo Opcional: JobCriteria o JobCriteria é utilizado para obter o objeto params que é passado para o getJob comumente o objeto params define o tamanho do Job (número de iterações no caso do Pi) FixedJobCriteria simplesmente mantêm sempre o mesmo parâmetro o desenvolvedor pode implementar um novo JobCriteria para sua aplicação que, por exemplo, aumente o tamanho do Job se um processador estiver terminando seus Jobs muito rápido

22 Slide 22 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Passo Opcional: JobCriteria método da interface JobCriteria: public Object guessNewJobSize(Job currJob, long elapsedtime, long timeGoal); currJob o Job que acabou de ser processado elapsedTime quanto tempo ele demorou para ser processado timeGoal um valor definido pela aplicação de quanto tempo um Job deveria demorar para ser processado retorno vai ser o parâmetro utilizado para definir o próximo Job deste processador

23 Slide 23 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Treinamento no GRADEp Framework Master-Worker


Carregar ppt "Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Treinamento no GRADEp Framework Master-Worker."

Apresentações semelhantes


Anúncios Google