RustにいればRustに従え(16) rp2040-project-template

RPblink2
Joseph Halfmoon

前回rp-halのお陰でrust言語で書かれたサンプルソースをビルドし、Raspberry Pi Picoに書き込んで動作確認ができました。しかしHALのサンプルプロジェクトをHALの環境内でビルドしただけです。自前のプロジェクトを作りたいのだけれどどうしたら良いの?なんかメンドクさそうだし。そんなことはお見通し。

“RustにいればRustに従え(16) rp2040-project-template” の続きを読む

RustにいればRustに従え(15) Rustによる ラズパイ Picoで吉例Lチカ

RaspberryPiPicoBlinkEC
Joseph Halfmoon

忘却力の年寄はRustに慣れないので過去回ではズルズルとLinux上で練習。しかしマイコン用のプログラムをRustで書くことが目標です。PC上での練習を切り上げてマイコン用のクロス開発へ突入。今回はターゲットRaspberry Pi Picoのクロス開発環境をWindows11上に構築、吉例Lチカまでやってみます。

“RustにいればRustに従え(15) Rustによる ラズパイ Picoで吉例Lチカ” の続きを読む

RustにいればRustに従え(14) 最初からVec型にしておけばよかったです。

mult_vec_EC
Joseph Halfmoon

前回、行列積のマルチスレッド計算の実行時間を測っていて、測定対象の計算負荷がスレッドのあれやこれやのオーバヘッドに比較して「軽め」なんでないの?という疑問を持ちました。それというのもスタック上に配列をとったがためのサイズ制限です。現代的なプロセッサにとっては100x100サイズなどは軽すぎる? “RustにいればRustに従え(14) 最初からVec型にしておけばよかったです。” の続きを読む

RustにいればRustに従え(13) 時間計測しようとして最適化にやられました。ありがち?

too_much_optimized
Joseph Halfmoon

前回、行列積の計算をささやかな2スレッドですがマルチスレッド化してみました。ということはその効果を「計測」してみたくなるのが人情です(ホントか?)尤もらしい結果を得るために複数回の計測を繰り返して平均とってなどと思ったのです。しかしそれ以前の問題にやられました。Rustの最適化強力ぞなもし。

“RustにいればRustに従え(13) 時間計測しようとして最適化にやられました。ありがち?” の続きを読む

RustにいればRustに従え(12) まずはspawnとchannelでマルチスレッド。

spawnParallel
Joseph Halfmoon

前回は素朴な2次元ループ、勿論シングルスレッドで行列積を求めました。今回はこれに手をいれてマルチスレッド化してみたいと思います。調べたところ「データ並列を活用」するrayonクレートというものが魅力的だったのですが、今回はRustのフツー?のthreadを使ってRust風の並列化を学んでいきたいと思います。 “RustにいればRustに従え(12) まずはspawnとchannelでマルチスレッド。” の続きを読む

RustにいればRustに従え(11) 行列積を求めたいです。普通な感じで。mut有for有

verifyR
Joseph Halfmoon

前回は素朴な方法で2次元配列に乱数を詰め込みました。今回は詰め込んだ配列2つをもってきて行列積を求めてみたいと思います。これまた一目瞭然な素朴な方法。後々いろいろ実験するための準備とな。しかしそれにしても行列積の検算どうしましょう。とりあえず行列がお得意らしいR言語にお願い。検算してよかったデス。。。
“RustにいればRustに従え(11) 行列積を求めたいです。普通な感じで。mut有for有” の続きを読む

RustにいればRustに従え(10) 2次元配列を乱数で初期化したいです。mut有for有

RustStackOverFlow
Joseph Halfmoon

今回はmut無for無でないです。配列を乱数で初期化したかっただけなのですが。それどころかRustではご縁がなかった「Stack Overflow」(有名なサイトではありませんよ)に遭遇。あれれ、ヒープに配列とれば済むというものでもないのね。それに外部クレートの使い方のお作法、カッコいいけど、知らないとなんだかなあ。
“RustにいればRustに従え(10) 2次元配列を乱数で初期化したいです。mut有for有” の続きを読む

