[완료] C++과 C#으로 GPU연산 하는 방법??

hiluciano의 이미지

여러개의 루프문 같은거 처리 할 때 멀티코어면 각각의 코어에 루프문을 돌리게 하고
아예 GPU에다가도 부담을 시킬 수 있다던데

C++하고 C#에서 이걸 어떻게 구현을 시키나요?

prio의 이미지

gpu 회사에서 제공하는 api와 드라이버를 사용하시면 됩니다.

요즘 가장 많이 사용되는 것은 nvidia의 cuda 인 것 같구요.
표준 비슷하게 opencl 도 있습니다.

cuda의 경우 c 언어의 확장 형태로 제공되는 것이라서
c++, c#에서 c api를 호출하는 방식대로 사용하시면 됩니다.

hiluciano의 이미지

OpenCL이 좋아 보이던데
OpenCL은 아직 교재같은거 안 나왔나요? 검색해 봤는데 없네요...

그리고 CUDA는 전용 컴파일러가 따로 필요하고
NVIDIA 그래픽 카드 꽂혀있는 경우에만 쓸 수 있다던데
사실인가요?

prio의 이미지

OpenCL 1.0이 나온게 (지난 여름이 아니라) 작년 겨울이라 아직 책 쓸 시간은 없었을 것 같네요 ^^

gpu에서 일반 프로그램을 실행시킬 수 있는 기술의 이름이
nvidia는 cuda, ati는 stream 인 것이라서
cuda를 쓰려면 당연히 nvidia 카드가 있어야 하는 것이지요.

opencl 이라는 것도, 그저 api 정의만 해 놓은 것이라서
각 구현은 역시나 각 gpu 회사가 제공해줘야 합니다.
cross-platform 이기는 해도 결국 각 gpu 별로 컴파일러는 따로 써야하지요.

@ 찾아보니 지난 여름이 아니라 작년 겨울이더군요. ㅋ

kjs2k의 이미지

현재 openCL 1.1b까지 나와있고요.
Nvidia의 경우 CPU없이 GPU만 돌아갑니다.
AMD의 경우 CPU+GPU가 되나 지원되는 카드가 Nvidia의 경우보다 그 수가 적네요.
Intel의 경우 MIC를 올해 하순경 출시할 겁니다.

위 3개 회사가 경쟁체제로 돌아가면서,
IBM, Apple 등도 동참하고요.
CUDA가 Nvidia만 지원하는데 비해 openCL은 Nvidia뿐 아니라 수십개의 대형 업체들이 참여하더군요. 블리자드도 참여하는 걸보면 앞으로는 게임도 지금보다 훨씬 고사양의 게임이 나올듯 합니다.
아마도 슈퍼컴에서 게임하는 형국이 되지나 않을까요? ^^

그리고, 제1회 heterogeneous computing 워크샵을 2월21-24일동안 다녀왔습니다.
openCL에 대해 많이 배우고 왔습니다.
책자나 자료를 원하시면 서울대 매니코어연구단을 통해 얻으실 수 있을겁니다.
앞으로도 겨울학교를 운영한다고하니 관심있으신분들은 그 때 같이 봐요~ ^^

khris의 이미지

프로그래머블 쉐이더 쓰셔도 됩니댜 얃얃

───────────────────────
yaourt -S gothick elegant
khris'log

───────────────────────
yaourt -S gothick elegant
khris'log

hiluciano의 이미지

OpenMP도 있네요. 관련 서적도 조금 보이고요.

이게 OpenCL하고 어떤 차이가 있나요?

둘 중에 어떤걸 쓰는것이 더 나을까요?

jinserk의 이미지

openMP 는 multi-core CPU 와 분산 처리환경 에서 병렬 연산 코딩을 위한 라이브러리이고,
openCL 은 단일 컴퓨터 내 CPU 와 GPU 를 포함한 모든 연산자원에 병렬 처리를 지원하는 라이브러리로 알고 있습니다.

openMP 는 주로 MPI 와 함께 클러스터 내에서 병렬 연산을 지원하는데 사용하죠.
일반적인 용도라면 openCL 이 좀더 가깝지 않을까 싶네요.

Leo.

ertai119의 이미지

만일 openMp를 쓰신다면 openmp보단 tbb를 추천해드립니다.

cleansugar의 이미지

openmp 책도 있네요.

두번째 cuda 책도 나왔습니다.

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.