共 99 篇文章
共 245 篇文章及评论
提到使用OpenMP实现多线程编程,相对比叫便捷,很多兄弟一定已经很熟悉了。一般的用法都是把OpenMP用在for等循环上,论坛上好多OpenMP在这上的用法也有好多的解释了,我也不班门弄斧了。 但for等循环如果要用在OpenMP上,一般的限制还是比较多的,比如循环不同序列间的数据或逻辑依赖不能过强,必须可以将其分解为或转化为互相独立的关系。此外,有时候虽然看是做到互相独立,但代价很大,比如加了很多的锁,多线程的效果不是很好。这就导致了对OpenMP的使用受到了比较大的限制。一般以我的经验,当for循环处理大的矩阵、数组等时,用OpenMP比较合适,但如果涉及到了很多的逻辑判断,就不是很理想。 从上面可以看出,for等循环不总是适合使用OpenMP。但是不是除了循环,OpenMP就没有用武之地了呢?当然不是,还可以用OpenMP的section,如下图说示,原先线性执行的程序被分成了并行的三段: #pragma omp parallel sections { #pragma omp section { Function1 } #pragma omp ...
虚拟化作为一项技术,可以使计算机物理资源得以在一台机器上的多个虚拟分区上抽取、配置、共享和利用。虚拟化一般通过硬件手段、软件手段、或二者的配合来完成。每个虚拟分区包含它自己的操作系统环境。虚拟化可以通过各种技术来实现,对于用户而言,理想的虚拟化解决方案应该提供不同虚拟机之间的彻底的安全的隔离,并为每个虚拟机提供卓越的性能,从而确保整个平台的出色实用性、可靠性和安全性。 虚拟化本身并不是一个很新的概念,早在几十年前就已经出现了。那么英特尔公司为什么要发展自己的虚拟化技术,英特尔® 虚拟化技术又有什么技术特点呢?这正是本文所要介绍的。 英特尔® 虚拟化技术是一组基于芯片级别的技术,进而改进纯软件虚拟化解决方案。这些虚拟化解决方案使多个操作系统和相关应用能够同时在各分区内运行。因此,一个物理系统能够作为一系列逻辑虚拟系统运行。英特尔® 虚拟化技术通过增强虚拟化解决方案的可靠性、可支持性、安全性和灵活性,可改进现有纯软件虚拟化解决方案。这些芯片进步代表着技术的巨大进步,具体表现在大大减少了软件虚拟机的相关开销,以及支持了更广泛的操作系统。 以往纯软件虚拟化解决方案为IT 部门和最终用户提供了显著的优势,但它们存在着很多的限制。下面举两个例子来说明。上层模拟的Guest OS很多情况下是通过虚拟机监视器(VMM)来与硬件进行通信,再由VMM 来决定其对系统上所有虚拟机的访问。而这里请注意传统的VMM在操作系统看来也是一个应用程序,是运行在RING 3上的,而不是RING 0。这就导致了VMM是不能执行一些特权指令的,而我们知道Guest OS是一定会涉及到特权指令的,所以VMM对Guest ...