Ответы пользователя по тегу Нейронные сети
  • Как реализовать поэлементное перемножение массивов средствами OpenMP, CUDA и GLSL?

    svetlov
    @svetlov
    Ну смотрите.
    Там нет массивов.
    Создаете окошко — это обязательно.
    Инииализируете конвейер.
    Создаете vertex buffer object с координатами вершин. Да, я знаю что вершин у вас нет — но иначе шейдер не запустить, он будет работать по разу на вершину. Вершины могут быть фейковые.
    Создаете текстуры. Современные видеокарты поддерживают текстуры из float — проблем быть не должно. Но следует убедиться для той видюхи, на которой все запускается — иначе нужно использовать другой способ расчета.
    Устанавливаем все это добро как render state. Запускаем созданный и скомпилированный шейдер.
    Он берет значения из текстур и рисует нам картинку. Вернее, шейдеров нужно два: вершинный и пиксельный. Второй должен записать результат. Есть еще выкрутасы с записью промежуточных результатов из шейдера — но тут нужно смотреть, что умеет конкретная видюха.
    Берем результат. Откуда — вопрос. Если поддерживаются pixel buffer object и render target — то из PBO. Иначе из буфера экрана (надеюсь, до этого дело не дойдет, видюха будет более или менее сносной).
    Может, я еще что-то забыл.

    Перечисленная схема — лишь краткое изложение. На самом деле кода получается — мама не горюй. На «простое перемножение массивов» это ни разу не похоже.
    Ответ написан
  • Как реализовать поэлементное перемножение массивов средствами OpenMP, CUDA и GLSL?

    svetlov
    @svetlov
    Кажется, во втором варианте второй цикл не параллелится. Замените input[j] на локальную переменную, чтобы она в регистр упала. Еще может потребоваться промежуточный массив для складывания этих input[j] — чтобы потом одним махом переключить на него после выхода за цикл.
    Ответ написан
    Комментировать