У меня есть общие вопросы о параллелизме в коде CUDA или OpenCL на GPU.Я использую NVIDIA GTX 470.
Я кратко прочитал в руководстве по программированию Cuda, но не нашел соответствующих ответов, поэтому спрашиваю здесь.
У меня есть функция верхнего уровня, которая вызывает ядро CUDA (длято же самое ядро, у меня есть его версия OpenCL).Эта функция верхнего уровня сама вызывается 3 раза в цикле for из моей основной функции для 3 различных наборов данных (данные изображения R, G, B), и фактический кодлет также обрабатывает все пиксели в изображении / кадретак что у него 2 «для циклов».
Что я хочу знать, так это то, какой параллелизм здесь используется - параллелизм на уровне задач или параллелизм данных?
Итак, что я хочу понять, так этосоздает ли этот код CUDA и C несколько потоков для разных функций / функций в кодлете и коде верхнего уровня, выполняет их параллельно и использует параллелизм задач.Если да, то кто его создает, поскольку нет библиотеки потоков, явно включенной в код или связанной с.
ИЛИ
Он создает потоки / задачи для различных итераций цикла for, которые являются независимыми и, таким образом,достижение параллелизма данных.Если он выполняет этот тип параллелизма, использует ли он это, просто отмечая, что разные итерации цикла не имеют зависимостей и, следовательно, могут планироваться параллельно?
Поскольку я не вижу специальных конструкций / встроенных функций компилятора (параллельных для циклов, как в openMP), которые сообщают компилятору / планировщику планировать такие циклы / функции параллельно?
Любое чтениематериал поможет.