Сокращение OpenMP на векторе SSE2

У меня была та же проблема, и для выполнения установки pip внутри virtualenv мне пришлось использовать эту команду:

RUN pip install virtualenv virtualenvwrapper
RUN mkdir -p /opt/virtualenvs
ENV WORKON_HOME /opt/virtualenvs
RUN /bin/bash -c "source /usr/local/bin/virtualenvwrapper.sh \
    && mkvirtualenv myapp \
    && workon myapp \
    && pip install -r /mycode/myapp/requirements.txt"

Надеюсь, это поможет.

2
задан Aurélien Pierre 21 January 2019 в 06:45
поделиться

1 ответ

Вы можете определить пользовательское сокращение следующим образом:

#pragma omp declare reduction \
    (addps:__m128:omp_out+=omp_in) \
    initializer(omp_priv=_mm_setzero_ps())

А затем использовать его следующим образом:

#pragma omp parallel for reduction(addps:average)
for(size_t k = 0; k < size * ch; k += ch)
{
  average += _mm_loadu_ps(data+k);
}

Я думаю, что самое важное, openmp должен знать, как получите нейтральный элемент (здесь _mm_setzero_ps()) для вашего сокращения.

Полный рабочий пример: https://godbolt.org/z/Fpqttc

Интересная ссылка: http://pages.tacc.utexas.edu/~eijkhout /pcse/html/omp-reduction.html#User-definedreductions

0
ответ дан chtz 21 January 2019 в 06:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: