How to apply Multi threading

Autotools

Autotools는 autoconf, automake, libtool 도구들로 구성되어 있는 build system 입니다. 대부분의 GNU 프로그램들은 Autotools를 사용해 Build 환경을 구성합니다. 사용자 입장에서는 다음의 명령어로 소스 패키지를 컴파일 하고 설치할 수 있는데, 이러한 빌드 환경을 제공하는 것이 Autotools의 역할입니다.

./configure 스크립트는 현재 시스템에 어떤 프로그램과 라이브러리가 설치되어 있는지를 분석해 Makefile을 생성합니다. 만약 빌드시 필요한 라이브러리가 없다면 사용자에게 로그를 통해 필요한 정보를 알려줍니다. 이는 사용자 입장에서 꽤 유용할 수 있는데 굳이 많은 시간이 소요되는 빌드를 하지 않고도 필요한 정보를 얻을 수 있기 때문입니다. 그리고 ./configure의 옵션을 이용해 빌드시 사용되는 환경변수를 설정하거나 다양한 플랫폼을 지원하는 Makefile을 생성할 수 있습니다.

make 는 실제로 소스를 컴파일하는 명령어입니다. make install은 make 명령어를 통해 빌드된 바이너리와 라이브러리를 prefix(configure 스크립트의 옵션 중 하나)로 지정된 폴더에 설치하는 명령어입니다.

현재 개발중인 소스에 Autotools를 적용하려면 다음의 두 파일을 작성해야 됩니다.

‘Makefile.am’                 An input to automake 
‘configure.ac’                 An input to autoconf

Makefile.am은 automake 명령어의 입력으로 사용되는데, automake는 Makefile.am을 기반으로 Makefile.in 파일을 생성합니다. Makefile.in은 Makefile을 생성하기위한 템플릿이라고 보면 될 것 같습니다.

configure.ac는 autoconf 명령어의 입력으로 사용되는 파일입니다. 내부적으로 복잡한 과정을 거치지만 결과적으로 configure 스크립트를 생성하게 됩니다. configure.ac의 경우 autoscan 이라는 명령어를 통해 configure.scan 이라는 기본 파일을 생성할 수 있습니다. 일반적으로 configure.scan 파일을 configure.ac로 복사한 후 필요한 옵션들을 추가하는 방법을 사용합니다.

명령어

Openmp

쓰레드는 master thread에서 선택한 thread 갯수만큼 slave thread를 fork해서 만들고 이후 join으로 다시 원래 master thread로 복귀한다.

사용할때는 <omp.h>를 포함해주고 #pragma omp parallel 아래에 있는 것에대해 thread 가 생성된다.

Makefile

complie option에 openmp 라이브러리를 사용하겠다고 명시해줘야한다.

그래서 source가 cpp인경우

프로그램이름_LDFLAGS=-fopenmp

프로그램이름_CPPFLAGS=-fopenmp

두가지 옵션을 설정해주면 성공적으로 gcc(g++) 컴파일 시 -fopenmp가 같이 뜨는 것을 알 수 있다.

Author: rcvlab

RCV연구실 홈페이지 관리자 입니다.

1 thought on “How to apply Multi threading

  1. 기존 사용하는 코드에서는 자동으로 Multi Threading이 이뤄지고 있어서 이러한 부분들은 모르고 있었는데 새로운 내용을 알려주셔서 감사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다