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 라이브러리를 연결합니다