• Nenhum resultado encontrado

3.5.1

Algoritmo FASTA

O algoritmo heurístico FASTA é executado em quatro passos para determinar o escore de similaridade entre duas sequências [58].

Grande parte da velocidade e seletividade do algoritmo FASTA são alcançados no primeiro passo, que utiliza uma tabela de busca para localizar todas as identidades ou grupos de identidades entre duas sequências de DNA ou de proteína. O parâmetro ktup determina quantas identidades consecutivas são exigidas em um match. No primeiro passo, as 10 melhores regiões diagonais são encontradas usando uma fórmula baseada no valor do parâmetro ktup e na distância entre os matches [58].

No segundo passo, as 10 regiões diagonais são recomparadas usando uma das matrizes de substituição que permitem trocas de resíduos de forma conservativa com o objetivo de aumentar o escore obtido. Para cada uma destas 10 regiões diagonais uma sub-região com escore máximo é identificada.

No terceiro passo, o algoritmo utiliza a melhor sub-região encontrada para caracte- rizar a similaridade entre as duas sequências. Além disso, ele verifica se mais de uma dessas sub-regiões podem ser unidas. Dadas as localizações das sub-regiões, seus escores e uma penalidade de união (análoga à penalidade de gap), o algoritmo FASTA calcula um alinhamento ótimo de sub-regiões.

No último passo, os melhores conjuntos de sub-regiões são alinhados utilizando uma versão modificada do algoritmo SW (Seção 3.4.2). Essa última comparação considera

todos os possíveis alinhamentos que são aproximações do alinhamento da sub-região com maior escore encontrada anteriormente.

3.5.2

BLAST

BLAST (Basic Local Alignment Search Tool ) [1] é uma heurística que tenta otimizar a medida de similaridade. Permite a criação de um tradeoff entre velocidade do algoritmo e sensibilidade por meio de um parâmetro T . Um valor mais alto desse parâmetro aumenta a velocidade mas também aumenta a probabilidade de regiões de baixa similaridades serem ignoradas.

A idéia central por trás do algoritmo BLAST é que alinhamentos estatisticamente relevantes provavelmente possuem um par de palavras idênticas alinhadas com escore alto. O BLAST primeiro processa o banco de dados por palavras (tipicamente de tamanho 3 três para proteínas) que possuem escore igual ou maior que T quando alinhadas com uma palavra da sequência de busca. Qualquer par de palavras alinhadas que satisfaz esta condição é chamado hit.

O segundo passo do algoritmo avalia se cada um dos hits estão contidos em alinha- mentos com escore alto o suficiente para serem reportados. Isso é feito estendendo-se os hits nas duas direções até que o escore decaia a um valor X menor que o maior escore encontrado até então. Esse passo de extensão dos hits é computacionalmente caro. Com valores de T e X necessários para obter uma sensibilidade razoável na comparação o passo de extensão é responsável por pelo menos 90% do tempo de execução do BLAST. Por esse motivo é recomendável diminuir o número de extensões utilizadas.

No último passo os alinhamentos obtidos são avaliados quanto à sua relevância esta- tística. Os alinhamentos considerados significantes são chamados High-scoring Segment Pairs (HSP). A avaliação utiliza um parâmetro S para ordenar os alinhamentos encon- trados.

Capítulo 4

Alocação de tarefas em ambientes

paralelos

Em sistemas paralelos, um dos problemas importantes é o escalonamento de tarefas, que consiste em determinar em que unidades de processamento as tarefas serão executa- das [71]. No problema de escalonamento de tarefas, existe uma relação de dependência temporal entre as tarefas, que deve ser respeitada. As políticas de escalonamento de ta- refas visam otimizar certos critérios, como minimizar o tempo de resposta ou maximizar o throughput. Um dos principais fatores no desempenho do sistema paralelo é, portanto, o escalonador, responsável por garantir que os recursos disponíveis sejam utilizados por tarefas visando otimizar o critério escolhido.

A alocação de tarefas é um problema muito parecido com o escalonamento de tarefas. A diferença entre os dois consiste no fato de não existir uma ordem de precedência tem- poral na alocação de tarefas, sendo permitido que todas as tarefas comecem a execução ao mesmo tempo. Ambos os problemas são NP-Completos [57] e foram extensivamente estudados na literatura.

4.1

Definições gerais e terminologia

A terminologia abaixo, adaptada de Xhafa e Abraham [75], foi originalmente proposta para sistemas em grid , porém pode ser utilizada também em sistemas distribuídos de maneira geral. A seguir são definidos os conceitos que serão utilizados ao longo desse capítulo.

Tarefa Representa uma unidade computacional (tipicamente um programa e possivel- mente dados associados) que se executa em um nó do sistema. Embora não exista na literatura uma definição exata de tarefa, usualmente é considerada uma unidade esca- lonável indivisível. Tarefas podem ser independentes ou pode haver dependências entre elas.

Job Um job é uma atividade computacional formada por várias tarefas que pode re- quisitar diferentes unidades de processamento, recursos (processamento, quantidade de nós, memória, bibliotecas) e pode possuir restrições, usualmente expressas por meio da

Recurso É basicamente uma entidade computacional (nó ou processador) no qual as tarefas são escalonadas, alocadas e processadas de acordo com as regras adotadas no sistema. Recursos podem possuir as suas próprias características como capacidade de processamento, memória e software instalados. Alguns parâmetros são normalmente atri- buídos aos recursos, entre eles a velocidade de processamento e a carga de trabalho, que podem variar com o tempo. Além disso, os recursos podem pertencer a diferentes domínios administrativos, levando a diferentes políticas de uso e acesso.

Escalonador Componente de software encarregado de fazer o mapeamento de tarefas aos recursos, utilizando múltiplos critérios e configurações do ambiente. Níveis diferentes em escalonadores foram identificados na literatura, incluindo super-escalonadores, meta- escalonadores e escalonadores locais/distribuídos. Como componente importante de qual- quer sistema distribuído, o escalonador interage com os outros componentes: sistema de informação, gerenciamento local de recursos e de rede. Em ambientes distribuídos mais complexos, como por exemplo sistemas em grid , todos esses tipos de escalonadores devem coexistir, e podem possuir diferentes critérios conflitantes. Por isso, existe a necessidade de interação e coordenação entre os diferentes escalonadores para executar as tarefas.

Documentos relacionados