相关疑难解决方法(0)

如何在.NET中设置处理器关系?

我们可以在C#应用程序中设置两个线程或两个任务以执行不同的处理器关联吗?

我已经读过SetThreadAffinityMask但没有找到应该如何使用的例子.

或者,TPL(任务并行库)有没有办法执行两个线程/高优先级的任务来使用100%的CPU?

.net c# multithreading

24
推荐指数
3
解决办法
4万
查看次数

在C++中使用SetProcessAffinityMask的示例?

我需要将各种c/c ++进程固定到计算机上的特定核心,以便仅在Windows 7 64位上进行基准测试.我的机器有16个核心(2x8).我试图通过从给定进程的代码中调用SetProcessAffinityMask来做到这一点.假设这是正确的我不确定如何使用此功能.我已经看过文档,但我无法理解它对第二个参数需要的描述.我也没有在搜索过的SO或Google上找到任何c/c ++用例.

问题1:以16核机器(2cpux8)和ac/c ++项目为例,请您提供一个说明性示例,说明如何使用SetProcessAffinityMask来挑选16个核心中的每一个,以及对我理解的第二个参数的解释?如何将核心ID从0-15转换为等效的位掩码?

问题2:如果有2x8内核而不是一个cpu上的16个内核,它会对使用产生影响吗?或者是相同的用法?

非常感谢.这是我到目前为止所拥有的.

#include <Windows.h>
#include <iostream>

using namespace std;

int main () {

    HANDLE process = GetCurrentProcess();

    DWORD_PTR processAffinityMask = 0; /// What to do here?

    BOOL success = SetProcessAffinityMask(process, processAffinityMask);

    cout << success << endl;

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

c++ windows

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

TBB在Matlab Mex文件中表现得很奇怪

编辑:< Matlab限制TBB但不限制OpenMP >我的问题与上面的问题不同,虽然使用相同的示例代码进行说明,但它并没有重复.在我的情况下,我在tbb初始化中指定了多个线程,而不是使用"deferred".另外我在谈论cx中TBB与TBM中TBB之间的奇怪行为.该问题的答案仅演示了在C++中运行TBB时的线程初始化,而不是在MEX中.


我正在尝试提升Matlab mex文件以提高性能.在mex中使用TBB时遇到的奇怪之处是TBB初始化不能按预期工作.

这个C++程序执行100%的cpu使用,并且在单独执行时有15个TBB线程:

main.cpp中

#include "tbb/parallel_for_each.h"
#include "tbb/task_scheduler_init.h"
#include <iostream>
#include <vector>
#include "mex.h"

struct mytask {
  mytask(size_t n)
    :_n(n)
  {}
  void operator()() {
    for (long i=0;i<10000000000L;++i) {}  // Deliberately run slow
    std::cerr << "[" << _n << "]";
  }
  size_t _n;
};

template <typename T> struct invoker {
  void operator()(T& it) const {it();}
};

void mexFunction(/* int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[] */) {

  tbb::task_scheduler_init init(15);  // 15 threads …
Run Code Online (Sandbox Code Playgroud)

matlab multithreading initialization tbb mex

5
推荐指数
1
解决办法
544
查看次数

标签 统计

multithreading ×2

.net ×1

c# ×1

c++ ×1

initialization ×1

matlab ×1

mex ×1

tbb ×1

windows ×1