icetSingleImageStrategy(3)

πŸ’– icetSingleImageStrategy(3) πŸ’–

okay bestie, welcome to the IceT Reference β€” this is manual section 3, the library-calls zone, and we're talking about icetSingleImageStrategy. yes it's a long name. yes it's iconic. let's go 🫢


✨ NAME ✨

icetSingleImageStrategy β€” sets the sub-strategy used to composite the image for a single tile. that's it. that's the whole job. tiny function, big responsibilities πŸ’…


🌸 Synopsis 🌸

#include <IceT.h>

void icetSingleImageStrategy(   IceTEnum   strategy  );

πŸ¦‹ Description πŸ¦‹

so here's the tea. the main IceT algorithms are specially designed to composite data that's defined on multiple tiles. and some of those algorithms β€” specifically ICET_STRATEGY_REDUCE and ICET_STRATEGY_SEQUENTIAL β€” do at least part of their work by compositing <em>single images</em> together. like, that's their whole bit.

and because IceT is a generous queen πŸ‘‘, it ships with multiple separate strategies for doing that single-image compositing. icetSingleImageStrategy is how you pick which one you want. main character energy, honestly.

you choose from one of these provided enumerated values:

  • ICET_SINGLE_IMAGE_STRATEGY_AUTOMATIC β€” it literally just picks for you ✨ it decides which single image strategy to use based on the number of processes participating in the composition. let it cook.
  • ICET_SINGLE_IMAGE_STRATEGY_BSWAP β€” the classic binary swap compositing algorithm. the vintage. the original. at each phase of the algorithm, every process partners up with another one, sends half of its image to its partner, and receives the opposite half from its partner. then the processes get partitioned into two groups that each have the same image part, and the whole thing recurses. it's giving "divide and conquer but make it a duet" πŸŽ€
  • ICET_SINGLE_IMAGE_STRATEGY_RADIXK β€” the radix-k compositing algorithm, which is basically binary swap's cooler cousin except groups of processes can be bigger than two. and yeah, bigger groups mean more overall messages, but the upside is that it overlaps blending and communication. the size of the groups is indirectly controlled by the ICET_MAGIC_K environment variable or CMake variable. iykyk 🧚
  • ICET_SINGLE_IMAGE_STRATEGY_TREE β€” at each phase, each process partners with another, and <em>one</em> of the processes sends its entire image to the other. then the algorithm recurses with the group of processes that received images, over and over, until only one process has an image. it's a glow-up tournament bracket fr fr 🌈
also important, bestie: by default IceT sets the single image strategy to ICET_SINGLE_IMAGE_STRATEGY_AUTOMATIC when a context is created. so that's the one you get if you never pick anything else. no cap. πŸ™ˆ

πŸ’€ Errors πŸ’€

  • ICET_INVALID_ENUM β€” the strategy argument does not represent a valid single image strategy. you gave it a vibe it did not recognize and it said no thank you 😭

😌 Warnings 😌

None. literally none. nothing to warn you about, we're chill πŸ“


πŸ› Bugs πŸ›

None known. a clean page, we love to see it ⭐


Copyright (C)2010 Sandia Corporation

Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain rights in this software.

This source code is released under the New BSD License.


πŸ‘€ See Also πŸ‘€


and that's the whole page, bestie!! πŸŽ€ this was the IceT Reference, dated September 26, 2014, and yes it's the icetSingleImageStrategy(3) page β€” same girl, same manual, just with way better vibes now. go composite something gorgeous πŸ’–βœ¨πŸ¦‹