Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
高效的异或和运算(Matlab或C/C+;+;)_Matlab_Sum_Intel_Xor - Fatal编程技术网

高效的异或和运算(Matlab或C/C+;+;)

高效的异或和运算(Matlab或C/C+;+;),matlab,sum,intel,xor,Matlab,Sum,Intel,Xor,我有一个问题:我有成千上万的512位逻辑阵列(或64字节)。对于每个可能的对,我必须执行XOR,后跟sum。有没有办法有效地做到这一点?我听说有专门的CPU指令,但我的谷歌搜索甚至没有找到它的提及 在理想情况下,我希望在MATLAB中实现这一点。如果没有,我还可以访问英特尔的C++编译器,使用IPP和TBB。 如果可能,我希望避免在每个逻辑数组元素上出现for循环。如果在数组元素上没有for循环,请尝试: x=[true true false false] y=[true false true

我有一个问题:我有成千上万的512位逻辑阵列(或64字节)。对于每个可能的对,我必须执行XOR,后跟sum。有没有办法有效地做到这一点?我听说有专门的CPU指令,但我的谷歌搜索甚至没有找到它的提及

在理想情况下,我希望在MATLAB中实现这一点。如果没有,我还可以访问英特尔的C++编译器,使用IPP和TBB。
如果可能,我希望避免在每个逻辑数组元素上出现for循环。

如果在数组元素上没有for循环,请尝试:

x=[true true false false]
y=[true false true false]

z=xor(x,y)
sum(z)

如果阵列元素上没有for循环,请尝试:

x=[true true false false]
y=[true false true false]

z=xor(x,y)
sum(z)

你的问题听起来像是一个很好的MEX函数的候选者,但Matlab可能足够快。我会用简单的Matlab编写一个,确保它正常工作,并测试它的速度。如果速度太慢,首先编写一个简单的C版本,调试它,并使用最大编译器优化测试它的速度(
-O3
对于Linux和Mac上的gcc,我不知道icc或Windows)。如果仍然不够快,您应该开始查看MMX和SSE说明。特别是,谷歌搜索“英特尔编译器内部函数”。但是,说真的,首先在纯Matlab中获得一个工作版本,只有在需要时才对其进行优化。你的问题听起来很适合MEX函数,但Matlab可能足够快。我会用简单的Matlab编写一个,确保它正常工作,并测试它的速度。如果速度太慢,首先编写一个简单的C版本,调试它,并使用最大编译器优化测试它的速度(
-O3
对于Linux和Mac上的gcc,我不知道icc或Windows)。如果仍然不够快,您应该开始查看MMX和SSE说明。特别是,谷歌搜索“英特尔编译器内部函数”,但是,说真的,首先在纯Matlab中获得一个工作版本,只有在需要时才对其进行优化。