Discussão do artigo "Redes Neurais de Maneira Fácil (Parte 5): Cálculos em Paralelo com o OpenCL" - página 2

 
Aleksey Vyazmikin:

Portanto, isso não é novidade - havia 1 núcleo e ele estava carregado, e agora há dois núcleos, a carga diminuiu pela metade.... Provavelmente, as alterações são mais significativas e a comparação não está correta.

Para entender os motivos da aceleração, não basta observar o número de núcleos, é preciso observar também a arquitetura dos cálculos.
 
Dmitriy Gizlyk:
Para entender os motivos da aceleração, não basta analisar o número de núcleos, é preciso analisar também a arquitetura de computação.

Concordo. Não entendi por que 4 vetores foram paralelizados em vez de 2?

 
Aleksey Vyazmikin:

Portanto, isso não é novidade - havia 1 núcleo, e ele estava carregado, e agora há dois núcleos, a carga diminuiu pela metade.... Provavelmente, as alterações são mais significativas e a comparação não está correta.

A alocação de memória pode ser mais eficiente, um núcleo obtém dados completos de uma só vez, sem redistribuição. Isso acaba sendo mais rápido. Mas, para algumas tarefas, pode ser mais lenta quando os cálculos do kernel consomem muitos recursos.

 
Aleksey Vyazmikin:

Concordo. Aqui eu não entendi por que 4 vetores foram paralelizados e não 2?

2 vetores de 4 elementos cada foram colocados em paralelo. Vetores inp e weight. Eles colocaram quatro elementos em cada um e depois os multiplicaram em ponto.

dot(inp,weight) -> i1*w1+i2*w2+i3*w3+i4*w4
 
Dmitriy Gizlyk

Dimitri, obrigado pela resposta.

 
Maxim Dmitrievsky:

A alocação de memória pode ser mais eficiente, pois o kernel obtém os dados completos de uma só vez, sem realocação. Isso acaba sendo mais rápido. No entanto, para algumas tarefas, pode ser mais lento quando os cálculos do kernel exigem muitos recursos.

Talvez.

 
Obrigado pela série de artigos, interessantes e informativos. Mas como treinar a rede, é algo que não entendo. Já a executei várias vezes no gráfico EURUSD. A previsão aumenta e depois começa a cair. Alguém já treinou a rede?
 
Dmitriy Gizlyk:

Dois vetores de 4 elementos cada são colocados em paralelo. Vetores inp (dados iniciais) e weight (pesos). Quatro elementos foram escritos em cada um deles e depois multiplicados em ponto

Ou seja, devido à operação de multiplicação sequencial, há um aumento? Afinal, dois vetores são paralelizados, nos quais 4 multiplicações (condicionalmente) são realizadas sequencialmente em cada vetor?

 
O artigo é muito interessante e o tema das redes neurais é um assunto muito discutido atualmente. Obrigado ao autor pelo bom trabalho.
 
Aleksey Vyazmikin:

Ou seja, devido à operação de multiplicação sequencial, há um aumento? Afinal, dois vetores são paralelizados, nos quais 4 multiplicações (condicionalmente) são realizadas sequencialmente em cada vetor?

O uso de operações de vetor permite que você execute o produto de 4 elementos em paralelo, em vez de sequencialmente. Dê uma olhada no vídeo https://ru.coursera.org/lecture/parallelnoye-programmirovaniye/4-1-chto-takoie-viektorizatsiia-i-zachiem-ona-nuzhna-f8lh3. É sobre OpenMP, mas o significado é o mesmo.

4.1. Что такое векторизация и зачем она нужна - Векторные вычисления с помощью OpenMP 4.0 | Coursera
4.1. Что такое векторизация и зачем она нужна - Векторные вычисления с помощью OpenMP 4.0 | Coursera
  • ru.coursera.org
Video created by Национальный исследовательский Томский государственный университет for the course "Введение в параллельное программирование с использованием OpenMP и MPI". Приветствуем вас на четвертой неделе курса! На этой недели мы разберемся ...