Новый язык для вычислений на GPU стал доступен широкой публике, хотя в настоящее время он все еще является «качеством исследований». Будучи языком, похожим на Лисп, Харлан добивается повышения производительности вычислений за счет использования мощности графического процессора (GPU).
Вычисления на GPU разгружают элементы приложения, требующие интенсивной вычислительной мощности, на GPU, в то время как остальная часть кода продолжает работать на процессоре.
Поскольку графический процессор состоит из тысяч небольших эффективных ядер, предназначенных для параллельной работы, он идеально подходит для логики, которая может выполняться параллельно. Последовательные части кода выполняются на процессоре, в то время как параллельные части выполняются на графическом процессоре. Это означает, что все приложение работает быстрее.
Harlan-это лиспоподобный язык программирования высокого уровня на графическом процессоре, предназначенный для того, чтобы «продвинуть выразительность языков, доступных для графического процессора, дальше, чем это было сделано раньше». Эрик Холк ,создавший этот язык в рамках своего докторского исследования, объясняет, что он был разработан для параллельных вычислений данных и имеет встроенную поддержку структур данных, включая деревья и неровные массивы.
Поддержка процедур более высокого порядка планируется » очень скоро’.
Пример программы Harlan выглядит так, и если вы сталкивались с Lisp раньше, он будет выглядеть очень знакомым — если вы этого не сделали, то он будет выглядеть как множество скобок:
Harlan, который доступен на GitHub, выдвигается в качестве альтернативы существующим языкам GPU, таким как CUDA, модель программирования, изобретенная NVIDIA.
Холк говорит, что, по его мнению, преимуществом Harlan перед CUDA является система регионов Harlan, которая позволяет работать с более сложными структурами указателей в графическом процессоре. В качестве примера он говорит, что в качестве одного из тестовых случаев есть интерпретатор для лямбда-исчисления, что было бы намного сложнее сделать в прямом CUDA. Конечно, лямбда-исчисление и шепелявость не находятся на расстоянии миллиона миль друг от друга, так что вы можете ожидать, что Харлан справится лучше, чем CUDA.
Еще одним преимуществом Harlan будет поддержка процедур более высокого порядка; CUDA, будучи больше похожим на параллельный язык ассемблера, в настоящее время не поддерживает их.