====== Singularity를 이용해 vivado 설치하기 ====== 이 문서는 2021년 8월 15일 작성되었습니다. ubuntu 18.04, vivado 2020.1버전 설치를 기준으로 합니다. Xilinx 라이센스상 계정에 가입되어 있어야 설치 프로그램을 다운로드할 수 있습니다. 따라서 singularity 이미지 자체를 배포하는 것은 문제의 소지가 있습니다. Alveo U200 카드 활용을 위한 내용이 포함되어 있습니다. 개요: vivado는 xilinx 개발 환경입니다. 설치할 때 특정 OS 버젼을 맞춰야 하기 때문에 실제 사용중인 서버 등에 설치할 때 까다롭습니다. 컨테이너를 이용하면 운영중인 서버에 영향 없이 사용할 수 있습니다. 컨테이너에는 여러가지 기술이 있지만, singularity는 high performance computing환경에서 많이 사용됩니다. 특히 docker와 달리 이미지를 파일 형태로 배포할 수 있고, 일반 유저 권한으로 실행할 수 있는 점이 편리합니다. 한번 이미지를 생성해 둔 다음에는 sif 파일만 들고 있으면 임의의 OS에서 동일한 리눅스 환경을 재현해 사용할 수 있습니다. ===== 설치 준비를 위한 파일 다운로드 ===== vitis, vivado 등은 xilinx 홈페이지에서 유저 아이디를 입력하고 라이센스 동의 등을 해야 다운로드를 받을 수 있습니다. 아래 링크로 들어갑니다. * https://www.xilinx.com/products/boards-and-kits/alveo/u200.html#gettingStarted {{ :public:docs:2021:singularity_vivado:untitled_1_.png?direct&600 |}} 아래쪽에서 Archive를 클릭하면, 과거 버전들이 보입니다. 여기에서 2020.1을 선택합니다. {{ :public:docs:2021:singularity_vivado:untitled_2_.png?direct&400 |}} {{ :public:docs:2021:singularity_vivado:untitled_3_.png?direct&400 |}} 정리하면 아래와 같이 선택합니다. {{ :public:docs:2021:singularity_vivado:untitled_4_.png?direct&400 |}} 아래쪽 다운로드 가능한 것들은 받아둡니다. {{ :public:docs:2021:singularity_vivado:untitled_5_.png?direct&400 |}} Vitis 2020.1 버전을 다운로드 받습니다. 아래쪽 링크 Donload Vitis Software 링크 사용하거나, 바로 아래 링크를 방문합니다. 들어가면 아래 화면과 같이 나타납니다. Version에서 2020.1을 선택해 들어갑니다. [[https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vitis.html]] {{ :public:docs:2021:singularity_vivado:untitled_6_.png?direct&600 |}} 스크롤해서 내려가서 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 링크 들어가면 로그인 해야 합니다. {{ :public:docs:2021:singularity_vivado:untitled_7_.png?direct&200 |}} 로그인 하고 나면 주소 등의 정보를 자세히 적게 되어 있고, 경우에 따라서는 별도로 동의 버튼을 클릭해야 할 수 있습니다. {{ :public:docs:2021:singularity_vivado:untitled_8_.png?direct&400 |}} 파일들을 준비했으면 한 디렉토리에 모아둡니다. 여기에서는 /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 ===== Singularity로 이미지 만들기 ===== vivado 설치 과정에서 graphic interface를 이용해 마우스를 클릭해가며 옵션을 선택하고 유저 로그인 정보를 다시 입력해야 하기 때문에, 일반적인 컨테이너 이미지를 만드는 과정과는 다르게 직접 조작해 가는 과정이 필요합니다. 여기에서는 **singularity sandbox이미지를 만들어 필요한 설치 작업을 완료한 뒤 sif파일로 다시 export** 하는 방법을 이용했습니다. 전체적으로 보면, - singlularity sandbox 이미지 생성하고 필수 패키지와 드라이버 설치하기 - sandbox image를 write mode로 열어 vivado 수동 설치하기 - 임시 파일 정리하기 - sif 이미지로 정리하기 순서로 진행합니다. ==== 1. Sandbox 이미지 생성하고 필수 패키지와 드라이버 설치 ==== 참고사항: ubuntu 18.04를 설치하는데, 2021년 7월 현재 기본 릴리즈는 18.04.5가 설치됩니다. 그런데 vivado 2020.1 은 18.04.4 LTS까지만 정상 설치가 진행되는 것으로 보입니다. 여기에서는 **/etc/lsb-release 파일을 고쳐 넣어 vivado 설치 프로그램을 속여 진행**합니다. 아래와 같은 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 < 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 ==== 2. Singularity sandbox이미지에 Vivado 설치하기 ==== 다음 단계로 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> 버튼을 눌러 다음으로 진행합니다. | {{:public:docs:2021:singularity_vivado:untitled_9_.png?direct|}} | | 유저 인증이 필요합니다. \\ xilinx 홈페이지 아이디 (이메일주소)와 암호를 입력해 다음 단계로 진행합니다. | {{:public:docs:2021:singularity_vivado:untitled_10_.png?direct|}} | | 동의하고 다음으로 진행.| {{:public:docs:2021:singularity_vivado:untitled_11_.png?direct|}} | 설치 옵션을 선택합니다. 여기에서는 vitis 전체를 설치하도록 했습니다. | | {{:public:docs:2021:singularity_vivado:untitled_12_.png?direct|}} | {{:public:docs:2021:singularity_vivado:untitled_13_.png?direct|}} | 설치 경로를 선택하고 Next> Install 버튼을 클릭해 설치를 시작합니다. | | {{:public:docs:2021:singularity_vivado:untitled_14_.png?direct|}} | {{:public:docs:2021:singularity_vivado:untitled_15_.png?direct|}} | | | {{:public:docs:2021:singularity_vivado:untitled_16_.png?direct|}} | {{:public:docs:2021:singularity_vivado:untitled_17_.png?direct|}} | 설치까지 오랜 시간이 걸립니다. (10MB/s 기준 1시간 소요) ==== 3. 패치 적용하기 ==== 패치가 포함된 압축 파일을 풀고 패치를 적용합니다. 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 | | {{:public:docs:2021:singularity_vivado:untitled_16_.png?direct|}} | {{:public:docs:2021:singularity_vivado:untitled_17_.png?direct|}} | | | {{:public:docs:2021:singularity_vivado:untitled_18_.png?direct|}} | {{:public:docs:2021:singularity_vivado:untitled_19_.png?direct|}} | ==== 4. 임시파일 정리하고 배포용 sif 이미지 만들기 ==== 샌드박스 이미지 내의 임시파일을 정리하고, 배포용 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등을 이용해 장치를 연결하고 개발 환경을 구동할 수 있습니다. {{ :public:docs:2021:singularity_vivado:untitled_20_.png?direct&600 }} ===== 주의점 ===== * singularity version을 3.8.0 을 사용합니다. 예를 들어 singularity 홈페이지의 매뉴얼에 적혀 있는 3.0.3버전에서는 오동작하는 경우가 있습니다./ FATAL: container creation failed: mount error: can't mount image /proc/self/fd/8: failed to mount squashfs filesystem: invalid argument * 실행시에 환경변수 설정이 필요할 수 있습니다. 위의 singularity definition file에서는 locales 패키지ᅟ 설치 후 /etc/locale.gen파일 수정 후 locale-gen 명령어를 실행해 locale추가를 해주었습니다. 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 * 소개: [[https://sylabs.io/docs]] \\ [[https://github.com/sylabs/singularity]] \\ [[https://sylabs.io/guides/3.0/user-guide/quick_start.html]] * 컨테이너 생성: [[https://sylabs.io/guides/3.0/user-guide/build_a_container.html]] * definition 파일 작성: [[https://sylabs.io/guides/3.0/user-guide/definition_files.html#environment]] Vivado 2020.1 설치 * Vivado 2020.1.1 설치 정보: [[https://www.xilinx.com/support/answers/75476.html]] 우분투 리눅스 정보 및 필요 패키지 정보 * 우분투에서 버전 속이기 [[https://askubuntu.com/questions/292866/how-to-fake-ubuntu-version-number-to-applications]] * x11 패키지 설치: [[https://askubuntu.com/questions/213678/how-to-install-x11-xorg]] 기타 정보 * locale문제로 인한 crash 해결 [[https://github.com/potree/PotreeConverter/issues/281]] \\ [[https://wiki.archlinux.org/title/Locale]] \\ [[https://bbs.archlinux.org/viewtopic.php?pid=1914212#p1914212]]