Applications often require a fast, single-threaded search algorithm over sorted data, typical in table-lookup operations. We explore various search algorithms for a large number of search candidates over a relatively small array of logarithmically-distributed sorted data. These include an innovative hash-based search that takes advantage of floating point representation to bin data by the exponent. Algorithms that can be optimized to take advantage of SIMD vector instructions are of particular interest. We then conduct a case study applying our results and analyzing algorithmic performance with the EOSPAC package. EOSPAC is a table look-up library for manipulation and interpolation of SESAME equation-of-state data. Our investigation results in a couple of algorithms with better performance with a best case 8x speedup over the original EOSPAC Hunt-and-Locate implementation. Our techniques are generalizable to other instances of search algorithms seeking to get a performance boost from vectorization.
翻译:应用通常要求对分类数据进行快速、单行搜索算法,这在表格查看操作中是典型的。我们探索对数量众多的搜索候选人进行各种搜索算法,以相对较少的对数分布的分类数据进行搜索。其中包括利用推手对垃圾数据的浮点表示法进行创新的散射搜索。可优化利用 SIMD 矢量指示的算法特别有意义。然后,我们进行案例研究,运用我们的结果,分析ESPAC 软件包的算法性能。 EOSPAC 是用于SESAME 等式数据操作和内推的表格查看库。我们的调查结果是,几组算法的性能优于EOSPAC Hunt-Locate 原始操作的8x速度。我们的技术可被推广到其他搜索算法中,以便从矢量化中获得性能增强。