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