С подъемом.Net 4.0 и новыми параллельными расширениями, я задался вопросом, сможет ли CLR оптимизировать и продвинуть некоторые вычисления к GPU? Или если какая-либо библиотека, которая может помочь с задачей, существует?
Я не эксперт по программированию GPU вообще, поэтому простите мне, если это - глупый вопрос. Возможно, CLR не поддерживает взаимодействие через интерфейс к системе команд GPU? Действительно ли они слишком примитивны, или просто из объема?
Заранее спасибо.
[РЕДАКТИРОВАНИЕ] Просто для уточнения: Я знаю о CUDA и подобных библиотеках, но я хочу знать, существует ли чистое решение .NET, и если так, это может выполнять незаметную работу для Вас, или необходимо ли сделать явное кодирование?
Нет ничего интегрированного в .NET, связанного с этим.
Но я думаю, что это то, что вы ищете (может быть использовано в .NET) ;) :
http://research.microsoft.com/en-us/projects/Accelerator/
also FYI: http://brahma.ananthonline.net/
CLR ориентирован только на CPU (Microsoft's Research OS Helios имеет задачу поддержки GPU на уровне CIL через гетерогенное исполнение).
Так что пока единственная альтернатива - использование одной из этих библиотек:
Он обеспечивает упрощенное программирование GPU через библиотеку высокого уровня с параллельными данными (проект находится в своем v2.0).
Хорошая статья здесь: http://tomasp.net/articles/accelerator-intro.aspx
Использует синтаксис LINQ C# 3.0 для указания потокового преобразования данных.
XNA предназначена для графики, но вы можете рендерить вне экранных поверхностей и использовать вершинные и пиксельные шейдеры, так что вы можете использовать ее для запуска GPU-кода для выполнения вычислений. Однако это будет довольно сложно и потребует много низкоуровневой упаковки данных и написания шейдерного кода.
.Я не знаю, что библиотека Parallel Extensions делает что-нибудь на GPU.
Я не удивлюсь, если узнаю, что MS исследует это, но я не верю, что есть что-нибудь подобное в .NET 4.0. Параллельные расширения все еще чрезвычайно круты, заметьте.