BRPI0805054A2

An infrastructure for parallel programming of clusters of machines

Abstract

INFRASTRUCTURE FOR PARALLEL PROGRAMMING OF GROUPS OF MACHINES. GridBatch provides an infrastructure support structure that hides the complexities and burdens of programming development and application logic that implements parallel computations of programmer details. A programmer can use GridBatch to implement parallelized computational operations that minimize network bandwidth requirements, and efficiently divide and coordinate processing with putational in a multi-processor configuration. GridBatch provides an efficient and lightweight approach to quickly build parallelized applications using economically viable multiprocessor configurations that achieve the highest performance results.

Term

Projected expiry 30 September 2028.

  1. Priority
  2. Filed
  3. Granted
  4. Today
  5. Projected expiry

21 claims: 1 independent, 20 dependent

  1. 1
    REIVINDICAÇÕES 1. Produto compreendendo:um meio legível por máquina;primeira lógica de operador armazenada no meio e operável para: implementar uma primeira operação de processamento de dados em paralelo sobre múltiplos nós de processamento, a primeira operação de processamento customizada com uma primeira função definida pelo usuário executada nos múltiplos nós de processamento;e segunda lógica de operador armazenada no meio e operável para: implementar uma segunda operação de processamento de dados em paralelo por todos os múltiplos nós de processamento, a segunda operação de processamento de dados customizada com uma segunda função definida pelo usuário executada nos múltiplos nós de processamento.
  2. 2
    Produto de acordo com a reivindicação 1, compreendendo adicionalmente:lógica do administrador do sistema de arquivo armazenada no / meio 7 , e operável para: designar blocos de vetor de um primeiro vetor entre os múltiplos nós de processamento de acordo com uma função unidirecional definida pe-lo-usuári©:-------- - ------------ - —
  3. 3
    Produto de acordo com a reivindicação 2, onde a lógica do administrador do sistema de arquivo é adicionalmente operável para:fornecer informação de localização de nó de bloco do vetor para os blocos de vetor para um programador de trabalho.
  4. 4
    Produto de acordo com a reivindicação 2, onde a lógica do administrador do sistema de arquivo é adicionalmente operável para:rearranjar os blocos do vetor.
  5. 5
    Produto de acordo com a reivindicação 2, onde a lógica do administrador do sistema de arquivo é adicionalmente operável para:manter um mapeamento de IDs de bloco para os múltiplos nós de processamento que identifica cada designação de nó de dados da ID do bloco;e rearranjar os blocos do vetor quando o mapeamento muda.
  6. 6
    Produto de acordo com a reivindicação 1, onde:5 a primeira ou segunda lógica do operador compreende lógica do operador de ligação;a primeira ou segunda função definida pelo usuário compreende uma função de ligação definida pelo usuário;e onde a lógica do operador de ligação é operável para invocar a 10 função de ligação definida pelo usuário em um primeiro registro combinado em um primeiro vetor e um segundo registro combinado em um segundo vetor distribuída entre os múltiplos nós de processamento quando o campo de índice de ligação presente no primeiro vetor e no segundo vetor combina para o primeiro registro combinado e o segundo registro combinado, para 15 obter um resultado de ligação.
  7. 7
    Produto de acordo com a reivindicação 6, compreendendo adicionalmente:lógica de nó máster armazenada no meio e operável para: receber uma chamada de função de ligação;e 20 iniciar geração de tarefas de ligação localmente entre os múltiplos nós de processamento, cada tarefa de ligação operável para seletivamente iniciar a execução da função de ligação definida pelo usuário.
  8. 8
    Produto de acordo com a reivindicação 1, onde:a primeira ou segunda lógica do operador compreende lógica de 25 operador recursivo;a primeira ou segunda função definida pelo usuário compreende uma função recursiva definida pelo usuário;e onde a lógica do operador recursivo é operável para invocar a função recursiva definida pelo usuário iniciando sobre os blocos de vetor 30 localmente nos múltiplos nós de processamento para produzir resultados intermediários, comunicar um subconjunto dos resultados intermediários a um subconjunto dos múltiplos nós de processamento, e iterar: invocar a função recursiva definida pelo usuário nos resultados intermediários para produzir progressivamente menos resultados intermediários;e comunicar a um subconjunto dos progressivamente menos resultados intermediários para um subconjunto dos progressivamente menor dod múltiplos nós de processamento;até um resultado recursivo final ser obtido sobre o primeiro vetor em um nó final no primeiro conjunto de nós.
  9. 9
    Produto de acordo com a reivindicação 8, compreendendo adicionalmente:lógica de nó máster armazenada no meio e operável para: receber uma chamada de função recursiva;e iniciar geração de tarefas de operação recursiva localmente entre os múltiplos nós de processamento, cada tarefa de operação recursiva operável para seletivamente iniciar a execução da função recursiva definida pelo usuário para os blocos de vetor.
  10. 10
    Produto de acordo com a reivindicação 1, onde:a primeira ou segunda lógica do operador compreende lógica do operador de convolução;a primeira ou segunda função definida pelo usuário compreende uma função de convolução definida pelo usuário;e ----- onde a lógica do operador de convolução é operável para invocar a função de convolução definida pelo usuário para cada registro em um primeiro vetor em cada registro em um segundo vetor, para obter um resultado de função de convolução.
  11. 11
    Produto de acordo com a reivindicação 10, compreendendo adicionalmente:lógica de nó máster armazenada no meio e operável para: receber uma chamada de função de convolução;e iniciar geração de tarefas de operação de convolução localmente entre os múltiplos nós de processamento, cada tarefa de operação de convolução operável para seletivamente iniciar execução da função de convolução definida pelo usuário.
  12. 12
    Produto de acordo com a reivindicação 1, onde:a primeira ou segunda lógica do operador compreende distribuir lógica do operador;5 a primeira ou segunda função definida pelo usuário compreende uma função de divisão definida pelo usuário;e onde a lógica do operador de distribuição é operável para redistribuir, de acordo com a função de divisão definida pelo usuário, um primeiro vetor previamente distribuído como primeiros blocos do vetor entre os múlti10 pios nós de processamento, para obter blocos de vetor redistribuídos do primeiro vetor redistribuído entre os múltiplos nós de processamento.
  13. 13
    Produto de acordo com a reivindicação 1, onde:a primeira ou segunda lógica do operador compreende lógica do operador;
  14. 14
    15 a primeira ou segunda função definida pelo usuário compreende uma função de mapa definida pelo usuário; e onde a lógica do operador de mapa é operável para aplicar a função de mapa definida pelo usuário para registros de um vetor distribuído entre os múltiplos nós de processamento. 20 14. Método para processamento de dados em paralelo compreendendo:------ iniciar-a execução-de uma-primeira-operação de processamento de dados em paralelo sobre múltiplos nós de processamento, a primeira operação de processamento de dados customizada com uma primeira função 25 definida pelo usuário executada nos múltiplos nós de processamento;e iniciar a execução de uma segunda operação de processamento de dados em paralelo sobre os múltiplos nós de processamento, a segunda operação de processamento de dados customizada com uma função definida pelo usuário executada nos múltiplos nós de processamento. 30 15. Método de acordo com a reivindicação 14, compreendendo adicionalmente: designar blocos de vetor de um primeiro vetor entre os múltiplos nós de processamento de acordo com uma função unidirecional definida pelo usuário.
  15. 15
    16. Método de acordo com a reivindicação 15, compreendendo adicionalmente:fornecer informação da localização de nó do bloco do vetor para os blocos do vetor a um programador de trabalho.
  16. 16
    17. Método de acordo com a reivindicação 15, compreendendo adicionalmente:rearranjar os blocos de vetor.
  17. 17
    18. Método de acordo com a reivindicação 14, onde:a primeira ou segunda lógica do operador compreende lógica do operador de ligação;a primeira ou segunda função definida pelo usuário compreende uma função de ligação definida pelo usuário;e onde a lógica do operador de ligação invoca a função de ligação definida pelo usuário em um primeiro registro combinado em um primeiro vetor e um segundo registro combinado em um segundo vetor distribuído entre os múltiplos nós de processamento quando um campo de índice de ligação presente no primeiro e no segundo vetor combina com o primeiro registro de combinação e o segundo registro de combinação, para obter um resultado de ligação.
  18. 18
    19. Método de-acordo-com a reivindicação-18, compreendendo adicionalmente:receber uma chamada de função de ligação;e iniciar rearranjo de tarefas de ligação localmente entre os múltiplos nós de processamento, cada tarefa de ligação operável para seletivamente iniciar a execução da função de ligação definida pelo usuário.
  19. 19
    20. Método de acordo com a reivindicação 14, onde:a primeira ou segunda lógica do operador compreende lógica do operador recursivo;a primeira ou segunda função definida pelo usuário compreende uma função recursiva definida pelo usuário;e onde a lógica do operador recursivo invoca a função recursiva definida pelo usuário iniciando sobre os blocos do vetor localmente nos múltiplos nós de processamento para produzir resultados intermediários, comunica um subconjunto dos resultados intermediários para um subconjunto dos 5 múltiplos nós de processamento, e itera: invocar a função do recurso definido pelo usuário nos resultados intermediários para produzir progressivamente menos resultados intermediários;e comunicar um subconjunto dos progressivamente menos resul10 tados intermediários para um subconjunto progressivamente menor dos múltiplos nós de processamento;até um resultado recursivo final ser obtido sobre o primeiro vetor em um nó final no primeiro conjunto de nós.
  20. 20
    21. Método de acordo com a reivindicação 20, compreendendo 15 adicionalmente:receber uma chamada de função recursiva;e iniciar a geração de tarefas de operação recursiva localmente entre os múltiplos nós de processamento, cada tarefa de operação recursiva operável para seletivamente iniciar a execução da função recursiva definida 20 pelo usuário para os blocos de vetor.
  21. 21
    22. Método de acordo com a reivindicação 14, onde:-a-primeira-ou-a-segunda-lógiea-do operador compreende lógica do operação de convolução;a primeira ou a segunda função definida pelo usuário compreen25 de uma função de convolução definida pelo usuário;e onde a lógica do operador de convolução invoca a função de convolução definida pelo usuário para cada registro em um primeiro vetor _em todo registro em um segundo vetor, para obter um resultado da função de convolução. 30 23. Método de acordo com a reivindicação 22, compreendendo adicionalmente: receber uma chamada da função de convolução;e iniciar geração de tarefas de operação de convolução localmente entre os múltiplos nós de processamento, cada tarefa de operação de convolução operável para seletivamente iniciar a execução da função de convolução definida pelo usuário. 5 24. Método de acordo com a reivindicação 14, onde: a primeira ou a segunda lógica do operador compreende distribuir lógica do operador;a primeira ou a segunda função definida pelo usuário compreende uma função de divisão definida pelo usuário;e 10 onde a lógica do operador de distribuição redistribui, de acordo com a função de divisão definida pelo usuário, um primeiro vetor previamente distribuído como blocos do primeiro vetor entre os múltiplos nós de processamento, para obter blocos de vetor redistribuídos do primeiro vetor redistribuído entre os múltiplos nós de processamento. 15 25. Método de acordo com a reivindicação 14, onde: a primeira ou a segunda lógica do operador compreende lógica do operador de mapa;a primeira ou a segunda função definida pelo usuário compreende uma função definida pelo usuário;e 20 onde a lógica do operador do mapa aplica a função do mapa definida pelo usuário para registros de um vetor distribuído entre os múltiplos nós de processamento.........- - —------ _ -------1/12 Nó escravo 120 100 Interface de comunicações 113 112 Processador Armazenagem Ύ“ Cluster de GridBatch Nó máster 2/12 116 Interface de comunicações 211 Processador 210 Memória 215 Lógica de administração 222 do sistema do arquivo Lógica de programador 230 de trabalho Identificador do 272 primeiro vetor Identificador do 274 segundo vetor Função definida 276 pelo usuário Identificador do vetor 280 de resultados índice do vetor Lógica do nó máster 260 Biblioteca de software 262 de GridBatch Solicitação de tarefa 244 Tarefa
Independent claims21