1 /*****************************************************************************\ 2 * src/common/mapping.h - routines for compact process mapping representation 3 ***************************************************************************** 4 * Copyright (C) 2014 Institute of Semiconductor Physics 5 * Siberian Branch of Russian Academy of Science 6 * Written by Artem Polyakov <artpol84@gmail.com>. 7 * All rights reserved. 8 * 9 * This file is part of Slurm, a resource management program. 10 * For details, see <https://slurm.schedmd.com/>. 11 * Please also read the included file: DISCLAIMER. 12 * 13 * Slurm is free software; you can redistribute it and/or modify it under 14 * the terms of the GNU General Public License as published by the Free 15 * Software Foundation; either version 2 of the License, or (at your option) 16 * any later version. 17 * 18 * In addition, as a special exception, the copyright holders give permission 19 * to link the code of portions of this program with the OpenSSL library under 20 * certain conditions as described in each individual source file, and 21 * distribute linked combinations including the two. You must obey the GNU 22 * General Public License in all respects for all of the code used other than 23 * OpenSSL. If you modify file(s) with this exception, you may extend this 24 * exception to your version of the file(s), but you are not obligated to do 25 * so. If you do not wish to do so, delete this exception statement from your 26 * version. If you delete this exception statement from all source files in 27 * the program, then also delete it here. 28 * 29 * Slurm is distributed in the hope that it will be useful, but WITHOUT ANY 30 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 31 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 32 * details. 33 * 34 * You should have received a copy of the GNU General Public License along 35 * with Slurm; if not, write to the Free Software Foundation, Inc., 36 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 37 \*****************************************************************************/ 38 39 #ifndef MAPPING_H 40 #define MAPPING_H 41 42 #include <stdint.h> 43 #include <unistd.h> 44 #include <string.h> 45 #include <sys/types.h> 46 47 #include "slurm/slurm.h" 48 #include "src/common/xmalloc.h" 49 #include "src/common/xstring.h" 50 #include "src/common/xassert.h" 51 52 extern char *pack_process_mapping(uint32_t node_cnt, 53 uint32_t task_cnt, 54 uint16_t *tasks, 55 uint32_t **tids); 56 extern uint32_t *unpack_process_mapping_flat(char *map, 57 uint32_t node_cnt, 58 uint32_t task_cnt, 59 uint16_t *tasks); 60 extern int unpack_process_mapping(char *map, 61 uint32_t node_cnt, 62 uint32_t task_cnt, 63 uint16_t *tasks, 64 uint32_t **tids); 65 66 #endif // MAPPING_H 67