Я новичок в OpenA CC. У меня есть запрос, связанный со структурной передачей данных с использованием директивы #pragma acc data
. Согласно сайту https://docs.computecanada.ca/wiki/OpenACC_Tutorial_-_Data_movement
Директива data определяет область кода, в которой массивы GPU остаются на GPU и используются всеми ядрами в этом регионе. .
Я понимаю использование предложения copy
. Мне было интересно, можно ли использовать эту директиву без каких-либо предложений?
Я прочитал спецификацию OpenA CC 2.7. Эта часть не ясна, является ли условие обязательным или нет. Насколько я понимаю, если область данных определяется без явного указания каких-либо данных, то все данные, используемые в этой области, будут неявно оставаться на графическом процессоре во всей области данных.
#pragma acc data
{
#pragma acc kernels
// Kernel 1
#pragma acc kernels
// Kernel 2
}
Это означает, что для приведенного выше кода все данные, используемые в Ядре 1 и Ядре 2, останутся в графическом процессоре на весь период действия области данных.
Пожалуйста, исправьте меня, если я ошибаюсь.
Заранее спасибо.