• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マルチスレッドへの対応について)

マルチスレッドへの対応について

このQ&Aのポイント
  • グアドコアの登場により、最適なロードバランシングやソフトのマルチスレッド対応が重要視されています。
  • 一部の高額ソフトを除いて、マルチスレッド対応度は低いままであり、マルチスレッド化の一般化への課題が残っています。
  • マルチスレッド対応が進むことで、趣味程度のソフト開発者でもマルチスレッド対応ソフトが簡単に生成できるようになると期待されています。

質問者が選んだベストアンサー

  • ベストアンサー
  • NAZ0001
  • ベストアンサー率29% (508/1743)
回答No.1

1.現在において、1つのスレッドに対する処理能力は、十分あると思いますし。マルチコアが普及しつつある現状では、現状より重たいソフトはマルチ化に進みますので。1つのコアの処理能力を上げる方向に注力することにはならないと思います。これは、上げないという意味ではなく、プロセスルールの進歩に合わせて無理をしないという意味です。 …プレスコットは、無理しすぎてああなりました。 2.基本的に現在のWindowsは、マルチタスク型のOSで、複数のソフトを走らせることができます。とっくに「マルチスレッド対応」なわけです。それだけでもマルチコアの恩恵はあります。 また、マルチCPUを有効利用するプログラミング手法は、サーバーレベルではすでに確立しているものです。あとは、プログラマーがそれを使うか使わないかの選択だけです。 3.将来的には当然でしょう。マルチコア/シングルコアと分けて生産するだけでもむだが多いですから。現在、Celeronは、プレスコットのあまりの消費状態ですし。 Core2Duoの片肺状態のコア(片方が動かないものをこちらに回すか、わざと殺すか…)を出す可能性がありますが。これをするしないは完全にマーケティングによるもので、技術的なものではありません。 4.例えばブラウザソフトで。複数の窓を開けたときに、それぞれが別スレッドとして動く…ということは、コンパイラが自動的にマルチ化しています。これは、コンパイラの性能というより、Windowsの仕様です。そういう意味では、とっくにYesです。 しかし、エンコードのようなシリアル処理をマルチ化するには、プログラマーによる工夫が必要です(1秒ずつ分割して処理させるとか)。そういう意味ではNoです。 ただ、従来では、いくらWindowsがマルチスレッド対応OSとはいえ、マルチCPUでないシステムでシリアル処理を分割しても無駄でしたが。現在ではマルチCPUが当たり前なのですから、プログラマーもそれに合わせたプログラミングをするようになるでしょう。 あるものなら使います。それだけの話です。 ってことで。参考になりましたでしょうか?。

Nouble
質問者

お礼

早速のご回答有り難う御座います アプリケーションがマルチスレッド非対応型でも 現状として1つのソフト単体でのシステム稼働が考えられない以上 ロードバランスは高水準に保たれる というご意見と受け取ったのですが 相違ないでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • NAZ0001
  • ベストアンサー率29% (508/1743)
回答No.4

