зеркало из https://github.com/microsoft/X-Mem.git
Rebuild on Linux
This commit is contained in:
Родитель
30bf567150
Коммит
a294cafa9c
2
Doxyfile
2
Doxyfile
|
@ -38,7 +38,7 @@ PROJECT_NAME = X-Mem
|
|||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 2.2.0
|
||||
PROJECT_NUMBER = 2.2.1
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
|
26
README.md
26
README.md
|
@ -1,7 +1,7 @@
|
|||
README
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
|
||||
X-Mem: Extensible Memory Benchmarking Tool v2.2.0
|
||||
X-Mem: Extensible Memory Benchmarking Tool v2.2.1
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
|
||||
The flexible open-source research tool for characterizing memory hierarchy throughput, latency, and power.
|
||||
|
@ -10,7 +10,7 @@ Originally authored by Mark Gottscho (Email: <mgottscho@ucla.edu>) as a Summer 2
|
|||
|
||||
This project is under active development. Stay tuned for more updates.
|
||||
|
||||
PROJECT REVISION DATE: April 24, 2015.
|
||||
PROJECT REVISION DATE: April 27, 2015.
|
||||
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
LICENSE
|
||||
|
@ -54,9 +54,11 @@ Extensibility: Modularity via C++ object-oriented principles
|
|||
- Supports rapid addition of new benchmark kernel routines
|
||||
- Example: stream triad algorithm, impact of false sharing, etc. are possible with minor changes
|
||||
|
||||
Cross-platform: Currently implemented for Windows and GNU/Linux on x86, x86-64, and x86-64 with AVX extensions CPUs
|
||||
Cross-platform: Currently implemented for two OSes and architecture families
|
||||
- Windows: Intel x86 (32-bit), x86-64, and x86-64 with AVX extensions
|
||||
- GNU/Linux: Intel x86 (32-bit), x86-64, and x86-64 with AVX extensions, ARM (32-bit), ARM (32-bit) with NEON, ARMv8 (64-bit)
|
||||
- Designed to allow straightforward porting to other operating systems and ISAs
|
||||
- ARM port under development (currently implemented for GNU/Linux for 32-bit and 64-bit ARM)
|
||||
- ARM on Windows currently not possible due to some incompatibilites and/or lack of support. This may be resolved in the future.
|
||||
|
||||
Memory throughput:
|
||||
- Accurate measurement of sustained memory throughput to all levels of cache and memory
|
||||
|
@ -91,14 +93,14 @@ There are a few runtime prerequisites in order for the software to run correctly
|
|||
|
||||
HARDWARE:
|
||||
|
||||
- Intel x86, x86-64, or x86-64 with AVX CPU. AMD CPUs should also work although this has not been tested.
|
||||
- ARM Cortex-A series processors with VFP and NEON extensions. Specifically tested on ARM Cortex A9 (32-bit) which is ARMv7. 64-bit builds for ARMv8-A should also work but have not been tested.
|
||||
- Intel x86, x86-64, or x86-64 with AVX CPU. AMD CPUs should also work although this has not been tested!
|
||||
- ARM Cortex-A series processors with VFP and NEON extensions. Specifically tested on ARM Cortex A9 (32-bit) which is ARMv7. 64-bit builds for ARMv8-A should also work but have not been tested. GNU/Linux builds only. You can attempt Windows, but I have issues linking the 32-bit version and compiling the NEON version. Also, as far as I can see there is no Windows support for ARMv8 at all.
|
||||
|
||||
WINDOWS:
|
||||
|
||||
- Microsoft Windows 8.0 64-bit or later, Server 2012 or later.
|
||||
- Microsoft Visual C++ 2013 Redistributables (64-bit)
|
||||
- COMING SOON: Windows 32-bit
|
||||
- Microsoft Visual C++ 2013 Redistributables (32-bit) -- for x86 (32-bit) builds
|
||||
- Microsoft Visual C++ 2013 Redistributables (64-bit) -- for x86-64 and x86-64 with AVX builds
|
||||
- You MAY need Administrator privileges, in order to:
|
||||
- Use large pages, if the --large_pages option is selected (see USAGE, below)
|
||||
- The first time you use --large_pages on a given Windows machine, you may need to ensure that your Windows user account has the necessary rights to allow lockable memory pages. To do this on Windows 8, run gpedit.msc --> Local Computer Policy --> Computer Configuration --> Windows Settings --> Security Settings --> Local Policies --> User Rights Assignment --> Add your username to "Lock pages in memory". Then log out and then log back in.
|
||||
|
@ -107,7 +109,7 @@ WINDOWS:
|
|||
|
||||
GNU/LINUX:
|
||||
|
||||
- GNU utilities with support for C++11. Tested with gcc 4.8.2 on Ubuntu 14.04 LTS for x86-64 CPU with AVX.
|
||||
- GNU utilities with support for C++11. Tested with gcc 4.8.2 on Ubuntu 14.04 LTS for x86 (32-bit), x86-64, and x86-64 with AVX on Intel Sandy Bridge, Ivy Bridge, and Haswell families.
|
||||
- libhugetlbfs. You can obtain it at <http://libhugetlbfs.sourceforge.net>. On Ubuntu systems, you can install using "sudo apt-get install libhugetlbfs0".
|
||||
- Potentially, administrator privileges, if you plan to use the --large_pages option.
|
||||
- During runtime, if the --large_pages option is selected, you may need to first manually ensure that large pages are available from the OS. This can be done by running "hugeadm --pool-list". It is recommended to set minimum pool to 1GB (in order to measure DRAM effectively). If needed, this can be done by running "hugeadm --pool-pages-min 2MB:512". Alternatively, run the linux_setup_runtime_hugetlbfs.sh script that is provided with X-Mem.
|
||||
|
@ -116,7 +118,7 @@ GNU/LINUX:
|
|||
INSTALLATION
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
|
||||
The only file that is needed to run on Windows is xmem-win.exe, and xmem-linux on GNU/Linux. It has no other dependencies aside from the system prerequisites listed above.
|
||||
The only file that is needed to run on Windows is the respective executable xmem-win-<ARCH>.exe on Windows, and xmem-linux-<ARCH> on GNU/Linux. It has no other dependencies aside from the pre-installed system prerequisites listed above.
|
||||
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
USAGE
|
||||
|
@ -311,7 +313,9 @@ WINDOWS:
|
|||
|
||||
GNU/LINUX:
|
||||
|
||||
- gcc with support for the C++11 standard. Tested with gcc version 4.8.2 on Ubuntu 14.04 LTS for x86-64 with AVX.
|
||||
- bash shell. Other shells could work but are untested.
|
||||
- gcc with support for the C++11 standard. Tested with gcc version 4.8.2 on Ubuntu 14.04 LTS for x86 (32-bit), x86-64, x86-64 with AVX builds.
|
||||
- gcc cross-compiler for ARM targets (assumed build on x86-64 Ubuntu host).
|
||||
- Python 2.7. You can obtain it at <http://www.python.org>. On Ubuntu systems, you can install using "sudo apt-get install python2.7". You may need some other Python 2.7 packages as well.
|
||||
- SCons build system. You can obtain it at <http://www.scons.org>. On Ubuntu systems, you can install using "sudo apt-get install scons". Build tested with SCons 2.3.4.
|
||||
- Kernel support for large (huge) pages. This support can be verified on your Linux installation by running "grep hugetlbfs /proc/filesystems". If you do not have huge page support in your kernel, you can build a kernel with the appropriate options switched on: "CONFIG_HUGETLB_PAGE" and "CONFIG_HUGETLBFS".
|
||||
|
|
Двоичные данные
X-Mem_Developer_Manual.pdf
Двоичные данные
X-Mem_Developer_Manual.pdf
Двоичный файл не отображается.
Двоичные данные
bin/xmem-linux-arm
Двоичные данные
bin/xmem-linux-arm
Двоичный файл не отображается.
Двоичные данные
bin/xmem-linux-arm64
Двоичные данные
bin/xmem-linux-arm64
Двоичный файл не отображается.
Двоичные данные
bin/xmem-linux-arm_neon
Двоичные данные
bin/xmem-linux-arm_neon
Двоичный файл не отображается.
Двоичные данные
bin/xmem-linux-x64
Двоичные данные
bin/xmem-linux-x64
Двоичный файл не отображается.
Двоичные данные
bin/xmem-linux-x64_avx
Двоичные данные
bin/xmem-linux-x64_avx
Двоичный файл не отображается.
Двоичные данные
bin/xmem-linux-x86
Двоичные данные
bin/xmem-linux-x86
Двоичный файл не отображается.
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Author: Mark Gottscho
|
||||
# mgottscho@ucla.edu
|
||||
|
||||
./build-linux.sh x64 &
|
||||
./build-linux.sh x64_avx &
|
||||
./build-linux.sh x86 &
|
||||
./build-linux.sh arm &
|
||||
./build-linux.sh arm_neon &
|
||||
./build-linux.sh arm64 &
|
|
@ -0,0 +1,7 @@
|
|||
@echo off
|
||||
|
||||
:: Author: Mark Gottscho <mgottscho@ucla.edu>
|
||||
|
||||
build-win.bat x64 &
|
||||
build-win.bat x64_avx &
|
||||
build-win.bat x86 &
|
|
@ -1,7 +1,7 @@
|
|||
README
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
|
||||
X-Mem: Extensible Memory Benchmarking Tool v2.2.0
|
||||
X-Mem: Extensible Memory Benchmarking Tool v2.2.1
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
|
||||
The flexible open-source research tool for characterizing memory hierarchy throughput, latency, and power.
|
||||
|
@ -10,7 +10,7 @@ Originally authored by Mark Gottscho (Email: <mgottscho@ucla.edu>) as a Summer 2
|
|||
|
||||
This project is under active development. Stay tuned for more updates.
|
||||
|
||||
PROJECT REVISION DATE: April 24, 2015.
|
||||
PROJECT REVISION DATE: April 27, 2015.
|
||||
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
LICENSE
|
||||
|
@ -54,9 +54,11 @@ Extensibility: Modularity via C++ object-oriented principles
|
|||
- Supports rapid addition of new benchmark kernel routines
|
||||
- Example: stream triad algorithm, impact of false sharing, etc. are possible with minor changes
|
||||
|
||||
Cross-platform: Currently implemented for Windows and GNU/Linux on x86, x86-64, and x86-64 with AVX extensions CPUs
|
||||
Cross-platform: Currently implemented for two OSes and architecture families
|
||||
- Windows: Intel x86 (32-bit), x86-64, and x86-64 with AVX extensions
|
||||
- GNU/Linux: Intel x86 (32-bit), x86-64, and x86-64 with AVX extensions, ARM (32-bit), ARM (32-bit) with NEON, ARMv8 (64-bit)
|
||||
- Designed to allow straightforward porting to other operating systems and ISAs
|
||||
- ARM port under development (currently implemented for GNU/Linux for 32-bit and 64-bit ARM)
|
||||
- ARM on Windows currently not possible due to some incompatibilites and/or lack of support. This may be resolved in the future.
|
||||
|
||||
Memory throughput:
|
||||
- Accurate measurement of sustained memory throughput to all levels of cache and memory
|
||||
|
@ -91,14 +93,14 @@ There are a few runtime prerequisites in order for the software to run correctly
|
|||
|
||||
HARDWARE:
|
||||
|
||||
- Intel x86, x86-64, or x86-64 with AVX CPU. AMD CPUs should also work although this has not been tested.
|
||||
- ARM Cortex-A series processors with VFP and NEON extensions. Specifically tested on ARM Cortex A9 (32-bit) which is ARMv7. 64-bit builds for ARMv8-A should also work but have not been tested.
|
||||
- Intel x86, x86-64, or x86-64 with AVX CPU. AMD CPUs should also work although this has not been tested!
|
||||
- ARM Cortex-A series processors with VFP and NEON extensions. Specifically tested on ARM Cortex A9 (32-bit) which is ARMv7. 64-bit builds for ARMv8-A should also work but have not been tested. GNU/Linux builds only. You can attempt Windows, but I have issues linking the 32-bit version and compiling the NEON version. Also, as far as I can see there is no Windows support for ARMv8 at all.
|
||||
|
||||
WINDOWS:
|
||||
|
||||
- Microsoft Windows 8.0 64-bit or later, Server 2012 or later.
|
||||
- Microsoft Visual C++ 2013 Redistributables (64-bit)
|
||||
- COMING SOON: Windows 32-bit
|
||||
- Microsoft Visual C++ 2013 Redistributables (32-bit) -- for x86 (32-bit) builds
|
||||
- Microsoft Visual C++ 2013 Redistributables (64-bit) -- for x86-64 and x86-64 with AVX builds
|
||||
- You MAY need Administrator privileges, in order to:
|
||||
- Use large pages, if the --large_pages option is selected (see USAGE, below)
|
||||
- The first time you use --large_pages on a given Windows machine, you may need to ensure that your Windows user account has the necessary rights to allow lockable memory pages. To do this on Windows 8, run gpedit.msc --> Local Computer Policy --> Computer Configuration --> Windows Settings --> Security Settings --> Local Policies --> User Rights Assignment --> Add your username to "Lock pages in memory". Then log out and then log back in.
|
||||
|
@ -107,7 +109,7 @@ WINDOWS:
|
|||
|
||||
GNU/LINUX:
|
||||
|
||||
- GNU utilities with support for C++11. Tested with gcc 4.8.2 on Ubuntu 14.04 LTS for x86-64 CPU with AVX.
|
||||
- GNU utilities with support for C++11. Tested with gcc 4.8.2 on Ubuntu 14.04 LTS for x86 (32-bit), x86-64, and x86-64 with AVX on Intel Sandy Bridge, Ivy Bridge, and Haswell families.
|
||||
- libhugetlbfs. You can obtain it at <http://libhugetlbfs.sourceforge.net>. On Ubuntu systems, you can install using "sudo apt-get install libhugetlbfs0".
|
||||
- Potentially, administrator privileges, if you plan to use the --large_pages option.
|
||||
- During runtime, if the --large_pages option is selected, you may need to first manually ensure that large pages are available from the OS. This can be done by running "hugeadm --pool-list". It is recommended to set minimum pool to 1GB (in order to measure DRAM effectively). If needed, this can be done by running "hugeadm --pool-pages-min 2MB:512". Alternatively, run the linux_setup_runtime_hugetlbfs.sh script that is provided with X-Mem.
|
||||
|
@ -116,7 +118,7 @@ GNU/LINUX:
|
|||
INSTALLATION
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
|
||||
The only file that is needed to run on Windows is xmem-win.exe, and xmem-linux on GNU/Linux. It has no other dependencies aside from the system prerequisites listed above.
|
||||
The only file that is needed to run on Windows is the respective executable xmem-win-<ARCH>.exe on Windows, and xmem-linux-<ARCH> on GNU/Linux. It has no other dependencies aside from the pre-installed system prerequisites listed above.
|
||||
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
USAGE
|
||||
|
@ -311,7 +313,9 @@ WINDOWS:
|
|||
|
||||
GNU/LINUX:
|
||||
|
||||
- gcc with support for the C++11 standard. Tested with gcc version 4.8.2 on Ubuntu 14.04 LTS for x86-64 with AVX.
|
||||
- bash shell. Other shells could work but are untested.
|
||||
- gcc with support for the C++11 standard. Tested with gcc version 4.8.2 on Ubuntu 14.04 LTS for x86 (32-bit), x86-64, x86-64 with AVX builds.
|
||||
- gcc cross-compiler for ARM targets (assumed build on x86-64 Ubuntu host).
|
||||
- Python 2.7. You can obtain it at <http://www.python.org>. On Ubuntu systems, you can install using "sudo apt-get install python2.7". You may need some other Python 2.7 packages as well.
|
||||
- SCons build system. You can obtain it at <http://www.scons.org>. On Ubuntu systems, you can install using "sudo apt-get install scons". Build tested with SCons 2.3.4.
|
||||
- Kernel support for large (huge) pages. This support can be verified on your Linux installation by running "grep hugetlbfs /proc/filesystems". If you do not have huge page support in your kernel, you can build a kernel with the appropriate options switched on: "CONFIG_HUGETLB_PAGE" and "CONFIG_HUGETLBFS".
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
|
||||
namespace xmem {
|
||||
|
||||
#define VERSION "2.2.0"
|
||||
#define VERSION "2.2.1"
|
||||
|
||||
#if !defined(_WIN32) && !defined(__gnu_linux__)
|
||||
#error Neither Windows/GNULinux build environments were detected!
|
||||
|
|
22
src/main.cpp
22
src/main.cpp
|
@ -47,7 +47,7 @@ using namespace xmem;
|
|||
|
||||
void xmem::print_welcome_message() {
|
||||
//Greetings!
|
||||
std::cout << "--------------------------------------------------------------------------------" << std::endl;
|
||||
std::cout << "------------------------------------------------------------------------------------------" << std::endl;
|
||||
std::cout << "Extensible Memory Benchmarking Tool (X-Mem) v" << VERSION << " for";
|
||||
#ifdef _WIN32
|
||||
std::cout << " Windows";
|
||||
|
@ -56,17 +56,29 @@ void xmem::print_welcome_message() {
|
|||
std::cout << " GNU/Linux";
|
||||
#endif
|
||||
std::cout << " on";
|
||||
#ifdef ARCH_INTEL
|
||||
std::cout << " Intel ISAs";
|
||||
#ifdef ARCH_INTEL_X86_64
|
||||
std::cout << " Intel x86-64";
|
||||
#endif
|
||||
#ifdef ARCH_INTEL_AVX
|
||||
std::cout << " Intel x86-64 with AVX";
|
||||
#endif
|
||||
#ifdef ARCH_INTEL_X86
|
||||
std::cout << " Intel x86 (32-bit)";
|
||||
#endif
|
||||
#ifdef ARCH_ARM
|
||||
std::cout << " ARM ISAs";
|
||||
std::cout << " ARM (32-bit)";
|
||||
#endif
|
||||
#ifdef ARCH_ARM_64
|
||||
std::cout << " ARMv8 (64-bit)";
|
||||
#endif
|
||||
#ifdef ARCH_ARM_NEON
|
||||
std::cout << " ARM (32-bit) with NEON";
|
||||
#endif
|
||||
std::cout << std::endl;
|
||||
std::cout << "Build date: " << BUILD_DATETIME << std::endl;
|
||||
std::cout << "(C) Microsoft Corporation 2015" << std::endl;
|
||||
std::cout << "Originally authored by Mark Gottscho <mgottscho@ucla.edu>" << std::endl;
|
||||
std::cout << "--------------------------------------------------------------------------------" << std::endl;
|
||||
std::cout << "------------------------------------------------------------------------------------------" << std::endl;
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче