Тензорный подход сделает программы одновременно быстрыми и очень точными, уверяют разработчики.
Сотрудники Массачусетского технологического института в США (MIT) и Калифорнийского университета разрабатывают новый язык программирования для высокопроизводительных компьютеров. Об этом пишет издание ScienceTechDaily.
Высокопроизводительные вычисления необходимы для задач, решение которых требует быстрой обработки огромных массивов данных, например, обучение нейронных сетей. Многие программисты считают, что при повышении скорости неизбежно пострадает точность результатов и наоборот, однако одна группа американских инженеров доказывает, что можно одновременно обеспечить и то, и другое.
Они написали так называемый "тензорный" язык программирования (A Tensor Language или сокращенно ATL), который должен ускорить вычисления, сохранив высокую надежность. Аспирантка Аманда Лю из MIT объяснила, что язык ориентирован на создание либо одного числа, либо тензора, которые являются обобщениями векторов и матриц. Если векторы — это одномерные объекты, а матрицы — двумерные массивы чисел, то тензоры — это многомерные массивы, например, они могут принимать форму 3x3x3.
Весь смысл компьютерной программы заключается в том, чтобы произвести конкретное вычисление, однако способов ее написания или реализации кода может быть множество — и некоторые значительно быстрее других. Главное преимущество ATL заключается в возможности модифицировать или переписывать программы в оптимальную форму для ускорения работы. К примеру, тензорный язык помогает преобразовать двухэтапный процесс в одноэтапный. Часто программисты начинают работу с программы, которую легче всего написать, но это может быть не самый быстрый способ решения задач из-за дальнейших корректировок.
Ученые рассказали, что в основе ATL лежит существующий язык программирования Coq со встроенным помощником, способны проверять эффективность алгоритма строгим математическим методам. Еще одной полезной особенностью этого языка является тот факт, что программы, написанные на нем, всегда завершаются и не могут застрять в бесконечном цикле, как это бывает с Java.
"Программа, которая никогда не завершается, была бы для нас бесполезна, но завершение — это то, что мы гарантированно получаем, используя Coq", — объяснила Аманда Лю.
Команда отметила, что ATL пока является лишь прототипом, хотя и очень перспективным. В будущем разработчики планируют улучшить масштабируемость языка, чтобы использовать его для написания или адаптации более сложных существующих программ. В прошлом оптимизация таких алгоритмов в большинстве случаев выполнялась вручную, что приводило к большому количеству ошибок, однако ATL способен упростить и автоматизировать процесс.
Ранее ученые придумали новый язык программирования Twist для квантовых компьютеров. По словам разработчиков, он позволит писать безопасные программы, предотвращая ненужные запутанности между кубитами.