3 de fevereiro de 2010

Perólas - Opiniões politicas nem tão respeitaveis

Acho que a campanha 2010 já começou, então vamos a diversão.
Hoje eu vou iniciar uma compilação dos comentários hilários sobre política que encontramos por aí.

25 de janeiro de 2010

Cover muito animado de Cecilia - Simon e Garfunkel !


21 de janeiro de 2010

O monstro da pía

Levantei durante a madrugada e me deparei com essa criatura assustadora !


19 de janeiro de 2010

Shell x Listas x Monte Carlo

Muitas vezes é interessante guardas listas de sítios e sortear somente dentro desta lista para evitar gerar números aleatórios que não serão usados. É fácil usar listas em uma dimensão: quando um sítio sai da lista ele pode ser substituído pelo ultimo da fila e esta perde um elemento.

Tudo muito bom, tudo muito legal, mas há um preço a pagar se estamos interessados no comportamento dinâmico... um não, dois !

1 de janeiro de 2010

Jogos remotos com o StreamMyGame

Computação nas nuvens parece ser o caminho das aplicações Desktop. Este modelo prioriza a eficiência energética e a mobilidade.

Os games dos últimos nichos que demandam grande desempenho, tanto nos PCs quanto nos Consoles. Na contramão da busca por mais desempenho e no caminho da computação nas nuvens também para os games, temos o empreendimento da Onlive... eu sei, latência, hubs, wireless etc.

De fato, as dificuldades parecem intangíveis, mas por outro lado temos menores custos de hardware em datacenters, conexões melhores e mais baratas. Somado a isso, observamos o grande progresso dos softwares de compactação e sincronização, um exemplo é o jogo Heroes of Newerth cuja espantosa  sincronização torna possível uma partida competitiva  entre Brasileiros, estadounidenses, o que é impensável no antigo DoTa.

Semana passada o fundador e diretor geral do Online, Steve Perlman, foi convidado a proferir uma palestra sobre o projeto na Columbia University.

Um outro projeto, não tão ousado, é o StreamMyGame eles disponibilizam um software que permite rodar aplicativos como games numa rede local. Por exemplo, você pode jogar jogos pesados na sacada, com seu netbook rodando remotamente um jogo instalado no seu desktop. Eles disponibilizam uma versão com servidor windows e cliente Linux, para PC e para PS3. Por exemplo:
 



Eu pessoalmente fiquei muito curioso em relação aos mecanismo de compactação e sobre a existência de aplicativos opensource que permitam o estudo e o aprimoramento.

Encontrei um projeto muito interessante da Sun, o VirtualGL aliado ao TurboVNC, em breve postarei minha experiência com ele.

26 de dezembro de 2009

Números Aleatórios - Performance

Eu fiz um teste de performance de diferentes implementações de geradores de números aleatórios, comparando a biblioteca GSL e a MKL. O teste consistiu em calcular o tempo necessário para gera 2^30 números aleatórios (float):

  1. implementação do Numerical Recipes do ran2                  ->  25 segundos
  2. implementação da biblioteca GSL do Mersenne Twister  ->  15 segundos
  3. implementação da biblioteca MKL do Mersenne Twister ->  5  segundos
 Este é o fonte do teste


Gerando números aleatórios com a biblioteca VSL (MKL)

Exemplo simples do uso dos geradores de números aleatórios da biblioteca MKL,






exemplo.c


#include <stdio.h>
/////////////////////////////// MKL GSL Mersenne Twister
#include <mkl_vsl.h>

#define BRNG    VSL_BRNG_MT19937 
#define METHOD  0
////////////////////////////////

main ()
{

  int N = 4, sqrtN = 2 , i , j;
  int seed;
  seed = 345;
  
  float ranfloat[sqrtN]; //cada entrada corresponde a um numero aleatorio
  VSLStreamStatePtr stream; 
  vslNewStream (&stream, BRNG, seed); //semeando o gerador
  
  for (i = 0; i < sqrtN; i++)
    {
    vsRngUniform (METHOD, stream, sqrtN, ranfloat, 0.0, 1.0); //carregando sqrtN numeros
    for (j = 0; j < sqrtN; j++)
      {
      printf ("%f\n", ranfloat[sqrtN]);
      }
    }

  return (0);

}





Para compilar basta linkar as bibliotecas adequadas:

ia32,  icc exemplo.c  -lmkl_intel -lmkl_sequential -lmkl_core  -o exemplo.bin

intel64, icc exemplo.c -lmkl_intel_lp64 -lmkl_sequential -lmkl_core  -o exemplo.bin

Pontos importante:
os números são obtidos em stream, a idéia é carrega um vetor a cada chamada da função vsRngUniform, no exemplo carregamos sqrtN números entre 0 e 1 (float) distribuídos uniformente. O desempenho é melhor para sqrtN > 1000.

Outras funções: 
vdRngUniform  -  double
viRngUniform  - int

Outros geradores, funções e mais detalhes podem ser obtidos na documentação da biblioteca Vector Statistical Library VSL