сколько целых чисел в массиве 16 КБ - PullRequest
0 голосов
/ 28 января 2011

Я задаю этот вопрос, потому что я программирую на GPU с CUDA.общая память составляет 16 КБ, поэтому мне нужно знать, какой максимальный целочисленный массив я могу создать?
Можно ли создать большой массив (около 3 000 000 целых), если у меня есть память 4 ГБ?Как правильно рассчитать это?такое целое число, которое составляет 4 байта в 32-битной ОС, равно 8B в 64-битной системе?выше, тот же массив целых чисел в 64-битной ОС будет иметь двойной объем памяти, чем в 32-битной ОС?я чувствую себя потерянным, когда дело доходит до вычисления пространства памяти ... кто-нибудь может "обучить" меня?

я использую c в качестве языка программирования ...

1 Ответ

1 голос
/ 28 января 2011

Будь то целые числа 32 или 64 бита (или что-то еще) зависит от вашего процессора, ОС и настроек компилятора, а также от точного типа данных, который вы используете.Я полагаю, что int - это 32 бита на распространенных платформах, а long long - 64. Чем отличается long: в x86 Linux это 32 бита на 32-битной машине и 64 бита на 64-битной.Я думаю, что Windows делает что-то другое, хотя.Что касается размеров вычислений, вы можете определить, сколько байтов массив T будет принимать к size * sizeof(T);вручную, вы можете умножить размер на количество бит в числе, разделенном на 8. Таким образом, память 16 КБ может хранить 4 КБ 32-разрядных или 2 КБ 64-разрядных, а массив элементов 3M займет 12 МБ для 32-битовые целые и 24 МБ для 64-битных.Вы можете выбрать размер данных независимо от вашего оборудования.Возможно, вы захотите взглянуть на <stdint.h> в C99, чтобы получить целочисленные типы с определенными размерами битов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...