我已经看到很多关于这个问题的讨论,但也许我只是太多的新手才能得到它.如果我有一个可观察的集合,它是msdn示例中的"PersonNames"集合(http://msdn.microsoft.com/en-us/library/ms748365.aspx),如果a PersonName是,我会获得对View的更新添加或删除等.当我更改属性时,我想获得我的视图的更新PersonName.就像我改名字一样.我可以OnPropertyChanged为每个属性实现并让这个类派生出来INotifyPropertyChanged,并且似乎按预期调用.我的问题是,View如何从ObservableCollection更改属性获取更新数据不会导致任何事件ObservableCollection.这可能是非常简单的事情,但为什么我似乎无法找到一个令我惊讶的例子.任何人都可以为我阐明这一点,或者对示例有任何指示我会非常感激.我们在当前的WPF应用程序的多个位置都有这种情况,并且正在努力搞清楚.
"通常,负责显示数据的代码会为PropertyChanged当前显示在屏幕上的每个对象添加一个事件处理程序."
有人可以举个例子说明这意味着什么吗?我查看结合我ViewModel其中有一个ObservableCollection.此集合由RowViewModel具有支持PropertiesChanged事件的属性组成.但我无法弄清楚如何使集合更新自己,以便更新我的视图.
当我只编译脚本时
#include <mpi.h>
Run Code Online (Sandbox Code Playgroud)
它告诉我没有这样的文件或目录.但是当我包含mpi.h的路径时
#include "/usr/include/mpi/mpi.h"
Run Code Online (Sandbox Code Playgroud)
(路径是正确的)它返回:
In file included from /usr/include/mpi/mpi.h:2087:0,
from lbm.cc:7:
/usr/include/mpi/openmpi/ompi/mpi/cxx/mpicxx.h:35:17: fatal error: mpi.h: No such file or directory
#include "mpi.h"
^
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
有人知道怎么修这个东西吗?
我正试图在debian 7上使用openmpi和mpirun运行这个示例hello world程序.
#include <stdio.h>
#include <mpi/mpi.h>
int main (int argc, char **argv) {
int nProcId, nProcNo;
int nNameLen;
char szMachineName[MPI_MAX_PROCESSOR_NAME];
MPI_Init (&argc, &argv); // Start up MPI
MPI_Comm_size (MPI_COMM_WORLD,&nProcNo); // Find out number of processes
MPI_Comm_rank (MPI_COMM_WORLD, &nProcId); // Find out process rank
MPI_Get_processor_name (szMachineName, &nNameLen); // Get machine name
printf ("Hello World from process %d on %s\r\n", nProcId, szMachineName);
if (nProcId == 0)
printf ("Number of Processes: %d\r\n", nProcNo);
MPI_Finalize (); // Shut down MPI
return 0;
} …Run Code Online (Sandbox Code Playgroud) 我正在将旧的SVN存储库转换为Git,其中包括尝试在所有正确的位置获取所有分支/标记.那部分进展顺利,但有时候我想在我的脚本中添加历史记录中的提交,我后来想用下一次提交压缩.问题是我不是一个接一个地抓取提交,而是作为一个大组,所以当我将它们从SVN存储库中拉出来时,我无法压缩它们.最后,我的存储库看起来像这样:
* (branch_2, HEAD) commit 5
* commit 4
* commit 3
* SQUASH ME!
* (branch_1) commit 2
* commit 1
Run Code Online (Sandbox Code Playgroud)
我希望能够壁球commit 3有SQUASH ME!,这显然是容易的互动变基,但在脚本中更具挑战性.我似乎branch_1遇到的主要问题是,虽然很容易签出或在它之前提交,但很难以编程方式请求提交之后的提交,而且我很难预测从branch_2我需要返回的提交数量.我真的希望能够做到这样的事情:
git checkout branch_1+2
Run Code Online (Sandbox Code Playgroud)
有什么指针吗?
我有两个问题 -
Q1.除了检查点/回滚之外,是否有更有效的方法来处理MPI中的错误情况?我看到如果节点"死",程序会突然停止.在节点死后,有没有办法继续执行?(如果以准确性为代价则没有问题)
Q2.我在"http://stackoverflow.com/questions/144309/what-is-the-best-mpi-implementation"中读到,OpenMPI具有更好的容错能力,最近MPICH-2也提出了类似的功能.谁知道它们是什么以及如何使用它们?这是一种"模式"吗?他们可以帮助解决第一季度的情况吗?
亲切的回复.谢谢.
我知道有很多类似的帖子,但我还没有找到解决方案.我试图将一些xml发布到MPI网关,但不断收到以下错误:
无法从传输连接读取数据:远程主机强制关闭现有连接.
下面是我正在使用的代码,但我已经尝试了几乎所有我能想到的不同方法,它们都返回相同的错误:
string result = "";
string xml = "<TNSAuthRequest><CardNumber>0123456789</CardNumber><ExpiryDate>1801</ExpiryDate><PurchaseAmt>750</PurchaseAmt><CurrencyCode>826</CurrencyCode><CurrencyExponent>2</CurrencyExponent><CountryCode>826</CountryCode><MerchantName>Mayflower</MerchantName><MerchantId>0123456789</MerchantId><MerchantData>abcdefghijklmnopqrstuvwxyz0123456789</MerchantData><MerchantUrl>example.com</MerchantUrl><NotificationURL>example.com/basket</NotificationURL></TNSAuthRequest>";
var url = "https://mpi.securecxl.com";
byte[] bytes = System.Text.Encoding.ASCII.GetBytes("xmldata=" + xml.ToString());
ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(ValidateRemoteCertificate);
var req = (HttpWebRequest)WebRequest.Create(url);
req.AllowWriteStreamBuffering = true;
req.ContentType = "text/xml";
req.Method = "POST";
//req.ContentLength = bytes.Length;
req.KeepAlive = false;
req.ProtocolVersion = HttpVersion.Version10;
req.ServicePoint.ConnectionLimit = 1;
//req.Timeout = -1;
try
{
using (var writer = new StreamWriter(req.GetRequestStream(), Encoding.ASCII))
{
writer.WriteLine(bytes);
}
using (WebResponse resp = req.GetResponse())
{
using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
result = …Run Code Online (Sandbox Code Playgroud) 我是HPC的新手,手头的任务是在集群上对MPICH和OpenMPI进行性能分析和比较,该集群包含运行在ClusterVisionOS上的配备双核AMD Opteron处理器的IBM服务器.
我应该选择哪个基准程序来比较MPICH和OpenMPI实现?
我不确定High-Performance Linpack Benchmark是否可以提供帮助,因为我并没有尝试衡量集群本身的性能..请建议..
谢谢
我在下面写了一个示例代码:
#include <stdio.h>
#include <mpi.h>
double x;
int main (int argc, char **argv) {
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
if (rank==0) x=10.1;
MPI_Barrier(MPI_COMM_WORLD);
printf("%f\n", x);
MPI_Finalize();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
正如人们可能注意到的,这个程序实际上定义了一个名为x的全局变量,而第0个线程试图为它分配一些值.当我在具有4个内核的SMP(对称多处理)机器上运行该程序时,我得到以下结果:
10.1
0
0
0
Run Code Online (Sandbox Code Playgroud)
更有趣的是,当我更改我的代码以便每个线程打印变量x的地址,即&x时,它们都打印相同的东西.
我的问题是,如果SMP系统上的一些线程共享一个变量地址的相同值,而它们不共享相同的值,那么该怎么可能?
我的第二个问题是我应该如何更改上面的代码,以便得到以下结果?
10.1
10.1
10.1
10.1
Run Code Online (Sandbox Code Playgroud) 我正在尝试在这里构建和运行RDMA示例.但是因为我正在探索,我没有任何能够管理RDMA的硬件.当我尝试运行示例代码时,我收到这样的错误.
librdmacm: couldn't read ABI version.
librdmacm: assuming: 4
CMA: unable to get RDMA device list
error: ec = rdma_create_event_channel() failed (returned zero/null).
Run Code Online (Sandbox Code Playgroud)
是否有可用于开发的RDMA功能的"本地"实现?我知道RDMA中的"R"意味着远程,但我认为这可能存在用于测试/开发目的.
作为参考,我的Ubuntu 14.04箱尝试这个已经安装的软件包libibverbs-dev,并librdmacm-dev为了让代码编译.
mpi ×6
openmpi ×4
c ×3
mpich ×3
c# ×2
c++ ×2
asp.net ×1
benchmarking ×1
git ×1
git-rebase ×1
http-post ×1
infiniband ×1
rdma ×1