Обсуждение статьи "Нейросети — это просто (Часть 5): Многопоточные вычисления в OpenCL" - страница 2

 
Aleksey Vyazmikin:

Так это не новость - было 1 ядро, и на нем шла нагрузка, а стало два ядра, нагрузка уменьшилась в два раза... Скорей всего изменения более существенны и сравнение не корректно просто.

Для понимания причин ускорения мало смотреть на количество ядер, надо ещё посмотреть на архитектуру вычислений.
 
Dmitriy Gizlyk:
Для понимания причин ускорения мало смотреть на количество ядер, надо ещё посмотреть на архитектуру вычислений.

Согласен. Вот я не понял, почему 4 вектора потом было распараллелено, а не 2?

 
Aleksey Vyazmikin:

Так это не новость - было 1 ядро, и на нем шла нагрузка, а стало два ядра, нагрузка уменьшилась в два раза... Скорей всего изменения более существенны и сравнение не корректно просто.

Более эффективное распределение памяти может быть, ядро сразу получает данные в полном объеме, без перераспределения. Получается быстрее. Но для некоторых задач может получиться медленнее, когда расчеты в кернеле ресуроемкие.

 
Aleksey Vyazmikin:

Согласен. Вот я не понял, почему 4 вектора потом было распараллелено, а не 2?

Распараллелено 2 вектора по 4 элемента. Вектора inp (исходные данные) и weight(веса). В каждый записали по четыре элемента, а потом в dot перемножили

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

Дмитрий спасибо за ответ. 

 
Maxim Dmitrievsky:

Более эффективное распределение памяти может быть, ядро сразу получает данные в полном объеме, без перераспределения. Получается быстрее. Но для некоторых задач может получиться медленнее, когда расчеты в кернеле ресуроемкие.

Возможно.

 
Спасибо за цикл статей, интересно и познавательно. Но как обучить сеть, что-то у меня не получается. Несколько раз уже запускал на графике EURUSD. Forecast растёт а потом начинает падать. Кто нибудь уже обучил сеть?
 
Dmitriy Gizlyk:

Распараллелено 2 вектора по 4 элемента. Вектора inp (исходные данные) и weight(веса). В каждый записали по четыре элемента, а потом в dot перемножили

Т.е. за счет последовательного выполнения операции умножения происходит прирост? Ведь параллелится два вектора, в которых последовательно происходит 4 (условно) перемножения в каждом?

 
Очень интересная статья и тематика нейросетей является актуальной в настоящее время. Спасибо автору за хорошую работу.
 
Aleksey Vyazmikin:

Т.е. за счет последовательного выполнения операции умножения происходит прирост? Ведь параллелится два вектора, в которых последовательно происходит 4 (условно) перемножения в каждом?

Использование векторных операций позволяет выполнять не последовательно, а параллельно произведение 4-х элементов. Посмотрите видео https://ru.coursera.org/lecture/parallelnoye-programmirovaniye/4-1-chto-takoie-viektorizatsiia-i-zachiem-ona-nuzhna-f8lh3. Там речь об OpenMP, но смысл тот же.

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