サブロウ丸

Sabrou-mal サブロウ丸

主にプログラミングと数学

2022-01-01から1年間の記事一覧

Read the Docsでコンパイル時のPythonのバージョンを変更する

Read the Docsでは現在(2022年10月)ではPython3.7を用いてドキュメントのコンパイルが行われており、プロジェクトがPython3.7に対応していない場合はコンパイル時にエラーが生じて内容がうまく表示されない場合があります。(例えばPython3.8 以上で導入され…

アルゴリズム関連の記事のまとめ

競プロっぽいやつ generatorを用いた二分木におけるパスの全列挙; Python - サブロウ丸 (DFS) 深さ優先探索; Python - サブロウ丸 (BFS) 幅優先探索; python - サブロウ丸 beam search; ビームサーチ; python - サブロウ丸 RangeMinimumQuery, RangeMaximumQ…

VSCode Jupyter Notebookでカーネル選択ができない、への解決策

題名の通りVisual Studio Codeでjupyter notebookを起動してカーネル選択をしようとすると、 "Jupyter サーバーに接続"などしか選べず具体的なPythonのカーネルを選択できない場合。 公式のPython ExtensionをインストールすればPythonカーネルを選択できる…

Python: デバッグとプロファイル

本稿の目的と構成 研究(仮説)とプログラミング(検証)は密接に関わっており、バグの少ないコードは実験のやり直しを最小限にし、手法の検討に必要な正しい情報の収集をサポートする。 しかしながら、テストコードを書いたり、バグの原因を見つける作業は…

flopt

floptに関する記事のまとめです。 floptとはユーザーが解きたい問題を表現、具現化する作業をサポートするソフトウェアです。最適化モデリングツール、と呼んでいます。 v0.5.6 flopt v0.5.6: - サブロウ丸 v0.5.5 flopt 仕様 v0.5.5: 全体構成 - サブロウ丸…

flopt 仕様 v0.5.5: Solverサイド

本稿ではfloptのSolverサイドであるソルバの話をします。 floptでは内部で実装されたアルゴリズムと外部ライブラリのソルバを用いて最適化を実行することができます。 Solver実装のキホン 解の登録 コールバック関数の実行 時間制限の確認 終了ステータス 問…

flopt 仕様 v0.5.5: Systemサイド -- 問題解析とソルバ選択

本稿ではfloptのSystemサイドである問題(Problem)の解析やソルバ選択について記載します。 問題解析とは? 本稿では問題解析をユーザーが定義した問題がどのタイプの最適化問題に属するのかを機械的に判断すること、とします。floptでは柔軟なモデリングによ…

flopt 仕様 v0.5.5: Userサイド -- モデリング

本稿ではfloptにおける柔軟で強力なモデリングを支える基盤である変数と式の設計を紹介します。 変数 (Variable) 式 (Expression) Expression 式の文字列表現とその恩恵 単項式と多項式クラス CustomExpression Sum, Prod 演算のオーバーライド まとめ 関連…

flopt 仕様 v0.5.5: 全体構成

これから数回にわたってfloptという私が開発している最適化モデリングツールの構成について紹介したいと思います。具体的な使い方というよりは、その仕様について記録を残すのがメインです。 具体的な使用方法やチュートリアルはこちら。 本稿ではfloptの構…

RangeMinimumQuery, RangeMaximumQuery, BitIndexTree coded by Python

I show the RangeMinimumQuery, RangeMaximumQuery and BitIndexTree python class implementations. RangeMinimumQuery and RangeMaximumQuery are data structures for faster obtaining the minimum and maximum value of sub sequential array. BitIndex…

(BFS) 幅優先探索; python

今更感ありますが、、二分木構造に関するDFSで、1. 行きがけ、2. 帰りがけ, 3. 全記録、のPythonコードを紹介します。本稿では下記の木を例に使用します。 幅優先探索(BFS)はオレンジ色の順番のように、深さが浅いノードを優先して探索を行います。 ここで…

C++コードで実装されたPythonパッケージの作成; pybind11

本稿ではC++コードを含むPythonパッケージの作成方法を紹介します。処理が重い部分をC++でコーディングすることで、パッケージが提供する関数の実行速度を向上させることができます。 pybind11を用いれば意外と(?)簡単に作成することができて素晴らしい。…

DistributedDataParallel (pytorch) の内部デザイン

https://pytorch.org/docs/stable/notes/ddp.html#internal-design の日本語訳 + おまけの脚注 pytorch はv1.12 Internal Design ここでは、torch.nn.parallel.DistributedDataParallelがどのように動作しているかを、1つの反復処理の各ステップの詳細に踏み…

DistributedDataParallel (pytorch) サンプルコード

本稿ではDistributedDataParallelのサンプルコードを示し、また実行中にどのような通信が行われているかを確認します。 参考: Getting Started with Distributed Data Parallel — PyTorch Tutorials 1.13.0+cu117 documentation pytorch DistributedDataPara…

pyenvとvirtualenvの使い方

本稿ではpyenv, virtualenvを用いたpythonの仮想環境の構築方法とその操作方法をまとめます。 pyenv install pyenv操作 pyenv-virtualenv install virtualenv操作 インストール時のエラー & Warning 参考 pyenv pythonの複数バージョンのインストールや、そ…

import torch; from torch._C import * # noqa: F403 ImportError: undefined symbol

>>> import torch Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/tateiwa/.pyenv/versions/3.10.5/lib/python3.10/site-packages/torch/__init__.py", line 202, in <module> from torch._C import * # noqa: F403 ImportError: /home/tatei</module></module></stdin>…

Megatron-LMのソースコードを読む

NVIDIAが提案するTransformerをベースとする言語処理モデルの並列化実装。サーベイ記事はこちら↓↓↓ Githubのレポジトリには Data Preprocessing (データ前処理) Pretraining(事前学習) Evaluation and Tasks(評価) のコードが含まれています。 事前学…

(DFS) 深さ優先探索; Python

二分木構造に関するDFSで、1. 行きがけ、2. 帰りがけ、 3. 通りがけ、 4. 全記録、のPythonコードを紹介します。本稿では下記の木を例に使用します。 深さ優先探索(DFS)はご存知のようにオレンジ色の順番のように、深く(子孫側に)進む方向を優先して二分…

クラスタコンピュータで MPI + Pythonを実行する

本稿ではクラスタコンピュータでMPIを用いてPythonを並列実行するまでの手順を紹介します。 1ノードでの実行の場合 クラスタでの実行の場合 sshログインの整備 python環境の整備 実行コマンド おまけ open-mpiのオプションについて mpi4pyのインストールに失…

フラクショナルカスケーディング応用

k-th number 方法 fractional cascading 実装 プログラムのまとめ まとめ k-th number 数列a_1, a_2, ..., a_nとクエリを表す数の3つ組みがm個与えられる。各クエリ(i, j, k)に対しa_i, ..., a_jを昇順にソートした際のk番目の数を出力せよ。 n ≤ 1000000 m …

Docker image and file to generate SVP Challenge instances

I created Dockerfile to generate instances of SVP Challenge. Dockerfile Usage Build and enter docker image pull from DockerHub docker pull nariaki3551/svp_generator docker run -v $(pwd):/mnt -it nariaki3551/svp_generator from Dockerfile do…

beam search; ビームサーチのpython実装

幅優先探索の亜種ですね。 アルゴリズムの流れは下記です。 rootノードのみからなるpath、を持つpathsリストを生成(paths = [ [root] ]) paths内の全てのpathを1階層分だけ展開しpathsを更新 スコアが最も高いk個のpathのみをpathsに残す 2に戻る 補足: ht…

Makefileの些事

PHONY .PHONY ダミーターゲット(PHONYは偽物の意) サブコマンドを作るために使用される。 .PHONY: clean clean: rm a.out main.o 上記によりmake cleanでrm a.out main.o が実行される。 .PHONYを指定しないと実行ディレクトリにcleanファイル/フォルダが…

最適化モデリングツール flopt を試してみる

Qiitaに記事を投稿しました。 Dev Community Medium 本稿では、最適化モデリングツールfloptの基本的な使い方やいくつかの機能の具体例を紹介します。(私も開発者の一人です) 最適化モデリングツールとは、ユーザーが解きたい問題を表現、具現化する作業をサ…

pybind11を用いた高速化 (master_mind)

pybind11を用いてPythonプロジェクトの一部をc++コードで置き換えて高速化を試みます。 本稿では以前作成したmaster mindのプロジェクトを題材にします。 作業前のコード 本稿で出てくる用語(ほとんど出さないように気をつけましたが)はmaster mind by c++; …

MLBenchのビルド

MLBenchのビルド(https://mlbench.github.io)に色々手間取ったのでその記録を残します。 最終的な手順 実行コマンド エラー一覧 error: blis/cy.c: No such file or directory Failed to build matplotlib Starting control-plane Error docker.errors.APIEr…

MPI_Datatypeのサイズを取得する

MPI

MPI_Datatypeのデータサイズは実行環境に依存しますが、その環境のデータサイズどうなのか? というのを調べる関数が用意されています。 MPI_Type_size(MPI_Datatype datatype, int * size); でsize変数にデータサイズが格納されます。(参考: MPI_Type_size(…

計算時における消費電力計測

関連記事 2014.01.20, Kirk W. Cameron (HPCwire Japan訳), HPC電力効率とGreen500 2015.03.31, HPCwire Japan, ExaScaler-1がさらに電力性能を向上させ、世界第一位相当の値を計測 2017.12.12. TECH_+, 3段階に分かれるGreen500の電力測定法 2018.05.19, 横…

書籍: スパコンプログラミング入門

スパコンプログラミング入門 並列処理とMPIの学習 [ 片桐孝洋 ]価格:3520円(税込、送料無料) (2022/6/19時点)楽天で購入 スパコンプログラミング入門 並列処理とMPIの学習 発売日: 2013年03月13日頃 著者/編集: 片桐孝洋 出版社: 東京大学出版会 発行…

書籍: 並列プログラミング入門

並列プログラミング入門 サンプルプログラムで学ぶOpenMPとOpenAC [ 片桐孝洋 ]価格:3740円(税込、送料無料) (2022/6/18時点)楽天で購入 並列プログラミング入門 サンプルプログラムで学ぶOpenMPとOpenAC 発売日: 2015年05月 著者/編集: 片桐孝洋 出版…