「 linux 」一覧

Mesa3D のレンダラーの切り替え


Linux の OpenGL 実装で有名な Mesa3D ですが、レンダラーの切り替えができることがわかったのでメモしておきます。
ちなみに The Mesa 3D Graphics Library って現時点においては 17.0 となってました。しかしながら動作実験環境は Ubuntu 16.04 で apt でインストールできるものを使用しているため、これよりも古いです。

切り替え方法

以下の環境変数で指定が可能です。

  • LIBGL_ALWAYS_SOFTWARE
  • GALLIUM_DRIVER

この環境変数で LIBGL_ALWAYS_SOFTWARE=1 とするとソフトウェア(エミュレーション)でのレンダラーが選択されるようです。
そして GALLIUM_DRIVER=softpipe を指定することで llvmpipe との切り替えができるようです。


続きを読む


USB Wifi Linux ドライバを変えて再試験


ちょっと前の某雑誌で、当ブログでも紹介していた USB WiFi の紹介がありました。
ただ当ブログで紹介していたドライバとは違うものだったので、確認してみたいと思います。
ちなみに 以前の内容はこちらです。

ドライバの確認・インストール

まず使用環境は Ubuntu 16.04 ですが、正確には 16.04.1 においても使えるかどうか確認してみました。
ドライバは https://github.com/abperiasamy/rtl8812AU_8821AU_linuxにあるものです。

使用機材は、 WN-AC433UA (IO DATA) で試しました。
前回紹介したドライバは、 https://github.com/gnab/rtl8812au でした。
基本的にインストールはこれと同じように行っていけるのですが、 今回の rtl8812AU_8821AU_linux では、 DKMS 対応の Makefile も含まれているので、こちらを使って準備しました。

これでしばらくするとインストールが完了します。

動作チェック・感想

こちらのドライバのほうが以前紹介したものよりはよさそうな印象をうけました。
というのも、前回の記事の中にあった不正な文字列は今回は見当たらなかったですし、NetworkManagerあたりにもスムーズに認識させることができていた点からです。

気になる速度の方は、iso ファイルのコピーで確認してみたところ 約 16.5 MB/s でした。つまり 132 Mbps あたり。
リンク速度の方は、iwconfig で確認したところ以下のような感じでした。

5GHz 帯で、 433 Mbps でのリンクとなっていました。
433M で実効 133 M というともう少し速度が出てほしいところです・・・。


ちなみにルーターの方は ac 側で 1733 Mbps までの対応のものを使用しています。
ルーターとの距離も 2m 内くらいだったので、やっぱり速度のほうにはもう少し頑張ってほしいところです。

追加検証

そもそも速度計測方法がイマイチということに気付いたので別方法で計測しました。前回は CIFS でのファイルコピーで別の処理コストもかかっていました。
これを iperf を用いて純粋に転送速度だけを測ってみました。

結果は、UP/Down どちらも大きな変化はなく、 220Mbps ほどでした。理論値の半分くらいにまで到達したのでまずまずの結果かなと納得しました。ちなみに 11n のほうでは自分の環境では 80Mbps 程度のリンクとなり実効速度も 53Mbps ほどでした。

11ac の環境は偉大だと言うことがよくわかりました。


ラズパイ2で使えたUSB WiFi 2016


前回に続いて Raspberry Pi 2 で使えた USB WiFi 2016版です。
少なくとも手元で動作チェックをして動いたものだけをここに記載しています。

オススメできるのは手軽さから自動でドライバを認識するタイプですね。
自分でドライバを入手・ビルドするタイプはなかなかうまくいかないことが多かったです。

なおここで使用している Raspbian は 2016/09版を使用しています。

usb_wifi_adapters2016

続きを読む


Linux で使えた USB WiFi 2016


USB WiFi を Linux で使おうとすると予想通り大変です。
Windows でドライバなしで使える(標準ドライバ)とかがどれだけ恵まれているかを実感させられます。今回は個人的に試してみて Linux でも使えたものをまとめてみました。

usb_wifi_adapters2016

この記事を書いている段階では生産中止になっていない入手可能なものに厳選しています。

続きを読む


gcc 組込み関数(memcpyとか)のインライン展開抑制


アライメントに寛容な x86 の話ではなく、 ARM プロセッサのお話になります。OSが動いていてソフトウェア例外を処理できるような状況では非アライメントなデータであってもなんとか動くので表面化しませんが、そのアタリをケアしない状況ではプログラムが停止してしまう原因の1つです。

さて非アライメントなデータ列をコピーしたりクリアしたりする際に、memcpy, memset などを使用することがあります。
デバッグ時にはうまく動いていたのに、最適化を有効にしたリリースビルドでは, このあたりでうまく動作せずに例外を出してしまったりすることがあります。

仕方なくこれらの関数の自前版を用意してこちらを使うようにしてしまうのも1つの手です。しかし memcpy, memset などのまま対処することも可能なことがわかりましたのでここで紹介したいと思います。
ここまでに言い忘れてしまいましたが、 gcc を使用した開発環境でのお話です。

原因

そもそも最適化によって何が起こり、正常に動かなくなってしまうのか。この原因は gcc が自分の組み込み関数を使用し、最適化によってインライン展開されてしまうことによります。

インライン展開されてもアライメント寛容なコードであればまだ良かったりしますが、速度重視のために最適化されているのでそうはならないのが現実です。

対策

gcc のコンパイルオプションで実はこのインライン展開の抑制が可能です。
-fno-builtin-(functionname) というオプションになります。なので、 memset,memcpy らを抑制する場合には、 -fno-builtin-memset, -fno-builtin-memcpy といったようなオプションを指定することとなります。


Ubuntu 16.04 で Vulkan を使う


以前には Ubuntu 14.x で Vulkan を試してみました。今は Ubuntu も 16.04 LTS が出てちょっと経ちましたので、これでやってみたいと思います。結論としては、従来よりも安定して導入・使用開始できそうな気配を感じています。

ubuntu-vulkan_vulkanscene

続きを読む



Lenovo Ideacentre Stick 300 に Ubuntu


Ideacentre Stick 300 には Windows がインストールされていましたが、Windows10 にあげてしまう前に、もうちょっと試してみたいということもあって Ubuntu をインストールしてみることにしました。
続きを読む



VisualStudio で for Linux Development


以前に VisualStudio で Linux での開発に向けて色々とやってみましたが、今はまた新しい方法があるようだったので試してみました。今回は Linux 側として Fedora23 を使用してみます。特殊なことはしていないため他のLinux系のものでも適用可能だと思います。

vs_linux_8

これらの環境設定の手順などを説明していきます。 続きを読む