Выполнение инструкций ЦП/GPU из управляемого кода

Принятие во внимание выполнения отключает бит, что является рекомендуемым способом выполнить инструкции против собственного процессора от управляемой среды высокого уровня, такие как VB.NET 2008 или C#. Кроме того, кто-либо достиг подобный в выполнении инструкций GPU против графического процессора?

9
задан Gilles 'SO- stop being evil' 3 May 2012 в 18:18
поделиться

3 ответа

Существует несколько вариантов GPU для C #, для прямого доступа, не возвращаясь к P / не вызывает или писать свои собственные обертки C ++:

  • Brahma довольно интересно. Он обеспечивает доступ к GPU напрямую через индивидуальный поставщик LINQ. Код включает в себя некоторые образцы высокочастотных методов, проводимых в GPU, все написанные в C # через LINQ.
  • Slimdx обеспечивает хорошую обертку .NET для всех основных функций DirectX. С пользовательскими шейдерами вы можете сделать вычисление на GPU через DirectX. Он также включает поддержку DX11, поэтому вы можете использовать Specute Shaders напрямую (если у вас есть аппаратное обеспечение для него).
  • Вы можете получить доступ к CUDA через CUDA.NET .
  • Вы можете использовать OpenCL через OpenCL.net .

Что касается инструкций CPU, это обычно потребует отбрасывания на нативный код более низкого уровня со сборкой ассемблера. Вероятно, самое интересное, полностью управляемое (по крайней мере частично связанное) вариант будет использовать mono.simd , который обеспечивает прямой доступ к инструкциям SIMD в процессоре от управляемого кода при запуске на моно-стеке.

8
ответ дан 4 December 2019 в 15:18
поделиться

Это не вариант. Вам придется p / вызывать функцию в DLL, которая была сгенерирована MASM или записана в неуправляемом C / C ++, используя встроенную сборку или внутрисину. Или используйте компилятор C ++ / CLI и генерируйте код смешанного режима с управлением #PRAGMA.

Остерегайтесь, что теперь вы сейчас больше не можете зависеть от компилятора JIT, генерируя любой код платформы для операционной системы. Используйте Project + Properties, создайте вкладку, цель платформы, чтобы заставить архитектуру соответствовать вашу неуправляемый код.

Посмотрите на CUDA для управляемого процессора GPU.

3
ответ дан 4 December 2019 в 15:18
поделиться

Создайте неуправляемую библиотеку .dll с любыми инструкциями, которые вы хотите, и используйте P / Invoke, чтобы вызвать его.

2
ответ дан 4 December 2019 в 15:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: