# The version number of the benchmark: set benchVersion 1.2 set huVersion [huOpt version -engine] # # The path of the directory containing the test images: # # Check local image directory. huOpt report "Trying to find mcrp.h5 or mcrp.ics in local directory." if [file exists "./mcrp.h5"] { huOpt report "Found it." set mcrpPath "./mcrp.h5" } elseif [file exists "./mcrp.ics"] { huOpt report "Found it." set mcrpPath "./mcrp.ics" } else { huOpt report "Could not locate mcrp.h5 or mcrp.ics." } if {[info exist mcrpPath]} { huOpt report "Location of mcrp image file: $mcrpPath" } else { huOpt report "Did not find any mcrp.h5 or mcrp.ics file! " huOpt report "Try changing the working directory to where the image is:" huOpt report "(Use cd '/path/to/file')" update error "image file mcrp.h5 not found" } # Check if GPU deconvolution is available. huOpt report "Check if GPU deconvolution is available:" if [huOpt gpu -query available] { huOpt report "GPU acceleration available." } else { error "GPU acceleration not available!" } set toSecs 1000000.0 huOpt verb -mode silent huOpt cpu -mode ignore set testImage [img open $mcrpPath] set psf [img create "psf"] set result [img create "result"] set itCnt 100 huOpt report "timing PSF generator..." set timeStr [time "$testImage genpsf -> $psf -dims auto" 5] set times(psf) [expr [lindex $timeStr 0]/$toSecs] huOpt report "PSF generator: elapsed time $times(psf)" # Make sure the refractive indices are set to ideal lens medium to # avoid going into brick mode. Since brick mode is likely to evolve # over time, brick mode would hamper comparison over between slightly # different versions of the CE. huOpt report "Setting all refractive indexes to 1.515" $testImage setp -ril 1.515 -ri 1.515 # CPU CMLE on large image huOpt report "CPU: $itCnt it. classic mle on 256x256x64, auto padded..." huOpt gpuSet -enabled 0 set timeStr [time "$testImage cmle $psf -> $result \ -it $itCnt -sn 30 -bgMode auto -bg 0.0 -q 0.001 -mode fast -blMode off \ -pad auto -brMode one" 1] set times(cmleLargeCpu) [expr [lindex $timeStr 0]/$toSecs] $result clear huOpt report "CPU Classic MLE, parent padded: elapsed time $times(cmleLargeCpu)" # GPU CMLE on large image huOpt report "GPU: $itCnt it. classic mle on 256x256x64, auto padded..." huOpt gpuSet -enabled 1 set timeStr [time "$testImage cmle $psf -> $result \ -it $itCnt -sn 30 -bgMode auto -bg 0.0 -q 0.001 -mode fast -blMode off \ -pad auto -brMode one" 1] set times(cmleLargeGpu) [expr [lindex $timeStr 0]/$toSecs] $result clear huOpt report "GPU Classic MLE, parent padded: elapsed time $times(cmleLargeGpu)" if {[catch { $psf del } ret]} { huOpt report "Failed to destroy psf, got: $ret" } if {[catch { $result del } ret]} { huOpt report "Failed to destroy result, got: $ret" } set speedup [expr $times(cmleLargeCpu)/$times(cmleLargeGpu)] huOpt report "\n" huOpt report " -------------------------------------------------------" huOpt report " --- Huygens GPU benchmark results on mcrp image" huOpt report " --- Benchmark v$benchVersion, Huygens Compute Engine $huVersion" huOpt report " -------------------------------------------------------" huOpt report "CMLE CPU: [format "%.2f" $times(cmleLargeCpu)]" huOpt report "CMLE GPU: [format "%.2f" $times(cmleLargeGpu)]" huOpt report "Speedup: [format "%.2f" $speedup]" huOpt report "\n"