Пример #1
0
int ofi_nd_getinfo(uint32_t version, const char *node, const char *service,
		   uint64_t flags, const struct fi_info *hints,
		   struct fi_info **info)
{
	if (ofi_nd_util_prov.info) {
		return util_getinfo(&ofi_nd_util_prov, version, node, service, flags,
				    hints, info);
	} else {
		*info = NULL;
		return -FI_EINVAL;
	}
}
Пример #2
0
static int udpx_getinfo(uint32_t version, const char *node, const char *service,
			uint64_t flags, struct fi_info *hints, struct fi_info **info)
{
	int ret;

	ret = util_getinfo(&udpx_util_prov, version, node, service, flags,
			   hints, info);
	if (ret)
		return ret;

	if (!(*info)->src_addr && !(*info)->dest_addr)
		udpx_getinfo_ifs(info);

	return 0;
}
Пример #3
0
static int mlx_getinfo (
			uint32_t version, const char *node,
			const char *service, uint64_t flags,
			const struct fi_info *hints, struct fi_info **info)
{
	int status = -ENODATA;
	char *configfile_name = NULL;
	int inject_thresh = -1;

	mlx_descriptor.config = NULL;

	status = fi_param_get( &mlx_prov,
				"mlx_tinject_limit",
				&inject_thresh);
	if (!status)
		inject_thresh = FI_MLX_DEFAULT_INJECT_SIZE;

	FI_INFO( &mlx_prov, FI_LOG_CORE,
		"used inlect size = %d \n", inject_thresh);

	status = fi_param_get( &mlx_prov, "mlx_config", &configfile_name);
	if (!status) {
		configfile_name = NULL;
	}

	/* NS is disabled by default */
	status = fi_param_get( &mlx_prov, "mlx_ns_enable",
			&mlx_descriptor.use_ns);
	if (!status) {
		mlx_descriptor.use_ns = 0;
	}
	status = fi_param_get( &mlx_prov, "mlx_ns_port",
			&mlx_descriptor.ns_port);
	if (!status) {
		mlx_descriptor.ns_port = FI_MLX_DEFAULT_NS_PORT;
	}



	status = ucp_config_read( NULL,
			status? NULL: configfile_name,
			&mlx_descriptor.config);
	if (status != UCS_OK) {
		FI_WARN( &mlx_prov, FI_LOG_CORE,
			"MLX error: invalid config file\n\t%d (%s)\n",
			status, ucs_status_string(status));
	}

	/*Setup some presets*/
	status = ucm_config_modify("MALLOC_HOOKS", "no");
	if (status != UCS_OK) {
		FI_WARN( &mlx_prov, FI_LOG_CORE,
			"MLX error: failed to switch off UCM memory hooks:\t%d (%s)\n",
			status, ucs_status_string(status));
	}

	FI_INFO( &mlx_prov, FI_LOG_CORE,
		"Loaded MLX version %s\n",
		ucp_get_version_string());

#if ENABLE_DEBUG
	if (mlx_descriptor.config &&
			fi_log_enabled( &mlx_prov, FI_LOG_INFO, FI_LOG_CORE)) {
		ucp_config_print( mlx_descriptor.config,
			stderr, "Used MLX configuration", (1<<4)-1);
	}
#endif

	*info = NULL;
	if (node || service) {
		FI_WARN(&mlx_prov, FI_LOG_CORE,
		"fi_getinfo with \"node != NULL \" or \"service != NULL \" is temporary not supported\n");
		node = service = NULL;
		flags = 0;
	}

	/* Only Pure MLX address and IPv4 are supported */
	if (hints->addr_format == FI_ADDR_MLX) {
		mlx_info.addr_format = FI_ADDR_MLX;
	}

	if (hints->addr_format <= FI_SOCKADDR_IN) {
		mlx_descriptor.use_ns = 1;
		mlx_info.addr_format = FI_SOCKADDR_IN;
	}

	status = util_getinfo( &mlx_util_prov, version,
				service, node, flags, hints, info);

	return status;
}
Пример #4
0
static int udpx_getinfo(uint32_t version, const char *node, const char *service,
			uint64_t flags, struct fi_info *hints, struct fi_info **info)
{
	return util_getinfo(&udpx_util_prov, version, node, service, flags,
			    hints, info);
}