2010-07-16 2 views
0

У меня есть программа, которая использует GPU для выполнения определенных вычислений. Я могу заставить программу работать правильно, используя командную строку. Но когда я пытаюсь выполнить тот же оператор через PHP, я столкнулся с проблемой.Выполнение программы GPGPU через WAMP

Я использую wamp 2.0, и я попробовал функции exec и proc_open, чтобы попытаться запустить программу, но даже если процесс запускается правильно, когда дело доходит до части GPU, сама программа поднимает ошибка «Шейдер не поддерживается вашим оборудованием». Программа также первоначально определяет тип используемой видеокарты, но это также не происходит.

Чтобы быть ясным, я не написал программу GPU. И я могу запустить тот же оператор непосредственно из командной строки, но не через php. В чем разница в выполнении команды от php, а не непосредственно?

Я использую графическую карту NVIDIA GT8600. Любая помощь вообще была бы замечательной.

В программе, когда он проверяет наличие поставщика видеокарты с использованием glGetString (GL_VENDOR), вместо Microsoft NVIDIA появляется корпорация Microsoft. Это вызывает все проблемы, хотя я до сих пор не знаю, почему это делается только тогда, когда я запускаю его из php.

Я также попытался запустить скрипт php отдельно от командной строки, и в этом случае моя графическая карта обнаружена правильно, и все работает нормально, только когда я просматриваю свой браузер, это не сработает.

+0

Это скорее ошибка в программе GPU. Вы пытались установить рабочий каталог на PHP (при выполнении) как тот, который вы использовали в командной строке? – mauris

+0

Да, я тоже, я также дал абсолютные пути везде, и, как я уже сказал, программа действительно начинается, но ее просто не удается запустить части GPU. Он выполняет проверку на графическом процессоре и возвращается с ошибкой, говоря, что я не могу поддерживать шейдер. – Slartibartfast

+0

Возможно ли, что пользователю, выполняющему PHP-код, не хватает правильных разрешений? Я почти ничего не знаю о Windows, но в Linux это происходит, когда ваш пользователь не может открыть/dev/nvidiactl. Здесь есть информация об этом виде: http://www.nvnews.net/vbulletin/showthread.php?t=89965 Незначительная отправная точка. –

ответ

0

Через некоторое копаться я обнаружил, что эта проблема возникает из-за сеанса 0 изоляции в Windows 7 (я смиренно прощения за не упоминать окна 7 в вопросе)

Суть причем, любой процесс, инициированный служба wampapache, которая находится в сеансе 0, не может получить доступ к устройствам отображения (для чего моя служба должна быть частью сеанса 1). Поэтому мой код при вызове процесса GPU не может обнаружить мою графическую карту.

Один из способов обойти это - создать службу в сеансе 1, а затем разрешить выполнение этого процесса. На форумах NVIDIA есть хорошая тема, а также примерный код, который показывает, как это можно сделать.

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

Смежные вопросы