avatar-decorate
获赞
1106
粉丝
760
关注
1
看过 TA
1.2W
上海交通大学
2023
搜索算法
IP属地:北京
前Shopee逐风计划信息检索算法工程师实习生
私信
关注
8.7 4'54 做好事不难,难的是一辈子做好事,不做坏事。还是那个减少一半位集缓存和或运算次数的优化ASO用宏定义实现了对其他几个版本的统一兼容64-256-512位参数自由切换,把实验一跑,64位反而比昨天的更慢了!(图一图二)不是因为amd avx2的原因!在微信里说着说着,发现之前是用1x的缓存实现了2x的加速效果,而现在优化后是用0.5x的缓存实现了1x的加速效果,而且这个1x还有点水分,因为不是两端都动态,只有一端动态,另一端是直接拿这个动态端的结果来做的,是个半动态模式,所以在非真正动态的那一端上标记次数会稍微升高一些(之后可以做可视化实验验证这个猜测)。此外,第二重动态优化(就是那个实现2x的优化)因为不兼容完全去掉了,所以之前的“动动优化”变成了现在的“半动优化”。也就是说,在微信里说着说着突然就顿悟了把自己说服了,搞半天的优化就是没有优化,白干了!只是内存似乎少了点,构建时间少了三分之二,都是些皮毛。跑着跑着,发现上面说的这些优化都是指对标记任务这个性能瓶颈进行的优化,而在某些场景比如高维空间和分组很多时,或运算会成为新引入的性能瓶颈,此时标记负载已经被大大优化掉了,从而ASO可以实现一个漂亮的效果。​总结抽象就是,把一个快的算法搞慢,再把它搞快,在一退一进之间实现自我超越。
投递AMD等公司10个岗位
0 点赞 评论 收藏
转发
7.30 5'35 141min/32km 如果官僚主义横行,少数人自由过度,这样的国家不可能真正强大。没有哪个国家可以在压榨中崛起,那样的所谓的崛起只是少数人不劳而获的腰包崛起。57.1元。回去的路上,在北京新农村听取蛙声一片。定了,《飞云之下》,不管《今天》《明天》是《晴天》还是《阴天》,不管是《起风了》还是《下雨了》,不管是《云烟成雨》还是有没有《雨幕》,不管《风吹半夏》还是《墨尔本的秋天》,不管有没有《雪落下的声音》,都居家办公。《如果云知道》,去何方。​使用双重反向优化时,用了一个临时的bitset bLocal,需要从位集里拷贝一份到临时的 bLocal 上,然后双重反向把 bLocal 多余标记的位重置为 0,最后才和结果位集 b 进行或运算。https://github.com/shiwanghua/HEM/blob/7e69f43d7c8ab5830560ca14ca998ef39f527aec/HEM5_AS.cpp#L505C6-L505C6但是正常的一重反向,不用双重反向,就是直接在b上进行标记、做或运算,少了一次位集拷贝,也不需要存储临时的位集,所以双重拷贝应该慎用,可能得不偿失。https://github.com/shiwanghua/HEM/blob/7e69f43d7c8ab5830560ca14ca998ef39f527aec/HEM5_AS.cpp#L530初始化时判断是否用的时候应该加个阈值,小于号左边是正常应该遍历的桶里需要标记订阅的次数,右边是反向时需要接触标记的次数。现在是如果左边小于右边,doubleReverse就是 true,采用负载更低的双重反向。https://github.com/shiwanghua/HEM/blob/7e69f43d7c8ab5830560ca14ca998ef39f527aec/HEM5_AS.cpp#L421超字数了
0 点赞 评论 收藏
转发
牛客网
牛客企业服务