1つまたは複数のプロセッサおよびシステムメモリを含むコンピュータシステム上で、異なるコンパイルステージで生成されたデバッグ情報を組み合わせる方法であって、前記コンピュータシステムは、ソースコードを実行可能コードにコンパイルするマルチステージコンパイラも含み、前記マルチステージコンパイラは、少なくとも第1のコンパイルステージおよび第2のコンパイルステージを含む複数のコンパイルステージを有し、前記複数のコンパイルステージにおける各コンパイルステージは、コードフォーマット間で変わり、かつ実行可能コードをソースコードから生成することに進むように構成され、前記方法は、第1のデバッグ情報および第2のデバッグ情報を、統合された第3のデバッグ情報に融合する動作であって、前記第1のデバッグ情報は、第1のフォーマットの第1のコードを第2の異なるフォーマットの第2のコードに翻訳する前記第1のコンパイルステージで生成され、前記第1のデバッグ情報は、前記第1のコードにおける各命令を、前記第2のコードにおける対応する命令にマッピングし、かつ前記第1のコードにおける各シンボルを、前記第2のコードにおける対応するシンボルにマッピングし、前記第2のデバッグ情報が、前記第2のコードを第3の異なるフォーマットの第3のコードに翻訳する前記第2のコンパイルステージで生成され、前記第2のデバッグ情報は、前記第2のコードにおける各命令を、前記第3のコードにおける対応する命令にマッピングし、かつ前記第2のコードにおける各シンボルを、前記第3のコードにおける対応するシンボルにマッピングし、前記統合された第3のデバッグ情報は、前記第1の命令を前記第3の命令に直接的にマッピングし、かつ前記第1のシンボルを前記第3のシンボルに直接的にマッピングし、前記第1のデバッグ情報および前記第2のデバッグ情報を融合し、前記第1のデバッグ情報および前記第2のデバッグ情報を融合することは、前記第1のコードにおける各命令およびシンボルのために、前記第1のデバッグ情報を使用して、前記第1のコードにおける命令またはシンボルに対応する前記第2のコードにおける命令またはシンボルを識別する動作と、前記第2のデバッグ情報を使用して、前記第2のコードにおける前記識別した命令またはシンボルに対応する前記第3のコードにおける命令またはシンボルを識別する動作と、前記第1のコードにおける前記命令またはシンボルを前記第3のコードにおける前記識別した対応する命令またはシンボルに直接的にマッピングする動作と、前記第1のコードにおける前記命令またはシンボルの、前記第3のコードにおける前記命令またはシンボルへの直接的マッピングを、前記統合された第3のデバッグ情報に格納する動作とを含む、融合する動作を備えたことを特徴とする方法。前記第1のデバッグ情報および前記第2のデバッグ情報を統合された第3のデバッグ情報に融合する前記動作は、DataParallelCDPCソースコードにおける命令位置およびシンボルと、HighLevelShaderLanguageHLSLソースコードにおける命令位置およびシンボルとの間でマッピングする第1のデバッグ情報、ならびにHLSLソースコードにおける命令位置およびシンボルと、HLSLバイトコードにおけるアドレスおよびレジスタ名との間でマッピングする第2のデバッグ情報を、前記DPCソースコードにおける位置およびシンボルと、前記HLSLバイトコード内のアドレスおよびレジスタ名との間をマッピングする統合された第3のデバッグ情報に融合する動作を含むことを特徴とする請求項1に記載の方法。前記第1のコンパイルステージは、DataParallelCDPCソースコードを、HighLevelShaderLanguageHLSLソースコードに翻訳するように構成されることを特徴とする請求項1に記載の方法。前記第2のコンパイルステージは、HighLevelShaderLanguageHLSLソースコードを、HLSLバイトコードに翻訳するように構成されることを特徴とする請求項1に記載の方法。前記第1のデバッグ情報、前記第2のデバッグ情報、および前記統合された第3のデバッグ情報が、プログラムデータベースPDBレコードとして格納されることを特徴とする請求項1に記載の方法。統合された第3のデバッグ情報を使用して、前記第1のコードのデバッギングを支援する動作をさらに含むことを特徴とする請求項1に記載の方法。コンピュータシステムで使用するコンピュータプログラム製品であって、前記コンピュータシステムは、ソースコードを実行可能コードにコンパイルするマルチステージコンパイラを含み、前記マルチステージコンパイラは、少なくとも第1のコンパイルステージおよび第2のコンパイルステージを含む複数のコンパイルステージを有し、前記複数のコンパイルステージにおける各コンパイルステージは、コードフォーマット間で変わり、かつ実行可能コードをソースコードから生成することに進むように構成され、前記コンピュータプログラム製品は、異なるコンパイルステージで生成されるデバッグ情報を組み合わせる方法を実装し、前記コンピュータプログラム製品は、プロセッサで実行されると前記コンピュータシステムに前記方法を実行させるコンピュータ実行可能命令を格納する1つまたは複数のコンピュータ記憶装置を備え、前記方法は、第1のデバッグ情報および第2のデバッグ情報を統合された第3のデバッグ情報に融合するステップであって、前記第1のデバッグ情報は、第1のフォーマットの第1のコードを第2の異なるフォーマットの第2のコードに翻訳する前記第1のコンパイルステージで生成され、前記第1のデバッグ情報は、前記第1のコード内の各命令を、前記第2のコード内の対応する命令にマッピングし、かつ前記第1のコード内の各シンボルを、前記第2のコード内の対応するシンボルにマッピングし、前記第2のデバッグ情報は、前記第2のコードを第3の異なるフォーマットの第3のコードに翻訳する前記第2のコンパイルステージで生成され、前記第2のデバッグ情報は、前記第2のコード内の各命令を、前記第3のコード内の対応する命令にマッピングし、かつ前記第2のコード内の各シンボルを、前記第3のコード内の対応するシンボルにマッピングし、前記統合された第3のデバッグ情報は、前記第1の命令を前記第3の命令に直接的にマッピングし、かつ前記第1のシンボルを前記第3のシンボルに直接的にマッピングし、前記第1のデバッグ情報および前記第2のデバッグ情報を融合し、前記第1のデバッグ情報および前記第2のデバッグ情報を融合することは、前記第1のコードにおける各命令およびシンボルのために、前記第1のデバッグ情報を使用して、前記第1のコードにおける命令またはシンボルに対応する前記第2のコードにおける命令またはシンボルを識別する動作と、前記第2のデバッグ情報を使用して、前記第2のコードにおける識別した命令またはシンボルに対応する前記第3のコードにおける命令またはシンボルを識別する動作と、前記第1のコードにおける前記命令またはシンボルを前記第3のコードにおける識別した対応する命令またはシンボルに直接的にマッピングする動作と、前記第1のコードにおける前記命令またはシンボルの、前記第3のコードにおける前記命令またはシンボルへの直接的マッピングを、前記統合された第3のデバッグ情報に格納する動作とを含む、融合するステップを含むことを特徴とするコンピュータプログラム製品。1つまたは複数のプロセッサおよびシステムメモリを含むコンピュータシステムで、異なるコンパイルステージで生成されたデバッグ情報を組み合わせる方法であって、前記コンピュータシステムは、ソースコードを実行可能コードにコンパイルするマルチステージコンパイラも含み、前記マルチステージコンパイラは、複数のコンパイルステージを有し、前記複数のコンパイルステージにおける各コンパイルステージは、コードフォーマット間で変わり、かつ実行可能コードをソースコードから生成することに進むように構成され、前記方法は、第1のコンパイルステージで、第1のコードにアクセスする動作であって、前記第1のコードは、第1のフォーマットの第1の命令および第1のシンボルを含む、アクセスする動作と、前記第1のコードを第2のコードに翻訳する動作であって、前記翻訳する動作は、前記第1の命令および第1のシンボルを、第2のフォーマットの対応する第2の命令および第2のシンボルに変換する動作であって、前記第2のフォーマットは前記第1のフォーマットとは異なる、変換する動作と、第1のデバッグ情報を生成する動作であって、前記第1のデバッグ情報は、前記第1の命令における各命令を、前記第2の命令における対応する命令にマッピングし、かつ前記第1のシンボルにおける各シンボルを、前記第2のシンボルにおける対応するシンボルにマッピングする、生成する動作とを含む、翻訳する動作と、第2のコンパイルステージで、前記第2のコードにアクセスする動作と、前記第2のコードを第3のコードに翻訳する動作であって、前記翻訳する動作は、前記第2の命令および第2のシンボルを、第3のフォーマットの対応する第3の命令および第3のシンボルに変換する動作であって、前記第3のフォーマットは、前記第1のフォーマットおよび前記第2のフォーマットとは異なる、翻訳する動作と、第2のデバッグ情報を生成する動作であって、前記第2のデバッグ情報は、前記第2の命令における各命令を、前記第3の命令における対応する命令にマッピングし、かつ前記第2のシンボルにおける各シンボルを、前記第3のシンボルにおける対応するシンボルにマッピングする、生成する動作とを含む、翻訳する動作と、前記第1のデバッグ情報および前記第2のデバッグ情報を統合された第3のデバッグ情報に融合する動作であって、前記統合された第3のデバッグ情報は、前記第1の命令を前記第3の命令に直接的にマッピングし、かつ前記第1のシンボルを前記第3のシンボルに直接的にマッピングし、前記融合する動作は、前記第1の命令および前記第1のシンボルの各々のために、前記第1のデバッグ情報内から、前記第1の命令または第1のシンボルに対応する第2の命令または第2のシンボルを識別する動作と、前記第2のデバッグ情報内から、前記識別した第2の命令または第2のシンボルに対応する第3の命令または第3のシンボルを識別する動作と、前記第1の命令または第1のシンボルを、前記識別した対応する第3の命令または第3のシンボルに直接的にマッピングする動作と前記第1の命令または第1のシンボルの、前記識別した対応する第3の命令または第3のシンボルへのマッピングを、前記統合された第3のデバッグ情報に格納する動作とを含む、融合する動作とを備えたことを特徴とする方法。前記第2の命令および前記第2のシンボルを、第3のフォーマットの対応する第3の命令および第3のシンボルに変換する前記動作は、前記第2の命令および第2のシンボルを、画像処理装置GPU上で実行可能なコードに変換する動作を含むことを特徴とする請求項8に記載の方法。前記第1のデバッグ情報および前記第2のデバッグ情報を前記統合された第3のデバッグ情報として融合する前記動作は、DataParallelCDPCソースコードにおける命令位置およびシンボルと、HighLevelShaderLanguageHLSLソースコードにおける命令位置およびシンボルとの間でマッピングする第1のデバッグ情報、ならびにHLSLソースコードにおける命令位置およびシンボルと、HLSLバイトコードにおけるアドレスおよびレジスタ名との間でマッピングする第2のデバッグ情報を、前記DPCソースコードにおける位置およびシンボルと、前記HLSLバイトコードにおけるアドレスおよびレジスタとの間でマッピングする第3のデバッグ情報に融合する動作を含むことを特徴とする請求項8に記載の方法。本発明は、異なるコンパイラステージからのデバッグ情報を融合する方法、システム、およびコンピュータプログラム製品に及ぶ。第1のコンパイルステージが第1のコードにアクセスする。第1のコードは、第1のフォーマットの第1の命令および第1のシンボルを含む。第1のコードが第2のコードに翻訳される。第1のコードを翻訳することは、第1の命令および第1のシンボルを、第2のフォーマットの対応する第2の命令および第2のシンボルに変換することを含む。第2のフォーマットは第1のフォーマットとは異なる。第1のコードを翻訳することはまた、第1のデバッグ情報を生成することをも含む。第1のデバッグ情報は、第1の命令内の各命令を、第2の命令内の対応する命令にマッピングし、第1のシンボル内の各シンボルを、第2のシンボル内の対応するシンボルにマッピングする。第2のコンパイルステージが第2のコードにアクセスする。第2のコードが第3のコードに翻訳される。第2のコードを翻訳することは、第2の命令および第2のシンボルを、第3のフォーマットの対応する第3の命令および第3のシンボルに変換することを含む。第3のフォーマットは、第1のフォーマットおよび第2のフォーマットとは異なる。第2のコードを翻訳することはまた、第2のデバッグ情報を生成することをも含む。第2のデバッグ情報は、第2の命令内の各命令を、第3の命令内の対応する命令にマッピングし、第2のシンボル内の各シンボルを、第3のシンボル内の対応するシンボルにマッピングする。第1のデバッグ情報および第2のデバッグ情報は、統合された第3のデバッグ情報に融合される。統合された第3のデバッグ情報は、第1の命令を第3の命令に直接的にマッピングし、第1のシンボルを第3のシンボルに直接的にマッピングする。第1の命令および第1のシンボルのそれぞれについて、第1の命令または第1のシンボルに対応する第2の命令または第2のシンボルが、第1のデバッグ情報内から識別される。識別された第2の命令または第2のシンボルに対応する第3の命令または第3のシンボルが、第2のデバッグ情報内から識別される。第1の命令または第1のシンボルが、識別された対応する第3の命令または第3のシンボルに直接的にマッピングされる。第1の命令または第1のシンボルの、識別された対応する第3の命令または第3のシンボルへのマッピングが、統合された第3のデバッグ情報に格納される。以下でより詳細に論じるように、本発明の実施形態は、例えば1つまたは複数のプロセッサやシステムメモリなどのコンピュータハードウェアを含む専用または汎用コンピュータを備え、または使用する。本発明の範囲内の実施形態はまた、コンピュータ実行可能命令および/またはデータ構造を搬送または格納する物理的コンピュータ可読媒体および他のコンピュータ可読媒体をも含むことができる。そのようなコンピュータ可読媒体は、汎用または専用コンピュータシステムでアクセスすることのできる任意の入手可能な媒体でよい。コンピュータ実行可能命令を格納するコンピュータ可読媒体は、コンピュータ記憶媒体装置である。コンピュータ実行可能命令を搬送するコンピュータ可読媒体は、伝送媒体である。したがって、限定ではなく例として、本発明の実施形態は、コンピュータ記憶媒体装置および伝送媒体という少なくとも2つのはっきり異なる種類のコンピュータ可読媒体を備えることができる。コンピュータ記憶媒体装置は、RAM、ROM、EEPROM、CD-ROM、DVD、または他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶装置、フラッシュドライブ、サムドライブ、あるいはコンピュータ実行可能命令またはデータ構造の形態の所望のプログラムコード手段を格納するのに使用することができ、汎用または専用コンピュータでアクセスすることのできる任意の他の媒体を含む。ネットワークは、コンピュータシステムおよび/またはモジュールおよび/または他の電子装置間での電子データの移送を可能にする1つまたは複数のデータリンクと定義される。ネットワークまたは別の通信接続ハードワイヤード、ワイヤレス、あるいはハードワイヤードまたはワイヤレスの組合せを介して情報がコンピュータに転送または提供されるとき、コンピュータは適切に、接続を伝送媒体とみなす。伝送媒体は、コンピュータ実行可能命令またはデータ構造の形態の所望のプログラムコード手段を搬送するのに使用することができ、汎用または専用コンピュータでアクセスすることのできるネットワークおよび/またはデータリンクを含むことができる。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。さらに、様々なコンピュータシステム構成要素への到達時に、コンピュータ実行可能命令またはデータ構造の形態のプログラムコード手段を伝送手段からコンピュータ記憶媒体装置にまたは逆も同様である自動的に転送することができる。例えば、ネットワークまたはデータリンクを介して受信されたコンピュータ実行可能命令またはデータ構造をネットワークインターフェースモジュール例えばNIC内のRAMにバッファリングし、次いでコンピュータシステムRAMおよび/またはコンピュータシステムのより揮発性の低いコンピュータ記憶媒体装置に最終的に転送することができる。したがって、伝送媒体も利用するさらには、主に利用するコンピュータシステム構成要素にコンピュータ記憶媒体装置を含めることができることを理解されたい。コンピュータ実行可能命令は、例えば、プロセッサで実行されたときに、汎用コンピュータ、専用コンピュータ、または専用処理装置に一定の機能または機能のグループを実施させる命令およびデータを含む。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語などの中間フォーマット命令、さらにはソースコードでよい。構造的特徴および/または方法的動作に特有の言い回しで主題を説明したが、添付の特許請求の範囲で定義される主題は、前述の特徴または上述の動作に必ずしも限定されないことを理解されたい。むしろ、記載の特徴および動作は、特許請求の範囲を実施する例示的形態として開示される。パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能な消費者向け電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話、PDA、ページャ、ルータ、交換機などを含む多くのタイプのコンピュータシステム構成を有するネットワークコンピューティング環境で本発明を実施できることを当業者は理解されよう。ネットワークを通じてハードワイヤードデータリンク、ワイヤレスデータリンク、あるいはハードワイヤードデータリンクとワイヤレスデータリンクの組合せによってリンクされるローカルコンピュータシステムとリモートコンピュータシステムがどちらもタスクを実施する分散システム環境で本発明を実施することもできる。分散システム環境では、ローカルメモリ記憶装置とリモートメモリ記憶装置のどちらにもプログラムモジュールを配置することができる。いくつかの実施形態では、中央演算処理装置CPUと並列にグラフィカルプロセッサユニットGPUを利用して所望の機能を実施するようにソースコードが開発される。すなわち、あるソースコードがCPUを対象とするように書かれ、別のソースコードがGPUを対象とするように書かれる。GPUを対象とするソースコードについて、マルチステージコンパイラを使用して、ソースコードをGPU上で実行可能なコードにコンパイルすることができる。一般に、本発明の実施形態は、コード生成プロセスでの複数の異なるコンパイルステージからのデバッグ情報を単一のデバッグ情報のセットに融合する。単一のデバッグ情報のセットは、最初のコンパイルステージに入力される命令およびシンボル例えば、ソースコードと、最後のコンパイルステージから出力される命令およびシンボル例えば、機械コードとの間を直接的にマッピングする。まず図2を参照すると、図2は、異なるコンパイラステージからのデバッグ情報を融合することを容易にする例示的コンピュータアーキテクチャ200を示す。コンピュータアーキテクチャ200は、マルチステージコンパイラ201およびデバッグ情報マッパ206を含む。マルチステージコンパイラ201は、コンパイラステージ202、203、204などを含む複数のコンパイラステージを含む。省略記号205は、マルチステートコンパイラ201が1つまたは複数の追加のコンパイラステージを含むことができることを表す。図示する構成要素のそれぞれは、例えばローカルエリアネットワークLAN、広域ネットワークWAN、さらにはインターネットなどのネットワークを介して互いに接続することができるまたはネットワークの一部である。したがって、図示する構成要素のそれぞれ、ならびに任意の他の接続されたコンピュータシステムおよびその構成要素は、ネットワークを介してメッセージ関連データおよび交換メッセージ関連データ例えば、インターネットプロトコルIPデータグラム、および伝送制御プロトコルTCP、ハイパーテキスト転送プロトコルHTTP、簡易メール転送プロトコルSMTPなどのIPデータグラムを利用する他の上位層プロトコルを作成することができる。ほぼ任意のプログラミング言語のソースコード211を入力としてマルチステージコンパイラ201に与えることができる。コンパイラステージ202はソースコード211を受信することができる。コンパイラステージ202は、ソースコード211の翻訳、変換、コンパイルなどの1つまたは複数を実施して、中間コード212を生成することができる。翻訳、変換、コンパイルなどの一部として、コンパイルステージ202はデバッグ情報221も生成することができる。デバッグ情報221は、ソースコード211内の命令およびシンボルと、中間コード212内の命令およびシンボルとの間をマッピングする。コンパイラステージ203は中間コード212を受信することができる。コンパイラステージ203は、中間コード212の翻訳、変換、コンパイルなどの1つまたは複数を実施して、中間コード212を生成することができる。翻訳、変換、コンパイルなどの一部として、コンパイルステージ203はデバッグ情報222も生成することができる。デバッグ情報222は、中間コード212内の命令およびシンボルと、中間コード213内の命令およびシンボルとをマッピングする。コンパイラステージ204は中間コード213を受信することができる。コンパイラステージ204は、中間コード213の翻訳、変換、コンパイルなどの1つまたは複数を実施して、別のコードを生成することができる例えば、実行可能コード214または次のコンパイラステージに渡される別の中間コード。翻訳、変換、コンパイルなどの一部として、コンパイルステージ204はデバッグ情報223も生成することができる。デバッグ情報223は、中間コード213内の命令およびシンボルと、別のコード内の命令およびシンボルとの間をマッピングする。別のコードが実行可能コード214であるとき、デバッグ情報223は、中間コード213内の命令およびシンボルと、実行可能コード214内の命令およびシンボルとの間をマッピングする。追加のコンパイラステージがマルチステージコンパイラ201内に含まれるとき、追加のコンパイラステージは、例えばデバッグ情報224などのデバッグ情報も生成することができる。デバッグ情報マッパ206は、マルチステージコンパイラ201のコンパイル状態で生成されたデバッグ情報を受信することができる。例えば、デバッグ情報マッパ206は、デバッグ情報221、222、223、224存在するときなどを受信することができる。デバッグ情報マッパ206は、221、222、223、224存在するときなどを統合されたデバッグ情報226に融合することができる。統合されたデバッグ情報226は、ソースコード211命令と実行可能コード214命令との間を直接的にマッピングし、ソースコード211シンボルと実行可能コード214シンボルとの間を直接的にマッピングする。したがって、統合されたデバッグ情報226を使用するとき、ソースコード211をより効率的にデバッグすることができる。次に図1を参照すると、図1は、異なるコンパイラステージからのデバッグ情報を融合することを容易にする例示的コンピュータアーキテクチャ100を示す。図示するように、コンピュータアーキテクチャ100は、マルチステージコンパイラ101およびデバッグ情報マッパ106を含む。マルチステージコンパイラ101は、コンパイラステージ102およびコンパイラステージ103をさらに含む。一般には、マルチステージコンパイラ101は、入力ソースコードを受信し、入力ソースコードを実行可能コードにコンパイルすることができる。コンパイル中に、コンパイラステージ102および103のそれぞれは、デバッグ情報を生成することができる。図3A-Cに、異なるコンパイラステージからのデバッグ情報を融合する例示的方法300の流れ図を示す。コンピュータアーキテクチャ100の構成要素およびデータに関して方法300を説明する。第1のコンパイルステージでは、方法300は、第1のコードにアクセスする動作を含み、第1のコードは、第1のフォーマットの第1の命令および第1のシンボルを含む動作301。例えば、コンパイラステージ102はソースコード111にアクセスすることができる。ソースコード111は、第1のフォーマット例えば、DataParallelCDPCの第1の命令および第1のシンボルを含むことができる。方法300は、第1のコードを第2のコードに翻訳する動作を含む動作302。例えば、コンパイラステージ102は、ソースコード111を中間コード112に翻訳することができる。動作302は、第1の命令および第1のシンボルを、第2のフォーマットの対応する第2の命令および第2のシンボルに変換する動作を含み、第2のフォーマットは第1のフォーマットとは異なる動作303。例えば、コンパイラステージ102は、ソースコード111内の命令およびシンボルを、中間コード112内の対応する命令およびシンボルに変換することができる。中間コード112のフォーマット例えば、HighLevelShaderLanguageHLSLソースコードは、ソースコード111の構成例えば、DPCとは異なる可能性がある。動作302は、第1のデバッグ情報を生成する動作を含み、第1のデバッグ情報は、第1の命令内の各命令を、第2の命令内の対応する命令にマッピングし、第1のシンボル内の各シンボルを、第2のシンボル内の対応するシンボルにマッピングする動作304。例えば、コンパイラステージ102はデバッグ情報121を生成することができる。デバッグ情報121は、ソースコード111内の各命令を、中間コード112内の対応する命令にマッピングする。例えば、命令マッピング131は、ソースコード111の行7を中間コード112の行12にマッピングする。デバッグ情報121はまた、ソースコード111内の各シンボルを中間コード112内の対応するシンボルにマッピングする。例えば、シンボルマッピング132は、ソースコード111のシンボルxを、中間コード112のシンボルvar_5にマッピングする。第2のコンパイルステージでは、方法300は、第2のコードにアクセスする動作を含む動作305。例えば、コンパイラステージ103は中間コード112例えば、HLSLソースコードにアクセスすることができる。方法300は、第2のコードを第3のコードに翻訳する動作を含む動作306。例えば、コンパイラステージ103は、中間コード112を実行可能コード113に翻訳することができる。動作306は、第2の命令および第2のシンボルを、第3のフォーマットの対応する第3の命令および第3のシンボルに変換する動作を含み、第3のフォーマットは第1のフォーマットおよび第2のフォーマットとは異なる動作307。例えば、コンパイラステージ103は、中間コード112内の命令およびシンボルを、実行可能コード113内の対応する命令およびシンボルに変換することができる。実行可能コード113のフォーマット例えば、HLSLバイトコードは、ソースコード111例えば、DPCおよび中間コード112例えば、HLSLソースコードのフォーマットとは異なる可能性がある。動作306は、第2のデバッグ情報を生成する動作を含み、第2のデバッグ情報は、第2の命令内の各命令を、第3の命令内の対応する命令にマッピングし、第2のシンボル内の各シンボルを、第3のシンボル内の対応するシンボルにマッピングする動作308。例えば、コンパイラステージ103は、統合されたデバッグ情報122を生成することができる。統合されたデバッグ情報122は、中間コード112内の各命令を、実行可能コード113内の対応する命令にマッピングする。例えば、命令マッピング133は、中間コード112の行12を実行可能コード113の命令id7にマッピングする。統合されたデバッグ情報123はまた、中間コード112内の各シンボルを、実行可能コード113内の対応するシンボルにマッピングする。例えば、シンボルマッピング134は、中間コード112のシンボルvar_5を実行可能コード113のレジスタr3にマッピングする。方法300は、第1のデバッグ情報および第2のデバッグ情報を第3のデバッグ情報に融合する動作を含み、第3のデバッグ情報は、第1の命令を第3の命令に直接的にマッピングし、第1のシンボルを第3のシンボルに直接的にマッピングする動作309。例えば、デバッグマッパ106は、デバッグ情報121およびデバッグ情報122を統合されたデバッグ情報123に融合することができる。統合されたデバッグ情報123は、ソースコード111内の命令と、実行可能コード113内の命令との間を直接的にマッピングする。統合されたデバッグ情報123はまた、ソースコード111内のシンボルと、実行可能コード113内のシンボルとの間で直接的にマッピングする。第1の命令および第1のシンボルのそれぞれについて、動作309は、第1のデバッグ情報内から、第1の命令または第1のシンボルに対応する第2の命令または第2のシンボルを識別する動作を含む動作310。例えば、デバッグマッパ106は、中間コード112の行12がソースコード111の行7に対応することを識別することができる。同様に、デバッグマッパ106は、中間コード112のシンボルvar_5がソースコード111のシンボルxに対応することを識別することができる。第1の命令および第1のシンボルのそれぞれについて、動作309は、第2のデバッグ情報内から、識別した第2の命令または第2のシンボルに対応する第3の命令または第3のシンボルを識別する動作を含む動作311。例えば、デバッグマッパ106は、実行可能コード113の命令id7が中間コード112の行12に対応することを識別することができる。同様に、デバッグマッパ106は、実行可能コード133のレジスタr3が中間コード112のシンボルvar_5に対応することを識別することができる。第1の命令および第1のシンボルのそれぞれについて、動作309は、第1の命令または第1のシンボルを、識別した対応する第3の命令または第3のシンボルに直接的にマッピングする動作を含む動作312。例えば、デバッグマッパ106は、命令マッピング136を構築して、ソースコード111の行7と実行可能コード113の命令id7との間を直接的にマッピングすることができる。同様に、デバッグマッパは、シンボルマッピング137を構築して、ソースコード111のシンボルxと、実行可能コード113のレジスタr3との間を直接的にマッピングすることができる。第1の命令および第1のシンボルのそれぞれについて、動作309は、第1の命令または第1のシンボルの、識別した対応する第3の命令または第3のシンボルへのマッピングを第3のデバッグ情報に格納する動作を含む動作313。例えば、デバッグマッパ106は、命令マッピング136およびシンボルマッピング137を、統合されたデバッグ情報123に格納することができる。次いで、統合されたデバッグ情報123をデバッグモジュール図示せずで使用して、ソースコード111のデバッギングを支援することができる。より具体的に、本発明のいくつかの実施形態は、DPCコードを、画像処理装置GPUで実行されるHLSLバイトコードにコンパイルすることに関する。第1のコンパイルステージが、すべての各DPCforallコールサイトに対応する平坦化されたHLSLソースレベル計算シェーダflattenedHLSLsourcelevelcomputershaderを生成する。第2のコンパイルステージが、HLSLコンパイラを起動して、生成したHLSLソースレベル計算シェーダに対応するHLSLバイトコードを生成する。その後で、forallコールサイトで各カーネル呼出しについて生成したバイトコードが、コンパイラが生成したPEportableexecutable実行可能ファイルのテキストセグメント内に格納される。各コンパイルステージで、シンボリックマッピングのセットが生成される。シンボリックマッピングは、そのコンパイルステージの一部として実施された翻訳を表す。第1のコンパイルステージは、DPCソースシンボルと、生成したHLSLソースコードシンボルとの間のマッピングを定義する。第2のコンパイルステージは、HLSLソースコードシンボルと、最終的なHLSLバイトコード内の対応する位置バイトコードアドレス、レジスタとの間のマッピングを定義する。デバッグ効率およびメモリフットプリントの削減を促進するために、以下の理由で、DPCソースシンボルと最終的なHLSLバイトコードとの間の直接的マッピングを与える単一の記録のセットにシンボリックデバッグ情報を融合することができる。単一のマッピングのセットは、コンパイラが、PE実行可能ファイルに格納されるHLSLバイトコードブロブから中間HLSL-バイトコードシンボリックマッピング情報intermediateHLSLtobytecodesymbolicmappinginformationを取り除くことを可能にし、したがって実行可能ファイルのメモリフットプリントが削減される。さらに、単一のシンボリックデバッグ情報記録のセットは、DPCソースからHLSLソースへのマッピングと、その後に続くHLSLソース-バイトコードマッピングの2レベルマッピング、およびその逆の代わりにソースシンボルおよび位置とHLSLバイトコードアドレスおよびレジスタとの間の直接的マッピングを可能にすることにより、GPUデバッガでのDPCシンボル分解の単純化と促進をどちらも行う。例えば、第1のコンパイラステージを使用して、例示的DPCコードvoidintaddkernelcab行11を、例示的HLSLソースコードvoidhlslintaddkernelvar2var1var0行24に翻訳することができる。その後で、第2のコンパイラステージが、例示的HLSLソースコードを例示的HLSLバイトコードにコンパイルする。r2r1r0命令索引5コンパイラバックエンドでHLSLソースコードを生成するとき、コードタプルおよびシンボルからHLSLソース位置およびシンボル名へのマッピングを、例えばプログラムデータベースPDB記録などの何らかの内部データ構造に格納することができる。例えば、第1のコンパイラステージは、DPCソースコード命令およびシンボルをHLSLソースコード命令およびシンボルにマッピングする第1の内部データ構造を生成することができる。DPCline11HLSLline24DPCsymbolaHLSLsymbolvar0DPCsymbolbHLSLsymbolvarlDPCsymbolcHLSLsymbolvar2その後で、第2のコンパイラステージは、HLSLソースコード命令およびシンボルをHLSLバイトコードにマッピングする第2の内部データ構造を生成することができる。HLSLline24Bytecodeinstructionid5HLSLsymbolvar0Bytecoderegisterr0HLSLsymbolvarlBytecoderegisterr1HLSLsymbolvar2Bytecoderegisterr2リーダ構成要素を実装して、第2の内部データ構造を読み取り、HLSLソース位置およびシンボルをバイトコードアドレスおよびレジスタに分解することができる。次に、第1の内部データ構造を使用して、DPCソース位置およびシンボルとHLSLバイトコードアドレスおよびレジスタ名との間の直接的マッピングを生成する。直接的マッピングを、例えばPDB記録の形などで第3の内部データ構造に格納することができる。DPCline11Bytecodeinstructionid5DPCsymbolaBytecoderegisterr0DPCsymbolbBytecoderegisterr1DPCsymbolcBytecoderegisterr2本発明の精神または不可欠な特徴から逸脱することなく他の特定の形態で本発明を実施することができる。記載の実施形態は、すべての点で、限定的なものではなく、例示的なものとみなされるべきである。したがって、本発明の範囲は、上記の説明ではなく添付の特許請求の範囲によって示される。特許請求の範囲と等価な意味および範囲の中にあるすべての変更は、その範囲内に包含されるべきである。