複数のプロセスが入っているとき、それぞれのプロセスがどれだけの処理能力を必要としているかどう判断するのか?。CPUが2つでは、プロセス間の処理能力必要量に格差があっても、無理やり1vs1の分配になってはしまわないか? ということを心配されているのでしょうか?。 タスクマネージャーのプロセスのところで、なんかのプログラムを右クリックしていただければ、「プログラムの優先度」が設定できます。もっと優先的に動いて欲しいと感じたのなら、それで優先度を上げればOKです(内部的には、もっと詳細にコントロールが可能です)。 このように、特定プロセスのロードバランスを設定するのは、プログラマー、またはユーザーです。CPUやOSが自動的に判別することはありません。 HDへの書き込みのように「軽くてもすぐに終えて欲しい」、TVのリアルタイムエンコード録画のように「重くても一定以上早く終える必要は無い」 等、プロセスの性質については、それぞれです。 性能を引き出すといっても、CPU使用率が100%以下の時には、CPUの能力がが十分足りているということですので。グラフのでこぼこを見て「ロードバランスが取れていない」というのは、違うと思います。前にも書きましたが。CPU使用率が余っているからとCDを高速再生しても無駄です。CPUとOSは、やるべきことをやるべきときに、淡々とこなしていくだけです。 >いや、無策では54以上のプロセスが共存していようとも >最適なロードバランスは望むべきもなさそうです。 1つのプロセスを、ハード的/ソフト的に自動的に分解して複数のCPUで動かすということは、考えられていません。前にも書いたように、「プログラマー/ユーザー」が決めることだからです。 近い将来に出てくるメニィコアプロセッサでは、必要ないCPUは休止するだけのことです。現在は未実装ですが、DualCoreのCPUでも、片方を休止するモードはノートPCで採用されるでしょう。従来のマルチスレッド処理をもって少数CPUでこなせるのなら、全部を動かす必要が無いです。 どうも質問の意図が、「常に全部のCPU使用率を100%でソフトを動かす方法はあるのか?」または「総てのCPUをつねに均等に動かす方法はあるのか」ということに読めてしまうのですが。「そんなことはしない」が回答となります。 1つのCPUを占有するようなプロセスなら、プログラマーがマルチ化して、CPUを増やす。マルチ化するほどではないプロセスはそのままで、使わないCPUは休む。 >利用されなければ絵に描いた餅同然ですよね? 使う使わないを決めるのは、プログラマーとユーザーですし、無理してフルタイムで使う必要は無いですし。使える使えないは、また別の話です。 この辺で、質問と回答で齟齬が出てしまったようですね。 >AMDは2CPU構成を選択したとか 選択なんてたいそうな物ではないです。IntelだってXENONでやっていますし。サーバーの世界では当たり前の手法です。4つとか8つというのは、バス幅の問題でやらないだけの話です。言ってしまえば「Intelがやっているから、対抗のために私も。でないとサーバー市場に食い込めない」程度の選択です。 以下、参考まで http://pc.watch.impress.co.jp/docs/2006/0822/kaigai297.htm http://pc.watch.impress.co.jp/docs/2006/0818/kaigai295.htm この人の記事は、ハード面で非常に有益ですので。バックナンバーを追っかけることをお奨めします、 http://pc.watch.impress.co.jp/docs/article/backno/kaigai.htm

Nouble
質問者

補足

>「常に全部のCPU使用率を100%でソフトを動かす方法はあるのか?」 インターフェースの余力を除いて考えた場合 処理がある限りは全力で終わらすべきだと考えています >「総てのCPUをつねに均等に動かす方法はあるのか」 処理が手空きになってどうしてもアイドルが入る場合があるでしょう なので常に100%を実現するには 無負荷のスレッドの選別という相当高度な(?)先読み技術が必要でしょうから 現状として100%稼働は無理なのかも知れません 同様に作業量の均衡も難しいのかも知れませんね しかし資源対効果を考えると コアとしては実装個分の資源を費やしているわけですから それなりのパフォーマンスを期待したくなるのは信条じゃないですか? 出来れば100%稼働で早く終わって欲しいし その為には「作業量の偏りがあっては駄目」と言うことになりますよね? 2個コアがあっても稼働率が60%と30%では コア1個の95%で構わないのでは? となるでしょ? 2コアが広く一般に受け入れられるには 「ほぼどんな時もその良さを感じる」 と言う要素がなければ 「使ったら病みつきになる」という受入条件が満たされなくなり兼ねないと感じます そうなると世論が「不必要」のレッテルを押し 折角の素晴らしい技術が風化するのでは? と、心配するのです

全文を見る
すると、全ての回答が全文表示されます。
  • NAZ0001
  • ベストアンサー率29% (508/1743)
回答No.3

「8コアになったから何かやろう」ではなく、「8コアでないと出来ないことがあるから8コア買おう」になるでしょう。 現状のWindowsの使い道で、そこまでの処理能力を必要とすることは、そうそうありません。「ファイルなるファンタジーが三倍速で動く!」とか「CDを100倍速で再生できるぜ!」は、意味がないですからね。 CPUの開発は、ソフトが世の要求にかかわらず進められていきます。時には、ソフトの要求をオーバーし、または要求に応えられないでしょうが。足りないときに急に開発できることでもないですので、コンスタントに性能は向上するでしょう。また、8コア等を有効に使うための「ソフトウェア技術」は、すでに存在します。 あとは、それを必要とする使い方が出てくるのを待つだけ。 3Dゲームとかエンコードとかしないのなら、4年前のPCでも十分です。 …次期WindowsのVistaは、見た目は豪華になって、処理能力も必要としますが。…こんなんが答えじゃ、しょうがないですけどね。

