[C#] c #으로 GPU 활용하기

그리드에서 더 많은 처리 능력을 얻으려고합니다.

모든 CPU / 코어를 사용하고 있으며 C #으로 GPU를 사용할 수 있습니까?

누구나 라이브러리를 알고 있거나 샘플 코드를 가지고 있습니까?



답변

[ 이 답변조차 꽤 오래되어 OCT 2017 편집 ]

이 답변의 대부분은 상당히 오래되었으므로 각 프로젝트가 어디에 있다고 생각하는지에 대한 업데이트 된 요약을 제공 할 것이라고 생각했습니다.

  • GPU.Net (TidePowerd)-6 개월 정도 전에 시도해 보았지만 약간의 작업이 필요했지만 작동했습니다. 컴파일 타임에 C # 커널 코드를 cuda로 변환합니다. 불행히도 그들의 웹 사이트는 다운되었고 github은 몇 년 동안 업데이트되지 않았습니다.

  • Cudafy- 오픈 소스이며 사용하기 매우 쉽습니다. 런타임에 C # 커널 코드를 cuda로 변환합니다 (직렬화 및 캐시 가능). CPU에서 동일한 커널 코드를 쉽게 실행할 수 있습니다 (주로 디버깅 용). 여러 GPU를 지원합니다. 여기에 다른 것보다 더 많은 예제가 있습니다. 다른 답변에서 언급 한 상용구 코드는 최소한이며 제 경우에는 코드 작동 방식에 대한 이해에 도움이되었습니다. Cuda / Nvidia 만 가능합니다. 불행히도 그들은 몇 년 동안 솔루션을 업데이트하지 않은 것으로 보입니다 (2015 년 최신 커밋-cuda 7.0 지원).

  • 하이브리드 라이저 . C #을 CUDA로 컴파일하는 상용 솔루션. Visual Studio 마켓 플레이스 에서 무료 커뮤니티 에디션을 제공하고 github에서 샘플을 제공합니다 .

  • 소비자 GPUS 를위한 무료 커뮤니티 에디션을 갖춘 AleaGPU 상업용 솔루션. 자세한 내용은 Daniel의 의견을 참조하십시오.

  • 브라흐마-OpenCL을 통해 LINQ 표현식을 실행합니다 (따라서 AMD도 지원). 많은 문서 / 예제. 2011 년 마지막 업데이트.

  • C $ -10 년 전에 마지막 개발이 이루어졌습니다 …

  • Microsoft Accelerator- 더 이상 활발히 개발되고있는 것처럼 보이지 않습니다.

  • 일부 다른 것 ( C ++ AMP , OpenTK-dead / Cloo )-이것들 중 다수는 바인딩 일뿐입니다. 즉 C #에서 GPU를 호출 할 수 있지만 커널 코드 (실제로 GPU에서 실행되는 코드)를 작성해야합니다. C 또는 OpenCL은 다른 언어를 사용하고 학습해야 함을 의미합니다.

내가 말했듯이 Cudafy는 다른 모든 것보다 Cudafy를 추천 할 것입니다-OpenCL과 Cuda에서 실행될 수 있다면 완벽 할 것입니다.


Suda 2013 편집 Cudafy를 사용하면 CUDA와 OpenCL 을 모두 컴파일 할 수 있으므로 모든 GPU에서 동일한 C # 코드를 실행할 수 있습니다. OpenCL 컴파일을 아직 테스트하지는 않았지만 환상적으로 들립니다.


답변

Microsoft Research Accelerator 는 .NET GP GPU 라이브러리입니다.


답변

브라마를 발견했습니다 … 또한 GPU에서 메소드를 실행할 수있는 GPGPU 제공 업체가 있습니다 … 질문에 감사드립니다 … 오늘 새로운 것을 배웠습니다. 🙂


답변

탐험의 수단으로 XNA Game Studio를 추천 할 수 있습니까? 분명히 게임 작성에 적합하지만 관리되는 DirectX에서 이전에 사용했던 것보다 그래픽 카드에 대한 액세스 권한과 기능 열거 기능 및 셰이더 개발에 대한 액세스 권한이 훨씬 뛰어납니다. WinForms와 XNA를 하이브리드 애플리케이션으로 결합하는 방법도 있습니다 :

http://www.ziggyware.com/news.php?readmore=866

쉐이더 프로그래밍 학습에 약간의 노력을 기울여야하지만 (XNA는 HLSL을 지원함) 이것은 nVidia의 CUDA와 같은 공급 업체별 솔루션을 학습하는 것보다 간단한 접근법 일 수 있습니다. 장점은 100 % 관리 환경에서 프로그래밍 할 수 있다는 것입니다. 다음은 몇 가지 HLSL 링크입니다.

http://www.ziggyware.com/weblinks.php?cat_id=9

GPGPU 사이트는 또한 범용 GPU 프로그래밍을위한 권장 대상입니다.

http://gpgpu.org/

행운을 빕니다!


답변

방법에 대한 http://www.tidepowerd.com/ GPU.NET?


답변

또 다른 하나는 CUDAfy 입니다. 메소드 속성만큼 간단한 것이 전체 메소드가 GPU에서 실행될 수 있다는 점에서 GPU.Net처럼 들립니다. 그러나 GPU.Net과 달리 CUDAfy는 무료이며 오픈 소스입니다.

CUDAfy는 GPU.Net에 보일러 플레이트 코드가 필요없는 것으로 보입니다 (문서에 따르면 “빌드 툴에 의해 자동으로 주입됩니다”) .


CUDAfy를 사용하여 애플리케이션을 빌드하는 예는 다음 과 같습니다.


답변

글쎄 이것은 꽤 오래된 질문이며, 질문을 받았기 때문에 많은 것이 바뀌 었습니다.
.Net을 사용하여 GPU 코드를 작성하는 또 다른 옵션은 Alea GPU 에서 아무도 언급하지 않았습니다 . C #, F # 및 VB를 다룹니다.

.NET 및 Mono 용 전문 GPU 소프트웨어 개발 환경. 진정한 크로스 플랫폼

F # 공식 사이트에서 Alea는 GPGPU 프로그래밍에서 F #을 사용 하는 첫 번째 옵션 입니다.
이 프레임 워크를 알기 위해서는 포괄적 인 예제 목록을 살펴 보는 것이 좋습니다 .