Diesel: DSL для вычислений линейной алгебры и нейронных сетей на графических процессорах
Diesel: DSL for linear algebra and neural net computations on GPUs
2018-06-07
SCID: 54.1/bzthan9y
Discuss with AI
DSL Dieselгенерация кода для GPUлинейная алгебравычисления нейронных сетейполиэдральная компиляция
Figures from the paper
Abstract (AI)
Представлен компилятор предметно-ориентированного языка Diesel для базовых вычислений линейной алгебры и нейронных сетей, который принимает входные выражения в интуитивно понятной форме и генерирует высокопроизводительный код для графических процессоров. Современный подход заключается в представлении нейронной сети в виде вычислительного направленного ациклического графа (DAG), где каждой вершине графа соответствует отдельная операция, например умножение матриц, после чего отдельные операции сопоставляются с вручную оптимизированными библиотечными функциями стандартных библиотек, таких как CuBLAS и CuDNN. Хотя этот метод использует доступный оптимизированный библиотечный код для достижения высокой производительности отдельных операций, он не позволяет выполнять оптимизацию между операциями. В отличие от этого, для вычисления, состоящего из нескольких операций, Diesel генерирует набор эффективных функций устройства, оптимизируя код для вычисления в целом с использованием методов полидеральной компиляции. Кроме того, в некоторых случаях для достижения оптимальной производительности требуется специализация кода под конкретные размеры задачи. В то время как стандартные библиотеки создаются для параметрических размеров задачи, задаваемых во время выполнения, Diesel принимает размеры задачи во время компиляции и генерирует специализированный код. Экспериментальные результаты показывают, что производительность кода, сгенерированного Diesel для отдельных операций, сопоставима с производительностью тщательно оптимизированных реализаций стандартных библиотек, тогда как для составных вычислений Diesel превосходит реализации, написанные вручную.
Key Findings
1
Diesel — компилятор предметно-ориентированного языка, генерирующий GPU-код для вычислений линейной алгебры и нейронных сетей из интуитивных выражений.
2
Diesel поддерживает специализацию под размеры задач, заданные во время компиляции, генерируя код для конкретных размеров вместо использования только параметрических библиотек.
3
Для составных вычислений код Diesel превосходит реализации, написанные вручную.
4
Для отдельных операций код, сгенерированный Diesel, достигает производительности, сопоставимой с высокооптимизированными реализациями CuBLAS и CuDNN.
5
В отличие от пооперационного использования библиотек, Diesel оптимизирует составные вычисления между несколькими операциями с помощью полипэдральной компиляции.
Research Object
вычисления линейной алгебры и нейронных сетей на GPU
Research Subject
оптимизация производительности вычислений в целом посредством объединения операций и специализации кода на этапе компиляции для конкретных размеров задач
Publication Details
Publication Date
2018-06-07
Journal
Publisher
ISSN
Access Type
Author Information
Download PDF
Subscribe to digest