※ solution에 대한 코드는 절대 제공되지 않으며, 수업진행에 필요한 모든 도움은 최영규 교수님의 자료 및 이메일을 참고하길 바랍니다.
1. host app과, xilinx fpga binary 빌드하기
2. FPGA를 구동시키는 AFI 생성해서 버킷에 담아보기
3. FPGA 가속 어플리케이션을 실행해서 fpga를 실행하기
m5 인스턴스 생성하기
f1에서 실행할 afi를 생성가능하고 시뮬레이션이 가능한 환경임. fpga를 직접 실행하지는 못하나, 비싼 f1인스턴스에 비해서 가격이 상당히 저렴한 편
git clone만 초기 실행때 수행하고, 그 뒤로는 sh로 실행만 하면 됩니다.
그 다음은 빌드하는 과정인데, 참고로 소스코드를 afi로 컴파일하는데에는 시간이 꽤 소요됩니다.
host.cpp는 cpu 레벨에서 동작하는 코드, vadd.cpp는 fpga 위에서 동작하는 코드이므로, PCIe릍 통해서 두 코드파일이 연결된다고 생각하면 됩니다.
상세내용은 강의자료 참고하기
s3에 업로드해서 저장할 것입니다.
버킷이름 만들기 (고유이름이라서 전세계에서 고유합니다.)
폴더 이름 만들기
참고로 실제로 폴더 경로로 저장되는게 아닌, 버킷 내 모든 파일은 객체로 저장되어있고, 폴더 분할 저장이 되어있지 않습니다. 즉, 폴더 안에 저장을 하면 해당 폴더 이름을 가진 객체가 생기는 구조입니다.
시크릿 키를 생성해서 연결해줍니다.
초기 세팅을 통해서 aws-sdk가 이미 설치되어 있는 환경이므로, 바로 aws configure 실행가능한 것으로 보입니다.
위에서 언급한 시간이 꽤 걸리는 컴파일이 끝나면, 새로운 파일이 존재합니다.
해당 xcl binary 파일을 aws xcl binary 파일로 변환해줍니다. 이 또한 시간이 걸리게 되는데 이는 완료 과정을
다음과 같이 확인 가능합니다.
awsxclbin으로 변환된 파일을 버킷으로 복사(이동) 해줍니다.
이제 만들어진 afi 파일에 대해서
실행해줄 컴퓨터 하드웨어를 지닌 f1 intance를 생성해줍니다.
f1 인스턴스에서도 초기 세팅이 필요합니다.
세팅, 파일 불러오기, af1 실행의 과정을 다음과같이 실행합니다.
이 때, 주의할 점이 있습니다.
1. 컴파일한 m5의 ami 버전과,실행하는 f1의 버전이 서로 호환되는가(중요)
2. f1을 생성할 때, 특정국가(한국 포함)에서는 f1이 생성이 불가하다는 점
다음과 같이 결과가 나오게 됩니다.
추가적으로
1. 실행시간을 출력
2. 소숫점 연산
을 수행 가능하게 코드를 개선해봅시다.
aws를 이용하는 것이 유료서비스인 만큼, 필요이상의 지출을 할 필요가 없으므로 다음과 같은 점을 참고하면 좋습니다.
무엇보다 가장 중요한 것은 인스턴스(특히 f1)을 사용하지 않을때 사용을 종료할 것!