Por que a desvectorização em Julia é incentivada?

Parece que escrever código desvectorizado é incentivado em Julia. Existe até umpacote que tenta fazer isso por você.

Minha pergunta é por que?

Em primeiro lugar, falando do aspecto da experiência do usuário, o código vetorizado é mais conciso (menos código e menos probabilidade de erros), mais claro (portanto, mais fácil de depurar) e a maneira mais natural de escrever código (pelo menos para quem vem de experiência em computação científica, a quem Julia tenta atender). Ser capaz de escrever algo comovector'vector ouvector'Matrix*vector é muito importante, porque corresponde à representação matemática real, e é assim que os caras da computação científica pensam nisso na cabeça (não em loops aninhados). E odeio o fato de que essa não é a melhor maneira de escrever isso, e corrigi-la em loops será mais rápida.

No momento, parece que há um conflito entre o objetivo de escrever o código que é rápido e o código que é conciso / claro.

Em segundo lugar, qual é a razão técnica para isso? Ok, entendo que o código vetorizado cria temporários extras etc., mas funções vetorizadas (por exemplo,broadcast(), map(), etc.) têm o potencial de multithreading-los, e acho que os benefícios do multithreading podem superar a sobrecarga de temporários e outras desvantagens das funções vetorizadas, tornando-os mais rápidos do que o normal para loops.

As implementações atuais de funções vetorizadas em Julia fazem multithreading implícito sob o capô?

Caso contrário, existem trabalhos / planos para adicionar simultaneidade implícita às funções vetorizadas e torná-las mais rápidas que os loops?

questionAnswers(2)

yourAnswerToTheQuestion