在 C# 中使用 SSE

2023-12-07

我目前正在用 C# 编写一个应用程序,该应用程序可以从使用 SSE 中受益匪浅,因为相对较小的代码片段会占用 90-95% 的执行时间。代码本身也非常适合 SSE(因为它是基于矩阵和向量的),所以我继续并开始使用 Mono.Simd,尽管这在执行时间上产生了显着差异,但这仍然不够。 Mono.Simd 的问题是它只有非常旧的 SSE 指令(我相信主要来自 SSE1 和 SSE2),这会导致点积(或标量/内积)占用 3 条指令,而它可以是使用 SSE4 仅用 1 条指令即可实现(并且由于 SSE4 自 2006 年以来就可用,因此我们可以放心地假设现在每台现代计算机都拥有它)。此外,根本不包含许多其他函数(例如,获取每个数字的绝对值,这也需要一个笨拙的解决方法)。

我的问题是,我可以从 C# 代码中调用其他库来使用 SSE/SIMD 吗?也可以在 C# 中使用内联汇编,所以显然我也可以使用 C++ 代码,尽管这会导致性能下降,但如果有人有一个相对易于使用的带有上述函数的 C++ 库,这是可以接受的我猜。

预先感谢您的任何帮助。


开源是啊!图书馆(我是其作者)提供 SIMD 优化的数据处理函数,并且可以通过官方绑定从 .Net 语言使用。它不仅支持 SSE,还支持即将推出的 Intel Haswell 处理器的 SIMD 扩展至 AVX2。该库会自动为其运行的处理器选择最佳版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中使用 SSE 的相关文章

  • C++:头文件中全局函数的多重定义错误

    该函数是全局的 在头文件中定义 暂时地我想把它留在那里 头文件还构成一个具有内联函数的特定类 其中一个函数调用this全局函数 源文件不包含任何有问题的全局函数 有关错误原因的任何提示吗 如果有人感兴趣的话我可以发布代码 mainwindo
  • Dapper 强类型查询返回默认对象值

    刚刚开始使用 Dapper 并喜欢它 我遇到了问题 它返回正确数量的对象 但它们的属性都有默认值 using var dbConnection Connection await dbConnection OpenAsync const st
  • 使用内部构造函数实例化类

    我有一个类 其构造函数被定义为内部 这意味着我无法实例化它 虽然这可能有道理 但出于调试和研究目的 我仍然愿意做一次 是否可以通过反射来做到这一点 我知道我可以访问私有 内部成员 但是我可以调用内部构造函数吗 或者 由于构造函数没有做任何重
  • 警告:从指针目标类型中丢弃“const”限定符

    没有const char s意味着 s 是一个指向常量 char 的指针 那么为什么它给我这个警告 我并不是想改变价值观 在第一个函数中警告是return discards const qualifiers from pointer tar
  • ProtoBuf-net AsReference 需要 Activator.CreateInstance 中的公共构造函数吗?

    在我的两门课程中 看起来像这样 最少 using System using System Collections Generic using System Collections using System ComponentModel us
  • .NET Windows 服务中调用 C# 的 wait 的 I/O 回调是否可以不阻塞?

    我知道在 ASP NET 中 当使用 wait 时工作线程会返回到池中 而 I O 发生在后台 这对于可扩展性非常有用 我的 Windows 服务是一个套接字服务器 它使用 Begin End 样式的异步套接字 I O 混合我的魔法 我知道
  • 可选参数“必须是编译时常量”

    我有一个类分为两个部分文件 如下所示 public partial class PersonRepository BaseRepository
  • 使用 QSet 作为 Qt 地图容器中的键

    我需要一个映射 其中键是唯一的 并且每个键都是一组或自定义 POD 结构 其中包含 3 个数据项 这些值只是指向对象实例的指针 从阅读Qt 的 QMap 与 QHash 的文档 http qt project org doc qt 4 8
  • 隐形打开的弹出窗口

    第二天就解决这个问题 要重现 请创建新的 WPF 应用程序 xaml
  • 将占位符文本添加到文本框

    我正在寻找一种将占位符文本添加到文本框的方法 就像在 html5 中使用文本框一样 IE 如果文本框没有文本 则会添加文本Enter some text here 当用户单击它时 占位符文本消失并允许用户输入自己的文本 如果文本框失去焦点并
  • 使用 Microsoft Graph 创建用户

    如何使用 Microsoft graph 创建用户 因为我在保存过程中遇到了权限失败的问题 我确实有几个问题 在图中调用创建用户 API 将在哪里创建用户 是在 Azure AD 还是其他地方 我尝试通过传递 json 和必需的标头来调用创
  • C++ 析构函数:何时释放内存?

    如果我删除一个导致其析构函数被调用的对象 那么内存是在析构函数完成函数中的任何操作之前还是之后被释放 仅当最小派生类子对象被销毁后才会释放内存 所以如果你有 class Base class Derived public Base publ
  • 在 C++ 中处理音频缓冲区时,如何执行从 float -> double -> float 的转换

    我目前正在开发一个应用程序 其中音频样本帧在以下回调中进行处理 void Eav07AudioProcessor processBlock AudioSampleBuffer buffer for int channel 0 channel
  • 从 ef core 的子集合中删除一些项目

    我有一个父表和子表 其中父表与子表具有一对多关系 我想删除一些子项 并且希望父项的子集合反映该更改 如果我使用删除选定的子项RemoveRange 那么子集合不会更新 如果我使用Remove从子集合中删除子集合然后 显然 它不如使用效率高R
  • 为什么在 .net 中使用 Invoke on Controls? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 NET不允许跨线程操作 https stackoverflow com questions 2896504 why net does not allow cross thread operat
  • 如果数组为空,LINQ 返回 null

    public class Stuff public int x other stuff 我有一个IEnumerable
  • 如何使用eclipse构建C++应用程序

    我已经从以下位置下载了 Eclipse Juno for C here http www eclipse org downloads download php file technology epp downloads release ju
  • 停止 TcpListener 的正确方法

    我目前正在使用 TcpListener 来处理传入连接 每个连接都有一个线程用于处理通信 然后关闭该单个连接 代码如下 TcpListener listener new TcpListener IPAddress Any Port Syst
  • 无效的模板相关成员函数模板推导 - 认为我正在尝试使用 std::set

    我有一个继承自基类模板的类模板 基类模板有一个数据成员和一个成员函数模板 我想从我的超类中调用它 我知道为了消除对成员函数模板的调用的歧义 我必须使用template关键字 我必须明确引用this在超级班里 this gt base mem
  • C# 中成员访问中的问号是什么意思?

    有人可以向我解释一下以下代码中会员访问中的问号是什么意思吗 它是标准 C 的一部分吗 尝试在 Xamarin Studio 中编译此文件时出现解析错误 this AnalyzerLoadFailed Invoke this new Anal

