coLinux日記

coLinuxはフリーソフトを種として、よろずのシステムとぞなれりける。

Raspberry Pi に、llvm の lld をインストールする。Cython も入れてみる。

2024-11-28 22:05:12 | インストールと設定
前回インストールした 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/

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Raspberry Pi に LLVM + Cla... | トップ |   
最新の画像もっと見る

コメントを投稿

インストールと設定」カテゴリの最新記事