我在RenderScript中实现了一个小型CNN,并希望在不同硬件上分析性能.在我的Nexus 7上,时间是有意义的,但在NVIDIA Shield上他们没有.
CNN(LeNet)以驻留在队列中的9层实现,计算按顺序执行.每个层都是单独计时的.
这是一个例子:
conv1 pool1 conv2 pool2 resh1 ip1 relu1 ip2 softmax
nexus7 11.177 7.813 13.357 8.367 8.097 2.1 0.326 1.557 2.667
shield 13.219 1.024 1.567 1.081 0.988 14.588 13.323 14.318 40.347
Run Code Online (Sandbox Code Playgroud)
时间的分布对于nexus来说是正确的,其中conv1和conv2(卷积层)占用大部分时间.但是在盾牌上,时间下降的方式超出了2-4层的合理范围,并且似乎朝着最后的方向聚集起来.softmax层是一个相对较小的工作,因此40ms太大了.我的计时方法必须是错误的,或者正在发生其他事情.
运行图层的代码如下所示:
double[] times = new double[layers.size()];
int layerindex = 0;
for (Layer a : layers) {
double t = SystemClock.elapsedRealtime();
//long t = System.currentTimeMillis(); // makes no difference
blob = a.forward(blob); // here we call renderscript forEach_(), invoke_() etc
//mRS.finish(); // makes no difference
t …Run Code Online (Sandbox Code Playgroud) 我有一个使用 boost::read_until 和 boost::streambuf 的客户端/服务器应用程序。我正在从套接字读取 XML 消息,并希望使用 tinyXML2 来解析它,如下所示:
XMLDocument doc;
doc.parse(strPtr); // strPtr is const char*
Run Code Online (Sandbox Code Playgroud)
我需要以某种方式从streambuf中提取const char *strPtr。到目前为止,我在堆栈交换上找到了三种方法:
// method 1, string constructor
const char * streambufToPtr(boost::asio::streambuf &message) {
boost::asio::streambuf::const_buffers_type bufs = message.data();
std::string astr(boost::asio::buffers_begin(bufs), boost::asio::buffers_begin(bufs) + message.size());
return astr.c_str();
}
// method 2, stringstream
const char * streambufToPtr(boost::asio::streambuf &message) {
std::ostringstream ss;
ss << &message;
std::string astr = ss.str();
return astr.c_str();
}
// method 3, buffer_cast
const char * streambufToPtr(boost::asio::streambuf &message) {
const char* bufPtr=boost::asio::buffer_cast<const char*>(message.data());
return …Run Code Online (Sandbox Code Playgroud) 在Postgres文档INSERT中有一个使用ON CONFLICT的例子:
INSERT INTO distributors (did, dname) VALUES (7, 'Redline GmbH')
ON CONFLICT (did) DO NOTHING;
Run Code Online (Sandbox Code Playgroud)
我尝试同样的事情:
INSERT INTO name_map VALUES ('key_value', 'val1','val2')
ON CONFLICT (key_column) DO NOTHING;
Run Code Online (Sandbox Code Playgroud)
但得到ERROR:语法错误在"ON"或接近"ON".
我错过了什么?
postgres --version
> 9.5.0
Run Code Online (Sandbox Code Playgroud) android ×1
boost ×1
c++ ×1
performance ×1
postgresql ×1
renderscript ×1
streambuf ×1
timing ×1
tinyxml ×1
xml ×1