タグ付けされた質問 「program-analysis」


1
キャッシュアルゴリズム理論の最新技術とは何ですか?
私は最近、複数の種類のメモリが使用可能で、特定のメモリセグメントの容量とそれにアクセスする速度の間でトレードオフがある状況でメモリ使用量を最適化する一般的な問題に興味を持ちました。 身近な例では、を決めるのプログラムですから読み取る / に書き込みプロセッサキャッシュ、RAMおよび(仮想メモリを介して)ハードドライブ。 ロードする必要があるデータの量(プログラム自体を含む)が、利用可能な最速のストレージの容量を大幅に超える特別なケースに特に興味があります(つまり、「すべてをロードする」という些細な解決策は適用できません)。 いくつかの一般的なキャッシュアルゴリズムを説明するウィキペディアのページを見つけました。残念ながら、これらは少し低レベルです。 LRUやMRUなどの多くは、何度もアクセスされるサブルーチンがある場合にのみ意味があります。多数のサブルーチンを含むプログラムがあり、その一部は特定の実行でアクセスされず、一部は1回または2回アクセスされる場合、この戦略は何に関するデータを十分に構築できないため機能しません一般的に使用され、そうでないもの。 CLOCKなどのその他のものは、実際に問題の根本を攻撃するのではなく、実装の特性に対処しているようです。 テスト実行中に最初にプログラムのプロファイルを作成し、次にオペレーティングシステムのプロファイルを提供して、それに応じて最適化する戦略があることを知っています。ただし、プロファイルを作成する際に、真に代表的な「使用例」を提供するという問題を解決する必要があります。 私が本当に学びたいのはこれです:ハードウェアとソフトウェアのすべての技術を抽象化し、純粋に理論的な文脈で話すとき、アルゴリズムの構造を何らかの方法で分析し、効果的なキャッシュ戦略を立てることが可能ですか?アルゴリズムが何をしているかの高レベルの理解に基づいていますか?

1
エイリアス分析に関する文献
私はCSで修士論文を書いていて、エイリアス分析を扱っています。私が興味を持っているのは、Javaライクな言語向けの手続き内のフロー依存の必須エイリアスと多言語エイリアス分析です。 私はこの主題の基本を詳細に説明しているテキストを探していますが、本当に適切なものを見つけることができませんでした。 私はコンパイラと静的分析に関する多くの教科書を生き延びましたが、そこには何も見つかりませんでした。 私はエイリアス分析が使用されている多くの論文を見つけましたが、それらのほとんどはエイリアス分析が適用される問題に焦点を当てており、エイリアス分析アルゴリズムを詳細に説明していません。他のものはCに焦点を合わせていますが、これは一般的なポインタの複雑さが増したために適切ではありません。 私が見つけた最高のテキストは、WhaleyとRinardによる論文「Compositional Pointer and Escape Analysis for Java Programs」です。それは素晴らしい論文であり、良い出発点ですが、エイリアス分析については特に説明していません。 問題は非常に一般的なようですので、私はそれを解決するために利用できるいくつかの標準的なアルゴリズムがあると期待しました。 誰かがこの主題に関するテキストへのポインタを持っていますか?

2
プログラミング言語の抽象解釈の背後にある目標は何ですか?
私は現在、プログラミング言語の「抽象解釈」が何であるかをよりよく理解しようとしています。最小の固定要素でドメインを拡張するアイデア、連続関数の固定小数点を生成する4つの公理などを説明する良い本の章を見つけました。私はこれらの技術的な詳細を理解しています(この全体のスキームで「抽象的な解釈」が正確に何を指しているのかはよくわかりません)。 抽象解釈を使用する動機は何ですか?計算可能な関数の固定点を特定しているだけですか?主な動機は、ほとんどのプログラミング言語で再帰を使用することに由来していますか? また、コンピュータサイエンスの学位を持っている人にとっては技術的に十分に理解できる高レベルの概要が得られれば嬉しいでしょう。私はウィキペディアのページをかなり不安に思っています。

3
アルゴリズム分析を自動化できますか?
コンパイラが最悪の場合の漸近分析を自動的に実行できるように、プログラミング言語とコンパイラの可能性について誰かが考えましたか?私が考えているユースケースは、コードを書いてコンパイルするプログラミング言語です。コンパイラーは、コードがO(n ^ 2)で実行されることを教えてくれます(たとえば)。これは、アルゴリズム分析を行う賢い人々が行うこと、おそらくループを数えることなどによって行われます。 問題の問題を停止するため、そしてP = NPの場合の多項式時間で実行されるSATのLevinアルゴリズムなど、ダブテールで機能するプログラムを使用できるため、プログラミング言語を十分に制限して、このようなもの。特定の種類のプログラミング言語がそのようなコンパイラーを使用できないようにする否定的な結果はありますか? 正確な漸近分析ではなく、「興味深い」上限を与えるシステムにも興味があります。 私は特にしていないでブラックボックスと特定の長さの入力からのサンプルの統計的手法に興味を持って、プログラムにかかる時間を見つけます。これらの方法は非常に興味深いですが、私が探している方法ではありません。おおよその限界を与える正確な方法に興味があります。 誰かが私にこの方向での仕事についてのいくつかの参照を指摘してくれれば私は非常に感謝します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.