Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сашин диплом.docx
Скачиваний:
8
Добавлен:
20.09.2019
Размер:
794.04 Кб
Скачать

Оптимизация программ на cuda

Естественно, в рамках конкретной дипломной невозможно рассмотреть серьёзные вопросы оптимизации в CUDA программировании. Поэтому просто вкратце расскажем о базовых вещах. Для эффективного использования возможностей CUDA нужно забыть про обычные методы написания программ для CPU, и использовать те алгоритмы, которые хорошо распараллеливаются на тысячи потоков. Также важно найти оптимальное место для хранения данных (регистры, разделяемая память и т.п.), минимизировать передачу данных между CPU и GPU, использовать буферизацию.

В общих чертах, при оптимизации программы CUDA нужно постараться добиться оптимального баланса между размером и количеством блоков. Большее количество потоков в блоке снизит влияние задержек памяти, но снизит и доступное число регистров. Кроме того, блок из 512 потоков неэффективен, сама NVIDIA рекомендует использовать блоки по 128 или 256 потоков, как компромиссное значение для достижения оптимальных задержек и количества регистров.

Среди основных моментов оптимизации программ CUDA: как можно более активное использование разделяемой памяти, так как она значительно быстрее глобальной видеопамяти видеокарты; операции чтения и записи из глобальной памяти должны быть объединены (coalesced) по возможности. Для этого нужно использовать специальные типы данных для чтения и записи сразу по 32/64/128 бита данных одной операцией. Если операции чтения трудно объединить, можно попробовать использовать текстурные выборки.

Механизм шифрования.

Алгоритм шифрования построен на основе двумерно-ассоциативного механизма маскирования. Принцип шифрования следующий.

Каждой цифре от 0 до 9 присваивается индивидуальная двоичная последовательность длиной 150 символов. Эта последовательность называется эталоном. Исходные коды, представленные в виде совокупности нулей и единиц, подвергаются выборочному стохастическому воздействию помех. Места, которые остаются незатронутыми, выбираются случайным образом и определяются единичными элементами инверсных матриц масок. Набор масок для всего множества эталонов является секретным ключом, используемым для расшифрования. При этом любой объект в каждой своей локализации рандомизируется уникальным образом.

1 1 1 1 1 1 1 1

1 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1

0 0 0 0 0 0 0 1

0 0 0 0 0 0 0 1

0 0 0 0 0 0 0 1

0 0 0 0 0 0 0 1

0 0 0 0 0 0 0 1

0 0 0 0 0 0 0 1

1 1 1 1 1 1 1 1

Рис. 3.3.

Поэтому два одинаковых кода будут представлены различно в зашифрованном виде. Расшифрование ведется побитовым сравнением ключевой последовательности и эталонов с зашифрованными данными.

В качестве объектов изображения используется алфавит почтовых индексов. Эталон объекта (всего 10 штук: 0,1,…9) представляет собой матрицу размерности 8×15, состоящую из 0 и 1). Например, эталон 5 выглядит так, как показано на Рис. 3.3.

Ядром этого метода шифрации являются генератор масок и рандомайзер. Рандомайзер на основе эталона объекта и маски генерирует шифрокод для символа. Это делается следующим образом: те значения эталона, позиции которых совпадают с позициями «1» в соответствующей маске переносятся в соответствующие позиции шифрокода без изменения, все остальные позиции случайным образом заполняются «0» и «1» (Рис 2.2).

1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1

1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0

1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1

0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1

0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0

0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0

0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1

0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0

0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1

1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1

эталон маска шифркод

Рис 3.4.