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

Build TBB on PowerPC-64 running linux

lakshminarayanan_r
627 Views
Hi,

I am new to the forum. I am trying to build the latest stable version of TBB on a powerpc 64 bit machine running linux. I searched in the forum and web but could not find instructions on how to build TBB on this platform. Has anyone tried to build TBB on ppc-linux? Thanks for any suggestions/help.

Thanks,
Ln
0 Kudos
9 Replies
Vladimir_P_1234567890
627 Views
hi, first of allI suggest to use the latest comm-align version. it is a bit newer than the latest stable version and it is also quite stable.

Porting instructions are located in build/index.html file in source package.

at first glanceport looks to be as simple as adding following lines under "#elif __linux__ || __FreeBSD__" directive, line 64 in include/tbb/tbb_machine.h file.
#elif __POWERPC__
#include "machine/mac_ppc.h"

But who knows:)
--Vladimir
0 Kudos
lakshminarayanan_r
627 Views
hi, first of allI suggest to use the latest comm-align version. it is a bit newer than the latest stable version and it is also quite stable.

Porting instructions are located in build/index.html file in source package.

at first glanceport looks to be as simple as adding following lines under "#elif __linux__ || __FreeBSD__" directive, line 64 in include/tbb/tbb_machine.h file.
#elif __POWERPC__
#include "machine/mac_ppc.h"

But who knows:)
--Vladimir

Hello Vladimir,

Thanks for the quick reply. I tried your suggestion. After adding the suggested two lines to tbb_machine.h, I tried to do a make at the top-level dir. The make complained that the architecture is not recognized. Then I added the following lines to build/linux.inc

ifeq ($(uname_m),ppc64)
export arch:=ppc
endif

With the above change to linux.inc, I ran make. The compilation terminates with the following (attached at the end) errors. To my inexperienced eye, it looks like the some definitions for some synchronization related macros/functions are missing.

Thanks for the suggestions and help.

