草庐IT

simd-library

全部标签

c++ - 如何使用 Boost Graph Library 更改图中的边权重?

我已经使用Boost图形库定义了一个图形,typedefboost::propertyEdgeWeightProperty;typedefboost::adjacency_listGraph;使用添加边相当简单boost::add_edge(vertice1,vertice2,weight,graph);我还没有弄清楚如何在设置边缘权重后更改它。一种可能的解决方案是删除边缘并使用更新后的权重值重新添加它,但是,这似乎有点过分。 最佳答案 一种解决方案是执行以下操作typedefboost::adjacency_listGraph;t

c++ - 在 C++ SIMD 中将带符号的短整数转换为 float

我有一个带符号的short数组,我想将其除以2048并得到一个float数组。我找到了SSE:convertshortintegertofloat允许将unsigned短裤转换为float,但我也想处理已签名的短裤。下面的代码有效,但仅适用于正短路。//Wewanttodividesomesignedshortby2048andgetafloat.constautofloatScale=_mm256_set1_ps(2048);short*shortsInput=/*valuesfromsomewhere*/;float*floatsOutput=/*initialized*/;__m

c++ - Boost Graph Library astar和导航网格

我在做一个项目SFML/C++,我需要生成一个图来连接它们之间的障碍物以方便寻路,所以我有兴趣生成一个导航网格,我将应用boostA*算法。有点像这样:但是我在使用BoostGraphLibrary实现它时遇到了很多问题(如果您有一个更合适的库,我很感兴趣)。首先,我创建一个具有适当结构的adjacency_list:structWayPoint{sf::Vector2fpos;};structWayPointConnection{floatdist;};typedefboost::adjacency_listWayPointGraph;typedefWayPointGraph::ve

c++ - std::nth_element 的 SIMD 实现

我有一个算法可以在我的双核3GHzIntel处理器上平均运行250毫秒,我正在尝试优化它。目前,我有一个std::nth_element在std::vector上调用了大约6,000次的调用s在150到300个元素之间,平均耗时50毫秒。我花了一些时间优化我使用的比较器,它目前查找两个doubles来自vector并执行简单的比较。比较器运行时间的一小部分可以忽略不计std::nth_element.比较器的复制构造函数也很简单。因为这个调用目前占用了我算法20%的时间,而且大部分时间花在了nth_element的代码上。我没有写(即不是比较器),我想知道是否有人知道优化nth_ele

c++ - 使用 openmp + SIMD 没有加速

我是Openmp的新手,现在尝试使用Openmp+SIMD内在函数来加速我的程序,但结果远非预期。为了在不丢失太多基本信息的情况下简化案例,我写了一个更简单的玩具示例:#include#include#include#include#include#include"immintrin.h"//forSIMDintrinsicsintmain(){int64_tsize=160000000;std::vectorsrc(size);//generatingrandomsrcdatafor(inti=0;idst(size);//getpointersforvectorloadandsto

c++ - 编译cuda文件报错: "runtime library" mismatch value 'MDd_DynamicDebug' doesn't match value 'MTd_StaticDebug' in vectorAddition_cuda. o

我尝试在Qt5.2和MSVC2012环境下编译一个cuda文件。在开始我的项目之前,我仔细阅读了问题并回复:CompilingCudacodeinQtCreatoronWindows.但是即使我简单地复制代码并在qt中生成2个文件,仍然会弹出一些错误/main.cpp/vectorAddition.cu错误是:errorLNK2038:mismatchdetectedfor'RuntimeLibrary':value'MDd_DynamicDebug'doesn'tmatchvalue'MTd_StaticDebug'invectorAddition_cuda.o我完全不知道如何修复这

c++ - 为什么 cmake_link_libraries 包含静态库?

我希望我的可执行文件再次链接到共享库(libmy_so.so),而共享库又是使用静态库(libmy_static_lib.a)构建的。当我做的时候target_link_libraries(my_exemy_so)我在编译时看到cmake在构建行上添加了libmy_static_lib.a。这不是我想要的,我不明白为什么需要这样做。有没有办法解决?LINK_PRIVATE似乎没有任何区别。我使用CMake2.8.9。 最佳答案 来自CMakedocumentationfortarget_link_libraries:target_l

C++ 集中化 SIMD 使用

我有一个图书馆和许多依赖于该图书馆的项目。我想使用SIMD扩展优化库中的某些过程。然而,保持便携对我来说很重要,所以对用户来说它应该是非常抽象的。我在一开始就说过我不想使用其他一些可以解决问题的很棒的库。我实际上想了解我想要的东西是否可能以及在多大程度上是可能的。我的第一个想法是拥有一个“vector”包装类,SIMD的使用对用户是透明的,并且可以使用“标量”vector类以防目标机器上没有可用的SIMD扩展。我想到了一个天真的想法,即使用预处理器根据编译库的目标从众多vector类中选择一个。因此,一个标量vector类,一个带有SSE的类(基本上是这样的:http://fastcp

c++ - "the procedure entry point _ZNSt8_detail15_List_node_base7_M_hookEPS0_ could not be located in the dynamic link library libstdc -6.dll."

有个小问题。我有C++代码,它链接到一些库。我以前有源代码的(原始)exe,它在第一台机器上运行完美。还有第二台机器,我在那里处理源代码,更改它,等等。在第二台机器上,该源代码的构建工作正常,当我复制second.exe并尝试在第一台机器上运行它时萌芽它显示错误信息"theprocedureentrypoint_ZNSt8_detail15_List_node_base7_M_hookEPS0_couldnotbelocatedinthedynamiclinklibrarylibstdc++-6.dll."有一件事,second.exe被复制到与original.exe相同的文件夹中,

c++ - QT CREATOR - 我把/NODEFAULTLIB 放在哪里 :library?

QT给出错误LNK4098:defaultlib'MSVCRTD'conflictswithuseofotherlibs;use/NODEFAULTLIB:libraryLNK4098:defaultlib'LIBCMT'conflictswithuseofotherlibs;use/NODEFAULTLIB:library我应该把/NODEFAULTLIB:library放在哪里? 最佳答案 有人在Qtforumsawhileback上发布了一些与您非常相关的问题.这听起来像是传递了一个additionaloptionsshoul