タスクシステム総合スレ part5
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2009/02/19(木) 02:21:01ID:k4ODtuXPpart4 http://pc11.2ch.net/test/read.cgi/gamedev/1233459490/
part3 http://pc11.2ch.net/test/read.cgi/gamedev/1226199100/
part2 http://pc11.2ch.net/test/read.cgi/gamedev/1196711513/
part1 http://pc11.2ch.net/test/read.cgi/gamedev/1173708588/
・タスクと呼ばれる実装は、非常に多岐に渡ります
古典タスクシステムについての話題は「>>2」と明示してください
そうでない場合はカスタム版タスクであることを明示してください
・人を憎んで言語を憎まず
0603名前は開発中のものです。
2009/03/05(木) 15:05:28ID:rvhMBE/z>>585は、
衝突解決の途中でゲーム進行用の当たり判定を取ると、
ゲーム進行用の当たり判定がバグる、
と主張し、
それに対して俺は、
衝突解決が完了してからゲーム進行用の当たり判定を取ればよい、
と主張をしている。
予め言っておくが、衝突解決の優先順位の問題とは全く別の話。
0604並列さん ◆dPfetnROQg
2009/03/05(木) 15:17:15ID:2NL1rK1f> ・壁とは、敵との当りを防ぐもの。
> ・敵とは、当たりをとる対象。
> ということぐらい普通分かるだろ。
それはわかるが、敵同士は重なっている状態が許容されるかどうかが>>585からはわからない。
もし許容されないなら、敵とか壁とか分けて考える必要はなく、どちらも対等な単なるオブジェクトだから
用語をわざわざ分ける必要がない。
それを >>592 のように処理を分けているというのは、あんたが勝手に敵同士の交差は許容されると
>>585 から解釈したとしか思えない。要するに>>585を拡大解釈しているのはあんただろ。
0605並列さん ◆dPfetnROQg
2009/03/05(木) 15:20:29ID:2NL1rK1f> 衝突解決が完了してからゲーム進行用の当たり判定を取ればよい、
「ゲーム進行用の当たり判定」なんて、誰も話題にしてなくて
幾何的に重なりをもつ状態をいかに防ぎつつ処理を並列化するかしか
問題にしてないと思うんだが。
あんたは日本語が不自由以前に頭が不自由みたいなんで、
俺はあんたの相手はしないことにする。
0606名前は開発中のものです。
2009/03/05(木) 15:41:13ID:eQbdbaUxID:2NL1rK1f が正しい。
ID:rvhMBE/z は間違っている。
なぜならここはタスクシステム(^^;)スレだから。
今は並列処理(笑)をどこまでシステムを組み込めるか議論する場なので、(たとえば整数のみで実数計算するにはどうするのが一番いいかのような)
ID:rvhMBE/zのように並列処理(笑)を使わない最も効率的で扱いやすい無駄の無い設計はスレ違い。
みんなそれが最善手段と知ってる上で議論している。
(まぁ>>604の敵同士の交差がどうこうというのは並列処理(笑)時の話であって交差しようがしまいが別に処理させているID:rvhMBE/zの設計に対するツッコミ(ボケ?)は意味不明だが)
0607名前は開発中のものです。
2009/03/05(木) 15:51:13ID:rvhMBE/z>>585にはプレイヤーという主語が抜けてるんだよ。
それぐらい行間読めよな。
だから、
>敵同士は重なっている状態が許容されるかどうか
は関係ない。
さかのぼってみれば、>>567が発端で、これは、
>演算器いっぱいのベクトルプロセッサにやらせる場合
>移動フェーズと衝突検出フェーズと衝突応答フェーズに
>分割してそれぞれのフェーズでいっせーのーせでやる
に対してレスされている。
内容は、それぞれのフェーズの呼び出し順が固定だから、
衝突検出フェーズ内で拾う値は必ず補正前の値になってしまうので、
壁の向こうの敵に接触してしまうなどの不具合が出る、というもの。
つまり、古典的タスクシステム固有の問題で、実は並列化は関係がない。
0608名前は開発中のものです。
2009/03/05(木) 16:09:30ID:Ld676bZP壁薄くね?
0609並列さん ◆dPfetnROQg
2009/03/05(木) 16:37:36ID:2NL1rK1f実際は、紙みたいな壁も存在して、単なる衝突判定でやってしまうと
次フレームでは通り抜けてることもある。
だから、まともな物理エンジンでは、そういうオブジェクトに対しては、
連続体として扱うようになっているのだが、この取り扱いは結構難しい。
これに関しては最近、いろいろ論文が発表されるなど、比較的hotなテーマだ。
0610名前は開発中のものです。
2009/03/05(木) 18:58:37ID:/7Ei5x6Qhttp://www.youtube.com/watch?v=A7xiK-snyJk
そんな古臭い話が最近の論文なんて信じられないが
論文あるならソースだしてくれよ
多分読めないが
話変わって >>2 のタスクシステムのソースって
慣れてないと難しいね
拡張も慣れが必要
ちょっと自分流の方が早い気がしてきた
0611ID:EEKBitmg
2009/03/05(木) 19:12:57ID:CwokJJKn0612ID:EEKBitmg
2009/03/05(木) 19:50:12ID:CwokJJKn>つまり、古典的タスクシステム固有の問題で
なんでそうなるんだよ
0613ID:EEKBitmg
2009/03/05(木) 20:33:20ID:CwokJJKn壁とか言ってるから違うだろ。隣部屋同士の誤判定の話くさいんだけど
空間分割された隣部屋同士なら『ドア(窓)を経由しない限り当たらない』
ドア(窓)を経由して侵入してくる疑いがある奴は移動フェーズの時点で
バレてんだから、移動フェーズが終わった時点で同期的処理かませれば
いいだけだろ。バカくせ
0614ID:EEKBitmg
2009/03/05(木) 20:40:46ID:CwokJJKnそんなクズシステムの話を持ち出す時点で駄目だ
タスクバカ=>>2信者=直列バカはやっぱりバカだ
0615名前は開発中のものです。
2009/03/05(木) 20:52:25ID:LpIMNDbi0616ID:EEKBitmg
2009/03/05(木) 20:54:34ID:CwokJJKnそういや壁抜きでぶっ殺したら升使ってるとか言われたな
これだからnoobは困る
0617名前は開発中のものです。
2009/03/05(木) 21:49:16ID:/7Ei5x6Qそういうツールありますから
あなたの方がnoobですよ
0618ID:EEKBitmg
2009/03/05(木) 21:51:32ID:CwokJJKn並列君は銃弾も人も同じエンティティとして平等に扱うのか
マジで狂ってるな。どんだけ無駄なことすりゃ気が済むんだよ
0619名前は開発中のものです。
2009/03/05(木) 21:54:16ID:eQbdbaUxだから効率を求めてるんじゃなくて、並列でどうやって対処するか議論してるんだってば
0620ID:EEKBitmg
2009/03/05(木) 21:57:28ID:CwokJJKnは?誰だよお前。名無しに用はねーんだよ
効率を度外視した糞システムなんてみんな糞だ
お前らタスクバカはそうやって何でもツクールを目指すバカだから
並列処理も効率度外視とかウンコくさい話をしたがるんだろ
バカは氏ね。思想レベルで詰んでる
0621名前は開発中のものです。
2009/03/05(木) 22:03:48ID:okJUxEhs日 ▽ U 日 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
≡≡≡≡≡≡ | IDさん今日は荒れてるなあ。
V ∩ [] 。〇 \____________
____ ∧∧゚______
□ ( )
―――― | ヽ――――――
(____)〜
━┳━ ━┳━ ━┳━
 ̄┻  ̄ ̄ ̄┻ ̄ ̄ ̄ ┻ ̄ ̄
