Юля (язык программирования)

редактировать

Юлия
Юлия Язык программирования Logo.svg
Парадигма Мультипарадигма : множественная диспетчеризация (первичная парадигма), процедурная, функциональная, мета, многоступенчатая
Разработано Джефф Безансон, Алан Эдельман, Стефан Карпински, Вирал Б. Шах
Разработчик Джефф Безансон, Стефан Карпински, Вирал Б. Шах и другие участники
Впервые появился 2012 ; 9 лет назад ( 2012)
Стабильный выпуск 1.6.3  Отредактируйте это в Викиданных / 23 сентября 2021 г. ; 25 дней назад ( 23 сентября 2021 г.)
Предварительный выпуск 1.7.0-rc1 / 12 сентября 2021 г. ; 36 дней назад и 1.7-rc2 и 1.6.4 в разработке и 1.8.0-DEV с ежедневными обновлениями ( 2021-09-12)
Печатная дисциплина Динамический, сильный, именительный падеж, параметрический, необязательный
Язык реализации Юлия, C, C ++, Схема, LLVM
Платформа Уровень 1: x86-64, IA-32, графические процессоры CUDA / Nvidia Уровень 2: 64-разрядная ARM, 32-разрядная версия Windows (64-разрядная версия - это уровень 1) Уровень 3: 32-разрядные ARM, PowerPC, графические процессоры AMD. Также имеет поддержку oneAPI / Intel GPU и Google TPU, имеет поддержку веб-браузера (для JavaScript и WebAssembly ) и может работать в Android. Подробнее см. «Поддерживаемые платформы».
Операционные системы Linux, macOS, Windows и FreeBSD
Лицензия MIT (основной), GPL v2 ; а Makefile вариант опускает GPL библиотеки
Расширения имени файла .jl
Веб-сайт JuliaLang.org
Под влиянием

Julia - это высокоуровневый, высокопроизводительный динамический язык программирования. Хотя это язык общего назначения и может использоваться для написания любых приложений, многие из его функций хорошо подходят для численного анализа и вычислений.

Отличительные аспекты дизайна Джулии включают систему типов с параметрическим полиморфизмом на языке динамического программирования ; с множественной отправкой в качестве основной парадигмы программирования. Юлия поддерживает одновременную, (наборный) параллельно и распределенные вычислительные (с использованием или без использования MPI или встроенный в соответствующий « OpenMP -Style» нитей), и прямое призвание в C и Fortran библиотеки без клея кода. Юлия использует точно в срок (JIT) компилятор, который упоминается как «просто- упреждающего-оф-времени » (JAOT) в обществе Джулии, Джулия компилирует весь код (по умолчанию) в машинный код перед запуском.

Julia собирает мусор, использует энергичные вычисления и включает эффективные библиотеки для вычислений с плавающей запятой, линейной алгебры, генерации случайных чисел и сопоставления регулярных выражений. Доступно множество библиотек, в том числе некоторые (например, для быстрого преобразования Фурье ), которые ранее были связаны с Julia, а теперь являются отдельными.

Некоторые инструменты разработки поддерживают кодирование в Julia, например, интегрированные среды разработки (например, Microsoft Visual Studio Code с доступными расширениями, добавляющими поддержку Julia в IDE, например, обеспечивая поддержку отладки и линтинга ); со встроенными инструментами, например профилировщиком (и поддержка графа пламени доступна для встроенного), отладчик и пакет Rebugger.jl «поддерживает отладку с повторным выполнением » и многое другое.

СОДЕРЖАНИЕ
  • 1 История
    • 1.1 Известные применения
    • 1.2 JuliaCon
    • 1.3 Сообщество Julia
    • 1.4 Спонсоры
    • 1.5 Юлия Компьютерная компания
  • 2 языковые особенности
  • 3 Взаимодействие
    • 3.1 Использование с другими языками
  • 4 Система пакетов
  • 5 Реализация
    • 5.1 Текущие и будущие платформы
  • 6 См. Также
  • 7 Примечания
  • 8 ссылки
  • 9 Дальнейшее чтение
  • 10 Внешние ссылки
