Abstract

The paper presents a new approach to autotuning data-parallel programs. Autotuning is a search for optimal program settings which maximize its performance. The novelty of the approach lies in the use of the model checking method to find the optimal tuning parameters by the method of counterexamples. In our work, we abstract from specific programs and specific processors by defining their representative abstract patterns. Our method of counterexamples implements the following four steps. At the first step, an execution model of an abstract program on an abstract processor is described in the language of a model checking tool. At the second step, in the language of the model checking tool, we formulate the optimality property that depends on the constructed model. At the third step, we find the optimal values of the tuning parameters by using a counterexample constructed during the verification of the optimality property. In the fourth step, we extract the information about the tuning parameters from the counter-example for the optimal parameters. We apply this approach to autotuning parallel programs written in OpenCL, a popular modern language that extends the C language for programming both standard multi-core processors (CPUs) and massively parallel graphics processing units (GPUs). As a verification tool, we use the SPIN verifier and its model representation language Promela, whose formal semantics is good for modelling the execution of parallel programs on processors with different architectures.

Highlights

  • Introduction to ModelChecking, pp. 1–13.[13] T

  • Процессор связан с CPU, откуда загружаются данные в глобальную память процессора graphics processing units (GPUs)

  • Для реализации первого шага поиска оптимальной конфигурации параметров настройки, т. е. моделирования на языке инструмента проверки моделей исполнения программы на выбранном процессоре, будем опираться на следующую общепринятую семантику исполнения программ OpenCL [18]

Read more

Summary

Абстрактный графический процессор и язык OpenCL

Язык OpenCL используется для реализации параллельных вычислений на т.н. OpenCL-устройствах, которыми могут быть как многоядерные процессоры (CPU), так и графические процессоры (GPU). В нашей работе мы рассматриваем только графические процессоры (далее – процессоры), поскольку OpenCL разрабатывался в первую очередь для таких устройств, и как правило, реализация программ OpenCL на них более эффективна. Однако наш подход достаточно общий и может быть адаптирован для CPU

Абстрактный графический процессор
Наш Abstract
Поиск оптимальных параметров программ OpenCL с помощью SPIN
Заключение
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call