Size: a a a

Язык программирования Julia / Julia programming language

2019 November 17

AN

Alexey Neznanov in Язык программирования Julia / Julia programming language
Пример 3. Начало обсуждения для Жулии - https://stackoverflow.com/questions/54874366/julia-parallelism-for-reading-a-large-file
источник

AN

Alexey Neznanov in Язык программирования Julia / Julia programming language
Маленькое обобщение инструментов: https://quinnj.home.blog/2019/07/21/a-tour-of-the-data-ecosystem-in-julia/
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Alexey Neznanov
В действительности всё не так, как на самом деле...
Всё зависит от близости к железу, понимания термина "параллельно" и возможностей стека по преодолению "прозрачности" ввода/вывода.
В действительности, проблемы две. Чтение и обработка. Я пробежался по статьям. И ничего противоречащего тому, что я написал ранее, не вижу.
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Собственно чтение файла сейчас рекомендуют заменить функцией mmap. Ок. Надо разбираться с внутренней реализацией и смотреть, что загружается ли файл в оперативку весь или ОС обеспечивает прозрачную трансляцию адреса в загруженный фрагмент.  Но что будет с управлением потребления оперативки?….

Нынешняя реализация жулийной функции:
https://github.com/JuliaLang/julia/blob/b0427fc1b44adf8069e23e5bbaba194148eda4e5/stdlib/Mmap/src/Mmap.jl#L207

В конечном счёте выливается в http://man7.org/linux/man-pages/man2/mmap.2.html

Однако природа устройств ввода-вывода - последовательная. И да, будем иметь в виду, что есть DMA, контроллер диска может напрямую писать в память и пр. Но не выше скорости диска. И с учётом ограничения размера оперативки.
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Часть вторая - параллельная обработка загруженных в оперативку фрагментов данных. С вопросами, а на сколько их вообще можно параллелить, если ли зависимость от порядка поступления и пр. Второй этап, просто интуитивно понятно, что если заниматься строковым разбором csv без сохранения порядка, формируя задачи, например, по 1000 строк на каждый процессор, то это будет быстрее, чем последовательно перебирать все строки на одном процессоре. Но не факт, что перебирать последовательно на одном будет медленнее, чем запускать в параллельную обработку каждую прочитанную строку файла.

И именно во второй части есть резерв к ускорению.
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Статья полезная. Заодно ответ на вопрос, как читать разные форматы
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
источник
2019 November 18

VG

Viktor G. in Язык программирования Julia / Julia programming language
Roman Samarev
Если в команде хоть кто-то с опытом на Julia есть (от кодирования до доведения до размещения на сервере), то обучить остальных не сложно. Если никого, то, как и везде… Пока опыт не наработаете, будет долго, больно и не всегда дёшево…
Кто занимался обучением коллег работе на Julia - есть какие-то мысли по тому, как делать это безболезненнее? (с матлаба/с++)
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Я думаю, что начать надо с понимания проектирования. То есть пакеты, модули, зависимости. Далее разбираться с отладкой с помощью модульных тестов. А уже потом, заниматься логикой программ.
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Синтаксис то не сложен, но без понимания проектирования пакетов и модулей ничего серьезного не напишут.
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
с пакетами примерно понятно, в частности, когда пакет = модуль, а вот зачем разные модули плодить внутри одного пакета?
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Вот это, как раз, надо понять 😊
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Внутри - это иерархия пространств видимости
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
Видел, как кто-то пытался ими классы очерчивать
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Иначе можно получить очень много функций в плоском виде
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
ну, к этому мы привыкли, матлаб-стайл)
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Есть еще тонкость - гранулярность модулей при отладке. Поскольку пошаговый отладчик медленный, то надо писать тесты так, что перезапуск был быстрым. Revise не всегда спасает
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
И для этого, тоже, неплохо бы иметь модули внутри
источник

TL

Timur Leonidovich in Язык программирования Julia / Julia programming language
а кто нибудь бенчмаркал, или видел какие нить бенчмарки по обучению простых сеточек на Julia с распространнеными фреймворками?
источник

GI

Gleb Ivashkevich in Язык программирования Julia / Julia programming language
Roman Samarev
Я думаю, что начать надо с понимания проектирования. То есть пакеты, модули, зависимости. Далее разбираться с отладкой с помощью модульных тестов. А уже потом, заниматься логикой программ.
а есть, кстати, какие-то материалы на эту тему? я пока в голове правильный способ структурирования так и не могу сложить
источник