SlideShare una empresa de Scribd logo
1 de 40
Próximo passo para a Computação Exascale
Programando para Multi-core e Many-core
Trilha Big Data
Igor Freitas – Intel do Brasil
igor.freitas@intel.com
Legal Disclaimers
Intel technologies features and benefits depend on system configuration and may require enabled hardware, software or service activation. Performance varies depending on
system configuration. No computer system can be absolutely secure. Check with your system manufacturer or retailer or learn more at [intel.com].
Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark,
are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should
consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other
products.
All information provided here is subject to change without notice. Contact your Intel representative to obtain the latest Intel product specifications and roadmaps.
Results have been estimated or simulated using internal Intel analysis or architecture simulation or modeling, and provided to you for informational purposes. Any differences in your
system hardware, software or configuration may affect your actual performance.
Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software or service activation. Performance varies depending on
system configuration. No computer system can be absolutely secure. Check with your system manufacturer or retailer or learn more at https://www-
ssl.intel.com/content/www/us/en/high-performance-computing/path-to-aurora.html.
Tests document performance of components on a particular test, in specific systems. Differences in hardware, software, or configuration will affect actual performance. Consult other
sources of information to evaluate performance as you consider your purchase. For more complete information about performance and benchmark results, visit
http://www.intel.com/performance.
3D XPoint, Intel, the Intel logo, Intel. Experience What’s Inside, the Intel. Experience What’s Inside logo, Intel Xeon Phi, Optane, and Xeon are trademarks or registered trademarks
of Intel Corporation or its subsidiaries in the United States or other countries.
*Other names and brands may be claimed as the property of others.
© 2016 Intel Corporation. All rights reserved.
2
3
Próximo passo para a Computação Exascale
Over 15 GF/Watt1
~500 GB/s sustained memory
bandwidth with integrated on-
package memory
Next Step: KNL
Systems scalable to
>100 PFlop/s
~3X Flops and ~3X single-
thread theoretical peak
performance over Knights
Corner1
Up to 100 Gb/s with
Storm Lake integrated fabric
1 Projections based on internal Intel analysis during early product definition, as compared to prior generation Intel® Xeon Phi™ Coprocessors, and are provided for
informational purposes only. Any difference in system hardware or software design or configuration may affect actual performance.
I/O
Memory
Processor
Performance
Resiliency Standard
Programming
Models
Power
Efficiency
Exascale Vision
Next Step on Intel’s Path to Exascale Computing
Intel® Xeon Phi™ Product Family x200
5
Host Processor in Groveport Platform
Self-boot Intel® Xeon Phi™ processor
Ingredient of Grantley Platforms
Requires Intel® Xeon® processor host
with integrated
Intel® Omni-Path Fabric
Intel® Xeon Phi™ Processor
Intel® Xeon Phi™ Coprocessor
x200
Knights Landing (KNL) Architectural Diagram
6
Diagram is for conceptual purposes only and only illustrates a CPU and memory • It is not to scale
and does not include all functional areas of the CPU, nor does it represent actual component layout.
DDR4
DDR4
DDR4
DMIWellsburg
PCH
Up to
72 cores
PCIe Gen3
x36 (KNL)
x4 (KNL-F)
MCDRAM MCDRAM MCDRAM MCDRAM
MCDRAM MCDRAM MCDRAM MCDRAM
Micro-CoaxCable(IFP)
Micro-CoaxCable(IFP)
Connector
HFI
2 VPU
1MBL2
Core
HUB
2 VPU
Core
TILE
DDR4
DDR4
DDR4
Up to 72 cores
2D mesh architecture
Up to 16GB high-bandwidth on-package memory (MCDRAM).
Exposed as NUMA node ~500 GB/s sustained BW
Over 3 TF DP peak • Full Intel® Xeon Phi™ ISA compatibility through Intel® AVX-512
~3x single-thread compared to Knights Corner
6 channels
DDR4
Up to
384GB
2 ports Intel® Omni-Path Integrated
Fabric (KNL-F Only)
On-package
50 GB/s total bi-directional BW
Common
with
Grantley
PCH
1S (no
QPI/KTI)
2x 512b VPU per core
(Vector Processing Units)
Based on Intel® Atom™ processor
(Silvermont) with many HPC enhancements
• Deep out-of-order buffers
• Gather/scatter in hardware
• Improved branch prediction
• 4 threads/core
• High cache bandwidth and more
7
Modernização de código em processadores
Xeon® e Xeon Phi™
Identificando oportunidades de otimização - Vetorização
Identificando oportunidades de otimização
Foco deste seminário: Modernização de código
8
Composer Edition
Threading design
& prototyping
Parallel performance
tuning
Memory & thread
correctness
Professional Edition
Intel® C++ and
Fortran compilers
Parallel models
(e.g., OpenMP*)
Optimized
libraries
Multi-fabric MPI
library
MPI error checking
and tuning
Cluster EditionHPC Cluster
MPI Messages
Vectorized
& Threaded
Node
Otimização em um único “nó” de processamento
Vetorização & Paralelismo
9
Código
C/C++ ou
Fortran
Thread 0
/ Core 0
Thread 1/
Core1
Thread 2
/ Core 2
Thread
12 /
Core12
...
Thread
0/Core0
Thread
1/Core1
Thread
2/Core2
Thread
244
/Core61
.
.
.
128 Bits 256 Bits
Vector Processor Unit por Core Vector Processor Unit por Core
Paralelismo (Multithreading)
Vetorização
512 Bits
Identificando oportunidades de otimização
Foco deste seminário: Modernização do código
Identificando oportunidades de otimização
Recapitulando o que é vetorização / SIMD
10
for (i=0;i<=MAX;i++)
c[i]=a[i]+b[i];
+
c[i+7] c[i+6] c[i+5] c[i+4] c[i+3] c[i+2] c[i+1] c[i]
b[i+7] b[i+6] b[i+5] b[i+4] b[i+3] b[i+2] b[i+1] b[i]
a[i+7] a[i+6] a[i+5] a[i+4] a[i+3] a[i+2] a[i+1] a[i]
Vector
- Uma instrução
- Oito operações
+
C
B
A
Scalar
- Uma instrução
- Uma operação
• O que é e ?
• Capacidade de realizar uma
operação matemática em dois ou
mais elementos ao mesmo tempo.
• Por que Vetorizar ?
• Ganho substancial em performance !
Identificando oportunidades de otimização
Vetorização dentro do “core”
Código de exemplo - Black-Scholes Pricing Code
“a mathematical model of a financial market containing certain derivative investment
instruments. “
Exemplo retirado do livro “High Performance Parallelism Pearls”
Código fonte: http://lotsofcores.com/pearls.code
Artigo sobre otimização deste método
https://software.intel.com/en-us/articles/case-study-computing-black-scholes-with-intel-
advanced-vector-extensions
11
12
Facilidade de Uso
Ajuste Fino
Intel® Math Kernel Library
Array Notation: Intel® Cilk™ Plus
Auto vectorization
Semi-auto vectorization:
#pragma (vector, ivdep, simd)
C/C++ Vector Classes
(F32vec16, F64vec8)
Devemos avaliar três fatores:
 Necessidade de performance
 Disponibilidade de recursos