История

Работа над Джулией была начата в 2009 году Джеффом Безансоном, Стефаном Карпински, Виралом Б. Шахом и Аланом Эдельманом, которые намеревались создать свободный язык, который был бы одновременно высокоуровневым и быстрым. 14 февраля 2012 года команда запустила веб-сайт с сообщением в блоге, объясняющим миссию языка. В интервью InfoWorld в апреле 2012 года Карпински сказал об имени «Джулия»: «На самом деле, для этого нет веской причины. Это просто показалось красивым именем». Безансон сказал, что выбрал это имя по рекомендации друга, а спустя годы написал:

Может быть, julia означает « необычная шепелявка Джеффа автоматизирована»?

С момента запуска в 2012 году сообщество Julia выросло, и по состоянию на 2020 год «Julia была загружена пользователями в более чем 10 000 компаний и используется в более чем 1500 университетах» с более чем 29 миллионами загрузок по состоянию на июль 2021 года, что на 87%. в год, а экосистема пакетов Julia насчитывает более 11,8 миллионов строк кода (включая документы и тесты). Научная конференция JuliaCon для пользователей и разработчиков JuliaCon проводится ежегодно с 2014 года. JuliaCon2020 приветствует более 28900 уникальных зрителей, а затем JuliaCon2021 побила все предыдущие рекорды (более 300 презентаций JuliaCon2021 доступны бесплатно на YouTube, по сравнению с 162 презентациями годом ранее)., и 43 000 уникальных зрителей во время конференции.

Версия 0.3 была выпущена в августе 2014 года, версия 0.6 - в июне 2017 года. И Julia 0.7, и версия 1.0 были выпущены 8 августа 2018 года. Работа над Julia 0.7 была «огромным делом» (например, из-за «совершенно нового оптимизатора»), и некоторые изменения были внесены в семантику, например, был упрощен итерационный интерфейс; и синтаксис немного изменился (теперь синтаксис стабилен и тот же для 1.x и 0.7).

Релиз-кандидат для Julia 1.0 (Julia 1.0.0-rc1) был выпущен 7 августа 2018 года, а финальная версия - на день позже. Julia 1.0.x - это самая старая поддерживаемая версия, имеющая долгосрочную поддержку (LTS), в противном случае на каждый момент времени поддерживается только последняя версия. Julia 1.1 была выпущена в январе 2019 года, например, с новой функцией языка «стек исключений». Выпуски исправлений ожидались примерно ежемесячно, для 1.4.x и 1.0.x и Julia с 1.0.1 до 1.0.5 следовали этому графику. Julia 1.2 была выпущена в августе 2019 года и имеет, например, некоторую встроенную поддержку веб-браузеров (для тестирования при работе в виртуальной машине JavaScript ). Julia 1.3 добавила, например, составной многопоточный параллелизм и систему двоичных артефактов для пакетов Julia.

Julia 1.4 позволила улучшить синтаксис индексирования массивов для обработки, например, массивов, начинающихся с 0, со A[begin+1]вторым элементом массива A. Модель памяти также была изменена. В второстепенном выпуске 1.4.2 исправлена, например, проблема с Zlib, удвоение скорости декомпрессии.

Julia 1.5, выпущенная в августе 2020 года, добавила поддержку отладки записи и воспроизведения для инструмента Mozilla rr. Это большой выпуск с измененным поведением в REPL (soft scope), таким же, как в Jupyter, но полностью совместимым с кодом, отличным от REPL. Большая часть API потоков была помечена как стабильная, и в этом выпуске «произвольные неизменяемые объекты - независимо от того, имеют ли они поля, которые ссылаются на изменяемые объекты или нет - теперь могут быть выделены стеком», что сокращает выделение кучи, например views, больше не выделяется. Все версии работали над производительностью, но особенно работа над Julia 1.5 нацелена на так называемую производительность «time-to-first-plot», в целом скорость самой компиляции (в отличие от производительности сгенерированного кода) и добавляет инструменты для разработчиков, чтобы улучшить загрузку пакетов. Юля 1.6 тоже еще больше улучшает такую ​​производительность.

