Stoa :: Maicon Saul Faria :: Feeds

abril 21, 2014


casa de ferreiro, espeto de pau

A linux mall é tem muitos produtos interessantes, eu costumo comprar coisas lá, a entrega é muito boa etc.

Estou precisando de um novo router e um adaptador wireless e ao consultar a loja me deparei com um fato muito estranho.
O adaptador parece ter drivers disponíveis para linux (RTL8187B). Custa testar e aprovar ?
Vamos lá, a loja tem um nicho específico !


Dica de Jogos

Rick Rocket, um excelente jogo de combate espacial com gráficos são no estilo cartoon. A história é simple mas envolvente, diversos inimigos, armas e muita criatividade.


Escalon RPG clássico, muito bem feito !


Penumbra, este Jogo tem gráficos de primeira ! Muito suspense e terror, um historia muito bem construída, e recurso de manipulação de objetos inovador !

Uma ultima dica e o jogo IL2 Sturmovik 1946 este não é nativo para linux mas foi apontado como platinum no wineHQ !

Todos os jogos descritos tem demos gratuitos !


Promoção: Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!

Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!
…e também a pen drives, card drives, camisetas geeks, livros e mais! O BR-Linux e o Efetividade lançaram uma campanha para ajudar a Wikimedia Foundation e outros mantenedores de projetos que usamos no dia-a-dia on-line. Se você puder doar diretamente, ou contribuir de outra forma, são sempre melhores opções. Mas se não puder, veja as regras da promoção e participe - quanto mais divulgação, maior será a doação do BR-Linux e do Efetividade, e você ainda concorre a diversos brindes!


Eu vou fazer uma contribuição financeira de 10 doletas, ainda não decidi para quem. Logo reportarei isso !


Using GSL to calculate Nonsymmetric matrices eigenvalues

Here is a example of using GSL - Gnu Scientific Library - to calculate the eigenvalues of a nonsymmetric matrix.
This is a simple example write in C. GSL uses BLAS and can be optimized with ATLAS, so can be used as a real tool for heavy calculations. To get know more about GSL visit http://www.gnu.org/software/gsl/ or the manual page.

Hint: Beware when using GSL or our own linear algebra routine, remember that greats matrices requires greats responsibilities, so keep track of precision errors. Find precision errors will be a great excuse to know more about multiple precision GMP .


#include <stdio.h>
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_math.h>
#include <gsl/gsl_eigen.h>
int main (void)
{
int a=2; //matrix a x a
int i,j;
double cg[a][a];

// Defining matrix
cg[0][0] = 2.;
cg[0][1] = 3.;
cg[1][0] = -1.;
cg[1][1] = 1.;

gsl_matrix *TOTAL = gsl_matrix_alloc (a,a); //Alloc GSL matrix TOTAL

//Setting TOTAL
for (i = 0; i < a; i++)
{
for (j = 0; j < a; j++)
{
gsl_matrix_set (TOTAL, i, j, cg[i][j]);
}
}


gsl_vector_complex *eval = gsl_vector_complex_alloc (a); //Vector whose entries are the eigenvalues
gsl_eigen_nonsymm_workspace *K = gsl_eigen_nonsymm_alloc (a); //alloc work space for GSL nonsymmetric calculations
gsl_eigen_nonsymm (TOTAL,eval,K);
gsl_eigen_nonsymm_free (K);
gsl_matrix_free (TOTAL);


for (i = 0; i < a; i++) /* OUT OF RANGE ERROR */
{
gsl_complex eval_i = gsl_vector_complex_get (eval, i);
printf ("%g + %g*in",GSL_REAL(eval_i),GSL_IMAG(eval_i) );
}
return 0;
}


Matrices Direct Product C GSL routine

This is my amateur routine of Matrices Direct Product or Kronecker Product using GSL. There is no advantage in doing this with GSL library, this is just a exercise.


#include <stdio.h>
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_math.h>

