January 16, 2017

Java에서 Aparapi를 이용하여 GPU 활용해보기

AMD에서 개발한 Aparapi를 이용하면 Java에서도 굉장히 편하게 GPU를 활용해볼 수 있다. 먼저 AMD APP SDK (AMD OpenCL™ Accelerated Parallel Processing) 를 설치해보자: 다운로드
 % bzip2 -d AMD-APP-SDKInstaller-v3.0.130.136-GA-linux64.tar.bz2 
 % tar xvf AMD-APP-SDKInstaller-v3.0.130.136-GA-linux64.tar 
 % sh ./AMD-APP-SDK-v3.0.130.136-GA-linux64.sh 
 % ls ~/AMDAPPSDK-3.0/include/
기타 설정은 https://wiki.tiker.net/OpenCLHowTo 에서 확인할 수 있고, 최종 설치가 잘 완료 되었는지 확인을 위해서 tools-master를 사용해보면 devices 정보가 나온다. 실험장비에는 Tesla k80이 총 16개 꽂혀있다.
 $ curl https://codeload.github.com/hpc12/tools/tar.gz/master | tar xvfz -
 $ cd tools-master
 $ make OPENCL_INC=/home/edward.yoon/AMDAPPSDK-3.0/include/
 $./print-devices 
./print-devices: /usr/local/cuda-7.5/lib64/libOpenCL.so.1: no version information available (required by ./print-devices)
platform 0: vendor 'NVIDIA Corporation'
  device 0: 'Tesla K80'
  device 1: 'Tesla K80'
  device 2: 'Tesla K80'
  device 3: 'Tesla K80'
  device 4: 'Tesla K80'
  device 5: 'Tesla K80'
  device 6: 'Tesla K80'
  device 7: 'Tesla K80'
  device 8: 'Tesla K80'
  device 9: 'Tesla K80'
  device 10: 'Tesla K80'
  device 11: 'Tesla K80'
  device 12: 'Tesla K80'
  device 13: 'Tesla K80'
  device 14: 'Tesla K80'
  device 15: 'Tesla K80'
이제 Aparapi를 써보자. Aparapi도 바이너리 릴리즈가 없고 직접 github source build 해야한다.
 $ git clone https://github.com/aparapi/aparapi.git
 $ ant -Dapp.sdk.dir=/home/edward.yoon/AMDAPPSDK-3.0/
빌드가 완료되면, 간단한 행렬 곱셈 프로그램을 구현해서 바로 실험해볼 수 있다. 코드가 1차 배열인 이유는 Aparapi는 다차배열 처리를 지원하지 않기 때문.
실험에서는 빠른 테스트를 위해 복붙 from https://vasanthexperiments.wordpress.com/ 100x 정도를 기대했지만, 10x 정도까지는 가속을 해주는 것으로 보인다.
edward.yoon@dl03:~$ javac -g -classpath .:/home/edward.yoon/aparapi.jar Test.java
edward.yoon@dl03:~$ java -classpath ./:/home/edward.yoon/aparapi.jar Test
Time taken for kenel execution in GPU mode is :43320
Time taken for kenel execution in Sequential CPU mode is :342491

No comments:

Post a Comment