⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bnrfunctions.cpp

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 CPP
字号:
#include "nt_global_cpp.h"// Global function pointer declaration#define BNR_FUNCTION_DECLARATIONS#include "bnr.h"#undef BNR_FUNCTION_DECLARATIONSBNR_Group g_myBNRgroup = BNR_GROUP_NULL;bool LoadBNRFunctions(){	HMODULE hBNRLib;	char pszLibrary[1024];		// First initialize everythting to NULL	BNR_Init = NULL;	BNR_Finalize = NULL;	BNR_Get_group = NULL;	BNR_Get_parent = NULL;	BNR_Get_rank = NULL;	BNR_Get_size = NULL;	BNR_Open_group = NULL;	BNR_Close_group = NULL;	BNR_Free_group = NULL;	BNR_Merge = NULL;	BNR_Spawn = NULL;	BNR_Kill = NULL;	BNR_Put = NULL;	BNR_Get = NULL;	BNR_Fence = NULL;	BNR_Deposit = NULL;	BNR_Withdraw = NULL;	BNR_Lookup = NULL;		BNR_Info_set = NULL;	BNR_Info_get_valuelen = NULL;	BNR_Info_get_nthkey = NULL;	BNR_Info_get_nkeys = NULL;	BNR_Info_get = NULL;	BNR_Info_free = NULL;	BNR_Info_dup = NULL;	BNR_Info_delete = NULL;	BNR_Info_create = NULL;	if (!GetEnvironmentVariable("MPICH_BNR_LIB", pszLibrary, 1024))	{		// Try to load the default library:		//strcpy(pszLibrary, "mpichbnr.dll");		// or just bail out:		return false;	}	hBNRLib = LoadLibrary(pszLibrary);	if (hBNRLib == NULL)		return false;	// Add code to check if the return values are NULL ...	BNR_Init = (int (BNR_CALL *)())GetProcAddress(hBNRLib, "BNR_Init");	if (BNR_Init == NULL) DPRINTF(("BNR_Init == NULL\n"));	BNR_Finalize = (int (BNR_CALL *)())GetProcAddress(hBNRLib, "BNR_Finallize");	if (BNR_Finalize == NULL) DPRINTF(("BNR_Finalize == NULL\n"));	BNR_Get_group = (int (BNR_CALL *)( BNR_Group *mygroup ))GetProcAddress(hBNRLib, "BNR_Get_group");	if (BNR_Get_group == NULL) DPRINTF(("BNR_Get_group == NULL\n"));	BNR_Get_parent = (int (BNR_CALL *)( BNR_Group *parent_group ))GetProcAddress(hBNRLib, "BNR_Get_parent");	if (BNR_Get_parent == NULL) DPRINTF(("BNR_Get_parent == NULL\n"));	BNR_Get_rank = (int (BNR_CALL *)( BNR_Group group, int *myrank ))GetProcAddress(hBNRLib, "BNR_Get_rank");	if (BNR_Get_rank == NULL) DPRINTF(("BNR_Get_rank == NULL\n"));	BNR_Get_size = (int (BNR_CALL *)( BNR_Group group, int *mysize ))GetProcAddress(hBNRLib, "BNR_Get_size");	if (BNR_Get_size == NULL) DPRINTF(("BNR_Get_size == NULL\n"));	BNR_Open_group = (int (BNR_CALL *)( BNR_Group local_group, BNR_Group *new_group ))GetProcAddress(hBNRLib, "BNR_Open_group");	if (BNR_Open_group == NULL) DPRINTF(("BNR_Open_group == NULL\n"));	BNR_Close_group = (int (BNR_CALL *)( BNR_Group group ))GetProcAddress(hBNRLib, "BNR_Close_group");	if (BNR_Close_group == NULL) DPRINTF(("BNR_Close_group == NULL\n"));	BNR_Free_group = (int (BNR_CALL *)( BNR_Group group ))GetProcAddress(hBNRLib, "BNR_Free_group");	if (BNR_Free_group == NULL) DPRINTF(("BNR_Free_group == NULL\n"));	BNR_Merge = (int (BNR_CALL *)(BNR_Group local_group, BNR_Group remote_group, BNR_Group *new_group ))GetProcAddress(hBNRLib, "BNR_Merge");	if (BNR_Merge == NULL) DPRINTF(("BNR_Merge == NULL\n"));	BNR_Spawn = (int (BNR_CALL *)(BNR_Group remote_group, int count, char *command, char *argv, char *env, BNR_Info info, int (notify_fn)(BNR_Group group, int rank, int exit_code) ))GetProcAddress(hBNRLib, "BNR_Spawn");	if (BNR_Spawn == NULL) DPRINTF(("BNR_Spawn == NULL\n"));	BNR_Kill = (int (BNR_CALL *)( BNR_Group group ))GetProcAddress(hBNRLib, "BNR_Kill");	if (BNR_Kill == NULL) DPRINTF(("BNR_Kill == NULL\n"));	BNR_Put = (int (BNR_CALL *)( BNR_Group group, char *attr, char *val, int rank_advice ))GetProcAddress(hBNRLib, "BNR_Put");	if (BNR_Put == NULL) DPRINTF(("BNR_Put == NULL\n"));	BNR_Get = (int (BNR_CALL *)( BNR_Group group, char *attr, char *val ))GetProcAddress(hBNRLib, "BNR_Get");	if (BNR_Get == NULL) DPRINTF(("BNR_Get == NULL\n"));	BNR_Fence = (int (BNR_CALL *)( BNR_Group ))GetProcAddress(hBNRLib, "BNR_Fence");	if (BNR_Fence == NULL) DPRINTF(("BNR_Fence == NULL\n"));	BNR_Deposit = (int (BNR_CALL *)( char *attr, char *value ))GetProcAddress(hBNRLib, "BNR_Deposit");	if (BNR_Deposit == NULL) DPRINTF(("BNR_Deposit == NULL\n"));	BNR_Withdraw = (int (BNR_CALL *)( char *attr, char *value ))GetProcAddress(hBNRLib, "BNR_Withdraw");	if (BNR_Withdraw == NULL) DPRINTF(("BNR_Withdraw == NULL\n"));	BNR_Lookup = (int (BNR_CALL *)( char *attr, char *value ))GetProcAddress(hBNRLib, "BNR_Lookup");	if (BNR_Lookup == NULL) DPRINTF(("BNR_Lookup == NULL\n"));		BNR_Info_set = (int (BNR_CALL *)(BNR_Info info, char *key, char *value))GetProcAddress(hBNRLib, "BNR_Info_set");	if (BNR_Info_set == NULL) DPRINTF(("BNR_Info_set == NULL\n"));	BNR_Info_get_valuelen = (int (BNR_CALL *)(BNR_Info info, char *key, int *valuelen, int *flag))GetProcAddress(hBNRLib, "BNR_Info_get_valuelen");	if (BNR_Info_get_valuelen == NULL) DPRINTF(("BNR_Info_get_valuelen == NULL\n"));	BNR_Info_get_nthkey = (int (BNR_CALL *)(BNR_Info info, int n, char *key))GetProcAddress(hBNRLib, "BNR_Info_get_nthkey");	if (BNR_Info_get_nthkey == NULL) DPRINTF(("BNR_Info_get_nthkey == NULL\n"));	BNR_Info_get_nkeys = (int (BNR_CALL *)(BNR_Info info, int *nkeys))GetProcAddress(hBNRLib, "BNR_Info_get_nkeys");	if (BNR_Info_get_nkeys == NULL) DPRINTF(("BNR_Info_get_nkeys == NULL\n"));	BNR_Info_get = (int (BNR_CALL *)(BNR_Info info, char *key, int valuelen, char *value, int *flag))GetProcAddress(hBNRLib, "BNR_Info_get");	if (BNR_Info_get == NULL) DPRINTF(("BNR_Info_get == NULL\n"));	BNR_Info_free = (int (BNR_CALL *)(BNR_Info *info))GetProcAddress(hBNRLib, "BNR_Info_free");	if (BNR_Info_free == NULL) DPRINTF(("BNR_Info_free == NULL\n"));	BNR_Info_dup = (int (BNR_CALL *)(BNR_Info info, BNR_Info *newinfo))GetProcAddress(hBNRLib, "BNR_Info_dup");	if (BNR_Info_dup == NULL) DPRINTF(("BNR_Info_dup == NULL\n"));	BNR_Info_delete = (int (BNR_CALL *)(BNR_Info info, char *key))GetProcAddress(hBNRLib, "BNR_Info_delete");	if (BNR_Info_delete == NULL) DPRINTF(("BNR_Info_delete == NULL\n"));	BNR_Info_create = (int (BNR_CALL *)(BNR_Info *info))GetProcAddress(hBNRLib, "BNR_Info_create");	if (BNR_Info_create == NULL) DPRINTF(("BNR_Info_create == NULL\n"));	return true;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -