小编And*_*ndt的帖子

如何以跨平台的方式使用CMake ExternalProject_Add或替代方案?

我想建立一个已经将CMake作为我项目的CMake条带的一部分的第三方项目.ExternalProject_Add就是出于此目的,但我发现它只能用于特定的生成器,我想在很多平台上轻松工作.

例如,这里是zlib的外部项目添加脚本,它有自己的CMakeLists.txt:

set(USE_PROJECT_CMAKE_MODULE_PATH "-DCMAKE_MODULE_PATH=${MAKE_MODULE_PATH}")
ExternalProject_Add(ZLIB
                    SOURCE_DIR ${CMAKE_SOURCE_DIR}/external/zlib
                    DOWNLOAD_COMMAND ""
                    UPDATE_COMMAND ""
                    CMAKE_ARGS
                       -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
                       -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
                       -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
                       -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
                       ${USE_PROJECT_CMAKE_MODULE_PATH}
                    INSTALL_COMMAND "")

ExternalProject_Add_Step(ZLIB installInternally
                         COMMAND cd <BINARY_DIR> && make install
                         DEPENDEES install
                         ALWAYS 1)
ExternalProject_Get_Property(ZLIB install_dir)

if(UNIX)
    set(ZLIB_NAME libz)
else(UNIX)
    set(ZLIB_NAME zlib)
endif(UNIX)

add_library(zlib UNKNOWN IMPORTED)
set_property(TARGET zlib PROPERTY IMPORTED_LOCATION ${install_dir}/lib/${ZLIB_NAME}.a)
set(ZLIB_LIBRARIES zlib)
set(ZLIB_LIBRARIES_OPTIONAL ${ZLIB_LIBRARIES})
set(ZLIB_DIR ${install_dir} CACHE INTERNAL "zlib ROOT dir")
set(ZLIB_INCLUDE_DIRS ${install_dir}/include CACHE INTERNAL "zlib include dirs")
set(ZLIB_DEFINES "-msse2 -mfpmath=sse" CACHE INTERNAL "zlib defines")
Run Code Online (Sandbox Code Playgroud)

这个问题是它适用于make,但不适用于Xcode或Visual Studio.也许有一些方法可以将传递给我的项目的cmake构建命令转发给ExternalProject_Add.

如何以最小的代码复杂性以跨平台的方式编写ExternalProject_Add调用,还是有更好的选择?

cross-platform cmake external-project

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

我应该对包含无效值的数据集使用浮点数NaN或浮点数+布尔值吗?

我需要处理大量数据,并对每个数据集进行数学密集型操作.其中大部分类似于图像处理.但是,由于直接从物理设备读取此数据,因此许多像素值可能无效.

这使得NaN的属性表示非数字的值,并且在算术运算上的扩展非常引人注目.然而,它似乎也需要关闭一些优化,如gcc的-ffast-math,而且我们需要跨平台.我们当前的设计使用一个简单的结构,它包含一个浮点值和一个指示有效性的bool.

虽然看起来NaN的设计考虑到了这种用途,但其他人认为它比它的价值更麻烦.有没有人根据他们对IEEE754的更亲密的体验而考虑到性能?

c++ floating-point performance nan

23
推荐指数
1
解决办法
2173
查看次数

如何使用TFRecord数据集快速制作TensorFlow + Keras?

什么是如何将TensorFlow TFRecord与Keras模型和tf.session.run()一起使用,同时将数据集保存在具有队列运行程序的张量中?

以下是一个可行的代码段,但需要进行以下改进:

  • 使用Model API
  • 指定一个Input()
  • 从TFRecord加载数据集
  • 并行运行数据集(例如使用queuerunner)

这是片段,有几条TODO线表明需要什么:

from keras.models import Model
import tensorflow as tf
from keras import backend as K
from keras.layers import Dense, Input
from keras.objectives import categorical_crossentropy
from tensorflow.examples.tutorials.mnist import input_data

sess = tf.Session()
K.set_session(sess)

# Can this be done more efficiently than placeholders w/ TFRecords?
img = tf.placeholder(tf.float32, shape=(None, 784))
labels = tf.placeholder(tf.float32, shape=(None, 10))

# TODO: Use Input() 
x = Dense(128, activation='relu')(img)
x = Dense(128, activation='relu')(x)
preds = Dense(10, activation='softmax')(x)
# TODO: …
Run Code Online (Sandbox Code Playgroud)

machine-learning deep-learning keras tensorflow keras-layer

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

设计需要划痕空间的算法

C++标准库将数据结构与算法分开,例如std::sort:

template< class RandomAccessIterator >
void sort( RandomAccessIterator first, RandomAccessIterator last );
Run Code Online (Sandbox Code Playgroud)

当算法需要中间临时空间时,我想保持算法和数据结构的分离.

考虑到这一目标,我想实现一种图像算法,该算法需要输入和输出图像之间的中间划痕空间.可以在函数调用中分配必要的临时空间,但是由于具有相同大小的图像的这些调用的大小和频率,将严重降低性能.这使得将数据结构与算法分离变得更加困难.

实现此目的的一种可能方法如下:

// Algorithm function
template<typename InputImageView, typename OutputImageView, typename ScratchView>
void algorithm(
  InputImageView inputImageView, 
  OutputImageView outputImageView, 
  ScratchView scratchView
);

// Algorithm class with scratch space
template<typename DataStructure>
class Algorithm {
public:
  template<typename InputImageView,typename OutputImageView>
  void operator()(
  InputImageView inputImageView, 
  OutputImageView outputImageView
  ){
    m_scratch.resize(inputImageView.size());
    algorithm(inputImageView,outputImageView,makeView(m_scratch));
  }

private:
  DataStructure m_scratch;
}
Run Code Online (Sandbox Code Playgroud)

