У меня проблема с использованием буфера байтов в глобальной памяти для хранения некоторого целого числа различного размера (8 бит, 16 бит, 32 бита, 64 бита).
Если я храню целое число со значением указателя, не кратным 4 байтам (например, потому что я только что сохранил 8-битное целое число), адрес округляется в меньшую сторону, стирая предыдущие данные.
__global__ void kernel(char* pointer)
{
*(int*)(pointer+3)=3300000;
}
В этом примере кода с использованием любого из: (указатель), (указатель + 1), (указатель + 2), (указатель + 3) целое число сохраняется в (указатель), учитывая, что указатель кратен 4.
Организована ли память cuda в 32-битных блоках на аппаратном уровне?
Есть ли способ сделать эту работу?