CUDA регистрируется и разгружается в общую памятьC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 CUDA регистрируется и разгружается в общую память

Сообщение Anonymous »

Я работал над сценарием CUDA, где после профилирования с NSIGHT я вижу, где в источнике он в настоящее время выделяется на глобальную память. В настоящее время я запускаю это на графическом процессоре 4090.

Код: Выделить всё

/home/mem/scripts/run-cuda.py:253: UserWarning: The CUDA compiler succeeded, but said the following:
ptxas info    : Overriding global maxrregcount 127 with entry-specific value 128 computed using thread count
ptxas info    : 40 bytes gmem, 8 bytes cmem[4]
ptxas info    : Compiling entry function 'cuda_entry' for 'sm_89'
ptxas info    : Function properties for cuda_entry
232 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Used 52 registers, used 0 barriers, 232 bytes cumulative stack size, 480 bytes cmem[0]
ptxas info    : Compile time = 31.596 ms
ptxas info    : Function properties for _ZN17ArrayMetrics12valid_metEv
0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for _ZN17ArrayMetrics4sizeEv
0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for _ZN17ArrayMetrics9push_backEO5Met
16 bytes stack frame, 16 bytes spill stores, 16 bytes spill loads
< /code>
Итак, если я правильно понимаю: < /p>
[list]
[*]40 bytes gmem, 8 bytes cmem[4]  
У меня есть 40 байтов, заканчивающихся в глобальной памяти и 8 байтов, заканчивающихся постоянной памятью. к глобальной памяти? < /li>

Код: Выделить всё

Used 52 registers, used 0 barriers, 232 bytes cumulative stack size, 480 bytes cmem[0]
- только 52 активных регистров
[*] В линии ArrayMetrics.push_back (MET), которая, кажется, не может соответствовать регистрам, поэтому у нас есть локальная память?
< /ol>
Чтобы попытаться минимизировать разлив из регистров в локальный MEM, я добавил следующее, но, похоже, это не изменяет фактически используемые 52 Регистры: < /p>

Флаг компиляции: '-maxrregcount = 127' < /code> (я положил 127, так как я хотел увидеть, как он принуждает 128, как на фото выше ). Потоки будут ограничены 512, так что, надеюсь, будет выделено больше регистров на SM на каждую потоку
[/list]
Я понимаю, что увеличение распределения регистров уменьшит активные потоки/блоки, но но блоки, но, но но Хотел посмотреть, улучшит ли сохранение всего вычислений в регистрах производительность. Каждый из экземпляров ArrayMetrics для каждого потока, возможно, поможет производительности? : __launch_bounds__ против maxrregcount
[*] Регистры/поток счета в ядре Cuda


Подробнее здесь: https://stackoverflow.com/questions/794 ... red-memory
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»