potblog

技術メモとかガジェットレビューとか

ec2で立てたubuntuのインスタンスにubuntuからリモートデスクトップトップで接続する

前提条件

クライアント環境

ターゲット環境

基本的にこちらを参照すればできると思います。

AWS EC2でデスクトップ環境をつくる ~ Ubuntu Server 18.04 LTS GNOME編~

aws設定メモ

ターゲットの環境セットアップ

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程度まで改善した。

1年半S&P500をナンピン買いした結果と、もし積み立てていた場合との比較

nisa枠にて投資信託を2019/8/19から始めていました。

証券会社:SBI
商品:三菱UFJ国際-eMAXIX Slim米国株式(S&P500)
買い方:ナンピン買い

f:id:potblog:20210103130456p:plain
2019/8/19~2020/12/31のナンピン買いまとめ

86万円が99万円になりました。

ここで、一般的にはナンピン買いよりも積み立てのほうが良いらしいです。約86万円/17か月=50,598円を毎月の月初めに積み立てた場合の結果を以下に示します。

f:id:potblog:20210103131328p:plain
2019/8/1~2020/12/31に毎月積み立てていた場合まとめ

86万円が100万円になりました。

評価損益としては積み立てた方が10%ほど良い成績ですね。2021年は積み立てにします。

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

開発の流れとしては大まかには以下のとおりです

  1. モデルの学習を完了させる
    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.

  2. FPGA向けの設計を行う
    vivado、petalinux、vitisを一括インストールしてvitis_plattoformを生成するスクリプトと、vitis aiのUltra96 v2向け設定について
    Ultra96V2向けVitis AI(2019.2)の組み立て方。 - Qiita
    vivado、petalinux、vitisの解説と設定について
    Ultra96用Vitisプラットフォームの作り方(BASE編) - Qiita

FPGAデザインコンテストの構成検討

これに参加しようか検討してます。社会人でも参加可能みたいです。

wwp.shizuoka.ac.jp

とりあえず構成を考えてみました。こんな感じかなぁ。

f:id:potblog:20200414215011p:plain

カメラはaitendoにいろいろあります。

マイコン(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を以下のように配置

f:id:potblog:20200223224050p:plain

作成した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が見つかる

f:id:potblog:20200223224902p:plain

Program deviceにて書き込む