mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-03 17:56:21 +03:00
63 lines
1.7 KiB
Plaintext
63 lines
1.7 KiB
Plaintext
puts "=========="
|
|
puts "0032539: Modeling Algorithms - Parallelize BRepExtrema_DistShapeShape algorithm"
|
|
puts "=========="
|
|
puts ""
|
|
|
|
# prepare
|
|
pload XDE OCAF
|
|
cpulimit 1000
|
|
XOpen [locate_data_file bug32539_1.xbf] XB
|
|
XGetShape s1 XB 0:1:1:2
|
|
XGetShape s2 XB 0:1:1:4
|
|
Close XB
|
|
btranslate s1 0 0 60
|
|
brotate s2 0 0 0 0 0 1 90
|
|
|
|
# multi-thread
|
|
dchrono p reset; dchrono p start;
|
|
set pres [distmini res s1 s2 -parallel]
|
|
dchrono p stop;
|
|
regexp {Elapsed time: +([-0-9.+eE]+) Hours +([-0-9.+eE]+) Minutes +([-0-9.+eE]+) Seconds} [dchrono p show] full p_Hours p_Minutes p_Seconds
|
|
set p_Time [expr ${p_Hours}*60.*60. + ${p_Minutes}*60. + ${p_Seconds} ]
|
|
puts "multithreaded time: $p_Time"
|
|
|
|
set pdist [dval res_val]
|
|
|
|
vclear
|
|
vclose ALL
|
|
vinit v1/v1
|
|
vdisplay -dispMode 1 s1 s2 res res2 res3 res4
|
|
vfit
|
|
checkview -screenshot -3d -path ${imagedir}/${test_image}_multi.png
|
|
|
|
#single-thread
|
|
dchrono s reset; dchrono s start;
|
|
set cres [distmini res s1 s2]
|
|
dchrono s stop;
|
|
regexp {Elapsed time: +([-0-9.+eE]+) Hours +([-0-9.+eE]+) Minutes +([-0-9.+eE]+) Seconds} [dchrono s show] full s_Hours s_Minutes s_Seconds
|
|
set s_Time [expr ${s_Hours}*60.*60. + ${s_Minutes}*60. + ${s_Seconds} ]
|
|
puts "single-threaded time: $s_Time"
|
|
|
|
set sdist [dval res_val]
|
|
|
|
vclear
|
|
vclose ALL
|
|
vinit v2/v2
|
|
vdisplay -dispMode 1 s1 s2 res res2 res3 res4
|
|
vfit
|
|
checkview -screenshot -3d -path ${imagedir}/${test_image}_single.png
|
|
|
|
# compare
|
|
set ratio [expr ${s_Time}/${p_Time} ]
|
|
puts "acceleration in multi-threaded work: $ratio"
|
|
|
|
if {[string compare $cres $pres] != 0} {
|
|
puts "Error: different result between single-thread and multi-thread mode"
|
|
}
|
|
|
|
if {[expr abs(${sdist} - ${pdist})] > 1E-13} {
|
|
puts "Error: different distance between single-thread and multi-thread mode"
|
|
}
|
|
|
|
|