Mudanças entre as edições de "Timing"

De WikiLICC
Ir para: navegação, pesquisa
m
m
 
(Uma revisão intermediária pelo mesmo usuário não está sendo mostrada)
Linha 1: Linha 1:
 
Testando vetorização:
 
Testando vetorização:
* Maior problema alocável: 154Mb * 3*4 = 1.8Gb
 
 
 
  ! http://goparallel.sourceforge.net/optimizing-loops-vectorization/
 
  ! http://goparallel.sourceforge.net/optimizing-loops-vectorization/
 
  program Vectorization
 
  program Vectorization
 
  use portlib
 
  use portlib
 
  real(4),dimension(:),allocatable  ::  x,y,z
 
  real(4),dimension(:),allocatable  ::  x,y,z
  integer                          ::  len=150*1024*1024 ! 154 Mb
+
  integer                          ::  len=150*1024*1024 ! 154 MiB=150MB
 
  real(4)                          ::  timing
 
  real(4)                          ::  timing
 
   
 
   
Linha 23: Linha 21:
 
  end program
 
  end program
  
* Resultados: Usando real(4) ou real(8) leva aprox. o mesmo tempo.
+
* Memory: using performance monitor from windows
Memory                            1.75  Gb
+
  Maior problema alocável: 150MiB * 3*4 = 1.75GiB = 1.88GB
  
  Debug (no optimization) (32bits) 2.13  s
+
  real(4)                              = 1.85 GB
  Debug (no optimization) (64bits)  2.00  s
+
  real(8)                              = 3.69 GB
  Release                 (32bits)  0.143 s
+
  real(16)                              = 7.39 GB
  Release                (64bits)  0.140 s  <=========
+
 
 +
 
 +
* Results real(4):
 +
Debug  (x32)       2.13  s
 +
  Debug   (x64)       2.00  s
 +
  Release (x32) /O2    0.143 s
 +
  Release (x64) /O2    0.140 s   <=========
 +
 
 +
  Release(x64)
 +
  Threshold for vectorization  0  0.140 s
 +
  Threshold for parallelization 0  0.140 s
 +
  /Qvec-                          0.909 s
 +
  /Qvec- /Qparallelization        0.171 s  usa 8 processors
 +
  Inline directive                 0.145 s
 +
  /Ob1                                      use 4 processors
 +
  /Qvec- /Qparallelization        0.232 s
 +
 +
* Results  real(8):
 +
  Release (x64)                      0.461 s
 +
  /Qvec-                          0.911 s
 +
  /Qvec- /Qparallelization        0.356 s
 +
  /Qparallelization                0.342 s  <==========
  
Release (64bits)
 
  /Qvec-  (sem vetorizacao)      0.909 s  (NOT the default)
 
  Threshold for vectorization 0  0.140 s
 
  Threshold for parallelization 0 0.140 s
 
  Parallelization yes            0.171 s  /Qparallel (or any combination above) usa 8 processors
 
  Inline directive                0.145 s  /Ob1                                  use 4 processors
 
  
* real(16):  As coisas ficam lll...e...n.t...as.. . .. . . (vectorization doesn't help)
+
* real(16):  sloooow
Memory                            7.3 Gb  (permon) Windows performance monitor
+
  Release (x64)                     7.00  s  
  Release (64bits)                 7.00  s  
+
   /Qvec-                           7.02  s
   /Qvec-   (sem vetorizacao)      7.02  s  (NOT the default)
+
  /Qvec- /Qparallelization        1.75  s
 +
  /Qparallelization                1.75 s

Edição atual tal como às 02h22min de 20 de junho de 2012

Testando vetorização:

! http://goparallel.sourceforge.net/optimizing-loops-vectorization/
program Vectorization
use portlib
real(4),dimension(:),allocatable  ::  x,y,z
integer                           ::  len=150*1024*1024 ! 154 MiB=150MB
real(4)                           ::  timing

allocate( x(len) ,stat=ierr)
allocate( y(len) ,stat=ierr)
allocate( z(len) ,stat=ierr)

do j=1,10
timing = secnds(0.0)
do i=1,len
  z(i)=sqrt(x(i))+sqrt(y(i))
end do
timing = secnds(timing)*1000
print *,' Timing =',timing,'/1000 s'
end do
end program
  • Memory: using performance monitor from windows
 Maior problema alocável: 150MiB * 3*4 = 1.75GiB = 1.88GB
 real(4)                               = 1.85 GB 
 real(8)                               = 3.69 GB
 real(16)                              = 7.39 GB


  • Results real(4):
Debug   (x32)        2.13  s
Debug   (x64)        2.00  s
Release (x32) /O2    0.143 s
Release (x64) /O2    0.140 s   <=========
Release(x64)
  Threshold for vectorization   0  0.140 s
  Threshold for parallelization 0  0.140 s
  /Qvec-                           0.909 s
  /Qvec- /Qparallelization         0.171 s   usa 8 processors
  Inline directive                 0.145 s
  /Ob1                                       use 4 processors
  /Qvec- /Qparallelization         0.232 s

  • Results real(8):
Release (x64)                      0.461 s
  /Qvec-                           0.911 s
  /Qvec- /Qparallelization         0.356 s
  /Qparallelization                0.342 s   <==========


  • real(16): sloooow
Release (x64)                      7.00  s 
  /Qvec-                           7.02  s
  /Qvec- /Qparallelization         1.75  s
  /Qparallelization                1.75  s