sábado, 8 de dezembro de 2012

LAMMPS (CUDA/GTX580)

Uma simulação com mais de 2 milhões de atomos usando o potencial EAM em uma placa de vídeo GTX 580 no LAMMPS com CUDA.

--------------------------------------------------------------------------
RESULTADOS
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Na GPU GTX 580 1.544 GHz CUDA
--------------------------------------------------------------------------
# CUDA: Activate GPU
# Using device 0: GeForce GTX 580
Lattice spacing in x,y,z = 3.615 3.615 3.615
Created orthogonal box = (0 0 0) to (289.2 289.2 285.585)
  1 by 1 by 1 MPI processor grid
Created 2022400 atoms
# CUDA: VerletCuda::setup: Allocate memory on device for maximum of 2030000 atoms...
# CUDA: Using precision: Global: 8 X: 8 V: 8 F: 8 PPPM: 8
Setting up run ...
# CUDA: VerletCuda::setup: Upload data...
# CUDA: Total Device Memory useage post setup: 1316.125000 MB
Memory usage per processor = 412.306 Mbytes
Step Temp E_pair E_mol TotEng Press
       0         1600     -7159296            0   -6741031.1    18704.149
      50    780.71972   -6943740.2            0   -6739647.9    52292.948
     100    798.21531   -6948340.9            0     -6739675    51478.838
Loop time of 19.7667 on 1 procs for 100 steps with 2022400 atoms

--------------------------------------------------------------------------
Na CPU AMD Phenom(tm) II X6 1100T
--------------------------------------------------------------------------
  2 by 3 by 1 MPI processor grid
Created 2022400 atoms
Setting up run ...
Memory usage per processor = 130.318 Mbytes
Step Temp E_pair E_mol TotEng Press
       0         1600     -7159296            0   -6741031.1    18704.149
      50    780.71972   -6943740.2            0   -6739647.9    52292.948
     100    798.21531   -6948340.9            0     -6739675    51478.838
Loop time of 108.489 on 6 procs for 100 steps with 2022400 atoms


Uma GTX580 usando OpenCL  é mais lento que o HD7970 para esse tipo de cálculo. O estranho é que só aparecem 256 cores no HD7970, e tinha visto em algum lugar que são 2048 para precisão simples e 512 para precisão dupla. Já o GTX580 aparecem os 512 cores.
--------------------------------------------------------------------------
GPU 0: GeForce GTX 580, 512 cores, 1.4/1.5 GB, 1.5 GHZ (Double Precision)
-------------------------------------------------------------------------
-

Initializing GPU and compiling on process 0...Done.
Initializing GPUs 0-1 on core 0...Done.

Setting up run ...
Memory usage per processor = 215.701 Mbytes
Step Temp E_pair E_mol TotEng Press
       0         1600     -3537961            0   -3331264.1    18704.139
      50    780.24619   -3431376.3            0   -3330579.7    52317.163
     100    798.09276   -3433696.3            0   -3330594.2    51480.829
Loop time of 17.601 on 1 procs for 100 steps with 999424 atoms


--------------------------------------------------------------------------
GPU 0: Tahiti, 256 cores, 2.8 GB, 1.1 GHZ (Double Precision)
GPU 1: AMD FX(tm)-8150 Eight-Core Processor, 8 cores, 3.6 GHZ (Double Precision)
--------------------------------------------------------------------------


Initializing GPU and compiling on process 0...Done.
Initializing GPUs 0-1 on core 0...Done.

Setting up run ...
Memory usage per processor = 215.69 Mbytes
Step Temp E_pair E_mol TotEng Press
       0         1600     -3537961            0   -3331264.1    18704.139
      50    780.24619   -3431376.3            0   -3330579.7    52317.163
     100    798.09276   -3433696.3            0   -3330594.2    51480.829
Loop time of 14.9655 on 1 procs for 100 steps with 999424 atoms


Olhando o desmpenho da GTX580(CUDA) vs HD7970(OpenCL post anterior) parece que o ganho está no clock da GPU, só com a aparencia não dá para concluir nada, mas está faltando cores no HD7970, está, desde os primordios sempre uma ATI teve mais cores do que as GPUs da NVIDIA, e essa que tinha um clock mais elevado na briga pelo desempenho.

domingo, 2 de dezembro de 2012

LAMMPS no AMD HD7970

Uma simulação com mais de 2 milhões de atomos usando o potencial EAM em uma placa de vídeo da XFX (AMD HD7970 GHz edition com 3GB), tudo em dupla precisão usando LAMMPS com pacote GPU.
(double precision/LAMMPS/AMD SDK APP 2.7/fglrx 9.01.8/Slackware64-current)


--------------------------------------------------------------------------
RESULTADOS
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Na GPU HD7079 1.05GHz
--------------------------------------------------------------------------
--------------------------------------------------------------------------
- Using GPGPU acceleration for eam:
-  with 1 proc(s) per device.
-  with OpenCL Parameters for: GENERIC_OCL
--------------------------------------------------------------------------
GPU 0: Tahiti, 256 cores, 2.9 GB, 1.1 GHZ (Double Precision)
GPU 1: AMD FX(tm)-8150 Eight-Core Processor           , 8 cores, 3.6 GHZ (Double Precision)
--------------------------------------------------------------------------

Initializing GPU and compiling on process 0...Done.
Initializing GPUs 0-1 on core 0...Done.

Setting up run ...
Memory usage per processor = 422.869 Mbytes
Step Temp E_pair E_mol TotEng Press
       0         1600     -7159296            0   -6741031.1    18704.149
      50    780.71972   -6943740.2            0   -6739647.9    52292.948
     100    798.21531   -6948340.9            0     -6739675    51478.838
Loop time of 29.6983 on 1 procs for 100 steps with 2022400 atoms

--------------------------------------------------------------------------
Na CPU FX-8150 com over de 4.086GHz
--------------------------------------------------------------------------

  2 by 2 by 2 MPI processor grid
Created 2022400 atoms
Setting up run ...
Memory usage per processor = 96.6497 Mbytes
Step Temp E_pair E_mol TotEng Press
       0         1600     -7159296            0   -6741031.1    18704.149
      50    780.71972   -6943740.2            0   -6739647.9    52292.948
     100    798.21531   -6948340.9            0     -6739675    51478.838
Loop time of 93.0408 on 8 procs for 100 steps with 2022400 atoms


--------------------------------------------------------------------------
AMD SDK APP 2.7 PATCH
--------------------------------------------------------------------------
--- ./make/openclsdkdefs.mk-orig        2012-05-14 04:43:34.000000000 -0300
+++ ./make/openclsdkdefs.mk     2012-11-30 20:41:05.275285082 -0200
@@ -230,7 +230,7 @@
 ifdef MINGW
   LDFLAGS           += -L/usr/X11R6/lib
 else
-  LDFLAGS           += -lpthread -ldl -L/usr/X11R6/lib
+  LDFLAGS           += -lpthread -ldl -L/usr/X11R6/lib64 -lX11
 endif
   LD_LIBDIR_FLAG    := -L
   LD_SHARED_FLAG    := -shared  
--- ./samples/opencl/SDKUtil/include/SDKCommon.hpp-orig 2012-05-14 04:43:34.000000000 -0300
+++ ./samples/opencl/SDKUtil/include/SDKCommon.hpp      2012-11-30 14:38:11.671185385 -0200
@@ -18,6 +18,7 @@
 #include

 #include

 #include

+#include


 #include

 

--------------------------------------------------------------------------
GERYON - ocl_timer.h
--------------------------------------------------------------------------
+#define CL_USE_DEPRECATED_OPENCL_1_1_APIS
 #include "ocl_macros.h"
 #include "ocl_device.h"


sábado, 1 de dezembro de 2012

Afiando faca com o que tiver.

Se você tem facas boas, provavelmente tem pedras próprias para afiar-las. Eu tenho uma pedra #300, mas se tivesse umas facas profissionais provavelmente teria mais duas pedras. Uma pedra barata deve estar em torno de R$8,00, mas as importadas são bem mais caras. Obs.: As pedras japonesas de afiar só devem ser utilizadas com água, nada de óleo, perde a eficiência e ainda faz sujeira gordurosa.

