我正在爲mpi寫一個type_traits庫,但是當我將「float int
」定義爲MPI_FLOAT_INT
的類型時,我在聲明錯誤中獲得兩個或多個變量類型,那麼等效類型MPI_FLOAT_INT
在c + +?什麼是C++等效類型如果MPI_FLOAT_INT
-5
A
回答
1
唯一權威源,所述MPI standard,如(第5.9.4節MINLOC
和MAXLOC
)MPI_FLOAT_INT
定義:
數據類型
MPI_FLOAT_INT
是好像 def按以下順序說明進行操作。
type[0] = MPI_FLOAT
type[1] = MPI_INT
disp[0] = 0
disp[1] = sizeof(float)
block[0] = 1
block[1] = 1
MPI_TYPE_CREATE_STRUCT(2, block, disp, type, MPI_FLOAT_INT)
類似的結論適用於
MPI_LONG_INT
和MPI_DOUBLE_INT
。
這意味着,類型對應於struct { float a; int b; }
,但前提是,沒有填充空間被插入a
和b
之間保證。在int
是64位並且必須以8字節對齊的系統上可能不是這種情況。可能需要指示編譯器生成打包結構,例如,與海灣合作委員會:
#pragma pack(push, 1)
struct float_int
{
float a;
int b;
}
#pragma pack(pop)
注意MPI_FLOAT_INT
意在MINLOC
和MAXLOC
減少使用,以找出兩者的最小/最大float
值和持有它的編號最低的級別。
2
MPI_FLOAT_INT
這是一對32位浮點數後跟一個32位整數的。
相當於std::pair<float, int>
或struct float_int{ float f; int i;};
。
您可以嘗試使用int32_t
而不是int
和static_assert(sizeof(float) == 4);
來嘗試使尺寸正確。
0
根據Linux man page,MPI_FLOAT_INT
是被定義爲一個結構:
struct { float, int }
相關問題
- 1. 什麼是C#long類型的等效SQL Server類型?
- 2. Java中C的這些等效數據類型是什麼?
- 3. 什麼是C#等效的C#檢查
- 4. C#中的等效語法是什麼?
- 5. 什麼是此代碼的C#等效
- 6. Cocoa中的等效C#'Thread.Join()'是什麼?
- 7. 什麼是Java等效C#隊列
- 8. 什麼是C#中的等效代碼#
- 9. 什麼是C#winform中的等效UpdateSourceTrigger?
- 10. 什麼是Java的類<X>類型的C#等價物?
- 11. hibernate搜索中geo_point的等效數據類型是什麼?
- 12. 什麼是Postgres中'money'和'OID'的sqlalchemy等效列類型?
- 13. ADO中SQL Server 2008 datetime的等效數據類型是什麼?
- 14. 什麼是Perl的等效Python的類型()函數
- 15. 什麼是C#中的SQL Server的數字的等效數據類型
- 16. C++中等效數據類型的C#
- 17. 什麼是等效的lambda?
- 18. OCaml等效類型
- 19. 類型VB6等效
- 20. 等效類型++/CLI
- 21. C#列表的COM等效類型
- 22. 什麼是oracle數據類型raw的java類型等價物?
- 23. 什麼是tableresource(9)類型(pgsql結果)
- 24. 這是什麼CSS效果?
- 25. FeedOptions.EnableLowPrecisionOrderBy的效果是什麼
- 26. 這是什麼效果
- 27. 什麼是等效的參考「這個」,在C/C
- 28. 什麼是C編程語句的C#等效代碼?
- 29. 什麼是python中的等效C/C++ loselose算法
- 30. Objective-C中的C#.NET Silverlight等效componentsSeparatedByString是什麼?
這不是官方的MPI規範。 MPI不在int或float中指定字節數。 –