Computing Basics

Mac OS OpenMP 설치, 사용하기

dxwny 2024. 10. 10. 23:20

OpenMP ( Open Multi-Processing )란?

다중코어 환경에서 병렬 프로그래밍을 지원하는 API입니다.

 

macOS에 OpenMP를 설치하기 위해 먼저 homebrew를 설치해야합니다.

*Homebrew는 macOS와 Linux에서 사용할 수 있는 패키지 관리 시스템입니다.
터미널에서 Homebrew 명령어를 통해 여러 가지 소프트웨어를 설치하고 관리할 수 있게 합니다.

 

homebrew 설치 확인 명령어

brew --version

 

Homebrew 설치 명령어 

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

 

OpenMP library 설치 명령어

brew install libomp

 

환경변수 추가하기

* XXX/YYY같은 부분은 limomp 과정 중 터미널 출력에서 해당 경로를 찾을 수 있으니 개인 경로에 맞추어 작성.

* nano 편집기 이외에도 vi 등 사용 무관

cd ~ // 홈디렉토리로 이동
nano .zshrc // nano 편집기를 사용하여 .zshrc 파일 오픈

export PATH=/opt/homebrew/bin:$PATH // 애플 실리콘에서 brew 명령어를 찾지 못하는 현상 대비

export C_INCLUDE_PATH=/opt/XXX/YYY/include:$C_INCLUDE_PATH
export LIBRARY_PATH=/opt/XXX/YYY/lib:$LIBRARY_PATH

 

- PATH - 실행 파일을 찾는 경로를 지정하는 환경변수

- C_INCLUDE_PATH - C 컴파일러가 헤더 파일을 찾을 때 사용하는 경로를 지정하는 환경변수

- LIBRARY_PATH - 컴파일 시 필요한 라이브러리 파일을 찾을 때 사용하는 경로를 지정하는 환경변수

 

사용 방법 

컴파일 시 플래그 표시하면 open mp 사용하여 다중코어 환경에서 병렬 프로그래밍을 지원

macOS (Darwin)의 경우, -Xpreprocessor -fopenmp 플래그를 사용하여 OpenMP를 활성화하고, 라이브러리 연결을 위해 -lomp를 추가

 

gcc 컴파일러 사용 시 makefile 예시 ( 플래그 명시, 라이브러리 옵션 설정 )

CFLAGS += -Xpreprocessor -fopenmp
CLIBS += -lomp

 

  • CFLAGS += -Xpreprocessor -fopenmp:
    • -Xpreprocessor: 전처리기 옵션을 명시하는 플래그로, 이 플래그가 붙으면 뒤에 오는 -fopenmp가 전처리기 단계에서 실행됩니다.
    • -fopenmp: OpenMP를 활성화합니다.
    • 맥OS에서는 컴파일러(GCC나 Clang)가 OpenMP 지원을 할 때 전처리기 플래그로 이 옵션을 별도로 전달해야 하므로
      -Xpreprocessor를 사용합니다.
  • CLIBS += -lomp: OpenMP 라이브러리 libomp를 링크하기 위한 옵션입니다. 맥OS에서 OpenMP를 사용하려면 이 라이브러리를 명시적으로 연결해야 합니다.

 

이처럼 맥OS에서는 OpenMP를 사용하기 위해

1. limomp 설치 ( homebrew 설치 필요 )

2. 환경변수 등록

3. 컴파일시 omp 사용 명시

3-1. -Xpreprocessor -fopenmp를 컴파일러에 전달하고,

3-2. -lomp로 OpenMP 라이브러리를 연결합니다