Cover muito animado de Cecilia - Simon e Garfunkel !
25 de janeiro de 2010
Postado por Maicon Saul Faria em 06:36 0 comentários
21 de janeiro de 2010
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 !
Postado por Maicon Saul Faria em 17:45 0 comentários
Marcadores: Mathematics, Science, Script
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.
Postado por Maicon Saul Faria em 17:08 0 comentários
Marcadores: jogos no linux, linux, Mandriva
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):
- implementação do Numerical Recipes do ran2 -> 25 segundos
- implementação da biblioteca GSL do Mersenne Twister -> 15 segundos
- implementação da biblioteca MKL do Mersenne Twister -> 5 segundos
Postado por Maicon Saul Faria em 18:24 4 comentários
Marcadores: C, Computation, Gnu, Intel, linux
Gerando números aleatórios com a biblioteca VSL (MKL)
Exemplo simples do uso dos geradores de números aleatórios da biblioteca MKL,
#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
Postado por Maicon Saul Faria em 17:59 0 comentários
Marcadores: C, Computation, Intel, linux, Mathematics, Science
How-To instalando o icc com MKL
Instalando a MKL
A Math Kernel Library MKL pode ser obtida em um pacote com compilador, debugger etc, ou separadamente. Você pode comprar o pacote (licenças acadêmicas têm desconto), testar ou obter uma licença para testes.
Eu optei pelo pacote completo.
Descompacte o arquivo, ex:
tar xvzf l_cproc_p_11.1.064.tgz
Instale com
cd l_cproc_p_11.1.064/
./install
O processo de instalação é muito simples, basta seguir as instruções.
Dentro do diretório de instalação temos a documentação, exemplo, bibliotecas etc. Sugiro um tour para conhecer o que a Intel oferece nesse pacote, provavelmente você vai encontrar muita coisa interessante.
Bom, aqui vão os passos (how-to) para fazer as coisas funcionarem:
- setar as variáveis de ambiente, o pacote traz um script que faz o serviço, basta executar o script iccvars.sh localizado dentro da pasta bin da instalação. No meu caso /home/maicon/opt. Precisamos indicar também a arquitetura desejada (intel64):
source ./iccvars.sh intel64
para evitar ter que fazer este procedimento para cada terminal aberto, vamos adicionar esse comando no bashrc
echo "source /home/maicon/opt/bin/iccvars.sh intel64" >> .bashrc
esse script inclui o compilador icc no PATH.
Postado por Maicon Saul Faria em 17:30 0 comentários
Marcadores: C, Computation, Intel, linux
