Я реализовал приложение, которое разбивает матричное векторное умножение на множество кусков и последовательно выполняет этапы с OpenCL на нескольких устройствах. Сначала я протестировал приложение на процессоре Intel, затем на трех графических процессорах NVIDIA, а затем на четырех устройствах вместе. В результате я не получаю ускорение при использовании всех четырех устройств. Я определяю, что передача на устройства стоит вдвое дороже по сравнению с временем передачи при работе одного ЦП или трех отдельных графических процессоров.
Функция clEnqueueWriteBuffer занимает вдвое больше времени и, как представляется, вызывает перерасход. Могут ли эти издержки возникнуть при использовании процессора в качестве хоста и устройства? Или от одновременной передачи данных в CPU и GPU?