草庐IT

multicore

全部标签

c++ - 以编程方式检查应用程序正在使用的核心数

有没有办法以编程方式检查C++应用程序使用了多少个内核?我正在寻找Windows/Linux解决方案,但当然平台独立解决方案会更可取,我想它要求太多了。 最佳答案 无法知道应用程序使用了多少个核心。但是您可以根据它拥有的线程数猜测它。对于窗口:您将要使用ToolHelpLibrary正如微软所说。更具体地说,您需要查看TraversingtheThreadList。可以获取应用程序线程数的示例。Microsoft真的很喜欢把他们的例子做得尽可能丑陋,所以这是我想出的一个美化版本,你给它一个PID,它会列出所有与之相关的线程:#inc

c++ - 可以像在 erlang 中那样在 C 中编写并发可扩展的可靠程序吗?

一个理论问题。阅读Armstrong的“erlang编程”一书后,我想知道以下问题:学习Erlang需要一些时间。更不用说掌握它了。它在很多方面确实有根本的不同。所以我的问题是:是否有可能编写“像erlang一样”或使用一些“像erlang一样的框架”,前提是你注意不要创建有副作用的函数,你可以像在Erlang中一样创建可扩展的可靠应用程序?也许使用相同的消息发送,加载“迷你流程”范例。这样做的好处是不会将您积累的所有C/C++知识扔到一边。对此有任何想法都是受欢迎的 最佳答案 是,这是可能的,但是...这个问题的最佳答案可能是Ro

java - 如何为每个处理器核心分配任务?

我正在四核安卓手机上执行基本的加密/解密。目前每个文件的加密时间为1.45秒。200个文件大约需要5分钟。如果我使用所有4个内核,我可以将性能提高4倍。for(i=0;i将是一个简化的伪代码,我现在正在使用。如何在androidjava编程中并行调用所有4个处理器内核的加密函数? 最佳答案 使用ExecutorService并行执行任务:http://developer.android.com/reference/java/util/concurrent/ExecutorService.html像这样:ExecutorService

android - 提高 Android OpenCV 项目的性能

我正在开发基于安卓手机的盲人货币识别系统。为此,我使用OpenCV作为图像处理框架。我实现了一个方形检测模块,它运行良好。手机摄像头每秒释放30帧,因此处理速度非常慢。我使用精明的边缘检测算法(用于方形检测)。输出结果绘制在AndroidSurfaceView中。有什么建议可以加快速度吗?用GLSurfaceView替换SurfaceView怎么样?它会提高速度吗?我的设备有双核处理器。多核编程怎么样??(forandroid)我的设备是三星GalaxyS2。 最佳答案 很难说OpenGL是否会大大提高速度(是的,OpenGL肯定更

android - 多核安卓

我已经运行简单的并行算法绘制mandelbrot集来测试Nexus7(Tegra3、4+1内核)上的并行计算。运行几次后,串行时间为1.5秒,并行时间为1.0秒,但并行和串行在1.3秒时非常接近。正方形是700x700像素,我用的mandelbrot代码来自http://rosettacode.org/wiki/Mandelbrot_set#Java并行实现像这样运行mandelbrot的两半publicvoidmandelbrotParallel(){Threadt1=newThread(newRunnable(){publicvoidrun(){mandelbrotOne();}}

c++ - 来自 std::chrono 的时钟在不同的内核上可以不同吗

我喜欢比较来自std::chrono::high_resolution_clock的time_point,它们是在处理器不同内核上运行的线程中测量的。是否会有显着差异,例如滞后或更快/更慢的时钟?标准规定了什么? 最佳答案 std时钟与处理器无关,事实上,大多数线程也没有。来自同一线程的两个时钟测量很可能在不同的内核上进行。关于与测量相关的超前和滞后——这与任何其他指令的执行没有什么不同;通常的管道等可能会产生影响,但我认为这不是有害的。如果它可能有害,您可能需要考虑其他工具来完成这项工作,例如一些专门的平台计时工具或某种特定于CP

c++ - InterlockedIncrement 用法

在阅读函数InterlockedIncrement时我看到了传递的变量必须在32位边界上对齐的注释。通常我见过这样使用InterlockedIncrement的代码:classA{public:A();voidf();private:volatilelongm_count;};A::A():m_count(0){}voidA::f(){::InterlockedIncrement(&m_count);}以上代码在多处理器系统中能否正常工作,还是我应该对此多加注意? 最佳答案 这取决于您的编译器设置。但是,默认情况下,八个字节及以下的

c++ - Valgrind 是否/可以使用多个处理器?

有没有办法让valgrind使用多个处理器?我正在使用valgrind的callgrind进行一些瓶颈分析,并注意到我的应用程序中的资源使用行为与在valgrind/callgrind之外运行时明显不同。在valgrind外部运行时,它会占用多个处理器,但在valgrind内部运行时只使用一个。这让我担心我的瓶颈会出现在不同的地方,从而使我的分析无效。 最佳答案 根据Valgrind文档,它们不支持多处理器:Themainthingtopointoutwithrespecttothreadedprogramsisthatyourpr

windows - 有没有办法查看进程使用的每个内核的 CPU 使用率?

我知道在perfmon中您可以看到每个内核的利用率,以及特定进程使用的CPU总量。但是,我似乎无法找到一种方法来查看进程使用的CPU数量(按内核分割)。是否有查看此信息的内置方式?有没有一种编程方式可以看到这个?(首选C#)我是否通过提出这个问题来证明对Windows(Vista)如何处理核心使用和上下文切换的误解?编辑:更清楚地说明我想了解的内容。我的进程只使用了30-40%的总CPU(在四核上)是因为它没有足够的多线程来利用更多,还是因为它太受I/O限制并且磁盘访问是瓶颈?那么是不是根本就没有办法做到这一点呢?(除了确保计算机上没有其他CPU事件之外)

windows - 使用不同数量的多核 worker 时的不同行为

我正在研究我的程序(尝试对一些部分进行多核处理),我注意到“CPU历史记录”看起来有点不同,这取决于我启动了多少个worker。2-4个worker似乎产生了一个“稳定”的工作流程,但是固定5-8个worker会产生不稳定的行为(从零到最大,见图片)。我应该指出,所有运行都以“平滑”的最大容量开始(例如,只有25%的2个内核),并且仅在一分钟左右后才开始表现出不稳定的行为。这是怎么回事?我有4核处理器,你认为这种行为可能与这个事实有关吗?我希望你能看到这些照片。2名worker3名worker4个worker5名worker6名worker7个worker8名worker