cd "./build/linux_ppc_gcc_cc4.1.2_libc2.5_kernel2.6.18_release" && sh ../../build/generate_tbbvars.sh linux_ppc_gcc_cc4.1.2_libc2.5_kernel2.6.18_release
cd "./build/linux_ppc_gcc_cc4.1.2_libc2.5_kernel2.6.18_debug" && sh ../../build/generate_tbbvars.sh linux_ppc_gcc_cc4.1.2_libc2.5_kernel2.6.18_debug
gmake -C "./build/linux_ppc_gcc_cc4.1.2_libc2.5_kernel2.6.18_debug" -r -f ../../build/Makefile.tbb cfg=debug tbb_root=../..
gmake[1]: Entering directory `/gsa/yktgsa-h1/08/lrengan/MyTools/tbb22_009oss/build/linux_ppc_gcc_cc4.1.2_libc2.5_kernel2.6.18_debug'
../../build/Makefile.tbb:39: CONFIG: cfg=debug arch=ppc compiler=gcc os=linux runtime=cc4.1.2_libc2.5_kernel2.6.18
g++ -c -MMD -DTBB_USE_DEBUG -DDO_ITT_NOTIFY -g -O0 -DUSE_PTHREAD -fPIC -D__TBB_BUILD=1 -Wall -Wno-parentheses -I../../src -I../../src/rml/include -I../../include ../../src/tbb/concurrent_hash_map.cpp
In file included from ../../include/tbb/spin_rw_mutex.h:33,
from ../../include/tbb/concurrent_hash_map.h:40,
from ../../src/tbb/concurrent_hash_map.cpp:29:
../../include/tbb/tbb_machine.h:98:2: error: #error Minimal requirements for tbb_machine.h not satisfied
../../include/tbb/tbb_machine.h: In function 'T __TBB_load_with_acquire(const volatile T&)':
../../include/tbb/tbb_machine.h:106: error: there are no arguments to '__TBB_release_consistency_helper' that depend on a template parameter, so a declaration of '__TBB_release_consistency_helper' must be available
../../include/tbb/tbb_machine.h:106: error: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
../../include/tbb/tbb_machine.h: In function 'void __TBB_store_with_release(volatile T&, V)':
../../include/tbb/tbb_machine.h:115: error: there are no arguments to '__TBB_release_consistency_helper' that depend on a template parameter, so a declaration of '__TBB_release_consistency_helper' must be available
../../include/tbb/tbb_machine.h: In function 'void __TBB_Pause(int32_t)':
../../include/tbb/tbb_machine.h:122: error: '__TBB_Yield' was not declared in this scope
../../include/tbb/tbb_machine.h: In member function 'void tbb::internal::atomic_backoff::pause()':
../../include/tbb/tbb_machine.h:148: error: '__TBB_Yield' was not declared in this scope

---------- More error messages. I have posted above only a part of it. -----------------

Thanks,
Ln

0 Kudos
keiisn
Beginner
627 Views

Hello Vladimir,

Thanks for the quick reply. I tried your suggestion. After adding the suggested two lines to tbb_machine.h, I tried to do a make at the top-level dir. The make complained that the architecture is not recognized. Then I added the following lines to build/linux.inc

ifeq ($(uname_m),ppc64)
export arch:=ppc
endif

With the above change to linux.inc, I ran make. The compilation terminates with the following (attached at the end) errors. To my inexperienced eye, it looks like the some definitions for some synchronization related macros/functions are missing.

Thanks for the suggestions and help.



---------- More error messages. I have posted above only a part of it. -----------------

Thanks,
Ln


Hello,

I got this mostly working with TBB 2.1. Raf Schietekat then fixed a previously existing low-level PowerPC implementation issue, whereupon we apparently had a properly functional Linux/PPC port. This should all be documented in an earlier thread. I don't know why these changes weren't incorporated in the the release tree--as I recall Raf was diligent about uploading files/patches.

(Where's the search-the-forum functionality???)

Kei
0 Kudos
Ryan_B_1
Beginner
627 Views
Quoting - keiisn

(Where's the search-the-forum functionality???)


Found it! (I seem to have two identities here.) I'm just getting back into this. Here's the thread.

http://software.intel.com/en-us/forums/showthread.php?t=59929

0 Kudos
Ryan_B_1
Beginner
627 Views
Hi,

I am new to the forum. I am trying to build the latest stable version of TBB on a powerpc 64 bit machine running linux. I searched in the forum and web but could not find instructions on how to build TBB on this platform. Has anyone tried to build TBB on ppc-linux? Thanks for any suggestions/help.

Thanks,
Ln

Hey, if you're still interested I have the whole tree for version 2.1, just let me know.

Kei
0 Kudos
lakshminarayanan_r
627 Views
Quoting - Kei

Hey, if you're still interested I have the whole tree for version 2.1, just let me know.

Kei

Hi Kei,

Yes, I am interested.

I tried your previous suggestion: I read that post and tried to apply the patch. But, I could not get a working version.

So, if you have a version that might work, I would be very happy to try it out immediately.

Thanks for the help.
Ln
0 Kudos
Ryan_B_1
Beginner
627 Views

Hi Kei,

Yes, I am interested.

I tried your previous suggestion: I read that post and tried to apply the patch. But, I could not get a working version.

So, if you have a version that might work, I would be very happy to try it out immediately.

Thanks for the help.
Ln

The easiest way for me to do this is to use our local file transfer interface, for which I'd need you email address. You'd be emailed a notice of file availability and some sort of one-time access key. Let me know--kei.davis@lanl.gov.
0 Kudos
Andriy_Kot
Beginner
627 Views

Kei,

I found this thread while looking for a way to run my tbb code on a power5/linux system. I would appreciate if you could send me the tree as well. I will email you. Thanks

--

Andriy

PS To all: any idea if/when ppc64/linux platform will be supported?

0 Kudos
Jeffrey_H_Intel
Employee
627 Views

Intel TBB was ported to PowerPC 32/64 for Linux and Blue Gene CNK over the past few years.  It's being used on Blue Gene/Q (64-bit PowerPC with Linux-compatible OS) today.

0 Kudos
Reply