У меня есть следующая проблема: у меня есть десятки и сотни тысяч 512-битных логических массивов (или 64 байта). Для каждой возможной пары я должен выполнить XOR, за которой следует сумма. Есть ли способ сделать это эффективно? Я слышал, что для этого есть специальные инструкции CPU, но мои поисковые запросы Google не смогли даже найти упоминание об этом.Эффективная операция XOR sum (Matlab или C/C++)
В идеале, я хотел бы сделать это в MATLAB. Если нет, у меня также есть доступ к компилятору Intel C++ с IPP и TBB.
Я хотел бы избежать, если это возможно, для циклов над каждым элементом логического массива.
Ваша проблема звучит как хороший кандидат для функции MEX, но Matlab может быть достаточно быстро. Я бы написал один в простой Matlab, убедитесь, что он работает, и проверьте его скорость. Если это слишком медленно, сначала напишите простую версию C, отлаживайте ее и проверьте ее скорость, используя максимальную оптимизацию компилятора ('-O3' для gcc на Linux и Mac, я не знаю о icc или Windows). Если он все еще не достаточно быстрый, вы должны начать смотреть инструкции MMX и SSE. В частности, Google для «встроенных компиляторов Intel». Но, серьезно, сначала получите рабочую версию в прямом Matlab, только оптимизируйте ее, если вам нужно. – sfstewman