개요: vivado는 xilinx 개발 환경입니다. 설치할 때 특정 OS 버젼을 맞춰야 하기 때문에 실제 사용중인 서버 등에 설치할 때 까다롭습니다. 컨테이너를 이용하면 운영중인 서버에 영향 없이 사용할 수 있습니다.
컨테이너에는 여러가지 기술이 있지만, singularity는 high performance computing환경에서 많이 사용됩니다. 특히 docker와 달리 이미지를 파일 형태로 배포할 수 있고, 일반 유저 권한으로 실행할 수 있는 점이 편리합니다.
한번 이미지를 생성해 둔 다음에는 sif 파일만 들고 있으면 임의의 OS에서 동일한 리눅스 환경을 재현해 사용할 수 있습니다.
vitis, vivado 등은 xilinx 홈페이지에서 유저 아이디를 입력하고 라이센스 동의 등을 해야 다운로드를 받을 수 있습니다.
아래 링크로 들어갑니다.
아래쪽에서 Archive를 클릭하면, 과거 버전들이 보입니다. 여기에서 2020.1을 선택합니다.
Vitis 2020.1 버전을 다운로드 받습니다. 아래쪽 링크 Donload Vitis Software 링크 사용하거나, 바로 아래 링크를 방문합니다. 들어가면 아래 화면과 같이 나타납니다. Version에서 2020.1을 선택해 들어갑니다. https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vitis.html
스크롤해서 내려가서 Xilinx Unified Installer 2020.1: Linux Self Extracting Web Installer를 선택해 다운로드 받습니다. 아래쪽 링크를 이용해도 됩니다. https://www.notion.so/hepkhu/Singularity-vivado-29ba053f4dd84e07a696866f653102bb#0eb845e98ae647cc83bb2aaf72350d09
추가 패치를 해서 가능한 디바이스를 추가할 수 있습니다. https://www.notion.so/hepkhu/Singularity-vivado-29ba053f4dd84e07a696866f653102bb#5ee7e6bec22a4d44bd7dee300688eb7b
로그인 하고 나면 주소 등의 정보를 자세히 적게 되어 있고, 경우에 따라서는 별도로 동의 버튼을 클릭해야 할 수 있습니다.
파일들을 준비했으면 한 디렉토리에 모아둡니다. 여기에서는 /store/sw/install/xilinx/2020.1 디렉토리를 준비해 넣었다고 합시다.
# ls -alh /store/sw/install/xilinx/2020.1/ total 11G drwxr-xr-x 2 root root 4.0K Jul 20 23:02 . drwxr-xr-x 4 root root 4.0K Jul 20 23:01 .. -rwxr-xr-x 1 root root 117M Jul 20 21:53 Xilinx_Unified_2020.1_0602_1208_Lin64.bin -rw-r--r-- 1 root root 11G Jul 20 23:01 Xilinx_Vivado_Vitis_Update_2020.1.1_0805_2247.tar.gz -rw-r--r-- 1 root root 71M Jul 20 22:45 xilinx-u200-xdma-201830.2-2580015_18.04.deb -rw-r--r-- 1 root root 541M Jul 20 22:46 xilinx-u200-xdma-201830.2-dev-2580015_18.04.deb -rw-r--r-- 1 root root 7.8M Jul 20 23:02 xrt_202010.2.6.655_18.04-amd64-xrt.deb
vivado 설치 과정에서 graphic interface를 이용해 마우스를 클릭해가며 옵션을 선택하고 유저 로그인 정보를 다시 입력해야 하기 때문에, 일반적인 컨테이너 이미지를 만드는 과정과는 다르게 직접 조작해 가는 과정이 필요합니다. 여기에서는 singularity sandbox이미지를 만들어 필요한 설치 작업을 완료한 뒤 sif파일로 다시 export 하는 방법을 이용했습니다.
전체적으로 보면,
순서로 진행합니다.
아래와 같은 singularity 설치 정의 파일을 생성합니다. 참고로 XRT를 직접 컴파일 해 설치할 수도 있습니다.
Bootstrap: docker From: ubuntu:18.04 %files /store/sw/install/xilinx/2020.1 /install #/store/sw/install/xilinx/XRT/build/Release /install/XRT_Release %post apt-get update apt-get -y install x11-apps udev systemd xorg xauth openbox locales cd /install apt-get install -y ./xrt_202010.2.6.655_18.04-amd64-xrt.deb apt-get install -y ./xilinx-u200-xdma-201830.2-2580015_18.04.deb apt-get install -y ./xilinx-u200-xdma-201830.2-dev-2580015_18.04.deb #cd /install/XRT_Release #apt-get install -y ./xrt_202110.2.11.0_18.04-amd64-container.deb #apt-get install -y ./xrt_202110.2.11.0_18.04-amd64-xbflash.deb #apt-get install -y ./xrt_202110.2.11.0_18.04-amd64-xrt.deb cat > /etc/lsb-release <<EOF DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS" EOF sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g' /etc/locale.gen locale-gen %environment source /store/sw/Xilinx/Vivado/2020.1/settings64.sh %runscript /bin/bash
singularity명령어를 이용해 이미지를 생성합니다. xilinx_2020.1.1_u200_ubuntu18.04 디렉토리가 생성되며 여기에 샌드박스 이미지가 만들어집니다. (superuser로 실행해야 함)
# singularity build --sandbox xilinx_2020.1.1_u200_ubuntu18.04 xilinx.def INFO: Starting build... Getting image source signatures Copying blob e7ae86ffe2df [--------------------------------------] 0.0b / 0.0b Copying config a84320b679 done Writing manifest to image destination Storing signatures 2021/07/21 01:59:15 info unpack layer: sha256:e7ae86ffe2df0787131a4c49ace1b018fd38d62929b007d86bdd1f825e56a852 INFO: Copying /store/sw/install/xilinx/2020.1 to /store/sw/singularity/xilinx/build-temp-677224236/rootfs/install INFO: Running post scriptlet + apt-get update Get:1 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB] Get:2 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB] .... (Reading database ... 91996 files and directories currently installed.) Preparing to unpack .../xilinx-u200-xdma-201830.2-dev-2580015_18.04.deb ... Unpacking xilinx-u200-xdma-dev (201830.2-2580015) ... Setting up xilinx-u200-xdma-dev (201830.2-2580015) ... + cat INFO: Adding environment to container INFO: Adding runscript INFO: Creating sandbox directory... INFO: Build complete: xilinx_2020.1.1_ubuntu18.04
다음 단계로 vivado를 설치합니다. (볼드 표시한 부분을 유저가 직접 입력)
# singularity run -w xilinx_2020.1.1_u200_ubuntu18.04 WARNING: Skipping mount /etc/localtime [binds]: /etc/localtime doesn't exist in container source: open /store/sw/Xilinx/Vivado/2021.1/settings64.sh: no such file or directory Singularity> cd /install/ Singularity> ls Xilinx_Unified_2020.1_0602_1208_Lin64.bin xilinx-u200-xdma-201830.2-dev-2580015_18.04.deb Xilinx_Vivado_Vitis_Update_2020.1.1_0805_2247.tar.gz xrt_202010.2.6.655_18.04-amd64-xrt.deb xilinx-u200-xdma-201830.2-2580015_18.04.deb Singularity> ./Xilinx_Unified_2020.1_0602_1208_Lin64.bin Verifying archive integrity... All good. Uncompressing Xilinx Installer...........................................................................................................
오른쪽과 같은 창이 뜹니다. 2020.2 버전이 새로 나왔다고 안내가 나오지만 여기에서는 선택하지 않고 continue를 눌러 다음 단계로 진행합니다. Next> 버튼을 눌러 다음으로 진행합니다. | |
유저 인증이 필요합니다. xilinx 홈페이지 아이디 (이메일주소)와 암호를 입력해 다음 단계로 진행합니다. | |
동의하고 다음으로 진행. |
설치 옵션을 선택합니다. 여기에서는 vitis 전체를 설치하도록 했습니다.
설치 경로를 선택하고 Next> Install 버튼을 클릭해 설치를 시작합니다.
설치까지 오랜 시간이 걸립니다. (10MB/s 기준 1시간 소요)
패치가 포함된 압축 파일을 풀고 패치를 적용합니다.
xsetup을 실행해 패치를 적용합니다.
Singularity> cd /install Singularity> tar xzf Xilinx_Vivado_Vitis_Update_2020.1.1_0805_2247.tar.gz Singularity> ls -alh total 11G drwxr-xr-x 3 root root 4.0K Jul 20 17:34 . drwxr-xr-x 24 root root 4.0K Jul 20 17:18 .. -rwxr-xr-x 1 root root 117M Jul 20 16:59 Xilinx_Unified_2020.1_0602_1208_Lin64.bin drwxr-xr-x 8 65673 10115 4.0K Aug 6 2020 Xilinx_Vivado_Vitis_Update_2020.1.1_0805_2247 -rw-r--r-- 1 root root 11G Jul 20 16:59 Xilinx_Vivado_Vitis_Update_2020.1.1_0805_2247.tar.gz -rw-r--r-- 1 root root 71M Jul 20 16:59 xilinx-u200-xdma-201830.2-2580015_18.04.deb -rw-r--r-- 1 root root 541M Jul 20 16:59 xilinx-u200-xdma-201830.2-dev-2580015_18.04.deb -rw-r--r-- 1 root root 7.8M Jul 20 16:59 xrt_202010.2.6.655_18.04-amd64-xrt.deb Singularity> cd Xilinx_Vivado_Vitis_Update_2020.1.1_0805_2247 Singularity> ls bin data lib payload scripts tps xsetup xsetup.exe Singularity> ./xsetup
샌드박스 이미지 내의 임시파일을 정리하고, 배포용 sif 이미지를 생성합니다.
Singularity> rm -rf /install Singularity> exit # **singularity build xilinx_2020.1.1_u200_ubuntu18.04.sif xilinx_2020.1.1_u200_ubuntu18.04** INFO: Starting build... INFO: Creating SIF file... INFO: Build complete: xilinx_2020.1.1_u200_ubuntu18.04.sif
이미지 용량이 크기 때문에 시간이 오래 걸립니다. (원본 78GByte, sif 이미지 생성 후 34GByte)
잘 되었으면 샌드박스 이미지를 삭제하면 됩니다.
singularity를 이용해 구동할 수 있게 되었습니다.
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.2 LTS" $ singularity run xilinx_2020.1.1_u200_ubuntu18.04.sif Singularity> vivado ****** Vivado v2020.1.1 (64-bit) **** SW Build 2960000 on Wed Aug 5 22:57:21 MDT 2020 **** IP Build 2956692 on Thu Aug 6 01:41:30 MDT 2020 ** Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. start_gui
hw_server 나 hardware manager등을 이용해 장치를 연결하고 개발 환경을 구동할 수 있습니다.
FATAL: container creation failed: mount error: can't mount image /proc/self/fd/8: failed to mount squashfs filesystem: invalid argument
Singularity> vivado terminate called after throwing an instance of 'std::runtime_error' what(): locale::facet::_S_create_c_locale name not valid /store/sw/Xilinx/Vivado/2020.1/bin/loader: line 286: 665953 Aborted (core dumped) "$RDI_PROG" "$@" Singularity> LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 vivado ****** Vivado v2020.1.1 (64-bit) **** SW Build 2960000 on Wed Aug 5 22:57:21 MDT 2020 **** IP Build 2956692 on Thu Aug 6 01:41:30 MDT 2020 ** Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. start_gui
* Singularity로 Alveo를 빌드할 때 문제점
- ho-oh서버에 Alveo U200의 License파일은 /opt/xilinx/dsa폴더 속에 존재한다. 하지만 singularity를 통해 작업환경을 구축할 경우, Alveo License파일이 존재하지 않아 빌드할 수 없다.
* Vitis Serial Terminal에서의 Port 인식 문제 및 해결
- 일반 User권한으로 Vitis Serial Terminal에서 Alveo와 통신을 시도하면 권한에 의해 Port검색이 되지 않음.
- root권한으로 Vitis를 실행하거나, /dev하위의 ttyUSB폴더에 일반 User권한 부여
* Singularity 파일 실행 시 Display Error
- singularity run 실행 전 터미널에서 xhost +
- singularity run 실행 후 터미널에서 xhost + 입력 후, xclock으로 디스플레이 확인
* 구 버전 Vivado Singularity파일 생성 시 주의점 (2018.x)
- 최신 버전 Vivado(2020.x 이후 버전 확인)는 설정에서 Board File들의 위치를 지정해 줄 수 있지만, 구버전의 경우 설치 경로에 보드 파일이 존재해야함. (~/Xilinx/Vivado/2018.x/data/board/board_files)
- Singularity build 전 위 경로에 미리 Borad Files(XilinxBoardStore)를 미리 넣어 놔야 함.
Singularity container
Vivado 2020.1 설치
우분투 리눅스 정보 및 필요 패키지 정보
기타 정보