para otimizar o código
 Portabilidade do código
Identificando oportunidades de otimização
Maneiras de otimizar o código
Intel® Data Analytics Acceleration Library
Identificando oportunidades de otimização
Vetorização dentro do “core”
• Compilar o código com parâmetro “-qopt-report[=n]” no Linux ou “/Qopt-report[:n]” no
Windows .
• /Qopt-report-file:vecReport.txt
 Analisar relatório, encontrar dicas sobre loops não vetorizados e principal causa
13
LOOP BEGIN at ...Black-scholes-ch1902_ReferenceVersion.cpp(93,3)
remark #15344: loop was not vectorized: vector dependence prevents vectorization. First dependence is shown below.
Use level 5 report for details
remark #15346: vector dependence: assumed OUTPUT dependence between pT line 95 and pK line 97
remark #25439: unrolled with remainder by 2
LOOP END
LOOP BEGIN at ...Black-scholes-ch1902_ReferenceVersion.cpp(56,3)
remark #15344: loop was not vectorized: vector dependence prevents vectorization. First
dependence is shown below. Use level 5 report for details
remark #15346: vector dependence: assumed ANTI dependence between pS0 line 58 and pC line 62
LOOP END
Loop de inicialização de variáveis
Loop dentro da função “GetOptionPrices”
O código está otimizado para rodar em uma única thread ?
Identificando oportunidades de otimização
Vetorização dentro do “core”
• Rodar Intel® VTune – “General Exploration” marcar opção “Analyze memory
bandwidth”
• Identificar “hotspot” = função que gasta mais tempo na execução
• Identificar se as funções estão vetorizadas
14
Identificando oportunidades de otimização
Vetorização dentro do “core”
Parâmetros de compilação utilizados:
/GS /W3 /Gy /Zc:wchar_t /Zi /O2 /Fd"x64Releasevc110.pdb" /D "WIN32" /D "NDEBUG"
/D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Qipo /Zc:forScope /Oi /MD
/Fa"x64Release" /EHsc /nologo /Fo"x64Release" /Qprof-dir "x64Release"
/Fp"x64ReleaseReference.pch“
Parâmetros de execução
<número de elementos> <número de threads>
“60000000 1”
15
Identificando oportunidades de otimização
Vetorização dentro do “core”
16
Instruções escalares como “movsd” ou “cvtsd2ss” (“s” de scalar) estão sendo
utilizadas ao invés de “vmovapd” ; “v” de AVX , “p” de packed , “d” de double
SSE utiliza 128 bits ; e não 256 bits igual instruções AVX
Identificando oportunidades de otimização
Vetorização dentro do “core”
17
O que identificamos ?
• Código não está vetorizado, não utiliza instruções AVX/AVX2 de 256 bits
• Compilador apontou dependência de dados
• Oportunidades apontadas pelo VTune
• “Back-end bound”: baixo desempenho na execução das instruções
• Memory bound: aplicação dependente da troca de mensagens entre Cache –
RAM
• Instruções load (ram -> cache) e store ( cache -> ram )
• L1 bound: dados não são encontrados neste nível de cache
• Port utilization: baixa utilização do “core” , “non-memory issues”
• Funções “cdfnormf” e “GetOptionPrices” são hotspots
18
Modernização de código com
“semi-autovetorização”
Modernização de código
Semi-autovetorização
19
Uso do #pragma ivdep (por enquanto utilizando apenas 1 thread/core)
• Código não está vetorizado, não utiliza instruções AVX/AVX2 de 256 bits
• Compilador apontou dependência de dados na linha 56
#pragma ivdep
for (i = 0; i < N; i++)
{
d1 = (log(pS0[i] / pK[i]) + (r + sig * sig * 0.5) * pT[i]) / (sig * sqrt(pT[i]));
d2 = (log(pS0[i] / pK[i]) + (r - sig * sig * 0.5) * pT[i]) / (sig * sqrt(pT[i]));
p1 = cdfnormf(d1);
p2 = cdfnormf(d2);
pC[i] = pS0[i] * p1 - pK[i] * exp((-1.0) * r * pT[i]) * p2;
}
Performance – 60.000.000 elementos
#pragma ivdep
time = 1.886624
Código original
time = 22.904422
12.1x de
speedup
Configuração
Intel Core i5-4300 CPU 2.5 GHZ
4GB RAM
Windows 8.1 x64
Intel Compiler C++ 15.0
Modernização de código
Semi-autovetorização
20
Uso do #pragma ivdep
• Entenda o que mudou rodando novamente o VTune, compare as duas versões !
Menos instruções executadas !
Menos ciclos de clock por execução !
Menos “misses” na cache L1
Melhor uso do “core”
Modernização de código
Semi-autovetorização
21
Uso do #pragma ivdep
• Entenda o que mudou rodando novamente o VTune, compare as duas versões !
Menos instruções executadas !
Menos ciclos de clock por execução !
Menos “misses” na cache L1
Melhor uso do “core”
Modernização de código
Semi-autovetorização
Uso do #pragma ivdep
• Entenda o que mudou rodando novamente o VTune, compare as duas versões !
• Relatório do Compilador: análise do loop vetorizado e dicas de como vetorizar
weekpdf-codigos-intel-lnccparalelismo-dia-02Black-scholes-ch1902_ReferenceVersion.cpp(63,5) ]
remark #15300: LOOP WAS VECTORIZED
remark #15442: entire loop may be executed in remainder
remark #15448: unmasked aligned unit stride loads: 1
remark #15450: unmasked unaligned unit stride loads: 2
remark #15451: unmasked unaligned unit stride stores: 1
remark #15475: --- begin vector loop cost summary ---
remark #15476: scalar loop cost: 760
remark #15477: vector loop cost: 290.250
remark #15478: estimated potential speedup: 2.560
remark #15479: lightweight vector operations: 66
remark #15480: medium-overhead vector operations: 2
remark #15482: vectorized math library calls: 5
remark #15487: type converts: 13
remark #15488: --- end vector loop cost summary ---
LOOP END
Modernização de código
Semi-autovetorização
0
5
10
15
20
BASELINE IVDEP QXAVX +
IVDEP
QXAVX +
IVDEP +
UNROLL(4)
SPEEDUP
OTIMIZAÇÕES “DENTRO
DO CORE” – 1 THREAD
60Mi 120Mi
• IVDEP
• Ignora dependência entre os vetores
• (QxAVX) Instruções AVX – 256 bits
• Unroll ( n )
• Desmembra o loop para instruções
SIMD
• Link sobre unroll
• Requisitos para loop ser vetorizado
• Loop unrolling
Configuração
Intel Core i5-4300 CPU 2.5 GHZ
4GB RAM
Windows 8.1 x64
Intel Compiler C++ 15.0
24
Identificando oportunidades de otimização [2]
Precisão numérica e alinhamento de dados
Identificando oportunidades de otimização
Vetorização dentro do “core” – Precisão e dados alinhados
LOOP BEGIN at ... Black-scholes-ch1902_ReferenceVersion.cpp(58,3)
remark #15389: vectorization support: reference pS0 has unaligned access [
remark #15381: vectorization support: unaligned access used inside loop body
remark #15399: vectorization support: unroll factor set to 2
remark #15417: vectorization support: number of FP up converts: single precision to double precision 1
remark #15389: vectorization support: reference pK has unaligned access [ ... Black-scholes-
ch1902_ReferenceVersion.cpp(64,5) ]
remark #15381: vectorization support: unaligned access used inside loop body
remark #15399: vectorization support: unroll factor set to 8
remark #15417: vectorization support: number of FP up converts: single precision to double precision
1 [ ... Black-scholes-ch1902_ReferenceVersion.cpp(60,5) ]
2 oportunidades apontadas pelo Compilador !
• Redução da precisão numérica – Double (64 bits) para Single (32 bits)
• Alinhamento de dados
Otimizando o código para precisão simples
d1 = (logf(pS0[i] / pK[i]) + (r + sig * sig * 0.5f) * pT[i]) / (sig * sqrtf(pT[i]));
d2 = (logf(pS0[i] / pK[i]) + (r - sig * sig * 0.5f) * pT[i]) / (sig * sqrtf(pT[i]));
p1 = cdfnormf (d1);
p2 = cdfnormf (d2);
pC[i] = pS0[i] * p1 - pK[i] * expf((-1.0f) * r * pT[i]) * p2;
d1 = (log(pS0[i] / pK[i]) + (r + sig * sig * 0.5) * pT[i]) / (sig * sqrt(pT[i]));
d2 = (log(pS0[i] / pK[i]) + (r - sig * sig * 0.5) * pT[i]) / (sig * sqrt(pT[i]));
p1 = cdfnormf(d1);
p2 = cdfnormf(d2);
pC[i] = pS0[i] * p1 - pK[i] * exp((-1.0) * r * pT[i]) * p2;
23.6x speedup vs Código original
1.4x speedup vs “AVX + Unrool + IVDEP”
Identificando oportunidades de otimização
Vetorização dentro do “core” – Precisão e dados alinhados
Otimizando o código para precisão simples
0
5
10
15
20
25
30
BASELINE IVDEP QXAVX +
IVDEP
QXAVX +
IVDEP +
UNROLL(4)
ALL +
REDUÇÃO DA
PRECISÃO
SPEEDUP
OTIMIZAÇÕES “DENTRO DO CORE” –
1 THREAD
60Mi 120Mi
Identificando oportunidades de otimização
Vetorização dentro do “core” – Precisão e dados alinhados
Configuração
Intel Core i5-4300 CPU 2.5 GHZ
4GB RAM
Windows 8.1 x64
Intel Compiler C++ 15.0
28
Identificando oportunidades de Paralelismo (multi-
threading)
“Do Not Guess – Measure”
Identificando oportunidades de Paralelismo
Multithreads – Intel® Advisor XE
29
Apesar de vetorizado (paralelismo em nível de instruções),
o código está rodando em apenas uma única thread/core !
• Antes de começar a otimização no código, podemos analisar se vale a pena paraleliza-
lo em mais threads !
Intel® Advisor XE
• Modela e compara a performance entre vários frameworks para criação de
threads tanto em processadores quanto em co-processadores
• OpenMP, Intel® Cilk ™ Plus, Intel® Threading Bulding Blocks
• C, C++, Fortran (apenas OpenMP) e C# (Microsoft TPL)
• Prevê escalabilidade do código: relação n.º de threads/ganho de performance
• Identifica oportunidades de paralelismo no código
• Checa corretude do código (deadlocks, race condition)
Identificandooportunidades de Paralelismo
Multithreads – Intel® Advisor XE
30
Passos para utilizar o Intel Advisor
1º - Inclua os headers
#include "advisor-annotate.h“
2º - Adicionar referência ao diretório “include” ; linkar lib ao projeto (Windows e Linux)
Windows com Visual Studio 2012 – Geralmente localizado em “C:Program Files (x86)IntelAdvisor XEinclude”
Linux - Compilando / Link com Advisor
icpc -O2 -openmp 02_ReferenceVersion.cpp
-o 02_ReferenceVersion
-I/opt/intel/advisor_xe/include/
-L/opt/intel/advisor_xe/lib64/
Identificandooportunidades de Paralelismo
Multithreads – Intel® Advisor XE
31
Passos para utilizar o Intel Advisor
3º - Executando o Advisor
Linux
$ advixe-gui &
Crie um novo projeto
- Interface é a mesma para Linux e Windows
- No caso do Visual Studio há a opção de
roda-lo de forma integrada.
Identificando oportunidades de Paralelismo
Multithreads – Intel® Advisor XE
32
Passos para utilizar o Intel Advisor
Advisor Workflow
• Survey Target: analisa o código em busca de oportunidades de paralelismo
• Annotate Sources: Anotações são inseridas em possíveis regiões de código
paralelas
• Check Suitability: Analisa as regiões paralelas anotadas, entrega
previsão de ganho de performance e escalabilidade do código
• Check correctness: Analisa possíveis problemas como “race conditions”
e “dealocks”
• Add Parallel Framework: Passo para substituir “anotações do Advisor”
pelo código do framework escolhido (OpenMP, Cilk Plus, TBB, etc.)
Identificando oportunidades de Paralelismo
Multithreads – Intel® Advisor XE
Identificando “hotspots” e quais loops podem ser paralelizados
Identificando oportunidades de Paralelismo
Multithreads – Intel® Advisor XE
Inserindo as “anotações” do Advisor para executar a próxima fase: Check Suitability
Identificando oportunidades de Paralelismo
Multithreads – Intel® Advisor XE
Identificando “hotspots” e quais loops podem ser paralelizados
Aplicando paralelismo via OpenMP
Análise de concorrência com o Intel® Vtune
Código otimizado “IVDEP + AVX + UNROLL +
FLOAT PRECISION”
Nthreads: 1
time = 0.967425
Nthreads: 2
time = 0.569371
Nthreads: 4
time = 0.387649
Nthreads: 8
time = 0.396282
1
1.2
1.4
1.6
1.8
2
2.2
2.4
2.6
1 2 4 8SPEEDUP
THREADS
OTIMIZAÇÃO
MULTI-THREAD
OpenMP - 60mi
Configuração
Intel Core i5-4300 CPU 2.5 GHZ
4GB RAM
Windows 8.1 x64
Intel Compiler C++ 15.0
Links úteis
• Intel Developer Zone – Modern Code
• Catálogo de Aplicações e Frameworks otimizados para Xeon Phi – link
• Machine Learning – link
• Intel Modern Code Workshops em Big Data e HPC - UNESP / Núcleo de Computação
Científica – link
37
Intel® Xeon® Processors
Intel® Xeon Phi™ Processors
Intel® Xeon Phi™ Coprocessors
Intel® Server Boards and Platforms
Intel® Solutions for Lustre*
Intel® Optane™ Technology
3D XPoint™ Technology
Intel® SSDs
Intel® Omni-Path Architecture
Intel® True Scale Fabric
Intel® Ethernet
Intel® Silicon Photonics
Intel® HPC Orchestrator
Intel® Software Tools
Intel® Cluster Ready Program
Intel Supported SDVis
Small Clusters Through Supercomputers
Compute and Data-Centric Computing
Standards-Based Programmability
On-Premise and Cloud-Based
Compute Memory/Storage
Fabric Software
Intel Silicon
Photonics
FuelYourInsight
38
Intel® Scalable System Framework
Intel® Xeon Phi™ Coprocessor Product Family
Based on Intel® Many Integrated Core (MIC) Architecture
39
Per Intel’s announced products or planning process for future products
2013
Knights Corner
Intel® Xeon Phi™ x100
product family
• 22 nm process
• Coprocessor
• Over 1 TF DP Peak
• Up to 61 Cores
• Up to 16GB GDDR5
2016
Knights
Landing
The processor version
of the next generation
Intel Xeon Phi product
family
• 14 nm process
• Processor & Coprocessor
• Over 3 TF DP Peak
• Up to 72 Cores
• On Package High-Bandwidth
Memory
• 3x single-thread performance
• Out-of-order core
• Integrated Intel® Omni-Path
Knights Landing
Knights Landing
with Fabric
FUTURE
Knights Hill
Next generation of
Intel® MIC Architecture
Product Line
• 10 nm process
• 2nd Generation Integrated
Intel® Omni-Path
• In planning –
©2014, Intel Corporation. All rights reserved. Intel, the Intel logo, Intel Inside, Intel Xeon, and Intel Xeon Phi are trademarks of Intel Corporation in the U.S. and/or other countries. *Other names and brands may be claimed as the
property of others. 40