0622ID:EEKBitmg
2009/03/05(木) 22:07:27ID:CwokJJKnカッとなって、今度は極度に逆方向にふれて究極の並列コードを
目指すし始めた一部の先進次世代タスクバカ。>>510が代表だな
お前らタスクバカはさ、いい加減『ナニを作るのか』具体的に書けよ
何でもツクール目指すから『ナニを作るのか』書けません、だとか
ミラクルドリーマーみたいな事をほざくなよ
0623ID:EEKBitmg
2009/03/05(木) 22:19:07ID:CwokJJKn俺、一応未成年だからお酒でそういう大人っぽいお店にいって
酩酊してウサ晴らすとかそういうことできないんだよね
これは芸風だから。昨日の並列君のお前らみんなバカ宣言
に対する報復である
0624ID:EEKBitmg
2009/03/05(木) 22:20:46ID:CwokJJKn○そういう大人っぽいお店にいってお酒で酩酊して
0625561
2009/03/06(金) 00:00:33ID:4YMxwutE0626名前は開発中のものです。
2009/03/06(金) 07:47:43ID:+3ldVLU9そんなの無理だろ
タスク信者は動いてるプログラムにタスクウィルスを入れて
自分しかメンテできないようにして、自分の居場所を確保する
犬の小便的行動が本来の目的なんだから
0627ID:EEKBitmg
2009/03/06(金) 10:06:54ID:xP4A6jxvこれだからこのスレはやめられないw
0628名前は開発中のものです。
2009/03/06(金) 13:01:17ID:FjTUznzx0629名前は開発中のものです。
2009/03/06(金) 14:33:08ID:YCUPWfAP>427
>>626
そのくらいで地位を守れるなら失うよりはずっとマシだと真剣に思う、この不況。無職を叩く側から叩かれる側になるなんてやだもん。
0630名前は開発中のものです。
2009/03/06(金) 18:02:43ID:+3ldVLU90631並列さん ◆dPfetnROQg
2009/03/06(金) 18:18:57ID:oTJ018DT0632名前は開発中のものです。
2009/03/06(金) 19:15:57ID:oLiuTYViタスクシステムが直列処理だとは思わんが。
どっちかっていうと、並列かと。
0633ID:EEKBitmg ◆HSP4mee/SU
2009/03/06(金) 23:46:34ID:aRzhzssBちょっとー。何なのおまえ誰なのおまえそこへ直れよおまえ!このイジメっ子ザザ虫!
平日の朝っぱら10時から暇そうに2ちゃんで厨のIDコテ使って何ふんぞり返ってるの?
イイ歳した大人が虎の威ならぬ厨の威を借りて一段高くなれるの?低くならないの?恥ずかしくない?
お前、今まで俺のことをHSPしか使えない基地外とか繰り返し叫んでたウンコ君でしょ?
気になるあの子が振り向いてくれないからって、あの子の目の前であの子の名札つきの
体操服を着てあの子のピアニカをチュアパチュパしゃぶりながらあの子のリコーダーに
ポークビッツを差し込んで教室で待ち構えて本人登場したらポークビッツが健気に膨張
圧迫されて抜けなくなって保健室に運ばれちゃう変態、超ド変態の子供時代を繰り返すの?
タスクバカのことをバカバカエンガチョって指差してきたけど流石にトリップ無しIDコテ厨を
騙るほど堕ちちゃいないだろうと信用してたのに買いかぶりだったみたい。もう大嫌い
0634並列さん ◆dPfetnROQg
2009/03/06(金) 23:55:00ID:oTJ018DT>627は偽物だったのか・・。まあ、もとより俺には、本物が誰なのかよくわからないのだが。
>633を見る限り、なんか内容は支離滅裂だが、それでもあんたの日本語は他の奴よりは
断然読みやすいのでまだ許せる。
日本語の不自由な奴は、ゲームなんか作ってる場合じゃなくて、
もっと先に勉強すべきことがあるだろ、とか思うんだけどな。
0635ID:EEKBitmg ◆HSP4mee/SU
2009/03/06(金) 23:56:33ID:aRzhzssB正確には並行処理じゃないの?
0636ID:EEKBitmg ◆HSP4mee/SU
2009/03/06(金) 23:59:28ID:aRzhzssB支離滅裂なんだ!ちなみに昨日の書き込みには大変な矛盾があるので
訂正したかったが、>>627は俺らしいから彼にやらせてみようと思う
0637名前は開発中のものです。
2009/03/07(土) 00:46:01ID:ZZNOCL1s優先順位がつくばあいもあるから正確には並列とは言えないだろうな。
0638並列さん ◆dPfetnROQg
2009/03/07(土) 00:55:26ID:cewi3IDnその理屈はおかしい。
マルチスレッドのプログラミングでもセマフォで他のスレッド待ったり普通にするじゃん。
処理に順序があろうが無かろうが、並列なものは並列だ。
>>635が並行と言ってるのは、タスクを実行しているスレッド(プロセス)が通例、
1つだけだという理由からだろう。
0639名前は開発中のものです。
2009/03/07(土) 01:06:43ID:ZZNOCL1s並列さんの言ってることは意味が分からん。
処理に順序があれば、同時に実行できないのだから、並列でないだろ。
マルチスレッド≠並列。
煽り専門と名のってたが、嘘ばかりを書き込んでスレの機能を麻痺させる気?
名前変えたら?
0640並列さん ◆dPfetnROQg
2009/03/07(土) 01:17:59ID:cewi3IDn> マルチスレッド≠並列
言葉の定義の問題だから、まあどうでもいいが、まあ普通は
マルチスレッドで実行されている以上、並列だし、あるスレッドが他のスレッドを
待っていてスループットが悪かろうが、並列なものは並列。
処理順序が厳密に定められていて、まったく逐次実行しか出来ないなら、
シングルスレッドと同じか、それ以下のパフォーマンスしか出ないけどな。
実際はゲームのタスクはそこまで処理順序に関しては制約が厳しくないので
いくらでも並列化できる。
0641名前は開発中のものです。
2009/03/07(土) 01:37:59ID:ZZNOCL1s並列ではない。並列な部分もあるってだけ。
今は、「正確には並行処理じゃないの?」と問われていたわけで、
純粋に並列でないなら、正確には並列とは言えない。
だいたい、マルチスレッド云々は実装レベルでの話しだし。
タスクシステムがアーキテクチャ的に並列処理かどうかとは関係ない。
0642名前は開発中のものです。
2009/03/07(土) 01:42:09ID:ZZNOCL1sコーヒー牛乳は正確には牛乳か→NO
タスクシステムは並列的か?→YES
タスクシステムは正確には並列か?→NO
0643並列さん ◆dPfetnROQg
2009/03/07(土) 01:58:35ID:cewi3IDn> 今は、「正確には並行処理じゃないの?」と問われていたわけで、
> 純粋に並列でないなら、正確には並列とは言えない。
この文章、意味不明だ。この文章、俺の解釈では↓こうだ。
今は、「正確には並行処理じゃないの?」と問われている。
スループットが1以下の並列実行なんて並列実行には含まれないので
「正確には並列」とは言えないので、単なる「並行処理」と見なすべきだから、
この「正確には並行処理じゃないの?」は正しい。
もし、そういう意味で書いているなら、俺は別に反対意見は唱えていない。
しかしそれなら>>637の書き方が悪い。
「優先順位がつくばあいもあるから正確には並列とは言えない」
だと、「優先順位がときどき偶発的について、そのときに限り並列性が落ちるから
並列とは言えない」と読める。だから俺は>>638のように反論した。
>>637は、正しくは
「優先順位がつく場合、並列化が難しく、並列度が極端に低下して、単一スレッドで実行
しているのと変わらないから、並列と呼ぶべきではない」と言うべきだっただろう。
しかし、俺はそうは思わない。
処理に優先順位がついていようが並列度を上げることは十分可能だからだ。
0644名前は開発中のものです。
2009/03/07(土) 02:03:29ID:LbywpZ2h0645名前は開発中のものです。
2009/03/07(土) 02:08:20ID:cMprZFoi見苦しいです
0646並列さん ◆dPfetnROQg
2009/03/07(土) 02:10:52ID:cewi3IDn見苦しいか?ふむ。
それなら、日本語の不自由そうな奴に絡むのはもうやめるわ。疲れるだけだ。
0647名前は開発中のものです。
2009/03/07(土) 02:23:08ID:ZZNOCL1s>だと、「優先順位がときどき偶発的について、そのときに限り並列性が落ちるから
>並列とは言えない」と読める。
優先順位がときどき偶発的について、そのときに限り並列性が落ちることがあるから、
正確には並列とは言えない、であってるよ。
タスクシステムは正確には並列か?という命題に対して、
タスクに優先順位が付く場合を判例に挙げたまで。
処理に優先順位が付く場合、理論的にピュアな並列処理とは言えないからな。
完全な並列性とは、なにをどの順で実行しても構わない場合のみ。
0648名前は開発中のものです。
2009/03/07(土) 02:47:03ID:ZZNOCL1s自分がまともに日本語を扱えないくせに。
>>643とか、これ日本語ですか?
Q:タスクシステムは正確には並列か?
A:タスクの処理の優先順位をサポートするタスクシステムの場合には、
タスクの処理に順序が出来るので、この場合は正確には並列とは言えない。
たったこれだけのことが何で分からないのか。
彼はこの問題を実装レベルの並列度の話に持ち込もうとするが、
そもそも、すべてのタスクを同時に実行できるハードが存在しない現状で、
実装レベルでの並列性をもってして、
「タスクシステムが正確には並列かどうか」を判断するのはナンセンス。
なぜならタスクシステム自体による制限よりも、
ハードウェアによる制限の方が先に現れるから。
0649並列さん ◆dPfetnROQg
2009/03/07(土) 02:49:57ID:cewi3IDn> タスクシステムは正確には並列か?という命題に対して、
だが、あんたは、>>635を誤解している。
635は
> 正確には並行処理じゃないの?
と書いてあって、並行ということはconcurrentなのだから、スループットは1倍を絶対に超えない。
635を書いた本人は、「タスクシステムの構造ではスループットは1倍を絶対に超えない」ので
「並行処理と呼ぶほうが正しいのではないか」と言ってるわけ。
それなのにそれに対する受け答えとして、あんたは、>637で「スループットがN倍になっていなければ
pureな並列とは呼べないので並行ではない」と言っている。あんたが「並列度1.0(そんなもの現実的に
存在しないんだが)ではない並列」を「並列」とみなさないのはあんたの勝手だが、635に対する返答として
637は、おかしい。
0650並列さん ◆dPfetnROQg
2009/03/07(土) 02:52:08ID:cewi3IDn> Q:タスクシステムは正確には並列か?
> A:タスクの処理の優先順位をサポートするタスクシステムの場合には、
> タスクの処理に順序が出来るので、この場合は正確には並列とは言えない。
> たったこれだけのことが何で分からないのか。
Qが間違っている。誰もそんなQをしていない。詳しくは>>649
0651並列さん ◆dPfetnROQg
2009/03/07(土) 03:03:47ID:cewi3IDnどうか、ID:EEKBitmg ◆HSP4mee/SU は、 ID:ZZNOCL1sの相手をしてやって欲しい。
ID:EEKBitmg ◆HSP4mee/SU の書く内容は、技術的に間違ってることも多々あるし、態度も生意気だけど、
日本語は意味明瞭だし、技術用語の使い方も比較的正しいので俺としてはかなり好感が持てる。
まあ、勉強熱心なんだろうな・・。
0652名前は開発中のものです。
2009/03/07(土) 10:03:00ID:8u/3vapKhttp://docs.sun.com/app/docs/doc/819-0390/mtintro-6?l=ja&a=view
0653名前は開発中のものです。
2009/03/07(土) 10:21:13ID:ZZNOCL1s逆に、並列化不可能なら、並行でない。
というか、むしろ今まで並行の意で並列と言っていたのだが。
>スループットがN倍になっていなければ
>pureな並列とは呼べないので並行ではない
は正しい。
順序がある処理は並行ではない。
0654名前は開発中のものです。
2009/03/07(土) 10:22:50ID:ZZNOCL1s俺はこっちかな。
0655名前は開発中のものです。
2009/03/07(土) 10:43:57ID:8u/3vapK同じだとおもうけどw
>順序がある処理は並行ではない。
いや、順序があっても並行は並行だろう。
ID:ZZNOCL1sは効率的でない並行/並列は役に立たないんだから、
仰々しく「並行」だの「並列」だの言うな、と主張しているように見えるなあ。
ID:ZZNOCL1sは実践的な話をしていて、
並列さんは字面通りの一般的な並列の定義に沿って話しているだけに見える。
というのは深夜の時点で並列さんも悟っているように見える。
0656名前は開発中のものです。
2009/03/07(土) 10:53:23ID:ZZNOCL1s>「タスクシステムの構造ではスループットは1倍を絶対に超えない」ので
並行化によって待ち時間が減ったりするので、スループットは向上するが、
1倍の基準点が不明。
0657並列さん ◆dPfetnROQg
2009/03/07(土) 10:57:38ID:cewi3IDn> というか、むしろ今まで並行の意で並列と言っていたのだが。
あんたは、全然話にもならない。
専門用語を勝手に本来と違う意味で使っておいて
相手に日本語が読めないだの何だの言うのは本当、勘弁して欲しい。
0658名前は開発中のものです。
2009/03/07(土) 11:06:08ID:ZZNOCL1s順序がある処理は並行化できないよ。
例えば、処理Aと処理Bがあって、
BはAの後でないと実行不可だとする。
この場合、AとBを並行に処理することは出来ない。
0659名前は開発中のものです。
2009/03/07(土) 11:06:20ID:cMprZFoi> ID:ZZNOCL1sは効率的でない並行/並列は役に立たないんだから、
そんな話じゃないでしょうに…
あと
>並列さん
>悟っている
なんか気持ち悪いです
0660並列さん ◆dPfetnROQg
2009/03/07(土) 11:13:36ID:cewi3IDn> 順序がある処理は並行化できないよ。
それぞれのタスクを逐次処理しようが、それは並行処理って言うんだが。
ある瞬間に一つしか実行していなければ並行。それがconcurrentの定義。
本当、専門用語を勝手に意味を作り替えんなと言いたい。
>>659
気持ち悪いのはお前。お前はいらない子だから死んでくれ。
0661名前は開発中のものです。
2009/03/07(土) 11:17:08ID:ZZNOCL1sお前も、並列処理は並行処理の部分集合だということをおさえられていなかっただろ。
>並行ということはconcurrentなのだから、スループットは1倍を絶対に超えない。
↑何に対する1倍かはしらないがな。
0662並列さん ◆dPfetnROQg
2009/03/07(土) 11:25:40ID:cewi3IDn>>並行ということはconcurrentなのだから、スループットは1倍を絶対に超えない。
>↑何に対する1倍かはしらないがな。
そこが読めてないのお前だけだろう。
「concurrentな処理は、Nコアであっても、単一コアで実行したときの1倍以上のスループットが出ない」の意味。
0663並列さん ◆dPfetnROQg
2009/03/07(土) 11:31:14ID:cewi3IDn> お前も、並列処理は並行処理の部分集合だということをおさえられていなかっただろ。
どこをどうやればそう読めるのか俺は知りたい。
並行処理と並列処理との差はある瞬間に、タスクを実行しているスレッド(プロセス)が
単一か複数かの差のみ。そんなことは誰でもわかっている。
その用語を勝手に違う意味に使ってたのはあんただろ。
俺には、頭がおかしいとしか思えない。
その頭のおかしいあんたを唯一擁護しているのは ID:cMprZFoi だけ。
こいつは、あんたが書き込みした直後にしか出てこない。どうせこれもあんただろ。
0664名前は開発中のものです。
2009/03/07(土) 11:36:14ID:92TsYx3Xフレームワークなら並列云々の話になると思うが…
あれもタスク進化系の一種なのか?ちょっとタスクって守備範囲広すぎ。
あれはコア数がパフォーマンスに直結する造りだね。
順序の依存性のある処理と無い処理をグループ分けして、並列で問題ないケースは複数コアで同時計算。
順序の依存性がある処理との同期スケジューリングをフレームワークが管理って感じで。
ゲーム中には依存性のある処理と無い処理があるから、まぁ複数コアを有効に使おうと思うと
こんな感じな設計に行き着くんだろうね。
0665並列さん ◆dPfetnROQg
2009/03/07(土) 11:40:55ID:cewi3IDnHSP使いのプログラミング経験の浅い世間知らずのクルクルパーだが、
そのわりには用語の使い方はまともだし、勉強もよくしていると思っていた。
俺は専門用語を勝手に俺解釈の用語とすり替えて話す奴とは
面倒くさいので話をしたくない。
このスレはどうせみんな常駐してるようなもんなんだから、みんなコテハン
にすればいい。それそれぞれが嫌な奴をNGリストに入れておけばいいと思うんだがな。
そんなわけで ID:ZZNOCL1sは俺をNGリストに入れておいてくれ。
お前と話をするのは疲れる。
0666名前は開発中のものです。
2009/03/07(土) 11:49:53ID:ZZNOCL1sいや、単純に考えて、処理に依存関係があると、並行処理できないだろ。
実際OSなんかは各スレッド間に依存関係が無いものと見なして並行処理しているわけで。
0667名前は開発中のものです。
2009/03/07(土) 11:52:30ID:8u/3vapKそれが実質直列だってことは分かるんだけど。
とりあえず、俺が何を考えているのかと言うと、
動き方が実質直列であっても、それぞれ別のスタック領域を持ってる点が違うだろ?
別々のコンテキストを持っている。
その辺を区別するのに「実行効率ゼロの並行」も俺は並行と呼んでただの直列と区別していた。
要するに俺はコアが何個でそのPCがどこ指してるのって部分だけで並行か並列かって言ってた。
んで、一般的定義はどうなのと思ってググった先を見てみると、
コンテキストがどうのというのは論点じゃ無いような気がしてきた。
もうちょい調べてみるわ。
0668並列さん ◆dPfetnROQg
2009/03/07(土) 12:05:02ID:cewi3IDn> いや、単純に考えて、処理に依存関係があると、並行処理できないだろ。
あんたの「並行処理」について持ってる勝手なイメージは知らんが、
優先順位がついていてそれぞれのタスクを逐次的に処理していく場合も
(そのタスクが終了後に消滅しないなら)「並行処理」と呼ぶ。
http://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
「並行プログラムは、それぞれの計算プロセスを実行箇所をインターリーブしながら
シングルプロセッサによって逐次的に実行される」
計算プロセス間の依存性とか、効率とかそんなことは並行処理の定義とは
何ら関係がない。
・実行箇所をインターリーブしながら(タスクからリターンしてもタスクは
通例存在していて)
・シングルプロセッサによって(ある瞬間を見たときにつねにひとつの
プロセッサしかタスクを実行していない)
この二つを満たしているなら、並行処理。
0669名前は開発中のものです。
2009/03/07(土) 12:09:24ID:ZZNOCL1sどこにそんな定義があるんだ?
0672名前は開発中のものです。
2009/03/07(土) 12:26:24ID:ZZNOCL1shttp://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の人は分かってないみたいですよ。
注意してきたらどうなんですかね。
0673名前は開発中のものです。
2009/03/07(土) 12:42:43ID:ZZNOCL1s>計算プロセス間の依存性とか、効率とかそんなことは並行処理の定義とは
>何ら関係がない。
だから、並行処理では処理の依存性は考えない=依存性は扱わない=依存性は扱えない。
扱わないのは扱えないから扱わないの。
実際のOSなんかでも、スレッド間の処理の依存性は扱わない。というか扱えない。
各スレッドを並行と見なして実行する。
処理に依存性がある場合はプログラマが自前で同期オブジェクトとかつかってシコシコやる。
一方、タスクシステムでは処理の依存を優先順位という形で明示的に扱うのが一般的。
各タスクを並行とみなしているわけではない。
0674名前は開発中のものです。
2009/03/07(土) 12:44:25ID:92TsYx3X並行・並列処理の単語の定義のスレになってるな。
自然言語の単語の定義なんてどこまでいっても曖昧なのに…
自分の言う「臭い」と他人の言う「臭い」が同じという保障なんて誰にも出来んよ
確かなのは人工言語で書かれたソースのみ。
0675並列さん ◆dPfetnROQg
2009/03/07(土) 12:44:25ID:cewi3IDnざっと見たけど日本語のwikipediaのほうは、ひどいな。
これとか
> 並行性のための構造を備えた最も一般的な言語はJavaとC#である。
なんでだよと突っ込みを入れたくなる。
これ書いてる奴は、thread生成が出来るからJavaとC#を入れてるんだろうけどひどいにもほどがある。
C#のyieldによるcontinuationは確かに並行スレッドなんだが、それならJavaを含めるのはおかしい。
日本語のwikipediaの「並行性」の項目もひどいな。なんだよこれ。
ちょっとwikipedia行って暴れてくるわ。
0676並列さん ◆dPfetnROQg
2009/03/07(土) 12:47:15ID:cewi3IDn> 自然言語の単語の定義なんてどこまでいっても曖昧なのに…
専門用語は、限りなくstrictに定義されてるべき。
そうじゃなきゃ論文とか意味のないものになってしまう。
0677名前は開発中のものです。
2009/03/07(土) 12:50:58ID:ZZNOCL1swikipediaを引用しているようだが、途中で切れているようだが。
>「並行プログラムは、それぞれの計算プロセスを実行箇所をインターリーブしながら
>シングルプロセッサによって逐次的に実行される」
の後ろには、実際には
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.
が続いている。
自分の都合の良いところだけを掻い摘んで引用する根性の悪さ。
結局、
>並行処理と並列処理との差はある瞬間に、タスクを実行しているスレッド(プロセス)が
>単一か複数かの差のみ。そんなことは誰でもわかっている。
は間違い。
0678並列さん ◆dPfetnROQg
2009/03/07(土) 12:52:11ID:cewi3IDn> 実際のOSなんかでも、スレッド間の処理の依存性は扱わない。というか扱えない。
それはダウト。
実際のOSにはプロセスのpriorityがあって、それに従ってスケジューリングされる。
割り込みなんか特にそう。あるプロセスの実行が他プロセスの実行より優先されることは多々ある。
キーボードイベントが発生したら、その処理が優先される。そこには明確な実行順序がある。
そんな機能すらない、もっとprimitiveなOSの話をしているなら、まあそれはそれでいいけど
「実際のOS」と書かれるとWindowsやらLinuxやらを想定しているのかと俺は思ってしまう。
0679名前は開発中のものです。
2009/03/07(土) 13:02:13ID:ZZNOCL1sお前がひどいという日本語版の、
「並行性のための構造を備えた最も一般的な言語はJavaとC#である。」
は英語版のページにある
「Today, the most commonly used programming languages that
have specific constructs for concurrency are Java and C#. 」
の訳なわけだが。
そしてその英語版のページを引用して、
「これが並行処理の定義だ!」と言っていたのがお前なのだが。
さらにその引用も自分の都合のいいところだけを引用するという正確の悪さ。
「〜又は〜」と書いてあるのに、「又は」以降をバッサリカット。
0680名前は開発中のものです。
2009/03/07(土) 13:05:44ID:ZZNOCL1sプロセスのプライオリティーは必ずしも守られるわけではない。
あれは、CPUリソースに対する優先順位であって、処理に対する依存関係を表すものではない。
現にマルチプロセス環境だと、プライオリティーの高いものと低いものが同時に実行される。
0681並列さん ◆dPfetnROQg
2009/03/07(土) 13:05:45ID:cewi3IDnそれなぁ、「executed in parallel」以下は敢えて省略した。
これを「根性の悪さ」と言われるのはわからないではないが、いま俺が問題としているのは、
「concurrent thread」 とか「parallel thread」というときのconcurrentとparallelの意味の違いだ。
「concurrent computing」という学問分野があって、その学問分野は広範で
いわゆる分散コンピューティングみたいなことまで研究対象としている。
本来、concurrentの定義にparallelとか出てくるのはおかしいのだが(それだとconcurrentとparallelとの
差が無くなってしまう)、「concurrent computing」の分野においては、「concurrent program」の意味は、
かなり拡大解釈されている。だから、その部分をはしょった。
「concurrent computing」のconcurrentを援用するのがあまり良くなかったと言われれば、まあ、それはそうなのだが。
0682名前は開発中のものです。
2009/03/07(土) 13:09:34ID:Fbn5zOAB並列(parallel)は、複数の計算を物理的に同時に実行できることを表す。
んじゃないの?
独立した概念(関連はあるけど)なんだから、>>660の
>ある瞬間に一つしか実行していなければ並行。それがconcurrentの定義。
はおかしいと思う。
concurrentに作っておけば、parallelに実行しやすいんだし。
0683並列さん ◆dPfetnROQg
2009/03/07(土) 13:17:17ID:cewi3IDnうむ、それは正しい。
>>682
ああ、そうか。そういう意味では、660はおかしいし、書き方が悪いな。
これについては反省。すまんかった。> ID:ZZNOCL1s
0684名前は開発中のものです。
2009/03/07(土) 13:19:11ID:ZZNOCL1s0685名前は開発中のものです。
2009/03/07(土) 13:20:00ID:ZZNOCL1s0686並列さん ◆dPfetnROQg
2009/03/07(土) 13:24:11ID:cewi3IDn> 並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。
> 並列(parallel)は、複数の計算を物理的に同時に実行できることを表す。
この定義に基づいて古典的なタスクシステムのタスクについて語ると
・古典的なタスクシステムのタスクは、「並行」。
・実行順序に厳しい制約があるとみなすなら、「並列」化はできない。
ところが実際のゲームでは、タスク間に依存関係がない部分が結構あるので
部分的に「並列」化できる。
この「並列」化によって、コア数N×0.7ぐらいのパフォーマンスは出る。
で、この「並列」化を古典的タスクシステムを進化(?)させて書けるようにすれば
いいということだな。
0687並列さん ◆dPfetnROQg
2009/03/07(土) 13:24:58ID:cewi3IDn俺のことは、NGリストに入れておいてくれ。
最初に682のように書いてもらえれば、俺はすぐに理解できたのだが。
0688名前は開発中のものです。
2009/03/07(土) 14:32:04ID:NOayWFQU0689名前は開発中のものです。
2009/03/07(土) 14:39:01ID:ZZNOCL1s>並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。
これに付け加えて、並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、
必要だと考えている。
並行性
http://ja.wikipedia.org/wiki/%E4%B8%A6%E8%A1%8C%E6%80%A7
だから、
1.並行でなければ並列化できない。
2.タクスの処理順位を考慮するようなタスクシステムは、すべてのタスクが互いに並行というわけではない。
3.ゆえに、タスクシステムを並列化するならば、並行なタスク同士を抽出する必要がある。
と考え、
さらに、タクスの処理順位を考慮するようなタスクシステムは「並行でない」と考える。
0690名前は開発中のものです。
2009/03/07(土) 15:29:42ID:8u/3vapK俺もこう思ってた。
んでそうハッキリ書いてある資料を探してるんだけど、見つからない。
>並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、必要
次からこっちの定義で話すわ。
0691名前は開発中のものです。
2009/03/07(土) 15:37:28ID:92TsYx3X>さらに、タクスの処理順位を考慮するようなタスクシステムは「並行でない」と考える。
MTフレームワークは処理順の依存の有無でタスク分けてマルチコアで同時に複数タスク動かしてるけど
これは処理順位を考慮するシステムだから「並行でない」のかな?
0692名前は開発中のものです。
2009/03/07(土) 15:42:35ID:ZZNOCL1s>並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。
だと、いわゆるオブジェクトと呼ばれるものは全部並行ってことになっちまうだろ。
コンテキストが同時に存在できないオブジェクトなんて、まあ無いからな。
言葉としての意味が無くなる。
0693名前は開発中のものです。
2009/03/07(土) 15:56:08ID:ZZNOCL1sもしはじめから並行なら、MTフレームワーク自体いらないでしょ。
0694名前は開発中のものです。
2009/03/07(土) 16:00:29ID:92TsYx3X>もしはじめから並行なら
どこにそんな前提が?
0695名前は開発中のものです。
2009/03/07(土) 16:36:27ID:E0xOAlNR>これに付け加えて、並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、
ある計算の、ある時点における実行状態を表現したものを、コンテクストと呼ぶんじゃないの?
>並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。
と同じ事を言ってるだけのような。
>1.並行でなければ並列化できない。
は違うと思う。
並行でない命令列も、依存関係が無ければ並列化できる。
現にCPUの中でシリアルセマンティクスを満たしつつ並列実行が普通におこなわれている。
そういう命令列は本質的に並行だった?違うでしょ?スーパースカラで並列に実行される命令は、
異なるコンテクストを持ってるわけじゃないんだから。
あと細かいことだけど、順位と順序は全然意味違うんだから、
ちゃんと使い分けてくれないと読み辛いよ。
0696名前は開発中のものです。
2009/03/07(土) 18:22:05ID:UcXZ5wF9くる値によって依存関係があるかもわからんしないかもわからん
ごった煮だとそういうソースになってしまうな
0697名前は開発中のものです。
2009/03/07(土) 18:30:21ID:rbzzI5lu↑(・∀・)↑
ウンコちゃんインしたお
0698名前は開発中のものです。
2009/03/08(日) 18:34:25ID:ryll+mdy> >これに付け加えて、並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、
> ある計算の、ある時点における実行状態を表現したものを、コンテクストと呼ぶんじゃないの?
> >並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。
> と同じ事を言ってるだけのような。
例えば、コンテクストが共有されている場合などでは、
コンテクストは同時に存在できるが、同時に実行はできない。
具体的には、オブジェクトAがオブジェクトBの参照を内部に保持している場合など。
オブジェクトAはオブジェクトBとコンテキストを共有しているということになり、
オブジェクトAとオブジェクトBは同時に存在できるが、同時に実行は出来ない。
>並行でない命令列も、依存関係が無ければ並列化できる。
並行でない命令列の中でも、依存関係が無い並行な部分だけは並列化できる。
並列化とは、並行に処理することだから、並行な処理しか並列化できない。
自動並列化
http://ja.wikipedia.org/wiki/%E4%B8%A6%E5%88%97%E5%8C%96
>プロセッサで「並行」に実行されるようにする。
スーパースカラ
http://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
>プロセッサ内の冗長な実行ユニットを使って「並行」して処理される。
0699名前は開発中のものです。
2009/03/08(日) 18:39:37ID:ryll+mdyヒント:背理法
0700698
2009/03/08(日) 19:26:02ID:ryll+mdyコンテクストが共有されていても、read-onlyな場合は並列化可能だね。
書き込みするとアウトだけど。
0701名前は開発中のものです。
2009/03/08(日) 19:27:58ID:0j+yjPijなんか色々と変だよ。
>例えば、コンテクストが共有されている場合などでは、
>コンテクストは同時に存在できるが、同時に実行はできない。
共有されているのに同時に存在するってどういう意味?
コンテクストはいくつあるの?
>具体的には、オブジェクトAが(以下この段落略)
オブジェクトとコンテクストがごっちゃになってる。
オブジェクトAがオブジェクトBへの参照を内部に保持していても、
コンテクストがいくつあるのかという問題とは関係無いよ。
オブジェクトAとBを同時に実行はできない?オブジェクトを実行するってどういう意味?
この辺は、>>692の勘違いと同じ匂いがする。
てか>>692さんなのかな。
0702名前は開発中のものです。
2009/03/08(日) 19:30:14ID:0j+yjPij701の続き。
>並行でない命令列の中でも、依存関係が無い並行な部分だけは並列化できる。
「依存関係が無い部分」を「並行な部分」とは呼ばないよ。
いや呼ぶのは自由だけど、少なくとも聞いたことないよ。
いや聞いたことないだけかもしれないけど。
>並列化とは、並行に処理すること(以下略)
×。
もうちょっと詳しく言うと・・・
「並列化とは、並行に処理すること」
という言葉それだけを見るなら、○。
でも、そこに出てくる「並行」という言葉は、並列という言葉を説明するための
「(同時)並行」という意味であって、このスレでここまで長々と議論してきた
並行(concurrent)とは意味が違うよ。
(「並列」を説明するのに「並列」と言っても仕方が無いからね)
二つ挙げてくれたwikipediaの説明に出てくる「並行」も、同じように「並列」を
説明するための「並行」であって、ここに引っ張り出してきても意味が無いよ。
■ このスレッドは過去ログ倉庫に格納されています