KiCad Again
KiCad あまりつかわないうちに V5 になってしまいました。で V4 を削って、V5 にしました。どっかの情報に、そのまま V4 をアンインストールせずに V5 にせよと書いてありました。 それとは別に V4 の情報が残っていると、どうやら V5 で混乱するみたいです。特にフットプリント。うまく、新しい V5 のフットプリントを参照してくれません。いろいろ調べると、KiCad はいろんな情報をユーザの領域に残しているようです。まぁそうですよね。立ち上げた瞬間に直前の回路図出るし。(ここで気がつけばよかったのだ、、、) で、その情報が V5 のフットプリントの読み込みを邪魔しているようなので、思い切って削除してみました。V4 の資産がある場合はなかなかできないでしょう。私はV4 の資産がゼロだったので、削除してみました。 https://make.kosakalab.com/eda/kicad5_fp-lib-table/ ここの情報が役に立ちました。
いろいろ書きました。
- H.264 関連のリンク https://http://www.sinby.com/seiko-udoku/20/10183.html
- ROS とか IDL とか https://http://www.sinby.com/seiko-udoku/20/10182.html
- 音関係はどうよ https://http://www.sinby.com/seiko-udoku/20/10181.html
- GUI 周りに関してリンクをちょっと集めてみたよ https://http://www.sinby.com/seiko-udoku/20/10180.html
- HDL に関連したプロジェクトのリンク https://http://www.sinby.com/seiko-udoku/20/10171.html
CUDA + meson
そういえば CUDA でいまや meson 使うようにしたんだっけ。
cuda_comp = meson.get_compiler('cuda') cuda = import('unstable-cuda') cuda.nvcc_arch_flags(cuda_comp, 'All') nvcc_flags = cuda.nvcc_arch_flags(cuda_comp, 'Common') src_gpu = ['src/gpu/render_engine.cpp', 'src/gpu/render_engine.cu']
あと、いろいろまとめてみたよ。
meson の使い方
滅多に編集しないけど使う時は使う機能=忘れちゃう機能。 meson による -D による開発切り分け。
まず meson_options.txt を追加する。こんな感じ。
option('engine', type: 'string', value: 'gpu') option('use_cpu_sim', type: 'boolean', value: false) option('generate_bitmap_in_gpu', type: 'boolean', value: false)
これで meson の configure で見ることが出来るようになった。 meson debug とか meson release とかつくる。ついでに meson cpu_sim -Duse_cpu_sim=true とかもつくる。
>meson configure cpu_sim 前略 engine gpu engine generate_bitmap_in_gpu false [true, false] generate_bitmap_in_gpu use_cpu_sim true [true, false] use_cpu_sim
とかで情報を見ることが出来る。設定はあとから meson configure -Dなんとか で変更可能。 これだけだと cpp に反映されない!!ので meson.build に記述を書く。
if get_option('use_cpu_sim') == true nvcc_flags += ['-DUSE_CPU_SIM'] cpp_flags += ['-DUSE_CPU_SIM'] endif
meson の Syntax は Python 風になっているけど Python じゃない。表示するのは print じゃなくて message。
message(cpp_flags)
とかで ninja でコンパイルした時に表示される。
ninja -v -C cpu_sim
-v をつけておくとほんとに -DUSE_CPU_SIM が設定されているかどうかがわかる。ついでにつかってないけど、(今後使いたい)custom_target をつかうと外部コマンドでソースの自動生成!みたいなことが出来る模様。
GPU でエラー
cudaErrorCudartUnloading というエラーが出た。 なんかしらんが Unloading 中だという。 どうも、悪いタイミングで cudaFree を呼んだかららしい。
~MyClass() { cudaFree(my_memory); }
みたいなことをして、なおかつ
MyClass myclass;
とかグローバル変数に置くと、どうも Cuda の後処理の方が先に走って、cudaFree が後になるらしい。そうなると、たぶん cudaFree はすでに GPU へ送っているプログラムを実行しようする(あるいはその情報を使おうとする)が、すでに unloading されているという話らしい。ということで、
~MyClass() { // nothing to do } term() { cudaFree(my_memory); }
とかして、main ないで
myclass.term(); exit(0);
と順番通りにすると、、、、うまくいきました!!も~。