Más contenido relacionado

La actualidad más candente

La actualidad más candente (8)

Tdc2015 bigdata-mpias-final-pdf
Tdc2015 bigdata-mpias-final-pdfTdc2015 bigdata-mpias-final-pdf
Tdc2015 bigdata-mpias-final-pdf
 
MediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastMediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCast
 
Análise de dados com R - TDC 2015
Análise de dados com R - TDC 2015Análise de dados com R - TDC 2015
Análise de dados com R - TDC 2015
 
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
 
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
 
Dividindo para Conquistar: microserviços com o jeitinho .NET
Dividindo para Conquistar: microserviços com o jeitinho .NETDividindo para Conquistar: microserviços com o jeitinho .NET
Dividindo para Conquistar: microserviços com o jeitinho .NET
 
Cpld top dos tops
Cpld top dos topsCpld top dos tops
Cpld top dos tops
 
Clean code v3
Clean code v3Clean code v3
Clean code v3
 

Destacado

Destacado (20)

TDC2016SP - O bê-a-bá da fila de processamento para você deixar o ThreadPool ...
TDC2016SP - O bê-a-bá da fila de processamento para você deixar o ThreadPool ...TDC2016SP - O bê-a-bá da fila de processamento para você deixar o ThreadPool ...
TDC2016SP - O bê-a-bá da fila de processamento para você deixar o ThreadPool ...
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigData
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigData
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
TDC2016SP - Protocolo Firmata - controle o Arduino com sua linguagem favorita
TDC2016SP - Protocolo Firmata - controle o Arduino com sua linguagem favoritaTDC2016SP - Protocolo Firmata - controle o Arduino com sua linguagem favorita
TDC2016SP - Protocolo Firmata - controle o Arduino com sua linguagem favorita
 
