1

PostgreSQL内で実行されるOpenCL関数を作成しようとしています。これを行うには、OpenCLコードからDLLを作成し、ユーザー定義関数メカニズムを使用してpostgresにリンクします。clGetPlatformIDsが呼び出されるまで、すべてがうまくいきます。関数はエラー-1001を返します。これは、OpenCLドライバーの検索に問題があることを示しています。

同じコードをコンパイルして(postgresの魔法を削除する必要がありました)実行して成功しました-すべてのプラットフォームが正しく検出されたので、SDKとドライバーを正しくセットアップしたと思います。

Windows7x64でPostgreSQL9.1を実行しています。また、VisualStudio2010でNvidiaCUDASDK 4.2を使用しており、GeForceGTS450でコードを実行しています。

4

2 に答える 2

2

これは、Windows、サービス、GPU、セキュリティ、およびデバイス ドライバーに関する MSFT の問題です。

Windows で PostgreSQL をサービスとして実行することはできず、GPU も表示されません。Windows サービスからの「グラフィック」デバイスへのアクセスを許可しないセッション O アイソレーションに到達しています。PostgreSQL を (サービスではなく) プロセスとして開始するか、サーバーを Linux に置くことができます。

http://www.scribd.com/doc/58343489/Windows-Session-0-Isolation-Impact-on-GPU-as-Serviceを参照して ください。

また、タイムアウト時間までに画面にアクセスしないと Windows が GPU を再起動するため、Linux で実行する重要な理由は他にもあります。http://msdn.microsoft.com/en-us/library/windows/hardware/ff570088%28v=vs.85%29.aspxを参照して ください。

NVida には、Windows 上の特定の Tesla カード用の非グラフィックス GPU デバイス ドライバーがあります。これらのカードにはビデオ出力がありません。したがって、それらはグラフィックス デバイス ドライバーとは見なされません。

于 2013-01-19T04:16:46.697 に答える
-1

おそらく、ライブラリはいくつかの環境変数を使用して SDK を見つけようとし、環境は PostegreSQL コンテキスト内で継承されません。

したがって、2 つのコードから環境をダンプして、 OpenCL/Cuda 変数がスタンドアロン プログラムで使用可能であり、PostegreSQL UDF で欠落しているかどうかを確認してください。

于 2013-01-06T15:54:31.497 に答える