GPU 프로그램에 대한 질문

y3n313의 이미지

OpenCL이라거나 CUDA라는 것들에 대한 기본 지식이 부족한 상태에서 질문을 올립니다.

일반 CPU상에서 동작하는 프로그램은 코드를 작성하고 나면 컴파일러에 의해 해당 CPU에 맞는 바이너리가 생성되고, 이를 실행하면 바이너리가 메모리에 올라가 CPU가 메모리에서 코드를 실행하게 됩니다.

그렇다면 GPU 프로그램은 어떤 순서를 거쳐서 GPU에서 동작하는지요?

여기서 말하는 GPU 프로그램은, OpenCL이나 CUDA를 통해 작성된 프로그램 뿐만아니라, 이들을 사용하지 않은 GPU연산을 통해 그래픽작업을 수행하는 모든 프로그램을 말합니다.
GPU 프로그램도 실행 자체는 CPU에서 시작할 것이라 생각합니다. 프로그램은 보통 스토리지에 파일 형태로 있을테니, 이를 실행하면 CPU가 이를 메모리에 올렸다가 어떻게해서 GPU에 전달하겠지요.
제 생각에는 다음 순이 아닐까 싶은데 맞는지 모르겠습니다.
1. CPU가 GPU에서 돌릴 프로그램을 CPU의 메모리에 올린다.
2. 그래픽 카드 드라이버를 통해 해당 프로그램을 GPU에, 그리고 그래픽 카드 메모리에 전달한다.
3. GPU에게 그래픽카드 메모리에 프로그램이 로드되었으니 실행하라는 커맨드를 내려서 작업을 수행하고, 그 결과 값을 어떤 방법을 통해서든(인터럽트든 폴링이든 무엇이든) CPU가 얻는다.

또 하나 생기는 의문은, GPU는 GPU 나름의 ISA가 있을텐데 그렇다면 CPU가 로드한 GPU의 프로그램은 CPU가 읽지 못하는 바이너리가 될 것 같은데 맞는지요?
그렇다면 게임 그래픽 개발자 분들은 그래픽 프로그램을 컴파일하고 나면 CPU를 위한 바이너리와 GPU를 바이너리 두개가 나오게 되는건가요?

정말 이쪽 분야에 대해 너무 모른 것 같아 부끄럽습니다.
동작 구조에 대해서 아시는 분들께 가르침을 청합니다.

snowall의 이미지

GPU를 사용하는 게임은 어떻게 구동될까요?

생각해보시면 알 것 같은데요

피할 수 있을때 즐겨라! http://melotopia.net/b

익명 사용자의 이미지

>1. CPU가 GPU에서 돌릴 프로그램을 CPU의 메모리에 올린다.
>2. 그래픽 카드 드라이버를 통해 해당 프로그램을 GPU에, 그리고 그래픽 카드 메모리에 전달한다.
>3. GPU에게 그래픽카드 메모리에 프로그램이 로드되었으니 실행하라는 커맨드를 내려서 작업을 수행하고, 그 결과 값을 어떤 방법을 통해서든(인터럽 트든 폴링이든 무엇이든) CPU가 얻는다.
전박적으로 맞습니다.

>.또 하나 생기는 의문은, GPU는 GPU 나름의 ISA가 있을텐데 그렇다면 CPU가 로드한 GPU의 프로그램은 CPU가 읽지 못하는 바이너리가 될 것 같은데
>맞는지요?
기본적으로 GPU는 다른 형태의 CPU라서, 명령어가 다르므로 서로 바이러리를 읽지 못합니다.

>그렇다면 게임 그래픽 개발자 분들은 그래픽 프로그램을 컴파일하고 나면 CPU를 위한 바이너리와 GPU를 바이너리 두개가 나오게 되는건가요?
기본적으로 그런 개념인데요, 상위 개발자는 여러가지 Building Blocks 갖다가 사용하는 개념이고, 각각의 Block 은 내부적으로 GPU 명령어를 발생하거나, 혹은 ASIC 처리하기도 합니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.