Tuesday, May 26, 2009

Windows HPC 2008 WCF Integration: paralelizar uma aplicação de forma transparente

Com que então querem fazer uma aplicação que tome partido das capacidades de processamento distribuído de um cluster sem grande dificuldade?

E não, não estou a falar de coisas de meninos como o Parallel.For() :o)

E que tal experimentarem as capacidades do Windows HPC 2008 para criarem uma SOA WCF service que pode ser consumido pela vossa aplicação?

Esta página contem um vídeo (dividido em 4 partes) que explica passo a passo como distribuir o processamento recorrendo a SOA WCF services no Windows HPC 2008.

Aqui fica o link para o vídeo:
Part 1
Part 2
Part 3
Part 4

Já tinha visto este vídeo no passado mas só agora lhe estou a dar mais atenção por causa de um projecto que estou a desenvolver.

A Microsoft fez avanços ENORMES entre o Windows Compute Cluster Server 2003 (lançado em 2006) e o Windows HPC 2008 (lançado em 2008).

Em apenas 2 anos acrescentaram inúmeras capacidades interessantes como a que aqui descrevi!

Quem não quiser estar a ver o vídeo todo, aqui fica um resumo do que podem fazer:
a) desenvolvem um serviço e fazem deployment dele para um cluster HPC 2008
b) criam um cliente para esse serviço (com menos linhas de código do que as necessárias para fazer, por exemplo, um cliente de Remoting) através da HPC Api
c) configuram os parametros do vosso job (ie: quantos cores, nodes ou sockets querem, se existe "runtime" associado, etc)
d) arrancam com o cliente! :o)

Ao bom velho estilo Microsoft, isto está inteiramente integrado com ferramentas como o Office pelo que é MUITO simples fazer uma spreadsheet no Excel que tome partido de processamento distribuído (pensavam que eu ia dizer que, ao bom velho estilo Microsoft, as coisas falham? :oP Também é verdade, mas a tecnologia está muito boa!).

No vídeo podem ver um exemplo de uma simução Monte Carlo numa spreadsheet Excel. No exemplo, distribuindo a execução por 4 máquinas, a execução baixa de 45 para 4 segundos (o que é um excelente resultado já que a máquina onde fizeram o teste local tinha 4 cores e os outros nós tinham 4 nós cada também, ou seja, aumentaram a capacidade 3 vezes e baixaram o tempo de execução 11 vezes - se a aplicação local só utilizava um core, o aumento para 12 cores melhorou 11 vezes a execução)!

6 comments:

  1. O windows HPC é assim tão bom?
    Quantos windows estão no Top500?
    http://www.top500.org/list/2008/11/100

    Ah, esses avançoes ENORMES como pões no post já são bem velhinhos noutras plataformas HPC. Nisto estão bem atrasadinhos.

    Mas se te facilita a vida, what can I say?

    mas basta de bashing. Aconselhava-te a veres compilers com OpenMP support.
    exemplo:
    queres paralelizar um loop? basta por isto antes do "for":
    #pragma openmp

    é mais fácil e pode ser usado com compiladores que não suportem. Fica só como um simples comentário no programa.

    My 2 cents.

    N.

    ReplyDelete
  2. Atenção, eu não estou a dizer que substituiria um resource manager como o Torque por o HPC 2008!

    No entanto, a verdade é que eles estão a fazer um bom trabalho (especialmente nas novidades entre o CCS 2003 e o HPC 2008)!

    Quanto a haverem poucos Windows no Top500, eu acho que isso irá mudar este ano!

    Está a haver um grande aumento de utilização de sistemas híbridos (e há muitos clusters que estão a adaptar a sua infraestrutura para experimentarem o HPC 2008)!

    Dá lá uma vista de olhos nisto:
    http://www.clusterresources.com/products/adaptive-hpc-suite.php

    Isto é, sem dúvida, o futuro do HPC!

    Quanto a OpenMP (ou qualquer tipo de MPIs), pffuf! Não comparemos a facilidade de programar com isto e utilizar MPI para paralelizar uma aplicação ;o)

    Chegaste a ver os vídeos? Dá uma vista de olhos que vais curtir!

    Isto está MESMO muito bom!

    Hugz,
    Luís

    ReplyDelete
  3. Bem, ainda não tive tempo de ver os videos todos. Ainda só vi parte do primeiro. vou ver os outros e depois comento. :-)
    Outra coisa OpenMP != MPI são coisas diferentes. Mas tenho que concordar que programar em MPI é uma enormíssima dor de cabeça!!

    já agora que tipos de trabalhos tens feito em HPC?

    ReplyDelete
  4. já agora: vi isto no site do Windows HPC server 2008 " In addition to supporting OpenMP, MPI, and Web Services, Windows HPC Server 2008 R2 also supports third-party numerical library ....".
    No fundo isto está tudo ligado LOL

    ReplyDelete
  5. Eu tenho andado a desenvolver ferramentas de integração em HPC (em especial, integrar diferentes resource managers o que permite os tais sistemas híbridos :o)).

    Quanto às features do HPC 2008, ele já trás uma implementação da Microsoft de MPI (MSMpiv2 ou o camandro), tem web services para comunicar directamente com o scheduler deles (através de uma norma que agora me está a falhar o nome? OGF talvez?) e uma API bastante completa!

    Como referi, as inovações do CCS 2003 para o HPC 2008 foram mesmo MUITAS! E isso nota-se na API ;o)

    Hugz,
    Luís

    ReplyDelete
  6. Manda-me um email para luismiguelferreirasilva at gmail.com para falarmos mais um pouco :o)

    Hugz,
    Luís

    ReplyDelete