Ich schreibe eine type_traits-Bibliothek für mpi, aber wenn ich "float int
" als ein Typ für MPI_FLOAT_INT
definiere, bekomme ich zwei oder mehr Variablentypen in Deklarationsfehler, was ist der äquivalente Typ von MPI_FLOAT_INT
in C++?was ist der C++ äquivalente Typ, wenn MPI_FLOAT_INT
Antwort
Die einzige maßgebliche Quelle, die MPI standard, definiert als MPI_FLOAT_INT
(Abschnitt 5.9.4 MINLOC
und MAXLOC
):
Der Datentyp
MPI_FLOAT_INT
ist als ob def durch die folgende Reihenfolge von Anweisungen.
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)
ähnliche Aussagen gelten für
MPI_LONG_INT
undMPI_DOUBLE_INT
.
Es bedeutet, dass der Typ struct { float a; int b; }
entspricht, aber nur, wenn es keine Garantie, dass padding Raum zwischen a
und b
eingesetzt ist. Dies ist möglicherweise auf Systemen nicht der Fall, bei denen int
64-Bit ist und auf 8 Bytes ausgerichtet werden muss. Man könnte den Compiler anweisen müssen, gepackte Strukturen, z. mit GCC:
#pragma pack(push, 1)
struct float_int
{
float a;
int b;
}
#pragma pack(pop)
Beachten Sie, dass MPI_FLOAT_INT
um in MINLOC
und MAXLOC
Senkungen verwendet werden soll, um herauszufinden, sowohl die min/max float
Wert und den niedrigsten Nummer Rang, die es hält.
Nach den documentation:
MPI_FLOAT_INT
Dies ist ein Paar aus einem durch eine 32-Bit-Ganzzahl, gefolgt Gleitkommazahl 32-Bit ist.
Ein Äquivalent wäre std::pair<float, int>
oder struct float_int{ float f; int i;};
.
Sie können versuchen, ein bisschen besser mit int32_t
anstelle von int
und static_assert(sizeof(float) == 4);
in einem Versuch, die richtige Größe zu bekommen.
Nach Linux man page ist MPI_FLOAT_INT
eine Struktur wie folgt definiert:
struct { float, int }
- 1. Was ist der äquivalente C/C++ - Loselose-Algorithmus in Python
- 2. Was ist die äquivalente JVM in C#?
- 3. Was ist die äquivalente C# -Version von Java Webdriver @Findby?
- 4. Was ist die C# äquivalente Funktion von select/epoll/kqueue?
- 5. Was ist die äquivalente Standardfunktion der Funktion "AfxIsValidAddress"?
- 6. Was ist die "::" äquivalente Funktion in Haskell?
- 7. Was ist der moderne äquivalente (C++) Stil für die ältere (C-ähnliche) fscanf-Methode?
- 8. Was ist die äquivalente Funktion in openpyxl?
- 9. Was ist der Vec3b-Typ?
- 10. Was ist der untere Typ?
- 11. Was ist der äquivalente Wert für Apache-Konfiguration
- 12. Was ist der äquivalente -Webkit-Gradient dieses CSS?
- 13. Was ist der Typ 1UI64?
- 14. Was ist der Ord-Typ?
- 15. Was ist Nullable Typ in C#?
- 16. Was ist ein zusammengesetzter Typ in C?
- 17. Was ist Typ löschen in C++?
- 18. Was ist die äquivalente Methode in iOS für setImageNamed
- 19. Was ist 'benannter Typ'
- 20. Was ist der Typ der Funktion in Javascript Typ Checker?
- 21. Was ist der Punkt WORD-Typ in C?
- 22. Was ist der Typ für "die Hälfte" (binary16) in C#?
- 23. Was ist der Typ eines String-Literals in C++?
- 24. Was ist der Typ einer Lambda-Funktion?
- 25. äquivalente C-Funktion, unterschiedliche Ergebnisse
- 26. Was ist der Typ von setContentView()
- 27. Was die äquivalente Python-Code für diese Oktave Code ist
- 28. mysql autoincrement was ist der richtige Typ?
- 29. Was ist das äquivalente Konzept von Highstates mit Ansible?
- 30. Was ist Socket-Typ?
Das ist nicht die offizielle MPI-Spezifikation. MPI gibt nicht die Anzahl der Bytes in einem int oder float vor. –