Agora porque estou escrevendo isso, porque quando vou para casa de amigos para almoçar, sempre tem uma carne sendo cortada com uma faca que só corta manteiga na temperatura ambiente... hehe. Me dá uma agonia ... hehe. E eles não costumam ter pedras para afiar facas, nem mesmo as de R$8,00....
Acho que qualquer casa deva ter alguma xícara de cerâmica, pode ser prato ou outra coisa de cerâmica, eles não são esmaltados na parte de baixo e essa parte pode ser usada para afiar as facas.
Pesquisando na internet achei um video de 2008, não sei se esse é o primeiro.
Nem tinha visto o video deste tipo antes, eu tinha uma xícara que veio com um defeito nessa parte e ela ficava bamba em cima da mesa, aí tentei aplainar com uma lixa d'agua, gastei bem a lixa para ficar razoavel. Assim lembrava que era bem resistente como uma pedra e acabei usando na casa de um amigo depois de tentar afiar uma com uma chaira em vão, a xícara é muitoooo mais eficiente.
 
Dá para afiar com monte coisas, o problema é se deixam fazer com elas hehe. Restos de obras são uma maravilha para isso, já usei pedras de piso, pedras de parede, parte de trás dos azulejo.

sábado, 20 de outubro de 2012

Calculadora HomeBrew (SG, SRM, IBU, alcool) versão 2


Potential SG and SRM beer color
 
Volume: liter          Efficiency: %
QT(kg) Malte Pot.SG SRM %mass
                                                                       
SG: g/cm³       Brix: %       SRM: °L


Brix: SG: g/cm³     Real Efficiency: %

IBU (International Biterness Unit)
QT(g) Hops Alfa(%) T(min) IBU
                Total:      



Alcohol (ABW and ABV)
Final Brix:
  Final SG:g/cm³   ABW:%   ABV:%

Com essa calculadora você poderá estimar quanto brix e a cor da cerveja vai obter, estimar também a amargura, e por fim, calcular o grau alcoolico usando apenas o refratometro em brix. O refratometro é bem mais fácil de se usar e não desperdiça a sua breja, pois só precisa de algumas gotas.
Lembrar que é apenas uma estimação, se precisar de valores exatos vai precisar mandar para algum laboratório especializado.

Como usar:
  1. Coloque o volume que deseja produzir, e a eficiencia que acha que vai obter, coloque a quantidade de malte e selecione o malte, poderá modificar os valores se achar que estiverem errados, (Clique em Add para por mais linhas/ Remove para tirar linhas) ponha quantos maltes que desejar e por fim calculate, assim terá uma estimativa do SG/Brix/Cor do seu mosto.
  2. Ponha o valor do Brix/SG que obteve e veja qual foi a eficiencia real.
  3. Coloque a quantidade do lúpulo e selecione o lúpulo, se o valor do ácido alfa estiver errado, o corrija, ponha o tempo. Se tiver mais lúpulo, clique em Add, e clique em Remove para tirar. Clique  em Calculate IBU para obter uma estimativa da amargura.
  4. Depois de fermentado poderá por o Brix final e calcular o alcool da sua cerveja. Se quiser só usar a calculadora do álcool, basta por o valor do Brix : e Final Brix:
Algumas coisas estão interligados, no cálculo da amargura, vai precisar do Volume e o SG obtido, no cáculo do álcool precisa Brix obtido e o Brix final.

Usei os dados do mate e do lúpulo extraidos do  EZ Brew 1.6, e as formulas para estimar grau alcoolico do site:
http://www.primetab.com/formulas.html
A formula do cálculo da amargura é a mesma que posteino post anterior.

quinta-feira, 18 de outubro de 2012

QuTip 2.1.0 packages (Slackware 64 14.0 with kde 4.9.2)

qutip-2.1.0-packages.tar 
MD5SUM
b400231ab05f946b47eff7fe31be8e8d  Cython-0.17.1-x86_64-1.txz
15225e5f38f027edce3cd400474438e7  QuTiP-2.1.0-x86_64-1.txz
2481a78855f9d267c7f27c2cf2f93fb1  apiextractor-0.10.10-x86_64-2.txz
b39b101b01246e9507663efe8f3537e1  blas-20110419-x86_64-2.txz
1fdd7b25d04996e2e240a90f4fae92c2  generatorrunner-0.6.16-x86_64-2.txz
0b6f3171437aac6b9f2e6066ec539521  ipython-0.13-x86_64-2.txz
5431d265b1ba8127800b6cd19123f9d4  lapack-3.4.2-x86_64-1.txz
addef82582eb25432d084dc8bf3944b3  matplotlib-1.1.1-x86_64-2.txz
b0f7603ea8925262649ee5b31008241b  nose-1.2.1-x86_64-1.txz
768ca1515d6054dfa78ed8669726164a  numpy-1.6.2-x86_64-2.txz
03ce18e89658c8abf9c534b40a57505f  pysetuptools-0.6c11-x86_64-2.txz
64b584595a2c1d0da368c75396158e6f  pyside-qt4.8+1.1.2-x86_64-1.txz
b4e97d03d781b95d87a4ed21c1819bbe  python-dateutil-1.5-x86_64-2.txz
3a2f07b0c4619414fc8617c1c4301dc4  pytz-2012f-x86_64-1.txz
2dd6dadd6484d2ff6bcd06841d070689  scipy-0.11.0-x86_64-1.txz
e04240f5eb4b83e0709c140aaf83b275  shiboken-1.1.2-x86_64-1.txz

Google Drive link
https://docs.google.com/open?id=0Bz0A3IDwzSRjYmlDWjc5VUFoZTQ
Running test
>>> import qutip.testing as qt
>>> qt.run()
Qobj data ... ok
Qobj type ... ok
Qobj Hermicity ... ok
Qobj shape ... ok
Qobj addition ... ok
Qobj subtraction ... ok
Qobj multiplication ... ok
Qobj division ... ok
Qobj power ... ok
Qobj negation ... ok
Qobj equals ... ok
Qobj getitem ... ok
Qobj multiplication type ... ok
Qobj conjugate ... ok
Qobj adjoint (dagger) ... ok
Qobj diagonals ... ok
Qobj eigenenergies ... ok
Qobj eigenstates ... ok
Qobj expm ... ok
Qobj full ... ok
Qobj ket type ... ok
Qobj bra type ... ok
Qobj operator type ... ok
Qobj superoperator type ... ok
Transform 2-level to eigenbasis and back ... ok
Transform 10-level real-values to eigenbasis and back ... ok
Transform 10-level to eigenbasis and back ... ok
Transform 10-level imag to eigenbasis and back ... ok
Diagonalization of random two-level system ... ok
Diagonalization of composite systems ... ok
von-Neumann entropy ... ok
Linear entropy ... ok
Concurrence ... ok
Mutual information ... ok
Conditional entropy ... ok
Read and write complex valued decimal formatted data ... ok
Read and write complex valued default formatted data ... ok
Read and write complex valued exp formatted data ... ok
Read and write real valued decimal formatted data ... ok
Read and write real valued default formatted data ... ok
Read and write real valued exp formatted data ... ok
Read and write with automatic separator detection ... ok
Monte-carlo: Constant H with no collapse ops (expect) ... ok
Monte-carlo: Constant H with no collapse ops (states) ... ok
Monte-carlo: Constant H (str format) with no collapse ops (expect) ... ok
Monte-carlo: Constant H (func format) with no collapse ops (expect) ... ok
Monte-carlo: Constant H (str format) with no collapse ops (states) ... ok
Monte-carlo: Constant H (func format) with no collapse ops (states) ... ok
Monte-carlo: Constant H with constant collapse ... ok
Monte-carlo: Collapse terms constant (func format) ... ok
Monte-carlo: Collapse terms constant (str format) ... ok
Monte-carlo: Time-dependent H (func format) ... ok
Monte-carlo: Time-dependent H (str format) ... ok
mesolve: cavity-qubit interaction, no dissipation ... ok
mesolve: cavity-qubit without interaction, decay ... ok
mesolve: cavity-qubit with interaction, decay ... ok
mesolve: qubit without dissipation ... ok
mesolve: simple time-dependence as function list ... ok
mesolve: simple time-dependence as string list ... ok
mesolve: simple constant decay ... ok
mesolve: constant decay as function list ... ok
mesolve: constant decay as string list ... ok
odechecks: monte-carlo ... ok
Spin 1/2 operators ... ok
Spin 3/2 operators ... ok
Spin 2 operators ... ok
Spin 5/2 operators ... ok
Destruction operator ... ok
Creation operator ... ok
Identity operator ... ok
Number operator ... ok
Squeezing operator ... ok
Displacement operator ... ok
quantum process tomography for snot gate ... ok
quantum process tomography for cnot gate ... ok
Test mesolve qubit, with dissipation ... ok
Test mesolve qubit, no dissipation ... ok
Test essolve qubit, with dissipation ... ok
Test mcsolve qubit, with dissipation ... ok
Test mcsolve qubit, no dissipation ... ok
random Unitary ... ok
random density matrix ... ok
random hermitian ... ok
random ket ... ok
Sparse eigs Hermitian ... ok
Sparse eigs non-Hermitian ... ok
Sparse eigvals only Hermitian. ... ok
Dense eigs Hermitian. ... ok
Dense eigs non-Hermitian ... ok
Dense eigvals only Hermitian ... ok
states: coherent density matrix ... ok
states: Fock density matrix ... ok
states: thermal density matrix ... ok
Steady state: Thermal qubit ... ok
Steady state: Thermal harmonic oscillator ... ok
Superoperator: Conversion matrix to vector to matrix ... ok
Superoperator: Test compability between matrix/vector conversion and the corresponding index conversion. ... ok
Superoperator: Conversion between matrix and vector indices ... ok
Superoperator: Conversion vector to matrix to vector ... ok
wigner: test wigner function calculation for coherent states ... ok
wigner: test wigner function calculation for Fock states ... ok
wigner: compare wigner methods for random density matrices ... ok
wigner: compare wigner methods for random state vectors ... ok

