在MPI, c++中发送动态数组
Sending dynamic arrays in MPI, C++
我的任务是测量两个进程之间的通信时间。我想发送4,8,…,1000,...., 10000字节的数据,并测量发送和接收消息所需的时间。所以我想我将发送一个短裤数组。
当我发送数组初始化时:
mpi::communicator world;
short message[100000];
....
world.send(1,0, message);
时间似乎没问题,我可以看到消息[100000]和[1000]之间的时间差
但是我想这样动态地分配数组
short *message = new short[100000];
...
world.send(1,0, *message);
无论数组大小如何,第二次发送似乎总是发送相同数量的数据。
所以我的问题是,如何发送一个动态分配数组?
在第二种情况下,message
是short *
类型,*message
对标量short
的引用,即仅对数组的第一个元素的引用。使用
world.send(1, 0, message, n);
,并改变n
的值。如果您将指针强制转换为指向数组的指针,然后对其解引用,则应该(可能)工作:
world.send(1, 0, *reinterpret_cast<int(*)[100]>(message));
int(*)[100]
类型是指向100个元素的整型数组的指针。
相关文章:
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 输出没有重复元素的动态数组(收缩数组)C++
- 正在插入动态数组
- 如何在动态数组上使用搜索函数
- C++ 动态数组每次添加时将大小增加 1 - 错误
- 静态数组的自由动态数组
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 使用 thread 类在 C++ 中构造线程的动态数组时出错
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- C++ 使用存储在动态数组中的文本文件中的数据查找模式
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 为什么 c++ 动态数组的大小没有改变?
- 具有自定义构造函数 (C++) 的类型的动态数组分配
- 指针的 C++ 动态数组 - 何时需要使用它?
- 删除动态数组时未定义标识符
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 动态数组的 C++ 重载加运算符
- 基于数组的列表 - 动态数组创建时出错