Nouble
質問者

お礼

度々のお運び一層感謝いたします。 ちょっと調べてみたのですが タスクトレーに15~16個ほどアイコンが並ぶ私の環境では 現段階でアイドルを含め59個のプロセス数を数えました。 しかし一方でロードバランスは芳しくないようなグラフラインを示します。 たった2個のCPUでこれなのです… 一方で 今トピックスを目にしたとこなのですが、 http://plusd.itmedia.co.jp/pcuser/articles/0611/29/news038.html AMDは2CPU構成を選択したとか 今はまだ2コア×2CPUですが極近い将来に4コア×2CPUの可能性についても示唆されていました。 本当に無策で大丈夫なのかと心配になったのはこの為なのです。

Nouble
質問者

補足

ご指摘頂いた「不必要では?」という点ですが、 此について過去を紐解くと、 i386時代に高名な学者が今後の予想として 「I386以上のCPU性能がなぜ必要なのか?」 と、馬鹿げたことを某地上波有料放送事業体の番組で力説していました (~ ~;)ヾ なぜそんなことになったかと想像するに、 今我々が謳歌しているマシン環境と 今日の超重たいソフトの恩恵による素晴らしい環境を、 当時の我々は、経験できていなかったからだと思います。 ハイスペックマシンを使わなければ FM-TOWNSIIでも十分だと感じるでしょうし もちろんPEN3 1GHz 3GBメモリー構成など奢った仕様だと感じるでしょう しかし此は今となっては「妄想だ」とまで言えそうですよね。 詰まりこれらのことから導き出される回答としては 案ぜずとも1度使えば病みつきになる、必要かどうかは論ずるに値しない、 それよりも、性能を引き出すには何が必要で、何が障壁となり、解決は為されるのか? こそをむしろ論じるべきだ。 ということだと私は考えています。 具体的な話ですが、 8つもコアがあるということは マルチスレッド非対応ソフトの場合 プロセス数がOSを含め8つでは平均化が図れないことから 16… いや24ないし32個は同時走行が求められると思います、 いや、無策では54以上のプロセスが共存していようとも 最適なロードバランスは望むべきもなさそうです。 実際に最適化を実現する手だては 既にご回答いただいた通り確かにありますが、 利用されなければ絵に描いた餅同然ですよね? このスレッドの意図はそこなのです 何ら意識を向けなくても高いロードバランスを常に示すマルチな環境を誰もが謳歌する… このことの実現には 現段階では一部の環境のみに限定されている マルチスレッドプログラミングの大衆化・一般化が避けて通れないと感じるのです この点については如何お考えでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • NAZ0001
  • ベストアンサー率29% (508/1743)
回答No.2

>アプリケーションがマルチスレッド非対応型でも >現状として1つのソフト単体でのシステム稼働が考えられない以上 >ロードバランスは高水準に保たれる >というご意見と受け取ったのですが はい。それでけっこうです。同時に、「非対応ソフトはこれ以上重くしない」という暗黙のルールで進むことになると思います。

Nouble
質問者

お礼

