Intel corporate blog
Singularis corporate blog
High performance
Algorithms
Comments 5
0
А если сравнивать с современными графическими ускорителями, поддерживающими OpenCL или CUDA — то что быстрее будет — GPU или этот ускоритель?
0
Во-первых, этот ускоритель, используемый на многих кластерах, современным назвать уже нельзя, на его смену пришел KNL, у которого производительность выше, но доступ к которому пока получить не удалось, так что современным GPU, он, на этой задаче будет уступать, так же, как и по пиковой производительности. Во-вторых, в статье не показано, как достичь пиковой производительности, а приведен пример того, как можно повысить скорость кода, генерируемого компилятором за счет векторизации, причем на одном ядре. Для эффективного задействования сопроцессора, код еще требуется распараллелить. Этот пример может дать преимущество в случае, если целиком выполнять все вычисления, помимо матричных операций, на сопроцессоре в native-режиме, например, достаточно сложный параллельный физический код, который целиком на GPU не ложится.
0

В данной статье тестируется 300к матриц размером 4х4, я думаю, что на ГПУ это будет тоже быстро. Могу попробовать оптимизировать такое легкое ядро ради интереса (если это вам интересно конечно).

0
Если интересно, попробуйте. В данном случае на топовом GPU, очевидно, будет быстрее, если считать все на нем, но данная операция может использоваться, как здесь уже отметили, в итеративном коде с выводом данных на каждой итерации, то есть каждый запуск ядра потребует пересылки большого объема на GPU и обратно, а это уже, скорее всего, будет существенно медленнее.
0
Не всё ложится на GPU. Если алгоритм итеративный, AN+1=F(AN) то при всём желании нельзя задействовать все юниты GPU. При небольшом параллелизме, хотя достаточном для матриц (4-16 умножений-сложений за такт), CPU будет быстрее.
Only those users with full accounts are able to leave comments., please.