05.27.09

Использование OpenMP: старт

Рубрика: Gentoo, Science tagged , , , , в 18:25 от Engraver

Распараллеливание задач, подчас, бывает крайне необходимой штукой. Однако в самом начале изучения одной из библиотек для этого — OpenMP — сталкиваешься со страшной проблемой: нифига не паралеллится. Итак, раз и на всегда что нужно делать:
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
int main(int argc, char ** argv)
{
#pragma omp parallel
{
printf("Hello, world!\n");
}
return 0;
}

Теперь компилируем:
alexander@A64x2 ~/Temp $ gcc -fopenmp -c test.c
alexander@A64x2 ~/Temp $ gcc -o test test.o -lgomp

Здесь ключевыми являются флаги -fopenmp и -lgomp, использование которых, похоже, очевидно всему миру кроме меня… А результат выполнения у меня был таков:
alexander@A64x2 ~/Temp $ ./test
Hello, world!
Hello, world!

Комментарии (4) »

  1. LG.BALUKATION сказал,

    Кажется в 2007 году, пока этой штуки ещё не было в GCC, Sun на TechDays очень хвастался наличием OpenMP в своих компиляторах (есть только для Солярки и Линухи). Если интересна базовая инфа – можно попробовать отыскать те слайды и полистать их, вроде как вполне доступно описывали что оно, для чего нужно и как использовать.

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

    • Engraver сказал,

      Спасибо за предупреждение, учту. Ато я еще полный ноль в параллельных приложениях :) Но юзать кластер и даже не попытаться заюзать несколько процов для решения задачки кажется обидным)) Еще MPI на очереди… Там вроде более «ручное»

  2. LG.BALUKATION сказал,

    Кстати я тут недавно чтот глянул сайтиков… похоже OpenMP есть уже во всех основных линушных компиляторах, заодно кое-что новое для себя открыл – надоб попробовать однажды.

    В общем, изначально онож появилось в интеловских супер-компилях по пол-кило зелени за экземпляр, но интел оказывается раздаёт их всем желающим для не-коммерческого использования под линухом нахаляву. Так что можно попытать счастья и в оригинальной реализации – вроде как для интеловских камней оно генерит более быстрый код, правда не полностью совместимо с GCC.

    После такого, мне стало интересно – а как же конкуренты? AMD делает ставку на open64. Некогда очень крутой компиль для MIPS от SGI, сорсы которого были открыты и сейчас на его основе есть как коммерческие решения (по те же пол-кило зелени за экземпляр – это чтоль такая модная цена для компилятора?), так и халявные. Вроде как в рамках проекта ведутся не хилые исследования по генерации быстрого кода и штука должна быть тоже весьма интересная. Помимо него, AMD предлагает и просто допиленные для своих камней GCC.

    Sun Studio тоже есть халявная под линух, вроде как иногда выдаёт оптимальный код лучше GCC, но вот будующее этого проекта кажется мне несколько туманным.

    • Engraver сказал,

      Код лучше GCC?? Интересно, нужно глянуть будет. Ато я только PCC встречал, но мнения о нем весьма полярны в нете…


Добавить комментарий