- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我尝试移植一个 SSE 函数,它获得两个 8 位无符号整数数组的绝对差值。看起来像:
uint64_t AbsDiffSum(const uint8_t * a, const uint8_t * b, size_t size)
{
assert(size%16 == 0);
__m128i _sum = _mm_setzero_si128();
for(size_t i = 0; i < size; i += 16)
{
const __m128i _a = _mm_loadu_si128((__m128i*)(a + i));
const __m128i _b = _mm_loadu_si128((__m128i*)(b + i));
_sum = _mm_add_epi64(_sum, _mm_sad_epu8(_a, _b));
}
return _mm_cvtsi128_si64(_mm_add_epi64(_sum, _mm_srli_si128(_sum, 8)));
}
主要工作由内部函数 _mm_sad_epu8() 执行。
是否有 Altivec 的类似物?
最佳答案
不幸的是,Altivec 没有内部函数 _mm_sad_epu8 的直接模拟。但是有可能模仿它:
typedef __vector uint8_t uint8x16_t;
typedef __vector uint32_t uint32x4_t;
const uint8_t K8_01 = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
uint64_t AbsDiffSum(const uint8_t * a, const uint8_t * b, size_t size)
{
uint32x4_t _sum = {0, 0, 0, 0};
for(size_t i = 0; i < size; i += 16)
{
// Aligned loading of 128-bit vector
uint8x16_t _a = vec_ld(a + i);
// Aligned loading of 128-bit vector
uint8x16_t _b = vec_ld(b + i);
// Find absolute difference of two 8-bit unsigned
uint8x16_t absDifference = vec_sub(vec_max(a, b), vec_min(a, b));
// Sum result with using of vec_msum
_sum = vec_msum(absDifference, K8_01, _sum);
}
return vec_extract(_sum, 0) + vec_extract(_sum, 1) +
vec_extract(_sum, 2) + vec_extract(_sum, 3);
}
关于c++ - Altivec:_mm_sad_epu8() 的类似物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35357134/
并发是编程中真正困难的部分。最近一段时间goroutine很火。我的问题是 - 其他语言中存在什么样的 goroutine 类似物? 最佳答案 goroutine 的灵感来自 CSP (Communi
对于 Scala 来说,是否存在任何与 LINQ (.NET) 类似的合理的东西? 最佳答案 这取决于“LINQ”的确切含义。 LINQ 涉及很多事情。 最明显的答案是:只需使用 Scala 的 .N
我正在尝试使用 maven 的 com.springsource.bundlor 插件为 OSGI 应用程序创建 list 文件,并且有很多问题,所以有人可以告诉我有类似于 spring bundlo
有人可以指出与 java JSplitPane 类似的好的 delphi 组件吗? 我知道 Delphi 中的标准 TSplitter,但我对使用它感到厌烦。 最佳答案 JVCL组件带有 4 个分离器
我希望能够从目录树中的任何位置运行grails。 最佳答案 如果没有这样的选项,则可以创建bugreport来引入这样的参数。 作为解决方法,您可以创建将grails命令包装在项目中的build.xm
我从 https://referencesource.microsoft.com/ 中获取了 Nullable 类的源代码并将其放入文件并重命名为 NullableZZ(以及 NonVersionab
基础:我有非常大的并行 Fortran90/MPI 程序,代表复杂的物理模型。我想为其添加新功能:例如,我需要组织消息队列,在某处引入合并排序并使用哈希表。 问题:我自己知道如何编写哈希表、创建队列和
刚从CMU HoTT的lectures中了解到,虽然Check Type在Coq中返回的是Type : Type,但是左边的Type和 right 由不同的数字隐式索引,因为如果它们相同,这将导致 B
我有我的 MVVM,模型由许多相关的类组成,但为了这个问题,我们只关注四个。 GrandParentModel、ParentModel、ChildModel 和联系人。 这些都继承自 ModelBas
我有一个 pandas DataFrame,其中包含“类别”和“总计”列。可以有 4 个不同的类别:A、B、C、D。我以字典的形式得到每个类别的切点值。我需要排除总计超过相应切点的所有条目。这工作正常
Micronaut 中是否有类似@RequestScope 的注解? 如果没有等效注解,如何在Micronaut 中实现相同的效果? 最佳答案 此功能从 1.2.0.RC1 版本开始添加 您可以找到文
在 Java 社区中有没有什么东西可以称为 .NET 的“应用程序服务器”?类似于 Tomcat、Resin 和 Jetty。我对 JSP 等效物不感兴趣,我正在寻找用于 XML/HTTP 事务处理的
Android 上是否有 javax.smartcardio 类似物?但不使用 Open Mobile API。 谢谢! 最佳答案 我在名为 SCUBA 的项目中使用 javax.smartcardi
前几天我在用 C# 编写一些代码来获取一个对象列表,每个对象都包含一个数组字段,并将其转换为一个映射(即字典),其中对象成为值,对象数组的每个元素领域成为关键。这可能没有多大意义,所以让我们展示一些代
Pascal 中有一个方便的东西,那就是类型化的二进制文件。 来自 Free Pascal wiki 的描述 The type file of , where is any simple type
这是在 unix 中使用 pipe fork exec trio 的简单演示。 #include #include #include #include int main() { int
有人可以在 C++ 中编写以下代码: #include template bool TestArgumentTypesOnEquality(Type1 argument1, Type2 argum
在 MySQL 的旧版本中可以选择分析现有表格: SELECT * FROM `table_name` PROCEDURE ANALYSE() 这似乎很有用,开发人员可以分析现有表,查看建议(例如使
开源,免费 XF.Network类似物(creating High Performance TCP/IP Server using C#.NET 的产品) 最佳答案 尝试 spserver . 关于c
我是一名优秀的程序员,十分优秀!