프로젝트 2단계 - 구현(1부)

소개



안녕하세요 Tecca입니다. 이 게시물은 SPO600 프로젝트 2단계를 위한 것입니다. 자세한 내용은 확인하시기 바랍니다. 프로젝트의 패키지 libjpeg-turbo에서 SVE2 지원으로 자동 벡터화를 추가하기로 결정했습니다.

2단계: 환경 설정



먼저 Unix 환경에 맞게 패키지를 설정하고 프로젝트를 컴파일하여 자동 벡터화를 구현하기 전에 예상대로 모든 것이 실행되도록 합니다.

저장소를 복제한 후 먼저 모든 파일을 살펴보겠습니다.



BUILDING.md 파일 내에서 Unix 시스템용 프로젝트를 빌드하기 위해 수행해야 하는 빌드 절차를 알려줍니다. 모든 것이 제대로 작동하는지 확인하기 위해 먼저 기본 플래그로 빌드하겠습니다.



cmake -G"Unix Makefiles"


위의 빌드 절차 명령을 실행한 후:




기본 컴파일러 플래그 = -03 -DNDEBUG에 주목하십시오. 이는 해당 최적화 수준에서 모든 일반 최적화를 허용함을 알려줍니다.

-DNDEBUG에 대해 궁금한 경우를 대비하여 실제로는 assert()를 비활성화하는 데 사용됩니다. 소스 코드의 or가 포함된 지점에서 매크로 NDEBUG가 매크로 이름으로 정의되어 있으면 assert는 아무 작업도 수행하지 않습니다. 약간의 조사 후 일반적으로 사람들은 릴리스/디버그 스위치를 알리기 위해 이를 사용합니다.

Resource

명령make을 실행하여 프로젝트를 빌드해 보겠습니다.

make -j$((`nproc`+1))

-j는 병렬로 실행할 작업 수를 나타냅니다. nproc는 시스템의 코어 수를 반환합니다. 틱으로 감싸면 nproc 명령이 먼저 실행되고 숫자를 반환하며 해당 숫자가 make로 전달됩니다. 이 경우 더 빠른 컴파일 시간을 위해 권장 사항에 따라 core-count + 1을 사용했으며 모든 코어가 로드되었는지 확인했습니다. 코어 정의를 사용하여 core-count+1에서 core-count*2까지 범위를 사용할 수 있습니다. 그래서 -j$(( nproc +1)) 이 시스템에 있는 코어 수 + 한 번에 병렬로 1개의 작업을 실행한다는 의미입니다.

Source



참고: 저는 16코어 시스템에서 실행 중입니다.



모든 것이 성공적으로 빌드된 것 같습니다. 다음 단계로 이동하기 전에 생성된 실행 파일을 살펴보겠습니다.



녹색 파일은 실행 파일이며 다음 명령을 사용하여 실행 파일만 나열할 수도 있습니다.

find . -executable -type f




usage.txt에는 실행 파일을 사용하는 방법과 용도에 대한 지침이 있습니다. JPEG 파일을 기존 이미지 형식으로 다시 압축 해제하는 djpeg 실행 파일을 사용하겠습니다.

GENERAL USAGE

We provide two programs, cjpeg to compress an image file into JPEG format,
and djpeg to decompress a JPEG file back into a conventional image format.

On most systems, you say:
        cjpeg [switches] [imagefile] >jpegfile
or
        djpeg [switches] [jpegfile]  >imagefile


나는 또한 그들이 usage.txt에서 언급한 -fast 옵션을 시도할 것입니다.

 -fast           Select recommended processing options for fast, low
                        quality output.  (The default options are chosen for
                        highest quality output.)  Currently, this is equivalent
                        to "-dct fast -nosmooth -onepass -dither ordered".


djpeg를 테스트하기 위해/testimages 디렉토리의 테스트 이미지를 사용할 것입니다.


명령어 실행 후

./djpeg -fast ./testimages/testimgint.jpg > decompressed.pgm





testimgint.jpg 파일에서 새로운 압축 해제된 pgm 파일을 얻었습니다!



압축을 푼 pgm 파일과 원본 jpg 파일의 크기를 비교하면 늘어난 크기에서 djep이 성공적으로 실행되었음을 알 수 있습니다.

결론



이 포스트에서는 성공적으로 환경을 설정하고 Unix 시스템에서 옵션(-fast)을 사용하여 실행 파일(djpeg) 중 하나를 실행했습니다. 곧 다음 포스트에서 자동 벡터화 구현으로 넘어갈 것입니다.

좋은 웹페이지 즐겨찾기