[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/21 03:04 / Filesize : 243 KB / Number-of Response : 977
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

マルチスレッドプログラミング相談室 その8



1 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 17:19:27 ]
マルチスレッドプログラミングについて語るスレ

■前スレ
マルチスレッドプログラミング相談室 その7
pc12.2ch.net/test/read.cgi/tech/1215253576/

■過去スレ
その1 ttp://pc3.2ch.net/tech/kako/997/997345868.html
その2 ttp://pc5.2ch.net/test/read.cgi/tech/1037636153/
その3 ttp://pc8.2ch.net/test/read.cgi/tech/1098268137/
その4 ttp://pc8.2ch.net/test/read.cgi/tech/1130984585/
その5 ttp://pc11.2ch.net/test/read.cgi/tech/1157814833/
その6 ttp://pc11.2ch.net/test/read.cgi/tech/1187008532/

OS・言語・環境は問わないが、それゆえ明記すべし。
テンプレ
【OS】
【言語】
【実行環境】
【その他特記する事項】

719 名前:! 【14m】 【東電 66.0 %】 mailto:sage [2011/09/23(金) 18:58:34.31 ]
ペリフェラルいじるときは
エイエイオー
しまくりだ

720 名前: ◆0uxK91AxII mailto:sage [2011/09/23(金) 20:02:20.23 ]
CLRなんて作らないから、どうでも良い。

721 名前:デフォルトの名無しさん mailto:sage [2011/09/23(金) 22:55:12.81 ]
>>715
Itaniumで.NETアプリを動かすのって、基本的には
x86のWindowsサーバー上のアプリをそのまま持っていきたい
ってニーズがほとんどだろうから、その場合はパフォーマンスより先に
互換性確保のほうが最大限に重視されるだろうね。

722 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 03:15:05.37 ]
C++0xとCLRとJavaのメモリモデルの違いとか考えたこともない話だわ
マルチスレッドに詳しいひとは普段どんな仕事してるんだろ

723 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 10:21:23.71 ]
排他に必要なメモリバリア類をライブラリだかCLRだかVMだかがやるんじゃないの。
そこを超えて踏み込む(=排他をケチる)とメモリモデルの違いが表面化するとか?

俺の持論:volatileで十分w

724 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 11:58:45.66 ]
volatileの言語仕様知らないだろw

725 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 15:39:38.60 ]
volatileを信用してると痛い目合うコンパイラもあるぞ

726 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 15:56:04.66 ]
会う

727 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 17:11:35.69 ]
コンパイラからバールのような物が飛んでくるのですね



728 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 17:55:34.09 ]
perlのようなものか

729 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 18:18:48.58 ]
>>716
ECMA-335はvolatile変数についてrelease-acquireバリアは要求してるけど、
sequential consistencyは要求してないように見える。12.6.7には
> a conforming implementation is not required to provide a single total ordering
> of volatile writes as seen from all threads of execution.
とも書いてるし。

730 名前:729 mailto:sage [2011/09/24(土) 18:20:59.69 ]
>>716
だから、ECMA-335において、たとえば以下のようなコードでは
volatile int a = 0;
volatile int b = 0;
Thread1: { a = 1; int r1 = b; }
Thread2: { b = 1; int r2 = a; }
r1 == 0 && r2 == 0 という結果も許されるんじゃないかな。
一方で、JavaのvolatileやC++11のstd::atomicはこういう結果を許さない。

731 名前:デフォルトの名無しさん [2011/09/24(土) 19:22:11.48 ]
.NETではInterlocked使うんだよ

732 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 20:10:49.35 ]
メモリバリアとアクセス競合ごっちゃになってないか?

733 名前:デフォルトの名無しさん mailto:sage [2011/09/25(日) 00:03:40.81 ]
javaってこれのせいでvolatile遅いんじゃねーの?


734 名前:デフォルトの名無しさん [2011/09/25(日) 00:21:16.82 ]
Javaって誕生当初はロックのコストが無視できるくらいVM遅かったの?
コレクションが全部同期とか頭おかしいよね

735 名前:デフォルトの名無しさん [2011/09/25(日) 00:25:40.60 ]
遅かった

736 名前:デフォルトの名無しさん mailto:sage [2011/09/25(日) 01:33:01.66 ]
複数リクエストが並行してバンバン来るservletやjspがその上で動いてたもんだから大変

737 名前:デフォルトの名無しさん mailto:sage [2011/09/25(日) 13:00:47.00 ]
>>734
まさにそのとおり



738 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 11:57:09.05 ]
ハードディスクが一つしかない環境だと
ファイルアクセススレッドを何本走らせても結局ハードディスクにアクセスしてるのは常に一つだから
二本目以後は意味ないですか?


739 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 13:08:54.15 ]
そんなことはない。

740 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 15:42:40.84 ]
シークが増えて、余計に遅くなるという意味なら有る

741 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 18:03:27.80 ]
CPUから見ればI/Oは超遅いから無意味、と予想するけど
OSやHDDのキャッシュでかなり違うのかもしれない
結局環境依存だしやってみて実測するしかないっていうね

742 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 20:06:08.63 ]
>>738
>>740
シークを待っている間に別の処理を行える事で、
早くなる可能性もある。どっちに転ぶかは仕様
次第なんで、それだけの話じゃわからない。

確実に言えるのは「早くなる場合と、遅くなる場合と、変わらない場合がある」って事だけだ。

743 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 20:49:34.91 ]
S-ATAて仕様上はコマンド並び替えとかでシーク減るとか無かったけ?

744 名前:デフォルトの名無しさん mailto:sage [2011/10/05(水) 10:48:57.34 ]
期待するだけ空しい

745 名前:! 【13.8m】 【東電 78.9 %】 mailto:sage [2011/10/09(日) 21:31:08.21 ]
NCQをまともに機能させるのは大変なことだお( ^ω^)

746 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 06:46:41.34 ]
FFのリークが酷過ぎ

747 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 08:42:15.18 ]
メモリバリアとか難しすぎて頭おかしくなりそう

atomic_int a = 0, b = 0;

//thread1
a.store_acquire(1);
int x = b.load_release();

//thread2
b.store_acquire(1);
int y = a.load_release();

これでx == 0 && y == 0が真になることがあるという話なんだけど頭の中でどう考えてもならない
いったいどういうカラクリでx,yが同時に0になるの?



748 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 09:23:38.50 ]
>>747
正しくはstore_releaseとload_acquireね。
store & acquire とか、load & release とかいう組み合わせはない。

749 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 13:56:45.85 ]
>>747
他のスレッドに値が反映されるまでラグがあると考えればいいよ

750 名前:デフォルトの名無しさん mailto:sage [2011/10/22(土) 16:08:33.08 ]
>>747
atomic_int a = 0, b = 0;
//thread1
a.store_release(1);
int x = b.load_acquire();

//thread2
b.store_release(1);
int y = a.load_acquire();

だとすると、
load_acquire()はstore_release()の前に移動できる。

751 名前:デフォルトの名無しさん mailto:sage [2011/10/22(土) 21:42:35.60 ]
そういやなんで皆ロックの速さに拘るの?
スレッド全体の処理量に対してロックが必要なのは極僅かでしょ。


752 名前:デフォルトの名無しさん mailto:sage [2011/10/22(土) 21:55:02.53 ]
いやロックの話じゃなくてアトミック操作の話


753 名前:デフォルトの名無しさん mailto:sage [2011/10/22(土) 22:55:15.90 ]
排他ロックしたら負け

754 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 09:19:45.48 ]
volatileで十分w

755 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 09:26:02.86 ]
>>754
解雇

756 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 14:57:53.13 ]
volatileでどんなコード吐くかみんとハマるよ

757 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 15:13:30.40 ]
javaやC#ならvolatileで充分だろうな。
CとC++のvolatileは別もんだから役に立たん。
詳しくはC++11スレを見てこい。



758 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 15:22:42.74 ]
volatileかmutexかなんてのはこっちでする話だろうに
なんであのスレでしつこく長引いてたんだか

759 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 16:16:29.85 ]
>>758
言語仕様読まないバカが粘着したせい

760 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 19:18:18.55 ]
C/C++のvolatileはvolatileで目的があって用意されたものだがマルチスレッドと直接関係はない低水準機能で、
使う場合もあれば使わない場合もあると。
volatile std::atomic<T>はJavaのvolatileとほぼ同じ意味だそうだが。

761 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 19:28:17.70 ]
コンパイラによる静的な省略や並び替えは抑制できるけど
CPUが実行時に行う最適化には関与しないから無意味

762 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 21:37:00.66 ]
はあ?

763 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 21:58:56.17 ]
>>762
少しは勉強しろ


764 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 22:06:44.84 ]
>>750
atomic_int a = 0, b = 0;

//thread1
a.store_release(1);
int v = a.load_acquire();
int x = b.load_acquire();

//thread2
b.store_release(1);
int w = b.load_acquire();
int y = a.load_acquire();

のときでも x == 0 && y == 0 はありうる?

765 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 22:06:59.86 ]
意味不明なこと言ってるのがわかってないの?

766 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 22:07:49.18 ]
>>765
自己レス?

767 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 22:09:36.03 ]
>>764
//thread1
int v = a.load_acquire();
int x = b.load_acquire();
a.store_release(1);

//thread2
int w = b.load_acquire();
int y = a.load_acquire();
b.store_release(1);

リオーダーされてこうなったら全部0



768 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 22:11:32.64 ]
>>767
てきとーなこと書くなよ

769 名前:768 mailto:sage [2011/10/23(日) 22:24:48.00 ]
>>767
すまん勘違いしてた。同じa同士のloadとstoreはひっくり返るはずが無いと思ったが実際の動作ならそうなりえるよね。

770 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 23:05:40.90 ]
>>760
それvolatile無くてもJavaのvolatileと同じ。
volatile変数としてatomicを使えるようになってるだけで、
特別扱いはない。

771 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 23:19:22.09 ]
>>767,769
同じスレッド上でのリオーダーの話と別のスレッドから見たときの順序の話がごちゃ混ぜになってないか?

a.store_release(1);
int v = a.load_acquire();//a.store_releaseとa.load_acquireは同じオブジェクトなのでリオーダーできない。
int x = b.load_acquire();//その結果b.load_acquireも上に移動できない。

しかしながらseq_cstじゃ無いので他のスレッドから見たときの順序が保障されないので x == 0 && y == 0 はありうる

これでいいんじゃね?

772 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 23:32:07.62 ]
そのコードで会話が成立してるところが凄いかも

773 名前:デフォルトの名無しさん mailto:sage [2011/10/24(月) 00:06:26.80 ]
いまから一生懸命C++11での質問してる人がいるけど、
まともに使えるコンパイラでてんの?
メモリバリアとかよくわかんないなら、
今使えるライブラリを動かして勉強した方が早いんとちゃう?
3年後11に本腰入れたって出遅れはしないだろ。

774 名前:デフォルトの名無しさん mailto:sage [2011/10/24(月) 00:09:00.47 ]
3年後には次の規格が出てるよ

775 名前:デフォルトの名無しさん mailto:sage [2011/10/24(月) 00:19:19.45 ]
>>738
なみの処理じゃ、IOの影響がでかすぎて、
速度の優劣はIO次第になるな。
例えば、1600個の画像からMD5を採ったとき、
IO状態次第で0.7秒から、1分40秒もの差がでる。
恐らく前者はキャッシュ効果だろう。
スレッドを4本でスレッドプール使って計算したが、
確かに計算は速いものの、結局IOがもたつくとどうしようもなく遅い。

776 名前:デフォルトの名無しさん mailto:sage [2011/10/24(月) 00:20:20.50 ]
>>774
03から11の間に規格あったっけ?

