Blame psm_config.h

Packit Service 155747
/*
Packit Service 155747
Packit Service 155747
  This file is provided under a dual BSD/GPLv2 license.  When using or
Packit Service 155747
  redistributing this file, you may do so under either license.
Packit Service 155747
Packit Service 155747
  GPL LICENSE SUMMARY
Packit Service 155747
Packit Service 155747
  Copyright(c) 2018 Intel Corporation.
Packit Service 155747
Packit Service 155747
  This program is free software; you can redistribute it and/or modify
Packit Service 155747
  it under the terms of version 2 of the GNU General Public License as
Packit Service 155747
  published by the Free Software Foundation.
Packit Service 155747
Packit Service 155747
  This program is distributed in the hope that it will be useful, but
Packit Service 155747
  WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 155747
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 155747
  General Public License for more details.
Packit Service 155747
Packit Service 155747
  Contact Information:
Packit Service 155747
  Intel Corporation, www.intel.com
Packit Service 155747
Packit Service 155747
  BSD LICENSE
Packit Service 155747
Packit Service 155747
  Copyright(c) 2018 Intel Corporation.
Packit Service 155747
Packit Service 155747
  Redistribution and use in source and binary forms, with or without
Packit Service 155747
  modification, are permitted provided that the following conditions
Packit Service 155747
  are met:
Packit Service 155747
Packit Service 155747
    * Redistributions of source code must retain the above copyright
Packit Service 155747
      notice, this list of conditions and the following disclaimer.
Packit Service 155747
    * Redistributions in binary form must reproduce the above copyright
Packit Service 155747
      notice, this list of conditions and the following disclaimer in
Packit Service 155747
      the documentation and/or other materials provided with the
Packit Service 155747
      distribution.
Packit Service 155747
    * Neither the name of Intel Corporation nor the names of its
Packit Service 155747
      contributors may be used to endorse or promote products derived
Packit Service 155747
      from this software without specific prior written permission.
Packit Service 155747
Packit Service 155747
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
Packit Service 155747
  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
Packit Service 155747
  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
Packit Service 155747
  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
Packit Service 155747
  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
Packit Service 155747
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
Packit Service 155747
  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
Packit Service 155747
  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
Packit Service 155747
  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
Packit Service 155747
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Packit Service 155747
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Packit Service 155747
Packit Service 155747
*/
Packit Service 155747
Packit Service 155747
#ifndef PSM_CONFIG_H
Packit Service 155747
#define PSM_CONFIG_H
Packit Service 155747
Packit Service 155747
/*
Packit Service 155747
 * The following flags can be used instead of `make` switches in order to
Packit Service 155747
 * change behavior achieved when using `make` without parameters.
Packit Service 155747
 */
