例
リポジトリ内の実行可能な Sounio コードの場所。
例
例は、読者がどれを信頼すべきかを分かっているときにのみ役に立ちます。Sounio では、examples/ 以下のすべてを等しく権威あるものとして扱うのではなく、導入用の教材、証明能力を持つテスト、ドメイン固有の fixture、そして探索的なディレクトリを区別する必要があります。
信頼順序
tests/run-pass/とtests/compile-fail/は、言語レベルの挙動について最も強い情報源です。tests/stdlib/と対応する artifact は、stdlib と science lane の主張について最も強い情報源です。examples/は導入やアイデア閲覧に有用ですが、一部のパスは探索的であったり backend 依存であったりします。self-hosted/はコンパイラ実装例と検証面が置かれる場所であり、エンドユーザ向けプログラムではありません。
公開されている正規の例
export SOUC_BIN="$(pwd)/bin/souc"
export SOUNIO_STDLIB_PATH="$(pwd)/stdlib"
"$SOUC_BIN" check examples/hello.sio
"$SOUC_BIN" check tests/run-pass/covid_2020_kernel.sio
"$SOUC_BIN" check tests/run-pass/vancomycin_propagation.sio
"$SOUC_BIN" check tests/compile-fail/vancomycin_low_conf.sio
Self-hosted GPU artifact-template の例
既定の self-hosted コンパイラは GPU 構文をコンパイルでき、kretikos が
定義済みの artifact テンプレートを出力できます。
# self-hosted コンパイラで GPU カーネル構文をチェックする
bin/souc check examples/kernel_source_level.sio
# 定義済みの PTX テンプレートを出力する(self-hosted、GPU 不要)
kretikos emit-ptx vec_add -o /tmp/kernel.ptx
kretikos emit-ptx vec_sub -o /tmp/kernel.ptx
kretikos emit-ptx vec_mul -o /tmp/kernel.ptx
kretikos emit-ptx vec_div -o /tmp/kernel.ptx
kretikos emit-ptx vec_add_f64 -o /tmp/kernel.ptx
kretikos emit-ptx fma -o /tmp/kernel.ptx
kretikos emit-ptx fma_f64 -o /tmp/kernel.ptx
kretikos emit-ptx store_u32_const -o /tmp/kernel.ptx
# 定義済みの Metal/MSL テンプレートを出力する(self-hosted、macOS 不要)
kretikos emit-metal vec_add -o /tmp/kernel.metal
kretikos emit-metal ossm_oct_step -o /tmp/kernel.metal
kretikos emit-metal sedenion_cd_step -o /tmp/kernel.metal
# 定義済みの vec_add_f32 CUBIN テンプレートを出力する
kretikos emit-cubin vec_add_f32 -o /tmp/kernel.cubin
# PTX+CUBIN と構造的な bundle manifest を出力する
kretikos bundle -o /tmp/kretikos-bundle
# CUDA ホスト上では、オプションのツールチェイン/ランタイム検証を manifest に追加できる
kretikos bundle -o /tmp/kretikos-validated-bundle --validate-toolchain --validate-runtime
GPU artifact の例(より広いパターンサポート)
別の GPU artifact は、より多くのカーネルパターンをサポートします。
export SOUC_GPU_BIN="$(pwd)/artifacts/omega/souc-bin/souc-linux-x86_64-gpu"
export SOUNIO_STDLIB_PATH="$(pwd)/stdlib"
"$SOUC_GPU_BIN" check examples/gpu.sio
"$SOUC_GPU_BIN" check examples/kernel_vec_add.sio
"$SOUC_GPU_BIN" check tests/run-pass/gpu_launch_surface.sio
"$SOUC_GPU_BIN" build examples/kernel_matmul.sio --backend gpu -o /tmp/kernel_matmul.ptx
価値の高いディレクトリ
examples/io/、examples/effects/、examples/epistemic/は、小さな教材プログラムを置くのに適した場所です。examples/gpu.sio、examples/kernel_vec_add.sio、examples/kernel_matmul.sioは、現在公開されている GPU-profile の例です。tests/run-pass/とtests/compile-fail/は、受理される言語挙動と拒否される言語挙動を文書化する際に参照すべき場所です。tests/stdlib/は、fmri、darwin_pbpk、nn、onn、qnn、snn、spnn、quantnn、mathといったドメイン lane が自らを証明する場所です。docs/research/vancomycin-uncertainty.mdは、最も重要な公開例の一つをより長い物語に結び付けています。
ドキュメントのガイダンス
- 例を示すときは、それが単にツリーから読まれただけなのか、
souc checkでチェックされたのか、エンドツーエンドで実行されたのかを明記してください。 - 強い主張をする際は、現在の gate artifact と整合する例を優先してください。
- 例が GPU、LLVM、LSP など gate されたその他の backend に依存する場合は、その依存関係を明示してください。