Как использовать область данных OpenA CC для структурированных данных? - PullRequest
0 голосов
/ 25 апреля 2020

Я новичок в 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, останутся в графическом процессоре на весь период действия области данных.

Пожалуйста, исправьте меня, если я ошибаюсь.

Заранее спасибо.

1 Ответ

0 голосов
/ 27 апреля 2020

Существуют неявные области данных как часть параллельной конструкции (т. Е. Область данных, которая является частью области "paralllel" или "kernels"), где компилятор попытается неявно скопировать данные на устройство, принимая размер и размер. Форма данных известна. В противном случае вам нужно будет использовать предложения данных для определения формы и размера.

Для других конструкций областей данных, структурированных, неструктурированных и объявляющих, вам необходимо иметь переменные, которые вы хотите на устройстве включить в предложении данных, где предложением данных может быть копирование, копирование, копирование, создание, представление или deviceptr (или удаление для директив данных выхода). Компилятор не может предположить, какие данные вам нужны на устройстве, поэтому в общем случае неявно не копирует их для вас.

...