Packit Service 155747
Packit Service 155747
#ifndef RDPMC_PERF_FRAMEWORK
Packit Service 155747
/* #define RDPMC_PERF_FRAMEWORK */
Packit Service 155747
#endif
Packit Service 155747
Packit Service 155747
#ifndef PSM2_MOCK_TESTING
Packit Service 155747
/* #define PSM2_MOCK_TESTING */
Packit Service 155747
#endif
Packit Service 155747
Packit Service 155747
#ifndef PSM_CUDA
Packit Service 155747
/* #define PSM_CUDA */
Packit Service 155747
/* #define NVIDIA_GPU_DIRECT */
Packit Service 155747
#endif
Packit Service 155747
Packit Service 155747
#ifndef HFI_BRAKE_DEBUG
Packit Service 155747
/* #define HFI_BRAKE_DEBUG */
Packit Service 155747
#endif
Packit Service 155747
Packit Service 155747
#ifndef PSM_DEBUG
Packit Service 155747
/* #define PSM_DEBUG */
Packit Service 155747
/* #define _HFI_DEBUGGING 1 */
Packit Service 155747
/* #define _FORTIFY_SOURCE 2 */
Packit Service 155747
#endif
Packit Service 155747
Packit Service 155747
#ifndef PSM_HEAP_DEBUG
Packit Service 155747
/* #define PSM_HEAP_DEBUG */
Packit Service 155747
#endif
Packit Service 155747
Packit Service 155747
#ifndef PSM_PROFILE
Packit Service 155747
/* #define PSM_PROFILE */
Packit Service 155747
#endif
Packit Service 155747
Packit Service 155747
#define PSMI_MIN_EP_CONNECT_TIMEOUT	(2 * SEC_ULL)
Packit Service 155747
#define PSMI_MIN_EP_CLOSE_TIMEOUT	(1 * SEC_ULL)
Packit Service 155747
#define PSMI_MAX_EP_CLOSE_TIMEOUT	(2 * SEC_ULL)
Packit Service 155747
Packit Service 155747
#define PSMI_MIN_EP_CLOSE_GRACE_INTERVAL (1 * SEC_ULL)
Packit Service 155747
#define PSMI_MAX_EP_CLOSE_GRACE_INTERVAL (2 * SEC_ULL)
Packit Service 155747
Packit Service 155747
Packit Service 155747
#define HFI_MAX_RAILS		4
Packit Service 155747
Packit Service 155747
#define AFFINITY_SHM_BASENAME			"/psm2_hfi_affinity_shm"
Packit Service 155747
#define AFFINITY_SHMEMSIZE			sysconf(_SC_PAGE_SIZE)
Packit Service 155747
#define AFFINITY_SHM_REF_COUNT_LOCATION		0
Packit Service 155747
#define AFFINITY_SHM_HFI_INDEX_LOCATION		1
Packit Service 155747
#define SEM_AFFINITY_SHM_RW_BASENAME		"/psm2_hfi_affinity_shm_rw_mutex"
Packit Service 155747
Packit Service 155747
#define PSMI_RCVTHREAD_FLAGS	0x1
Packit Service 155747
/**<
Packit Service 155747
 * Default setting for Receive thread
Packit Service 155747
 *
Packit Service 155747
 * 0x0 disables rcvthread by default
Packit Service 155747
 * 0x1 enables ips receive thread by default
Packit Service 155747
 */
Packit Service 155747
Packit Service 155747
/*
Packit Service 155747
 * Define one of these below.
Packit Service 155747
 *
Packit Service 155747
 * Spinlock gives the best performance and makes sense with the progress thread
Packit Service 155747
 * only because the progress thread does a "trylock" and then goes back to
Packit Service 155747
 * sleep in a poll.
Packit Service 155747
 *
Packit Service 155747
 * Mutexlock should be used for experimentation while the more useful
Packit Service 155747
 * mutexlock-debug should be enabled during development to catch potential
Packit Service 155747
 * errors.
Packit Service 155747
 */
Packit Service 155747
#ifdef PSM_DEBUG
Packit Service 155747
#define PSMI_LOCK_IS_MUTEXLOCK_DEBUG
Packit Service 155747
#else
Packit Service 155747
#define PSMI_LOCK_IS_SPINLOCK
Packit Service 155747
/* #define PSMI_LOCK_IS_MUTEXLOCK */
Packit Service 155747
/* #define PSMI_LOCK_IS_MUTEXLOCK_DEBUG */
Packit Service 155747
/* #define PSMI_PLOCK_IS_NOLOCK */
Packit Service 155747
#endif
Packit Service 155747
Packit Service 155747
#ifdef PSM_CUDA
Packit Service 155747
/* XXX TODO: Getting the gpu page size from driver at init time */
Packit Service 155747
#define PSMI_GPU_PAGESIZE 65536
Packit Service 155747
Packit Service 155747
#define CUDA_SMALLHOSTBUF_SZ	(256*1024)
Packit Service 155747
#define CUDA_WINDOW_PREFETCH_DEFAULT	2
Packit Service 155747
#define GPUDIRECT_THRESH_RV 3
Packit Service 155747
Packit Service 155747
#define GDR_COPY_THRESH_SEND 32
Packit Service 155747
#define GDR_COPY_THRESH_RECV 64000
Packit Service 155747
/* All GPU transfers beyond this threshold use
Packit Service 155747
 * RNDV protocol. It is mostly a send side knob.
Packit Service 155747
 */
