小编me *_* me的帖子

Mono中的SIMD还有什么发展吗?

我想知道自从5年(5年前)出现以来Mono.SIMD(或Mono内部的SIMD支持)是否有任何开发.我个人认为这是提高c#速度的重要一步.但是,我已经使用了一段时间了,我觉得Mono.SIMD落后了,因为很多功能都缺失了.

我面临的一些问题包括:

  1. 缺少点积,自SSE4.1(2006年出现,现在70%的计算机支持)以来可以在1次操作中实现,而在Mono.SIMD中需要3次操作.除此之外,程序员必须为每个版本的SSE编写一个函数,这是JIT应该做的工作(因为它是专门为了让程序员不再担心CPU版本而创建的).
  2. 不可能添加/乘以Vector4f和Vector4i(或任何其他不同的矢量).
  3. 没有适当的矢量投射(这些位似乎没有变化,所以结果非常奇怪,几乎完全没用).
  4. 很多其他功能都没有包括在内,比如四舍五入.

那么,有没有人知道Mono.SIMD或SIMD支持是否正在发生某些事情(如果是这样的话)?或者,或者,有人知道提到的任何问题的良好解决方案吗?

c# mono sse simd

8
推荐指数
1
解决办法
1312
查看次数

如何使用 CMake 构建 Apple 的 Metal-cpp 示例?

最近,Apple 发布了一个直接使用 C++ 使用 Metal 的库。我在网上找到的示例(https://github.com/moritzhof/metal-cpp-examples)如果我复制源代码并按照Apple概述的步骤进行操作(https://developer.apple.com) ,则可以使用该示例/metal/cpp/)在 Xcode 中。我不使用附带的 Xcode 项目文件,以避免任何“隐藏”设置。

现在我尝试使用 CMake 构建相同的示例,其中包含以下 CMakeLists.txt:

cmake_minimum_required(VERSION 3.8)
project(HelloWorld)

set(CMAKE_CXX_STANDARD 17)

include_directories(${PROJECT_SOURCE_DIR}/metal-cpp)

set(SOURCE_FILES metal-cpp-test/main.cpp metal-cpp-test/metal_adder.cpp)
add_executable(program ${SOURCE_FILES})

# specify which libraries to connect
# target_link_libraries(program ${METAL})
# target_link_libraries(program ${FOUNDATION})
# target_link_libraries(program ${QUARTZCORE})

find_library(METAL Metal)
find_library(FOUNDATION Foundation)
find_library(QUARTZCORE QuartzCore)

target_link_libraries(program stdc++ "-framework Metal" "-framework Foundation" "-framework QuartzCore" objc)
Run Code Online (Sandbox Code Playgroud)

它编译成功,但是行

auto lib = _device->newDefaultLibrary();
Run Code Online (Sandbox Code Playgroud)

现在似乎返回一个 null-ptr。知道这可能是什么原因以及如何解决这个问题吗?

c++ cmake metal

7
推荐指数
1
解决办法
2578
查看次数

在C#中使用SSE

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

我的问题是,我可以在我的C#代码中调用任何其他库来使用SSE/SIMD吗?也可以在C#中使用内联汇编,所以显然我也可以使用C++代码,即使这会导致性能损失很小,但如果有人会有一个相对易于使用的C++库,那么这是可以接受的我猜.

在此先感谢您的帮助.

c# sse simd

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×2

simd ×2

sse ×2

c++ ×1

cmake ×1

metal ×1

mono ×1