что у меня есть Cuda ядро параметр ядра CUDA
__global__ foo (int a, int b)
{
... ...
}
где а и Ь сохраняются. Это занимает место для каждого потока?
что у меня есть Cuda ядро параметр ядра CUDA
__global__ foo (int a, int b)
{
... ...
}
где а и Ь сохраняются. Это занимает место для каждого потока?
Нет этого места для каждого потока не требуется, вместо этого a
и b
выделяются один раз в постоянном пространстве - пространство только для чтения - из которого может считываться весь поток.
Обратите внимание, что это пространство кэшируются постоянными регистрами и совместно всех потоки:
только для чтения, постоянный кэша, который совместно все скалярных ядрами процессора и ускоряет считывание с постоянной памяти пространство, которое является областью памяти устройства для чтения [PTX ISA Version 2.1 Chapter 3].
Я предполагаю, что, по крайней мере, когда вы измените параметры в коде, они будут скопированы в регистры. Кроме того, регистры могут быть быстрее, чем постоянная память, поэтому, возможно, копия происходит независимо от того, что. Кто-то должен проверить сгенерированную сборку. – masterxilo