Ok, that make sense. Maybe that's not possible.

One workaround I am thinking of is to have several builds with different memory and threading requirements: 64MB, 256MB, 512MB  x 1 thread, 2 threads, 4 threads, 8 threads. And instantiate one that best suit the data to be processed and the capabilities of the host platform.

Or maybe it is possible to 'inject' these values in the emscripten generated .js file. For example, I can see a "INITIAL_TOTAL_MEMORY=Module["TOTAL_MEMORY"]||536870912" and "var requestedPoolSize=3" in my output .js file. I wonder if doing some regexp/replace of these values would simply just work (of course, before loading the .js file. This "hack" would be done on the server side before delivering the .js).

Le 04/12/2019 à 23:22, 'Derek Schuff' via emscripten-discuss a écrit :

One possible issue with TOTAL_MEMORY IIRC is that the emscripten glue tries to instantiate the wasm memory very early in script loading to maximize the chance of getting the reservation of contiguous address space, before the browser and VM have made so many allocations (believe it or not, this made a big difference on 32-bit systems). So that might make it harder to set dynamically.

On Tue, Dec 3, 2019 at 2:50 AM Gabriel Cuvillier <[email protected] <mailto:[email protected]>> wrote:

    Hello, I have some question related to TOTAL_MEMORY and
    PTHREAD_POOL_SIZE:

    Is it possible to define (or override) these value at Wasm
    instantiation
    time, instead of at compilation/link time.

    The reason for TOTAL_MEMORY is the following: when compiling with
    threading support (USE_PTHREADS=1) we can't reliably use
    ALLOW_MEMORY_GROWTH due to potential performance issues, so we
    have to
    use a fixed memory size through TOTAL_MEMORY.  But having to define
    fixed size memory at compilation/link time is not quite good for some
    scenarios as, at compilation time, we are generally lacking context
    about the data size to be processed (example: data size depends on an
    input file provided by the user). So in the end, defining
    TOTAL_MEMORY
    is mostly empirical/guesswork, and can lead either to crashes (not
    enough memory) or waste of memory on the client machine (too much
    reserved memory).

    At runtime however, when a Web App runs from JS space and before
    instantiating a .wasm, there is generally more context: it is
    sometime
    possible to know in advance how much memory would be needed to
    process
    some input data. So my question is: is it possible to define or
    override
    "TOTAL_MEMORY" at Wasm instanciation time?


    Same question for "PTHREAD_POOL_SIZE". Some C++ programs does not
    support well the fact that Worker threads initialization are
    asynchronous (or are they? I am not sure, but I ran into problems
    recently), and as so, it is preferable to let Emscripten runtime
    create
    a fixed number of Worker threads before the program starts. But, same
    issue here: it is not possible to know at compilation/link time the
    ideal number of threads to use on a client machine. Still, it is
    possible to have more information when the Web App runs (just have to
    query from JS), and before Wasm have to be started. So the
    question is:
    is it possible to define or override "PTHREAD_POOL_SIZE" at Wasm
    instantiation time ?


    Thanks for any insights !

    Cheers,

    Gabriel

-- You received this message because you are subscribed to the Google
    Groups "emscripten-discuss" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to [email protected]
    <mailto:emscripten-discuss%[email protected]>.
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/emscripten-discuss/5061b1a4-cb00-59e7-d57b-75793c3e1c5a%40gmail.com.

--
You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/CAAEAhvfxeUzMBvMDJLZGUhZPEz6L38gTv8PL9bopu75%2Bd6R%3DYw%40mail.gmail.com <https://groups.google.com/d/msgid/emscripten-discuss/CAAEAhvfxeUzMBvMDJLZGUhZPEz6L38gTv8PL9bopu75%2Bd6R%3DYw%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/emscripten-discuss/219d740f-98dd-3eed-6bf0-50b43bf36e19%40gmail.com.

Reply via email to