Пакеты, которые работают в Julia 1.0.x, должны работать в 1.1.x или новее, что обеспечивается гарантией синтаксиса прямой совместимости. Заметным исключением были библиотеки интерфейса иностранного языка, такие как JavaCall.jl (для языков JVM, таких как Java или Scala ) и Rcall.jl ( язык R ) из-за некоторых изменений, связанных с потоками (в то время, когда все функции потоковой передачи в Julia были помечены как экспериментальные). Проблема была особенно сложной для Java JVM, поскольку у нее есть некоторые особые ожидания относительно того, как используется адресное пространство стека. Обходной путь JULIA_ALWAYS_COPY_STACKSбыл опубликован для Julia 1.3.0, в то время как полное исправление для Java находится на рассмотрении и не имеет установленного срока. Кроме того, в версиях JVM, начиная с Java 11, эта проблема не возникает.

Julia 1.6 была самой крупной версией со времен 1.0, быстрее во многих отношениях, например, ввела параллельную предварительную компиляцию и более быструю загрузку пакетов, в некоторых случаях «50-кратное ускорение загрузки больших деревьев двоичных артефактов», и, вероятно, станет следующей длинной версией. Срочная поддержка (LTS) релиз Юлии. Веха для 2.0 в настоящее время не имеет установленного срока.

Julia 1.6.3 была выпущена 23 сентября 2021 года (и 1.6 станет следующим выпуском LTS), а Julia 1.7 и 1.8 - следующие вехи, при этом 1.7 перенесены на 1 июня 2021 года (то есть с тех пор 1.7 находится в замороженном состоянии ) и как версии 1.7. Разработка Julia вернулась к временным релизам.

Известные применения

Джулия привлекла некоторых известных пользователей, от инвестиционного менеджера BlackRock, который использует его для анализа временных рядов, до британской страховой компании Aviva, которая использует его для расчета рисков. В 2015 году Федеральный резервный банк Нью-Йорка использовал Джулию для построения моделей экономики Соединенных Штатов, отметив, что язык сделал оценку модели «примерно в 10 раз быстрее», чем его предыдущая реализация MATLAB. Соучредители Джулии основали компанию Julia Computing в 2015 году, чтобы предоставлять клиентам платную поддержку, обучение и консультационные услуги, хотя Джулия по-прежнему может пользоваться ею бесплатно. На конференции JuliaCon 2017 года Джеффри Регье, Кено Фишер и другие заявили, что проект Celeste использовал Джулию для достижения «пиковой производительности 1,54  петафлопс с использованием 1,3 миллиона потоков» на узлах 9300 Knights Landing ( KNL) суперкомпьютера Cori II (Cray XC40). (тогда 6-й по скорости компьютер в мире). Таким образом, Джулия присоединяется к C, C ++ и Fortran как к языкам высокого уровня, на которых выполняются вычисления в петафлопсах.

Трое из соавторов Джулии являются лауреатами Премии Джеймса Х. Уилкинсона в области программного обеспечения для числовых вычислений 2019 года (присуждаемой каждые четыре года) за создание Джулии - инновационной среды для создания высокопроизводительных инструментов, позволяющих проводить анализ и решение задач вычислительной науки ". Кроме того, Алан Эдельман, профессор прикладной математики в Массачусетском технологическом институте, был выбран для получения награды Сидни Фернбаха компьютерного общества IEEE 2019 года «за выдающиеся достижения в высокопроизводительных вычислениях, линейной алгебре и вычислительной науке, а также за вклад в язык программирования Julia. "

