Ответ 1
Несколько предостережений: 1. Я говорю по опыту с версией 0.4.6 (и ранее), еще не сыграл с 0.5 (но, как я надеюсь, мой ответ ниже демонстрирует, я не думаю, что это имеет важное значение в отношении ответа, который я даю). 2. Это не полный ответ.
Тем не менее, по моему опыту, накладные расходы для нескольких процессов сами по себе очень малы при условии, что вы не имеете дело с проблемами перемещения данных. Другими словами, по моему опыту, в любое время, когда вы когда-либо находились в ситуации желая чего-то быстрее, чем один процесс на вашем процессоре может справиться, вы уже прошли мимо точки, где parallelism будет полезен. Например, в сумме примеров случайных чисел, которые вы дали, я обнаружил, что только после тестирования точка безубыточности находилась где-то около 10000 случайных чисел. Явным победителем стал все, что еще и parallelism. Генерация 10000 случайных чисел тривиальна для современных компьютеров, занимает небольшую долю секунды и значительно ниже порога, где я начинаю разочаровываться в медленности моих сценариев и хочу, чтобы parallelism ускорял их.
Таким образом, я, по крайней мере, придерживаюсь мнения, что, хотя, вероятно, есть еще более замечательные вещи, которые разработчики Джулии могли бы сделать, чтобы сократить накладные расходы еще больше, на данный момент все, что имеет отношение к Джулии, не собирается быть настолько большим из вашего ограничивающего фактора, по крайней мере, с точки зрения вычислительных аспектов parallelism. Я думаю, что есть еще улучшения в плане повышения как легкости, так и эффективности параллельного движения данных (мне нравится пакет, который вы начали на этой теме, как хороший шаг. Мы с вами, вероятно, согласятся там еще многое еще предстоит сделать). Но большими ограничивающими факторами будут:
- Сколько данных необходимо перемещать между процессами?
- Сколько вы читаете/записываете в свою память, что вам нужно делать во время ваших вычислений? (например, флопы на чтение/запись)
Аспект 1. может временами опираться на использование parallelism. Аспект 2. скорее всего означает, что вы не получите от этого столько преимуществ. И, по крайней мере, поскольку я интерпретирую "накладные расходы", ни один из них действительно не попадает прямо в это конкретное соображение. И, оба эти, я считаю, будут гораздо сильнее определяться вашим системным оборудованием, чем Julia.