通常在互联网上我发现LFENCE在处理器x86中没有任何意义,即它什么都不做,所以相反MFENCE我们可以绝对无痛地使用SFENCE,因为MFENCE= SFENCE+ LFENCE= SFENCE+ NOP= SFENCE.
但是如果LFENCE没有意义,那么为什么我们有四种方法在x86/x86_64中建立顺序一致性:
LOAD(没有围栏)和STORE+MFENCELOAD (没有围栏)和 LOCK XCHGMFENCE+ LOAD和STORE(没有围栏)LOCK XADD(0)和STORE(没有围栏)取自这里:http://www.cl.cam.ac.uk/~pes20/cpp/cpp0xmappings.html
以及Herb Sutter在第34页底部的表演:https://skydrive.live.com/view.aspx?status = 4E86B0CF20EF15AD!24884&app = WordPdf&wdo = 2&authkey =!AMtj_EflYn2507c
如果LFENCE没有做任何事情,那么方法(3)将具有以下含义:SFENCE + LOAD and STORE (without fence)但是SFENCE之前没有任何意义LOAD.即如果LFENCE什么都不做,方法(3)没有意义.
它LFENCE在处理器x86/x86_64中是否有任何意义上的指令?
回答:
1. …
对于Internet协议(IP),我可以使用多播:
另外,在示例中,对于UDP,我可以使用:
但是我可以将这些内容用于TCP吗?
处理器x86/x86_64中使用哪种寻址在L1,L2和L3(LLC)中进行缓存 - 物理或虚拟(使用PT/PTE和TLB)以及PAT(页面属性表)对它有何影响?
在这种情况下,驱动程序(内核空间)和应用程序(用户空间)之间是否存在差异?
简短回答 - 英特尔使用虚拟索引,物理标记(VIPT)L1缓存:线程之间的数据交换将用于在具有HT的一个Core上执行什么?
8-way用于定义的高速缓存中Set需要低12 bits,这在virt和phys中是相同的)众所周知,现代最流行的CNN(卷积神经网络):VGG/ResNet(FasterRCNN),SSD,Yolo,Yolo v2,DenseBox,DetectNet - 不是旋转不变的:现代CNN(卷积神经网络)是否像DetectNet一样旋转不变?
还知道,有几个神经网络具有旋转不变对象检测:
Rotation-Invariant Neoperceptron 2006(PDF):https://www.researchgate.net/publication/224649475_Rotation-Invariant_Neoperceptron
学习用于纹理分类的旋转不变卷积滤波器2016(PDF):https://arxiv.org/abs/1604.06720
RIFD-CNN:用于物体检测的旋转不变和Fisher判别卷积神经网络2016(PDF):http://www.cv-foundation.org/openaccess/content_cvpr_2016/html/Cheng_RIFD-CNN_Rotation-Invariant_and_CVPR_2016_paper.html
卷积神经网络中的编码不变性2014(PDF)
用于星系形态预测的旋转不变卷积神经网络(PDF):https://arxiv.org/abs/1503.07077
学习旋转不变卷积神经网络用于VHR光学遥感图像中的物体检测2016:http://ieeexplore.ieee.org/document/7560644/
我们知道,在这样的图像检测竞赛中:IMAGE-NET,MSCOCO,PASCAL VOC - 使用的网络集合(同时是一些神经网络).或网络集成在单网中,如ResNet(残留网络表现得像相对浅网络的集合)
但是在像MSRA这样的获胜者中使用旋转不变的网络集合,如果没有,那么为什么呢?为什么在整体中额外的旋转不变网络不会增加精确度以检测某些物体,例如飞机物体 - 哪些图像是在不同的旋转角度下完成的?
有可能:
为什么旋转不变神经网络不会用于流行的对象检测竞赛的获胜者?
machine-learning computer-vision neural-network deep-learning conv-neural-network
我使用TortoiseGit 1.8.3.我更改了其中一个文件:Makefile,但我不想在Git Commit中每次都提交给我.我将它添加到"删除并添加到忽略列表",但它没有帮助.如何在提交中提供我已更改的某些文件?
我想,Makefile在远程存储库中是只读的,我可以在本地编辑它,然后TortoiseGit不提供给我提交它.
我想要Git-bash:https://www.kernel.org/pub/software/scm/git/docs/git-update-index.html
众所周知:http://linux.die.net/man/3/malloc
默认情况下,Linux遵循乐观的内存分配策略.这意味着当malloc()返回非NULL时,无法保证内存确实可用.如果事实证明系统内存不足,那么一个或多个进程将被OOM杀手杀死.
和我们能够成功地通过使用分配1个拍字节VMA(虚拟存储区)的malloc(petabyte);:http://ideone.com/1yskmB
#include <stdio.h>
#include <stdlib.h>
int main(void) {
long long int petabyte = 1024LL * 1024LL * 1024LL * 1024LL * 1024LL; // 2^50
printf("petabyte %lld \n", petabyte);
volatile char *ptr = (volatile char *)malloc(petabyte);
printf("malloc() - success, ptr = %p \n", ptr);
ptr[petabyte - 1LL] = 10;
printf("ptr[petabyte - 1] = 10; - success \n");
printf("ptr[petabyte - 1] = %d \n", (int)(ptr[petabyte - 1LL]));
free((void*)ptr); // why the error is here? …Run Code Online (Sandbox Code Playgroud) 众所周知,std::atomic并且volatile是不同的事情.
有两个主要区别:
两个优化可以是std::atomic<int> a;,但不能是volatile int a;:
a = 1; a = 2;可以由编译器替换a = 2;a = 1; local = a;可以由编译器替换a = 1; local = 1;跨原子/易失性操作重新排序普通读/写:
volatile int a;任何易失性读/写操作都不能重新排序.但附近的普通读/写仍然可以在易失性读/写周围重新排序.std::atomic a;对基于用于原子操作的存储器屏障限制的附近普通读/写的重新排序a.load(std::memory_order_...);即volatile不介绍内存栅栏,但std::atomic可以做到.
正如文章中所描述的那样:
例如,std::atomic应该用于并发多线程程序(CPU-Core < - > CPU-Core),但volatile …
有一个使用boost :: asio的例子.
srv.run ();没有调用在线程中执行任务?int main()
{
boost::asio::io_service srv;
boost::asio::io_service::work work(srv);
boost::thread_group thr_grp;
thr_grp.create_thread(boost::bind(&boost::asio::io_service::run, &srv));
thr_grp.create_thread(boost::bind(&boost::asio::io_service::run, &srv));
srv.post(boost::bind(f1, 123));
srv.post(boost::bind(f1, 321));
//sync
srv.post(boost::bind(f2, 456));
srv.post(boost::bind(f2, 654));
//sync
srv.stop();
thr_grp.join();
}
Run Code Online (Sandbox Code Playgroud)
更新: 在没有io_service :: work的情况下使用io_service时,poll和run之间有什么区别?
int main()
{
boost::asio::io_service srv;
//boost::asio::io_service::work work(srv);
std::vector<boost::thread> thr_grp;
srv.post(boost::bind(f1, 123));
srv.post(boost::bind(f1, 321));
//sync
srv.post(boost::bind(f2, 456));
srv.post(boost::bind(f2, 654));
//sync
// What is the difference between the poll and run, when io_service without work?
thr_grp.emplace_back(boost::bind(&boost::asio::io_service::poll, &srv));// poll …Run Code Online (Sandbox Code Playgroud) 例如,在x86中是指令集到硬件加速AES.但是在x86中是否有任何加速SHA(SHA1/2/256/512)编码的指令,以及在x86上编码SHA的紧固库是什么?
如已知clock()可能显示小于或大于实时值 - 两种情况都显示在以下示例1和2中.
为了在C++ 11中高精度测量时间,我们可以使用:
std::chrono::high_resolution_clock::now(); - 保证高精度std::chrono::steady_clock::now(); - 保证实时测量clock(); - 保证高精度,但测量CPU周期而不是时间time(&t_start); - 不是高精度,而是实时测量1-例如:http://ideone.com/SudWTM
#include <stdio.h>
#include <time.h>
#include <thread>
#include <iostream>
#include <chrono>
int main(void) {
std::cout << "sleep(3) took: \n\n";
clock_t c_start, c_end;
time_t t_start, t_end;
std::chrono::high_resolution_clock::time_point h_start, h_end;
std::chrono::steady_clock::time_point steady_start, steady_end;
time(&t_start); // less precise than clock() but always get the real actual time
c_start = clock(); // clock() get only CPU-time, it can be more than …Run Code Online (Sandbox Code Playgroud) c++ ×4
x86 ×3
c ×2
c++11 ×2
assembly ×1
atomic ×1
boost-asio ×1
broadcast ×1
caching ×1
concurrency ×1
cryptography ×1
ip ×1
linux ×1
malloc ×1
mmap ×1
multicast ×1
performance ×1
sha ×1
tcp ×1
tlb ×1
tortoisegit ×1
udp ×1
volatile ×1
x86-64 ×1