My PC's cores can synchronize to about 1.000 clock cycles accuracy

Liste des GroupesRevenir à cl c  
Sujet : My PC's cores can synchronize to about 1.000 clock cycles accuracy
De : Bonita.Montero (at) *nospam* gmail.com (Bonita Montero)
Groupes : comp.lang.c
Date : 13. Sep 2024, 18:45:41
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vc1q7b$v34v$1@raubtier-asyl.eternal-september.org>
User-Agent : Mozilla Thunderbird
#include <iostream>
#include <barrier>
#include <thread>
#include <vector>
#if defined(_WIN32)
#include <intrin.h>
#elif defined(__linux__)
#include <x86intrin.h>
#endif
using namespace std;
int main()
{
unsigned hc = thread::hardware_concurrency();
barrier bar( hc );
atomic_uint synch( hc );
atomic_uint64_t zero( 0 );
atomic_int64_t diffs( 0 );
auto thr = [&]()
{
int64_t sum = 0;
for( unsigned t = 1'000; t; --t )
{
bar.arrive_and_wait();
if( synch.fetch_sub( 1, memory_order_relaxed ) > 1 )
while( synch.load( memory_order_relaxed ) );
uint64_t tsc = __rdtsc(), expected = 0;
if( !zero.compare_exchange_weak( expected, tsc, memory_order_relaxed, memory_order_relaxed ) )
sum += abs( (int64_t)(expected - tsc) );
bar.arrive_and_wait();
synch.store( hc );
zero.store( 0, memory_order_relaxed );
}
diffs.fetch_add( sum, memory_order_relaxed );
};
vector<jthread> threads;
threads.reserve( hc - 1 );
for( unsigned t = hc - 1; t; --t )
threads.emplace_back( thr );
thr();
threads.resize( 0 );
cout << (double)diffs.load( memory_order_relaxed ) / (1'000.0 * hc) << endl;
}
My PC is a AMD 7950X 16-core system.

Date Sujet#  Auteur
13 Sep 24 * My PC's cores can synchronize to about 1.000 clock cycles accuracy7Bonita Montero
13 Sep 24 +- Re: My PC's cores can synchronize to about 1.000 clock cycles accuracy1Bonita Montero
13 Sep 24 +* Re: My PC's cores can synchronize to about 1.000 clock cycles accuracy2Tim Rentsch
14 Sep 24 i`- Re: My PC's cores can synchronize to about 1.000 clock cycles accuracy1Bonita Montero
16 Sep08:43 `* Re: DECIMAL POINT IS COMMA3Lawrence D'Oliveiro
16 Sep12:56  `* Re: DECIMAL POINT IS COMMA2Bonita Montero
16 Sep21:15   `- Re: DECIMAL POINT IS COMMA1Paul

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal