ubuntu20.04で起動時にxmodmapを反映させる
xmodmapでキーマップを変更できる。 しかし.profileや自動実行にxmodmapを記述しても反映されなかった。 下記のshを自動起動するアプリケーションに追加することで解決した。
~/.my_startup.sh
#!/bin/bash xmodmap .Xmodmap
ec2で立てたubuntuのインスタンスにubuntuからリモートデスクトップトップで接続する
前提条件
クライアント環境
- OS:ubuntu 20.04
- リモートデスクトップクライアント:remmina
ターゲット環境
- OS:Ubuntu Server 18.04 LTS
基本的にこちらを参照すればできると思います。
AWS EC2でデスクトップ環境をつくる ~ Ubuntu Server 18.04 LTS GNOME編~
aws設定メモ
- セキュリティグループにはリモートデスクトップのためRDPを追加する
- セキュリティグループのソースにはマイIPを設定して自分のグローバルIPからの接続のみ許可する
- ストレージの初期値が8GBなので、無料枠であれば最大の30GBにする
- 楽天モバイルからのテザリングで接続していると毎回ローカルのIPアドレスが変わるので、都度マイIPを設定する
- 楽天モバイルからのテザリングで接続していると、なぜかマイIPでフィルタした状態ではRDPで接続できない
- お金がかかるので使用しないときはインスタンスを停止する
ターゲットの環境セットアップ
user_nameは設定するユーザーネームに書き換える
$ sudo apt update -y $ sudo apt upgrade -y $ sudo adduser user_name $ sudo gpasswd -a user_name sudo $ sudo apt -y install ubuntu-desktop $ sudo apt install -y xrdp $ xrdp -v $ sudo sed -e 's/^new_cursors=true/new_cursors=false/g' -i /etc/xrdp/xrdp.ini $ sudo systemctl restart xrdp $ sudo systemctl enable xrdp.service $ sudo systemctl enable xrdp-sesman.service $ systemctl list-unit-files -t service | grep xrdp $ su user_name $ cd ~ $ DESKTOP=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop $ cat <<EOF > ~/.xsessionrc > export GNOME_SHELL_SESSION_MODE=ubuntu > export XDG_CURRENT_DESKTOP=ubuntu:GNOME > export XDG_DATA_DIRS=${DESKTOP} > export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg > EOF $ cat <<EOF | sudo tee /etc/polkit-1/localauthority/50-local.d/xrdp-color-manager.pkla >[Netowrkmanager] >Identity=unix-user:* >Action=org.freedesktop.color-manager.create-device >ResultAny=no >ResultInactive=no >ResultActive=yes >EOF $ sudo systemctl restart polkit
クライアント側の設定
ubuntuならremmina、windowsならインストール済のリモートデスクトップクライアントを使用する
どちらも接続先に["インスタンスのパブリックIPv4アドレス":3389]として接続する
無料枠のインスタンス(t2.micro)だと、体感2fps程度の遅さである。g4dn.xlargeだと体感4fps程度であるが、 remminaのリモートデスクトップの設定->基本設定->color depthを「GFX RFX(32bpp)」から「High color(15bpp)」に変更すると 体感10fps程度まで改善した。
Ultra96 v2向けVitis AIのチューニング方針について
某エッジコンテストへの参加を検討してます。
FPGA向けの推論AIであるvitis AIのチューニングを行うのですが、よく分かっていないので、 どこをチューニングするべきかの方針をまとめてみました。
@startuml left to right direction [vivado] --> fpga_base_platform note left of vivado : to tune fpga project fpga_base_platform --> vitis_platform [Petalinux] --> fpga_linux fpga_linux --> vitis_platform note left of Petalinux : to tune target linux [vitis] --> vitis_platform note left of vitis : to tune hardware IP(DPU) image_data -->[vitis_AI] network_model --> [vitis_AI] note left of network_model : to tune model. [vitis_AI] --> model note left of model : .elf file vitis_platform --> [SD card] model --> [SD card] @enduml
開発の流れとしては大まかには以下のとおりです
モデルの学習を完了させる
vitis AIにおけるセグメンテーションのサンプルについて
GitHub - Xilinx/Vitis-AI: Vitis AI is Xilinx’s development stack for AI inference on Xilinx hardware platforms, including both edge devices and Alveo cards.FPGA向けの設計を行う
vivado、petalinux、vitisを一括インストールしてvitis_plattoformを生成するスクリプトと、vitis aiのUltra96 v2向け設定について
Ultra96V2向けVitis AI(2019.2)の組み立て方。 - Qiita
vivado、petalinux、vitisの解説と設定について
Ultra96用Vitisプラットフォームの作り方(BASE編) - Qiita
マイコン(TI)のflashとRAM領域の使い分けについて
flashにはconstやstaticなどの静的変数が使われる
RAMには普通の変数が使われる
flash32KB,RAM2KBなどRAMが少ない場合はなるべくflashを使うべき
以下のメモリマップのようにflash領域が使用される
MEMORY CONFIGURATION name origin length used unused attr fill ---------------------- -------- --------- -------- -------- ---- -------- SFR 00000000 00000010 00000000 00000010 RWIX PERIPHERALS_8BIT 00000010 000000f0 00000000 000000f0 RWIX PERIPHERALS_16BIT 00000100 00000100 00000000 00000100 RWIX RAM 00000200 00000800 00000056 000007aa RWIX INFOA 00001000 00000400 00000000 00000400 RWIX FLASH 00008000 00007fdc 0000039c 00007c40 RWIX JTAGSIGNATURE 0000ffdc 00000004 00000004 00000000 RWIX ffff INT00 0000ffe0 00000002 00000000 00000002 RWIX INT01 0000ffe2 00000002 00000002 00000000 RWIX INT02 0000ffe4 00000002 00000000 00000002 RWIX INT03 0000ffe6 00000002 00000000 00000002 RWIX INT04 0000ffe8 00000002 00000002 00000000 RWIX INT05 0000ffea 00000002 00000002 00000000 RWIX INT06 0000ffec 00000002 00000002 00000000 RWIX INT07 0000ffee 00000002 00000002 00000000 RWIX INT08 0000fff0 00000002 00000002 00000000 RWIX INT09 0000fff2 00000002 00000002 00000000 RWIX INT10 0000fff4 00000002 00000002 00000000 RWIX INT11 0000fff6 00000002 00000002 00000000 RWIX INT12 0000fff8 00000002 00000002 00000000 RWIX INT13 0000fffa 00000002 00000002 00000000 RWIX INT14 0000fffc 00000002 00000002 00000000 RWIX RESET 0000fffe 00000002 00000002 00000000 RWIX
MODULE SUMMARY Module code ro data rw data ------ ---- ------- ------- .\ msp430i20xx_ta0_01.obj 196 174 6 low_level_init.obj 134 0 0 +--+----------------------------+------+---------+---------+ Total: 330 174 6 C:\ti\ccsv8\tools\compiler\ti-cgt-msp430_18.1.2.LTS\lib\rts430_eabi.lib copy_decompress_lzss.c.obj 124 0 0 lsr16.asm.obj 76 0 0 autoinit.c.obj 66 0 0 lsl16.asm.obj 44 0 0 boot.c.obj 28 2 0 copy_decompress_none.c.obj 18 0 0 memcpy.c.obj 18 0 0 epilog.asm.obj 16 0 0 isr_trap.asm.obj 8 0 0 exit.c.obj 6 0 0 int01.asm.obj 0 2 0 int04.asm.obj 0 2 0 int05.asm.obj 0 2 0 int07.asm.obj 0 2 0 int08.asm.obj 0 2 0 int09.asm.obj 0 2 0 int10.asm.obj 0 2 0 int11.asm.obj 0 2 0 int12.asm.obj 0 2 0 int13.asm.obj 0 2 0 int14.asm.obj 0 2 0 startup.c.obj 2 0 0 +--+----------------------------+------+---------+---------+ Total: 406 24 0 Stack: 0 0 80 Linker Generated: 0 15 0 +--+----------------------------+------+---------+---------+ Grand Total: 736 213 86
Arty S7の環境構築と書き込み時のHWSVについて
プロジェクトの作成について
New Projectにて以下を設定
Project type:RTL
Default part:Boards->Arty S7-50
プログラム作成からbitファイル作成まで
Project ManagerからAdd sourceをクリックし以下を設定
Add source:Add or create designsources
Add or create designsources:Create fileにてVHDLファイルを作成
IOを以下のように配置
作成したVHDLを開き、以下のように記述
entity tmp is Port ( a : in STD_LOGIC; b : out STD_LOGIC); end tmp; architecture Behavioral of tmp is begin b<=a; end Behavioral;
Run synthesisをクリック
問題なければOpen synthesized designをクリック
以下のようにピンを設定
G15はArty S7のBTN0に相当
H15はArty S7のLED5に相当
保存し、Run Implementationをクリック
問題なければGenerate Bitstreamをクリック
書き込みについて
FPGAをPCに接続する
書き込むのでOpen Hardware ManagerにてAuto connectをクリック
FPGAが見つからず、No hardware target is openと表示されたら、Vivadoのインストーラを用いてHardware Serverをインストール
Hardware Serverを起動した状態でAuto connectするとFPGAが見つかる
Program deviceにて書き込む