/******************************************************************************/ /* */ /* Copyright (c) 2008, 2009, 2010 */ /* Computer Architecture Group (CAG) */ /* University of A Coruña, Spain */ /* (http://gac.des.udc.es) */ /* Galicia Supercomputing Center (CESGA) */ /* (http://www.cesga.es) */ /* Hewlett-Packard Spain (HP) */ /* (http://www.hp.es) */ /* */ /* This file is part of UPC Operations Microbenchmarking Suite (UOMS). */ /* */ /* UOMS is free software: you can redistribute it and/or modify */ /* it under the terms of the GNU Lesser General Public License as published */ /* by the Free Software Foundation, either version 3 of the License, or */ /* (at your option) any later version. */ /* */ /* UOMS is distributed in the hope that it will be useful, */ /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ /* GNU Lesser General Public License for more details. */ /* */ /* You should have received a copy of the GNU Lesser General Public License */ /* along with UOMS. If not, see . */ /* */ /******************************************************************************/ /******************************************************************************/ /* */ /* FUNDING: This development has been funded by Hewlett-Packard Spain */ /* */ /* Project Name: */ /* UPCHACO (2008-2011) */ /* Subproject: */ /* Improving UPC Usability and Performance in Constellation Systems: */ /* Implementation/Extensions of UPC Libraries. */ /* (UPCPUProject -> UPC Performance and Usability Project) */ /* */ /******************************************************************************/ /****************************************************************************** For further documentation, see [1] Files under doc/ *******************************************************************************/ /* Do not edit this file! If you want to manually set some parameters take a look at config/parameters.h */ /* This is here to force HP UPC to recognize the functions */ #ifdef __HP_UPC_VER #include /* Access macros for `cpu_set'. */ #define CPU_SET(cpu, cpusetp) __CPU_SET (cpu, cpusetp) #define CPU_ISSET(cpu, cpusetp) __CPU_ISSET (cpu, cpusetp) #define CPU_ZERO(cpusetp) __CPU_ZERO (cpusetp) /* Set the CPU affinity for a task */ extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, __const cpu_set_t *__cpuset) __THROW; #endif #include "config/parameters.h" #ifdef ASYNCI_MEM_TEST #ifdef ASYNC_MEM_TEST #define NUM_BMS 57 #else #define NUM_BMS 51 #endif #else #ifdef ASYNC_MEM_TEST #define NUM_BMS 51 #else #define NUM_BMS 45 #endif #endif #define VERSION "1.1" #define FORALL_R 0 #define FORALL_W 1 #define FORALL_RW 2 #define FOR_R 3 #define FOR_W 4 #define FOR_RW 5 #define BARRIER 6 #define BROADCAST 7 #define SCATTER 8 #define GATHER 9 #define GATHERALL 10 #define EXCHANGE 11 #define PERMUTE 12 #define MEMGET 13 #define MEMPUT 14 #define MEMCPY 15 #define LMEMGET 16 #define LMEMPUT 17 #define LMEMCPY 18 #define SMEMCPY 19 #define MEMMOVE 20 #define ALLALLOC 21 #define FREE 22 #define REDUCE_C 23 #define PREFIX_REDUCE_C 24 #define REDUCE_UC 25 #define PREFIX_REDUCE_UC 26 #define REDUCE_S 27 #define PREFIX_REDUCE_S 28 #define REDUCE_US 29 #define PREFIX_REDUCE_US 30 #define REDUCE_I 31 #define PREFIX_REDUCE_I 32 #define REDUCE_UI 33 #define PREFIX_REDUCE_UI 34 #define REDUCE_L 35 #define PREFIX_REDUCE_L 36 #define REDUCE_UL 37 #define PREFIX_REDUCE_UL 38 #define REDUCE_F 39 #define PREFIX_REDUCE_F 40 #define REDUCE_D 41 #define PREFIX_REDUCE_D 42 #define REDUCE_LD 43 #define PREFIX_REDUCE_LD 44 #ifdef ASYNCI_MEM_TEST #ifdef ASYNC_MEM_TEST #define AMEMGET 45 #define AMEMPUT 46 #define AMEMCPY 47 #define ALMEMGET 48 #define ALMEMPUT 49 #define ALMEMCPY 50 #define AIMEMGET 51 #define AIMEMPUT 52 #define AIMEMCPY 53 #define AILMEMGET 54 #define AILMEMPUT 55 #define AILMEMCPY 56 #else #define AIMEMGET 45 #define AIMEMPUT 46 #define AIMEMCPY 47 #define AILMEMGET 48 #define AILMEMPUT 49 #define AILMEMCPY 50 #endif #else #ifdef ASYNC_MEM_TEST #define AMEMGET 45 #define AMEMPUT 46 #define AMEMCPY 47 #define ALMEMGET 48 #define ALMEMPUT 49 #define ALMEMCPY 50 #endif #endif #define MEM_OK(var){ \ if( var == NULL ){ \ printf("TH%02d: ERROR: %s == NULL\n", MYTHREAD, #var ); \ mem_is_ok = -1; \ } \ else{ \ mem_is_ok = 0; \ } \ } #define UPCMEM_OK(var) { \ if( var == NULL ){ \ printf("TH%02d: ERROR: %s == NULL\n", MYTHREAD, #var ); \ if (!MYTHREAD) upc_free(var); \ mem_is_ok = -1; \ } \ else{ \ mem_is_ok = 0; \ } \ }