double *produtodireto (int a,int b, double A[a*a],double B[b*b])
{
double *AxB;
AxB = malloc(a*a*b*b*(sizeof *AxB));
int i, j, k,l;
gsl_matrix *M = gsl_matrix_alloc (a,a);
gsl_matrix *L = gsl_matrix_alloc (b,b);
for (i = 0; i < a; i++)
{
for (j = 0; j < a; j++)
{
gsl_matrix_set (M, i, j, A[i+a*j]);
}
}
for (i = 0; i < b; i++)
{
for (j = 0; j < b; j++)
{
gsl_matrix_set (L, i, j, B[i+b*j]);
}
}
gsl_matrix *R = gsl_matrix_alloc (a*b,a*b);
for (i = 0; i < a; i++)
{
for (j = 0; j < a; j++)
{
for (k = 0; k < b; k++)
{
for (l = 0; l < b; l++)
{
gsl_matrix_set (R, b*i+k-b+2,b*j+l-b+2, gsl_matrix_get (M, i, j)*gsl_matrix_get (L, k, l));
}
}
}
}
for (i = 0; i < a*b; i++)
{/* OUT OF RANGE ERRORRRRR */
for (j = 0; j < a*b; j++)
{
AxB[i+a*b*j]=gsl_matrix_get (R, i, j);
}
}

gsl_matrix_free (M);
gsl_matrix_free (L);
gsl_matrix_free (R);
return AxB;
}



PCI Wireless Card Realtek 8185 weak signal

The default module to PCI Wireless Card Realtek 8185 has weak signal, something between 5% to 15%, on Ubuntu 9.04 kernel 2.6.28 .

On Mandriva this network device work very well, don't need to worry !

Nevertheless we can solve this problem installing the modeule from Realtek to this device.

The steps are easy:

  1. Download driver from Realtek .
  2. Unzip the file .
  3. Inside the file do make and make install, then reboot
  4. This is a very dirt step, you must install libssl-dev. Try a cable connection to Internet.
  5. unzip wpa_supplicant-0.5.5.zip
  6. cp defconfig .config
  7. make and cp wpa_cli wpa_supplicant /usr/local/bin
  8. reboot and let the job for the networkmanager





Benchmark - cpus

Simple benchmark, just floating point calculations.
This can be use to evaluate the performance on Monte Carlo application and numerical recursions without memory use.
We calculate the time for 10^9 m=tanh(ran2(&seed)*m), m=sin(ran2(&seed)*m) and if(ran2(&seed)). (seed=234)
Used cpus in decreasing performance order :

Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz
AMD Phenom(tm) II X4 945 Processor @ 3GHz
Intel(R) Xeon(R) CPU X5550 @ 2.67GHz
AMD Athlon(tm) 64 X2 Dual Core Processor 4000+ @ 2.1GHz
Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz - Chipset ICH10
Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz - Chipset ICH7

Intel(R) Core(TM)2 Quad CPU Q9300 @ 2.50GHz - Chipset ICH9
Mobile AMD Sempron(tm) Processor 3500+ @1.8 GHz
Intel(R) Core 2(TM) CPU T7200@ 2.0Ghz



Below graph (incomplete) shows time versus cpu for the if(ran2(&seed)) routine
Also the complete spreadsheet


The fast, the random

The fast and the random

Posted using ShareThis

This is very cool, look at how many bit per second they can resolve !
Put on a USB device and sell it!


Novidades no Cluster Abax (Mecânica Estátistica - IFUSP)

Depois de algumas quedas de energia e da perda de trabalhos dos usuários resolvemos colocar em prática o plano de implementar a suspensão para memória (suspend).
Esse trabalho foi iniciado a algum tempo, na época da atualização do kernel dos nós para a versão 2.6.30, nesta compilação do kernel incluímos o suporte a funcionalidade "suspend".

Agora usamos o daemon apcupsd para executar os scripts de suspensão e religamento dos nós nos eventos de queda e retorno da energia.

Graças a esses aprimoramentos o cluster ficará "adormecido" quando houver falta de luz no IF, este estado dormente pode ser mantido por algumas horas. Logo após o reestabelecimento do fornecimento de energia o Abax voltará ao seu funcionamento normal e os trabalhos voltaram a ser executados a partir do ponto em que foram interrompidos.

Informações técnicas: http://abax.if.usp.br/drupal5/?q=node/45


A história do vencedor

Publicado na Folha de São Paulo Campanha dá rostos de Saddam, Hitler e Stalin ao vírus da Aids
Comentário: tudo muito legal, tudo muito bonito: essa alegoria foi muito boa, entretanto seria historicamente honesto incluir o presidente Truman responsável pela morte covarde de quase 250000 http://en.wikipedia.org/wiki/Atomic_bombings_of_Hiroshima_and_Nagasaki

Eu pensei em colocar algum vídeo sobre o bombardeio nuclear, mas é tão horroroso que eu desisti.

Outro ponto: relendo o artigo da wikipédia recém citado achei um outro sobre o "debate"

Debate ! Como debate ?

http://en.wikipedia.org/wiki/Debate_over_the_atomic_bombings_of_Hiroshima_and_Nagasaki

Há "Supporters"?

Sim há, olhem os pontos justificantes:

* 1.1 Preferable to invasion
* 1.2 Speedy end of war saved lives
* 1.3 Part of "total war"
* 1.4 Japan's leaders refused to surrender

Eu fiquei espantado com o pluralismo extremo da wikipédia, seletivo, pois não existe tal respeito a opinião sobre ataques aos norte americanos ou aliados.


Comportamentos repugnantes

As vezes vemos comportamentos tão repugnantes que fica difícil se pronunciar sobre tamanha maldade.
Como ? Como alguém pode matar um animal a pedradas ?
Sinceramente, eu não sei o que faria com os indivíduos que fizeram isto.

http://terratv.terra.com.br/Noticias/Ciencia/4195-248517/Criatura-bizarra-e-morta-em-cidade-no-Panama.htm


Manuais de Recarga de toner

Consegui alguns manuais sobre recarga de impressoras.
Sirvam-se !



Lista de impressoras:


Manual de Recarga CLP300 Utilizados nos modelos: Samsung 2160N | Samsung
Manual de Recarga HP 1020 Q2612A
Utilizados nos modelos: HP 1010 HP 1012 HP 1015 HP 1018 HP 1020 HP 1022 HP
3015 HP 3030 HP 3050 HP 3052 HP 3055 HP M1005
Manual de Recarga HP 1160
Manual de Recarga HP 1160 Utilizados nos modelos: HP 1320 HP P2015
Manual de Recarga HP 1200 C7115A
Utilizados nos modelos: HP 1200 HP 1300 HP 1150 HP 1000 HP 1200 Hp 1220 HP
3300 HP 3320 HP 3330 HP 3380
Manual de Recarga HP 2600
Manual de Recarga HP 2600 Cartuchos Q600XA Utilizado nos modelos: HP 2605
Manual de Recarga HP 5L
Manual de Recarga HP 5L Utilizados nos modelos: HP 6L
Manual de Recarga HP CB435A CB436A
Manual de Recarga HP CB435A | HP P1005 | HP P1006 Utilizado também nos
modelos: HP CB436A | HP M1120 | HP M1120N | HP M1300 | HP M1522NF | HP P1505
| HP P1505N
Manual de Recarga HP CP1215
Manual de Recarga CP1215 Utilizado nos modelos: HP CP1215 | HP CP1515 | HP
CP1518 | HP CM1312 | CB540A | CB541A | CB542A | CB543A
Manual de Recarga HP P2014 | P2015 Q7553A Q7553X
Utilizados nos modelos: HP P2014 | HP P2015 | HP P2015D | HP P2015N | HP
Manual de Recarga Lexmark E120
Manual de Recarga Lexmark E120
Manual de Recarga Lexmark E210
Manual de Recarga Lexmark E210
Manual de Recarga Lexmark E230
Manual de Recarga Lexmark E230 Utilizados nos modelos: Lexmark E232 Lexmark
E240 Lexmark E330 Lexmark E332 Lexmark E340 Lexmark X340 Lexmark X342
Manual de Recarga Lexmark T640
Manual de Recarga Lexmark T640 Utilizados nos modelos: Lexmark T642n Lexmark
Manual de Recarga para Cartuchos de Tinta Epson
Manual de Recarga para Cartuchos de Tinta Epson. Utlizado nos modelos:
S020093 | S020108 | S020110 | S020118 | S020138 | S020143 | S020147 |
S020187 | S020189 | S020193 | TO01 | TO03 | TO05 | TO07 | TO08 | TO09 | TO17
| TO20 | TO26 | TO27 | TO28 | TO29 | TO37 | TO39 | TO77 | TO78 | TO321 |
TO322 | TO323 | TO324 | TO422 | TO423 | TO424 | TO442 | TO443 | TO444 |
TO472 | TO473 | TO474 | TO332 | TO333 | TO334 | TO335 | TO336 | TO348 |
TO431 | TO441 | TO461 | TO481 | TO482 | TO483 | TO484 | TO485 | TO486 |
TO491 | TO492 | TO493 | TO494 | TO495 | TO496 | TO40120 | TO60120 | TO60220
| TO60320 | TO60420 | TO90120 | T559120 | T559220 | T559320 | T559420 |
T559520 | T559620.
Manual de Recarga para Cartuchos de Tinta HP
Manual para Recarga de Cartuchos de Tinta HP. Utilizado nos modelos HP: HP02
(C8721WN) | HP02 (C8771 / C8772 / C8773) | HP02 (C8774 / C8775) | HP10
(C4844A) | HP11 (C4836) | HP12 (C4804) | HP40 (51640C) | HP14 (C5011) | HP14
(C5010) | HP15 (C6615A) | HP17 (C6625A) | HP20 (C6614A) | HP21 (C9351A) |
HP22 (C9352A) | HP23 (C1823A) | HP25 (51625A) | HP26 (51626A) | HP27
(C8727A) | HP28 (C8728A) | HP29 (51629A) | HP40 (51640A) | HP41 (51641A) |
HP45 (51645A) | HP49 (51649A) | HP56 (C6656) | HP57 (C6657) | HP58 (C6658) |
HP74 / 74XL (CB335 / CB336) | HP75 / 75XL (CB337 / CB338) | HP78 (C6578) |
HP88 (C9385) | HP88 (C6195) | HP88 (C6195) | HP92 (C9362) | HP93 (C9361) |
HP94 (C8765) | HP95 (C8766) | HP96 (C8767) | HP97 (C5768) | HP98 (C9364) |
HP99 (C9369) | HP110 (CB304A).
Manual de Recarga para Cartuchos de Tinta Lexmark
Manual de Recarga para Cartuchos de Tinta Lexmark. Utilizado nos modelos
Lexmark: 10N0016 | 10N0217 | 12A1970 | 18C0032 | 18C0034 | 12A1975 | 12A1980
| 12A1985 | 17G0060 | 12A1990 | 1380619 | 1380620 | 1380630 | 15M0120 |
15M0125 | 15M2619 | 10N0026 | 10N0227 | 18L0000 | 18L0042 | 18C0031 |
18C0033 | 18C0035 | 18C0781.
Manual de Recarga Q396XA Utilizados nos modelos: HP 2500 HP 2550 HP 2840
Manual de Recarga Samsung ML 1630
Utilizados nos modelos: Samsung ML 1630 | Samsung ML 1631 | Samsung SCX 4500
Manual de Recarga Samsung ML1610
Manual de Recarga Samsung ML 1610 Utilizados nos modelos: Samsung ML 2010 |
Samsung SCX 4521F
Manual de Recarga Samsung SCX 4100
Manual de Recarga Samsung SCX 4100 Utilizados nos modelos: Samsung SCX 4016
Samsung SCX 4116 Samsung SCX 4216 Samsung ML1710
Manual de Recarga Samsung SCX 4200
Manual de Recarga Samsung SCX 4200
Manual de Recarga Sharp AL-Series AL 1000
Manual de Recarga Sharp AL-Series AL 1000 Utilizados nos modelos: Sharp AL
4041 Sharp AL 1530 Sharp AL 1540 Sharp AL 1551 Sharp AL 1631 Sharp AL 1641
Sharp AL 1642 Sharp AL 1645 Sharp AL 1651
Manual de Recarga Xerox 3124
Manual de Recarga Xerox 3124
Manual de Recarga Xerox 3200
Manual de Recarga Xerox 3200
Manual de Recarga Xerox 3428
Manual de Recarga Xerox 3428
Manual de Recarga Xerox M15 / 4118
Manual de Recarga Xerox M15 / 4118
Manual de Recarga Xerox N17
Manual de Recarga Xerox N17
Manual de Recarga Xerox PE114
Manual de Recarga Xerox PE114
Manual de Recarga Xerox PE220
Manual de Recarga Xerox PE220
Manual de Recarga Xerox WorkCentre 3119
Manual de Recarga Xerox WorkCentre 3119
Manual de Recarga Xerox XC 830
Manaul de Recarga Xerox XC-830 Utilizados nos modelos: Xerox XC 1040 Xerox
XC 1045 Xerox XC 865
Manual de Recarga, Troca de Chip e Cilindro Samsung SCX 4725
Manual de Recarga, Troca de Chip e Cilindro Samsung SCX 4725
Manual de Troca de Cilindro Xerox M15 / 4118
Manual de Troca de Cilindro Xerox M15 / 4118
Manual do Cilindro Lexmark E230
Manual do Cilindro Lexmark E230 Utilizados nos modelos: Lexmark E232 Lexmark
E240 Lexmark E330 Lexmark E332 Lexmark E340 Lexmark X340


