¿Por qué se fomenta la desvectorización en Julia?

Parece que se recomienda escribir código desvectorizado en Julia. Incluso hay unpaquete que trata de hacer eso por ti

Mi pregunta es por qué

En primer lugar, hablando desde el aspecto de la experiencia del usuario, el código vectorizado es más conciso (menos código, luego menos probabilidad de errores), más claro (por lo tanto, más fácil de depurar), una forma más natural de escribir código (al menos para alguien que viene de experiencia científica en computación, a quien Julia intenta atender). Poder escribir algo comovector'vector ovector'Matrix*vector es muy importante, porque corresponde a la representación matemática real, y así es como los chicos de informática científica piensan en ello en su cabeza (no en bucles anidados). Y odio el hecho de que esta no es la mejor manera de escribir esto, y volver a analizarlo en bucles será más rápido.

Por el momento parece que hay un conflicto entre el objetivo de escribir el código que es rápido y el código que es conciso / claro.

En segundo lugar, ¿cuál es la razón técnica para esto? Ok, entiendo que el código vectorizado crea temporarios adicionales, etc., pero funciones vectorizadas (por ejemplo,broadcast(), map(), etc.) tienen el potencial de multiprocesarlos, y creo que el beneficio de multiprocesar puede superar la sobrecarga de los temporales y otras desventajas de las funciones vectorizadas que los hacen más rápidos de lo habitual para los bucles.

¿Las implementaciones actuales de funciones vectorizadas en Julia hacen multihilo implícito bajo el capó?

Si no, ¿hay trabajo / planes para agregar concurrencia implícita a las funciones vectorizadas y hacerlas más rápidas que los bucles?

Respuestas a la pregunta(2)

Su respuesta a la pregunta