В 2019 году Julia Computing объявила о «доступности языка программирования Julia в качестве предварительно упакованного контейнера в реестре контейнеров NVIDIA GPU Cloud (NGC)», а в сообщении в блоге на сайте Nvidia говорится: «Простое развертывание Julia на x86 и Arm [.. ] Джулия предлагает пакет для комплексной экосистемы высокопроизводительных вычислений, охватывающей машинное обучение, науку о данных, различные научные области и визуализацию ".

Кроме того, "Джулия была выбрана Альянсом по моделированию климата в качестве единственного языка реализации для их глобальной климатической модели следующего поколения. Этот многомиллионный проект направлен на создание климатической модели земного масштаба, дающей представление о последствиях и проблемах изменения климата". "

Julia используется НАСА, например, для моделирования динамики разделения космических аппаратов (в 15 000 раз быстрее, чем раньше с Simulink / MATLAB) и бразильским INPE для планирования космических миссий и моделирования спутников. Еще одна попытка - это работа над встроенным проектом по управлению спутником в космосе с помощью Джулии для управления ориентацией.

JuliaCon

С 2014 года сообщество Julia проводит ежегодную конференцию Julia, ориентированную на разработчиков и пользователей. Первая конференция JuliaCon прошла в Чикаго и положила начало ежегодному проведению конференции. С 2014 года конференция проходит в нескольких местах, включая Массачусетский технологический институт и Мэрилендский университет в Балтиморе. Аудитория мероприятия выросла с нескольких десятков человек до более 28900 уникальных посетителей во время JuliaCon 2020, который проходил виртуально. JuliaCon 2021 будет проходить практически с 28 по 30 июля 2021 года с основными выступлениями Яна Витека, Сяойе Шерри Ли и Сумита Чинтала.

Сообщество Юлии

Сообщество Julia присутствует на нескольких платформах: Twitter, LinkedIn, Facebook, Slack, Zulip, Discord, Discourse, Stack Overflow, YouTube и других. С мая 2017 года в Julia Language работает менеджер сообщества; первый Алекс Арсланд, проработавший до конца 2019 года, а в настоящее время - Логан Килпатрик.

Спонсоры

В 2014 году язык Julia стал проектом, финансируемым NumFOCUS Fisccally, с целью обеспечить долгосрочную устойчивость проекта. Доктор Джереми Кепнер из лаборатории Линкольна Массачусетского технологического института был спонсором-основателем проекта Джулия в его первые дни. Кроме того, средство от Гордона и Бетти Мура Фонда, в Слоуне Alfred, Intel и агентств, такие как NSF, DARPA, NIH, НАСА и FAA было необходимо для развития Юли. Mozilla, производитель веб-браузера Firefox, с грантами на исследования за первое полугодие 2019 года спонсировала «члена официальной команды Джулии» для проекта «Привлечение Джулии к браузеру», то есть для Firefox и других веб-браузеров. Язык Julia также поддерживается отдельными спонсорами на GitHub.

Юлия Компьютерная компания

Julia Computing, Inc. была основана в 2015 году Виралом Б. Шахом, Дипаком Винчи, Аланом Эдельманом, Джеффом Безансоном, Стефаном Карпински и Кено Фишером.

В июне 2017 года Julia Computing привлекла 4,6  млн долларов США в виде начального финансирования от General Catalyst и Founder Collective, в том же месяце Фонд Альфреда П. Слоана «выделил 910 000 долларов США на поддержку разработки Джулии с открытым исходным кодом, включая 160 000 долларов США на продвижение разнообразия в Джулии». community », а в декабре 2019 года компания получила  от правительства США финансирование в размере 1,1 миллиона долларов на« разработку инструмента машинного обучения нейронных компонентов для снижения общего энергопотребления систем отопления, вентиляции и кондиционирования воздуха (HVAC) в зданиях ». В июле 2021 года Julia Computing объявила, что они привлекли серию A стоимостью 24 миллиона долларов во главе с Dorilton Ventures, которая также владеет командой Формулы 1 Williams Racing, которая сотрудничает с Julia Computing. Коммерческий директор Уильямса сказал: «Инвестиции в компании, создающие лучшие в своем классе облачные технологии, являются стратегическим направлением для Dorilton, и универсальная платформа Джулии с революционными возможностями в области моделирования и моделирования имеет огромное значение для нашего бизнеса. Мы с нетерпением ждем внедрения Джулии. Вычислительная техника в самом технологически продвинутом виде спорта ».

