This repository has been archived by the owner on Jun 29, 2022. It is now read-only.
A Git mirror of QuakeTM, a parallel version of Quakeworld server application, parallelized from the sequential version using OpenMP and transactional memory.
jrk/QuakeTM
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
____ _ _ _ _ _ _____ / __ \ | | | | / \ | | / / | ___| | | | | | | | | / _ \ | |_/ / | |___ _______ ___ ___ | | | | | | | | / ___ \ | _ ( | ___| |__ __| | \/ | | |__| | | |__| | / / \ \ | | \ \ | |___ | | | |\__/| | \_____ \ \____/ /_/ \_\ |_| \_\ |_____| |_| |_| |_| \/ Transactional Quake Server Version 1.0 BETA Barcelona Supercomputing Center http://www.bscmsrc.eu This document explains how to setup and use QuakeTM, the transactional version of Quakeworld, the multiplayer version of the first person shooter game Quake I released by ID Software under the GPL license. If you use QuakeTM for your research please reference the following conference paper: Vladimir Gajinov, Ferad Zyulkyarov, Adrián Cristal, Osman S. Unsal, Eduard Ayguadé, Tim Harris, Mateo Valero, "QuakeTM: Parallelizing a Complex Serial Application Using Transactional Memory". 23rd ACM/SIGARCH International Conference on Supercomputing (ICS'09) - Jun 2009 QuakeTM consists of three applications: - the server - the TraceBot client, for running traces - the VideoClient client, for visual testing and production of traces QuakeTM package comes with two sets of prerecorded traces which are ready to be used with two different maps. Thank you for using QuakeTM! System Requirements -------------------- Please note that QuakeTM is developed for Linux. The server was compiled and tested in Ubuntu and Suse Linux systems. It was compiled using the prototype edition of the Intel STM compiler version 3.0 TraceBot was compiled with gcc 4.3.2 and tested in Ubuntu and Suse Linux systems. VideoClient was compiled with gcc 4.3.2 and tested only in Ubuntu Linux. It needs a support for OpenGL. Please note that we do not hold the responsability for failure to compile VideoClient due to the problems regarding OpenGL libraries. Use instructions ----------------- In the following text we give detailed information on how to use QuakeTM package and how to change configurations of individual applications. ******************************************************** TRACE RECORDING ******************************************************** SERVER =============================================== 1. Set macro definitions tm_macros.h ---------------------- Set serial server execution: make run=serial sv_main.c ---------------------- Define FRAMETIME to be 0.03 sys.h ---------------------- Define PROCSPEED according to the processor (core) speed of the machine running the server. 2. Compile and run the binary without any command line parameters CLIENT ================================================ - Compile and run VideoClient. Set the command line parameter -save_trace - When you are done with producing the traces stop the client using Quake menu. - Test each trace separately: run VideoClient with -run_trace command line parameter. Be sure that you leave only one trace file in the Trace directory before testing. ******************************************************** RUNNING BENCHMARK ******************************************************** SERVER =============================================== 1. Macro definitions The behaviour of the server is controle with a rich set of macros which can be grouped as following: synchronization: DO_LOCK DO_TM granularity: DO_GLOBAL DO_COARSE DO_FINE nesting: DO_NESTED frame stage: READ_PACKETS PHYSICS REPLY_STAGE debug_stage: READ_PACKETS PHYSICS REPLY_STAGE GENERAL debug level: NONE LOW MEDIUM HIGH Makefile comes with a set of predefined settings for these macros. In order to compile with a predefined setup invoke make as make run= { global | lock_coarse | lock_fine | lock_tm | tm_coarse | tm_fine | tm_fine_nested } Here we give a brief explanation of above settings: global only one huge transaction that caries the entire processing of a single packet. lock_coarse 8 critical sections protected with a global lock. lock_fine fine grained lock implementation. lock_tm 8 critical sections each protected with transaction as well as a global lock. Used only to measure the overhead of the multithreaded exection (instrumentation overhead). tm_coarse 8 critical sections protected with transactions. tm_fine fine grained tm implemetnation. Nesting is avoided by the macro definitions. tm_fine_nested fine grained tm implemetnation where nesting is handled by the tm runtime system. sv_main.c ---------------------- Define FRAMETIME to be 0.1 (or any other value which is sufficient for the frame execution with transactions) sys.h ---------------------- Define PROCSPEED according to the processor (core) speed of the machine running the server. 2. Compile and run the binary. Command line parameters of interest are: -threads n The number of threads to run in parallel. -frames n Run for n frames after which the server stops execution. -start_frame n Set the frame number from which to start measuring the performance. -end_frame n Set the frame number when to stop measuring the performance. The server stops execution and prints the performance values. Do not use -frames with -end_frame parameter at the same time. 3. It is possible to change the map using the server.cfg file in the id1 directory. Remember to change the traces for the client according to the map. CLIENT ================================================ - For this purpose use TraceBot client feeding it with the prerecorded traces. - Run the clients on different machine than the one which is running the server. - Use clients.sh script to run multiple clients at once. - In the id1 directory there is a file connet.rc. Change the ip address for the server. TraceBot doesn't use graphics or sound and can be run in many instances at the same time on the same machine.
About
A Git mirror of QuakeTM, a parallel version of Quakeworld server application, parallelized from the sequential version using OpenMP and transactional memory.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published