Я не совсем понимаю вопрос, но если вы начнете делать кодирование, используя CUDA , вы сможете по-другому взглянуть на многопоточность приложений.
Он отличается от общей техники многопоточности, такой как семафоры, мониторы и т. Д., Потому что у вас есть тысячи потоков одновременно. Таким образом, проблема параллелизма в CUDA заключается больше в разделении ваших данных и последующем смешивании кусков данных.
Просто небольшим примером полного переосмысления распространенной проблемы с последовательным интерфейсом является алгоритм SCAN . Это так же просто, как:
- Учитывая SET {a, b, c, d, e}
Я хочу следующий набор:
{a, a + b, a + b + c, a + b + c + d, a + b + c + d + e}
Где символом «+» в данном случае является любой коммутативный оператор (не только плюс, вы также можете выполнять умножение).
Как это сделать параллельно? Это полное переосмысление проблемы, оно описано в этой статье .
Еще больше реализаций различных алгоритмов в CUDA можно найти на сайте NVIDIA