論文の概要: Experience converting a large mathematical software package written in C++ to C++20 modules
- arxiv url: http://arxiv.org/abs/2506.21654v1
- Date: Thu, 26 Jun 2025 17:38:33 GMT
- ステータス: 翻訳完了
- システム内更新日: 2025-06-30 21:12:22.954398
- Title: Experience converting a large mathematical software package written in C++ to C++20 modules
- Title(参考訳): C++で書かれた大きな数学的ソフトウェアパッケージをC++20モジュールに変換する経験
- Authors: Wolfgang Bangerth,
- Abstract要約: ヘッダベースとモジュールベースの両方のインターフェースを同じコードベースから提供できるアプローチについて説明します。
モジュールへの変換が可能で、変換されたライブラリ自体のコンパイル時間が短縮される。
私は、数学ソフトウェアの全エコシステムを変換するための長期的な戦略について考えます。
- 参考スコア(独自算出の注目度): 0.0
- License: http://arxiv.org/licenses/nonexclusive-distrib/1.0/
- Abstract: Mathematical software has traditionally been built in the form of "packages" that build on each other. A substantial fraction of these packages is written in C++ and, as a consequence, the interface of a package is described in the form of header files that downstream packages and applications can then #include. C++ has inherited this approach towards exporting interfaces from C, but the approach is clunky, unreliable, and slow. As a consequence, C++20 has introduced a "module" system in which packages explicitly export declarations and code that compilers then store in machine-readable form and that downstream users can "import" -- a system in line with what many other programming languages have used for decades. Herein, I explore how one can convert large mathematical software packages written in C++ to this system, using the deal.II finite element library with its around 800,000 lines of code as an example. I describe an approach that allows providing both header-based and module-based interfaces from the same code base, discuss the challenges one encounters, and how modules actually work in practice in a variety of technical and human metrics. The results show that with a non-trivial, but also not prohibitive effort, the conversion to modules is possible, resulting in a reduction in compile time for the converted library itself; on the other hand, for downstream projects, compile times show no clear trend. I end with thoughts about long-term strategies for converting the entire ecosystem of mathematical software over the coming years or decades.
- Abstract(参考訳): 数学的ソフトウェアは伝統的に相互に構築される「パッケージ」の形で構築されてきた。
これらのパッケージのかなりの部分はC++で書かれており、その結果、パッケージのインターフェースは、下流のパッケージやアプリケーションが#includeを実行できるヘッダファイルの形式で記述される。
C++は、このアプローチをCからインターフェースをエクスポートするために受け継いだが、アプローチはぎこちなく、信頼性がなく、遅くなっている。
その結果、C++20は"モジュール"システムを導入し、パッケージが明示的に宣言とコードをエクスポートし、コンパイラがマシン可読な形式で保存し、下流のユーザが"インポート"できる。
本稿では,C++で記述された大規模数理ソフトウェアパッケージをこのシステムに変換する方法を,約80万行のコードを持つ有限要素ライブラリを用いて検討する。
私は、同じコードベースからヘッダベースとモジュールベースの両方のインターフェースを提供することを可能にし、直面した課題、そして様々な技術と人間のメトリクスで実際にモジュールがどのように機能するかを議論するアプローチを説明します。
その結果,モジュールへの変換が可能であり,変換ライブラリ自体のコンパイル時間が短縮される一方で,下流プロジェクトではコンパイル時間が明確な傾向を示すことが判明した。
私は、数理ソフトウェアのエコシステム全体を今後数年から数十年にわたって変換するための長期的な戦略について考えます。
関連論文リスト
- PyMarian: Fast Neural Machine Translation and Evaluation in Python [11.291502854418098]
シーケンス・ツー・シーケンス・モデルのための C++ ベースのトレーニングおよび推論ツールキットである Marian NMT に Python インタフェースを記述した。
このインターフェースにより、Marianでトレーニングされたモデルが、Pythonで利用可能なリッチで幅広いツールに接続できるようになる。
論文 参考訳(メタデータ) (2024-08-15T01:41:21Z) - ViC: Virtual Compiler Is All You Need For Assembly Code Search [9.674880905252628]
本稿では,汎用コンパイラをエミュレートするLarge Language Model(LLM)のトレーニングについて検討する。
さらに、任意の言語のソースコードをアセンブリコードにコンパイルできる仮想コンパイラ(ViC)としてCodeLlamaを事前訓練します。
組立コード検索性能は大幅に向上し,ベースラインを26%上回った。
論文 参考訳(メタデータ) (2024-08-10T17:23:02Z) - Transforming C++11 Code to C++03 to Support Legacy Compilation Environments [1.6851123188451185]
我々は、C++11標準に従って書かれたコードを、機能的に等価なC++03変種に自動的にバックポートする、ソースコード変換フレームワークを作成します。
本稿では,トランスフォーメーションエンジンの技術的詳細と,大規模な2つのコードベースと4つのオープンソースシステムに適用した経験について報告する。
論文 参考訳(メタデータ) (2024-05-12T08:02:21Z) - depyf: Open the Opaque Box of PyTorch Compiler for Machine Learning Researchers [92.13613958373628]
textttdepyfは、PyTorchコンパイラの内部動作を復号化するためのツールである。
textttdepyfは、PyTorchが生成したバイトコードを等価なソースコードに逆コンパイルする。
論文 参考訳(メタデータ) (2024-03-14T16:17:14Z) - Guess & Sketch: Language Model Guided Transpilation [59.02147255276078]
学習されたトランスパイレーションは、手作業による書き直しやエンジニアリングの取り組みに代わるものだ。
確率的ニューラルネットワークモデル(LM)は、入力毎に可塑性出力を生成するが、正確性を保証するコストがかかる。
Guess & Sketch は LM の特徴からアライメントと信頼性情報を抽出し、意味的等価性を解決するためにシンボリック・ソルバに渡す。
論文 参考訳(メタデータ) (2023-09-25T15:42:18Z) - Evaluation of OpenAI Codex for HPC Parallel Programming Models Kernel
Generation [1.7646846505225735]
高性能コンピューティングにおける基本数値カーネル上でのAI支援生成能力の評価を行った。
生成したカーネルコードを様々な言語対応プログラミングモデルでテストする。
本稿では,各プロンプトに対して与えられた10のプロンプトに関する習熟度尺度を提案する。
論文 参考訳(メタデータ) (2023-06-27T00:11:31Z) - HDCC: A Hyperdimensional Computing compiler for classification on
embedded systems and high-performance computing [58.720142291102135]
この研究は、HDC分類メソッドの高レベルな記述を最適化されたCコードに変換する最初のオープンソースコンパイラである、ネームコンパイラを紹介している。
nameは現代のコンパイラのように設計されており、直感的で記述的な入力言語、中間表現(IR)、再ターゲット可能なバックエンドを備えている。
これらの主張を裏付けるために,HDC文献で最もよく使われているデータセットについて,HDCCを用いて実験を行った。
論文 参考訳(メタデータ) (2023-04-24T19:16:03Z) - QParallel: Explicit Parallelism for Programming Quantum Computers [62.10004571940546]
並列量子プログラミングのための言語拡張を提案する。
QParallelは、現在の量子プログラミング言語における並列性に関する曖昧さを取り除く。
並列化によって最も利益を上げるサブルーチンを識別し,並列領域の配置にプログラマを誘導するツールを提案する。
論文 参考訳(メタデータ) (2022-10-07T16:35:16Z) - Extending Python for Quantum-Classical Computing via Quantum
Just-in-Time Compilation [78.8942067357231]
Pythonは、その柔軟性、ユーザビリティ、可読性、開発者の生産性を重視することで有名な人気のあるプログラミング言語です。
量子ジャスト・イン・タイム・コンパイルのための堅牢なC++インフラストラクチャを通じて、異種量子古典計算を可能にするPythonの言語拡張を提案する。
論文 参考訳(メタデータ) (2021-05-10T21:11:21Z) - Extending C++ for Heterogeneous Quantum-Classical Computing [56.782064931823015]
qcorはC++とコンパイラの実装の言語拡張で、異種量子古典プログラミング、コンパイル、単一ソースコンテキストでの実行を可能にする。
我々の研究は、量子言語で高レベルな量子カーネル(関数)を表現できる、第一種C++コンパイラを提供する。
論文 参考訳(メタデータ) (2020-10-08T12:49:07Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。