Melhorando Sistemas de Processamento em Memória com Novas Bibliotecas
Uma nova biblioteca melhora cálculos complexos em arquiteturas PIM.
― 7 min ler
Índice
- O Desafio das Operações Complexas
- A Necessidade de Bibliotecas Eficientes
- Visão Geral das Funções Transcendentes
- Como o PIM Funciona
- Estado Atual da Tecnologia PIM
- Limitações dos Sistemas PIM Existentes
- A Nova Biblioteca para Funções Transcendentes
- Avaliando o Desempenho da Biblioteca
- Testando a Biblioteca com Cargas de Trabalho Reais
- Conclusão
- Fonte original
- Ligações de referência
Processamento em memória (PIM) é uma nova forma de usar a memória que junta ela com habilidades de processamento. Essa abordagem tenta resolver o problema de ficar movendo dados pra lá e pra cá entre a memória e as unidades de processamento nos computadores modernos. Nos sistemas tradicionais, rola uma diferença de desempenho entre a velocidade dos processadores e a rapidez com que eles acessam a memória. Com os computadores ficando mais rápidos, acessar dados virou uma grande limitação. Os sistemas PIM tentam melhorar o desempenho permitindo que os cálculos sejam feitos bem onde os dados estão armazenados.
O Desafio das Operações Complexas
Um dos principais desafios nos sistemas PIM atuais é lidar com cálculos complexos, especialmente funções transcendentes. Essas funções incluem funções trigonométricas como seno e cosseno, exponenciação e logaritmos. Esses cálculos são cruciais em várias aplicações modernas, incluindo as de aprendizado de máquina. As arquiteturas PIM atuais costumam ter capacidades limitadas e têm dificuldade em lidar com essas operações complexas de forma eficaz.
A Necessidade de Bibliotecas Eficientes
Pra dar conta desses cálculos complexos nos sistemas PIM, uma nova biblioteca foi criada. Essa biblioteca oferece métodos eficientes pra lidar com funções transcendentes. Ela usa duas técnicas principais: CORDIC e tabelas de consulta (LUT). CORDIC é um método que permite cálculos usando operações simples como adições e deslocamentos. Tabelas de consulta armazenam valores pré-calculados, permitindo que os cálculos sejam feitos rapidinho ao consultá-los, em vez de serem computados do zero.
Visão Geral das Funções Transcendentes
Funções transcendentes são aquelas que não podem ser expressas como uma equação polinomial simples. Isso dificulta o cálculo preciso em um número finito de passos. Funções transcendentes comuns incluem seno, cosseno, exponenciação e logaritmo. Essas funções são importantes em várias aplicações, tipo computação científica e aprendizado de máquina.
Como o PIM Funciona
Os sistemas PIM integram elementos de processamento perto da memória pra reduzir os atrasos causados pela movimentação de dados. Esses sistemas podem ser divididos em duas categorias principais:
Processamento-perto-da-memória (PNM): Esse tipo coloca unidades de processamento bem ao lado da memória. Essa abordagem ajuda a acelerar o acesso aos dados.
Processamento-usando-memória (PUM): Esse tipo usa as propriedades da memória em si pra realizar cálculos, permitindo operações sem mover dados pra fora da memória.
Avanços recentes na tecnologia de memória tornaram possível projetar sistemas PIM que oferecem essas capacidades.
Estado Atual da Tecnologia PIM
Os primeiros sistemas PIM do mundo real começaram a aparecer no mercado. Empresas como a UPMEM desenvolveram arquiteturas PIM que colocam pequenos núcleos de processamento ao lado dos bancos de memória. Esses desenvolvimentos mostram que o PIM pode se tornar uma solução prática pros problemas de movimentação de dados enfrentados pelas arquiteturas tradicionais de computador.
Vários protótipos surgiram, incluindo abordagens como HBM-PIM e AxDIMM. Cada um desses sistemas visa casos de uso específicos, como aprendizado de máquina ou processamento de dados, mas eles compartilham características comuns, como conjuntos de instruções limitados e unidades de processamento simples.
Limitações dos Sistemas PIM Existentes
Os sistemas PIM atuais têm limitações em relação ao tipo de operações que eles podem realizar. Por exemplo, muitos sistemas não suportam cálculos avançados como funções transcendentes de forma nativa e, em vez disso, contam com bibliotecas de software. Isso cria desafios em aplicações que exigem o uso frequente dessas funções, já que a programação precisa lidar com a transferência de tarefas entre diferentes unidades de processamento.
A Nova Biblioteca para Funções Transcendentes
Pra contornar as limitações dos sistemas PIM existentes, foi criada uma nova biblioteca que se especializa em funções transcendentes. Essa biblioteca apoia vários métodos pra calcular essas funções de forma eficiente. O foco da biblioteca é fornecer cálculos rápidos e precisos no contexto das arquiteturas PIM.
Método CORDIC
O método CORDIC é um algoritmo iterativo que pode ser usado pra calcular várias funções matemáticas, incluindo seno e cosseno. A principal vantagem do CORDIC é que ele usa apenas operações simples como adição e deslocamento de bits, que são mais fáceis de realizar em sistemas PIM em comparação com operações mais complexas como multiplicação.
Tabelas de Consulta (LUT)
O método de tabela de consulta envolve pré-calcular valores de funções e armazená-los na memória. Quando um cálculo é necessário, o sistema recupera o valor necessário da tabela. Esse método acelera significativamente os cálculos, já que evita a necessidade de um grande esforço de computação toda vez que uma função é chamada. As tabelas de consulta podem ser ajustadas conforme as necessidades da aplicação, permitindo um equilíbrio entre rapidez e precisão.
Avaliando o Desempenho da Biblioteca
Pra determinar a eficácia da nova biblioteca, foram realizadas análises de desempenho usando microbenchmarks. Microbenchmarks são pequenos programas projetados pra testar o desempenho de funções específicas. Esses testes mediram a precisão, ciclos de execução, consumo de memória e tempo de configuração associados a diferentes métodos de cálculo.
Ciclos de Execução
O número de ciclos de execução é uma métrica importante na avaliação do desempenho. Menos ciclos de execução geralmente indicam desempenho mais rápido. A biblioteca foi considerada eficaz em otimizar ciclos de execução, tornando-a adequada pra uso em várias aplicações.
Consumo de Memória
O consumo de memória é outro fator crítico ao avaliar o desempenho. As arquiteturas PIM costumam ter recursos de memória limitados disponíveis, tornando essencial gerenciar esses recursos de forma eficiente. Diferentes métodos de cálculo foram testados quanto ao uso de memória, garantindo que a biblioteca permaneça prática em cenários do mundo real.
Testando a Biblioteca com Cargas de Trabalho Reais
Além dos microbenchmarks, a biblioteca foi testada com três cargas de trabalho reais significativas: Blackscholes, Sigmoid e Softmax. Esses benchmarks representam aplicações comuns onde funções transcendentes desempenham um papel vital.
Blackscholes
O modelo Blackscholes é usado em finanças pra calcular o preço de opções. Ele precisa de várias funções, incluindo exponenciação e logaritmos. A versão PIM do benchmark Blackscholes mostrou melhorias significativas de desempenho em comparação com métodos tradicionais.
Sigmoid
A função Sigmoid é comumente usada em aprendizado de máquina como uma função de ativação. Esse benchmark destacou a capacidade da biblioteca de oferecer um desempenho competitivo em comparação com implementações tradicionais de CPU.
Softmax
Softmax é usada em aprendizado de máquina pra converter pontuações brutas em probabilidades. A implementação do Softmax usando a nova biblioteca mostrou que a arquitetura PIM pode lidar com aplicações exigentes de forma eficaz, reduzindo significativamente a sobrecarga de movimentação de dados.
Conclusão
Os sistemas de processamento em memória têm um grande potencial pra melhorar a eficiência e a velocidade dos cálculos, reduzindo os gargalos associados ao movimento de dados. A nova biblioteca para funções transcendentes aborda de forma eficaz as limitações das arquiteturas PIM existentes, oferecendo métodos eficientes pra cálculos complexos. Aproveitando abordagens como CORDIC e tabelas de consulta, a biblioteca consegue fornecer resultados rápidos e precisos, abrindo caminho pra aplicações mais avançadas em áreas como aprendizado de máquina e computação científica.
À medida que a tecnologia PIM continua a evoluir, a disponibilidade de bibliotecas eficientes será crucial pra desbloquear todo o seu potencial e permitir uma nova geração de sistemas de computação que consigam lidar com as demandas das cargas de trabalho modernas.
Título: TransPimLib: A Library for Efficient Transcendental Functions on Processing-in-Memory Systems
Resumo: Processing-in-memory (PIM) promises to alleviate the data movement bottleneck in modern computing systems. However, current real-world PIM systems have the inherent disadvantage that their hardware is more constrained than in conventional processors (CPU, GPU), due to the difficulty and cost of building processing elements near or inside the memory. As a result, general-purpose PIM architectures support fairly limited instruction sets and struggle to execute complex operations such as transcendental functions and other hard-to-calculate operations (e.g., square root). These operations are particularly important for some modern workloads, e.g., activation functions in machine learning applications. In order to provide support for transcendental (and other hard-to-calculate) functions in general-purpose PIM systems, we present \emph{TransPimLib}, a library that provides CORDIC-based and LUT-based methods for trigonometric functions, hyperbolic functions, exponentiation, logarithm, square root, etc. We develop an implementation of TransPimLib for the UPMEM PIM architecture and perform a thorough evaluation of TransPimLib's methods in terms of performance and accuracy, using microbenchmarks and three full workloads (Blackscholes, Sigmoid, Softmax). We open-source all our code and datasets at~\url{https://github.com/CMU-SAFARI/transpimlib}.
Autores: Maurus Item, Juan Gómez-Luna, Yuxin Guo, Geraldo F. Oliveira, Mohammad Sadrosadati, Onur Mutlu
Última atualização: 2023-09-05 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2304.01951
Fonte PDF: https://arxiv.org/pdf/2304.01951
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.