Я новичок в openmp. Ниже приведена среда.компиляция openmp, macports gcc и eclipse cdt
ОС: Mac OSX Mavericks
Компилятор: GCC (MacPorts gcc48 4.8.2_0) 4.8.2
IDE: Eclipse, Кеплер CDT плагин
Я написал следующую программу OpenMP
#include < stdio.h>
#include < omp.h>
int main()
{
#pragma omp parallel
{
int i=omp_get_thread_num();
printf("hello (%d)",i);
printf("world (%d)",i);
}
}
I скомпилировал вышеуказанную программу и получил ошибку, что omp.h не найден, и lgomp не найден. Следовательно, я добавил в свойствах проекта include include с /opt/local/lib/gcc48/gcc/x86_64-apple-darwin13/4.8.2/include и путь библиотеки/opt/local/lib/gcc48. В путь include был файл omp.h, а путь к библиотеке - файл libomp.o.
Включает опцию -fopenmp как в компоновщике, так и в опции компилятора через свойства проекта. Он компилируется с помощью gcc -I/opt/local/lib/gcc48/gcc/x86_64-apple-darwin13/4.8.2/include -O0 -g3 -Wall -c -fmessage-length = 0 -fopenmp -MMD -MP - MF "src/OpenMPCourseExamples.d" -MT "src/OpenMPCourseExamples.d" -o "src/OpenMPCourseExamples.o" "../src/OpenMPCourseExamples.c" и ссылка на команду "gcc -L/opt/local/lib/gcc48 -fopenmp -o "OpenMPCourseExamples" ./src/OpenMPCourseExamples.o ".
С помощью указанной команды он компилируется без ошибок, но с предупреждением - «предупреждение: неизвестная прагма игнорируется [-Wunknown-pragmas] #pragma omp parallel».
Кроме того, я установил переменную среды в свойствах запуска с помощью OMP_NUM_THREADS = 4. Я запустил программу, скомпилированную с указанным выше предупреждением. Я получаю только «привет (0) мир (0)». У меня создалось впечатление, что я должен начать четыре потока и увидеть другие результаты «hello (1) world (1) hello (2) world (2) hello (3) world (3)» в некотором порядке. Теперь, вот мои следующие вопросы.
- Почему я получаю предупреждение #pragma?
- Является ли компилятор действительно обнаружением openmp и зданием с openmp?
- Если все правильно, почему я не вижу четырех разных потоков?
Я удалил явную спецификацию путей включения и библиотеки. Я выбрал mp-gcc как компилятор по умолчанию, используя выбор порта --set gcc. Теперь, если я запускаю gcc -version в оболочке, он выбирает только gcc macports. Я изменил компилятор и компоновщик на /opt/local/bin/gcc-mp-4.8 явно в свойствах проекта. В этом случае я получаю ошибку сборки stdio.h не найден. В качестве альтернативы, если я просто использую gcc, я получаю сообщение об ошибке omp.h, поскольку я не удалялся из пути include. Что я должен делать дальше? –
Вы установили инструменты командной строки Xcode с помощью 'xcode-select -install'? Эта команда также устанавливает необходимые файлы include (например, 'stdio.h') в'/usr/include'. –