- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个巨大的数据库 (DBMS = MySQL),我可以从 MPI 程序(使用 MPICH2)访问它。在这个程序中,我只想知道执行sql查询的时间。它引用了我的另一个并行程序。
当代码从 Visual Studio C++ 运行时,它运行良好(我得到了输出)。但是当它使用 mpiexec
运行时,没有输出也没有错误消息。否则,当我尝试一个简单的程序(没有mysql代码,使用mpiexec)时,它运行良好(有输出)。我不应该同时使用 mysql 和 mpi 库吗?
代码如下:
#include <stdio.h>
#include <windows.h>
#include <mysql.h>
#include <iostream>
#include <winsock.h>
#include <mpi.h>
#include <stdlib.h>
using namespace std;
//namespace for error handling
namespace ekception{
struct error{
const char *p;
error(const char *q){
p=q;
}
};
}
int main(int argc, char *argv[]){
MYSQL mysql,*sock;
MYSQL_RES *res;
int state;
char *host="localhost";
char *user="root";
char *password="";
char *dbName="sp";
double start,finish,time;
long j;
char s[]="SELECT COUNT(kolom2) FROM coba WHERE kolom1<=";
char query[BUFSIZ];
MPI_Init(&argc,&argv);
for(j=250000;j<=25000000;j+=250000){
sprintf_s(query,"%s%d",s,j);
start=MPI_Wtime();
try{
mysql_init(&mysql);
if(!(sock=mysql_real_connect(&mysql,host,user,password,dbName,0,NULL,0))){
throw ekception::error("Connection failed\n");
}
mysql.reconnect=1;
state=mysql_query(sock,query);
if(state!=0){
throw ekception::error("Query execution Failed\n");
}
res=mysql_store_result(sock);
mysql_free_result(res);
mysql_close(sock);
}
catch(ekception::error e){
printf("%s\n",e.p);
}
finish=MPI_Wtime();
time=finish-start;
printf("Data size = %d *** time = %f\n",j,time);
}
MPI_Finalize();
getchar();
return 0;
}
提前致谢
最佳答案
我建议如下:
添加以下内容以查看您是否真的
在 MPI 框架中运行:
int id, nprocs;
MPI_Comm_rank(MPI_COMM_WORLD, &id);
MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
printf("Sql Init from proc %d out of %d!\n", id, nprocs);
我会打印排名 ID 作为所有日志语句的一部分,以便识别打印语句从哪个 MPI 子进程开始。
2。只是为了确定,我宁愿检查 mysql_init(&mysql);
3。出于调试目的,您可以在 MPI_Init()
调用之后添加一个 getchar()
,以便两个进程(假设 mpirun/mpiexec
编号进程参数是 2) 已启动。然后,您可以在 MVS attach debugger
窗口中看到两个进程的 processid。然后,您可以将调试器附加到 MPI 子进程之一,并查看给定 mpi 子进程的 sql
查询执行失败的原因。
4。不确定为什么需要在 for 循环中打开/关闭 sql socket
。 ?它可以在 for
循环之外。
5。交叉检查您的程序是否真的与适当的 mpi 库链接。
关于c++ - 如何从 MPI 程序访问 MySQL(使用 MPICH2)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11319248/
我有一个应用程序的源代码,该应用程序是 2005 年用 C++ 为 32 位架构编写的,并使用了 MPICH-1 库。我知道逻辑,我想升级 64 位机器和 MPICH-2 的源代码。 MPICH-1
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
有人可以详细说明 MPI 的 OpenMPI 和 MPICH 实现之间的区别吗? 两者中哪一个是更好的实现? 最佳答案 目的 首先,重要的是要认识到 MPICH 和 Open-MPI 的不同之处,即它
我试图仅使用进程 0 写入文件,但该文件甚至没有在目录中创建,如果我在没有 mpich 的情况下运行它,它运行良好(并且该文件是在项目目录中创建的,因为它应该是),但当我使用 mpich 运行时则不然
我有一个简单的 MPICH 程序,其中进程以 Ring 顺序相互发送和接收消息。 我已经设置了 2 个相同的虚拟机,并确保网络工作正常。我已经在两台机器上测试了一个简单的 MPICH 程序,它运行良好
我试图运行以下 MPI 代码,但遇到了如下所示的错误。如果有人能帮助我,我将不胜感激。 #include #include int main(){ int rank, size;
我的 Ubuntu 20.04 中同时安装了 mpich 和 openmpi。 $ dpkg -l | grep mpi | grep lib ... ii libmpich-dev:amd64
/* C Example */ #include #include #include #include int main (int argc, char* argv[]) { int ra
我有适用于 MPICH 3.0.4 版的 mpif90,但我想删除它并安装 mpich2。 dislin库有问题,需要mpich2。 在我的 debian 发行版上 sudo apt-get inst
在 Windows (1.4.1p1) 中使用 MPICH 学习 MPI 时,我发现了一些示例代码 here .最初,当我运行服务器时,我必须复制生成的 port_name 并用它启动客户端。这样,客
我想知道如果 OpenMPI/MPICH2 集群的节点终止会发生什么?是否有一些机制可以容忍这种情况并继续执行? 感谢您的回答 海因里希 最佳答案 请注意,自 MPI 1.x 天以来就存在的功能是您可
刚刚开始学习mpi,所以买了3个vps搭建实验环境。我成功安装并配置了 ssh 和 mpich。这三个节点可以在没有密码的情况下相互 ssh(但不能自己)。并且 cpi 示例在本地机器上没有任何问题地
我的 Linux 机器上有一个可执行文件,我知道它是使用 OpenMPI 或 MPICH 库编译的。 问题:如何确定是哪一个? 最佳答案 以下诊断过程假设 MPICH/MPICH2 和 Open MP
我有以下使用 openmpi 和 mpich-3.2.1 编译和运行的程序,但是在使用 mpich-3.3 调用 MPI_Waitany 时出现死锁。该程序必须以偶数列运行,其中一半通过内部通信器向另
当我通过 TCP/IP 套接字在进程之间发送 MPI 消息时,OpenMPI 和 MPICH 如何处理安全性? 特别是,它们如何防止同一网络的其他用户连接到监听套接字并发送伪造的 MPI 消息? 具体
我是 HPC 新手,手头的任务是在集群上对 MPICH 和 OpenMPI 进行性能分析和比较,该集群由配备双核 AMD Opteron 处理器的 IBM 服务器组成,在 ClusterVisionO
我正在尝试安装MPICH 2 在运行 Ubuntu 11.04 (Natty Narwhal) 的 64 位机器上。我用过 sudo apt-get install mpich2 首先我很惊讶地发现
我正在尝试在 linux 集群中安装 mpich-3.1(在所有机器上运行的 Ubuntu 12.04)。以前我通过 sudo apt-get install mpich2 安装了 mpich2 但找
我为我的家庭作业(并行编程)编写了这个程序,但我在运行时遇到了一些错误。 这是来源: /**************************************** * Program:
对于长期从事该领域的人来说,我的问题可能看起来很愚蠢,但我感谢您耐心地为我详细阐述。 当他们说 MPICH 是 MPI 的“实现”时,这是什么意思? 下面的类比是否正确(?):如果我们将 MPI 视为
我是一名优秀的程序员,十分优秀!