Ich hab mir eine Template Klasse wie folgt gebaut:
Problem ist jetzt, dass die Methode execute() anhand des Datentyps T entscheiden muss, ob sie die Methode SGEMM() oder DGEMM() der MKL (Math Kernel Library / Matrixmultiplikation) aufruft.
Ich bräuchte also innerhalb von execute() so ein Konstrukt:
Die Frage ist jetzt, ob sowas überhaupt geht, wenn ja wie bzw. wenn nein, wie umgehe ich das Problem?
Danke schonmal im Voraus!
/Edit: Ich denk es wird nicht gehen - die Template Direktiven werden ja vom Compiler statisch ausgewertet und nicht zur Laufzeit. Ich werd mir Codegeneratoren schreiben, die mir die verschiedenen Quelltexte erzeugen.
Falls jemandem noch was einfällt, darf er es aber gerne posten (:
Code:
template <class T> void MKLBench
{
public:
MklBench(int m, int n, int k);
void execute();
...
};
Problem ist jetzt, dass die Methode execute() anhand des Datentyps T entscheiden muss, ob sie die Methode SGEMM() oder DGEMM() der MKL (Math Kernel Library / Matrixmultiplikation) aufruft.
Ich bräuchte also innerhalb von execute() so ein Konstrukt:
Code:
...
if( T == float )
{
SGEMM();
}
else
{
DGEMM();
}
...
Die Frage ist jetzt, ob sowas überhaupt geht, wenn ja wie bzw. wenn nein, wie umgehe ich das Problem?
Danke schonmal im Voraus!
/Edit: Ich denk es wird nicht gehen - die Template Direktiven werden ja vom Compiler statisch ausgewertet und nicht zur Laufzeit. Ich werd mir Codegeneratoren schreiben, die mir die verschiedenen Quelltexte erzeugen.
Falls jemandem noch was einfällt, darf er es aber gerne posten (:
Zuletzt bearbeitet: