Как разархивировать rar архив с помощью cuda?
Пока что никто такое не делает.
Для создания алгоритма архивации нужен именно CPU а не GPU. Тех задач, которые может посчитать GPU в процессе архивирования не так уж и много. То есть если алгоритм и реализовать, выхлоп будет ну 30-40%. Просто задачи не те.
Зато какие минусы:
Нестабильная работа на разных компах, поскольку видяшки все разные, частоты разные, синхронизация и вообще API для работы с GPU постоянно меняется. Для nvidia и ATI надо писать совершенно разное, и архиватор должен определять кучи моделей карт, чтобы знать чем пользоваться а чем нет.
Основной приток производительности в GPU идет от распарралеливания однотипных процессов, в то время как для архивации важно учитывать все, что было сжато до, чтобы использовать это для дальнейшего сжатия.
Грубо говоря: если для того, чтобы на экране нам нужно сделать эффект размытия, мы можем поделить экран на 100 кусочков и каждый размыть отдельно в отдельном потоке на GPU. Если же мы разделим на 100 кусочков архивируемый файл, и каждый кусочек будет архивировать отдельно, мы не сможем пользоваться наработками по первым кускам, чтобы благодаря обработанным данным сжать послеюущие. Парралелить процесс архивации получается крайне плохо, из-за этого смысл использования GPU отпадает. Нужно же понимать, что GPU это не супербыстрая железка, а железка, которая хорошо заточена под определенные задачи.
Конечно попытки реализовать отдельные алгоритмы архивации есть, но из-за вышеупомянутого, степень сжатия очень маленькая, потому что можно реализовать только простые алгоритмы на кусках данных. Полноценный алгоритм, как в winrar полностью перенести в GPU невозможно, поэтому CUDA-архиваторы пока существуют просто в виде тестовых программок разных любителей попробовать, и до полноценного архиватора они не дотягивают.
Нужно сначала показать возможность работы алгоритма разархивации в параллельном режиме. Потом реализовать его для GPU. В первой части у меня есть очень большие сомнения...