Thanks Alon! So here is something very weird. I could get the memory usage 
go all the way to 2GB when I changed my testing code. This was my original 
test code. So basically I was just adding elements to std::vector 
infinitely.

class TestClass{
 private:
  int t = 0;
};

struct Data {
 int t;
 TestClass obj;
};

typedef std::vector<Data> Vec;

Vec someVec;

using namespace std;

int main() {
 printf("hello, world!\n");

 while(1){
  Data data;
  someVec.push_back(data);
 } 

 return 0;
}

With this code, the WASM memory was going all the way to 1GB.

But when I changed the code to this, where I am writing some value after 
acquiring memory, then I am able to see the memory usage go all the way up 
to 2 GB. Could this be a bug? I am on emscripten 2.0. 


int main() {
  printf("hello, world!\n");
  char *p = nullptr;
  int byteSize = 50 * 1024 * 1024;
  while(1){
        p = new char(byteSize);
        p[byteSize] = 20;
  }   
  return 0;
}

Also It is very encouraging to see that 4GB is considered for PThreads as 
well! Thanks.

One follow up question. May be a dumb one. What could be the potential 
problems with ALLOW_MEMORY_GROWTH missing in PThreads mode? I see that when 
the Wasm is instantiated, the overall memory that the Chrome tab was taking 
was similar to the one taken by the WASM built with ALLOW_MEMORY_GROWTH. Is 
it that, we will not be able to instantiate WASM on low end devices if 
built with ALLOW_MEMORY_GROWTH=0?

Greatly appreciate your help Alon!

Thanks,
Prashanth Nethi

On Saturday, August 22, 2020 at 1:50:57 AM UTC+5:30 [email protected] wrote:

> I think you can do any number up to 2GB, including 2GB - 64Kb. So the 
> limit isn't 1GB, unless you see that on some specific browser? Could be a 
> bug.
>
> It should soon be possible to do up to 4GB for the initial memory (without 
> growth), thanks to a spec change, 
> https://github.com/WebAssembly/spec/pull/1174
>
> On Thu, Aug 20, 2020 at 8:10 AM Prashanth Nethi <[email protected]> 
> wrote:
>
>> Hi,
>>
>> I am currently building WASM with the following flags, to enable PThreads 
>> in Wasm.
>> -s USING_PTHREADS=1 -s INITIAL_MEMORY=1999MB -s MAXIMUM_MEMORY=2GB. 
>>
>> This works wonderfully for our use cases! In fact we are able to get 2x 
>> performance in some cases!
>>
>> When I checked the max memory that the Wasm could use, with PThreads 
>> enabled, it got capped at 1 GB. I am seeing that when the WASM is built 
>> with ALLOW_MEMORY_GROWTH, the Wasm can use upto 2GB. I know that 
>> ALLOW_MEMORY_GROWTH with USE_PTHREADS is discouraged so can't look at that 
>> as a possible solution.
>>
>> Is there anyway I can get Wasm to use 2GB (or even potentially 4GB in the 
>> future) with PThreads enabled? Is it that I am missing using some 
>> configuration options? 
>>
>> I am really hoping there is a way to increase the WASM cap to 2GB, as 
>> using PThreads, solves our use cases in a big way.
>>
>> Thanks,
>> Prashanth Nethi
>>
>> -- 
>> 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/730a6796-5b14-4a9e-a1d8-298415c67cd1n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/emscripten-discuss/730a6796-5b14-4a9e-a1d8-298415c67cd1n%40googlegroups.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/86a9fc74-2036-4749-8212-29f6802615d0n%40googlegroups.com.

Reply via email to