777 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 11:21:35.66 ]
【OS】 WindowsXP SP3
【言語】 c++
【実行環境】VC++ 2010 + boost
【その他特記する事項】-
以下に示す2パターンの記述で、どっちでもイイヨ…、どちらが良い、どちらもダメで他の方法が良いか、ご指導お願いします。

マルチスレッド処理するクラス(以下、クラスA)をつくっています。
以下のスレッドを生成します。
 ・ネットワーク経由でデータを受信する
 ・受信したデータを内部で加工する
 ・加工したデータを画面に表示する

スレッドを実行する方法について考えています。
{
 クラスAのインスタンスaを作成
 aとスレッド関数名を指定してスレッド生成・開始×3
 join
}
とするか
{
 クラスAのインスタンスを生成して
  コンストラクタ内でスレッドを生成・開始
}// デストラクタ内でjoin
とするか迷っています。
普通は前者のようにする気がします。
後者にすると、一見スレッドが生成されていることに気がつきません。

ですが、クラス・インスタンスの独立性的なもので考えると後者でも良いような気がしました。
が、結局、デストラクタでjoinすることで、
元のスレッドが、a配下のスレッドの終了を待機してしまう、という訳のわからなさがあります。

以上、よろしくお願いします。



778 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 11:37:57.33 ]
どうでもいいよ
どっちみちそんな手軽にあちこちで無意識に使うもんじゃないでしょ

779 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 11:46:17.15 ]
デストラクタでJoin失敗したらどうすんの


780 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 12:39:33.84 ]
スレッドがどうとかより機能別に関数を作れ

781 名前:777 mailto:sage [2011/10/25(火) 12:55:15.17 ]
レスどうもです。

>どうでもいいよ
作法とかあったらしりたいなぁ、と思いました。(マルチスレッド自体はじめてで。)
今回は簡単なツールなので確かにどうでもいいのですが…。

>Join失敗したらどうすんの
失敗するのですか?
戻り値がvoidだったので気にしてませんでした。
例外が投げられるのかな。調べてみます。

782 名前:777 mailto:sage [2011/10/25(火) 13:10:39.43 ]
あれ?
結局デストラクタでJoin失敗した場合と、デストラクタじゃない方でJoin失敗した場合とで、どういう違いが起きるのです?

>スレッドがどうとかより機能別に関数を作れ
一つのクラスに押し込めるな、ということでしょうか?
関数は各スレッドで(クラス内で)独立したものを使っていて、
関数間のデータの受け渡しもクラス内のメンバ変数を使っているので、
クラスの使い方的に、理にかなっているかなぁなんて考えたのですが…。

783 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 14:00:13.83 ]
構造体や変数に volatile とつけたときの
本当の意味を知る方法

784 名前:777 mailto:sage [2011/10/25(火) 14:47:21.75 ]
レスどうもです。

>構造体や変数に volatile とつけたときの
volatileとか初めて知りました。何てこと…。
でも、コンパイルのコード生成的なオプションで、マルチスレッド指定していれば、変な最適化はされなくないですか?

>どちらもダメで他の方法が良いか
に対するレスですよね?
781か782でしょうか?

785 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 15:09:03.14 ]
>>777
受信スレッドと加工スレッドと表示スレッドに分けるんだろ。
で、スレッド起動したら基本は動きっぱなしだと理解したんだが。

それなら、受信クラスと加工クラスと表示クラスに分けて、
スレッド起動(受信クラス、ネットワーク情報、受信バッファ)
スレッド起動(加工クラス、受信バッファ、表示キュー)
スレッド起動(表示クラス、表示キュー、表示デバイス情報)
こんな感じで起動すればいいんじゃないのかね。
こういう作りにしておけば、例えばメインスレッドで表示をするように変更するのも簡単だ。

786 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 15:51:18.15 ]
TBB使えば

787 名前:777 mailto:sage [2011/10/25(火) 17:02:22.59 ]
>受信スレッドと加工スレッドと表示スレッドに分けるんだろ。
>で、スレッド起動したら基本は動きっぱなしだと理解したんだが。
はい。

>こんな感じで起動すればいいんじゃないのかね。
了解です。
変にまとめすぎない方がいい感じなんですね。
「独立して動くスレッド達のだから、メインでは、何もしないのがいいのかなぁとか無駄に凝ってました。

>TBB使えば
それは、どのような意図でです?
boostとそっくりな気がして、どの様にとりあつかえばヨイのか見当がつかないです。



788 名前:777 mailto:sage [2011/10/25(火) 17:13:53.40 ]
detach()というメソッドが何を目的にしているのかいまいち理解できないので教えて欲しいです。

>>785 を利用させてもらうと、boost::threadを使う場合(thread_groupで無い場合)
 boost::thread スレッド起動1(受信スレッド関数名、受信クラス、ネットワーク情報、受信バッファ)
 boost::thread スレッド起動2(加工スレッド関数名、加工クラス、受信バッファ、表示キュー)
 boost::thread スレッド起動3(表示スレッド関数名、表示クラス、表示キュー、表示デバイス情報)
で、スレッドを起動しますが、
「あとは、エラー出ても、例外投げても、私は知らないから勝手にやってね。」という場合は、
 スレッド起動1.detach(); スレッド起動2.detach(); スレッド起動3.detach();
と書いてしまっていいんですか?
join()しないと、メモリ的に何かおかしいことになりそうな気がして、ドキュメントを探しているのですが、捗っていないです。

デタッチ自体初めて知った概念なので、理解がすすまないです。
デタッチ:デバッガなどが監視・制御の対象としていた(アタッチしていた)実行中のプログラム(プロセス)を監視下から外すことを「デタッチする」という。

というのは、わかったのですが、自動変数である「スレッド起動x」は、メイン終了で開放されるのではないのですか?

789 名前:デフォルトの名無しさん mailto:sage [2011/10/26(水) 12:59:59.34 ]
>>788
pthread_detachとCloseHandleをスレッドに対して
実行した場合を調べてみ。

790 名前:デフォルトの名無しさん [2011/11/03(木) 18:34:53.11 ]
visual c++ 2010 Express
についてくる、
Concurrency::concurrent_queue
を使って、
要素にstringを含んだ構造体(そういえばstringだけって試してないな)を取り扱うと、
デストラクタで開放するときに、アクセス違反が起きるんですけどどうすればいいですか?

という質問をしたいのですけど、Visual C++を教えるスレッドへ行ったほうがいいです?
とりあえず、英語圏で同じ問題を出している人をみつけたんですけど、みたいな状態で、アロケータ?なんだそりゃ?な状態なのです。とりあえず英語読んできます。
ageて申し訳ない。

791 名前:790 mailto:sage [2011/11/03(木) 18:39:17.13 ]
申し訳ないです。

よく考えたら、Concurrency::concurrent_queueとマルチスレッドって関係浅いですね。
他で訊きなおします。
失礼しました。

792 名前:デフォルトの名無しさん [2011/11/03(木) 20:00:51.82 ]
そういえばppl.hのメモリリークのバグっていつの間にかなおってたな

793 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 10:54:58.38 ]
p://ideone.com/CZz2M

Concurrency::parallel_forを使っているかたはいらっしゃらないでしょうか。

画像処理のシミュレータをVC2008Expで書いていて
CreateThreadによる手書きマルチスレッドからOpenMPと移行し
速度的に変わっていないことを確認したのですが
VC2010Expに移行し、OpenMPの導入方法がわからなかったので
parallel_forに書き換えてみた所、異常に遅いのです。

プロジェクトの設定は、2008はリリースデフォルト+OpenMPサポート
2010はリリースデフォルトです。

何か設定を間違っているのかと思うのですが、どなたかわかりませんか?

【OS】XP sp3 32bit
【言語】VC++ 2008/2010 Express
【実行環境】 Core 2 Extreme X9650 3.45Ghzくらい

794 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 11:43:33.72 ]
プログラミング初心者で課題が出たんですけど…
教えて頂けるとありがたいですm(__)m

