Pull to refresh

Comments 14

Для прода желателен LTS-релиз, в случае Джулии это 1.0, который вышел в августе 2018, c тех пор было много изменений, в 2020 логичнее подождать следующего LTS.
Решил я тут потыкать в Julia на предмет МКЭ. Есть пакет JuliaFEM, который должен мне помочь. Я установил последнюю Юлю (1.5.1), добавил этот пакет, написал using JuliaFEM и получил вот это:
ERROR
ERROR: LoadError: LoadError: Evaluation into the closed module `Calculus` breaks incremental compilation because the side effects will not be permanent. This is likely due to some other module mutating `Calculus` with `eval` during precompilation - don't do this.
Stacktrace:
[1] eval at .\boot.jl:331 [inlined]
[2] simplify(::Expr) at D:\OPData\Julia\packages\Calculus\mbqhh\src\symbolic.jl:96
[3] calculate_interpolation_polynomials(::Expr, ::Array{Float64,2}) at D:\OPData\Julia\packages\FEMBasis\hrK6J\src\create_basis.jl:25
[4] create_basis(::Symbol, ::String, ::Tuple{Tuple{Float64},Tuple{Float64}}, ::Expr) at D:\OPData\Julia\packages\FEMBasis\hrK6J\src\create_basis.jl:48
[5] top-level scope at D:\OPData\Julia\packages\FEMBasis\hrK6J\src\lagrange_segments.jl:4
[6] include(::Function, ::Module, ::String) at .\Base.jl:380
[7] include at .\Base.jl:368 [inlined]
[8] include(::String) at D:\OPData\Julia\packages\FEMBasis\hrK6J\src\FEMBasis.jl:4
[9] top-level scope at D:\OPData\Julia\packages\FEMBasis\hrK6J\src\FEMBasis.jl:16
[10] include(::Function, ::Module, ::String) at .\Base.jl:380
[11] include(::Module, ::String) at .\Base.jl:368
[12] top-level scope at none:2
[13] eval at .\boot.jl:331 [inlined]
[14] eval(::Expr) at .\client.jl:467
[15] top-level scope at .\none:3
in expression starting at D:\OPData\Julia\packages\FEMBasis\hrK6J\src\lagrange_segments.jl:4
in expression starting at D:\OPData\Julia\packages\FEMBasis\hrK6J\src\FEMBasis.jl:16
ERROR: LoadError: Failed to precompile FEMBasis [353fb843-c566-51e6-ba49-78b3e3d5ebb5] to D:\OPData\Julia\compiled\v1.5\FEMBasis\x3cNT_zqV69.ji.
Stacktrace:
[1] error(::String) at .\error.jl:33
[2] compilecache(::Base.PkgId, ::String) at .\loading.jl:1305
[3] _require(::Base.PkgId) at .\loading.jl:1030
[4] require(::Base.PkgId) at .\loading.jl:928
[5] require(::Module, ::Symbol) at .\loading.jl:923
[6] include(::Function, ::Module, ::String) at .\Base.jl:380
[7] include(::Module, ::String) at .\Base.jl:368
[8] top-level scope at none:2
[9] eval at .\boot.jl:331 [inlined]
[10] eval(::Expr) at .\client.jl:467
[11] top-level scope at .\none:3
in expression starting at D:\OPData\Julia\packages\FEMBase\qGDOl\src\FEMBase.jl:19
ERROR: LoadError: Failed to precompile FEMBase [fbcbbc08-f1bf-5204-9233-b69f5d396135] to D:\OPData\Julia\compiled\v1.5\FEMBase\6HUoq_zqV69.ji.
Stacktrace:
[1] error(::String) at .\error.jl:33
[2] compilecache(::Base.PkgId, ::String) at .\loading.jl:1305
[3] _require(::Base.PkgId) at .\loading.jl:1030
[4] require(::Base.PkgId) at .\loading.jl:928
[5] require(::Module, ::Symbol) at .\loading.jl:923
[6] include(::Function, ::Module, ::String) at .\Base.jl:380
[7] include(::Module, ::String) at .\Base.jl:368
[8] top-level scope at none:2
[9] eval at .\boot.jl:331 [inlined]
[10] eval(::Expr) at .\client.jl:467
[11] top-level scope at .\none:3
in expression starting at D:\OPData\Julia\packages\JuliaFEM\DbhTT\src\JuliaFEM.jl:111
ERROR: Failed to precompile JuliaFEM [f80590ac-b429-510a-8a99-e7c46989f22d] to D:\OPData\Julia\compiled\v1.5\JuliaFEM\JKouA_zqV69.ji.
Stacktrace:
[1] error(::String) at .\error.jl:33
[2] compilecache(::Base.PkgId, ::String) at .\loading.jl:1305
[3] _require(::Base.PkgId) at .\loading.jl:1030
[4] require(::Base.PkgId) at .\loading.jl:928
[5] require(::Module, ::Symbol) at .\loading.jl:923

Но у пакета же есть репозиторий на гитхабе, сейчас я напишу issue разработчикам. Но issue там уже был, от 7 марта (а ещё несколько более поздних), и среди комментариев предлагалось даунгрейдить Юлю.
Но есть ещё пакет JuSFEM! Правда, он не ставится способом, указанным в репозитории, документации и примеров к нему нет, а тесты выглядят вот так:
Тест, который проходит всегда
using JuSFEM
using Test

@testset "JuSFEM.jl" begin
    # Write your own tests here.
end

И ещё есть пакет JuAFEM, который просто не собирается.
В общем, если сам язык и довели до более-менее приличного состояния, то с экосистемой ещё всё печально.
Спасибо, этот пакет я как-то пропустил. Вроде как с первого взгляда он с конечными элементами нормально работает, буду на него смотреть, как в очередной раз фортран задолбает.
Кстати, я недавно глянул на современный фортран. Я то думал, что это какой-то древний артефакт. Но оказалось это современный, активно развивающийся, предельно ясный язык, быстрый и параллельный.

Я вот подумываю, когда тормоза Питона меня окончательно достанут, писать модули на фортране.
Те, кто работает плотно с Julia, подскажите, ее уже можно использовать в небольших standalone скриптах?

Я год назад пробовал написать небольшой standalone скрипт, который запускается по таймеру, собирает из API json'ы, делает расчет, пишет в файл и завершает работу.

К моему удивлению этот скрипт работал каждый раз секунд около 20, тогда как «медленный» python работал какие-то миллисекунды. Я написал в форумы, мне посоветовали запускать мой код из REPL, который все время висит в памяти. Я тогда немного удивился и забил на julia.

Подскажите, сейчас это починили?

Тут как раз выше было про скриптинг. Если же хочется делать исполняемые файлы для пуска без интерпретатора, то вот материал — собственно, эта плюшка по мне самая ожидаемая. Больше всего печалит, что по-большей части все держится на энтузиастах одиночках, которые тоже вполне могут забить или схалтурить (как в случае с проблемой из первого комментария — то ли ждать, пока калькулус починят свой пакет, то ли когда juliaFEM обзаведется своим солвером). Все силы бросаются на датасаянсы, а нормальный пакет с вейвлетами никак не выпустят, приходится самому делать

Огромное спасибо, погляжу! Я уже давно пытаюсь свалить с Питона куда-нибудь. Я научился писать быстрые программы на Python, с использованием cython, numpy, numba, jax, с-модули, etc… Но, честно говоря, хочется уже не зоопарка, а единой кодовой базы.

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

Еще немного смущает порой агрессивный маркетинг и смущает попытка ранней коммерциализации Julia, т.е. Julia Computing предлагает Enterprise вариант для тех, кому нужна хорошая поддержка. Я бы наоборот, больший упор делал на честную работу с community. С горя я уже к фортрану начал присматриваться.

Очень надеюсь, что Julia постепенно наберет базу пользователей, развитое коммьюнити и стабилизирует все пакеты. Идея языка и сам подход мне очень нравятся!

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

Фортран просто великолепен, если начинать писать на нём сейчас (стандарт 2008 года и более поздние). Отличная производительность, ясный с первого взгляда код, параллельность трёх видов из коробки и много других плюшек. Я, например, не встречал ни одного другого языка, на котором можно было бы указать компилятору на максимальное, минимальное и среднее число итераций в цикле.
Но вот если по наследству досталась программа, написанная в 80-х годах, то хоть вешайся.
NIM и Swift посмотрите ещё…
UFO just landed and posted this here

Поправил — ошибка перевода Command-line completion (also tab completion)

Есть в стадии разработки библиотека juliacaller для интеграции с Java. Разрабатывается автором зрелой библиотеки rcaller, которая активно используется (и дорабатывалась мной лично)
Sign up to leave a comment.

Articles