Skip to content

JayTwoLab/cmake-openmp-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

cmake-openmp-app

개요

이 저장소는 OpenCV와 OpenMP를 사용해 병렬 이미지 처리를 시연하는 간단한 C++ 예제입니다. 빌드 구성은 CMake를 사용하며, Windows(MSVC + vcpkg)와 Unix 계열(Linux/macOS)을 모두 고려한 설정을 포함합니다.

프로그램은 4K 크기(2160x3840)의 테스트 이미지를 생성하여 OpenMP 병렬 for 루프로 그레이스케일 변환을 수행하고, OpenMP 관련 정보와 처리 시간을 출력합니다.

주요 기능

  • OpenMP 병렬 처리를 사용한 행(row) 단위 그레이스케일 변환
  • OpenCV를 이용한 이미지 데이터 구조 사용
  • Windows(MSVC)용 vcpkg 정적 링크 설정 예시 포함

요구 사항

  • CMake 3.15 이상
  • C++17 호환 컴파일러
    • Windows: MSVC (Visual Studio 2019/2022 등) 권장
    • Linux/macOS: GCC 또는 Clang
  • OpenCV (CMake에서 find_package로 사용)
  • OpenMP 지원 (컴파일러/플랫폼에 따라 설정 필요)

빌드 & 실행

Windows (MSVC + vcpkg, x64 static triplet 예시):

mkdir build
cd build
cmake .. -G "Visual Studio 17 2022" -A x64
cmake --build . --config Release
# 실행 (Release 구성)
.\Release\my_program.exe

참고: CMakeLists.txt는 Windows에서 사용자 프로필에 설치된 vcpkg 툴체인을 자동으로 참조하도록 설정되어 있습니다. vcpkg로 OpenCV를 설치할 때는 x64-windows-static 트리플렛을 사용하도록 권장합니다.

Linux / macOS:

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release
./my_program

Unix 환경에서는 find_package(OpenMP REQUIRED)가 활성화되어 OpenMP를 링크합니다. 컴파일러가 OpenMP를 지원하지 않으면 _OPENMP 매크로가 정의되지 않아 병렬 코드가 비활성화될 수 있습니다.

실행 결과 예시

  • 프로그램 시작 시 OpenMP 사용 여부와 _OPENMP 상수 값을 출력
  • 병렬 처리 중 일부 행의 스레드 ID 로그 출력
  • 전체 처리 시간(초) 출력 및 결과 이미지의 채널 수 출력

파일 구성

  • CMakeLists.txt : 빌드 스크립트 (Windows / Unix 분기 포함)
  • main.cpp : 샘플 애플리케이션 (OpenMP + OpenCV 사용)

참고

  • Windows에서 정적 런타임(/MT)과 함께 vcpkg 정적 링크를 사용하도록 CMake 설정이 되어 있습니다. 필요에 따라 VCPKG_TARGET_TRIPLET이나 툴체인 설정을 조정하세요.
  • OpenCV 설치나 플랫폼별 세부 설정 관련 문제는 CMake 출력과 컴파일러 문서를 참고하세요.

원하시면 README에 빌드 예시를 더 추가하거나, 실행 결과 스크린샷과 샘플 이미지 저장 기능을 추가해 드리겠습니다.

About

🇰🇷 cmake openmp 예제

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors