Blocos de construção do Intel Threading
| Blocos de construção do Intel Threading | ||
|---|---|---|
| componente oneAPI | ||
| Informações gerais | ||
| tipo de programa | Biblioteca | |
| desenvolvedor | Intel | |
| Licença | Dual: Proprietário e Open Source | |
| Informação técnica | ||
| Programado em | C++ | |
| Versões | ||
| Última versão estável | 4.0 (08 de setembro de 2011) | |
| Links | ||
Intel Threading Building Blocks (Intel TBB) é uma biblioteca baseada em template para C++ desenvolvida pela Intel para facilitar a escrita de programas que exploram os recursos de paralelismo de processadores de arquitetura multi - core .
Esta biblioteca fornece algoritmos e estruturas de dados que permitem ao programador evitar parcialmente as complicações de usar pacotes de gerenciamento de threads nativos onde a criação, sincronização e destruição de threads são explícitas e dependentes do sistema. Em vez disso, a biblioteca abstrai o acesso a vários processadores, permitindo que as operações sejam tratadas como tarefas que são particionadas automática e dinamicamente entre os processadores disponíveis por um gerenciador de tempo de execução.
Esta abordagem inclui o Intel TBB na família de soluções para programação paralela que permitem desacoplar a programação das características particulares da máquina.
História
A primeira versão desta biblioteca (versão 1.0) foi lançada pela Intel em 29 de agosto de 2006, um ano após o lançamento do primeiro processador multi-core de arquitetura x86 da Intel, o Pentium D. A versão 1.1 foi lançada em 10 de abril de 2007. Essa nova versão foi introduzida auto_partitioneroferecendo uma alternativa automática para especificar manualmente o tamanho de grão ideal para paralelização de tarefas. Nesse mesmo ano foi incluído na versão 10.0 do Intel C++ Compiler Professional Edition . [ 1 ]
A versão 2.0 foi lançada em 24 de julho de 2007. Essa versão incluiu o lançamento do código-fonte e a criação de um projeto colaborativo de código aberto . [ 2 ] O código é lançado sob a GPLv2 com uma licença de " exceção de tempo de execução " , a mesma licença usada pela implementação do C++ Standard Library do GCC . No entanto, o Intel TBB ainda é distribuído em uma versão comercial sem código-fonte que fornece suporte, mas não adiciona funcionalidade extra.
A versão 2.1 foi publicada em 22 de julho de 2008, embora tenha sido atualizada várias vezes. Ele traz novos recursos, como afinidade de thread de tarefa, suporte a cancelamento, tratamento de exceção e adaptadores portáteis para threads. A última atualização publicada desta versão foi a atualização 4 de 22 de abril de 2009.
Implementação
O Intel TBB implementa o roubo de tarefas para equilibrar a carga de trabalho sobre os núcleos de processamento disponíveis para aumentar a utilização do núcleo e a escalabilidade do programa. Inicialmente, a carga de trabalho é dividida igualmente entre os núcleos de processamento disponíveis. Se um deles terminar seu trabalho enquanto outro ainda tiver uma carga significativa em sua fila de tarefas, o gerenciador de tarefas reatribuirá parte desse trabalho ao núcleo ocioso. Esse recurso de realocação dinâmica desacopla a programação da máquina, permitindo que os aplicativos escritos usando essa biblioteca sejam dimensionados para usar todos os núcleos de processamento disponíveis sem nenhuma alteração no código-fonte ou nos executáveis.
O Intel TBB, seguindo o exemplo do STL , é baseado no uso de templates, uma vez que se espera que o polimorfismo em tempo de compilação seja mais eficiente que o polimorfismo em tempo de execução tradicional.
Conteúdo
A Intel TBB fornece, entre outros, a seguinte coleção de componentes para programação paralela:
- Algoritmos básicos:
parallel_for,parallel_reduce,parallel_scan. - Algoritmos avançados:
parallel_while,parallel_do,pipeline,parallel_sort. - Recipientes:
concurrent_queue,concurrent_vector,concurrent_hash_map. - Reserva de memória:
scalable_allocator,cache_aligned_allocator. - Exclusão mútua:
mutex,spin_mutex,queuing_mutex,spin_rw_mutex,queuing_rw_mutex,recursive mutex. - Operações atômicas:
fetch_and_increment,fetch_and_decrement,fetch_and_add,compare_and_swap,fetch_and_store. - Duração do tempo:
tick_count. - Gerenciador de Tarefas:
task.
Sistemas suportados
Intel TBB 2.1 em sua versão comercial é compatível com Microsoft Windows (XP ou posterior), Mac OS X (versão 10.4.4 ou posterior) e Linux , suportando vários compiladores: Visual C++ (versão 7.1 ou posterior, somente em Windows), Intel Compilador C++ (versão 9.0 ou superior) ou GCC . [ 3 ] Além disso , a implementação gratuita do Intel TBB é suportada no Sun Solaris , [ 4 ] PowerPC , XBOX 360 , QNX Neutrino e FreeBSD .
Em setembro de 2008, o Intel TBB estava disponível como um pacote para as seguintes distribuições Linux:
Veja também
- programação paralela
- Cilk
- Abrir MP
- OmpSs
- Charme++
Referências
- ^ "Novos produtos Intel simplificam e aceleram o desenvolvimento de software para processadores multi-core" . Arquivado a partir do original em 15 de julho de 2009 . Recuperado em 23 de abril de 2009 .
- ↑ Blocos de Construção de Tópicos
- ↑ "Intel Threading Building Blocks - Notas de Versão 2.0" . pág. 4-5. Arquivado a partir do original em 19 de julho de 2011 . Recuperado em 23 de abril de 2009 .
- ^ "Usando os blocos de construção rosqueados da Intel (TBB) com o Sun Studio Express" . Recuperado em 23 de abril de 2009 .
Bibliografia
- Reinders, James (julho de 2007). Intel Threading Building Blocks: Equipando C++ para Paralelismo de Processador Multinúcleo . Sebastopol: O'Reilly Media. ISBN 978-0-596-51480-8 .
Links externos
- Site da versão comercial ( link quebrado disponível no Internet Archive ; veja histórico , primeira e última versão ).
- Site do projeto de código aberto