Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C (C89, C99 und C11) ::  [OPENCL]Addition zum Pointer oder eine Adresse rauskriegen mit & geht in OPENCL nicht?  
Gehen Sie zu Seite 1, 2  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
o4kareg
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.03.2012
Beiträge: 36
Beitrag 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 :mad:


Zuletzt bearbeitet von o4kareg am 16:55:17 21.08.2012, insgesamt 1-mal bearbeitet
DirkB
Unregistrierter




Beitrag 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 :mad:
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
Beitrag 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
Beitrag 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




Beitrag 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
Beitrag 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




Beitrag 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
Beitrag 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
Beitrag 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




Beitrag 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.
c++.de :: C (C89, C99 und C11) ::  [OPENCL]Addition zum Pointer oder eine Adresse rauskriegen mit & geht in OPENCL nicht?  
Gehen Sie zu Seite 1, 2  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




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.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.