Graphite Simulator安装配置方法

2024-01-12 00:32

本文主要是介绍Graphite Simulator安装配置方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Graphite Simulator是由MIT的Carbon研究组开发的一款并行分布式全系统模拟器,该小组隶属于原RAW Chip设计团队,并与Tilera公司关系紧密。Graphite通过对一系列计算机体系结构领域常用模拟器的集成,为研究者提供了一个全系统模拟环境。Graphite可模拟的部分包括:Memory Hierarchy、Cache、Directory、NOC等,并使用orion计算动态功耗。Graphite目前不支持core详细模拟,而是采用PIN来执行测试程序,并用截获的指令流来驱动整个模拟器。这种方式虽然限制了模拟器的exploration space,但是可以使得更多的真实负载可以被用于整个系统的测试。(在今年5月的IPDPS2012上,我遇到了MIT的George Kurian,他说目前Carbon正在考虑用一个详细的core模拟模块替换PIN,以使得Graphite可以满足未来Tilera的设计需要。微笑)最为重要的是,该模拟器构建了一个统一的模拟器支持层,可实现并行模拟和分布式模拟。通过这种方式,研究者可以将模拟任务分不到若干计算机上进行,大大缩短了模拟实验的时间(这方面的一个反例就是目前常用的Simics-GEMS,进行一次16核的众核芯片模拟实验通常要1-2个星期)。在今年的IPDPS2012会议上,该研究组基于这个模拟器发表了一篇关于千核众核处理器的片上光互联的研究论文[1]。

Graphite Simulator的出现为研究更大规模的众核处理器提供了支持,使得研究人员有机会通过实验了解一个大型处理器芯片内各部分的变化对于整体性能的影响。自2009年该模拟器推出以来,已经有越来越多的研究人员开始关注这个工具,并将该工具引入到自己的研究工作中。Graphite Simulator的主页地址是:http://groups.csail.mit.edu/carbon/?page_id=111

我的下一步研究工作也将使用Graphite,因此我用了一段时间来配置这个工具。按照最初的想法,我希望能在CentOS 5.3 64位版上来运行这个工具,但是由于CentOS 5.3将部分futex由用户态改为了核心态,使得Graphite不能正常运行,所以这个移植工作暂时搁置了,以后有时间再做吧。本文介绍一下最基本的Graphite配置方法。

1.      运行环境:

操作系统:Debian 5.0lenny64位版

编译器:GCC 4.3.3 / GCC 4.4.7

其他库:boost 1.38

 

说明:目前Graphite只能在Debian 56上运行。在CentOS 5.3运行时,由于centos<linux/futex.h>中的部分系统调用由用户态改为核心态,导致graphite在编译和运行时会出现异常。另外,由于GCC 4.5以上版本将部分C++的语言特性做了修改,导致graphite在编译时会出现异常。

 

2.      手动编译GCC

(1)      下载最新版GMPMPFRMPC

(2)      依次编译安装这三个库,注意,由于这三个库有前后依赖关系,所以顺序不能乱

a)        将这三个库分别解压到GMPMPFRMPC目录

这篇关于Graphite Simulator安装配置方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/596220

相关文章

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

Java中Object类的常用方法小结

《Java中Object类的常用方法小结》JavaObject类是所有类的父类,位于java.lang包中,本文为大家整理了一些Object类的常用方法,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. public boolean equals(Object obj)2. public int ha

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element