Задать вопрос
  • Как разархивировать rar архив с помощью cuda?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Пока что никто такое не делает.
    Для создания алгоритма архивации нужен именно CPU а не GPU. Тех задач, которые может посчитать GPU в процессе архивирования не так уж и много. То есть если алгоритм и реализовать, выхлоп будет ну 30-40%. Просто задачи не те.

    Зато какие минусы:
    Нестабильная работа на разных компах, поскольку видяшки все разные, частоты разные, синхронизация и вообще API для работы с GPU постоянно меняется. Для nvidia и ATI надо писать совершенно разное, и архиватор должен определять кучи моделей карт, чтобы знать чем пользоваться а чем нет.
    Основной приток производительности в GPU идет от распарралеливания однотипных процессов, в то время как для архивации важно учитывать все, что было сжато до, чтобы использовать это для дальнейшего сжатия.
    Грубо говоря: если для того, чтобы на экране нам нужно сделать эффект размытия, мы можем поделить экран на 100 кусочков и каждый размыть отдельно в отдельном потоке на GPU. Если же мы разделим на 100 кусочков архивируемый файл, и каждый кусочек будет архивировать отдельно, мы не сможем пользоваться наработками по первым кускам, чтобы благодаря обработанным данным сжать послеюущие. Парралелить процесс архивации получается крайне плохо, из-за этого смысл использования GPU отпадает. Нужно же понимать, что GPU это не супербыстрая железка, а железка, которая хорошо заточена под определенные задачи.

    Конечно попытки реализовать отдельные алгоритмы архивации есть, но из-за вышеупомянутого, степень сжатия очень маленькая, потому что можно реализовать только простые алгоритмы на кусках данных. Полноценный алгоритм, как в winrar полностью перенести в GPU невозможно, поэтому CUDA-архиваторы пока существуют просто в виде тестовых программок разных любителей попробовать, и до полноценного архиватора они не дотягивают.
    Ответ написан
    3 комментария
  • CUDA на слабых видеокартах работает так же как и на более мощных?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Зависит от конфигурации ядра вашего приложения. Естественно при определенных конфигурациях ядра (размер гридов, блоков и т.д.) за счет увеличения количества потоковых процессоров увеличится количество пулов потоков которые могут выполняться одновременно.

    Что до разницы в версии CUDA... Там есть кучи нюансов связанные с синхронизацией потоков, работа с глобальной памятью, точностью вычислений и т.д.

    Из доступной информации, есть официальные гайды. Там приводится вот такая вот табличка:
    jkS7S.png
    Ответ написан
    3 комментария
  • Почему это CUDA-ядро дает результаты, отличные от результатов CPU-версии?

    @oleksandr_veles
    Возможно проблема в том, что ядра в цикле выполняются асинхронно.
    А результат выполнения одного ядра зависит от результата другого, и следующее ядро в цикле выполняется не дождавшись окончания выполнения предыдущего.
    Двойную точность, если у Вас не тесла к20 или старые тесла 2ххх, смысла использовать нет на картах nvidia.
    GF555M и в одинарной точности не блещет особо, а с двойной ещё на порядок медленнее.
    Cовременный 4 ядерный CPU будет быстрее в double.
    Ответ написан
    Комментировать
  • Выборка ближайших точек?

    Ramzeska
    @Ramzeska
    Используйте функции spatial движка mysql. dev.mysql.com/doc/refman/5.1/en/spatial-extensions.html
    Там есть и специальные индексы и оптимизированный поиск по ним. Вам достаточно lat,lng поля превратить в одно поле типа GeoPoint и создать на нем spatial индекс. А далее дело техники сделать выборку в пределах квадрата по индексу и через having отрезать до окружности. Лучше поступать именно так, потому что там используется специальный для этого индекс. Не знаю что там у вас урезано, но мы проверяли быстродействие при поиске по двум полям и по point полю, так последний показал в разы большую производительность.
    Ответ написан