RustにいればRustに従え(9) 方程式の求解、Newton法テキトー版mut無for無

Newton_EC
Joseph Halfmoon

前回前々回とPascalが続きました。Pascalにm2を掛ければNewtonという親父ギャク?をものにすべく、今回はNewton法です。アカラサマなmut無、for無で書けました。古くから研究されつくした算法なのでいろいろ注意点がある筈ですが、全部踏みつぶしてしまったヤッツケなコードです。4則演算のみで√2だと。

“RustにいればRustに従え(9) 方程式の求解、Newton法テキトー版mut無for無” の続きを読む

RustにいればRustに従え(8) シェルピンスキーのギャスケット、裏Pascal三角形

Sierpinski64
Joseph Halfmoon

前回Pascalの三角形を描いた後、@rithmety様のご指導あり。iteratorの書き方をお教えいただいた上、段数バグっていた(1段少なかった)件も判明。ありがとうございます。今回はPascalの3角形に基づくシェルピンスキーのギャスケット(近似)の描画です。実はPascalの3角形、意外と難物?だった。

“RustにいればRustに従え(8) シェルピンスキーのギャスケット、裏Pascal三角形” の続きを読む

RustにいればRustに従え(7) Pascalの三角形を計算、mut無、for 1

pascalTriangle
Joseph Halfmoon

前回mut無でmandelbrot集合を描けたのでフラクタルづきました。こんどはお馴染みシェルピンスキーのギャスケットだと。しかしその前にPascalの三角形だろ~。mCn(コンビネーション; 組み合わせ)が3角形にならぶ中学生の問題。2nのPascalの三角形を偶奇で塗り分けるとシェルピンスキーと。ホントか? “RustにいればRustに従え(7) Pascalの三角形を計算、mut無、for 1” の続きを読む

RustにいればRustに従え(6) 吉例mandelbrot集合を描く、mut無、for2

mandelbrot
Joseph Halfmoon

前回そろそろRustも入出力とか地道なところを練習しないといろいろできないじゃん、と痛感しました。そこで画像出力をやってみることに。題材は吉例「マンデルブロ集合を描く」であります。流石に画像出力はmutいるだろ~と思ったらアカラサマなmut無で書けてしまいました。流石にFOR文は2つ。 “RustにいればRustに従え(6) 吉例mandelbrot集合を描く、mut無、for2” の続きを読む

RustにいればRustに従え(5) FIRフィルタの実体たった1行? mut無、for最小

firfiltercode
Joseph Halfmoon

前回の投稿後に再び@rithmety様のご指導ありコードを改良することができました。ありがとうございます。おかげで今回はFIRフィルタの計算に取り組めます。100次のローパスフィルタとな。結構強力っす。でもフィルタの実体はほとんど1行。Rustも強力にして簡潔。例によってアカラサマなmutなし。表示以外のforなし。 “RustにいればRustに従え(5) FIRフィルタの実体たった1行? mut無、for最小” の続きを読む

RustにいればRustに従え(4) フィルタ実験用のサンプル波形生成、mut無、for最小

Joseph Halfmoon

前回投稿後にTwitterで@rithmety様のご指導あり、気になっていたところが解決。ありがとうございます。これでFIRフィルタの計算ができると思ったら、いけません。定数PI(円周率)はどこにいるの?だいたいSIN関数はどこ?頭の固いRust素人(老人)は戸惑うことばかり。今回は被テスト波形を計算するところまで。

“RustにいればRustに従え(4) フィルタ実験用のサンプル波形生成、mut無、for最小” の続きを読む

RustにいればRustに従え(3) 移動平均をmut無、for無で計算。表示にfor使用

VerifyResults
Joseph Halfmoon

過去2回、アカラサマなmut宣言とfor文なしに計算を続けてきましたが、今回とうとうfor文を使ってしまいました。だって結果の表示部分だからお楽にしたかったんだ。まあ計算本体は、吉例にもとづきmut無、for無っす。それがどれほどの意味があるのか知らんけど。まあ縛りをかけた方がRustらしくなるかと?ホントか? “RustにいればRustに従え(3) 移動平均をmut無、for無で計算。表示にfor使用” の続きを読む