Специалисты Лаборатории искусственного интеллекта MIT представили язык программирования под названием Milk. По сравнению с другими языками, он должен обеспечить гораздо более рациональное управление памятью для кода, который работает с элементами данных, разбросанными по обширным срезам, пишет CIO. Его производительность, как показали испытания, в 4 раза выше, чем у существующих языков.
Как объясняют в МIT, современные процессоры оптимизированы для плотных данных: при обращении к какому-либо элементу данных чип загружает в кэш соседние, предполагая, что они тоже вскоре понадобятся. Но большие данные обычно разреженные — нередко при работе с ними требуется последовательное обращение к элементам данных, которые могут находиться довольно «далеко» друг от друга, и кэширование в таких случаях не помогает.
Современные микрочипы не оптимизированы под рассредоточенные данные. Если алгоритму нужны, скажем, всего 20 книг из двух миллионов хранящихся в базе данных, скорее всего, находящиеся рядом с нужной книгой еще 100 книг окажутся совершенно несвязанными с ней. Таким образом, придется обращаться к памяти за каждой отдельной книгой, а это крайне неэффективно и медленно, пишет MIT News.
Milk добавляет несколько команд к OpenMP — расширению С, C++ и Fortran, помогающему в написании параллельного кода.
Вместо загрузки запрашиваемых и соседних данных в кэш команды Milk заставляют процессорное ядро занести адрес данных в локально хранимый список. Когда он достигает некоторой длины, все ядра процессора объединяют такие списки, группируют адреса по принципу соседства и распределяют группы между собой для обработки.
В тестах на распространенных алгоритмах программы на Milk работали вчетверо быстрее, чем на традиционных языках, и по мнению создателей языка, это не предел.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.