TDC2016SP - Cervejaria artesanal automática com Arduíno
TDC2016SP - Cervejaria artesanal automática com ArduínoTDC2016SP - Cervejaria artesanal automática com Arduíno
TDC2016SP - Cervejaria artesanal automática com Arduíno
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
TDC2016SP - #NoEstimates do jeito errado
TDC2016SP - #NoEstimates do jeito erradoTDC2016SP - #NoEstimates do jeito errado
TDC2016SP - #NoEstimates do jeito errado
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigData
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigData
 
Testes em go
Testes em goTestes em go
Testes em go
 
Testing in go
Testing in goTesting in go
Testing in go
 
TDC2016SP - Unificando a autenticação e controlando acesso a API com Identity...
TDC2016SP - Unificando a autenticação e controlando acesso a API com Identity...TDC2016SP - Unificando a autenticação e controlando acesso a API com Identity...
TDC2016SP - Unificando a autenticação e controlando acesso a API com Identity...
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigData
 
TDC2016SP - Métricas que importam!
TDC2016SP - Métricas que importam!TDC2016SP - Métricas que importam!
TDC2016SP - Métricas que importam!
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigData
 

Similar a TDC2016SP - Trilha BigData

Virtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno DominguesVirtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno Domingues
Joao Galdino Mello de Souza
 
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
iMasters
 
Arquitetura control logix
Arquitetura control logixArquitetura control logix
Arquitetura control logix
Saddam Lande
 

Similar a TDC2016SP - Trilha BigData (20)

Modernização de código em Xeon® e Xeon Phi™
Modernização de código em Xeon® e Xeon Phi™  Modernização de código em Xeon® e Xeon Phi™
Modernização de código em Xeon® e Xeon Phi™
 
Principais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoPrincipais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorização
 
Tw 9850 201
Tw 9850 201Tw 9850 201
Tw 9850 201
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
 
Processadores core i3 e amd
Processadores core i3 e amdProcessadores core i3 e amd
Processadores core i3 e amd
 