----------------------------------------------------------------------
Ran 103 tests in 231.835s

OK

domingo, 7 de outubro de 2012

Estimar SG a partir do malte / Brewing Efficiency

Se quiser estimar qual a densidade do mosto, é só usar a calculadora abaixo.
Para entender a respeito olhe o site
http://www.mashspargeboil.com/a-guide-to-brewing-efficiency/

Mais tabelas do SG potencial dos gãos de malte, estão na unidades do USA.
http://www.beersmith.com/Grains/Grains/GrainList.htm

A calculadora que me guiei para fazer nas unidades metricas com o SG potencial do USA. A calculadora do link está na unidade do USA, muito chato ficar convertendo unidade.
http://www.tastybrew.com/calculators/gravity.html

Porque usei o SG potencial nas unidades do USA? Porque tem mais tabelas nessa unidade.

Na minha segunda leva, obitive brix de 18%, e achei que podia melhorar um pouco mais, mais depois que brinquei com a calculadora, fiquei na dúvida se realmente posso aumentar isso. Como não deu para medir com precisão quantos litros fiz, mas o resultado está por volta do 100% estimado numa eficiencia de um homebrewing. Não sei quanto dá se fosse feita por profissionais.

OBS.: Só pus alguns maltes Belga e Alemão

Coloque o volume final, a eficiencia esperada, a quantidade em kilos do grão moido, escolha o malte, se quiser pode corrigir o valor do SG potencial.
 
Volume: liter
Efficiency: %
QT(kg) Malte Pot.SG
SG: g/cm³
Brix: %

sábado, 6 de outubro de 2012

Cálculo da amargura da cerveja IBU / Brix -> SG


Pesquisando no google, encontrei esse site que calculava o IBU 

mas é nas unidades que não se usam no resto do mundo. Decidí fazer um com as unidades que usamos aqui e no resto mundo. Fui tentar entender como que eles fizeram a formula mais adequada a nossa realidade, pois a formula tinha muitos números tirados da manga e não calculados.

Utilizei a tabela do site http://realbeer.com/hops/research.html, a mesma que obtiveram a formula do Glenn Tinseth e fiz o "fitting" usando exponeciais. Com isso obtive uma expressão para o cálculo da amargura da cerveja (IBU). 


com SG em g/cm³, t em minutos, Wg a quantidade do lúpulo em gramas, e Vl volume do mosto em litros. Essa expressão difere da formula do Glenn Tinseth na parte do SG, que eu usei uma exponencial (que é mais natural para uma curva desse tipo, coisa que se aprende no laboratório de física experimental 1).

Dá para arrendondar 3,969 para 4 e 8,965 para 9 sem muita diferença significativa.
Como eu tenho refratômetro meço em Brix e fiz o conversor para SG.

OBS.: O que parece que usando pellets precisa acrescentar 25% no resultado, ou seja, pode arrendondar para 5 a primeira constante. Isso foi testando com a calculadora com formula do Jakie Ranger.
 
Brix:
Volume: liter
SG: g/cm³
QT(g) Alfa(%) t(min) IBU
Total: