マルチスレッドプログラミング相談室 その9 (459レス)
マルチスレッドプログラミング相談室 その9 http://mevius.5ch.net/test/read.cgi/tech/1339691517/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
394: デフォルトの名無しさん [] 2017/04/02(日) 18:18:24.01 ID:mBDn/7kD tbbのくっそ初心者です。 下記のコードを試したのですが、直列実行した方が速かったです。 これってそもそも並列化しても速くならない類の処理なのでしょうか? int main( int argc, const char * argv[] ) { tbb::task_scheduler_init init( 4 ); // 物理2スレ、論理4スレ core i5 PrimeCounter counter; tbb::parallel_reduce( tbb::blocked_range< int >( 0, count__, count__ / 4 ), counter, tbb::simple_partitioner() ); } 他所のヘッダにて、 bool isPrime( int n ) { // この処理がアホみたいなのはわざとです if ( n < 2 ) return false; if ( n == 2 ) return true; for ( int j = 3; j < n; ++j ) { if ( n % j == 0 ) { return false; } } return true; } class PrimeCounter { public: int count; PrimeCounter() : count( 0 ) {} PrimeCounter( const PrimeCounter& instance, tbb::split ) : count( 0 ) {} void operator() ( const tbb::blocked_range< int >& range ) { for ( int i = range.begin(), end = range.end(); i < end; ++I ) { if ( isPrime( i ) ) { ++count; } } } void join( const PrimeCounter& pc ) { count += pc.count; } }; http://mevius.5ch.net/test/read.cgi/tech/1339691517/394
395: デフォルトの名無しさん [] 2017/04/02(日) 18:29:20.77 ID:mBDn/7kD 書き忘れ >>391 のマカーです。 http://mevius.5ch.net/test/read.cgi/tech/1339691517/395
396: デフォルトの名無しさん [sage] 2017/04/02(日) 18:45:45.15 ID:mBDn/7kD 度々すみません、タイポありました。(多分本筋と関係ないですが) 関数 bool isPrime( int n ) のループ。 誤 for ( int j = 3; j < n; ++j ) 正 for ( int j = 2; j < n; ++j ) http://mevius.5ch.net/test/read.cgi/tech/1339691517/396
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.886s*