上面是一个有效的算法+划痕空间设计可以遵循,还是有更好的方法?

旁注:我正在使用boost :: gil

c++ algorithm boost boost-gil

16
推荐指数
1
解决办法
737
查看次数

以文件名为键提升属性树

我试图使用文件名作为boost :: PropertyTree中的键

然而 '.' 文件名中的字符(例如"example.txt")会导致在属性树中添加其他图层.最明显的解决方案是替换'.' 与另一个角色,但有一个更好的方法来做到这一点,例如使用转义字符.

在下面的示例中,值10将放在节点'txt'中,'example'的子节点.相反,我希望将值10存储在节点'example.txt'中.

ptree pt;
pt.put("example.txt", 10);
Run Code Online (Sandbox Code Playgroud)

如何为单个节点使用完整文件名?

在此先感谢您的帮助!

c++ boost boost-propertytree

11
推荐指数
2
解决办法
5202
查看次数

将boost.units中的单位从angular_velocity转换为degrees_per_second

我需要从一般的angular_velocity转换为度/秒.

为了说明这个问题,示例boostUnits.cpp:

#include <boost/units/systems/si.hpp>
#include <boost/units/systems/angle/revolutions.hpp>
#include <boost/units/systems/angle/degrees.hpp>
#include <boost/units/conversion.hpp>
#include <boost/units/pow.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>

int main()
{
  boost::units::quantity< boost::units::si::angular_velocity> m_speed(
    (30.0*boost::units::si::radians_per_second)
  );
  std::cout << "m_speed: " << m_speed << std::endl;

  uint32_t result = static_cast<uint32_t>(
    boost::units::quantity<boost::units::si::angular_velocity,uint32_t>(
      m_speed*boost::units::degree::degrees/boost::units::si::seconds
    ).value()
  );
  std::cout << " result: "<< result << std::endl;

  return(0);
}
Run Code Online (Sandbox Code Playgroud)

生成此编译器输出:

g++ boostUnits.cpp
/usr/local/include/boost/units/detail/conversion_impl.hpp: In static member function ‘static boost::units::quantity<Unit2, T2> boost::units::conversion_helper<boost::units::quantity<Unit1, T1>, boost::units::quantity<Unit2, T2> >::convert(const boost::units::quantity<Unit1, T1>&) [with Unit1 = boost::units::unit<boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-0x000000002l, 1l> >, boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<2l, 1l> …
Run Code Online (Sandbox Code Playgroud)

c++ gcc boost boost-units

10
推荐指数
1
解决办法
3610
查看次数

TensorFlow用于递归连接的高效共享内存分配

DenseNets倾向于占用TensorFlow中的大量内存,因为每个concat操作都存储在单独的分配中.最近的一篇文章"DenseNets的内存高效实现"表明,通过共享分配可以大大降低内存利用率.来自paper + pytorch实现的图像说明了共享内存方法:

densenet共享内存

如何使用TensorFlow实现这一点?如果无法通过python完成,如何在支持CPU和GPU的Op中正确实现?

我已经为必要的分配功能创建了TensorFlow功能请求.

c++ python memory-management tensorflow tensorflow-gpu

10
推荐指数
1
解决办法
988
查看次数

比较Hudson,CDash,CruisonControl,TeamCity for Continuous Integration/Builder

我发现大多数人都在谈论Hudson的简单和自由的持续集成.现在我个人不喜欢它的界面,我发现它非常凌乱,我发现几乎没有人谈论CDash - 我喜欢CMakeCTest似乎也很好.

您能否为自己喜欢的持续集成服务器/构建器/测试人员/仪表板提供其强弱决策点的简短描述.

以下是我听说过或使用过的免费(在中小型项目的广义上)的列表:

环境: C++,C#,Python,PHP ......可以是各种各样的.

PS:最好每个工具给出一个答案或对其进行评论已经有一个.

comparison continuous-integration dashboard hudson builder

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

在另一个站点嵌入doxygen文档?

我正在尝试将doxygen文档嵌入到另一个网站中.目前我已经嵌入了iframe,但它有副作用,如果我在新标签上打开文档中的任何链接,例如,它将转到框架外的单独链接的doxygen页面.

主站点也恰好是用sphinx生成的,但是呼吸扩展还没有准备好自动组织这样复杂的文档而无需手动编写许多.rst文件.

此外,doxylink引用链接,例如此链接指向参考页面上的文件.

鲨鱼机器学习库似乎能够在某种程度上将这一专长拉到课堂列表中,但很难确定他们使用的确切技术.另外,他们的许可证是GPL,这与我的图书馆的BSD许可证不兼容.

如何确保文档始终嵌入?

以下是如何显示正确嵌入的页面:

basis_embedded_doxygen

但是有些链接会导致这样的页面:

basis_not_embedded_doxygen

html embed documentation doxygen python-sphinx

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

增强asio异步UDP套接字具有高延迟

我在运行异步asio udp套接字时遇到延迟问题.对于使用同步udp的相同应用程序,我没有相同的问题.我正在与一个物理设备进行通信,该设备允许每个UDP数据包最多延迟5毫秒,而我目前的延迟为8毫秒,标准开发时间为0.065毫秒,这非常精确.

我使用Xcode 6.3.2(6D2105)在Mac OS X 10.10.4上.

以下是有关此问题的一些关键详细信息:

同步UDP测试程序

异步UDP测试程序

有没有人能够深入了解Async UDP版本中可能出现这种延迟问题的原因?谢谢.

c++ sockets boost latency boost-asio

6
推荐指数
0
解决办法
648
查看次数