こんにちは。

マクニカでインテル® FPGA 製品の技術サポートをしている インテル・F・ハナコ です。

 

最近よく耳にする “クラウド・コンピューティング(通称クラウド)”

今回はここに、インテル FPGA 開発ソフトウェア Quartus® Prime を構築してみました。



クラウドに 64bit の OS をインストールして仮想マシン(インスタンス)を作ります。

今回はライセンスが不要な Quartus Prime Lite Edition を使用。

ツールのインストールに始まり、デザイン設計、コンパイル、そして開発ボードへのプログラミングまで、FPGA 開発を一通りやってみました。

なお、クラウドサーバーによる FPGA 開発はご自分の責任の下で作業を行うようお願い致します。

また、クラウドにおけるセキュリティ対策に関しては、各利用者および各クラウドサービスの環境で対策を講じてください。

 

[関連情報] インテル PSG がクラウドで FPGA 開発環境の提供を本格スタート!

Article header library 120117 pic01  5
Quartus® Primeのクラウド環境イメージ

今回検証で利用した環境

  • A 社のクラウド・コンピューティング・サービス(無料利用枠)を利用
  • 仮想マシン(on クラウド)のオペレーティング・サービスは Red Hat Enterprise Linux 64bit
    私がローカルで作業する OS が Windows なので本当は 簡単に RDP で接続できる Windows にしたいところですが、無料枠内での検証なので、ストレージ容量を節約するために Linux にしました。
  • 無料利用枠のメモリ容量は 1GB
    Quartus Prime Lite Edition がサポートするデバイス・ファミリで、かつ 開発に必要な推奨物理メモリが 1GB 以下のラインナップを下記の表にまとめました。(2017年3月現在)

    Cyclone V は少なくとも6GB以上は必要なので、無料利用枠では残念ながら開発できず断念。
    ちなみに Quartus Prime を GUI 操作するのであれば、この提示されたメモリ以上の容量は必要です。(メモリ不足は動きがカクカクしたりフリーズしちゃいます。)

    なお開発するデバイスに必要な物理メモリの推奨サイズの情報は、下記資料の Memory Recommendations セクションを参照ください。
    Quartus Prime Standard Edition Software and Device Support Release Notes
ファミリ デバイス
Cyclone® IV E EP4CE6, EP4CE10, EP4CE15, EP4CE22, EP4CE30, EP4CE40, EP4CE55, EP4CE75
Cyclone IV GX EP4CGX15, EP4CGX22, EP4CGX30
MAX® 10 10M02, 10M04, 10M08
MAX V / MAX II ALL

クラウド上に仮想マシンを作成

A社のクラウド・コンピューティング・サービスは、ウェブベースで操作を行い管理するタイプです。

ユーザー登録を行い、ログインして作業開始!

Article header library 120117 pic02  1

まずインスタンス作成です。

ウィザード形式でOSの選択やディスク容量、メモリサイズを指定します。(私は無料利用枠に指定された各項目を選択しました。)

これで仮想マシンは完成です。ものの5分でできちゃいました。

その際、仮想マシンに外部からアクセスするためのセキュリティ設定(TCP ポートの開放)をしておきましょう。

例えば

  • サーバーと SSH 接続するためには 22ポート
  • UI 作業をリモートデスクトップ(RDP 接続)するためには 3389ポート

などがあります。

また、仮想マシンから(ローカルのパソコンに接続された)ボードにプログラミングを行う場合には、ping 応答が必要なので ICPM プロトコルにも許可が必要です。

Windows からクラウド上の Linux にリモートデスクトップ接続させる環境を構築

ローカルの Windows からクラウド上の仮想マシン(Linux)に接続しアプリケーションを操作するのは、やっぱりGUIがいいね! と言うことで、GUI 操作するための環境を構築します。
Windows 同士の場合にはリモートデスクトップ接続が簡単に行え、GUI 操作環境が簡単に構築できます。

でも今回、ローカルは Windows、クラウド上の仮想マシンは Linux なので、VNC サーバーXRDP を利用して GUI 操作環境を構築します。
VNC サーバーと XRDP をクラウド上の Linux にインストールし設定するには、まずはクラウド上の Linux に SSH で接続します。

1. SSH クライアントソフトで仮想マシンに SSH 接続する

Windows からクラウド上の Linux に対して SSH 接続するには、SSH クライアントソフト(例えばTera Term や putty など)をインストールする必要があります。今回は Tera Term を利用しました。
クラウドで仮想マシンを作成すると、グローバル IP が発行されます。その IP アドレスを Tera Term に設定して接続してください。

Article header library 120117 pic03  3
SSH 接続

SSH認証画面が表示されます。
ここで SSH 接続のログイン作業を行いますが、各クラウドのプロバイダによって SSH 接続のログイン方法が異なります。

詳細はご利用になるプロバイダのホームページをご覧ください。

なお、私の利用した A 社の場合は、Linux インスタンスに用意された [ユーザ名] を入力し、あらかじめ作成した [秘密鍵] を指定して、ログインします。

Article header img03 1  1

2. VNC サーバーと XRDP をインストールし、VNCサーバーの初期設定をする

ローカルの Windows にインストールされている “リモートデスクトップ接続” を利用して、クラウド上のLinux を遠隔で かつ GUI 操作するために XRDP と VNC サーバー(今回は TigerVNC サーバーを利用)をインストールします。