随机推荐

  • 避免空检查条件运算符样板的最佳实践

    当无法使用 null 对象时 替换条件运算符 null 检查样板的最佳实践是什么 public String getEmployeeName return employee null null employee getName Java 8
  • Android - 想要限制编辑文本中的某些字符

    我遇到了以下场景 我有一个编辑文本及其密码字段 我想限制一些字符 例如 a z A Z 1 0 和一些特殊字符 我将此 edittext 的 inputType 设置为 textPassword 并使用 Numberkeylistner 来
  • 如何从 MSBuild 自动增加程序集或程序集文件版本?

    限制条件是 使用 Visual Studio 2017 最终需要从调用 MSBuild 的 powershell 脚本中调用 不确定其相关性 但需要能够构建以下内容 ASP NET 461 asp net core 1 1 和 2 0 程序
  • 非 QObject 派生类是否应该“始终”放入堆栈中?

    来自 Symbian 世界 我习惯于尽可能多地使用堆以避免耗尽堆栈空间 特别是在处理描述符时 CBase 派生类总是在堆上动态分配 因为如果不这样做 它们的成员变量将保持未初始化状态 相同的约定是否适用于 QObject 派生类 在 Qt
  • 结构化绑定:当某些东西看起来像引用并且行为类似于引用,但它不是引用时

    昨天我看到了一个有趣的问题这里关于结构化绑定 我们可以总结如下 考虑下面的示例代码 include
  • 集中我表单中的一些错误消息

    目前 我正在使用errorPlacement打印每个输入的错误消息 my form validate errorPlacement function error element Some code that print error belo
  • 如何选择contenteditable div中的所有文本?

    在将其标记为重复之前 我希望您意识到没有人实际上为这个特定问题提供了好的答案 在当焦点 单击时选择 contenteditable div 中的所有文本 接受的答案和蒂姆唐的答案都没有帮助 因为它们仅在元素已经聚焦时才有效 就我而言 我希望
  • Cocoa - 关于 NSUserDefaults 值更改的通知?

    假设我有一把钥匙 MyPreference 并通过存储相应的值NSUserDefaults 有没有办法在值修改时得到通知 或者可以通过绑定来完成吗 但在这种情况下 我希望我的对象能够收到更改通知 以便我可以执行其他任务 而不是将值绑定到 U
  • 警告 lme4:模型未能与 max|grad| 收敛

    我必须运行一个带有对数转换响应变量 一个连续变量作为固定效应和一个嵌套随机效应的 lmer first lt lmer logterrisize spm 1 studyarea teriid data Data table for anal
  • 使用 AirDrop 时,UIActivityViewController 完成处理程序已完成!

    我在用UIActivityViewController分享一些文本和网址 在发送一些文本和网址时效果很好 我当前需要使用完成处理程序来执行其他操作 具体取决于用户是否取消了UIActivityViewController或者实际上发送了一些
  • 为Python项目构建Docker镜像时如何避免重新安装包?

    我的 Dockerfile 是这样的 FROM my base ADD srv RUN pip install r requirements txt RUN python setup py install ENTRYPOINT run se
  • iPhone 崩溃 - 消息发送到已释放的实例

    好的 这是我收到的错误 CFRunLoopTimer invalidate message sent to deallocated instance 0x109b05a0 gdb 这是导致崩溃的代码 if waitingOpponentTi
  • 如何在 Google 地图中启用和禁用绘图控制选项?

    我有三个不同的按钮用于绘制形状 单击每个按钮 应启用专有绘图选项 并且应禁用其他选项 我的代码如下 drawShape js 文件 以下是我的 JavaScript 代码 我有三种不同的方法来绘制形状 圆形 矩形 多边形 通过下面的代码 每
  • 我可以将某些东西绑定到 ALT(元)吗

    我有 global set key f11 menu bar mode 我怎样才能将它绑定到左侧ALT Meta使用alt作为meta会不会有冲突 您无法将函数绑定到修饰键 因为当单独按下修饰键时 或者更准确地说 当按下一个或多个修饰键而没
  • 使用 Javascript 从待办事项列表中删除项目

    尝试我的第一个 Javascript 项目 使用 DOM 制作一个待办事项列表 添加项目后 如何让 删除 按钮起作用并删除该项目 删除按钮 此外 在进行新条目后 添加后的列表项仍保留在输入字段中 如何使其每个列表项后为空白 是的 我知道我的
  • 如果没有行匹配则返回一个值

    The authorityID TinyInt 专栏永远不会null 我想要的是返回一个15如果没有行 通过下面的查询 如果没有行 我什么也得不到 select top 1 isnull authorityID 15 from docAut
  • 使用 Gmail API 访问 CHATS 标签

    Gmail API 是否提供获取 Gmail 聊天日志的方法 Chats 是一个标签 就像 INBOX 一样 我希望能找到它用户 标签列表但它不存在 我必须启用某些功能才能显示 CHATS 标签吗 Gmail API 支持此功能吗 根据查找
  • Ensime 不适用于 sbt + android-plugin

    我用这个创建了一个项目 https github com gseitz android sbt project g8 当我在 emacs 中启动 ensime 编辑 src main scala Activity scala 时 我几乎到处
  • 输入中不支持的字符

    我想将一串字符分配给一个变量 但它说 there isn t a code to show 我有一个字符串想要分配给一个变量 d stunning st n Unsupported characters in input or word s
  • 在 C# 中使用 SSE

    我目前正在用 C 编写一个应用程序 该应用程序可以从使用 SSE 中受益匪浅 因为相对较小的代码片段会占用 90 95 的执行时间 代码本身也非常适合 SSE 因为它是基于矩阵和向量的 所以我继续并开始使用 Mono Simd 尽管这在执行