Я знаю, что вызов функтора с использованием thrust::for_each
с данными в thrust::host_vector
имеет параллельную политику выполнения, но они фактически выполняются параллельно?Вызов функтора тяги на хосте для выполнения нескольких потоков
Если нет, то каким будет правильный способ вызвать эти знания о том, что система, в которой я запускаю это, виртуализирована, чтобы все ядра находились на одной машине?
[EDIT]
Я понимаю, что есть такая вещь, как thrust::omp::par
, однако, я не могу показаться, чтобы быть в состоянии найти полный пример Thrust с использованием OpenMP.
У меня есть следующий вопрос: так, если бы я использовал (пользовательский) функтор, определял бы его как '__device__' или' __host__'? –
Кажется, что это должно быть '__host__', хотя либо должно работать –
' __device__', а '__host__' - это не то же самое, что и бэкэнда тяги. Для операций «хозяина» в толчке функтор должен включать украшение '__host__'. Для бэкэнд-операций «устройства», которые используют GPU в качестве бэкэнд, функтор должен включать украшение '__device__'. Для всех основанных на процессорах бэкендов (включая OMP), функтор должен включать украшение '__host__'. Причина этого заключается в том, что '' __host__' и __device__' не означает одно и то же самое, что и упорный «хозяин» и упорный «устройство» бэкэнд. –