Особенности языка

Julia - это язык программирования общего назначения, изначально разработанный для числовых / технических вычислений. Он также полезен для низкоуровневого системного программирования в качестве языка спецификации и для веб-программирования как на стороне сервера, так и на стороне клиента.

Согласно официальному сайту, основными особенностями языка являются:

  • Множественная отправка : предоставление возможности определять поведение функции для многих комбинаций типов аргументов
  • Система динамических типов : типы для документации, оптимизации и отправки
  • Производительность приближается к статически типизированным языкам, таким как C
  • Встроенный менеджер пакетов
  • Lisp- подобные макросы и другие средства метапрограммирования
  • Вызов функций C напрямую: без оболочек или специальных API
  • Возможность взаимодействия с другими языками, например Python с PyCall, R с RCall и Java / Scala с JavaCall
  • Мощные возможности, подобные оболочке, для управления другими процессами
  • Разработан для параллельных и распределенных вычислений
  • Сопрограммы : легкая зеленая резьба
  • Типы, определяемые пользователем, такие же быстрые и компактные, как и встроенные
  • Автоматическая генерация эффективного специализированного кода для разных типов аргументов
  • Элегантные и расширяемые преобразования и рекламные акции для числовых и других типов
  • Эффективная поддержка Unicode, включая, помимо прочего, UTF-8

Множественная диспетчеризация (также называемые мультиметоды в Лиспе) является обобщением из одной рассылки  - полиморфный механизм используется совместно объектно-ориентированное программирование (ООП) языков - который использует наследование. В Julia все конкретные типы являются подтипами абстрактных типов, прямо или косвенно подтипами Anyтипа, который является вершиной иерархии типов. Конкретные типы не могут быть разделены на подтипы, как в других языках; Вместо этого используется композиция (см. также наследование и выделение подтипов ).

По умолчанию среда выполнения Julia должна быть предварительно установлена ​​при запуске исходного кода, предоставленного пользователем. Кроме того, с помощью PackageCompiler.jl можно создать автономный исполняемый файл, которому не нужен исходный код Julia.

Синтаксические макросы Джулии (используемые для метапрограммирования ), такие как макросы Lisp, более мощные, чем макросы подстановки текста, используемые в препроцессоре некоторых других языков, таких как C, потому что они работают на уровне абстрактных синтаксических деревьев (AST). Макросистема Джулии гигиенична, но также поддерживает преднамеренный захват при желании (например, для анафорических макросов ) с использованием escконструкции.

Джулия черпает вдохновение в различных диалектах Лиспа, включая Scheme и Common Lisp, и имеет много общих черт с Dylan, также ориентированным на множественную диспетчеризацию динамическим языком (который имеет инфиксный синтаксис свободной формы, подобный ALGOL, а не Lisp- как префиксный синтаксис, в то время как в Julia «все» является выражением ), и с Fortress, другим языком числового программирования (который имеет множественную диспетчеризацию и сложную систему параметрических типов). Хотя объектная система Common Lisp (CLOS) добавляет в Common Lisp множественную отправку, не все функции являются универсальными.

