I wanted to try Intel Integrated Performance Primitives (IPP) with OpenCV. I installed IPP with these steps:
Intel IPP can be downloaded from here. If you are using it for non-commercial purposes, you can get it for free through Intel’s Non-Commercial Software Development webpage. You need to register with an email address. You will be sent an email with the download link and a registration key.
Download the Intel IPP version you want, beware that its a huge download. I downloaded Intel IPP 7.1, which ships as a 777MB .tgz file.
Unzip the downloaded .tgz file. Run the install.sh file. You will be asked to enter your registration key.
The installer walks you through the steps of installing IPP. I was asked to install the gcc-multilib package, before I could proceed. So, I did:
1
$ sudo apt-get install gcc-multilib
By default, the IPP files are installed to /opt/intel/
Going by the steps given on the Intel website, you are supposed to run the ippvars.sh script, which is in the /opt/intel/ipp/bin directory. It sets the following environment variables: IPPROOT, LIBRARY_PATH and LD_LIBRARY_PATH. This script failed to work for me. So, I set those manually in my .bashrc:
1 2 3 4
# My .bashrc export IPPROOT=/opt/intel/composer_xe_2013.1.117/ipp export LIBRARY_PATH=$LIBRARY_PATH:/opt/intel/composer_xe_2013.1.117/ipp/lib/intel64:/opt/intel/composer_xe_2013.1.117/compiler/lib/intel64 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/composer_xe_2013.1.117/ipp/lib/intel64:/opt/intel/composer_xe_2013.1.117/compiler/lib/intel64
Iperf是美国伊利诺斯大学(University of Illinois)开发的一种开源的网络性能测试工具。 可以用来测试网络节点间(也包括回环)TCP或UDP连接的性能,包括带宽、抖动以及丢包率, 其中抖动和丢包率适应于UDP测试,而带宽测试适应于TCP和UDP。
TCP支持:
Measure bandwidth
Report MSS/MTU size and observed read sizes.
Support for TCP window size via socket buffers.
Multi-threaded if pthreads or Win32 threads are available. Client and server can have multiple simultaneous connections.
UDP支持:
Client can create UDP streams of specified bandwidth.
Measure packet loss
Measure delay jitter
Multicast capable
Multi-threaded if pthreads are available. Client and server can have multiple simultaneous connections.
所以,服务端通过-u来区分监听协议,而TCP协议不能计算时延与丢包率,而且不能指定发送带宽。
服务端
1
$ iperf3 -s
客户端
1 2
$ iperf3-c IP $ iperf3--client IP--bandwidth 900M--window 1M
需要使用TCP来测试带宽的时候,需要指定TCP的窗口大小,
窗口的大小即网络通道的容量 capacity = bandwidth x round-trip-time
其中round-trip-time可以通过ping来得到。
参数
1 2 3 4 5 6 7 8
-c --client 标记客户端 -i --interval 设定输出值间隔 -u --udp 使用传输协议为UDP -t --time 设定传输时间 -F --file 指定传输文件 -P --parallel 指定进程数 -b --bandwidth 指定带宽 -w --window 指定window大小,For TCP, this sets the TCP window size;For UDP it is just the buffer which data
You are in'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch>
HEAD is now at 99ada87... Merge pull request #89 from schacon/appendix-final
$ git checkout 2.0-beta-0.1 Previous HEAD position was 99ada87... Merge pull request #89 from schacon/appendix-final HEAD is now at df3f601... add atlas.json and cover image
Everybody is encouraged to help improve the quality of the code. You can help by reporting issues or even better fix issues yourself.
If you have a patch for CODE we use the github pull request system.
Also to keep the CODE code quality high we have written down some guidelines for contributing, see below.
General considerations
If you have problems or questions with/about git or github, first check [1]. If you modify any code, make sure the test suite still runs (make test). If it fails, fix the code or the relevant test. If you change a function/method signature, update the doxygen documentation accordingly. If you add a function or method, add a test for it add it to the doxygen documentation. The tested code coverage line count should increase, not decrease. Follow the google style code as much as possible [2].
Contribution procedure
Create a github account, setup SSH keys. Fork the CODE repository on github [3]. Create a branch and commit your changes to this branch. Push your branch to your github fork (not the original CODE, you probably don’t have permission). Issue a pull request [4]. When the pull request is reviewed and there are no problems it will be accepted. Merging a pull request should always happen by someone else. It can happen there are some mistakes here and there, we use the github commenting system to discuss these issues. If there is a problem with the commit, you need to fix it. You can commit to the same branch, the PR will be updated automatically.
General notes about Pull requests
Please create descriptive commits containing atomic changes. Use short commit messages (try 50 characters, max is 70 characters); longer commit messages are possible in the body of the commit message (separated from the subject by an empty line). See [5]. If you fix an existing github issue, reference it in the commit message body, e.g. ‘Fixes #41’. If your Pull request does not refer to an existing github issue, it is not necessary to create one (because github will present the PR just like an issue). You can rewrite the history of the commits in your branch using rebase, but don’t rewrite the history before the first commit of your new branch. We like to keep the history clean, and prevent a lot of ‘fix typo’ messages. If you rewrite your history of your branch you can force push those changes to your branch. The PR will be updated. See e.g. [6].