我有一个很大的代码,我想通过AVX指令优化某些操作。根据我的测试,改进应该达到4倍。
但是,代码使用带有新运算符的普通旧数组(没有std :: vector)。
double * tmp = new double[size];
问题是,对于AVX,我需要将所有双精度数组都对齐到32字节边界。解决方案是用new
(或MSVC中的aligned_alloc
)替换所有_aligned_malloc
,并用适当的版本替换发布功能。问题是我必须遍历所有代码并找到所有new
,希望不要忘记一个,将来每个人都不要忘记使用对齐的定位器。
还有其他方法吗?我曾考虑过仅对new
重载double
运算符,但是我不确定这是否是正确的方法,如果是,那么如何正确/安全地执行此操作。
由于某些将数组作为输入参数的外部纯C语言库,因此无法使用对齐的定位器切换到std::vector
。
答案 0 :(得分:4)
还有其他方法吗?是的,from django_filters import FilterSet
from polls.models import Question, Choice
from django_filters import rest_framework
class ChoiceFilter(FilterSet):
for field in Choice._meta.get_fields():
field = rest_framework.CharFilter(lookup_expr='icontains')
#question = rest_framework.CharFilter(lookup_expr='icontains') #this works want to generalize this
class Meta:
model = Choice
fields = '__all__'
和_mm_loadu_*
,其中_mm_storeu_*
代表未对齐。