1인 과제로 슬라이드 퍼즐을 제작했습니다. 해당 프로젝트는 C와 JAVA를 이용해 개발했으며, C를 이용해 GPU 가속을 통한 퍼즐 제작, JAVA를 이용해 애플리케이션 개발을 담당했습니다. 그리고 이를 JNI를 이용해 C로부터 계산된 퍼즐의 정보를 JAVA로 넘겨 애플리케이션 화면에 띄워줄 수 있도록 구현했습니다.
프로그램의 실행방식은 다음과 같습니다.
- JAVA를 이용한 슬라이드 퍼즐 구현
- JNI를 통해 C에서 슬라이드퍼즐 정보를 다룰 수 있도록 함
- C에서 커널로 변경해야 할 퍼즐이미지 정보를 전달함
- 커널에서 GPU를 통한 연산을 수행
- 수행한 결과를 커널에서 C로 정보를 전달함
- 전달받은 정보를 JNI를 통해 JAVA 코드로 변환
- JAVA를 이용한 애플리케이션 화면 구성
SlidePuzzle.cl 파일을 통해 GPU를 통한 연산이 어떻게 이뤄지는지 확인할 수 있습니다. 교환되는 슬라이드퍼즐 정보는 1부터 N*N 까지 순서대로 주어진 N by N 행렬의 값이고, src로부터 받은 사진의 RGBA 정보와 퍼즐정보를 조합하여 섞여진 슬라이드퍼즐 정보를 dst로 출력합니다.
실습에 사용된 HW는 한백 peripheral module(m2)이고, SW에서 사용한 HW 종류는
- CAMERA
- LED
- 7-segment
- GPIO
- 디스플레이
총 5가지입니다.
해당 기능은 각각 src/main 폴더에서 각각의 c와 java파일로 구현되어있는 것을 확인할 수 있습니다.