Size: a a a

2019 January 21

IK

Igor Kremenchuk in pro.elixir
Alexey Golda
не все плохо ), из коробки нет там ничего. Так то и эрланг. наверное числодробилкой можно сделать если сбоку написать расширение на Си для вычислений. Так и треды в пхп
источник

AG

Alexey Golda in pro.elixir
ну это расширение, потом если начать капать в любую сторону, начинаются оговорки всякие вроде этой

The pthreads extension cannot be used in a web server environment. Threading in PHP is therefore restricted to CLI-based applications only.
источник

AG

Alexey Golda in pro.elixir
и этой
источник

AG

Alexey Golda in pro.elixir
pthreads (v3) can only be used with PHP 7.2+: This is due to ZTS mode being unsafe in 7.0 and 7.1.
источник

AB

Alex Bubnov in pro.elixir
Alexey Golda
не все плохо ), из коробки нет там ничего. Так то и эрланг. наверное числодробилкой можно сделать если сбоку написать расширение на Си для вычислений. Так и треды в пхп
завязывайте думать про NIF-ы, блин. ниф - это всегда очень плохо, запомните уже наконец
источник

AB

Alex Bubnov in pro.elixir
есть порты, которые отлично работают
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Я все ещё не понимаю как запихивание в/из нифа между вычислениями матрицы 1кк на 1кк может быть эффективным
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Ну я понимаю ещё там порт открыть и хранить стейт внутри. Или ноду эрланг сьэмулировать в сишечке
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Но риф!
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Но ниф!
источник

AB

Alex Bubnov in pro.elixir
Źmićer Rubinštejn
Я все ещё не понимаю как запихивание в/из нифа между вычислениями матрицы 1кк на 1кк может быть эффективным
ее можно аллоцировать в binary хипе и таскать как референс
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Alex Bubnov
ее можно аллоцировать в binary хипе и таскать как референс
Но хип то у каждого процесса свой же, нет разве?
источник

AB

Alex Bubnov in pro.elixir
хип бинарей общий
источник

AB

Alex Bubnov in pro.elixir
может быть, разбит по планировщикам, но это не точно
источник

AB

Alexey Bolshakov in pro.elixir
а оттудова читать впараллель можно?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Хип бинарен общий вроде как, но это как HDD общий на диск C и D в винде
источник

AB

Alex Bubnov in pro.elixir
Alexey Bolshakov
а оттудова читать впараллель можно?
Это обычная память
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Terms of type binary are accessed with the help of struct type ErlNifBinary, which contains a pointer (data) to the raw binary data and the length (size) of the data in bytes. Both data and size are read-only and are only to be written using calls to API functions. Instances of ErlNifBinary are, however, always allocated by the user (usually as local variables).

The raw data pointed to by data is only mutable after a call to enif_alloc_binary or enif_realloc_binary. All other functions that operate on a binary leave the data as read-only. A mutable binary must in the end either be freed with enif_release_binary or made read-only by transferring it to an Erlang term with enif_make_binary. However, it does not have to occur in the same NIF call. Read-only binaries do not have to be released.

enif_make_new_binary can be used as a shortcut to allocate and return a binary in the same NIF call.

Binaries are sequences of whole bytes. Bitstrings with an arbitrary bit length have no support yet.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Вот и фик пойми что это значит: Можно мутировать или нет
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Я так понял, что числодробительный ниф будет аллоцировать новый кусок хипа, копировать туды бинарь, а в конце сохранять его в биме и возвращать ссылку
источник