- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
TBB windows binaries have irml folder with irml.lib and irml.dll files inside. But building the library from the source code doesn't produce any irml files. Do I really need those files to use TBB with Visual C++ and MinGW?
Thank you.
Thank you.
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You probably do not need those files. tbb.dll has its own "private RML" that it uses if it cannot connect to irml.dll. The source for the private version is in src/tbb/private_server.cpp, and linked intotbb.dll.
The files irml{lib,dll} are the "shared RML" The purpose of the "shared RML" is twofold:
- Mediate thread subscription level between TBB and OpenMP.
- Act as an interface to other subscription level managers like Microsoft's ConcRT in VS2010.
If you are not mixing in OpenMP or using ConcRT, then just skip the shared RML. The most frequent case where it is helpful is when TBB code calls the Intel MKL or IPP libraries, which sometimes use OpenMP internally.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
If you do want to build the RML, run "gmake rml". That will build the RML dynamic library (e.g. irml.dll). It should be put in the same directory as the TBB dynamic library. Building it also causes a few tests to be run:
To check that TBB is really using the RML, set the environment variable TBB_VERSION=1 and run a test that exercises the task scheduler. E.g., run test_task.exe. That should cause the TBB dynamic library to print diagnostic information on stderr that looks like this:
Word "shared" in the bold line says that the shared dynamic library RML is in use. If it says "private", that means that the TBB dynamic library cannot find the RML dynamic library, and has fallen back on its private RML.
[plain]./test_job_automaton.exe done ./test_thread_monitor.exe done ./test_rml_tbb.exe done ./test_rml_omp.exe done ./test_rml_mixed.exe done ./test_rml_omp_c_linkage.exe done[/plain]The tests do not require an OpenMP enabled compiler. They merely simulate the behavior of an OpenMP client of the RML. If your machine is overloaded with other tasks, you may see some warnings that the RML did not deliver the number of requested threads.
To check that TBB is really using the RML, set the environment variable TBB_VERSION=1 and run a test that exercises the task scheduler. E.g., run test_task.exe. That should cause the TBB dynamic library to print diagnostic information on stderr that looks like this:
TBB: VERSION 3.0 TBB: INTERFACE VERSION 5000 TBB: BUILD_DATE Mon May 10 14:17:56 UTC 2010 ... TBB: RML shared TBB: Intel RML library built: Mon May 10 14:17:56 UTC 2010 TBB: Intel RML library version: v2 ...
Word "shared" in the bold line says that the shared dynamic library RML is in use. If it says "private", that means that the TBB dynamic library cannot find the RML dynamic library, and has fallen back on its private RML.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page