vscode+flake8
- ExtentionにFlake8をインストールする

{ "editor.tabSize": 4, "python.analysis.extraPaths": [ "./simple-test-gpnpu", "/usr/local/lib/python3.10/dist-packages/" ], "autoDocstring.docstringFormat": "numpy", "flake8.args": [ "--ignore=W293, W503, W504, E111, E114, E129, E121", "--max-line-length=150", "--per-file-ignores=__init__.py:F401, E402" ] }
Pytorchの各バージョンと適合するCUDAのバージョン
ここhttps://pytorch.org/get-started/previous-versions/を参考に作成しました。 Linux Wheelが対象です。

CMake + Google Testの中規模プロジェクト作成
はじめに
概要
- 公開用ヘッダファイルとソースファイル、テストファイルのディレクトリを分離する
- テストにGoogleTestを使用する
動作環境
- Ubuntu18.04(NativeあるいはWSL)
ディレクトリ構成
| Directory | Note |
|---|---|
| include/${PROJECT_NAME} | 公開ヘッダファイル |
| src | ソースコード, 非公開ヘッダファイル |
| test | テスト記述 |
GoogleTestのインストール
- release-1.10.0を~/local/gtest-1.10.0にインストール
git clone https://github.com/google/googletest.git -b release-1.10.0 --depth=1 cd googletest mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~/local/gtest-1.10.0 .. make -j 8 install
プロジェクトのビルドと実行
git clone https://github.com/taksei/googletest_sample.git cd googletest_sample mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_TEST=ON make -j 8 # Run all tests make test # Run specified test ./test/test_sample
WSLの警告音/ビープ音を消す
静かな環境を手に入れよう。
echo "set bell-style none" >> ~/.inputrc echo "set visualbell t_vb=" >> ~/.vimrc
Linuxコマンド
つれづれに追加していきます。
指定した文字列をファイル名に含むファイルを検索する。
find -name "文字列" .
指定した文字列を内容に含むファイルを検索する。
grep "文字列" -rl .
テンポラリファイルを作成せずに、2つの生成した標準出力を比較する。
diff <(command1 ) <(command2)
重複する行を取り除く。
cat ${file} | sort | uniq
重複する行の数を出力する(CSV形式)。
cat ${file} | sort | uniq -c | sed "s/^\s\+//" | sed "s/\s\+/,/
特定文字で区切ったフィールドを抜き出す。
cat ${file} | cut -d ',' -f 3,4,8
GitリポジトリのHEADが示すコミットのSHAを出力する
git rev-parse HEAD
コード生成のためのヒアドキュメント利用
CSVで指定されたパラメータセットに応じてコードを自動生成するスクリプト。
パラメータの取得はPython標準CSVパーサを利用。コード生成はヒアドキュメントに変数を埋め込むことで実現している。
#! /usr/bin/env python import sys import csv #----------------------------------------- # Load config.csv #----------------------------------------- args = sys.argv with open(args[1]) as f: for row in csv.reader(f): if not row[0].startswith('#'): config = row __P0 = int(config[0].replace(' ', '')) __P1 = int(config[1].replace(' ', '')) __P2 = int(config[2].replace(' ', '')) #----------------------------------------- # Generate param.h #----------------------------------------- str=''' #pragma once #define PARAM0 {__p0} #define PARAM1 {__p1} #define PARAM2 {__p2} const float A[PARAM0 * PARAM1] = {{ #include "./data/{__p0}_{__p1}.csv" }} const float B[PARAM1 * PARAM2] = {{ #include "./data/{__p1}_{__p2}.csv" }} float Y[PARAM0 * PARAM2]; '''.format(__p0=str(__P0), __p1=str(__P1), __p2=str(__P2)).strip() print(str)
パラメータ設定ファイル例
# p0, p1, p2 5, 3, 4
Pythonのヒアドキュメントは'''と'''で囲んで作成する。
上記の記述例では、開始の'''の直後と、終了の'''の直前に改行が挿入されるため、stripにて前後の改行を取り除く。
ヒアドキュメント内の変数展開はformatメソッドを使用する。ヒアドキュメント内で{変数名}として展開する変数を記述する。なお、本来の{および}は変数と区別するため、{{、}}と書き換える。