0

特定の計算を実行するためにGPUを使用するプログラムがあります。コマンドラインを使用してプログラムを正しく実行することができます。しかし、PHPを介して同じステートメントを実行しようとすると、問題が発生します。

私はwamp2.0を使用しており、exec関数とproc_open関数を使用してプログラムを実行しようとしましたが、プロセスが正しく開始されていても、GPU部分に関しては、プログラム自体でエラーが発生します。シェーダーはハードウェアでサポートされていません。」プログラムは、使用されているグラフィックカードの種類も最初に検出しますが、これも発生していません。

明確にするために、私はGPUプログラムを作成していません。また、同じステートメントをコマンドラインから直接実行できますが、phpを介して実行することはできません。直接ではなくphpからコマンドを実行することの違いは何ですか?

NVIDIAGT8600グラフィックカードを使用しています。どんな助けでも素晴らしいでしょう。

プログラムでは、glGetString(GL_VENDOR)を使用してグラフィックカードベンダーをチェックすると、NVIDIAではなくMicrosoftCorporationを取得します。これがすべての問題を引き起こしていますが、phpから実行した場合にのみ問題が発生する理由はまだわかりません。

また、コマンドラインからスタンドアロンでphpスクリプトを実行しようとしましたが、この場合、グラフィックカードが正しく検出され、すべてが正常に機能します。ブラウザを使用した場合にのみ機能しません。

4

1 に答える 1

0

少し調べてみると、Windows 7でのセッション0の分離が原因で問題が発生していることがわかりました(質問でWindows 7について言及しなかったことを心からお詫びします)

その要点は、セッション0にあるwampapacheサービスによって開始されたプロセスは、ディスプレイデバイスにアクセスできません(これには、私のサービスがセッション1の一部である必要があります)。そのため、GPUプロセスを呼び出すときのコードは、グラフィックカードを検出できません。

これを回避する1つの方法は、セッション1でサービスを生成し、そのサービスにプロセスを実行させることです。NVIDIAフォーラムには、これを行う方法を示すサンプルコードとともに優れたスレッドがあります。

http://forums.nvidia.com/index.php?showtopic=93450&pid=1047458&mode=threaded&start=#entry1047458

于 2010-07-19T17:51:05.793 に答える