>I think the problem is not in the code but in the flags used to build
>harbour, I've changed owatcom.cf this way

>#CPPFLAGS = -j -w3 -d2 -5s -5r -fp5 -oxehtz -zq -zt0 -mf -bt=NT
>#DAVID: CPPFLAGS = -w2 -d1 -zq -bt=OS2
>CPPFLAGS = -w2 -d1 -zq -bt=OS2 -bm

>#architecture flags
>#CPPFLAGS += -5 -fp5

># optimization flags
># don't enable -ol optimization in OpenWatcom 1.1 - gives buggy code
>#CPPFLAGS += -onaehtzr -oi+ -ei -zp8 -s -zt0

>I've removed nearly all compilation flags, I don't know what they mean,
>but anyway, I've always thought that if you need too many compiler flags
> to build, mething is wrong :)

>And I've also changed ld flags this way:

>LD = wlink
>#DAVID: LDFLAGS = debug all OP osn=OS2 OP stack=65536 OP CASEEXACT
>#LDFLAGS = debug all OP stack=65536 OP CASEEXACT
>#LDFLAGS = debug all

>I mean I've removed them all, BTW, having a stack of only 64K is a good >way to have troubles. I'm nearly sure GCC expands the stack on demand >and starts with a 1Mb of stack space.

>With these changes all mttest?? programs build and run but mttest10.prg >which I think tries to open more than one console, which I don't think >is feasible on OS/2.

>speedtst runs with --thread=2 as well and here is its output.

Maurilio:

I replicated your owatcom.cf and made a fresh build
As a note it delay 1/3 time of previous build with old owatcom.cf

But here problem remain
------------------
a) ST work fine
[E:\harbour811\harbour\tests]e:\harbour811\ow\bin\hbrun_st.exe speedtst.prg

b) MT work fine
[E:\harbour811\harbour\tests]e:\harbour811\ow\bin\hbrun_mt.exe speedtst.prg

c) MT fail
[E:\harbour811\harbour\tests]e:\harbour811\ow\bin\hbrun_mt.exe speedtst.prg --scale


d) MT fail (perhaps your test)
[E:\harbour811\harbour\tests]e:\harbour811\ow\bin\hbrun_mt.exe speedtst.prg --thread=2

Your results:
---------
11/12/08 11:16:32 OS/2 4.50
Harbour 1.1.0dev (Rev. 9893) (MT)+ Open Watcom C++ 12.70.8 (32-bit)
THREADS: 2
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.45
====================================================================
[ T001: x := L_C ]..............................................9.68
[...]
--------

and my results with hbrun_mt.exe:
--------
[E:\harbour811\harbour\tests]e:\harbour811\ow\bin\hbrun_mt.exe speedtst.prg --thread=2

11/12/08 05:42:53 OS/2 4.50
Harbour 1.1.0dev (Rev. 9903) (MT)+ Open Watcom C++ 12.70.8 (32-bit)
THREADS: 2
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.29
====================================================================SYS1808:
The process has stopped.  The software diagnostic
code (exception code) is  0005.
--------

and my results with compiled .prg:
--------
[E:\harbour811\harbour\tests]e:\harbour811\harbour\bin\pbaos2.cmd -mt speedtst
Open Watcom Linker Version 1.7
Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
loading object files
searching libraries
creating an OS/2 32-bit executable
[E:\harbour811\harbour\tests]speedtst.exe --thread=2

11/12/08 05:51:15 OS/2 4.50
Harbour 1.1.0dev (Rev. 9903) (MT)+ Open Watcom C++ 12.70.8 (32-bit)
THREADS: 2
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.32
====================================================================SYS1808:
The process has stopped.  The software diagnostic
code (exception code) is  0005.
-------

What is code 0005 ?

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

As I see your Harbour rev is older, and empty loop overhead is greater

hbrun_st.exe was made with hbvm.lib (harbour\utils\hbrun\makefile)
hbrun_mt.exe was made with hbvmmt.lib (harbour\utils\hbrun\makefile)

and tests\mt\mttest*.prg fails as before
Example for mttest01.prg in ST and MT:
-----------------
[E:\harbour811\harbour\tests\mt]e:\harbour811\ow\bin\hbrun_st.exe mttest01.prg

Harbour 1.1.0dev (Rev. 9903)
Error BASE/3012  Argument error: HB_THREADJOIN
Called from HB_THREADJOIN(0)
Called from MAIN(25)
Called from HB_HRBRUN(0)
Called from _APPMAIN(0)
[E:\harbour811\harbour\tests\mt]e:\harbour811\ow\bin\hbrun_mt.exe mttest01.prg

Harbour 1.1.0dev (Rev. 9903)SYS1808:
The process has stopped.  The software diagnostic
code (exception code) is  0005.
-----------------

Note: For these tests I am using hbrun_st.exe, hbrun_mt.exe and NOT compiled .prg files - Using hbrun_mt.exe and compiled .prg gave same results in all previous tests - owatcom.cf and bin\pbaos2.cmd for compiled .prg differ in big extension in flags/switchs for OW. This is a pending subject to discuss


All this research about OW / MT raised since my message:

---------------------
Tests with current Harbour - OS/2 - With OpenWatcom 1.7 (Rev. 9846):

[E:\harbour810\harbour\tests]e:\harbour810\harbourow\bin\hbrun_mt.exe
speedtst.prg --scale

Using --scale cause this error:

--------------
11/06/08 05:08:24 OS/2 4.50
Harbour 1.1.0dev (Rev. 9846) (MT) Open Watcom C++ 12.70.8 (32-bit)
THREADS: 1
N_LOOPS: 1000000
                                                         1 th.  1 th.
factor
============================================================================
SYS1808:
The process has stopped.  The software diagnostic
code (exception code) is  0001.
--------------

Tracing it happen trying to execute
          hb_threadStart( "thTestScale", mtxJobs, mtxResults )
in section:
--------
    if lScale
       mtxJobs := hb_mutexCreate()
       mtxResults := hb_mutexCreate()
       nTimeTotST := nTimeTotMT := 0
       for i:=1 to nMT
          hb_threadStart( "thTestScale", mtxJobs, mtxResults )
       next
--------

but never enter to hb_threadStart( )
Perhaps error is for values in parameters ?

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

and Przemek answer
---------------------
> Tests with current Harbour - OS/2 - With OpenWatcom 1.7 (Rev. 9846):
> [E:\harbour810\harbour\tests]e:\harbour810\harbourow\bin\hbrun_mt.exe
> speedtst.prg --scale

Please try mttest*.prg 1st. It will be easier to locate basic problems.
---------------------

so I started mttest*.prg tests and further .c, .prg files

Rest is history   :-)


As I see, as at beginning of Harbour MT feature tests months ago, we get different result due OS/2 versions
- Your OS/2 SMP
- My eCS 1.2MR

We need a third player to decide  :-)



David Macias


_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to