Доступ к графическому процессору в Windows Mobile

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

Я хотел бы использовать C #, но если это невозможно, то C ++ подойдет.

Спасибо за любые указания!

РЕДАКТИРОВАТЬ-

Примером типов вычислений, которые я хочу передать на GPU, могут быть такие, как вычисление местоположения 25-100 различных прямоугольников, чтобы их можно было разместить на экране. Это всего лишь простой пример, но в настоящее время я выполняю такие вычисления в отдельном потоке, поэтому я подумал (поскольку это геометрические вычисления), это будет основным кандидатом на GPU.


person joe_coolish    schedule 23.06.2011    source источник
comment
Для ясности, вы спрашиваете об API GPGPU, а не о рендеринге?   -  person Ben Voigt    schedule 23.06.2011
comment
@ Бен: Думаю, да. ускорять различные вычисления [на] GPU вместо того, чтобы полагаться на CPU.   -  person user703016    schedule 23.06.2011
comment
@Cicada: Есть также много вычислений, связанных с рендерингом, которые могут выполняться как на CPU, так и на GPU. Некоторые пояснения (и, возможно, примеры расчетов) были бы полезны.   -  person Ben Voigt    schedule 23.06.2011
comment
@Ben: Я согласен. У меня такое ощущение, что OP спрашивает об общих расчетах, но я могу ошибаться.   -  person user703016    schedule 23.06.2011
comment
Вау, извините за отсутствие! Я только что начал новую работу и все такое. В любом случае, спасибо за ответы! Типы вычислений, которые я хотел перенести на графический процессор, были общими вычислениями, но они будут использоваться для настройки представления для моего дисплея. Я дополню пост примером.   -  person joe_coolish    schedule 29.08.2011


Ответы (1)


Чтобы полностью ответить на ваш вопрос, мне понадобятся более подробные сведения о том, какие вычисления вы пытаетесь выполнить, но краткий ответ - нет, графические процессоры в устройствах Windows Mobile и SDK, предоставляемый Microsoft, не подходят для GPGPU (универсальные вычисления на графическом оборудовании. ).

GPGPU действительно стал практичным только тогда, когда графические процессоры начали предоставлять программируемые вершинные и пиксельные шейдеры с DirectX9 (и ограниченную поддержку в 8). Графические процессоры, используемые с устройствами Windows Mobile 6.5, намного больше похожи на графические процессоры, использующие DirectX8, и не имеют программируемых вершинных и пиксельных шейдеров: http://msdn.microsoft.com/en-us/library/aa920048.aspx

Даже на современных настольных видеокартах с библиотеками GPGPU, такими как CUDA, повышение производительности при переносе вычислений на графический процессор - нетривиальная задача. Вычисления должны быть изначально приспособлены к GPUS (т.е. иметь возможность массового параллельного выполнения и достаточного количества вычислений, выполняемых в любой памяти, чтобы компенсировать затраты на передачу данных на GPU и обратно).

Однако это не означает, что невозможно ускорить вычисления с помощью графического процессора в Windows Mobile 6.5. Существует небольшой набор проблем, которые можно сопоставить с конвейером фиксированных функций без шейдеров. Если вы можете понять, как решить вашу проблему, разорвав полигоны и прочитав полученное изображение, вы можете использовать для этого графический процессор, но маловероятно, что необходимые вам вычисления будут подходящими или что это будет стоит попыток.

person dschaeffer    schedule 28.06.2011
comment
Спасибо за ваше понимание. Я предполагаю, что, учитывая количество вычислений (или их отсутствие) и тип вычислений, я должен просто найти способы оптимизировать алгоритмы, а не пытаться протолкнуть их на графический процессор. Что ж, попробовать стоило! - person joe_coolish; 29.08.2011