前回インストールした llvm , clang に続いて、lld もインストールしてみました。
https://lld.llvm.org/
によれば、(DeepL で翻訳)
LLDはLLVMプロジェクトのリンカーで、システム・リンカーのドロップイン・リプレースメントであり、システム・リンカーよりもはるかに高速に動作する。また、ツールチェーン開発者にとって便利な機能も提供する。
ですね。
lld 単独で build しようとすると、うまくいきませんでした。llvm は基本的に llvm-project の中のものと密接に関連しているようで、
ここでも llvm-project-19.1.0.src/ の下で行う必要があるようです。しかも、新しい build 用ディレクトリを作成して build すると、llvm 関連も再び make しているようにみえたので、最初にbuildするときに使った build-proj ディレクトリを使うのがよさそうです。前回作成した build-proj ディレクトリを使います。
$ cd build-proj
$ cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS=lld -DCMAKE_INSTALL_PREFIX=/usr/local/python ../llvm
............
-- Configuring done (18.2s)
-- Generating done (39.1s)
-- Build files have been written to: /home/espiya/src/llvm-project-19.1.0.src/build-proj
$
$ make
.....................................
[100%] Built target yaml2obj
[100%] Built target ExampleIRTransforms
[100%] Built target Bye
[100%] Built target InlineAdvisorPlugin
[100%] Built target InlineOrderPlugin
[100%] Built target TestPlugin
[100%] Built target DoublerPlugin
[100%] Built target DynamicLibraryLib
[100%] Built target PipSqueak
[100%] Built target SecondLib
[100%] Built target benchmark
[100%] Built target benchmark_main
[100%] Built target llvm-locstats
$
# make install
......
-- Up-to-date: /usr/local/python/include/llvm/TargetParser/ARMTargetParserDef.inc
-- Up-to-date: /usr/local/python/include/llvm/TargetParser/AArch64TargetParserDef.inc
-- Up-to-date: /usr/local/python/include/llvm/TargetParser/RISCVTargetParserDef.inc
-- Installing: /usr/local/python/lib/cmake/llvm/LLVMConfigExtensions.cmake
#
$ which lld
/usr/local/python/bin/lld
$
$ lld --version
lld is a generic driver.
Invoke ld.lld (Unix), ld64.lld (macOS), lld-link (Windows), wasm-ld (WebAssembly) instead
$ ld.lld --version
LLD 19.1.0 (compatible with GNU linkers)
$
ここまででインストールできた、llvm を使って、Python 3.13.0 の --enable-experimental-jit オプション付きで build してみましが、やはりうまくいきませんでした。
しかたがないので、別の Python 高速化ツールを考えました。 Cython にしました。(以下は、 Firefox で翻訳しました。)
https://pypi.org/project/Cython/
Cython 言語を使用すると、Python 自体と同じくらい簡単に、Python 言語用の C 拡張機能を作成できます。 Cython は Pyrex をベースにしたソース コード トランスレータですが、より最先端の機能と最適化をサポートしています。
Cython 言語は Python 言語のスーパーセットです (ほぼすべての Python コードも有効な Cython コードです)。ただし、Cython はオプションの静的型付けをサポートしており、C 関数をネイティブに呼び出し、C++ クラスで操作し、変数とクラス属性で高速な C 型を宣言します。これにより、コンパイラーは Cython コードから非常に効率的な C コードを生成できます。
このため、Cython は、外部 C/C++ ライブラリ用のグルー コードや、Python コードの実行を高速化する高速 C モジュールを作成するのに理想的な言語になります。
ワンタイムビルドの場合には注意してください。 CI/テストの場合、PyPI で提供されるホイール パッケージのいずれかでカバーされておらず、当社が提供する純粋な Python ホイールが使用されていないプラットフォームでは、コンパイルされていない (遅い) バージョンの完全なソース ビルドよりも大幅に高速です。
こちらのインストールは pip3 が使えるので簡単です。本当に使えるかどうかはまだ分かりません。
$ pip3 install Cython
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting Cython
Downloading Cython-3.0.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (3.2 kB)
Downloading Cython-3.0.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB)
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq 3.3/3.3 MB 14.8 MB/s eta 0:00:00
Installing collected packages: Cython
Successfully installed Cython-3.0.11
$ which cython
/home/espiya/.local/bin/cython
$ cython --version
Cython version 3.0.11
$
使い方は以下を参考にして、今後機会があれば試してみたいと思います。
https://cython.readthedocs.io/en/latest/src/tutorial/
https://lld.llvm.org/
によれば、(DeepL で翻訳)
LLDはLLVMプロジェクトのリンカーで、システム・リンカーのドロップイン・リプレースメントであり、システム・リンカーよりもはるかに高速に動作する。また、ツールチェーン開発者にとって便利な機能も提供する。
ですね。
lld 単独で build しようとすると、うまくいきませんでした。llvm は基本的に llvm-project の中のものと密接に関連しているようで、
ここでも llvm-project-19.1.0.src/ の下で行う必要があるようです。しかも、新しい build 用ディレクトリを作成して build すると、llvm 関連も再び make しているようにみえたので、最初にbuildするときに使った build-proj ディレクトリを使うのがよさそうです。前回作成した build-proj ディレクトリを使います。
$ cd build-proj
$ cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS=lld -DCMAKE_INSTALL_PREFIX=/usr/local/python ../llvm
............
-- Configuring done (18.2s)
-- Generating done (39.1s)
-- Build files have been written to: /home/espiya/src/llvm-project-19.1.0.src/build-proj
$
$ make
.....................................
[100%] Built target yaml2obj
[100%] Built target ExampleIRTransforms
[100%] Built target Bye
[100%] Built target InlineAdvisorPlugin
[100%] Built target InlineOrderPlugin
[100%] Built target TestPlugin
[100%] Built target DoublerPlugin
[100%] Built target DynamicLibraryLib
[100%] Built target PipSqueak
[100%] Built target SecondLib
[100%] Built target benchmark
[100%] Built target benchmark_main
[100%] Built target llvm-locstats
$
# make install
......
-- Up-to-date: /usr/local/python/include/llvm/TargetParser/ARMTargetParserDef.inc
-- Up-to-date: /usr/local/python/include/llvm/TargetParser/AArch64TargetParserDef.inc
-- Up-to-date: /usr/local/python/include/llvm/TargetParser/RISCVTargetParserDef.inc
-- Installing: /usr/local/python/lib/cmake/llvm/LLVMConfigExtensions.cmake
#
$ which lld
/usr/local/python/bin/lld
$
$ lld --version
lld is a generic driver.
Invoke ld.lld (Unix), ld64.lld (macOS), lld-link (Windows), wasm-ld (WebAssembly) instead
$ ld.lld --version
LLD 19.1.0 (compatible with GNU linkers)
$
ここまででインストールできた、llvm を使って、Python 3.13.0 の --enable-experimental-jit オプション付きで build してみましが、やはりうまくいきませんでした。
しかたがないので、別の Python 高速化ツールを考えました。 Cython にしました。(以下は、 Firefox で翻訳しました。)
https://pypi.org/project/Cython/
Cython 言語を使用すると、Python 自体と同じくらい簡単に、Python 言語用の C 拡張機能を作成できます。 Cython は Pyrex をベースにしたソース コード トランスレータですが、より最先端の機能と最適化をサポートしています。
Cython 言語は Python 言語のスーパーセットです (ほぼすべての Python コードも有効な Cython コードです)。ただし、Cython はオプションの静的型付けをサポートしており、C 関数をネイティブに呼び出し、C++ クラスで操作し、変数とクラス属性で高速な C 型を宣言します。これにより、コンパイラーは Cython コードから非常に効率的な C コードを生成できます。
このため、Cython は、外部 C/C++ ライブラリ用のグルー コードや、Python コードの実行を高速化する高速 C モジュールを作成するのに理想的な言語になります。
ワンタイムビルドの場合には注意してください。 CI/テストの場合、PyPI で提供されるホイール パッケージのいずれかでカバーされておらず、当社が提供する純粋な Python ホイールが使用されていないプラットフォームでは、コンパイルされていない (遅い) バージョンの完全なソース ビルドよりも大幅に高速です。
こちらのインストールは pip3 が使えるので簡単です。本当に使えるかどうかはまだ分かりません。
$ pip3 install Cython
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting Cython
Downloading Cython-3.0.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (3.2 kB)
Downloading Cython-3.0.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB)
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq 3.3/3.3 MB 14.8 MB/s eta 0:00:00
Installing collected packages: Cython
Successfully installed Cython-3.0.11
$ which cython
/home/espiya/.local/bin/cython
$ cython --version
Cython version 3.0.11
$
使い方は以下を参考にして、今後機会があれば試してみたいと思います。
https://cython.readthedocs.io/en/latest/src/tutorial/
※コメント投稿者のブログIDはブログ作成者のみに通知されます