Packit Service 155747
#define CUDA_THRESH_RNDV 32768
Packit Service 155747
#endif
Packit Service 155747
Packit Service 155747
#define MQ_HFI_THRESH_TINY		8
Packit Service 155747
#define MQ_HFI_THRESH_EGR_SDMA_XEON	34000       /* Eager Xeon blocking */
Packit Service 155747
#define MQ_HFI_THRESH_EGR_SDMA_PHI2	200000      /* Eager Phi2 blocking */
Packit Service 155747
#define MQ_HFI_THRESH_EGR_SDMA_SQ_XEON	16000    /* Eager Xeon non-blocking */
Packit Service 155747
#define MQ_HFI_THRESH_EGR_SDMA_SQ_PHI2	65536    /* Eager Phi2 non-blocking */
Packit Service 155747
Packit Service 155747
#define MQ_HFI_THRESH_RNDV_PHI2		200000
Packit Service 155747
#define MQ_HFI_THRESH_RNDV_XEON 	64000
Packit Service 155747
Packit Service 155747
#define MQ_HFI_WINDOW_RNDV_PHI2		4194304
Packit Service 155747
#define MQ_HFI_WINDOW_RNDV_XEON		131072
Packit Service 155747
Packit Service 155747
#ifdef PSM_CUDA
Packit Service 155747
#define MQ_HFI_WINDOW_RNDV_CUDA 2097152
Packit Service 155747
#endif
Packit Service 155747
Packit Service 155747
#define MQ_SHM_THRESH_RNDV 16000
Packit Service 155747
Packit Service 155747
#define NUM_HASH_BUCKETS 64
Packit Service 155747
#define HASH_THRESHOLD 65
Packit Service 155747
#define NUM_HASH_CONFIGS 3
Packit Service 155747
#define NUM_MQ_SUBLISTS (NUM_HASH_CONFIGS + 1)
Packit Service 155747
Packit Service 155747
#define REMOVE_ENTRY 1
Packit Service 155747
Packit Service 155747
Packit Service 155747
/* Keep timer stats */
Packit Service 155747
#define PSMI_TIMER_STATS	0
Packit Service 155747
Packit Service 155747
Packit Service 155747
/* Psm context */
Packit Service 155747
#define HAL_CONTEXT_OPEN_RETRY_MAX 3
Packit Service 155747
Packit Service 155747
Packit Service 155747
/*
Packit Service 155747
 * By default, PSMI_DEVICES_DEFAULT establishes the bind order a component is
Packit Service 155747
 * tested for reachability to each peer.  First self, then shm and finally
Packit Service 155747
 * hfi.  The order should really only affect endpoints that happen to be on
Packit Service 155747
 * the same node.  PSM will correctly detect that two endpoints are on the same
Packit Service 155747
 * node even though they may be using different host interfaces.
Packit Service 155747
 */
Packit Service 155747
#define PSMI_DEVICES_DEFAULT	"self,shm,hfi"
Packit Service 155747
Packit Service 155747
/* Lock */
Packit Service 155747
#define PSMI_USE_PTHREAD_SPINLOCKS	0
Packit Service 155747
Packit Service 155747
/* Utils */
Packit Service 155747
#define PSMI_EPID_TABSIZE_CHUNK		128
Packit Service 155747
#define PSMI_EPID_TABLOAD_FACTOR	((float)0.7)
Packit Service 155747
Packit Service 155747
#define	PSMI_EP_HOSTNAME_LEN	64	/* hostname only */
Packit Service 155747
#define	PSMI_EP_NAME_LEN	96	/* hostname:LID:context:subcontext */
Packit Service 155747
Packit Service 155747
#define PSMI_FAULTINJ_SPEC_NAMELEN	32
Packit Service 155747
Packit Service 155747
#endif /* PSM_CONFIG_H */