Moving TBB tests to tbb/.
This commit is contained in:
54
cpp/tbb/tbb_task_scheduler_init.cpp
Normal file
54
cpp/tbb/tbb_task_scheduler_init.cpp
Normal file
@@ -0,0 +1,54 @@
|
||||
/* Check cf5-opt.vim defs.
|
||||
VIM: let b:lcppflags="-std=c++11 -O2 -pthread"
|
||||
VIM: let b:cppflags=g:Iboost.g:Itbb
|
||||
VIM: let b:ldflags=g:Lboost.g:Ltbb.g:tbbmalloc
|
||||
VIM: let b:ldlibpath=g:Bboost.g:Btbb
|
||||
*/
|
||||
#include <tbb/enumerable_thread_specific.h>
|
||||
#include <tbb/task_scheduler_init.h>
|
||||
#include <tbb/parallel_for_each.h>
|
||||
#include <iostream>
|
||||
#include <exception>
|
||||
#include <vector>
|
||||
|
||||
/*
|
||||
* Conclusion:
|
||||
* The first task_sheduler_init is configuring number of threads in
|
||||
* the thread pool. If the task scheduler initialised implicitly then
|
||||
* the number of threads is the number of cores. To ensure uncomment
|
||||
* the commented line below.
|
||||
*/
|
||||
|
||||
int main ( void )
|
||||
{try{
|
||||
|
||||
std::vector<int> v(1024*1024);
|
||||
//tbb::enumerable_thread_specific<int> count;
|
||||
tbb::task_scheduler_init init3(5);
|
||||
tbb::task_scheduler_init init(10);
|
||||
tbb::task_scheduler_init init2(1);
|
||||
tbb::enumerable_thread_specific<int> count;
|
||||
tbb::parallel_for_each( v.begin(), v.end(), [&count](int& v){
|
||||
++count.local();
|
||||
});
|
||||
|
||||
int i = 0;
|
||||
for ( int c : count )
|
||||
{
|
||||
std::cout << "Thread: " << ++i << " counted " << c << std::endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
catch ( const std::exception& e )
|
||||
{
|
||||
std::cerr << std::endl
|
||||
<< "std::exception(\"" << e.what() << "\")." << std::endl;
|
||||
return 2;
|
||||
}
|
||||
catch ( ... )
|
||||
{
|
||||
std::cerr << std::endl
|
||||
<< "unknown exception." << std::endl;
|
||||
return 1;
|
||||
}}
|
||||
|
||||
Reference in New Issue
Block a user