Специалисты Лаборатории искусственного интеллекта МТИ представили язык программирования под названием Milk, по сравнению с другими обеспечивающий гораздо более рациональное управление памятью для кода, который работает с элементами данных, разбросанными по обширным срезам. Как объясняют в МТИ, современные процессоры оптимизированы для плотных данных: при обращении к какому-либо элементу данных чип загружает в кэш соседние, предполагая, что они тоже вскоре понадобятся. Но Большие Данные обычно разреженные — нередко при работе с ними требуется последовательное обращение к элементам данных, могущим находиться довольно «далеко» друг от друга, и кэширование в таких случаях не помогает. Milk добавляет несколько команд к OpenMP — расширению Си, C++ и Фортрана, помогающему в написании параллельного кода. Вместо загрузки запрашиваемых и соседних данных в кэш команды Milk заставляют процессорное ядро занести адрес данных в локально хранимый список. Когда он достигает некоторой длины, все ядра процессора объединяют такие списки, группируют адреса по принципу соседства и распределяют группы между собой для обработки. В тестах на распространенных алгоритмах программы на Milk работали вчетверо быстрее, чем на традиционных языках.

 

 

Купить номер с этой статьей в PDF