如何强制编译器只使用一个内核
How to force compiler to use one core only?
我注意到,MingW和GCC编译器使用多个内核(如果可用的话(。
例如:
for (long i = 0; i < 100000; ++i)
{
some_complicated_calculation();
}
如果我打开一个任务管理器/系统监视器,我可以看到使用了多个(对我来说:2个(核心。
编译器如何决定哪些代码可以在多个内核上运行
如何强制编译器只使用一个核心?
编辑
我的代码不包含任何多线程代码
我很好奇为什么我的程序(而不是编译器(使用多个内核。
只要some_complicated_calculation((内部没有任何特殊内容,它就使用单个内核来创建线程或使用async(C++11(或类似功能。
您在任务管理器上看到的活动不能与迭代的可执行文件相关。它可能与您正在进行的工作完全无关。
看起来GNU软件无线电中提供的thread_bind_to_processor就是您想要的:http://gnuradio.org/doc/doxygen/namespacegr_1_1thread.html#aab5195edcd94db5c71ecbfef9d578fb7
相关文章:
- C++ 异步仅在一个内核上运行?
- 在CUDA内核中传递一个常数整数
- 如何开发仅使用一个内核的程序
- 是否可以在同一设备缓冲区上一个接一个地调用 OpenCL 内核?
- 异步是否总是在C++中使用另一个线程/内核/进程
- 为什么在循环中重复一个内核会使CUDA代码明显较慢
- 只有一个线程执行 CUDA 内核
- 为什么这C++代码没有达到一个内核的 100% 使用率?
- 如何使用多个 SVM 分类器(每个分类器都有一个特定的内核)作为"one vs rest classification"方案?
- 想要用cuda内核执行一个循环直到用户取消
- 一个包含多个OpenCL内核的程序相对于多个分别包含一个内核的程序的优势
- CUDA 如何欺骗内核认为它在另一个线程中?
- JNI 中的 Java 线程C++仅使用一个内核的环境.Arm 处理器和 Ubuntu
- 如何使用linux系统调用编写一个c++程序,该调用提供有关可用内存、已用内存和内核版本的输出
- Cuda:同步n个内核函数中的一个
- Opengl和opencl在一个共享上下文中只能使用一个内核
- 是否有可能在CUDA的另一个内核函数中调用一个内核函数?
- 从一个内核启动到另一个内核启动的共享内存持久化
- 编写一个CUDA内核来替换一个等效的cpu函数
- 如何强制编译器只使用一个内核