Ответы пользователя по тегу GPGPU
  • Почему при меньшем размере блока потоков в группе, скорость такая же?

    @rPman
    Производительность кода на gpu сильно зависит от динамики обращения к оперативной памяти, достаточности кеша и аппаратных возможностей железа (сколько банков памяти).

    Например последовательный доступ к данным значительно эффективнее случайного.

    Если процессор не используется, то в худшем количество потоков должно быть не больше банков памяти (десятки).

    ...
    Ответ написан
    Комментировать
  • Почему процессоры gpu не любят разветвлений в программе?

    @rPman
    не совсем верно это помещать в ответ, я не уверен.

    Если я верно понимаю, код в GPU общий для всех ядер (там правда разные типы, не только вычислительные, и у каждого свой язык и правила, но мы говорим про конкретно вычисления), это значит когда ты запускаешь kernel, инструкции выполняются одновременно на всех ядрах синхронно,.. прыжок по условию это пропуск какой то секции инструкций, это значит ядра, у которых выбран пропуск инструкций будут ждать когда другие ядра, для которых нужно пройти эту секцию, завершат вычисления (гуглить thread divergence).

    Но это было актуально на заре появления gpgpu, возможно сейчас все сложнее, внутри чипа ядра распределены по нескольким блокам, сами блоки как то разделяют память, есть своя регистровая и кеш память.

    Кстати на практике большее значение имеет работа именно с оперативной памятью, там она блоками разбита, как именно блоки общаются между собой вопрос (единая шина или матричная структура это хз) но в любом случае если код ждет память, его будут ждать все (соответственно все в пределах секции)... компилятор почти наверняка кеширует данные из глобальной памяти в разделяемую и регистровую (для блоков и соответственно ядер), т.е. все будет зависеть еще и от работы оптимизатора.
    Ответ написан
    4 комментария
  • При движении мыши скачет нагрузка gpu. С чем связано?

    @rPman
    Выглядит как аппаратная проблема. Если бы не было речи о том что работа со внешним монитором не глючит можно было бы предположить что проблема в системе охлаждения.

    Проверь какая температура у видеокарты, возможно проблема решится обслуживанием ноутбука прочистить кулеры и заменить термопасту
    Ответ написан
    1 комментарий
  • Используют ли в нейронных сетях вычисления с пониженной разрядностью?

    @rPman
    пот первое же нагугленное исследование использования 8-битных и 16-битных весов на nvidia gpu
    5 Conclusions
    We have demonstrated DNN training with 8-bit floating point numbers (F P 8) that achieves 2 − 4×
    speedup without compromise in accuracy
    . The key insight is that reduced-precision additions (used
    in partial product accumulations and weight updates) can result in swamping errors causing accuracy
    degradation during training. To minimize this error, we propose two new techniques, chunk-based
    accumulation and floating point stochastic rounding, that enable a reduction of bit-precision for
    additions down to 16 bits – as well as implement them in hardware. Across a wide spectrum of
    popular DNN benchmarks and datasets, this mixed precision F P 8 training technique achieves the
    same accuracy levels as the F P 32 baseline. Future work aims to further optimize data formats and
    computations in order to increase margins as well as study additional benchmarks and datasets.


    еще есть огромные нейронные сети, требующие неадекватно большие объемы оперативной памяти, что очень дорого, когда речь идет о нейроннх сетях
    Например, те же проекты OpenAI, напомню чтобы запустить тот сберовский ruDALL-e понадобится видеокарта больше 6Gb RAM (можно и с таким но потребуются телодвижения и сильно больше времени), если я верно понял тут используются 16-битные веса, а если переделать на 8-битные, требования к памяти можно еще сильнее понизить.

    есть еще разработки по использованию 1битных весов (ума не приложу как это работает), гугл выдает кучу статей
    Ответ написан
  • Есть ли программы распознавания речи и автоматического перевода на cuda и opencl?

    @rPman
    Самое дешевое - использовать облачные инструменты от гугла или яндекс, если инужен русский язык (у них лучшие технологии в этой области)

    В windows с помощью speech recognition можно слушать английскую речь и переводить ее в текст, переводить на другой язык уже другим инструментом, оффлайн инструменты есть (дорогие).

    Все остальные варианты по качеству на столько плохие, что использовать их имеет смысл только с точки зрения фана. Правда изучал я вопрос где то лет 5 назад, возможно сейчас по лучше.

    p.s. если речь о нелегальных механизмах, ищи инструменты автоматизации действий на android, к примеру тамошний гугл-переводчик может работать в режиме offline (почти наверняка он прекратит работу после определенного объема текста, и придется это как то обходить)

    upd. попробуй https://github.com/mozilla/DeepSpeech
    Ответ написан
  • Какая память в GPU быстрее, глобальная или константная?

    @rPman
    Память в видеокарте не одним единым блоком, а кучей небольших, привязанных (и то не линейно) к своим процессорным ядрам.

    Понять без понимании логики твоего кода когда и что будет быстрее сложно, к примеру последовательное чтение и такая же последовательная запись по уму наиболее быстрая, а вот случайный доступ максимально не эффективный (на порядок).
    Ответ написан
    2 комментария
  • Как пользоваться ассемблером Intel для GPU?

    @rPman
    Если я верно понимаю начинать смотреть тут там же есть sdk для загрузки и opencl tool, не удивюсь если все необходимое там уже есть

    можно заглянуть сюда

    зы а вы с какой целью интересуетесь?
    Ответ написан
    Комментировать
  • Как создать программу для захвата видео с экрана?

    @rPman
    GpGpu для программиста на текущий момент выглядит так - на неком языке (все поддерживают opencl, а nvidia в частности свою cuda, но онро идеологически похоже), очень похожем на c++, пишется код, с одним callback методом, который будет вызываться последовательно и параллельно (это решит драйвер видеокарты, вы этим не почти управляете) для элементов вашего массива, который по факту - текстура в памяти (на низком уровне вы тут не заморачиваетесь) и сохраняет результат в другой.

    Передача данных между обычным обычной оперативной памятью и видеокартой, объективно самая дорогая операция, и обычно стараются свести такие копирования к минимуму (т.е. на старте и под конец, для получения результата). Причем на столько, что к примеру получение содержимого экрана в оперативную память и копирование ее обратно в формате, понятному вашему cuda приложению будет занимать 99% времени если не 1099% (вы же хотите fullhd/4k 60 fps? а скорости может тупо не хватить), не говоря уже о самом преобразовании форматов.

    Поэтому вам придется решить инженерную задачу, как расшарить данные между текстурой в памяти видеокарты, в которой лежит экран и вашим cuda приложением, и я боюсь это будет тот еще квест, там наверняка и права доступа весело вылезут, и привязка к чипу видеокарты и что-нибудь еще.

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

    p.s. nvidia уже вроде несколько лет назад пиарилась на том что разработала такие алгоритмы для эффективного стриминга экрана приложений и игр по сети с минимальной задержкой, в т.ч. в железе.
    https://developer.nvidia.com/nvidia-video-codec-sdk
    Ответ написан
    Комментировать
  • Нагружает ли OpenCL видеокарту? Вредит ли это как-то вычислению графики?

    @rPman
    Вычисления OpenCL бывают разными, одни могут совсем не затрагивать видеопамять (майнинг sha256) — такие почти совсем не будут влиять на работу компьютерных игр, особенно если эти игры не по максимуму используют шейдерные процессоры для разных спецэффектов.

    А вот вычисления, требующие доступ к оперативной памяти видеокарты (майнинг scrypt) будут нагружать ее по полной.
    Ответ написан
    3 комментария
  • Skanect, GPU и ATI?

    @rPman
    Когда технология CUDA только появилась, некий хакер адаптировал драйвера для ATI OpenCL, за что его дружно забанила компания, взяв его себе в штат: ixbt
    На сей раз Эран Бадит (Eran Badit) с упомянутого ресурса занялся вплотную наборами для разработчиков NVIDIA CUDA SDK и PhysX SDK, результатом чего стал модифицированный драйвер PhysX (ранее доступный только для карт NVIDIA), позволяющий задействовать ускорение физики средствами GPU на ускорителях производства AMD, в частности, на Radeon HD 3870

    p.s. что это я, в вики все разжовано
    Ответ написан