1 名前:名前は開発中のものです。 mailto:sage [2009/02/19(木) 02:21:01 ID:k4ODtuXP] タスクシステムについての議論、相談、質問、雑談などのスレです part4 pc11.2ch.net/test/read.cgi/gamedev/1233459490/ part3 pc11.2ch.net/test/read.cgi/gamedev/1226199100/ part2 pc11.2ch.net/test/read.cgi/gamedev/1196711513/ part1 pc11.2ch.net/test/read.cgi/gamedev/1173708588/ ・タスクと呼ばれる実装は、非常に多岐に渡ります 古典タスクシステムについての話題は「>>2 」と明示してください そうでない場合はカスタム版タスクであることを明示してください ・人を憎んで言語を憎まず
624 名前:ID:EEKBitmg mailto:sage [2009/03/05(木) 22:20:46 ID:CwokJJKn] ×お酒でそういう大人っぽいお店にいって酩酊して ○そういう大人っぽいお店にいってお酒で酩酊して
625 名前:561 mailto:sage [2009/03/06(金) 00:00:33 ID:4YMxwutE] 惚れた
626 名前:名前は開発中のものです。 [2009/03/06(金) 07:47:43 ID:+3ldVLU9] >>622 そんなの無理だろ タスク信者は動いてるプログラムにタスクウィルスを入れて 自分しかメンテできないようにして、自分の居場所を確保する 犬の小便的行動が本来の目的なんだから
627 名前:ID:EEKBitmg mailto:sage [2009/03/06(金) 10:06:54 ID:xP4A6jxv] いやー、昨日も面白い池沼がいて楽しかったわ これだからこのスレはやめられないw
628 名前:名前は開発中のものです。 mailto:sage [2009/03/06(金) 13:01:17 ID:FjTUznzx] 銃弾の事は外野の俺がネタで言ってみただけだお…><
629 名前:名前は開発中のものです。 mailto:sage [2009/03/06(金) 14:33:08 ID:YCUPWfAP] >>625 >427 >>626 そのくらいで地位を守れるなら失うよりはずっとマシだと真剣に思う、この不況。無職を叩く側から叩かれる側になるなんてやだもん。
630 名前:名前は開発中のものです。 [2009/03/06(金) 18:02:43 ID:+3ldVLU9] ついにタスク信者自身が自分がクソを入れてることを認めたか
631 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/06(金) 18:18:57 ID:oTJ018DT] なんじゃそりゃ
632 名前:名前は開発中のものです。 mailto:sage [2009/03/06(金) 19:15:57 ID:oLiuTYVi] >>622 タスクシステムが直列処理だとは思わんが。 どっちかっていうと、並列かと。
633 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/06(金) 23:46:34 ID:aRzhzssB] >>627 ちょっとー。何なのおまえ誰なのおまえそこへ直れよおまえ!このイジメっ子ザザ虫! 平日の朝っぱら10時から暇そうに2ちゃんで厨のIDコテ使って何ふんぞり返ってるの? イイ歳した大人が虎の威ならぬ厨の威を借りて一段高くなれるの?低くならないの?恥ずかしくない? お前、今まで俺のことをHSPしか使えない基地外とか繰り返し叫んでたウンコ君でしょ? 気になるあの子が振り向いてくれないからって、あの子の目の前であの子の名札つきの 体操服を着てあの子のピアニカをチュアパチュパしゃぶりながらあの子のリコーダーに ポークビッツを差し込んで教室で待ち構えて本人登場したらポークビッツが健気に膨張 圧迫されて抜けなくなって保健室に運ばれちゃう変態、超ド変態の子供時代を繰り返すの? タスクバカのことをバカバカエンガチョって指差してきたけど流石にトリップ無しIDコテ厨を 騙るほど堕ちちゃいないだろうと信用してたのに買いかぶりだったみたい。もう大嫌い
634 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/06(金) 23:55:00 ID:oTJ018DT] >>633 >627は偽物だったのか・・。まあ、もとより俺には、本物が誰なのかよくわからないのだが。 >633を見る限り、なんか内容は支離滅裂だが、それでもあんたの日本語は他の奴よりは 断然読みやすいのでまだ許せる。 日本語の不自由な奴は、ゲームなんか作ってる場合じゃなくて、 もっと先に勉強すべきことがあるだろ、とか思うんだけどな。
635 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/06(金) 23:56:33 ID:aRzhzssB] >>632 正確には並行処理じゃないの?
636 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/06(金) 23:59:28 ID:aRzhzssB] 寮に帰って2ちゃん見てワナワナプルプルしながら顔真っ赤に怒ってるから 支離滅裂なんだ!ちなみに昨日の書き込みには大変な矛盾があるので 訂正したかったが、>>627 は俺らしいから彼にやらせてみようと思う
637 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 00:46:01 ID:ZZNOCL1s] >>635 優先順位がつくばあいもあるから正確には並列とは言えないだろうな。
638 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 00:55:26 ID:cewi3IDn] >>637 その理屈はおかしい。 マルチスレッドのプログラミングでもセマフォで他のスレッド待ったり普通にするじゃん。 処理に順序があろうが無かろうが、並列なものは並列だ。 >>635 が並行と言ってるのは、タスクを実行しているスレッド(プロセス)が通例、 1つだけだという理由からだろう。
639 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 01:06:43 ID:ZZNOCL1s] >処理に順序があろうが無かろうが、並列なものは並列だ。 並列さんの言ってることは意味が分からん。 処理に順序があれば、同時に実行できないのだから、並列でないだろ。 マルチスレッド≠並列。 煽り専門と名のってたが、嘘ばかりを書き込んでスレの機能を麻痺させる気? 名前変えたら?
640 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 01:17:59 ID:cewi3IDn] >>639 > マルチスレッド≠並列 言葉の定義の問題だから、まあどうでもいいが、まあ普通は マルチスレッドで実行されている以上、並列だし、あるスレッドが他のスレッドを 待っていてスループットが悪かろうが、並列なものは並列。 処理順序が厳密に定められていて、まったく逐次実行しか出来ないなら、 シングルスレッドと同じか、それ以下のパフォーマンスしか出ないけどな。 実際はゲームのタスクはそこまで処理順序に関しては制約が厳しくないので いくらでも並列化できる。
641 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 01:37:59 ID:ZZNOCL1s] >マルチスレッドで実行されている以上、並列だし、 並列ではない。並列な部分もあるってだけ。 今は、「正確には並行処理じゃないの?」と問われていたわけで、 純粋に並列でないなら、正確には並列とは言えない。 だいたい、マルチスレッド云々は実装レベルでの話しだし。 タスクシステムがアーキテクチャ的に並列処理かどうかとは関係ない。
642 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 01:42:09 ID:ZZNOCL1s] コーヒー牛乳は牛乳か→YES コーヒー牛乳は正確には牛乳か→NO タスクシステムは並列的か?→YES タスクシステムは正確には並列か?→NO
643 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 01:58:35 ID:cewi3IDn] >>641 > 今は、「正確には並行処理じゃないの?」と問われていたわけで、 > 純粋に並列でないなら、正確には並列とは言えない。 この文章、意味不明だ。この文章、俺の解釈では↓こうだ。 今は、「正確には並行処理じゃないの?」と問われている。 スループットが1以下の並列実行なんて並列実行には含まれないので 「正確には並列」とは言えないので、単なる「並行処理」と見なすべきだから、 この「正確には並行処理じゃないの?」は正しい。 もし、そういう意味で書いているなら、俺は別に反対意見は唱えていない。 しかしそれなら>>637 の書き方が悪い。 「優先順位がつくばあいもあるから正確には並列とは言えない」 だと、「優先順位がときどき偶発的について、そのときに限り並列性が落ちるから 並列とは言えない」と読める。だから俺は>>638 のように反論した。 >>637 は、正しくは 「優先順位がつく場合、並列化が難しく、並列度が極端に低下して、単一スレッドで実行 しているのと変わらないから、並列と呼ぶべきではない」と言うべきだっただろう。 しかし、俺はそうは思わない。 処理に優先順位がついていようが並列度を上げることは十分可能だからだ。
644 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 02:03:29 ID:LbywpZ2h] コーヒー牛乳は牛乳か→NO
645 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 02:08:20 ID:cMprZFoi] >>643 見苦しいです
646 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 02:10:52 ID:cewi3IDn] >>645 見苦しいか?ふむ。 それなら、日本語の不自由そうな奴に絡むのはもうやめるわ。疲れるだけだ。
647 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 02:23:08 ID:ZZNOCL1s] >「優先順位がつくばあいもあるから正確には並列とは言えない」 >だと、「優先順位がときどき偶発的について、そのときに限り並列性が落ちるから >並列とは言えない」と読める。 優先順位がときどき偶発的について、そのときに限り並列性が落ちることがあるから、 正確には並列とは言えない、であってるよ。 タスクシステムは正確には並列か?という命題に対して、 タスクに優先順位が付く場合を判例に挙げたまで。 処理に優先順位が付く場合、理論的にピュアな並列処理とは言えないからな。 完全な並列性とは、なにをどの順で実行しても構わない場合のみ。
648 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 02:47:03 ID:ZZNOCL1s] >それなら、日本語の不自由そうな奴に絡むのはもうやめるわ。疲れるだけだ。 自分がまともに日本語を扱えないくせに。 >>643 とか、これ日本語ですか? Q:タスクシステムは正確には並列か? A:タスクの処理の優先順位をサポートするタスクシステムの場合には、 タスクの処理に順序が出来るので、この場合は正確には並列とは言えない。 たったこれだけのことが何で分からないのか。 彼はこの問題を実装レベルの並列度の話に持ち込もうとするが、 そもそも、すべてのタスクを同時に実行できるハードが存在しない現状で、 実装レベルでの並列性をもってして、 「タスクシステムが正確には並列かどうか」を判断するのはナンセンス。 なぜならタスクシステム自体による制限よりも、 ハードウェアによる制限の方が先に現れるから。
649 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 02:49:57 ID:cewi3IDn] >>647 > タスクシステムは正確には並列か?という命題に対して、 だが、あんたは、>>635 を誤解している。 635は > 正確には並行処理じゃないの? と書いてあって、並行ということはconcurrentなのだから、スループットは1倍を絶対に超えない。 635を書いた本人は、「タスクシステムの構造ではスループットは1倍を絶対に超えない」ので 「並行処理と呼ぶほうが正しいのではないか」と言ってるわけ。 それなのにそれに対する受け答えとして、あんたは、>637で「スループットがN倍になっていなければ pureな並列とは呼べないので並行ではない」と言っている。あんたが「並列度1.0(そんなもの現実的に 存在しないんだが)ではない並列」を「並列」とみなさないのはあんたの勝手だが、635に対する返答として 637は、おかしい。
650 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 02:52:08 ID:cewi3IDn] >>648 > Q:タスクシステムは正確には並列か? > A:タスクの処理の優先順位をサポートするタスクシステムの場合には、 > タスクの処理に順序が出来るので、この場合は正確には並列とは言えない。 > たったこれだけのことが何で分からないのか。 Qが間違っている。誰もそんなQをしていない。詳しくは>>649
651 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 03:03:47 ID:cewi3IDn] 俺、もう寝る。 どうか、ID:EEKBitmg ◆HSP4mee/SU は、 ID:ZZNOCL1sの相手をしてやって欲しい。 ID:EEKBitmg ◆HSP4mee/SU の書く内容は、技術的に間違ってることも多々あるし、態度も生意気だけど、 日本語は意味明瞭だし、技術用語の使い方も比較的正しいので俺としてはかなり好感が持てる。 まあ、勉強熱心なんだろうな・・。
652 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 10:03:00 ID:8u/3vapK] なんか良く分からんが、お前らの並列と並行の定義はこれで合ってるの? docs.sun.com/app/docs/doc/819-0390/mtintro-6?l=ja&a=view
653 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 10:21:13 ID:ZZNOCL1s] まず並行でないなら並列化できないわけで。 逆に、並列化不可能なら、並行でない。 というか、むしろ今まで並行の意で並列と言っていたのだが。 >スループットがN倍になっていなければ >pureな並列とは呼べないので並行ではない は正しい。 順序がある処理は並行ではない。
654 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 10:22:50 ID:ZZNOCL1s] journal.mycom.co.jp/articles/2006/05/15/bsd3/ 俺はこっちかな。
655 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 10:43:57 ID:8u/3vapK] >>652 >>654 同じだとおもうけどw >順序がある処理は並行ではない。 いや、順序があっても並行は並行だろう。 ID:ZZNOCL1sは効率的でない並行/並列は役に立たないんだから、 仰々しく「並行」だの「並列」だの言うな、と主張しているように見えるなあ。 ID:ZZNOCL1sは実践的な話をしていて、 並列さんは字面通りの一般的な並列の定義に沿って話しているだけに見える。 というのは深夜の時点で並列さんも悟っているように見える。
656 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 10:53:23 ID:ZZNOCL1s] >並行ということはconcurrentなのだから、スループットは1倍を絶対に超えない。 >「タスクシステムの構造ではスループットは1倍を絶対に超えない」ので 並行化によって待ち時間が減ったりするので、スループットは向上するが、 1倍の基準点が不明。
657 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 10:57:38 ID:cewi3IDn] >>653 > というか、むしろ今まで並行の意で並列と言っていたのだが。 あんたは、全然話にもならない。 専門用語を勝手に本来と違う意味で使っておいて 相手に日本語が読めないだの何だの言うのは本当、勘弁して欲しい。
658 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 11:06:08 ID:ZZNOCL1s] >いや、順序があっても並行は並行だろう。 順序がある処理は並行化できないよ。 例えば、処理Aと処理Bがあって、 BはAの後でないと実行不可だとする。 この場合、AとBを並行に処理することは出来ない。
659 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 11:06:20 ID:cMprZFoi] >>655 > ID:ZZNOCL1sは効率的でない並行/並列は役に立たないんだから、 そんな話じゃないでしょうに… あと >並列さん >悟っている なんか気持ち悪いです
660 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 11:13:36 ID:cewi3IDn] >>658 > 順序がある処理は並行化できないよ。 それぞれのタスクを逐次処理しようが、それは並行処理って言うんだが。 ある瞬間に一つしか実行していなければ並行。それがconcurrentの定義。 本当、専門用語を勝手に意味を作り替えんなと言いたい。 >>659 気持ち悪いのはお前。お前はいらない子だから死んでくれ。
661 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 11:17:08 ID:ZZNOCL1s] >>657 お前も、並列処理は並行処理の部分集合だということをおさえられていなかっただろ。 >並行ということはconcurrentなのだから、スループットは1倍を絶対に超えない。 ↑何に対する1倍かはしらないがな。
662 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 11:25:40 ID:cewi3IDn] >>661 >>並行ということはconcurrentなのだから、スループットは1倍を絶対に超えない。 >↑何に対する1倍かはしらないがな。 そこが読めてないのお前だけだろう。 「concurrentな処理は、Nコアであっても、単一コアで実行したときの1倍以上のスループットが出ない」の意味。
663 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 11:31:14 ID:cewi3IDn] >>661 > お前も、並列処理は並行処理の部分集合だということをおさえられていなかっただろ。 どこをどうやればそう読めるのか俺は知りたい。 並行処理と並列処理との差はある瞬間に、タスクを実行しているスレッド(プロセス)が 単一か複数かの差のみ。そんなことは誰でもわかっている。 その用語を勝手に違う意味に使ってたのはあんただろ。 俺には、頭がおかしいとしか思えない。 その頭のおかしいあんたを唯一擁護しているのは ID:cMprZFoi だけ。 こいつは、あんたが書き込みした直後にしか出てこない。どうせこれもあんただろ。
664 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 11:36:14 ID:92TsYx3X] カプコンのMTフレームワークみたいなマルチコアでのパフォーマンスに特化した設計の フレームワークなら並列云々の話になると思うが… あれもタスク進化系の一種なのか?ちょっとタスクって守備範囲広すぎ。 あれはコア数がパフォーマンスに直結する造りだね。 順序の依存性のある処理と無い処理をグループ分けして、並列で問題ないケースは複数コアで同時計算。 順序の依存性がある処理との同期スケジューリングをフレームワークが管理って感じで。 ゲーム中には依存性のある処理と無い処理があるから、まぁ複数コアを有効に使おうと思うと こんな感じな設計に行き着くんだろうね。
665 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 11:40:55 ID:cewi3IDn] ID:EEKBitmg ◆HSP4mee/SUはまだ良かった。 HSP使いのプログラミング経験の浅い世間知らずのクルクルパーだが、 そのわりには用語の使い方はまともだし、勉強もよくしていると思っていた。 俺は専門用語を勝手に俺解釈の用語とすり替えて話す奴とは 面倒くさいので話をしたくない。 このスレはどうせみんな常駐してるようなもんなんだから、みんなコテハン にすればいい。それそれぞれが嫌な奴をNGリストに入れておけばいいと思うんだがな。 そんなわけで ID:ZZNOCL1sは俺をNGリストに入れておいてくれ。 お前と話をするのは疲れる。
666 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 11:49:53 ID:ZZNOCL1s] >それぞれのタスクを逐次処理しようが、それは並行処理って言うんだが。 いや、単純に考えて、処理に依存関係があると、並行処理できないだろ。 実際OSなんかは各スレッド間に依存関係が無いものと見なして並行処理しているわけで。
667 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 11:52:30 ID:8u/3vapK] >>658 それが実質直列だってことは分かるんだけど。 とりあえず、俺が何を考えているのかと言うと、 動き方が実質直列であっても、それぞれ別のスタック領域を持ってる点が違うだろ? 別々のコンテキストを持っている。 その辺を区別するのに「実行効率ゼロの並行」も俺は並行と呼んでただの直列と区別していた。 要するに俺はコアが何個でそのPCがどこ指してるのって部分だけで並行か並列かって言ってた。 んで、一般的定義はどうなのと思ってググった先を見てみると、 コンテキストがどうのというのは論点じゃ無いような気がしてきた。 もうちょい調べてみるわ。
668 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 12:05:02 ID:cewi3IDn] >>666 > いや、単純に考えて、処理に依存関係があると、並行処理できないだろ。 あんたの「並行処理」について持ってる勝手なイメージは知らんが、 優先順位がついていてそれぞれのタスクを逐次的に処理していく場合も (そのタスクが終了後に消滅しないなら)「並行処理」と呼ぶ。 en.wikipedia.org/wiki/Concurrent_computing > Concurrent programs can be executed sequentially on a single processor > by interleaving the execution steps of each computational process 「並行プログラムは、それぞれの計算プロセスを実行箇所をインターリーブしながら シングルプロセッサによって逐次的に実行される」 計算プロセス間の依存性とか、効率とかそんなことは並行処理の定義とは 何ら関係がない。 ・実行箇所をインターリーブしながら(タスクからリターンしてもタスクは 通例存在していて) ・シングルプロセッサによって(ある瞬間を見たときにつねにひとつの プロセッサしかタスクを実行していない) この二つを満たしているなら、並行処理。
669 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 12:09:24 ID:ZZNOCL1s] >ある瞬間に一つしか実行していなければ並行。それがconcurrentの定義。 どこにそんな定義があるんだ?
670 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 12:10:23 ID:cewi3IDn] >>667 何を言いたいのかよくわからないが、>>668 の説明は理解できる?
671 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 12:11:16 ID:cewi3IDn] >>669 >>668
672 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 12:26:24 ID:ZZNOCL1s] 並行計算 ja.wikipedia.org/wiki/%E4%B8%A6%E8%A1%8C%E8%A8%88%E7%AE%97 >タスク群は1つのプロセッサ上で動作する場合、複数プロセッサ上で動作する場合、 >ネットワークを介した分散システムで動作する場合が考えられる。 663 名前:並列さん ◆dPfetnROQg [sage] 投稿日:2009/03/07(土) 11:31:14 ID:cewi3IDn 並行処理と並列処理との差はある瞬間に、タスクを実行しているスレッド(プロセス)が 単一か複数かの差のみ。そんなことは誰でもわかっている。 Wikipediaの人は分かってないみたいですよ。 注意してきたらどうなんですかね。
673 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 12:42:43 ID:ZZNOCL1s] >>668 >計算プロセス間の依存性とか、効率とかそんなことは並行処理の定義とは >何ら関係がない。 だから、並行処理では処理の依存性は考えない=依存性は扱わない=依存性は扱えない。 扱わないのは扱えないから扱わないの。 実際のOSなんかでも、スレッド間の処理の依存性は扱わない。というか扱えない。 各スレッドを並行と見なして実行する。 処理に依存性がある場合はプログラマが自前で同期オブジェクトとかつかってシコシコやる。 一方、タスクシステムでは処理の依存を優先順位という形で明示的に扱うのが一般的。 各タスクを並行とみなしているわけではない。
674 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 12:44:25 ID:92TsYx3X] いつのまにか 並行・並列処理の単語の定義のスレになってるな。 自然言語の単語の定義なんてどこまでいっても曖昧なのに… 自分の言う「臭い」と他人の言う「臭い」が同じという保障なんて誰にも出来んよ 確かなのは人工言語で書かれたソースのみ。
675 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 12:44:25 ID:cewi3IDn] >>672 ざっと見たけど日本語のwikipediaのほうは、ひどいな。 これとか > 並行性のための構造を備えた最も一般的な言語はJavaとC#である。 なんでだよと突っ込みを入れたくなる。 これ書いてる奴は、thread生成が出来るからJavaとC#を入れてるんだろうけどひどいにもほどがある。 C#のyieldによるcontinuationは確かに並行スレッドなんだが、それならJavaを含めるのはおかしい。 日本語のwikipediaの「並行性」の項目もひどいな。なんだよこれ。 ちょっとwikipedia行って暴れてくるわ。
676 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 12:47:15 ID:cewi3IDn] >>674 > 自然言語の単語の定義なんてどこまでいっても曖昧なのに… 専門用語は、限りなくstrictに定義されてるべき。 そうじゃなきゃ論文とか意味のないものになってしまう。
677 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 12:50:58 ID:ZZNOCL1s] >>668 wikipediaを引用しているようだが、途中で切れているようだが。 >「並行プログラムは、それぞれの計算プロセスを実行箇所をインターリーブしながら >シングルプロセッサによって逐次的に実行される」 の後ろには、実際には or executed in parallel by assigning each computational process to one of a set of processors that may be in close proximity or distributed across a network. が続いている。 自分の都合の良いところだけを掻い摘んで引用する根性の悪さ。 結局、 >並行処理と並列処理との差はある瞬間に、タスクを実行しているスレッド(プロセス)が >単一か複数かの差のみ。そんなことは誰でもわかっている。 は間違い。
678 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 12:52:11 ID:cewi3IDn] >>673 > 実際のOSなんかでも、スレッド間の処理の依存性は扱わない。というか扱えない。 それはダウト。 実際のOSにはプロセスのpriorityがあって、それに従ってスケジューリングされる。 割り込みなんか特にそう。あるプロセスの実行が他プロセスの実行より優先されることは多々ある。 キーボードイベントが発生したら、その処理が優先される。そこには明確な実行順序がある。 そんな機能すらない、もっとprimitiveなOSの話をしているなら、まあそれはそれでいいけど 「実際のOS」と書かれるとWindowsやらLinuxやらを想定しているのかと俺は思ってしまう。
679 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 13:02:13 ID:ZZNOCL1s] >>675 お前がひどいという日本語版の、 「並行性のための構造を備えた最も一般的な言語はJavaとC#である。」 は英語版のページにある 「Today, the most commonly used programming languages that have specific constructs for concurrency are Java and C#. 」 の訳なわけだが。 そしてその英語版のページを引用して、 「これが並行処理の定義だ!」と言っていたのがお前なのだが。 さらにその引用も自分の都合のいいところだけを引用するという正確の悪さ。 「〜又は〜」と書いてあるのに、「又は」以降をバッサリカット。
680 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 13:05:44 ID:ZZNOCL1s] >>678 プロセスのプライオリティーは必ずしも守られるわけではない。 あれは、CPUリソースに対する優先順位であって、処理に対する依存関係を表すものではない。 現にマルチプロセス環境だと、プライオリティーの高いものと低いものが同時に実行される。
681 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 13:05:45 ID:cewi3IDn] >>677 それなぁ、「executed in parallel」以下は敢えて省略した。 これを「根性の悪さ」と言われるのはわからないではないが、いま俺が問題としているのは、 「concurrent thread」 とか「parallel thread」というときのconcurrentとparallelの意味の違いだ。 「concurrent computing」という学問分野があって、その学問分野は広範で いわゆる分散コンピューティングみたいなことまで研究対象としている。 本来、concurrentの定義にparallelとか出てくるのはおかしいのだが(それだとconcurrentとparallelとの 差が無くなってしまう)、「concurrent computing」の分野においては、「concurrent program」の意味は、 かなり拡大解釈されている。だから、その部分をはしょった。 「concurrent computing」のconcurrentを援用するのがあまり良くなかったと言われれば、まあ、それはそうなのだが。
682 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 13:09:34 ID:Fbn5zOAB] 並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。 並列(parallel)は、複数の計算を物理的に同時に実行できることを表す。 んじゃないの? 独立した概念(関連はあるけど)なんだから、>>660 の >ある瞬間に一つしか実行していなければ並行。それがconcurrentの定義。 はおかしいと思う。 concurrentに作っておけば、parallelに実行しやすいんだし。
683 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 13:17:17 ID:cewi3IDn] >>680 うむ、それは正しい。 >>682 ああ、そうか。そういう意味では、660はおかしいし、書き方が悪いな。 これについては反省。すまんかった。> ID:ZZNOCL1s
684 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 13:19:11 ID:ZZNOCL1s] 用語の定義をめぐって、wikipediaと格闘するような人とは議論したくない。
685 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 13:20:00 ID:ZZNOCL1s] お互い疲れたと見える
686 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 13:24:11 ID:cewi3IDn] >>682 > 並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。 > 並列(parallel)は、複数の計算を物理的に同時に実行できることを表す。 この定義に基づいて古典的なタスクシステムのタスクについて語ると ・古典的なタスクシステムのタスクは、「並行」。 ・実行順序に厳しい制約があるとみなすなら、「並列」化はできない。 ところが実際のゲームでは、タスク間に依存関係がない部分が結構あるので 部分的に「並列」化できる。 この「並列」化によって、コア数N×0.7ぐらいのパフォーマンスは出る。 で、この「並列」化を古典的タスクシステムを進化(?)させて書けるようにすれば いいということだな。
687 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/07(土) 13:24:58 ID:cewi3IDn] >>684 俺のことは、NGリストに入れておいてくれ。 最初に682のように書いてもらえれば、俺はすぐに理解できたのだが。
688 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 14:32:04 ID:NOayWFQU] これにて一件落着
689 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 14:39:01 ID:ZZNOCL1s] おれは、>>682 と同じ意見ではない。 >並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。 これに付け加えて、並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、 必要だと考えている。 並行性 ja.wikipedia.org/wiki/%E4%B8%A6%E8%A1%8C%E6%80%A7 だから、 1.並行でなければ並列化できない。 2.タクスの処理順位を考慮するようなタスクシステムは、すべてのタスクが互いに並行というわけではない。 3.ゆえに、タスクシステムを並列化するならば、並行なタスク同士を抽出する必要がある。 と考え、 さらに、タクスの処理順位を考慮するようなタスクシステムは「並行でない」と考える。
690 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 15:29:42 ID:8u/3vapK] >並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。 俺もこう思ってた。 んでそうハッキリ書いてある資料を探してるんだけど、見つからない。 >並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、必要 次からこっちの定義で話すわ。
691 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 15:37:28 ID:92TsYx3X] >>689 >さらに、タクスの処理順位を考慮するようなタスクシステムは「並行でない」と考える。 MTフレームワークは処理順の依存の有無でタスク分けてマルチコアで同時に複数タスク動かしてるけど これは処理順位を考慮するシステムだから「並行でない」のかな?
692 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 15:42:35 ID:ZZNOCL1s] だいたいちょっと考えれば分かることだが、並行の定義が、 >並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。 だと、いわゆるオブジェクトと呼ばれるものは全部並行ってことになっちまうだろ。 コンテキストが同時に存在できないオブジェクトなんて、まあ無いからな。 言葉としての意味が無くなる。
693 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 15:56:08 ID:ZZNOCL1s] >>691 もしはじめから並行なら、MTフレームワーク自体いらないでしょ。
694 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 16:00:29 ID:92TsYx3X] >>693 >もしはじめから並行なら どこにそんな前提が?
695 名前:名前は開発中のものです。 [2009/03/07(土) 16:36:27 ID:E0xOAlNR] >>689 >これに付け加えて、並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、 ある計算の、ある時点における実行状態を表現したものを、コンテクストと呼ぶんじゃないの? >並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。 と同じ事を言ってるだけのような。 >1.並行でなければ並列化できない。 は違うと思う。 並行でない命令列も、依存関係が無ければ並列化できる。 現にCPUの中でシリアルセマンティクスを満たしつつ並列実行が普通におこなわれている。 そういう命令列は本質的に並行だった?違うでしょ?スーパースカラで並列に実行される命令は、 異なるコンテクストを持ってるわけじゃないんだから。 あと細かいことだけど、順位と順序は全然意味違うんだから、 ちゃんと使い分けてくれないと読み辛いよ。
696 名前:名前は開発中のものです。 [2009/03/07(土) 18:22:05 ID:UcXZ5wF9] でも依存関係があるかないかなんて並列で実行してんのにどうやってわかんだろね くる値によって依存関係があるかもわからんしないかもわからん ごった煮だとそういうソースになってしまうな
697 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 18:30:21 ID:rbzzI5lu] ID:UcXZ5wF9 ↑(・∀・)↑ ウンコちゃんインしたお
698 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 18:34:25 ID:ryll+mdy] >>695 > >これに付け加えて、並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、 > ある計算の、ある時点における実行状態を表現したものを、コンテクストと呼ぶんじゃないの? > >並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。 > と同じ事を言ってるだけのような。 例えば、コンテクストが共有されている場合などでは、 コンテクストは同時に存在できるが、同時に実行はできない。 具体的には、オブジェクトAがオブジェクトBの参照を内部に保持している場合など。 オブジェクトAはオブジェクトBとコンテキストを共有しているということになり、 オブジェクトAとオブジェクトBは同時に存在できるが、同時に実行は出来ない。 >並行でない命令列も、依存関係が無ければ並列化できる。 並行でない命令列の中でも、依存関係が無い並行な部分だけは並列化できる。 並列化とは、並行に処理することだから、並行な処理しか並列化できない。 自動並列化 ja.wikipedia.org/wiki/%E4%B8%A6%E5%88%97%E5%8C%96 >プロセッサで「並行」に実行されるようにする。 スーパースカラ ja.wikipedia.org/wiki/%E3%82%B9%E3%83%BC%E3%83%91%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%A9 >プロセッサ内の冗長な実行ユニットを使って「並行」して処理される。
699 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 18:39:37 ID:ryll+mdy] >>694 ヒント:背理法
700 名前:698 mailto:sage [2009/03/08(日) 19:26:02 ID:ryll+mdy] 訂正するけど、 コンテクストが共有されていても、read-onlyな場合は並列化可能だね。 書き込みするとアウトだけど。
701 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 19:27:58 ID:0j+yjPij] >>698 なんか色々と変だよ。 >例えば、コンテクストが共有されている場合などでは、 >コンテクストは同時に存在できるが、同時に実行はできない。 共有されているのに同時に存在するってどういう意味? コンテクストはいくつあるの? >具体的には、オブジェクトAが(以下この段落略) オブジェクトとコンテクストがごっちゃになってる。 オブジェクトAがオブジェクトBへの参照を内部に保持していても、 コンテクストがいくつあるのかという問題とは関係無いよ。 オブジェクトAとBを同時に実行はできない?オブジェクトを実行するってどういう意味? この辺は、>>692 の勘違いと同じ匂いがする。 てか>>692 さんなのかな。
702 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 19:30:14 ID:0j+yjPij] んが。改行多過ぎ言われた。 701の続き。 >並行でない命令列の中でも、依存関係が無い並行な部分だけは並列化できる。 「依存関係が無い部分」を「並行な部分」とは呼ばないよ。 いや呼ぶのは自由だけど、少なくとも聞いたことないよ。 いや聞いたことないだけかもしれないけど。 >並列化とは、並行に処理すること(以下略) ×。 もうちょっと詳しく言うと・・・ 「並列化とは、並行に処理すること」 という言葉それだけを見るなら、○。 でも、そこに出てくる「並行」という言葉は、並列という言葉を説明するための 「(同時)並行」という意味であって、このスレでここまで長々と議論してきた 並行(concurrent)とは意味が違うよ。 (「並列」を説明するのに「並列」と言っても仕方が無いからね) 二つ挙げてくれたwikipediaの説明に出てくる「並行」も、同じように「並列」を 説明するための「並行」であって、ここに引っ張り出してきても意味が無いよ。
703 名前:名前は開発中のものです。 [2009/03/09(月) 12:41:05 ID:2btSBxrR] 大変だ!タスク信者が息してないぞ!
704 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 13:31:41 ID:+h98nuCN] つまらん煽りイラネ
705 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 14:16:42 ID:EugqMYhT] 本人は面白いと思って書いてんだろ
706 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/10(火) 01:19:32 ID:W7jNDZ1N] 厨は『並行処理』という言葉を使ったけど、ノートを読み返したら『並行動作』となっていた。 =『擬似並列動作』のことを云いたかったの!微妙に書き間違えてた?と書こうと思ったら >>637-以降で怖いおじちゃん達が深夜の泥沼バトルが展開されてあれよあれよと言う間に みんな深淵の彼方へ飛んでいってしまった。ニーチェの警告に耳を傾けない者はみんな 闇に飲まれちゃうんだ。恐ろしいことだ
707 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/10(火) 01:20:59 ID:W7jNDZ1N] 俺は元々>>2 の話をしてて、これはどこをどうひっくり返しても逐次処理・直列処理してる。 ところが>>632 のタスクシステムは直列処理ではなくどっちかっつーと『並列』らしい。 たぶん>>632 の云うタスクシステムは>>2 とは別物か、あるいは並列ではなくて 『擬似並列動作』とか『並行動作』のことをいってるのかなーとESPした。それが>>635 >>2 の『システム(笑)』部分が提供するものは ・粗末な侵入式の連結リスト ・それを周期的にナメナメしてディスパッチするショボイ仕掛け だけ。>>2 はこの『システム』部分をユーザー定義の逐次処理・直列処理に使ってるけど ユーザー定義の並行動作に使うこともできるっちゃできる 例えば組み込みシステムでは、異なる割り込みハンドラからの指示でスリープ状態から 復帰するタスクとかあるからね
708 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/10(火) 01:36:39 ID:W7jNDZ1N] あるいは、敵をやっつけた時の爆発エフェクト。これの破片・パーティクルの一個一個を タスクとして登録してるとする。(そんな無駄なことしたくないけど、する奴もいるだろう) 破片・パーティクルのタスクは他のタスクとの作用なんてないとする。ならばこれらは 確実に並行動作してる 逐次処理・直列処理で並列動作してる。だが並列動作じゃない
709 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/10(火) 01:37:17 ID:W7jNDZ1N] >>708 ×逐次処理・直列処理で並列動作してる。だが並列動作じゃない ○逐次処理・直列処理で並行動作してる。だが並列動作じゃない
710 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/10(火) 02:18:01 ID:W7jNDZ1N] >>2 のシステム(笑)はなんで並列動作できないの? 一本の連結リストにみんなチャンポンにしてぶち込んでる時点で 別スレッドで同時並行的に弄繰り回されるということを考えてないだろ タスク間通信に必要な同期のメカニズムを提供していないのもそう シングルスレッドで逐次処理するという前提だからバッサリ省いてる 次に、>>2 のTCB(笑)とかいう構造体のプライオリティというパラメータは priority-rankingではなくpriority-sequenceとして使われており、異様。 これは処理順序を表しており、この順序でソートして順次処理される そういう前提でタスク(ジョブ)の内容を記述してる。順序が狂ったら動かない
711 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 12:53:53 ID:GPL7IZe+] >>707 >ユーザー定義の並行動作に使うこともできるっちゃできる できるっちゃできる、じゃなくて、ゲームオブジェクトの並行動作を記述することが そもそもタスクシステムの目的なんじゃないの? オブジェクトごとのデータとコンテクストをひとまとめにして自律的な行動を 自然(←人によって感じ方は違うだろうけど)な形で書ける(気分になれるw)ことと、 オブジェクトの生成破壊が多くてフラグメントを起こしがちなゲームにおいてデフラグを扱えること、 の2点を、素朴な形で実装したのがタスクシステムの良い点だったと思うんだけど。 >>710 >>>2 のシステム(笑)はなんで並列動作できないの? 特定プライオリティがついているオブジェクト群は他との相互作用が無いと決めておいて、 それらを並列動作させることはできるんじゃないの? (そういう番号をプライオリティと呼ぶことの是非は別として) 別に誰も、全てのタスクを並列動作させることなんか最初から期待してないと思うけど。 かなり上の方に出てた自動的に並列動作させる云々の話も、そういうプライオリティの タスクに限って、プロセッサ数に合わせて並列でディスパッチするような拡張も考えられる のではないか、という話だったと理解してたんだけど。
712 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 14:14:14 ID:arIRXx6m] pc.watch.impress.co.jp/docs/2009/0305/kaigai493.htm > ゲームプログラム本体のコードは、OSのコードと同じように、 > 整数演算中心で小さな範囲での並列しかできず、 > 基本的には逐次実行しなければならないコードがほとんどだ。 これが古臭いタスクのことを指しているとは考えられないし 並列ネタはタスク関係無くね?
713 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 17:38:59 ID:DtkxsGym] マルチプロセッサでマルチスレッドしたいならそう拡張すればいいんとちゃう? シングルプロセッサが前提の時代に書かれた物に難癖つけるのも大人げないと思う ていうか俺は現在でもマルチスレッドなんてやりたくない
714 名前:名前は開発中のものです。 [2009/03/10(火) 18:22:37 ID:9N7ATqdV] 別にマルチスレッドなんて必要ならやりゃいいじゃん 裏でローディングしながらゲーム動かすなんて別に難しくもなんともねーし ただ、ゲームオブジェクトにやる意味は無さそうだけどね
715 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 18:42:31 ID:+MsrlA3X] そういやフルにディスクアクセスしてても重たくなったりカクついたりしないのかね?
716 名前:名前は開発中のものです。 [2009/03/10(火) 19:16:57 ID:9N7ATqdV] >>715 やってみりゃいいじゃん
717 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 19:47:23 ID:+MsrlA3X] >>716 やってみた ガックガクになった
718 名前:名前は開発中のものです。 [2009/03/10(火) 20:01:50 ID:9N7ATqdV] そうか市販のゲームは普通にできてるのに不思議だな
719 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 21:27:13 ID:LXtgug0h] 裏でローディングなんてDMA時代からとっくにやってます。
720 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 22:07:24 ID:OHC3eltB] >715 普通非同期アクセスするだろ。 JK
721 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 22:48:52 ID:GPL7IZe+] >>711 >特定プライオリティがついているオブジェクト群は他との相互作用が無いと決めておいて、 は、オブジェクト群じゃなくてタスク群と書くべきだったね。 なんか混ざっちゃった。 >>715 自分も昔から気になってた。 ゲーム機で、ディスク(に限らず)からのデータ転送を非同期にやったりすると、 消費されるメモリ(あるいはバス)バンド幅の変化が計算しづらくなったりしないのかな。 それともDMAとかで消費されるバンド幅は、割と安定して予測できるもんなんだろうか。 その辺を実際にいじった経験が無いし、Web上でも情報を見た覚えが無いから分からないんだ・・・。
722 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 23:19:25 ID:DFTfic3i] >>721 > ゲーム機で、ディスク(に限らず)からのデータ転送を非同期にやったりすると、 > 消費されるメモリ(あるいはバス)バンド幅の変化が計算しづらくなったりしないのかな。 もちろん、なる。 だから RPG のように「どうしても間に合わなかったらフレーム描画をスキップしてもおk」な ゲームでは使うが、対戦格闘とかだと避ける。
723 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 23:58:04 ID:OHC3eltB] フルにディスクアクセス行ったところで、光学ドライブからの転送量なんてたかが知れてるからな。
724 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/11(水) 00:28:43 ID:xmrBPpjK] >>711 厨はそもそものタスクシステムなんて知らないから、そもそもの目的も知らない 厨が目にすることができる資料から分かること。それは ジョブ1を分割したものをタスクT11,T12,T13,…,T1jとし、ジョブ1を逐次処理したい ジョブ2を分割したものをタスクT21,T22,T23,…,T2jとし、ジョブ2を逐次処理したい ジョブ3を分割したものをタスクT31,T32,T33,…,T3jとし、ジョブ3を逐次処理したい ・・・ ジョブi を分割したものをタスクTi1 ,Ti2 ,Ti3 ,…, Tijとし、ジョブi を逐次処理したい ──順次処理─→ WAIT_VBLANK then execute[T11,T21,T31,…,Ti1] │逐 WAIT_VBLANK then execute[T12,T22,T32,…,Ti2] │次 WAIT_VBLANK then execute[T13,T23,T33,…,Ti3] │処 … │理 WAIT_VBLANK then execute[T1j ,T2j ,T3j ,…,Tij] ↓ 以上が>>2 の『システム』部分がやってくれること