Paisagem de Cientista



A estrutura exótica aparece no tratamento da sequência de Rudin-Shapiro em um contexto muito rebuscado para explicar aqui.


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í.



Vamos lá, comentários sobre o protesto do ex ministro da educação (FHC) Paulo Renato reclamando da Dilma ter falado mal dele no contexto de educação técnica:
--------------------------------------------------------------------------------------------------------------
G Kubo
3 de fevereiro de 2010 às 19:30
Pessoal

Eu tenho enviado varios e-mails para a Direção do PSDB, criticando a falta de esclarecimento como este para as classe C,D e E, onde são pràticamene 60% de leitores ignorantes,Este pessoal não tem e-mail, não le jornal, não assiste tele-jornal, enfim só assistem novela.


Excluindo somente o fato de assistirem novela, eles têm tudo para serem intelectuais bem informados.
-------------------------------------------------------------------------------------------------------------





--------------------------------------------------------------------------------------------------------------
 A grande maioria está no Norte e Nordeste, onde a Bolsa Família e a origem do Presidente fazem a diferença.

O PSDB tem que baixar o nível de comunicação, para atingir este pessoal.
É isso aí, abaixem o nível !!!




Nas eleições anteriores foi a mesma coisa. O PSDB tem esquecer o FHC e partir para a linha de comunicação popukar, caso contrário vai perder outra vez !!!!





