asnax

Issues with sdk1.3 on openSUSE 11.1 with 4870X2

Discussion created by asnax on Dec 16, 2008
Issues seem to be minor, but all comments welcome

 

Hi everyone,

I would like to report on my very first attempt to get AMD's Brook+ to
work for me. There are some open issues, see the end of this post. Any
help is welcome!


Hardware/software that I am using:

HD4870X2
i7 965e
openSUSE 11.1 RC1 64bit


Basic installation:

ati-driver-installer-8-12-x86.x86_64.run
One issue with 32/64 bit confusion fixed as follows:
cd /usr/lib/dri
mv fglrx_dri.so fglrx_dri.org
ln -s /usr/lib64/dri/fglrx_dri.so
--> hardware acceleration seems to be fine

amdstream-1.3.0_beta-lnx64.tar.gzip -> contains two files
amdstream-brook-1.3.0_beta.x86_64.run
amdstream-cal-1.3.0_beta.x86_64.run
--> installs fine

Brook+_Installation_Notes.pdf
seems to be slightly outdated/incomplete.

tcsh initialization (in .tcshrc):
-----
set path = ($path /usr/local/amdbrook/sdk/bin)
setenv BROOKROOT /usr/local/amdbrook
setenv CALROOT /usr/local/amdcal
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/usr/local/amdbrook/sdk/lib:/usr/local/amdcal/lib
-----
The lib-directories mentioned in the install notes do not exist, so I guess
I have to compile things myself.

Used YaST to install g++-4.1 since the default compiler in SUSE 11.1 is 4.3,
which does not work with amdstream-1.3.0_beta.
> gcc-4.1 --version
gcc-4.1 (GCC) 4.1.3 20080612 (prerelease) (SUSE Linux)

Compiling:
cd /usr/local/amdbrook/samples
make
--> fails with typical g++-4.3 compatibility errors
Replaced the two occurences of "g++" by "g++-4.1" in
amdbrook/samples/utils/build/config.mk

make
--> quite a number of warnings, but the only error is of the type
lib  -l brook_d  -L../../../../samples/bin/CPP/lnx_x86_64
/usr/lib64/gcc/x86_64-suse-linux/4.1.3/../../../../x86_64-suse-linux/bin/ld: error in /usr/lib64/gcc/x86_64-suse-linux/4.1.3/crtend.o(.eh_frame no .eh_frame_hdr table will be created.
--------
does not seem to prevent code from running



Running some examples:
----------------------

amdbrook/samples/bin/CPP/lnx_x86_64> hello_brook
libxcb: WARNING! Program tries to unlock a connection without having acquired
        a lock first, which indicates a programming error.
        There will be no further warnings about this issue.
libxcb: WARNING! Program tries to lock an already locked connection,
        which indicates a programming error.
        There will be no further warnings about this issue.
There are 6elements larger than 3.33333in the stream.

Googled the warning:
Under different circumstances something like
LIBXCB_ALLOW_SLOPPY_LOCK=true helps to prevent crashes; no effect
here, the warning remains, but the code does not crash with or without
it. I will not repeat these warnings in what follows


The CPP version seems to be missing certain output, which the legacy version
does display:

legacy/lnx_x86_64> hello_brook
There are 6.000000 elements larger than 3.333333 in the stream.

CPP/lnx_x86_64> hello_brook
There are 6elements larger than 3.33333in the stream.

CPP/lnx_x86_64> simple_matmult
(no output apart from the warning mentioned above)

legacy/lnx_x86_64> simple_matmult
Printing first row of data, for more use -v
Input Matrix A:
0.840188 0.394383 0.783099 0.798440 0.911647 0.197551 0.335223 0.768230 0.277775 0.553970 0.477397 0.628871 0.364784 0.513401 0.952230 0.916195 0.635712 0.717297 0.141603 0.606969 0.016301 0.242887 0.137232 0.804177 0.156679 0.400944 0.129790 0.108809 0.998924 0.218257 0.512932 0.839112 0.612640 0.296032 0.637552 0.524287 0.493583 0.972775 0.292517 0.771358 0.526745 0.769914 0.400229 0.891529 0.283315 0.352458 0.807725 0.919026 0.069755 0.949327 0.525995 0.086056 0.192214 0.663227 0.890233 0.348893 0.064171 0.020023 0.457702 0.063096 0.238280 0.970634 0.902208 0.850920

Input Matrix B:
0.650716 0.368006 0.078427 0.319776 0.027833 0.554068 0.317431 0.586137 0.220022 0.895901 0.139076 0.954704 0.742564 0.427046 0.151865 0.198083 0.130715 0.029363 0.251634 0.266301 0.479015 0.308517 0.416264 0.354493 0.156662 0.971783 0.364441 0.520852 0.780187 0.466253 0.195831 0.430903 0.834260 0.274258 0.750679 0.862092 0.828327 0.068110 0.448229 0.048349 0.964012 0.587305 0.003053 0.706575 0.014350 0.154917 0.904658 0.145065 0.184280 0.156293 0.411366 0.663295 0.464810 0.827630 0.017788 0.621472 0.799414 0.382229 0.142323 0.579601 0.848482 0.338155 0.010504 0.682742

Output Matrix:
16.312584 16.095516 18.783838 15.535410 14.176755 15.884678 14.399310 16.213316 14.287461 16.474983 14.003461 16.623430 20.004551 14.839297 17.294764 16.104197 16.967499 13.637995 16.453846 14.951024 15.908855 15.824086 19.793976 16.051609 16.632954 18.340866 15.459612 16.657274 16.744064 15.424380 15.511408 17.164022 16.931198 18.068708 17.928053 17.016041 16.945206 17.672926 16.763391 16.903675 18.866383 15.517785 14.925305 18.807539 16.461185 17.281868 15.792428 16.822145 16.953554 14.466745 16.794739 17.869562 17.195898 18.241959 17.560059 14.446342 14.624796 13.895147 17.758978 17.324759 17.270899 13.537880 17.440371 16.908150


------------------


Any ideas on the following issues are welcome:

0. Is the output from simple_matmult actually correct?

1. What is the difference between the legacy and CPP versions? Should
   both be working?

2. Is there a solution to the libxcb warnings? In my case the code does not
   crash, so this is not serious.

3. Is the error about "no .eh_frame_hdr table will be created" something to
   worry about?

4. What is a standard way to obtain benchmark information?


Sorry if I am repeating some well-known issues, I am new to this.
Thanks!

Outcomes