質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CPU

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

Q&A

解決済

4回答

2560閲覧

CPUとGPUの分担方法は?

okina

総合スコア471

CPU

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

2グッド

0クリップ

投稿2020/03/19 07:36

編集2020/03/19 09:40

素人質問ですいません。

CPUやGPUの役割について調べていてスッキリしない部分があったので質問させていただきます。

CPUもGPUも演算をする装置で、GPUは単純で大量の演算をすることに特化しているため描画に向いているというのは聞いたことがありました。

しかし、最近は描画以外にもGPUが用いられる(GPGPU)と聞いて分からなくなりました、、、

そこで質問は2点です。

1.ある処理がCPUで行われるのかGPUで行われるのかはどういう風に決定されるのでしょうか? たとえば、開発者がこの処理はGPUでするようにって書くことにより実現されるのか、CPUがこの処理はGPUに処理させようと振っているのか、はたまたその他なのでしょうか?

2.行われるべき処理はメインメモリに書かれているという認識なのですが、GPUはそれを直接実行しているのでしょうか? 一度CPUが、たとえばデコードまでCPUがした上でGPUに渡しているとかでしょうか?

CPUとGPUが役割分担しているとはたくさん書いてあるのですが、具体的にどのように分担しているのか、どういう関係性があるのか疑問に思いまして、初歩的で申し訳ありませんが質問させていただきました。

ご回答お待ちしております。

####追記

みなさま的外れにもかかわらず丁寧なご回答ありがとうございます。

GPUとCPUがどのようにしてタスクを分担しているのか、描画に関する処理はGPUと言われても、描画に関する処理かどうかをどうやって判定しているのかなど知りたくて質問いたしましたが、プログラミングに関する質問ではないと指摘されその通りだと感じています。

自己の検索能力の低さを恥じるばかりですが、せっかく丁寧にご回答いただいたのに削除するのも申し訳なく、このまま残させていただければと感じています。

本当にありがとうございました。

tachikoma👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nanami12

2020/03/19 08:20

プログラミングに関係のないことなので低評価になっているかとおもいます。 ぐぐれば、質問の回答はいくらでも説明が書いています。 みつけられないのであれは、検索キーワードが甘いだけです。
okina

2020/03/19 08:50

的外れな質問をして申し訳ありません。 だいぶ調べたのですがCPUの負担を軽減しているという旨の記載があるばかりで、具体的にどういうプロセスを辿るかの理解にいたらず質問してしまいました。 申し訳ありません
退会済みユーザー

退会済みユーザー

2020/03/19 09:05

俺は好き
guest

回答4

0

GPUを画像処理以外に流用するには、GPUプログラミングという特殊な技術が必要です。

GPU上のとてつもない数の演算装置を並列に使えるというのが売りですが、実際にはいろいろな制約があり、そこをクリアしたプログラムを書かない限り、GPU上の全部の演算装置がフル回転で仕事を分担してあっという間に処理完了というわけには行きません。内容によっては、そもそも並列化しようのない処理もあります。そのへんを考慮して、CPU側のプログラムで無駄なくデータと命令をGPUに渡してやる処理を書かなければなりません。

これらを実現するにはGPUのスペックに関してかなり高度の知識が要求されます。CUDAというシステムを使うとCでプログラムが書けますが、一般のCプログラミングとはかなり雰囲気の異なるものです。実は私も仕事に使えないかとちょっと勉強してみたことがありますが、とてもではないですが素人が生半可な知識で手を出せるものではないと結論しました。

投稿2020/03/19 08:34

KojiDoi

総合スコア13692

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

そもそもなぜ GPU が演算能力を持っているかというと、3D 描画に必要な膨大な演算を、CPU によらず行うためです。
CPU の提供する演算能力を大幅に上回るようになったことで、単に描画に使うだけではなく他の演算用途(例えば大規模データ解析)にも使えるのではないか、という発想から生まれたのが、GPGPU です。
※ベクトル演算に特化しているので、いわゆるスパコンと似たことができると考えられた

従って、GPU で(描画以外に)演算させるためには、必要なデータや演算ロジックを、CPU から指定してやらねばなりません。GPU は CPU の下請けとして、演算だけを専門に行う別会社のようなものです。
一例的には、こんな感じです。

  1. CPU は演算のための元データをメインメモリに準備する
  2. CPU は GPU に、元データを転送する(GPU は自身の管理するグラフィックメモリ内にそのデータを格納する)
  3. CPU は GPU のプログラマブルシェーダーを転用して、演算ロジックを設定する
  4. CPU は GPU に命令して、演算を実行させる
  5. CPU は GPU からの演算完了を待ち、完了したら GPU に命令して、結果を受け取る

GPGPU で演算を行うには、対象の GPU に関する深い知識が無いと難しいのです。最近でこそ NVIDIA の CUDA のようにライブラリ化されましたが、そのライブラリにしても使い方は難しく、性能を十全に発揮するには多くのノウハウが必要になります。
※対象の GPU の構成に合わせてメモリ配置を行うなどのチューニングが発生する

投稿2020/03/19 08:52

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

  1. 私が知る限り、GPUが何か処理をするのはプログラムによって明示的に指示された場合だけです。

  2. CPUが「この場所にあるデータにこの処理をしてくれ」とGPUに指示します。

投稿2020/03/19 08:29

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/03/19 08:57

GPU はメインメモリにアクセスできません。
guest

0

GPUというものは別のところ(グラフィックカード)にあって、CPUとは全く関わりはありません。
GPUに処理をさせるためには、実行データをGPU(上のメモリ)に転送させ、実行終了を待ち、結果をGPUから転送してこなくてはなりません

投稿2020/03/19 08:22

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問