--------------------------------------------------------------------------------------------------------------


--------------------------------------------------------------------------------------------------------------
Eu desisto, quero ser PT








Marcel
3 de fevereiro de 2010 às 21:50
Concordo com as opinoess acima manifestadas – nao adianta muito mostrar as mentiras da Dilma – nao vai se ganhar assim a eleicao. Tem que oferecer algo a mais para o Nordeste e os pobres que somente a comida. Tem que confirmar a continuidade do bolsa familia, os reajustes dos valores, e propor por exemplo de construir milhares de pocos artesianas para a populacao do interior, onde pouco chove, funcionando com bombas utilizando energia solar.
E vamo comecar a construir estradas interestaduais como na Europa, concreto de 40 cm de espessura, concreto que nao precise de manutençao durante muitos anos. Investimento para o futuro. Se for por consorcios, eles podem explorar e colocar pedagens durante 15 anos – depois as estradas passam para os governos.


Obligatoriedade para mandar filhos na escola. Na Europa os pais ficam presos se nao mandam os filhos na escola. Aumentar bolsa filho. Ensino de cultura nas escolas.


E tem muitas ideias mais para ganhar a eleicao, pois nao pode continuar assim.

--------------------------------------------------------------------------------------------------------------


--------------------------------------------------------------------------------------------------------------
Morra meu amado povo !

Rosângela Medeiros
3 de fevereiro de 2010 às 22:02
Boa noite.
Não SUPORTO mais ouvir esta palavra: POVO.
O POVO no BRASIL foi transformado em massa de manobra de politicos corruptos,e é a palavra mais usada por quem faz lavagem cerebral na MASSA.POVO, POBRE são palavras que não podemos mais usar.
SOMOS CIDADÃOS, temos direitos a EDUCAÇÃO, SAÚDE, TRANSPORTE, SEGURANÇA de QUALIDADE.
O BRASIL de hoje vive uma GUERRA CIVIL como nunca dantes neste PAIS.NOSSOS jovens estão sendo EXTERMINADOS pelas esquinas, becos, favelas e praças públicas.
Não TEMOS educação de qualidade, que possa interessar a estes jovens.PRECISAMOS de remunerar os PROFESSORES e valoriza-los realmente.NÓS aposentados precisamos de salários dignos e não esta miséria que ganhamos, e que não dá condições de viver com dignidade.O PSDB que criou o FATOR PREVIDENCIÁRIO pode ter um projeto acabando com o mesmo, afinal são 12 milhões de APOSENTADOS, é voto pra caramba.
NOSSAS fronteiras vulneráveis, sem fiscalização, dá condições a todo tipo de entrada, de produtos a pessoas nom gratas.
Ora O PSDB precisa de UM PROJETO GRANDIOSO pós LULA, de crescimento sustentável, emprego real, e não somente de TELEMARKET ou de AUTONOMOS.
PRECISAMOS DE UMA REFORMA POLITICA E TRIBUTÁRIA, urgentemente.
Não podemos COMPARAR, temos que defender os PONTOS dos quais se aproveitam e distorcem como verdades ou mentiras “deles”.
HÁ que se mostrar o passado da DILMA, quem foi, como procedeu, como poderá ser seu governo,sem contudo atacar a pessoa, mas seus metodos de vida passado e a forma como age hoje, as mentiras, seus falsos diplomas.
PRECISAMOS mostrar aos cidadãos como é importante ser CIDADÃOS.
Ter direitos e como os mesmos devem SER RESPEITADOS por quem está no PODER.
Penso que é isto que precisamos para a CAMPANHA, e a ELEIÇÃO.
Abraços,
Obrigada.
Rosângela Medeiros
BH – MG




--------------------------------------------------------------------------------------------------------------





--------------------------------------------------------------------------------------------------------------
erezinha mottecy
3 de fevereiro de 2010 às 23:02
É necessario divulgar sempre no norte e nordeste atraves das lideranças Arthur Virgilio, Guerra e outros grandes lideres a imagem da guerrilheira Dilma. Pobre País se os corajosos senadores do Dem, PSDB e alguns do PMDB como Jarbas Vasconcelos não assumirem o qto antes unidos a candidatura do PSDB. Temos q unir as oposições e o dr. Serra é a solução.
Terezinha Mottecy- SM RS


Em 2010 só o povo do norte e nordeste vota ? Dr Serra ? Virgilio, Guerra e outros grandes lideres ? Mao Tse Tung ? 



--------------------------------------------------------------------------------------------------------------




Originais em  http://rede.psdb.org.br/


Cover muito animado de Cecilia - Simon e Garfunkel !



O monstro da pía

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



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 !



Primeiro, o tempo de Monte Carlo tem que ser normalizado em termos do número de elementos da lista. Por exemplo: se a lista tem o tamanho j e a rede tem N sítios, o incremento no tempo é dado pela razão N/j que é maior que um. Conclusão o tempo passa mais rápido ( o que não é ruim), o problema é que essa razão deve ser tratada como um ponto flutuante.
 A cada iteração vamos ter que somar pontos flutuante, não há como fugir, então devemos ter cuidado com o número de somas efetuadas. Nessas horas é bom aproveitar as operações 64 bits e usar variáveis Long Double, tipicamente ela tem 18 casas decimais de precisão. O erro após X iterações é da ordem de X*10^{-18}. 

Segundo, cada realização terá um sequência de tempo diferente já que o tempo depende do histórico do tamanho da lista j.
Uma maneira de contornar o problema é dividir o tempo em intervalos, tomar a média das grandezas em estudo naquele intervalo e atribuir o resultado ao tempo médio dos pontos dentro do intervalo.
Note que isso introduz dos erros: o erro estatístico da média estudada ( esse existe de qualquer forma ) e o erro do tempo que está ligado de alguma forma a dinâmica ( esse é novo ).

Como resolver isso de forma rápida é fácil ?

Bom, para todo problema sempre existe um script.

É só pegar todos os dados, organizar por ordem de tempo, dividir em arquivos ( escolhi 50 pontos por arquivo). Depois tirar as media do tempo e da grandeza de interesse para cada um dos arquivos.   

cat dados | sort -n | split  -l 50 -a 3 -d
for i in x[0-9][0-9][0-9]
do
cat $i | mawk  '{ print (r+=$1)/NR, (s+=$2)/NR }' | tail -n 1 >> a.agr
done
rm -f x[0-9][0-9][0-9]


Curto e Grosso: Viva o POSIX !

Notem que o intervalo de tempo não é fixo, depende da distribuição dos meus 50 pontos. Chame de janelas adaptativas para se vangloriar !

Imagine a quantidade de rotinas para fazer isso em C ?
Além disso, você teria que tratar I/O em C ! Está aí uma coisa que eu não pretendo fazer nessa vida !   
   
 


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.


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











#include <stdio.h>
#include <math.h>
#include <time.h>

///////////////////////// Ran2 Numerical Recipes
//////////////////////////////////////////////

///////////////////////// GSL Mersenne Twister
#include <gsl/gsl_rng.h>
#define ARNG gsl_rng_mt19937
/////////////////////////

/////////////////////////////// MKL GSL Mersenne Twister
#include <mkl_vsl.h>
#define BRNG VSL_BRNG_MT2203
#define METHOD 0
////////////////////////////////

