| Autor |
Nachricht |
o4kareg
Mitglied
Benutzerprofil
Anmeldungsdatum: 14.03.2012
Beiträge: 36
|
o4kareg Mitglied
16:53:18 21.08.2012 Titel: |
[OPENCL]Addition zum Pointer oder eine Adresse rauskriegen mit & geht in OPENCL nicht? |
Zitieren |
Hallo Zusammen,
Man sagt dass Opencl C99 oder sogar neuere C stan**** erfüllt, auf papier.
Aber ein Stück von Code geht die normale Verwahlten von Pointer nicht,
z.B. Zeiger auf 2 Bytes ( unsigned short) in Datenarray auszuwählen:
| C++: | __global unsigned char * buffer;...
...
unsigned int tolookPos = (irgendein Zahl)
unsigned short *l2Num = &(buffer[tolookPos]);// << SYNTAXFEHLER!!!! | |
Es geht auch nicht mit unsigned char * l2Num,
oder mit
| C++: | | unsigned short *l2Num = buffer + tolookPos | |
verschiedene Kasten wie (unsigned short *) sind auch voll egal.
wie kriege ich den Blöden Pointer auf 2 bytes raus? Und generell,
was ich für ein Problem in GPGPU mit Pointer so umzugehen?
Oder wird es da irgendwie anders gescheirben?
als ich weiss, in CUDA wäre es erlaubt
... = &(buffer[tolookPos]);
und nicht = buffer + tolookPos;
was eigentlich dasselbe ist.
P.S. S T A N D A R T ist kein Beleidigung desweger die Sterne daraus zu machen ist unangemessen |
Zuletzt bearbeitet von o4kareg am 16:55:17 21.08.2012, insgesamt 1-mal bearbeitet |
|
 |
DirkB
Unregistrierter
|
DirkB Unregistrierter
17:02:05 21.08.2012 Titel: |
|
Zitieren |
Du bist da gerade im Bereich der Variablendefinition. Da ist einiges anders
Wo zeigt denn buffer hin?
Wie lautet die genaue Fehlermeldung?
| o4kareg schrieb: | P.S. S T A N D A R T ist kein Beleidigung desweger die Sterne daraus zu machen ist unangemessen
| Trotzdem ist es falsch.
Angemessen wäre, sich über die richtige Schreibweise zu informieren.
Die Art und Weise wie Etwas/Jemand steht hat damit nichts zu tun. |
|
|
|
 |
o4kareg
Mitglied
Benutzerprofil
Anmeldungsdatum: 14.03.2012
Beiträge: 36
|
o4kareg Mitglied
17:11:10 21.08.2012 Titel: |
|
Zitieren |
Nein, es ist innerhalb eine Methode die als eine Eingabewariable den buffer
Zeiger(Array) hat. Anstatt von o.g. Codefragment funktioniert voll richtig
dieses :
| C++: | | unsigned short l2Num = buffer[tolookPos] << 8 + buffer[tolookPos+1] ; | |
Hier habe ich aber extra die Rechneroperationen. |
|
|
|
 |
Allesquatsch
Mitglied
Benutzerprofil
Anmeldungsdatum: 24.05.2012
Beiträge: 91
|
Allesquatsch Mitglied
17:41:57 21.08.2012 Titel: |
Opencl: Wohl eher "C99 alkoholfrei" |
Zitieren |
| o4kareg schrieb: | | Man sagt dass Opencl C99 oder sogar neuere C stan**** erfüllt, auf papier. |
In der Wikipedia ist nur von "basiert" und nicht von "erfüllt" die Rede. Explizit sind auch Einschränkungen erwähnt. Beispielsweise dürfte demnach Deine Pointerarithmetik nur bei Arrays fester Länge funktionieren.
Gestehe, dass ich keinerlei Erfahrung damit habe, aber aus dem wenigen Gelesenen erscheint mit Deine Fehlermeldung nur logisch.
Ciao, Allesquatsch |
|
|
|
 |
DirkB
Unregistrierter
|
DirkB Unregistrierter
17:49:15 21.08.2012 Titel: |
|
Zitieren |
Ist es auf deinem System überhaupt möglich, ein short auf eine ungerade Adresse zu legen? |
|
|
|
 |
o4kareg
Mitglied
Benutzerprofil
Anmeldungsdatum: 14.03.2012
Beiträge: 36
|
o4kareg Mitglied
18:12:40 21.08.2012 Titel: |
|
Zitieren |
| DirkB schrieb: | | Ist es auf deinem System überhaupt möglich, ein short auf eine ungerade Adresse zu legen? |
1)Wieso nicht?
2) Ist erst egal da dies als SYNTAXFEHLER bezeichnet wird nicht laufzeitfehler oder so.
Genauer kann ich nicht sagen, in OpenCL bekommt man keine klare Fehlermeldung, höchstens kann man rauskriegen in welcher Zeile das Fehler ist. |
|
|
|
 |
Stee___
Unregistrierter
|
Stee___ Unregistrierter
19:59:09 21.08.2012 Titel: |
Re: [OPENCL]Addition zum Pointer oder eine Adresse rauskriegen mit & geht in OPENCL nicht? |
Zitieren |
| o4kareg schrieb: |
P.S. S T A N D A R * |
Ist eine wohl eine Beleidigung, für die Augen.
Würde mich nicht wundern wenn in OpenCL so einiges nicht geht, ist ja schließlich von Apple, kann also nur Kappes sein. |
|
|
|
 |
Minimee
Mitglied
Benutzerprofil
Anmeldungsdatum: 11.10.2004
Beiträge: 936
|
Minimee Mitglied
20:03:06 21.08.2012 Titel: |
|
Zitieren |
Warum machst du kein Array fester Länge? |
|
|
|
 |
dot
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 5618
|
dot Mitglied
20:06:49 21.08.2012 Titel: |
|
Zitieren |
Dein buffer liegt offenbar im __global Adressraum, also sollte l2Num wohl auch dort hinzeigen:
| C++: | | __global unsigned short *l2Num = &(buffer[tolookPos]); | |
| o4kareg schrieb: | | DirkB schrieb: | | Ist es auf deinem System überhaupt möglich, ein short auf eine ungerade Adresse zu legen? |
1)Wieso nicht? |
Alignment und so, sollte aber eher nur für die Performance eine Rolle spielen...
| o4kareg schrieb: | 2) Ist erst egal da dies als SYNTAXFEHLER bezeichnet wird nicht laufzeitfehler oder so.
Genauer kann ich nicht sagen, in OpenCL bekommt man keine klare Fehlermeldung, höchstens kann man rauskriegen in welcher Zeile das Fehler ist. |
Du könntest uns den GENAUEN Syntaxfehler nennen, den der Compiler dir gibt... |
_________________ one point of view will never reveal the entire scene.
Zuletzt bearbeitet von dot am 20:11:20 21.08.2012, insgesamt 4-mal bearbeitet |
|
 |
MisterX
Unregistrierter
|
MisterX Unregistrierter
09:07:27 22.08.2012 Titel: |
|
Zitieren |
Da OpenCL keinerlei dynamische Speicherstrukturen in den Kernels erlaubt, denke ich dass Zeiger allgemein nicht (richtig) definiert sind. |
|
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|