मेरे पास एक फ़ंक्शन है जो एक Func देता है और मैं इनपुट बफ़र्स सेट करना चाहता हूं जिन्हें ImageParams के रूप में परिभाषित किया गया है। मुझे github repo से कोई ट्यूटोरियल/परीक्षण नहीं मिल रहा है जो इस प्रकार की सुविधा का उपयोग करता है। मैं एओटी में संकलित करने के लिए जेनरेटर का उपयोग कर सकता हूं और उसके बाद किसी अन्य प्रोग्राम को लिंक कर सकता हूं, लेकिन मुझे यकीन है कि बिना किसी संकलन के उसी उदाहरण में ऐसा करने का एक तेज़ तरीका है ... मुझे बस सही तरीका नहीं दिख रहा है!

मेरे द्वारा उपयोग किए जाने वाले कोड का टुकड़ा यहां दिया गया है:

//header
Func create_func();

//usage
Func f = create_func();

Buffer<uint8_t> input; //initialized somewhere
Buffer<uint8_t> output0; //initialized somewhere
Buffer<uint8_t> output1; //initialized somewhere

f.in(0).set(input); // I need to set the buffer here right?

f.realize({output0, output1});

संपादित करें: मुझे एक "वर्कअराउंड" मिला, जिसका अर्थ है कि मैं ImageParam के संदर्भ को आउट पैरामीटर के रूप में पास करता हूं:

ImageParam p;
create_func(&p);
p.set(input);

लेकिन ऐसा लगता है कि धोखा है ना? यदि संभव हो तो मैं वास्तव में Func से इनपुट पैरामीटर खींचना चाहूंगा...

0
Philippe Paré 20 मार्च 2017, 20:26
create_func() को कैसे परिभाषित किया जाता है? लौटा हुआ Func किस इनपुट का उपयोग करता है? यह कुछ इस तरह दिखना चाहिए Func create_func( Func input ) { Func result("myFunc"); result( x, y ) = input( x, y ); return result; } या आप एक खाली Func result बना सकते हैं और इसे create_func में पास कर सकते हैं ताकि प्रत्येक परिणाम का अपना नाम हो सके।
 – 
Khouri Giordano
20 मार्च 2017, 22:13

1 उत्तर

सबसे बढ़िया उत्तर

आपका समाधान धोखा नहीं दे रहा है, और मैं कहूंगा कि एक संदर्भ द्वारा पारित परम में, एक आउट परम नहीं। इच्छित उपयोग है:

   ImageParam input;
   Func output = create_func(input);

   ... later

   input.set(some_actual_image);
   output.realize(...);

यदि आप बस कुछ वस्तु को उसके इनपुट के साथ वापस लेने योग्य गुणों के रूप में उजागर करना चाहते हैं, तो आप यह कर सकते हैं:

struct MyPipeline {
  ImageParam input1, input2;
  Func output;

  MyPipeline() {
    output(x, y) = ...
  }
};

MyPipeline p;
p.input1.set(foo);
p.output.realize(...);

यह सिर्फ जेनरेटर का उपयोग करने के बहुत करीब है।

1
Andrew Adams 20 मार्च 2017, 23:40