Наткнувшись на эту тему, dot быстрее на процессор, чем на gpu, используя OpenCL, мне снова напомнили, что есть экземпляры, которые выглядят так, как будто они созданы для OpenCL *, но там, где они используются, OpenCL не дает нам выигрыша. то есть у меня также есть реализация kmeans с использованием кода pyopencl, который в несколько раз быстрее, чем простой код python, но все же в несколько раз быстрее, чем функция scipy для kmeans.
Итак, как вы решаете, когда использовать OpenCL?
- Какая видеокарта вам нужна? Насколько "лучше, чем процессор", нужна графическая карта. Является ли Quadro FX 580 против i7 860 достаточно?
- Насколько велика проблема? Вам нужны миллионы умножений, чтобы получить что-то или достаточно нескольких сотен?
- Насколько оптимизирован даже "простой" алгоритм, такой как kmeans или точечный продукт, чтобы сделать OpenCL стоящим?
Или это один из этих случаев треугольника, где вы можете (или должны) выбрать два из трех углов, чтобы заставить его работать?
problem size /\ / \ / \ / \ /________\ GPU/CPU optimization
Я знаю, что я использовал слишком смелый язык для названия и вопросов. Я изменю его, если я смогу придумать более подходящую формулировку.
Спасибо.
* простая матричная операция, такая как точка-произведение, kmeans или матричные умножения.