On Tue, 20 Oct 2015, Bernd Schmidt wrote:
> On 10/20/2015 08:34 PM, Alexander Monakov wrote: > > NVPTX does not support alloca or variable-length stack allocations, thus > > heap allocation needs to be used instead. I've opted to make this a generic > > change instead of guarding it with an #ifdef: libgomp usually leaves thread > > stack size up to libc, so avoiding unbounded stack allocation makes sense. > > > > * task.c (GOMP_task): Use a fixed-size on-stack buffer or a heap > > allocation instead of a variable-size on-stack allocation. > > > + char buf_fixed[2048], *buf = buf_fixed; > > This might also not be the best of ideas on a GPU - the stack size isn't all > that unlimited, what with there being lots of threads. If I do > > size_t stack, heap; > cuCtxGetLimit (&stack, CU_LIMIT_STACK_SIZE); > > in the nvptx-run program we've used for testing, it shows a default stack size > of just 1kB. Thanks, NVPTX will need a low buf_fixed size, perhaps 64 bytes or so. What about the generic case, should it use a more generous threshold, or revert to existing unbounded alloca? Any ideas how big is the required allocation size is in practice? Thanks. Alexander