I am facing a new problem with running multithreaded applications compiled
with m5threads on gem5 in SE mode.
The application I am using has 4 threads and all 4 threads work on the same
function. The application is a breadth first search algorithm which works
on a large graph.
So, I have 4 threads which do bfs independently. When I run this in gem5 SE
mode, I see that the first thread is created and it does all the bfs work
and the remaining 3 threads just get created and the program exits (I mean
they don't do any work in the bfs function).
I see this is something similar to sequential execution.
I guess I am missing some command line argument but can't find what it is.
I am using the default CPU which is AtomicSimpleCPU (as I don't use cpu
argument) and use 4 cores (as I have 4 threads).
Any help would be appreciated.

On Sat, Aug 7, 2021 at 9:10 PM Hossein Golestani <hosse...@umich.edu> wrote:

> Hi Krishnan,
>
> The SE mode does not have any thread scheduler. You should have as many
> cores as the maximum number threads your program may launch. In your
> example, since your program has two threads, two cores are needed, each
> running of the threads.
>
> Thanks,
> Hossein
>
>
> On Fri, Aug 6, 2021 at 5:16 AM krishnan gosakan <
> krishnan.gosa...@gmail.com> wrote:
>
>> Seems like this problem arise only when number of cores is set to 1.
>> When I increase the number of cores, I see that pthread_join is working
>> perfectly.
>> Not sure if this is kind of a limitation.
>> Any idea?
>>
>> On Fri, Aug 6, 2021 at 11:16 AM krishnan gosakan <
>> krishnan.gosa...@gmail.com> wrote:
>>
>>> Hi Hossein,
>>> I used the m5thread_x86.o file and compiled my sample code (attached
>>> with this mail). I used the following 2 commands to build my file
>>>
>>> gcc -g -O3 -c -o semodePthread.o semodePthread.c
>>> gcc -static -o semodePthread semodePthread.o m5threads_x86.o
>>>
>>> By running semodePthread in gem5 se mode, I see that pthread_create is
>>> succeeding but it gets stuck in pthread_join. Also I see printf in thread
>>> function is not running.
>>> Am I missing something? Or am I building it wrong?
>>> ANy suggestions would be greatly appreciated.
>>>
>>> On Mon, Jul 26, 2021 at 2:03 AM Hossein Golestani <hosse...@umich.edu>
>>> wrote:
>>>
>>>> [I'm resending my reply without the attachments in case they caused it
>>>> to get into the spam folder.]
>>>>
>>>> Hi Krishnan,
>>>>
>>>> I remember that I also failed to build m5threads on a particular
>>>> system, but I managed to build it on another system with a relatively old
>>>> config (I have attached the output m5threads object files for x86 and ARM
>>>> v7 to this email). If I remember correctly, that system had the Linux
>>>> kernel 3.19 and gcc 4.8. You should be able to link the attached object
>>>> file to your multi-threaded program compiled on a system with a newer
>>>> kernel/compiler. Hope this helps.
>>>>
>>>> Thanks,
>>>> Hossein
>>>>
>>>>
>>>> On Sat, Jul 24, 2021 at 11:24 PM krishnan gosakan <
>>>> krishnan.gosa...@gmail.com> wrote:
>>>>
>>>>> Hi Hossein,
>>>>> I tried building m5threads but it failed. What system configuration
>>>>> are you using to build m5threads?
>>>>> What kernel version do you use and what compiler do you use?
>>>>>
>>>>> On Sat, Jul 24, 2021 at 10:28 PM Hossein Golestani <hosse...@umich.edu>
>>>>> wrote:
>>>>>
>>>>>> Hi Krishnan,
>>>>>>
>>>>>> I use m5threads, which is a light-weight alternative for pthread, to
>>>>>> simulate multi-threaded programs in the SE mode:
>>>>>> https://github.com/gem5/m5threads
>>>>>> (I'm not sure if there are any other ways.)
>>>>>>
>>>>>> Thanks,
>>>>>> Hossein
>>>>>>
>>>>>>
>>>>>> On Sat, Jul 24, 2021 at 11:00 AM krishnan gosakan via gem5-users <
>>>>>> gem5-users@gem5.org> wrote:
>>>>>>
>>>>>>> Hi all,
>>>>>>> I am trying to run a code with pthread in gem5 se mode. The code
>>>>>>> runs perfectly when launched from command prompt but pthread_create 
>>>>>>> returns
>>>>>>> error code 11 when run in se mode. Is there anything special I should 
>>>>>>> do to
>>>>>>> make pthread run in se mode. From the tests directory, I see that C++
>>>>>>> std::thread is running perfectly in gem5 se mode. Any help would be
>>>>>>> appreciated.
>>>>>>> Thank you.
>>>>>>>
>>>>>>> Sample code I use in gem5 se mode
>>>>>>>
>>>>>>> #include <stdio.h>
>>>>>>> #include <pthread.h>
>>>>>>>
>>>>>>> void *doWork1(void *arg)
>>>>>>> {
>>>>>>>     for (int i=0; i<1000000000; i++)
>>>>>>>         ;
>>>>>>>     printf("work completed\n");
>>>>>>> }
>>>>>>>
>>>>>>> int main()
>>>>>>> {
>>>>>>>     pthread_t thread;
>>>>>>>     int error = pthread_create(&thread, NULL, doWork1, NULL);
>>>>>>>     if (error == 0)
>>>>>>>     {
>>>>>>>         printf("thread created\n");
>>>>>>>         pthread_join(thread, NULL);
>>>>>>>         printf("thread work complete\n");
>>>>>>>     }
>>>>>>>     else
>>>>>>>     {
>>>>>>>         printf("error in thread creation %d\n",error);
>>>>>>>     }
>>>>>>>     return 0;
>>>>>>> }
>>>>>>>
>>>>>>> --
>>>>>>> Regards,
>>>>>>> Krishnan.
>>>>>>> _______________________________________________
>>>>>>> gem5-users mailing list -- gem5-users@gem5.org
>>>>>>> To unsubscribe send an email to gem5-users-le...@gem5.org
>>>>>>> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> Regards,
>>>>> Krishnan.
>>>>>
>>>>
>>>
>>> --
>>> Regards,
>>> Krishnan.
>>>
>>
>>
>> --
>> Regards,
>> Krishnan.
>>
>

-- 
Regards,
Krishnan.
_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to