В Julia, Dylan и Fortress по умолчанию используется расширяемость, а все встроенные функции системы являются универсальными и расширяемыми. В Дилане множественная диспетчеризация так же фундаментальна, как и в Джулии: все определяемые пользователем функции и даже базовые встроенные операции, такие +как общие. Однако система типов Дилана не полностью поддерживает параметрические типы, которые более типичны для родословной языков ML. По умолчанию CLOS не позволяет отправлять параметрические типы Common Lisp; такая расширенная семантика диспетчеризации может быть добавлена ​​только как расширение через протокол метаобъектов CLOS. За счет конвергентной конструкции Fortress также поддерживает множественную диспетчеризацию параметрических типов; Однако, в отличие от Джулии, Fortress имеет статическую, а не динамическую типизацию, с отдельными этапами компиляции и выполнения. Возможности языка сведены в следующую таблицу:

Язык Система типов Общие функции Параметрические типы
Юлия Динамический Дефолт да
Common Lisp Динамический Выбрать в Да (но без отправки)
Дилан Динамический Дефолт Частично (без отправки)
Крепость Статический Дефолт да

Пример расширяемости Julia, пакет Unitful.jl добавляет в язык поддержку единиц измерения.

Взаимодействие

Официальный дистрибутив Julia включает интерактивный цикл чтения-оценки-печати (REPL) из командной строки с возможностью поиска, завершением табуляции, а также специальной справкой и режимами оболочки, которые можно использовать для быстрого экспериментирования и тестирования кода. Следующий фрагмент представляет собой примерный пример сеанса, в котором строки автоматически объединяются функцией println:

juliagt; p(x) = 2x^2 + 1; f(x, y) = 1 + 2p(x)y juliagt; println("Hello world!", " I'm on cloud ", f(0, 4), " as Julia supports recognizable syntax!") Hello world! I'm on cloud 9 as Julia supports recognizable syntax!

REPL предоставляет пользователю доступ к системной оболочке и в режим помощи, нажимая ;или ?после приглашения (перед каждой командой), соответственно. Он также хранит историю команд, в том числе между сеансами. Код, который можно протестировать в интерактивном разделе Julia или сохранить в файл с .jlрасширением и запустить из командной строки, набрав:

 $ julia lt;filenamegt;

Julia поддерживается Jupyter, интерактивной онлайн-средой «записных книжек», и Pluto.jl, « реактивной записной книжкой» (где записные книжки сохраняются как чистые файлы Julia), возможной заменой первого типа.

Используйте с другими языками

На практике Julia совместима со многими языками (например, с большинством из 10–20 наиболее популярных языков). ccallКлючевое слово Джулии используется для индивидуального вызова функций общей библиотеки C-exported или Fortran, а также пакетов, позволяющих вызывать другие языки, например Python, R, MATLAB, Java или Scala. И пакеты для других языков, например, Python (или R или Ruby), т.е. pyjulia, чтобы позвонить в Джулию.

Julia поддерживает последнюю версию Unicode 13.0 с UTF-8, используемым для строк (по умолчанию) и для исходного кода Julia (разрешает только допустимый UTF-8 в последней версии), что означает также возможность использования в качестве опции общих математических символов для многих операторов., например ∈ для inоператора.

У Джулии есть пакеты, поддерживающие языки разметки, такие как HTML (а также HTTP ), XML, JSON и BSON, а также для баз данных и использования в Интернете в целом.

Система пакетов

У Джулии есть встроенный менеджер пакетов и система реестра по умолчанию. Пакеты чаще всего распространяются в виде исходного кода, размещенного на GitHub, хотя также могут использоваться альтернативы. Пакеты также могут быть установлены как двоичные файлы с использованием артефактов. Диспетчер пакетов Джулии используется для запроса и компиляции пакетов, а также для управления средами. Поддерживаются объединенные реестры пакетов, что позволяет добавлять локально реестры, отличные от официальных.

Реализация

Ядро Джулии реализовано на языках Julia и C вместе с C ++ для зависимости LLVM. Синтаксический анализ и понижение кода реализованы в FemtoLisp, диалекте схемы. Проект инфраструктуры компилятора LLVM используется в качестве серверной части для генерации 64-битного или 32-битного оптимизированного машинного кода в зависимости от платформы, на которой работает Джулия. За некоторыми исключениями (например, PCRE ) стандартная библиотека реализована в Julia. Наиболее примечательным аспектом реализации Джулии является ее скорость, которая часто в два раза по сравнению с полностью оптимизированным кодом C (и, следовательно, часто на порядок быстрее, чем Python или R ). Разработка Julia началась в 2009 году, а версия с открытым исходным кодом была опубликована в феврале 2012 года.

Текущие и будущие платформы

В то время как у Джулии есть поддержка macOS уровня 1, то есть для компьютеров Mac на базе Intel, совершенно новые Mac на базе Apple M1 имеют только экспериментальную поддержку с полной поддержкой, но еще не являются поддерживаемой платформой уровня 1 (как и Windows на ARM ). Однако утверждается, что Джулия работает нормально на компьютерах Mac M1 (с пониженной производительностью) благодаря (автоматическому) использованию Rosetta 2 (которая должна имитировать Джулию). Работа над встроенной полноскоростной поддержкой M1 (т.е. без эмуляции) в основном завершена, и многие программы могут работать, если используется такая сборка Julia, поскольку все тесты Julia, кроме одного, проходят успешно (кроме «Слишком много открытых файлов»).

Поскольку Джулия использует JIT, Джулия генерирует собственный машинный код непосредственно перед первым запуском функции (то есть это другой подход, чем компиляция в байт-код, который вы распространяете по умолчанию для запуска на виртуальной машине (ВМ), например, в случае Java / JVM ; затем переводится из байт-кода во время работы, как это делал Dalvik в более старых версиях Android).

У Джулии четыре уровня поддержки. Поддерживаются все процессоры IA-32, полностью реализующие субархитектуру i686, и поддерживаются 64-разрядные процессоры x86-64 (также известные как amd64 ), т.е. все менее чем десятилетней давности. Процессоры ARMv8 ( AArch64 ) поддерживаются на втором уровне, а ARMv7 и ARMv6 (AArch32) поддерживаются с некоторыми оговорками (нижний уровень) для Julia 1.0.x, а также имеют официальные исполняемые файлы для более поздних версий, тогда как поддержка 32-разрядных ARM была позже понижена. до уровня 3 (однако для Julia 1.5.1 доступны неофициальные двоичные файлы). CUDA (то есть графические процессоры Nvidia; реализация PTX ) имеет поддержку уровня 1 с помощью внешнего пакета. Также существуют дополнительные пакеты, поддерживающие другие ускорители, такие как TPU от Google и некоторые (интегрированные) графические процессоры Intel через oneAPI.jl, а графические процессоры AMD поддерживают, например, OpenCL ; и экспериментальная поддержка стека AMD ROCm. На странице загрузок Джулии представлены исполняемые файлы (и исходный код) для всех официально поддерживаемых платформ.

На некоторых платформах, возможно, потребуется скомпилировать Julia из исходного кода (например, оригинального Raspberry Pi ) с определенными параметрами сборки, что уже сделано и доступны неофициальные предварительно созданные двоичные файлы (и инструкции по сборке). Julia была построена на нескольких платформах ARM. PowerPC (64-разрядная версия) имеет поддержку уровня 3, что означает, что она «может быть построена, а может и не быть». Julia теперь поддерживается в Raspbian, тогда как поддержка лучше для более новых Pis, например, с ARMv7 или новее; Поддержка Джулии осуществляется Фондом Raspberry Pi.

Также имеется поддержка веб-браузеров / JavaScript через JSExpr.jl; а альтернативный язык веб-браузеров, WebAssembly, имеет минимальную поддержку нескольких будущих внешних проектов Julia. Юля умеет компилировать в ARM; таким образом, теоретически приложения для Android можно создавать с помощью NDK, но на данный момент Джулия работает под Android только косвенно, то есть с помощью chroot Ubuntu на Android.

Смотрите также
Примечания
использованная литература
дальнейшее чтение
внешние ссылки
Последняя правка сделана 2023-04-21 10:03:33
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте