共 1,395 篇文章
共 6,621 篇文章及评论
- Association for Computing Machinery TechNews (ACM)
- Go Parallel! (Dr. Dobbs)
- HPCwire (Tabor Communications, Inc.)
- insideHPC (John West)
- Joe Duffy's Weblog (Microsoft)
- Microsoft Parallel Programming Development Center (Microsoft Germany)
- MultiCoreInfo.com
- scalability.org (Scalable Informatics)
- Software Dev Blog (Intel Germany)
- Soft Talk Blog (Intel United Kingdom)
- The Moth (Microsoft)
帖子位于 "英特尔® 软件网络 2.0" 分类 
英特尔团队正在致力于打造一个充满活力的在线社区。我们的方向已经确定,正在努力朝目标迈进。我们的方向正确吗?这个目标值得我们付诸努力吗?我们相信答案是肯定的。了解团队如何看待我们的进步、您的反馈,以及工作过程中的众多创意。
安装 Win 8 双系统 硬盘AHCI模式不兼容问题 解决方法
作者: Dawei Cheng 程大伟 (Intel) (43 篇文章) 日期: 五月 14, 2012 在 6:22 下午
评论 (1)
网上看到很多帖子说Win8双系统安装时候出现硬盘AHCI模式不兼容的问题,每次Win7和Win8切换时还得去BIOS切换硬盘IDE模式和AHCI模式,非常不方便。在此提供一个采用VHD方式的完美解决方案。 1. 安装硬件配置 安装机器:超级本(Ultrabook)Acer S3-951-2464G52iss 配置: 屏幕尺寸:13.3英寸 1366x768 CPU型号:Intel 酷睿i5 2467M CPU主频:1.6GHz 内存容量:4GB DDR3 1333MHz 硬盘容量:20GB+500GB SDD+5400转,SATA 显卡芯片:Intel ...
分类: Ultrabook, 移动技术, 英特尔® 软件网络 2.0
标签:AHCI, Win8, 双系统
移动Web应用程序开发 高性能JavaScript篇 (三) JavaScript 加载解析和部署
作者: Dawei Cheng 程大伟 (Intel) (43 篇文章) 日期: 五月 10, 2012 在 11:53 下午
评论 (0)
介绍 本系列博客将主要介绍如今大红大紫的移动Web应用程序开发最重要的三个工具:HTML5,JavaScript, CSS3。博文也分为三个大部分: 1. 众望所归的HTML5将主要介绍HTML5的前世今生,主要功能和API以及相关Demo,Demo的代码都可以在文章附件中下载到; 2. 高性能JavaScript将主要介绍如何让JavaScript更流畅,JavaScript debug和分析工具,可以说,没有JavaScript就不可能有互联网的今天,更不可能有移动互联网的明天,编写高性能的JavaScript至关重要; 3. 变化万千的CSS3将主要介绍如今异常强大的CSS3,结合HTML5编写动态的Web应用。熟练使用异常Fashion & Cool & 炫的CSS3将使Web应用增色不少。 本篇是高性能JavaScript介绍的第三篇,将给大家结合实例例子及分析工具介绍在加载JavaScript代码时,如何编程可以让Web应用或者网页更加高效。 相关文章 移动Web应用程序开发 ...
分类: 全国大学生软件创新大赛专栏, 移动技术, 英特尔® 软件网络 2.0, 软件技术学习及认证, 高校博客大奖赛
标签:HTML5, Javascript, web开发, 移动开发
多种方法过滤Inspector XE 2011结果
作者: Peter Wang (Intel) (41 篇文章) 日期: 五月 10, 2012 在 11:05 上午
评论 (0)
使用Intel® Inspector XE 2011帮助开发人员动态检查运行程序的内存访问错误和线程访问错误(甚至是潜在的错误)。有的用户认为,Inspector XE报的错误基本不会发生,不必担心;有的用户认为,报错在第三方软件,无源代码可修改,可以跳过;有的用户认为,只需知道增量错误,老的错误不要再报。 这一切都可使用工具本身的Suppression功能来完成。 情形1. 假设用户是测试人员,每次只要关心有无新的报错。 步骤1. 检查内存错误或线程错误,结果放在指定目录, 如 inspxe-cl –collect mi2 ...
分类: 并行计算, 英特尔® 软件网络 2.0
标签:Inspector XE Filter
Windows8中如何打包和安装一个本地的Metro类型应用
作者: Tao Peng (Intel) (1 篇文章) 日期: 五月 9, 2012 在 2:40 下午
评论 (2)
微软对Windows 8平台上的Metro应用控管的比较严格,表示此类应用只通过该公司的应用商店销售,也就是说Windows Store将是Metro应用的唯一发布渠道,这样做的好处是微软可以方便对应用进行扫描,防止恶意软件,同时商务上也方便提取利润。但是不利于开发者的分发。所以如果要在不上传到windows store的情况下,另外一台机器运行本台机器的应用改如何操作呢? Visual studio 2011提供了一个这样本地打包功能, 假设有一个很简单的win8 metro应用工程文件如下如下: 如果直接运行vs11的编译的可执行文件将得到如下错: 所以metro应用不能像desktop应用直接拷贝vs11编译出来的可执行文件到另外一台机器上运行。为此vs11提供了两种方式分发应用。 通过windows store 创建本地应用包 App ...
分类: Ultrabook, 移动技术, 英特尔® 软件网络 2.0
9步搞定Win8 MetroUI应用移植
作者: Yanqing Wang (Intel) (109 篇文章) 日期: 五月 8, 2012 在 3:29 下午
评论 (1)
Win8 Metro UI应用的开发是一件非常有趣的事情,特别是它使用了非常奇特的Metro UI设计。如果现有传统UI设计的应用,能够很方便的移植到Win8上,并且也能够充分利用Metro UI的魔力,那么将是非常有有意义的事情。本篇博客就是讲述,在一般情况下,如何将传统UI应用移植成Metro UI应用。 移植工作看上去比较的难,但是按照规律办事,很多事情仅仅是时间和耐心问题。网友不妨使用9步法来完成你的应用移植: 1. 下载并安装Windows 8 Consumer Preview,下载并安装Microsoft Visual ...
分类: Blog Challenge, Ultrabook, 其他, 图形和视觉计算, 英特尔® 软件网络 2.0, 软件技术学习及认证
C#多线程参数传递
作者: hlaite (1 篇文章) 日期: 五月 7, 2012 在 6:23 下午
评论 (0)
C#多线程参数传递 查看评论 在多线程或单线程任务中,让线程带传入参数一直是个麻烦的问题,通常有种方法就是以类,对像的变量来传参数,这种方法理解上很简单不过在某些场合使用很麻烦,这里就不介绍了,我们主要介绍一种.NET2.0中新增加的带参数运行线程的方法,示例程序如下: ParameterizedThreadStart ParStart = new ParameterizedThreadStart(ThreadMethod); Thread myThread = new Thread(ParStart); object o ...
分类: 博客征文专栏, 并行计算
显式算法和隐式算法的并行化比较
作者: xianjianqi (1 篇文章) 日期: 五月 7, 2012 在 6:22 下午
评论 (1)
1显式算法 显式算法基本假定为:在一微小时间段内,模型任意点速度、加速度为常数。ABAQU S软件 Explicit 模块应用中心差分法对运动方程进行显式时间积分, 运动方程的解为 ¨u(i)=M-1·(F(i)-I(i)) (1) 式中:M 为集中质量矩阵;F 为外荷载向量;I 为单元内力向量。 由于显式算法中不需要对刚度矩阵求逆,集中质量矩阵为对角矩阵,求逆简便,使显式算法并行计算数据传输量较小;且显式算法刚度矩阵大小与自由度数成线性关系,因此显式算法用于自由度数庞大的数值计算时具有很大优势。 2 隐式算法 隐式算法含义为:t+Δt时刻状态不仅与t时刻状态有关,且与t+Δt时刻某些量有关。ABAQUS软件Standard 应用Hilber-Hughes-Taylor ...
分类: 博客征文专栏, 并行计算
Android 多线程编程
作者: blogercn (1 篇文章) 日期: 五月 7, 2012 在 6:21 下午
评论 (2)
android的应用程序支持多线程,多线程编程为我们充分利用系统资源提供了便利,同时也为设计复杂UI和耗时操作提供了途径,提升了安卓用户的使用体验。Android的多线程和JAVA没有多大变化,唯一的变化大概在于无法直接使用CANVAS修改屏幕元素,当然安卓为我们提供了surfaceview类来实现多线程中通过画布canvas修改屏幕。这为设计UI和开发游戏带来了方便。因此,研究和使用多线程编程,对我们深入学习安卓编程有着十分重要的作用。 线程的方法比较多,常用的有: start(); run(); sleep(); stop(); destroy(); join(); suspend(); resume(); yield(); wait(); notify(); 线程启动一定要使用start方法,线程操作使用run方法,线程休眠使用sleep方法,线程停止使用stop,线程销毁使用destroy方法,线程同步使用JOIN方法,前面三种最常用,一般来说这三种就可以满足大部分线程使用需求,run结束时线程自动死亡,stop,destroy虽然也能停止线程,但不推荐使用,,前者会产生异常,后者是强制终止,不会释放锁,一般会在RUN里设置一个状态信号来等其自动结束,这里使用volatile boolean bThreadRun。后面是暂停,继续,挂起,由于会产生死锁问题,很少使用。大部分情况会使用wait和notify替代; 这里我使用一个线程来计算变量并更新窗口标题。主要代码如下:使用eclipse创建一个项目。为Activity添加onStart,onPause, onStop等方法,Activity是我们最常使用的一个类,也是android的核心类,为应用程序管理并显示一个屏幕,开发的人不应该对其陌生。Activity活动主要的方法有,onCreate,onStart,onStop,onPause,onResume, onRestart,onDestroy,onRestoreInstanceState,onSaveInstanceState,一般的执行顺序是,onCreate,onStart,onResume,当窗口不是最顶层时,执行onPause,onstop,为顶层时,执行onRestart,onResume,一直循环,直到onDestroy.如果保存窗口,重载onSaveInstanceState,并在进入时重载onRestoreInstanceState。这里我在Activity的方法onStart里创建线程: 01.MyThread myThread = new MyThread(); 02. myThread.start(); 在下面添加MyThread的实现代码: 01.public ...
分类: Android 开发, 博客征文专栏, 开放源代码
关于core_uses_pid 标志对多线程程序无用的调查
作者: cobps (1 篇文章) 日期: 五月 7, 2012 在 6:20 下午
评论 (0)
一、 案例的起因 在工作的过程中,发现在RHEL5.6系统下,运行进程,一旦应用线程,出core后,总会带着进程ID。即使在系统中设置core_uses_pid=0,也是不行的。 这样的话如果应用系统出现core文件,那么会是悲剧性的。磁盘空间被占满等情形都会出现的。 如何让我们的core_file的名字保持唯一或者有限个数呢? 二、资料的查询与分析 在网上“https://bugzilla.kernel.org”发现了这个bug的存在,简要信息如下: Bug 6312 - core_uses_pid=0 not always honored Status: REJECTED WILL_NOT_FIX Reported: 2006-03-30 15:10 ...
分类: 博客征文专栏, 并行计算
OpenMP 概述
作者: xwebsite (2 篇文章) 日期: 五月 7, 2012 在 6:19 下午
评论 (0)
根据计算平台和规模的不同,并行计算可以分为两种:第一种是基于单一计算机系统的多核处理器或多处理器进行多线程并行计算,采用共享存储的方式,主要的标准有OpenMP,如下左图所示;第二种就是基于多台计算机组件的集群(Cluster)计算系统进行并行计算,采用消息传递方式,主要的标准有MPI,如下右图所示。本文将主要介绍多线程方式的并行计算。 首先来了解一下单核处理器上程序运行方式,系统中包括操作系统和应用程序等都以进程(Process)形式存在,当程序结束时这个进程也就跟着消亡。每个进程中至少包含一个线程(Thread),一个线程用于完成程序的某个功能,一个程序中一般都包含多个线程,所有的这些线程在系统中都成队列形式。对于一个核心的处理器来说,某一时刻,它只能处理一个线程。这个线程处理之后就处理下一个线程,依次循环处理。由于CPU的主频都非常高,如Intel的奔四可到3GHz,所以每个线程处理的时间都非常短,以致我们并不会察觉。但是它们实际上是以串行的形式在CPU上运行。所以在物理上,对于单核处理器来说,是无法实现物理上的并行。在单核处理器上,即使使用多线程来分发程序,但实际上还是以单线程的形式在运行。 如果将执行核增加一个,那么在同一时刻,将会有两个线程在运行,这样将会在一定程度上提供计算机的运行速度,但对于某些单线程的程序过程来说,实际情况并没用得到改善。至于系统中的线程怎么分发到两个核上,这就是操作系统的任务了。很多应用程序都不止包含一个线程,一般都包含有多个线程,如用Spy++工具查看系统所有的线程,如下图所示: 这多个线程如果在一个执行核上运行,它们呈一个队列来执行。如果在两个执行核上运行的话,它们将呈两队来执行。如果某个程序中包括有四个线程,而这四个线程又分别在两个核上执行,那么执行该程序将节约一半的时间。但如果该程序是单线程,无论是单核还是多核,运行该程序所需的时间都将是一样的。所以,以前有人在某单线程程序中将一些程序分开放在两个线程中分别执行,效率得到了提高,节约将近一倍的时间,其原因就在此。 OpenMP提供的就是一个多线程编程标准,现在.Net平台也提供了并行编程的System.Threading.Tasks.Parallel类,可以使多个线程能够同时执行。如果直接采用多个线程去实现并行,需要经常处理线程或线程池,采用这些多线程编程标准可以简化并行开发,也不必直接处理线程或线程池。 在C/C++中采用OpenMP指令的格式如下: #pragma omp … 关键字omp表示这个指令是OpenMP指令,所以它会被OpenMP编译器处理,其他非OpenMP编译器将不会理会。由于OpenMP指令都预先定义了,所以很容易被识别出来。这样程序员编写的并行代码就可以在不同的平台上运行。如果平台不支持并行,也会直接跳过并行指令把程序当作串行程序来运行。 OpenMP提供了两种控制并行的结构:第一种就是提供了一个用于创建多线程程序的指令,这些线程相互之间是并行的,这个指令实际上就是创建了一些线程去执行并形体中的程序;第二种就是对已存在的并行结构进行分工的指令,像循环中的do指令(Fortran)或for(C/C ++)。 一个OpenMp程序通常都是从一个单线程程序开始,我们通常把这个单线程程序叫做主线程(Master Thread),在主线程的程序中应该要包含整个程序中需要使用的数据变量,包括全局变量。当主线程遇到并行结构时,将会创建新的线程来执行并形体中的程序。每个线程都会独立的执行并形体中的程序,相互之间不会影响,但是它们之间可以共用主线程里面定义的全局变量。在并行过程中具体哪些变量是共享的、哪些变量是线程私有的,可以通过条件clauses(…)对每个变量进行指定,这些条件用于并行线程中决定哪些可用。一个变量可以有三种类型,即shared、private和reduction。其中shared表示在并行结构中将有一个单独的内存位置来存放这个变量,所有的并行线程都可以使用这个变量,所有的并行线程将共享这块内存地址,因此,线程间的通信通过普通的读写操作方式就可以实现,当然,这个变量也可以随意被任何一个线程修改。相反,private变量将会有多个内存地址,每个线程里面一个。这个变量的所有读写操作都只限于本线程,其他线程是无法访问本线程中该变量的内存地址的。所以,一般都用于定义临时变量。reduction就有点难理解了,它具有shared和private的特征,就像它的字面意思一样,reduction属性用于需要下降的变量(指值的减少)。Reduction操作在很多程序中都非常重要,最常见的例子就是计算并行结构中最后的临时局部变量的总和。除了这三种之外,OpenMP还提供了许多其他数据属性参数。 多个OpenMP线程之间可以采用共享变量(shared)通过简单的读写操作来进行通信,但是这需要在多个线程中协调一致。如果协调不一致,可能会出现多个线程同时修改这个变量,或者这个线程正在读而那个线程又正在写,这些潜在的冲突都将导致数据的错误,因此,在多线程中必须避免这种情况,必须明确地协调好。在并行程序中设置同步(synchronization)就可以协调这些执行的多线程。最常见的两种情况就是相互排斥和事件同步,互斥就是在这段代码中通过一个线程不让其他线程读取这个共享变量。当很多线程正在修改同一个变量时,为了确保这个变量值是对的,在修改之前就需要进行互斥存取。OpenMP中提供了一个critical指标来表示互斥。事件同步常用于表示多线程间的事件,最简单的形式就是barrier阻塞。在并行程序中barrier指标表示在某点处每个线程都在这等待其他的线程也运行到这里,一旦所有的线程都达到这个点后,它们又继续执行。就像跑步的时候,有的人跑得快,有的人跑得慢,在跑了两圈的时候,所有人都在这里等待最后一个人,当最后一个人也跑到两圈的时候,然后大家又接着继续跑,这个过程就称为barrier阻塞。barrier指令能保证所有线程都执行了在barrier之前的代码。 一个典型的并行程序结构如下图所示: OpenMP API是一套非常简便的共享存储并行计算应用程序接口,它是一个多线程、共享存储的模型。线程间通过共享的变量进行交换,并可以通过线程同步来防止数据冲突,当然,同步是需要耗费很多的资源的,所以尽量减少同步的需要。