# yum -y install xrdp tigervnc-server

その後、VNC サービスの初期設定(ユーザー名、画面サイズ、パスワード設定など)を行います。

 

まず、VNCサーバーの設定ファイルをコピーします。

# cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

コピー作成したファイルに対して編集します。

# vi /etc/systemd/system/vncserver@:1.service

<USER> をクラウドのユーザーアカウント名に編集し、必要に応じて画面サイズ(-geometry)を設定します。

Article header img05  5

保存後、変更内容を反映させます。

# systemctl daemon-reload

VNC接続する際のパスワードを設定します。(設定はしますがログイン時は使用しません)

 

まずは root のパスワード。

# vncpasswd

root 以外にユーザーも必要な場合には、

# vncpasswd <user_name>;

で VNC パスワードを追加設定してください。



続いて XRDP の初期設定を変更します。

 

元の color 設定では XRDP 接続のログイン時にエラーになるため、32bit から 24bit に変更しておきます。

# vi /etc/xrdp/xrdp.ini

max_bpp=32 を max_bpp=24 へ変更し、保存します。



3. デスクトップ環境をインストールする

Linux へリモートデスクトップ接続でログインした際に GUI 操作するため、デスクトップ環境をインストールします。

# yum groupinstall graphical-server-environment

システム起動時の動作モード(デフォルト)が GUI で起動するように設定します。

# systemctl set-default graphical.target

4. ファイアウォールの無効化、SELinux の無効化

クラウドのインスタンス(仮想マシン)としてセキュリティ(仮想ファイアウォール)設定がされているため、Linux としてのファイアウォールは無効化しました。(これがネックになって接続できないのも困るので...)

 

ファイアウォールを停止させ、

ファイアウォールの自動起動を無効化します。

# systemctl stop firewalld
# systemctl disable firewalld

以下のコマンドでステータスを確認します。

# systemctl status firewalld
Article header img04  6

また、XRDP の起動に失敗する可能性があるため、SELinux を無効にしました。コレ、ハナコのちょこっとポイントです♪

 

SELinux を無効にするため、設定ファイルを編集し、

# vi /etc/selinux/config

SELINUX=enforcing を SELINUX=disabled に変更します。

Article header img06  4

保存後、変更をすぐに反映させます。

# systemctl daemon-reload

システムを再起動後、SELinux のステータスをチェックし、無効(Disabled)になっていることを確認します。

# getenforce
Disabled

5. 仮想マシンにパスワードを設定する

クラウド上の仮想マシンにリモートデスクトップ接続をするときに、このユーザー名とパスワードを使用してログインします。

 

まずは root のパスワードを設定。

# passwd

もし、ユーザーアカウントを使用する場合は

# passwd <user_name>;

6. VNC サーバーと XRDP を起動する

VNC サーバーの自動起動設定をします。

# systemctl enable vncserver@:1.service

VNC サーバーを起動します。

# systemctl start vncserver@:1.service

VNC サーバーが起動したかステータスを確認します。

# systemctl status vncserver@:1.service

続いて XRDP の自動起動設定をします。

# systemctl enable xrdp.service

XRDP を起動します。

# systemctl start xrdp.service

XRDP が起動したかステータスを確認します。

# systemctl status xrdp.service

VNC サーバーと XRDP の起動が確認できたら、Tera Term の作業は終了です。



続いて、ローカルからクラウドマシンへ RDP 接続します。

 

クラウドサーバーで FPGA 開発ツール Quartus Prime を動かしてみた [#2/2]



Article header cb line top  13

近年、インテルの FPGA、CPLD の開発環境を構築しようとすると、開発ソフトウェアの Quartus® Prime を使用するために、そこそこハイスペックなパソコンを用意しなければなりません。その必要条件の一つは、CPU が64bitタイプでなければならないこと!

2017年現在、32bit マシン環境には Quartus® Prime をインストールできないんです。
メモリ不足やディスク容量不足なら、増設してどうにか…、とできますが、CPU はそうはいきません。

適したスペックのパソコンが手元に無いけれども ”FPGA でちょっと遊んでみたい” と言うユーザーには、“CPU の壁”が立ちはだかるわけです。
もっと多くのユーザーに気軽に Quartus® Prime を使ってほしい!そんな想いで今回クラウドに Quartus® Prime Lite Edition をインストールしてみました。

おすすめ記事/資料はこちら
ほんとのほんとの導入編: その1. 開発をはじめるための環境づくり
Quartus - サポート Windows OS 対応表
Quartus - サポート・デバイス 対応表

あるいは別の見方をすれば、Stratix® 10 や Arria® 10 などをコンパイルできるハイスペックマシンを用意する際に、物理的なパソコンを購入するのではなくクラウドの仮想マシンを検討する、と言う選択肢も今後はあると思います。

何かの参考になれば幸いです。

Article header cb line btm  19

おすすめ記事/資料はこちら

クラウドサーバーで FPGA 開発ツールQuartus Prime を動かしてみた [#2/2]
FPGA ではじめてのLチカ!
ほんとのほんとの導入編: その1. 開発をはじめるための環境づくり
Quartus - サポート Windows OS 対応表
Quartus - サポート・デバイス 対応表