Intel® oneAPI Threading Building Blocks
Ask questions and share information about adding parallelism to your applications when using this threading library.
2466 Discussions

TBB 3.0 update 3 commercial-aligned release is available

Vladimir_P_1234567890
699 Views
TBB 3.0 update 3 commercial-aligned release is available on our open source site.

TBB 3.0 Update 3 commercial-aligned release
Changes (w.r.t. TBB 3.0 Update 2 commercial-aligned release):
- cache_aligned_allocator class reworked to use scalable_aligned_malloc.
- Improved performance of count() and equal_range() methods
in concurrent_unordered_map.
- Improved implementation of 64-bit atomic loads and stores on 32-bit
platforms, including compilation with VC 7.1.
- Added implementation of atomic operations on top of OSAtomic API
provided by Mac OS* X.
- Fixed a data race in task scheduler destruction that on rare occasion
could result in memory corruption.
- Removed gratuitous try/catch blocks surrounding thread function calls
in tbb_thread.
- Xcode* projects were added for sudoku and game_of_life examples.
- Xcode* projects were updated to work without TBB framework.
Open-source contributions integrated:
- MinGW-64 basic support by brsomoza (partially).
- Patch for atomic.h by Andrey Semashev.
- Support for AIX & GCC on PowerPC by Giannis Papadopoulos.
- Various improvements by Raf Schietekat.

0 Kudos
12 Replies
Dmitry_Vyukov
Valued Contributor I
699 Views
- Improved implementation of 64-bit atomic loads and stores on 32-bit
platforms, including compilation with VC 7.1.

What exactly does it mean? TIA

0 Kudos
Dmitry_Vyukov
Valued Contributor I
699 Views
Hummm... here is code from tbb30_035:

[bash].code 
	ALIGN 4
	PUBLIC c __TBB_machine_load8
__TBB_machine_Load8:
	; If location is on stack, compiler may have failed to align it correctly, so we do dynamic check.
	mov ecx,4[esp]
	test ecx,7
	jne load_slow
	; Load within a cache line
	sub esp,12
	fild qword ptr [ecx]
	fistp qword ptr [esp]
	mov eax,[esp]
	mov edx,4[esp]
	add esp,12
	ret
load_slow:
	; Load is misaligned. Use cmpxchg8b.
	push ebx
	push edi
	mov edi,ecx
	xor eax,eax
	xor ebx,ebx
	xor ecx,ecx
	xor edx,edx
	lock cmpxchg8b qword ptr [edi]
	pop edi
	pop ebx
	ret
EXTRN __TBB_machine_store8_slow:PROC
.code 
	ALIGN 4
	PUBLIC c __TBB_machine_store8
__TBB_machine_Store8:
	; If location is on stack, compiler may have failed to align it correctly, so we do dynamic check.
	mov ecx,4[esp]
	test ecx,7
	jne __TBB_machine_store8_slow ;; tail call to tbb_misc.cpp
	fild qword ptr 8[esp]
	fistp qword ptr [ecx]
	ret
end
[/bash]

And here is code from tbb30_104:

[bash].code 
	ALIGN 4
	PUBLIC c __TBB_machine_load8
__TBB_machine_Load8:
	; If location is on stack, compiler may have failed to align it correctly, so we do dynamic check.
	mov ecx,4[esp]
	test ecx,7
	jne load_slow
	; Load within a cache line
	sub esp,12
	fild qword ptr [ecx]
	fistp qword ptr [esp]
	mov eax,[esp]
	mov edx,4[esp]
	add esp,12
	ret
load_slow:
	; Load is misaligned. Use cmpxchg8b.
	push ebx
	push edi
	mov edi,ecx
	xor eax,eax
	xor ebx,ebx
	xor ecx,ecx
	xor edx,edx
	lock cmpxchg8b qword ptr [edi]
	pop edi
	pop ebx
	ret
EXTRN __TBB_machine_store8_slow:PROC
.code 
	ALIGN 4
	PUBLIC c __TBB_machine_store8
__TBB_machine_Store8:
	; If location is on stack, compiler may have failed to align it correctly, so we do dynamic check.
	mov ecx,4[esp]
	test ecx,7
	jne __TBB_machine_store8_slow ;; tail call to tbb_misc.cpp
	fild qword ptr 8[esp]
	fistp qword ptr [ecx]
	ret
end
[/bash]

They are bitwise equal... what I'm missing?


0 Kudos
RafSchietekat
Valued Contributor III
699 Views
"What exactly does it mean?"
This seems be about the replacement of tbb30_056oss/include/tbb/atomic.h:278-305 with a more general arrangement that doesn't have to reflect all possible atomic specialisations.
0 Kudos
yboucher81
Beginner
699 Views

Hello,

We distribute the commercial version of TBB as part of a plugin for Internet Explorer and Firefox. But under Windows XP SP3, the MSVCR90.dll is not present by default, and tbb.dll has a dependency on it. So we thought that we could download the source code and build the TBB library ourselves using the configuration that links statically with the C runtime. This works, but the problem is that the resulting dlls (tbb and tbbmalloc) are not signed by Intel Corporation.

Could Intel provide the two versions of the TBB libraries (linked statically or dynamically with the C runtime), and sign the resulting dlls, so that we don't have to distribute the MSVCR90.dll with our plugin?

Thank you

0 Kudos
pvonkaenel
New Contributor III
699 Views
They do. In the lib directory you should have a sub-directory labeled vc_mt - this version is statically linked against the MS run-time.

Peter
0 Kudos
yboucher81
Beginner
699 Views
Unhappily, this is not the case.
We got the vc_mt folder in both bin/ia32 and bin/intel64 folders, for the commercial version 3.0.
But these folders do not exist in the v3.0 update 3.0 that was just released.

May be this is simply a mistake.
Could Intel provide these libraries, please, for the update 3?

Thanks
0 Kudos
Vladimir_P_1234567890
699 Views
They are available in the comm install via registration center download, aren't they?

open source version does not contain precompiled vc_mt binaries. They need to be built from sources.
--Vladimir
0 Kudos
yboucher81
Beginner
699 Views
Thank you for your answer.
Yes they are available in the commercial version, but not in the Update 3.

Does it mean that we can't have vc_mt signed dlls by Intel for the Updates that Intel releases?
That would be really unfortunate. We would like to use the stable updates when they available.

The other alternative, is to build our plugin and link it statically against the TBB lib files. This way, we won't need to have the dlls signed by Intel. But this is not our first preference.
Please confirm...

Yves
0 Kudos
Vladimir_P_1234567890
699 Views
Quoting yboucher81

Yes they are available in the commercial version, but not in the Update 3.

hi Yves,
did you usew_tbb_3.0.3.104.exe file to install the update?
--Vladimir
0 Kudos
yboucher81
Beginner
699 Views
No, we didn't even know that such a file existed.

We downloaded both the tbb30_104oss_win.zip and the tbb30_104oss_src.tgz files, and there is no such w_tbb_3.0.3.104.exe in these packages.

Where can we find this installation file?

Yves
0 Kudos
Vladimir_P_1234567890
699 Views
You can find it on your page on registration center sitehttps://registrationcenter.intel.com
--Vladimir
0 Kudos
yboucher81
Beginner
699 Views
So this was my mistake.

I thought that for the updates, we had to download them through the commercial-aligned open source site, and simply replace the dlls that we distribute.

We will log to the registration center using our account, and download the updates from there.

Sorry for this, and thank you very much for your help.
Yves.
0 Kudos
Reply