close

Blocos de construção do Intel Threading

Ir para a navegação Ir para a pesquisa
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

Referências

  1. ^ "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 . 
  2. Blocos de Construção de Tópicos
  3. "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 . 
  4. ^ "Usando os blocos de construção rosqueados da Intel (TBB) com o Sun Studio Express" . Recuperado em 23 de abril de 2009 . 

Bibliografia


Links externos