main ()
{

float m,Sm;
long N = 1073741824, sqrtN = 32768 , i , j;
long seed,seedn;
seed = 345;
seedn = -1 * seed; //semente negativa

//////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////////////
gsl_rng *randmt;
randmt = gsl_rng_alloc(ARNG);
gsl_rng_set (randmt, seed);

time_t inicio2;
time_t fim2;
inicio2 = time (NULL);
for (i = 0; i < N; i++)
{
m = tanh ( gsl_rng_get(randmt) / ( 1.+ gsl_rng_max (randmt) ) );
}
fim2 = time (NULL);
gsl_rng_free (randmt);
printf ("tempo para %d Mersenne Twister - GSL %ld n", N, fim2 - inicio2 );
//////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////

float ranfloat[sqrtN];
VSLStreamStatePtr stream;
vslNewStream (&stream, BRNG, seed);

time_t inicio3;
time_t fim3;
inicio3 = time (NULL);
for (i = 0; i < sqrtN; i++)
{
vsRngUniform (METHOD, stream, sqrtN, ranfloat, 0.0, 1.0);
for (j = 0; j < sqrtN; j++)
{
m = tanh ( ranfloat[j] );
}
}
fim3 = time (NULL);
printf ("tempo para %d Mersenne Twister - MKL %ldn", N, fim3 - inicio3 );

//////////////////////////////////////////////////////////////

return (0);

}


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 ("%fn", 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


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.


Geradores de números pseudo-aleatórios

Geradores de números pseudo-aleatórios GNPA são uma caixa preta, em geral usamos as indicações dos estudantes mais antigos e dos professores. Provavelmente, graças a esse mecanismo, os GNPA mais usados são o ran2 ou o rand, e a implementação destes é encontrada no clássico Numerical Recipes.

O cerne das simulações de Monte-Carlo são justamente os GNPA e dificilmente nossos programas passarão fazendo mais tempo algo que não seja gerar números aleatórios. Por isso é importante conhecer e se atualizar quanto este assunto.

Embora seja importante entender um pouco da minúcias dos GNPA eu não vou nem tocar nesse assunto, para mim eles permaneceram uma caixa preta por muito tempo. Bom..., as atualidades ? Ah, essas são bem mais fáceis. 

O GNPA padrão nos dias de hoje o Mersenne-Twister, introduzido em 1997 http://en.wikipedia.org/wiki/Mersenne_twister (alguem tem que escrever o artigo na wikipedia portuguesa, nem que seja tradução). Este é provavelmente o algoritmo mais popular, ele possui um período de 2^19937 − 1, passou em vários testes e é superior aos ran2,3,4 .

Outro ponto de fundamental importância é a sua performance.

Como implementar o algoritmo:

Eu sugiro fortemente a utilização da biblioteca GSL ( Gnu Scientific Library ) http://www.gnu.org/software/gsl/ e o manual http://www.gnu.org/software/gsl/manual , essa biblioteca já esta instalada no abax e você pode encontra-la nos repositórias da sua distribuição Linux.

E muito fácil usar, segue um exemplo

#include < stdio.h >
#include < gsl/gsl_rng.h >
int main ()
  {
  int i;
  unsigned long a;
/////////////////////////////////////////////////////
  const gsl_rng *r;
  r = gsl_rng_alloc(gsl_rng_mt19937);
////////////////////////////////////////////////////
  gsl_rng_set(r, 123); // semente 123
   for (i = 0; i < 100000000; i++)
    {
    printf ("%un",  gsl_rng_get(r));
    }
  printf ("n");
  printf ("%lu %lun", gsl_rng_max(r), gsl_rng_min(r) );
  return 0;
}

Compilar com: gcc rng.c -lgsl -lgslcblas -lm

Comentários:

"const gsl_rng *r;
r = gsl_rng_alloc(gsl_rng_mt19937); "
- Define o nome do gerador, no caso é "r",  e o GNPA usado ( mt19937 = Mersenne Twisted ).

"gsl_rng_set (r, 123);" - Semente (123) do gerador r.

"gsl_rng_get (r);" - Retorna um número inteiro (unsigned long) pseudo-aleatório

"gsl_rng_max(r) e gsl_rng_min(r)" - Valor máximo e mínimo do gerador.


Outras dicas:

"gsl_rng_uniform(r);" - Retorna um real (double) pseudo-aleatório o intervalo [0,1)
"gsl_rng_uniform_int(r,j);" Retorna um número inteiro (unsigned long) pseudo-aleatório entre [0, j-1]

Existe uma lista de extensa de implementações de GNPA nesta biblioteca, inclusive o ran2, basta substituir o "mt19937" pelo algoritmo desejado.

Veja a lista de performance ( http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Generator-Performance.html ):

     1754 k ints/sec,    870 k doubles/sec, taus
     1613 k ints/sec,    855 k doubles/sec, gfsr4
     1370 k ints/sec,    769 k doubles/sec, mt19937
      565 k ints/sec,    571 k doubles/sec, ranlxs0
      400 k ints/sec,    405 k doubles/sec, ranlxs1
      490 k ints/sec,    389 k doubles/sec, mrg
      407 k ints/sec,    297 k doubles/sec, ranlux
      243 k ints/sec,    254 k doubles/sec, ranlxd1
      251 k ints/sec,    253 k doubles/sec, ranlxs2
      238 k ints/sec,    215 k doubles/sec, cmrg
      247 k ints/sec,    198 k doubles/sec, ranlux389
      141 k ints/sec,    140 k doubles/sec, ranlxd2
    
     1852 k ints/sec,    935 k doubles/sec, ran3
      813 k ints/sec,    575 k doubles/sec, ran0
      787 k ints/sec,    476 k doubles/sec, ran1
      379 k ints/sec,    292 k doubles/sec, ran2


Uma pequena explicação sobre as características de cada algoritmo é encontrada no manual http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html


Impressões do Mandriva 2010.0 no EEEpc 1008HA

Depois do falecimento do meu Compaq v6210BR, decidi comprar um netbook.

Asus EEEpc 1008HA, foi a minha opção.  Ele tem a maior autonomia e desempenho da categoria, é extremamente fino. Eu adquiri este com windows xp, infelizmente não encontrei nenhum a venda com linux.

A tela, teclado, acabamento, desempenho, tudo me impressionou positivamente. Boots do mandriva e do windows rapidissimos !

Contras:
-setas cima e baixo pequenas,  eu também não gostei das portinhas que fecham todas as entradas(usb, fone etc). elas são bonitas, mas eu tenho um pouco de dificuldade de abrir (sem muita unha  Contente).
-botões do mousepad, o botão único dificulta um pouco o duplo clique. O mousepad é bom, multitouch.

 Vamos ao Mandriva.



Instalei usando o Mandriva-seed  http://megaf.wordpress.com/2009/04/11/mandriva-2009-spring-da-iso-pro-pendrive/ (dica do Manuel Pinho) O tutorial serve também para o mandriva 2010.0.

Usei um pendrive bem vagabundo, mesmo assim a instalação foi rápida. Nenhuma opção especial.
Compatibilidade, bom o que dizer..., o mandriva está tirando a graça da instalação. TUDO funcionando, rede sem fio, suspender etc. Só pra ter uma idéia: não abri o terminal ainda !
-microfone, câmara, fone funcionando,
-Skype funcionando,


Para melhorar a usabilidade eu desativei a composição "efeitos do desktop", para fazê-lo vá em "Ferramentas" -> "Ferramentas do sistema" -> "configurar sua sessão" -> Área de Trabalho, retire a opção "Habilitar os efeitos da área de trabalho". Assim o sistema ficou muito mais rápido e responsivo.

Críticas: minhas únicas criticas são a respeito do Desktop Kde padrão do Mandriva, realmente ele não é muito agradável para telas menores.
Eu fiz algumas modificações como o aumento da barra de tarefas, e a ocultei.  Na minha opinião fica muito melhor assim !



 



Vou fazer um comparativo da autonomia da bateria, mandriva x windows ! Depois posto o resultado !


Boa prática na construção de um cluster Beowulf

Eu encontrei um artigo muito completo sobre a construção de um pequeno cluste microcluster
de Joel Adams e Tim Brom http://www.clustermonkey.net//content/view/211/1/
O cluster foi construído em 2007, usando 4 Athlon X2 3200, totalizando 8 núcleos, o total investido foi 2500 dólares, Um excelente custo para 26 Gflops.

No artigo os autores fazem uma análise muito interessante, o argumento é muito importante para o processo de desenvolvimento de clusters de alto desempenho para pesquisa.

Veja o trecho do artigo:

Now, let's look at the performance of Microwulf in relation to the Top500 list to see where it would have placed. Going through the archived lists, here is where Microwulf would have placed.

    * Nov. 1993: #6
    * Nov. 1994: #12
    * Nov. 1995: #31
    * Nov. 1996: #60
    * Nov. 1997: #122
    * Nov. 1998: #275
    * June 1999: #439
    * Nov. 1999: Off the list

Looking back at the lists is really a lot of fun. In November 1993 Microwulf would have been the 6th fastest machine on the planet! That's not bad considering that was only 14 years ago. As recent as 8 years ago, Microwulf would have ranked 439th on the list. That's not bad for a little 4 node, 8 core cluster measuring 11" x 12" x 17". 

Vemos alguns projetos que acabam tento um custo x beneficio ruim por não levarem em conta a velocidade da evolução tecnológica. Uma boa prática na formulação de um Beowulf é procurar sempre hardware "popular". Muitas vezes pequenos ganhos de performance vem acompanhado de custos muito altos.

Uma sugestão é sempre tentar melhorar os métodos estatísticos, aprender aquele método de extrapolação super sofisticado e poderoso, otimizar, procurar melhores compiladores, ou seja tentar melhorar o seu próprio desempenho ao invés de simplesmente investir no hardware.
Afinal, embora a tecnologia seja algo passageiro, conhecimento não o é.