・九九の表をVisual Basicで完成させる

・1から100までの整数の和を求める

お願いします

795 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 13:40:05.39 ]
>>794
スレ違い。

BASICの宿題はお前にまかせた
ttp://hibari.2ch.net/test/read.cgi/tech/1136788500/


796 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 18:00:31.85 ]
マルチスレッドで九九表を作るという課題かもしれない

797 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 18:18:03.92 ]
処理そのもののコストよりもスレッド作るコストの方がでがいわw




798 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 19:26:55.17 ]
>>797
つまり、よりコストを下げるためにFiberを実装する宿題と言うことか。

799 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 00:04:15.44 ]
教官が採点不能すぐるwww

800 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 00:07:19.51 ]
SSE使おうぜ

801 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 08:01:57.58 ]
SSEを使ったからといって、マルチスレッドとはいえないがな。

802 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 09:10:50.87 ]
数値計算ならSSEとマルチスレッドを両方使うのが常識だな

803 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 13:08:03.64 ]
ならGPGPUで

804 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 17:08:36.01 ]
SSE+マルチスレッドなら九九ならず9999999×9999999くらいの表を作るべきだな

805 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 17:35:23.60 ]
約100T個

806 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 20:09:53.33 ]
GPGPUってマルチスレッドなのか?
一応処理単位をスレッドと呼ぶけどそれじゃSSEもマルチスレッドになるような
数値計算だとデータ並列が基本だから数値計算プログラムを書く人から見たら
いわゆるマルチスレッドと大して違わないんだろうが

807 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 20:32:03.35 ]
GPGPUもSSEも「並列化プログラミング」だよね
ただそれらはスレッド無しでも使える技術だから、このスレでは微妙かも
以前は並列処理スレがあったけど、そちらはdat落ちした



808 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 22:50:07.24 ]
SSEはSIMDだろ、んでGPGPUとスレッドはMIMD。
SSEとGPGPUは機能としては勿論、分類としても全然違うと思うぞ。

809 名前:デフォルトの名無しさん mailto:sage [2011/11/17(木) 02:40:46.84 ]
GPGPUで重要な性質はSIMDだろ
いかにSIMDを生かせるかで性能が決まって、アルゴリズムもそれが前提になる

810 名前:デフォルトの名無しさん mailto:sage [2011/11/17(木) 02:59:04.56 ]
GPGPUの各クラスタというか構成単位について見ると
同時に異なる命令を実行していることがあり得るので
Single Instructionではない

フリンの分類に当てはめるならMIMD
しかし、もっと狭めたSPMDっていう表現のほうが適切じゃないの

811 名前:デフォルトの名無しさん mailto:sage [2011/11/17(木) 03:21:03.30 ]
複数の別々の画像に対して同じ処理を並列に独立に実行したら
タスク並列かデータ並列かどっちになるの?

812 名前:デフォルトの名無しさん mailto:sage [2011/11/17(木) 07:24:31.73 ]
どっちも使ってるで良いだろ


813 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 20:50:45.10 ]
GPUは投機実行するか、単に並列実行するかで方向性がかなり変わるよね。
もっとも、GPGPUとしては投機実行の方が需要が多いだろうけど。
投機実行となると実行してる命令はクラスタ毎に異なるから
やっぱMIMDとしての使用がメインという事でないか。

814 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 23:03:59.97 ]
GPGPUは「ゆかいな牧場」のメロディーで発音したくなる。

815 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 00:44:45.34 ]
>>814
しまった、そう発音していた。

816 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 18:45:55.58 ]
>>815
おまえがいちろうか、

817 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 19:42:22.04 ]
大人になってから改めて歌詞を見ると下ネタにしか見えないな



818 名前:デフォルトの名無しさん [2011/11/22(火) 19:52:25.40 ]
シングルスレッ〜ドでコード おまえ書いてたころ〜

819 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 20:32:28.94 ]
人というのは知っている言葉を敏感に聞きとれるようになっている
すなわち、それは>>817がエロくなっただけのこと






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<243KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef