Обсуждение статьи "Нейросети — это просто (Часть 5): Многопоточные вычисления в OpenCL" - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Так это не новость - было 1 ядро, и на нем шла нагрузка, а стало два ядра, нагрузка уменьшилась в два раза... Скорей всего изменения более существенны и сравнение не корректно просто.
Для понимания причин ускорения мало смотреть на количество ядер, надо ещё посмотреть на архитектуру вычислений.
Согласен. Вот я не понял, почему 4 вектора потом было распараллелено, а не 2?
Так это не новость - было 1 ядро, и на нем шла нагрузка, а стало два ядра, нагрузка уменьшилась в два раза... Скорей всего изменения более существенны и сравнение не корректно просто.
Более эффективное распределение памяти может быть, ядро сразу получает данные в полном объеме, без перераспределения. Получается быстрее. Но для некоторых задач может получиться медленнее, когда расчеты в кернеле ресуроемкие.
Согласен. Вот я не понял, почему 4 вектора потом было распараллелено, а не 2?
Распараллелено 2 вектора по 4 элемента. Вектора inp (исходные данные) и weight(веса). В каждый записали по четыре элемента, а потом в dot перемножили
Дмитрий спасибо за ответ.
Более эффективное распределение памяти может быть, ядро сразу получает данные в полном объеме, без перераспределения. Получается быстрее. Но для некоторых задач может получиться медленнее, когда расчеты в кернеле ресуроемкие.
Возможно.
Распараллелено 2 вектора по 4 элемента. Вектора inp (исходные данные) и weight(веса). В каждый записали по четыре элемента, а потом в dot перемножили
Т.е. за счет последовательного выполнения операции умножения происходит прирост? Ведь параллелится два вектора, в которых последовательно происходит 4 (условно) перемножения в каждом?
Т.е. за счет последовательного выполнения операции умножения происходит прирост? Ведь параллелится два вектора, в которых последовательно происходит 4 (условно) перемножения в каждом?
Использование векторных операций позволяет выполнять не последовательно, а параллельно произведение 4-х элементов. Посмотрите видео https://ru.coursera.org/lecture/parallelnoye-programmirovaniye/4-1-chto-takoie-viektorizatsiia-i-zachiem-ona-nuzhna-f8lh3. Там речь об OpenMP, но смысл тот же.