Apresentacao 2 - Convidado especial: Intel - SantaASUS 2009
Apresentacao 2 - Convidado especial: Intel - SantaASUS 2009 Apresentacao 2 - Convidado especial: Intel - SantaASUS 2009
Apresentacao 2 - Convidado especial: Intel - SantaASUS 2009
 
Virtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno DominguesVirtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno Domingues
 
Sr one[1]
Sr one[1]Sr one[1]
Sr one[1]
 
Microarquitetura Intel Core Duo
Microarquitetura Intel Core DuoMicroarquitetura Intel Core Duo
Microarquitetura Intel Core Duo
 
Identificando Hotspots e Intel® VTune™ Amplifier - Intel Software Conference
Identificando Hotspots e Intel® VTune™ Amplifier - Intel Software ConferenceIdentificando Hotspots e Intel® VTune™ Amplifier - Intel Software Conference
Identificando Hotspots e Intel® VTune™ Amplifier - Intel Software Conference
 
Mini-curso CUDA
Mini-curso CUDAMini-curso CUDA
Mini-curso CUDA
 
Arquitetura de Microcontroladores Microchip PIC
Arquitetura de Microcontroladores Microchip PICArquitetura de Microcontroladores Microchip PIC
Arquitetura de Microcontroladores Microchip PIC
 
Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!
 
Geração Automática de Autómatos Celulares para FPGA
Geração Automática de Autómatos Celulares para FPGAGeração Automática de Autómatos Celulares para FPGA
Geração Automática de Autómatos Celulares para FPGA
 
Avaliação das distribuições Linux
Avaliação das distribuições LinuxAvaliação das distribuições Linux
Avaliação das distribuições Linux
 
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
 
Arquitetura control logix
Arquitetura control logixArquitetura control logix
Arquitetura control logix
 
Otimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para ExadataOtimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para Exadata
 
1984
19841984
1984
 

Más de tdc-globalcode

Más de tdc-globalcode (20)

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
 

Último

Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
rfmbrandao
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 

Último (20)

Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
Slides 9º ano 2024.pptx- Geografia - exercicios
Slides 9º ano 2024.pptx- Geografia - exerciciosSlides 9º ano 2024.pptx- Geografia - exercicios
Slides 9º ano 2024.pptx- Geografia - exercicios
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 

TDC2016SP - Trilha BigData

  • 1. Próximo passo para a Computação Exascale Programando para Multi-core e Many-core Trilha Big Data Igor Freitas – Intel do Brasil igor.freitas@intel.com
  • 2. Legal Disclaimers Intel technologies features and benefits depend on system configuration and may require enabled hardware, software or service activation. Performance varies depending on system configuration. No computer system can be absolutely secure. Check with your system manufacturer or retailer or learn more at [intel.com]. Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products. All information provided here is subject to change without notice. Contact your Intel representative to obtain the latest Intel product specifications and roadmaps. Results have been estimated or simulated using internal Intel analysis or architecture simulation or modeling, and provided to you for informational purposes. Any differences in your system hardware, software or configuration may affect your actual performance. Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software or service activation. Performance varies depending on system configuration. No computer system can be absolutely secure. Check with your system manufacturer or retailer or learn more at https://www- ssl.intel.com/content/www/us/en/high-performance-computing/path-to-aurora.html. Tests document performance of components on a particular test, in specific systems. Differences in hardware, software, or configuration will affect actual performance. Consult other sources of information to evaluate performance as you consider your purchase. For more complete information about performance and benchmark results, visit http://www.intel.com/performance. 3D XPoint, Intel, the Intel logo, Intel. Experience What’s Inside, the Intel. Experience What’s Inside logo, Intel Xeon Phi, Optane, and Xeon are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other names and brands may be claimed as the property of others. © 2016 Intel Corporation. All rights reserved. 2
  • 3. 3 Próximo passo para a Computação Exascale
  • 4. Over 15 GF/Watt1 ~500 GB/s sustained memory bandwidth with integrated on- package memory Next Step: KNL Systems scalable to >100 PFlop/s ~3X Flops and ~3X single- thread theoretical peak performance over Knights Corner1 Up to 100 Gb/s with Storm Lake integrated fabric 1 Projections based on internal Intel analysis during early product definition, as compared to prior generation Intel® Xeon Phi™ Coprocessors, and are provided for informational purposes only. Any difference in system hardware or software design or configuration may affect actual performance. I/O Memory Processor Performance Resiliency Standard Programming Models Power Efficiency Exascale Vision Next Step on Intel’s Path to Exascale Computing
  • 5. Intel® Xeon Phi™ Product Family x200 5 Host Processor in Groveport Platform Self-boot Intel® Xeon Phi™ processor Ingredient of Grantley Platforms Requires Intel® Xeon® processor host with integrated Intel® Omni-Path Fabric Intel® Xeon Phi™ Processor Intel® Xeon Phi™ Coprocessor x200
  • 6. Knights Landing (KNL) Architectural Diagram 6 Diagram is for conceptual purposes only and only illustrates a CPU and memory • It is not to scale and does not include all functional areas of the CPU, nor does it represent actual component layout. DDR4 DDR4 DDR4 DMIWellsburg PCH Up to 72 cores PCIe Gen3 x36 (KNL) x4 (KNL-F) MCDRAM MCDRAM MCDRAM MCDRAM MCDRAM MCDRAM MCDRAM MCDRAM Micro-CoaxCable(IFP) Micro-CoaxCable(IFP) Connector HFI 2 VPU 1MBL2 Core HUB 2 VPU Core TILE DDR4 DDR4 DDR4 Up to 72 cores 2D mesh architecture Up to 16GB high-bandwidth on-package memory (MCDRAM). Exposed as NUMA node ~500 GB/s sustained BW Over 3 TF DP peak • Full Intel® Xeon Phi™ ISA compatibility through Intel® AVX-512 ~3x single-thread compared to Knights Corner 6 channels DDR4 Up to 384GB 2 ports Intel® Omni-Path Integrated Fabric (KNL-F Only) On-package 50 GB/s total bi-directional BW Common with Grantley PCH 1S (no QPI/KTI) 2x 512b VPU per core (Vector Processing Units) Based on Intel® Atom™ processor (Silvermont) with many HPC enhancements • Deep out-of-order buffers • Gather/scatter in hardware • Improved branch prediction • 4 threads/core • High cache bandwidth and more
  • 7. 7 Modernização de código em processadores Xeon® e Xeon Phi™ Identificando oportunidades de otimização - Vetorização
  • 8. Identificando oportunidades de otimização Foco deste seminário: Modernização de código 8 Composer Edition Threading design & prototyping Parallel performance tuning Memory & thread correctness Professional Edition Intel® C++ and Fortran compilers Parallel models (e.g., OpenMP*) Optimized libraries Multi-fabric MPI library MPI error checking and tuning Cluster EditionHPC Cluster MPI Messages Vectorized & Threaded Node Otimização em um único “nó” de processamento Vetorização & Paralelismo
  • 9. 9 Código C/C++ ou Fortran Thread 0 / Core 0 Thread 1/ Core1 Thread 2 / Core 2 Thread 12 / Core12 ... Thread 0/Core0 Thread 1/Core1 Thread 2/Core2 Thread 244 /Core61 . . . 128 Bits 256 Bits Vector Processor Unit por Core Vector Processor Unit por Core Paralelismo (Multithreading) Vetorização 512 Bits Identificando oportunidades de otimização Foco deste seminário: Modernização do código
  • 10. Identificando oportunidades de otimização Recapitulando o que é vetorização / SIMD 10 for (i=0;i<=MAX;i++) c[i]=a[i]+b[i]; + c[i+7] c[i+6] c[i+5] c[i+4] c[i+3] c[i+2] c[i+1] c[i] b[i+7] b[i+6] b[i+5] b[i+4] b[i+3] b[i+2] b[i+1] b[i] a[i+7] a[i+6] a[i+5] a[i+4] a[i+3] a[i+2] a[i+1] a[i] Vector - Uma instrução - Oito operações + C B A Scalar - Uma instrução - Uma operação • O que é e ? • Capacidade de realizar uma operação matemática em dois ou mais elementos ao mesmo tempo. • Por que Vetorizar ? • Ganho substancial em performance !
  • 11. Identificando oportunidades de otimização Vetorização dentro do “core” Código de exemplo - Black-Scholes Pricing Code “a mathematical model of a financial market containing certain derivative investment instruments. “ Exemplo retirado do livro “High Performance Parallelism Pearls” Código fonte: http://lotsofcores.com/pearls.code Artigo sobre otimização deste método https://software.intel.com/en-us/articles/case-study-computing-black-scholes-with-intel- advanced-vector-extensions 11
  • 12. 12 Facilidade de Uso Ajuste Fino Intel® Math Kernel Library Array Notation: Intel® Cilk™ Plus Auto vectorization Semi-auto vectorization: #pragma (vector, ivdep, simd) C/C++ Vector Classes (F32vec16, F64vec8) Devemos avaliar três fatores:  Necessidade de performance  Disponibilidade de recursos para otimizar o código  Portabilidade do código Identificando oportunidades de otimização Maneiras de otimizar o código Intel® Data Analytics Acceleration Library
  • 13. Identificando oportunidades de otimização Vetorização dentro do “core” • Compilar o código com parâmetro “-qopt-report[=n]” no Linux ou “/Qopt-report[:n]” no Windows . • /Qopt-report-file:vecReport.txt  Analisar relatório, encontrar dicas sobre loops não vetorizados e principal causa 13 LOOP BEGIN at ...Black-scholes-ch1902_ReferenceVersion.cpp(93,3) remark #15344: loop was not vectorized: vector dependence prevents vectorization. First dependence is shown below. Use level 5 report for details remark #15346: vector dependence: assumed OUTPUT dependence between pT line 95 and pK line 97 remark #25439: unrolled with remainder by 2 LOOP END LOOP BEGIN at ...Black-scholes-ch1902_ReferenceVersion.cpp(56,3) remark #15344: loop was not vectorized: vector dependence prevents vectorization. First dependence is shown below. Use level 5 report for details remark #15346: vector dependence: assumed ANTI dependence between pS0 line 58 and pC line 62 LOOP END Loop de inicialização de variáveis Loop dentro da função “GetOptionPrices” O código está otimizado para rodar em uma única thread ?
  • 14. Identificando oportunidades de otimização Vetorização dentro do “core” • Rodar Intel® VTune – “General Exploration” marcar opção “Analyze memory bandwidth” • Identificar “hotspot” = função que gasta mais tempo na execução • Identificar se as funções estão vetorizadas 14
  • 15. Identificando oportunidades de otimização Vetorização dentro do “core” Parâmetros de compilação utilizados: /GS /W3 /Gy /Zc:wchar_t /Zi /O2 /Fd"x64Releasevc110.pdb" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Qipo /Zc:forScope /Oi /MD /Fa"x64Release" /EHsc /nologo /Fo"x64Release" /Qprof-dir "x64Release" /Fp"x64ReleaseReference.pch“ Parâmetros de execução <número de elementos> <número de threads> “60000000 1” 15
  • 16. Identificando oportunidades de otimização Vetorização dentro do “core” 16 Instruções escalares como “movsd” ou “cvtsd2ss” (“s” de scalar) estão sendo utilizadas ao invés de “vmovapd” ; “v” de AVX , “p” de packed , “d” de double SSE utiliza 128 bits ; e não 256 bits igual instruções AVX
  • 17. Identificando oportunidades de otimização Vetorização dentro do “core” 17 O que identificamos ? • Código não está vetorizado, não utiliza instruções AVX/AVX2 de 256 bits • Compilador apontou dependência de dados • Oportunidades apontadas pelo VTune • “Back-end bound”: baixo desempenho na execução das instruções • Memory bound: aplicação dependente da troca de mensagens entre Cache – RAM • Instruções load (ram -> cache) e store ( cache -> ram ) • L1 bound: dados não são encontrados neste nível de cache • Port utilization: baixa utilização do “core” , “non-memory issues” • Funções “cdfnormf” e “GetOptionPrices” são hotspots
  • 18. 18 Modernização de código com “semi-autovetorização”
  • 19. Modernização de código Semi-autovetorização 19 Uso do #pragma ivdep (por enquanto utilizando apenas 1 thread/core) • Código não está vetorizado, não utiliza instruções AVX/AVX2 de 256 bits • Compilador apontou dependência de dados na linha 56 #pragma ivdep for (i = 0; i < N; i++) { d1 = (log(pS0[i] / pK[i]) + (r + sig * sig * 0.5) * pT[i]) / (sig * sqrt(pT[i])); d2 = (log(pS0[i] / pK[i]) + (r - sig * sig * 0.5) * pT[i]) / (sig * sqrt(pT[i])); p1 = cdfnormf(d1); p2 = cdfnormf(d2); pC[i] = pS0[i] * p1 - pK[i] * exp((-1.0) * r * pT[i]) * p2; } Performance – 60.000.000 elementos #pragma ivdep time = 1.886624 Código original time = 22.904422 12.1x de speedup Configuração Intel Core i5-4300 CPU 2.5 GHZ 4GB RAM Windows 8.1 x64 Intel Compiler C++ 15.0
  • 20. Modernização de código Semi-autovetorização 20 Uso do #pragma ivdep • Entenda o que mudou rodando novamente o VTune, compare as duas versões ! Menos instruções executadas ! Menos ciclos de clock por execução ! Menos “misses” na cache L1 Melhor uso do “core”
  • 21. Modernização de código Semi-autovetorização 21 Uso do #pragma ivdep • Entenda o que mudou rodando novamente o VTune, compare as duas versões ! Menos instruções executadas ! Menos ciclos de clock por execução ! Menos “misses” na cache L1 Melhor uso do “core”
  • 22. Modernização de código Semi-autovetorização Uso do #pragma ivdep • Entenda o que mudou rodando novamente o VTune, compare as duas versões ! • Relatório do Compilador: análise do loop vetorizado e dicas de como vetorizar weekpdf-codigos-intel-lnccparalelismo-dia-02Black-scholes-ch1902_ReferenceVersion.cpp(63,5) ] remark #15300: LOOP WAS VECTORIZED remark #15442: entire loop may be executed in remainder remark #15448: unmasked aligned unit stride loads: 1 remark #15450: unmasked unaligned unit stride loads: 2 remark #15451: unmasked unaligned unit stride stores: 1 remark #15475: --- begin vector loop cost summary --- remark #15476: scalar loop cost: 760 remark #15477: vector loop cost: 290.250 remark #15478: estimated potential speedup: 2.560 remark #15479: lightweight vector operations: 66 remark #15480: medium-overhead vector operations: 2 remark #15482: vectorized math library calls: 5 remark #15487: type converts: 13 remark #15488: --- end vector loop cost summary --- LOOP END
  • 23. Modernização de código Semi-autovetorização 0 5 10 15 20 BASELINE IVDEP QXAVX + IVDEP QXAVX + IVDEP + UNROLL(4) SPEEDUP OTIMIZAÇÕES “DENTRO DO CORE” – 1 THREAD 60Mi 120Mi • IVDEP • Ignora dependência entre os vetores • (QxAVX) Instruções AVX – 256 bits • Unroll ( n ) • Desmembra o loop para instruções SIMD • Link sobre unroll • Requisitos para loop ser vetorizado • Loop unrolling Configuração Intel Core i5-4300 CPU 2.5 GHZ 4GB RAM Windows 8.1 x64 Intel Compiler C++ 15.0
  • 24. 24 Identificando oportunidades de otimização [2] Precisão numérica e alinhamento de dados
  • 25. Identificando oportunidades de otimização Vetorização dentro do “core” – Precisão e dados alinhados LOOP BEGIN at ... Black-scholes-ch1902_ReferenceVersion.cpp(58,3) remark #15389: vectorization support: reference pS0 has unaligned access [ remark #15381: vectorization support: unaligned access used inside loop body remark #15399: vectorization support: unroll factor set to 2 remark #15417: vectorization support: number of FP up converts: single precision to double precision 1 remark #15389: vectorization support: reference pK has unaligned access [ ... Black-scholes- ch1902_ReferenceVersion.cpp(64,5) ] remark #15381: vectorization support: unaligned access used inside loop body remark #15399: vectorization support: unroll factor set to 8 remark #15417: vectorization support: number of FP up converts: single precision to double precision 1 [ ... Black-scholes-ch1902_ReferenceVersion.cpp(60,5) ] 2 oportunidades apontadas pelo Compilador ! • Redução da precisão numérica – Double (64 bits) para Single (32 bits) • Alinhamento de dados
  • 26. Otimizando o código para precisão simples d1 = (logf(pS0[i] / pK[i]) + (r + sig * sig * 0.5f) * pT[i]) / (sig * sqrtf(pT[i])); d2 = (logf(pS0[i] / pK[i]) + (r - sig * sig * 0.5f) * pT[i]) / (sig * sqrtf(pT[i])); p1 = cdfnormf (d1); p2 = cdfnormf (d2); pC[i] = pS0[i] * p1 - pK[i] * expf((-1.0f) * r * pT[i]) * p2; d1 = (log(pS0[i] / pK[i]) + (r + sig * sig * 0.5) * pT[i]) / (sig * sqrt(pT[i])); d2 = (log(pS0[i] / pK[i]) + (r - sig * sig * 0.5) * pT[i]) / (sig * sqrt(pT[i])); p1 = cdfnormf(d1); p2 = cdfnormf(d2); pC[i] = pS0[i] * p1 - pK[i] * exp((-1.0) * r * pT[i]) * p2; 23.6x speedup vs Código original 1.4x speedup vs “AVX + Unrool + IVDEP” Identificando oportunidades de otimização Vetorização dentro do “core” – Precisão e dados alinhados
  • 27. Otimizando o código para precisão simples 0 5 10 15 20 25 30 BASELINE IVDEP QXAVX + IVDEP QXAVX + IVDEP + UNROLL(4) ALL + REDUÇÃO DA PRECISÃO SPEEDUP OTIMIZAÇÕES “DENTRO DO CORE” – 1 THREAD 60Mi 120Mi Identificando oportunidades de otimização Vetorização dentro do “core” – Precisão e dados alinhados Configuração Intel Core i5-4300 CPU 2.5 GHZ 4GB RAM Windows 8.1 x64 Intel Compiler C++ 15.0
  • 28. 28 Identificando oportunidades de Paralelismo (multi- threading) “Do Not Guess – Measure”
  • 29. Identificando oportunidades de Paralelismo Multithreads – Intel® Advisor XE 29 Apesar de vetorizado (paralelismo em nível de instruções), o código está rodando em apenas uma única thread/core ! • Antes de começar a otimização no código, podemos analisar se vale a pena paraleliza- lo em mais threads ! Intel® Advisor XE • Modela e compara a performance entre vários frameworks para criação de threads tanto em processadores quanto em co-processadores • OpenMP, Intel® Cilk ™ Plus, Intel® Threading Bulding Blocks • C, C++, Fortran (apenas OpenMP) e C# (Microsoft TPL) • Prevê escalabilidade do código: relação n.º de threads/ganho de performance • Identifica oportunidades de paralelismo no código • Checa corretude do código (deadlocks, race condition)
  • 30. Identificandooportunidades de Paralelismo Multithreads – Intel® Advisor XE 30 Passos para utilizar o Intel Advisor 1º - Inclua os headers #include "advisor-annotate.h“ 2º - Adicionar referência ao diretório “include” ; linkar lib ao projeto (Windows e Linux) Windows com Visual Studio 2012 – Geralmente localizado em “C:Program Files (x86)IntelAdvisor XEinclude” Linux - Compilando / Link com Advisor icpc -O2 -openmp 02_ReferenceVersion.cpp -o 02_ReferenceVersion -I/opt/intel/advisor_xe/include/ -L/opt/intel/advisor_xe/lib64/
  • 31. Identificandooportunidades de Paralelismo Multithreads – Intel® Advisor XE 31 Passos para utilizar o Intel Advisor 3º - Executando o Advisor Linux $ advixe-gui & Crie um novo projeto - Interface é a mesma para Linux e Windows - No caso do Visual Studio há a opção de roda-lo de forma integrada.
  • 32. Identificando oportunidades de Paralelismo Multithreads – Intel® Advisor XE 32 Passos para utilizar o Intel Advisor Advisor Workflow • Survey Target: analisa o código em busca de oportunidades de paralelismo • Annotate Sources: Anotações são inseridas em possíveis regiões de código paralelas • Check Suitability: Analisa as regiões paralelas anotadas, entrega previsão de ganho de performance e escalabilidade do código • Check correctness: Analisa possíveis problemas como “race conditions” e “dealocks” • Add Parallel Framework: Passo para substituir “anotações do Advisor” pelo código do framework escolhido (OpenMP, Cilk Plus, TBB, etc.)
  • 33. Identificando oportunidades de Paralelismo Multithreads – Intel® Advisor XE Identificando “hotspots” e quais loops podem ser paralelizados
  • 34. Identificando oportunidades de Paralelismo Multithreads – Intel® Advisor XE Inserindo as “anotações” do Advisor para executar a próxima fase: Check Suitability
  • 35. Identificando oportunidades de Paralelismo Multithreads – Intel® Advisor XE Identificando “hotspots” e quais loops podem ser paralelizados
  • 36. Aplicando paralelismo via OpenMP Análise de concorrência com o Intel® Vtune Código otimizado “IVDEP + AVX + UNROLL + FLOAT PRECISION” Nthreads: 1 time = 0.967425 Nthreads: 2 time = 0.569371 Nthreads: 4 time = 0.387649 Nthreads: 8 time = 0.396282 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 1 2 4 8SPEEDUP THREADS OTIMIZAÇÃO MULTI-THREAD OpenMP - 60mi Configuração Intel Core i5-4300 CPU 2.5 GHZ 4GB RAM Windows 8.1 x64 Intel Compiler C++ 15.0
  • 37. Links úteis • Intel Developer Zone – Modern Code • Catálogo de Aplicações e Frameworks otimizados para Xeon Phi – link • Machine Learning – link • Intel Modern Code Workshops em Big Data e HPC - UNESP / Núcleo de Computação Científica – link 37
  • 38. Intel® Xeon® Processors Intel® Xeon Phi™ Processors Intel® Xeon Phi™ Coprocessors Intel® Server Boards and Platforms Intel® Solutions for Lustre* Intel® Optane™ Technology 3D XPoint™ Technology Intel® SSDs Intel® Omni-Path Architecture Intel® True Scale Fabric Intel® Ethernet Intel® Silicon Photonics Intel® HPC Orchestrator Intel® Software Tools Intel® Cluster Ready Program Intel Supported SDVis Small Clusters Through Supercomputers Compute and Data-Centric Computing Standards-Based Programmability On-Premise and Cloud-Based Compute Memory/Storage Fabric Software Intel Silicon Photonics FuelYourInsight 38 Intel® Scalable System Framework
  • 39. Intel® Xeon Phi™ Coprocessor Product Family Based on Intel® Many Integrated Core (MIC) Architecture 39 Per Intel’s announced products or planning process for future products 2013 Knights Corner Intel® Xeon Phi™ x100 product family • 22 nm process • Coprocessor • Over 1 TF DP Peak • Up to 61 Cores • Up to 16GB GDDR5 2016 Knights Landing The processor version of the next generation Intel Xeon Phi product family • 14 nm process • Processor & Coprocessor • Over 3 TF DP Peak • Up to 72 Cores • On Package High-Bandwidth Memory • 3x single-thread performance • Out-of-order core • Integrated Intel® Omni-Path Knights Landing Knights Landing with Fabric FUTURE Knights Hill Next generation of Intel® MIC Architecture Product Line • 10 nm process • 2nd Generation Integrated Intel® Omni-Path • In planning –
  • 40. ©2014, Intel Corporation. All rights reserved. Intel, the Intel logo, Intel Inside, Intel Xeon, and Intel Xeon Phi are trademarks of Intel Corporation in the U.S. and/or other countries. *Other names and brands may be claimed as the property of others. 40

Notas del editor

  1. 120mi results: original 20.92435455; v_02: 20.92436028; time = 51.927639 ivdep 20.92435455; v_02: 20.92436600; time = 3.550676 14.6X ivdep + avx 20.92435455; v_02: 20.92436600; time = 3.406304 15.2X ivdep + avx + unroll(4) 20.92435455; v_02: 20.92436600; time = 2.894981 17.9X Performance – 60.000000 elementos /QxAVX + ivdep + unroll(4) 20.92435455; v_02: 20.92436600; time = 1.423977 Speedup: 16.09x /QxAVX + ivdep 20.92435455; v_02: 20.92436600; time = 1.613141 Speedup: 14.1x #pragma ivdep 20.92435455; v_02: 20.92436600; time = 1.886624 Speedup: 12.1x Código original 20.92435455; v_02: 20.92436028; time = 22.904422
  2. 60mi ivdep + avx + unroll(4) + float precision time = 0.967425 speedup 23.6x over original code (v_02: 20.92436028; time = 22.904422) /QxAVX + ivdep + unroll(4) time = 1.423977 Speedup: 16.09x
  3. 60mi ivdep + avx + unroll(4) + float precision time = 0.967425 speedup 23.6x over original code (v_02: 20.92436028; time = 22.904422) /QxAVX + ivdep + unroll(4) time = 1.423977 Speedup: 16.09x 120mi ivdep + avx + unroll(4) + float precision time = 1.982280 original time = 51.927639
  4. 60mi 1 thread: time = 0.824519 OpenMP Nthreads: 8 time = 0.396282 Nthreads: 4 time = 0.387649 Nthreads: 2 time = 0.569371
  5. Here is an overview of the Xeon Phi product family. KNC is our currently shipping product, today we are disclosing KNL details. And next up, recently announced at SC’14, is Knights Hill. KNL is based on 14nm processor technology – both the processor and co-processor - when KNL is avail as a processor you can have a lot more system memory – the higher memory bandwidth can be accessed heavily during computations. When you have the fabric on the chip its 3x faster than KNC. Why this matters to the ISV biz is they have binary compatibility. Higher value expands their market – again the pathway to innovation is more scalability.