关于我的问题:
我有一台带有2个AMD Opteron 6272和64GB RAM插槽的电脑.
我在所有32个核心上运行一个多线程程序,与运行2个程序的情况相比,速度降低了15%,每个程序在一个16核心插槽上运行.
如何以两个程序的速度制作单程序版本?
更多细节:
我有大量的任务,并希望完全加载系统的所有32个核心.因此,我将任务分组打包1000个.这样的组需要大约120Mb的输入数据,并且需要大约10秒才能在一个核心上完成.为了使测试更加理想,我将这些组复制32次,并使用ITBB的parallel_for循环在32个核心之间分配任务.
我pthread_setaffinity_np用来确保系统不会让我的线程在核心之间跳转.并确保所有核心都得到了相应的使用.
我mlockall(MCL_FUTURE)用来确保系统不会让我的内存在套接字之间跳转.
所以代码看起来像这样:
void operator()(const blocked_range<size_t> &range) const
{
for(unsigned int i = range.begin(); i != range.end(); ++i){
pthread_t I = pthread_self();
int s;
cpu_set_t cpuset;
pthread_t thread = I;
CPU_ZERO(&cpuset);
CPU_SET(threadNumberToCpuMap[i], &cpuset);
s = pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset);
mlockall(MCL_FUTURE); // lock virtual memory to stay at physical address where it was allocated
TaskManager manager;
for (int j = 0; j < fNTasksPerThr; j++){
manager.SetData( &(InpData->fInput[j]) …Run Code Online (Sandbox Code Playgroud) 我正在使用端口在Mac OS上安装meld.
它已下载所有依赖项并告知一切正常:
Staging meld into destroot
Installing meld @1.5.3_0
Activating meld @1.5.3_0
Cleaning meld
Updating database of binaries: 100.0%
Scanning binaries for linking errors: 100.0%
No broken files found.
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时:
[18:28:24]~$ meld
Run Code Online (Sandbox Code Playgroud)
Traceback(最近一次调用最后一次):
File "/opt/local/bin/meld", line 75, in <module>
locale.setlocale(locale.LC_ALL,'')
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 539, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
Run Code Online (Sandbox Code Playgroud)
问题是什么以及如何处理?
我正在尝试遵循本手册,其中包含以下说明:
restart taskgated service by killing the current running taskgated process
Run Code Online (Sandbox Code Playgroud)
怎么做?我试图找到taskgated并只得到一些ttys007,但没有任务门控过程:
$ ps | grep taskgated
66942 ttys007 0:00.00 grep --exclude-dir=.svn taskgated
$lsof | grep taskgated
$
Run Code Online (Sandbox Code Playgroud) 我有一个任务来计算数组中的xor-sum字节:
X = char1 XOR char2 XOR char3 ... charN;
Run Code Online (Sandbox Code Playgroud)
我正在尝试并行化它,而是使用__m128.这应该加速因子4.另外,要重新检查算法,我使用int.这应该加速因子4.测试程序是100行,我不能让它更短,但它很简单:
#include "xmmintrin.h" // simulation of the SSE instruction
#include <ctime>
#include <iostream>
using namespace std;
#include <stdlib.h> // rand
const int NIter = 100;
const int N = 40000000; // matrix size. Has to be dividable by 4.
unsigned char str[N] __attribute__ ((aligned(16)));
template< typename T >
T Sum(const T* data, const int N)
{
T sum = 0;
for ( int i = 0; i < N; ++i …Run Code Online (Sandbox Code Playgroud) 你如何以正式和严格的方式定义(解释)什么是 C++ 中的引用类型?
我试着用谷歌搜索,并查看了 Stroustrup 的“C++ 编程语言”,但我在那里没有看到这个概念的定义。
我有一个剪辑路径,可以切割某种形状。问题是它是用绝对坐标设置的。如果我把 % 放在那里,它就会崩溃。如何缩放它使其适合画布边框并与画布一起拉伸?
.canvas {
width: 200px;
height: 200px;
background-color: black;
}
.clip {
width: 100%;
height: 100%;
background-color: orange;
content: "";
clip-path: path('M 100 50 A 75 75 0 0 1 0 50 A 75 75 0 0 1 100 50 z');
}Run Code Online (Sandbox Code Playgroud)
<div class="canvas"><div class="clip">sadf</div></div>Run Code Online (Sandbox Code Playgroud)
我的电脑配有2个Intel Xeon CPU和48 GB RAM.RAM分为CPU - 两部分24 GB + 24 GB.如何查看每个特定部件的使用量?
所以,我需要类似的东西htop,它显示每个核心的使用情况(参见本例),而不是内核而不是内核.或者指定使用哪个部分(地址)的内存以及哪些不是.
可能重复:
虚函数和性能C++
这是正确的,类成员函数比简单函数需要更多时间吗?如果使用继承和虚函数怎么办?
我试图将我的函数收集到一个简单的接口类中(只有成员函数,没有数据成员),看来我浪费时间.有办法解决吗?
PS我正在检查gcc和icc编译器并使用-O3选项.
如何在支持SSE的处理器上找出XMM寄存器的数量?
例如,在Intel X5550上.
我有g ++ 4.7.3编译器.我正在尝试按照优化标志描述http://gcc.gnu.org/onlinedocs/gcc-4.7.3/gcc/Optimize-Options.html并遇到下一个问题:
我有一个程序,它给出了-O2和-O3标志的不同时间.-O2比-O3快两倍.O2时间为8ms,O3时间为16ms.
所以我想了解到底有什么区别.在上面的链接中,我看到:
"O3优化更多.-O3打开-O2指定的所有优化,并打开-finline-functions,-funswitch-loops,-fpredictive-commoning,-fgcse-after-reload,-ftree-vectorize和-fipa -cp-clone选项."
所以我只需要-O2并添加所有描述的标志:
-O2 -finline-functions -funswitch-loops -fpredictive-commoning -fgcse-after-reload -ftree-vectorize -fipa-cp-clone
Run Code Online (Sandbox Code Playgroud)
时间是30ms.但是这组选项应该等同于-O3.为什么时间不同?我哪里做错了什么?
PS所有结果均可完美再现,精度为1ms.
我已经检查了选项
g++ -c -Q -Ox --help=optimizers
Run Code Online (Sandbox Code Playgroud)
并且看到O3还有一个额外的选项:-ftree-loop-distribute-patterns.但是当我添加选项集时:
-O2 -finline-functions -funswitch-loops -fpredictive-commoning -fgcse-after-reload -ftree-vectorize -fipa-cp-clone -ftree-loop-distribute-patterns
Run Code Online (Sandbox Code Playgroud)
速度仍然是30ms.