2016-08-27 3 views
2

Kann man einstellen, welche Funktionsargumente 'global' oder 'const' Modifikatoren haben? Oder wie soll man den Code der generierten Funktion pro Funktion (zum manuellen Einfügen) zumindest untersuchen?Hat boost :: compute support const modifiers?

nächste, was ich sah, war BOOST_COMPUTE_STRINGIZE_SOURCE, wo Sie alle Kernel-Code von Hand zu schreiben, es in String speichern, kompilieren manuell, Call set_arg(argId, wrapedItems) und queue.enqueue_nd_range_kernel verwenden, die so viel komplizierter aussieht als:

BOOST_COMPUTE_CLOSURE(ftype, kick, (ftype beam), (__const voltage), { 
     return beam * sin(beam + voltage); 
    }); 

würde man hoffen, zum.

+0

Meinten Sie "Ist es möglich zu se * e *"? Meinst du: "Welche * Methode * hat einen Const Modifier? Was meinst du mit 'Global Modifier', vielleicht' Static'? –

+0

Ich denke, er meinte https://www.khronos.org/registry/cl/sdk/ 1.0/docs/man/xhtml/global.html –

+0

@GiovanniFunchal Ah, danke, wenn ja, sind sie nicht Standard C oder C++, sie sind spezifische Erweiterungen, um mit GPU Zeug umzugehen, richtig? –

Antwort

1

BOOST_COMPUTE_CLOSURE() erstellt eine Funktion, die an Boost.Compute-Funktionen wie transform() oder sort() übergeben werden kann. Im Vergleich zu BOOST_COMPUTE_FUNCTION() ermöglicht es das Erfassen von In-Scope-C++ - Variablen. Es wird kein OpenCL-Kernelobjekt erstellt, daher ist es nicht wirklich erforderlich, ein Adressraumqualifikationsmerkmal anzugeben, da es niemals mit Zeigern, sondern nur mit Werten arbeitet.

Wenn Sie jedoch einen eigenen Kernel haben und einen __constant Puffer als Argument übergeben möchten, verwenden Sie eine constant_buffer_iterator.

Verwandte Themen