有り難う御座います ご意見頂戴致しました このご意見は例えば もし今後グアドコア2CPU構成や、グアドにHyper thresdが搭載される等して 見かけ8コアとなっても適応されるでしょうか? もし8コアとなった場合にも 特段の方策は労じずとも良いということでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マルチスレッドに対応したソフトについて

    有料のソフトはエンコード系は概ね4コアに対応していると思いますが、 フリーソフトは多くても2コアまでの対応が多いように見えます。 フリーソフトで4コア以上対応しているはあるのでしょうか? (ブラウザは対応していたと思いますが。) また、ソフトを開発したことがないので分からないのですが、 マルチスレッドに対応させるのは大変なことなのですか?

  • マルチスレッド対応ソフト

    デュアルコアを使っている場合、 マルチスレッド対応のソフトを使っていると 2つのコアを使うので 早くなります。 マルチスレッド対応のソフトというのは エンコード系しかないのでしょうか? また、どのソフトがマルチスレッドに対応しているかという判断はどうやってしたらいいんですか? HTは擬似的なデュアルコアですが、 HTに対応していたら、 マルチスレッドに対応、 つまりデュアルコアでも効果が発揮できるのでしょうか? HTとマルチコアだと ソフト側の対応が違いそうな気がしますが。

  • NikonCaputure4.4ってマルチスレッド対応?

    NikonCaputure4.4ってマルチスレッド対応なのでしょうか? こんどCPUをDualコアにするので、気になって。 直接ニコンに聞けばいいのでしょうが、手っ取り早くこちらで質問させていただきました。 御存じの方いたら、お暇なときにでも…。

  • デュアルコアCPUはマルチスレッドに最適?

    デュアルコアCPUはマルチスレッドに有効と聞きますが、マルチスレッドとはどういうものでしょうか? (1)単純に、3Dゲームをし、ネットをし、同時にエンコードをし、同時に画像処理し・・・っていう作業の「マルチ」ですか? (2)それとも、単独アプリケーション自体にマルチスレッド対応(?)のものがあるのですか? よく、3Dゲームはシングルスレッドのため、デュアルコアCPUの優位性を引き出せないといいますが、上記(1)の場合に当てはまりますか?

  • TMPGEnc2.5 マルチスレッド

    TMPGEnc2.5という古いVerの製品を使っています。 マルチスレッドが使えるみたいなのですが、デュアルコアCPUや ハイパースレッディングに対応しているのかわかりません。 ご存知の方は教えてください。 もうひとつ質問なのですが、TMPGEncのマルチスレッド機能を使うには、 インテルとAMDどちらのCPUが効果的なのでしょうか?

  • 非マルチスレッドソフトの挙動

    デュアルコアを使っています。 マルチスレッドじゃないソフトでも両方のコアに均等に負荷が分けられていますが、これは正常なんですか? 一つのコアに負荷が集中するものだと思っていましたが。2つのコアに割り当てることは可能なのですか? しかし、マルチスレッドでないものは負荷が両方のコアに均等に掛かり50%までしか行きません。 しかし、対応しているものでは100%になります。

  • マルチスレッド対応CPUは有用?

    PC自作を考えているのですが、プロセッサーの選択について悩んでいます。 現在はメーカー製PCを使っていて、スペックは ・Windows Vista Home Premium SP2 ・Intel Core 2 Duo E7400 2.8GHz 2GB です。 そこで、今インテルのCore i7プロセッサー(i7-860など)に興味を持っているのですが、色々調べていると、 コアやスレッド数が増えてもマルチスレッド対応ソフトでないと性能の向上はみられないのではないかと気になっています。 私はPCで本格的なハイスペックゲーム等はせず、主な用途は ・ネットサーフィン ・動画再生・編集・変換 ・ちょっとしたゲーム という感じです。 私が動画変換に使うソフト等はマルチスレッドに対応していないようなのですが、果たしてクロック周波数が同じでも、コアやスレッド数が増えれば全般的な処理速度は向上するのでしょうか? また、Core i7シリーズにはターボブーストという機能があるようですが、これは対応するパーツが限られているのでしょうか?詳しく教えて頂けると嬉しいです。 現在、Core 2 Duoでビスタは快適なのですが、i7の導入によってPCの全般的なあらゆる動作がさらに快適になればいいなと思っています。

  • マルチスレッド対応のアプリケーションとは?

    CPUにインテルCore2Duoを使っています。 マルチコアを活かせる「単体」でのアプリケーションを知りたいのです。 (ウイルス検索しながらでもブラウジングがサクサクという内容ではありません) 特に動画エンコード関係と聞きましたが・・・ 動画エンコードアプリケーションでも、対応の可否はどうやったらわかりますか?

  • デュアルコアの使われ方

    デュアルコアCPUで マルチスレッド対応のソフトなら 2つのコアを使うと思うのですが、 非対応のソフトでのソフトで 2つのCPUにまたがって 処理することはあるんですか? もし、またがってしまうことがあるなら マルチスレッド対応ソフトと 変わらないような気がするのですが。

  • Dual CPUやHyper Threadding対応CPUの処理

    ・Dualコア CPU ・Hyper Threadding対応CPU ・通常のCPU を比較して”Dualコア CPU”対応のOSを使用しても ソフトが”マルチスレッド”に対応してなければ CPU処理に関して なるべく条件を 同じにした場合 大きな違いはあります?