On 10/08/2017 08:14 PM, Hartmut Kaiser wrote:
> Steve,
> 
>> Thank you Harmut, I will report the bug.
> 
> 
> Thanks!
> 
>> But so this means that the only way to use my function remotely is to get
>> rid of all possible stack allocations?
>>
>> Or is there any setting/parameter of hpx to ask for more space in the
>> stack?
> 
> You can increase the stack-size globally. I'd suggest to change the code in 
> question to not allocate large chunks of memory on the stack, though.
> 
> You can pass -Ihpx.stacks.small_size=0x20000 or similar on the command line 
> (0x8000 is the default).

With actions, you can also change the stack programmatically by using
the macro HPX_ACTION_USES_STACK. In your specific case, this would be:
HPX_ACTION_USES_STACK(testio_action, hpx::threads::thread_stacksize_large)
or short:
HPX_ACTION_USES_LARGE_STACK(testio_action)

see:
https://github.com/STEllAR-GROUP/hpx/blob/master/hpx/runtime/actions/basic_action.hpp#L930-L951

The same can be done for the priority with HPX_ACTION_HAS_HIGH_PRIORITY
(and friends:
https://github.com/STEllAR-GROUP/hpx/blob/master/hpx/runtime/actions/basic_action.hpp#L966-L992)

> 
> HTH
> Regards Hartmut
> ---------------
> http://boost-spirit.com
> http://stellar.cct.lsu.edu
> 
> 
>>
>> Thank you,
>> Steve
>>
>>> On Oct 8, 2017, at 9:33 AM, Hartmut Kaiser <[email protected]>
>> wrote:
>>>
>>> Just making sure you receive this response, Steve...
>>>
>>> Regards Hartmut
>>> ---------------
>>> http://boost-spirit.com
>>> http://stellar.cct.lsu.edu
>>>
>>>
>>>> -----Original Message-----
>>>> From: Hartmut Kaiser [mailto:[email protected]]
>>>> Sent: Sunday, October 8, 2017 9:33 AM
>>>> To: '[email protected]' <[email protected]>
>>>> Subject: RE: [hpx-users] thread_stacksize_large for HPX_PLAIN_ACTION
>> not
>>>> working?
>>>>
>>>> Steve,
>>>>
>>>>> After long debugging of my code I’ve found that calling hex::async on
>> an
>>>>> Actions that allocates some data in the stack results in SEG_FAULT.
>> The
>>>>> same is not true if I use simple (local) function calls.
>>>>
>>>> I think that we don't send the executor over the wire, they probably
>> will
>>>> not work even for local invocations of actions.
>>>> This is clearly a bug (i.e. missing implementation). Would you mind
>>>> opening a ticket and attach a smallest possible self-contained test
>> case?
>>>>
>>>> Thanks!
>>>> Regards Hartmut
>>>> ---------------
>>>> http://boost-spirit.com
>>>> http://stellar.cct.lsu.edu
>>>>
>>>>
>>>>>
>>>>> Here is my code:
>>>>>
>>>>> ———————————
>>>>>
>>>>> int test(){
>>>>>  char filename[64*1024];
>>>>>
>>>>>  printf("DONE\n");
>>>>>  return 0;
>>>>>
>>>>> }
>>>>>
>>>>> HPX_PLAIN_ACTION(testio)
>>>>>
>>>>> int hpx_main(boost::program_options::variables_map& vm)
>>>>> {
>>>>>  hpx::parallel::execution::default_executor fancy_executor(
>>>>>            hpx::threads::thread_priority_high,
>>>>>            hpx::threads::thread_stacksize_large);
>>>>>
>>>>>  testio_action act;
>>>>>  hpx::future<int> out = hpx::async(fancy_executor, act,
>>>>> hpx::find_here());
>>>>>
>>>>>  out.get();
>>>>>
>>>>>  return hpx::finalize();
>>>>> }
>>>>> ———————————
>>>>>
>>>>> This code results in a SEG_FAULT in test().
>>>>>
>>>>> Instead if I use the same function test() as a local call with:
>>>>>  hpx::future<int> out = hpx::async(fancy_executor, &testio);
>>>>>
>>>>> Works correctly.
>>>>>
>>>>> What is going wrong using the Action? Should I add any settings to my
>>>>> executor or to HPX to tell that my actions require a bit more stack
>>>>> allocation?
>>>>>
>>>>> Thank you,
>>>>> Steve
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> hpx-users mailing list
>>>>> [email protected]
>>>>> https://mail.cct.lsu.edu/mailman/listinfo/hpx-users
>>>
> 
> _______________________________________________
> hpx-users mailing list
> [email protected]
> https://mail.cct.lsu.edu/mailman/listinfo/hpx-users
> 

_______________________________________________
hpx-users mailing list
[email protected]
https://mail.cct.lsu.edu/mailman/listinfo/hpx-users

Reply via email to