Martin Thompson asserts that a STM that relies on a ref that relies on CAS will ultimately be limited by Amdahl's law. Amdahl's law being that the maximum performance of a parallel program is limited by the sequential (non-parallel) part of the program. Is Martin Thompson saying that CAS is by its nature non-parallel?
Why is a Compare-And-Swap operation limited by Amdahl's law?
187 views Asked by hawkeye At
1
There are 1 answers
Related Questions in CONCURRENCY
- Unexpected inter-thread happens-before relationships from relaxed memory ordering
- Multiple Processes, Multiple Processors, Single Priority Queue - Java Thread-Safe and Concurrency -
- Efficiently processing many small elements of a collection concurrently in Java
- Zig Concurrency Vs Erlang Concurrency, is Zig less efficient than Erlang?
- Two Update statements on a row are running simultaneously with no locking in MYSQL
- How to Identify Specific Transaction Anomalies in a Given Schedule?
- How can I improve concurrent message processing with Google Task Queue?
- Why does the following program printf "thread 1 exists" twice in WSL2?
- ModelState.IsValid is false when its Data Model Concurrency Token is non nullable
- .NET A second operation was started on this context instance before a previous operation completed
- Can someone tell me what's wrong with mi Task.await?
- I am a beginner. More than problems, I have ideas I share my code ;D. NO RULES
- Understanding Potential Deadlock in Resource Pool Implementation Described in "Go in Action"
- Why are pre-allocated stacks expensive, given 64-bit virtual memory?
- Concurrency issues with server-sent events in Python
Related Questions in PARALLEL-PROCESSING
- How to calculate Matrix exponential with Tailor series PARALLEL using MPI c++
- Efficiently processing many small elements of a collection concurrently in Java
- Parallelize filling of Eigen Matrix in C++
- Memory efficient parallel repeated rarefaction with subsequent matrix addition of large data set
- How to publish messages to RabbitMQ by using Multi threading?
- Running a C++ Program with CMake, MPI and OpenCV
- Alternative approach to io.ReadAll to store memory consumption and send a PUT Request with valid data
- Parallelize nested loop with running sum in Fortran
- Can I use parfor within a parfeval in Matlab R2019b and if yes how?
- Parallel testing with cucumber, selenium and junit 5
- Parallel.ForEach vs ActionBlock
- Passing variable to foreach-object -parallel which is with in start-job
- dbatools SQL Functions Not Running In Parallel While SQL Server queries do in Powershell
- How do I run multiple instances of my Powershell function in parallel?
- Joblib.parallel vs concurrent.futures
Related Questions in SEQUENTIAL
- Optuna Hyperband Algorithm Not Following Expected Model Training Scheme
- ValueError: The layer sequential has never been called and thus has no defined output
- How to split large time-related aggregates in DDD?
- 'Sequential' object has no attribute 'fit_generator'
- tf.keras.Sequential predict years mismatch
- PowerShell: running commands in sequence
- How to create a sequential count of IDs in SQL?
- Finding highest value/lowest value in local clusters of CSV data
- Order data Preprocessing before Sequential Pattern Mining
- Using PrefixSpan with Python to find most common sequences
- Pytorch LSTM Input
- For each object in array, how to resolve promises that retrieve DB data and populate dropdown in sequential order?
- ValueError in shape - prediction with keras.models.Sequential
- Writing to Labels sequentially in VB.Net
- python pytorch Why Sequential NN and the same nn.Module NN have diference results
Related Questions in COMPARE-AND-SWAP
- Thread-safe lock-free min where both operands can change c++
- How to get Word VBA Convert Selection Range from one Shade to another Confined to End of Selected Range?
- C++ atomics Correct memory order and thread fencing for a shared_ptr implementation
- Is it safe to synchronize access to non-Sync data using only a separate atomic variable?
- How to implement a SpinLock
- Is my code thread-safe? [Java, CAS, money transfer]
- x86: Instruction reorder related with `cmpxchg` (without lock prefix)?
- Are _Atomic members of unions a good idea?
- Understanding of C++'s std::atomic<T> and compare-and-swap
- why are CAS / other common operations limited to fractions of a cache line?
- Can we use Compare-and-Swap operation on non-atomic variable?
- What happens if `compare_exchange_weak` is called on a dangling pointer? How is the code in my textbook safe?
- How to determine whether the minimum number of adjacent swaps required for sorting is odd or even?
- How can I check for null at a specific index of a String Array to change its value?
- How to use atomic operations with user-space variable in BPF?
Related Questions in PARALLELISM-AMDAHL
- OpenMP-based loop with reduction scales poorly
- Is it legal to use Amdahl's law in the inverse way? How many threads should I use?
- Calculating theoretical speedup using Amdahl's Law
- Determining the Parallel and Serial Region of Code and Calculating Speedup using Amdahl's Law
- CPU utilization calculation in Amdahl's law
- What is the performance of 100 processors capable of 2 GFLOPs running 2% sequential and 98% parallelizable code?
- Evaluating methods in parallel
- Very slow example parallel code in python, slower then serial
- Why my code runs so much slower with joblib.Parallel() than without?
- How to call same function in parallel with executor service in JAVA?
- Performance measure on data sizes and identical resources
- Trying to understand Amdahl's Law
- How to apply Amdahl's law on a given piece of code?
- What is Gustafson's law trying to argue?
- Processor Speedup Calculation Difference
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
I would think that's exactly his point. The swap must come after the results of the compare are known, so ultimately you cannot run any faster than "compare, then swap, then next compare, then next swap, the next compare, ...".
Of course, in most realistic cases, you won't get anywhere close to reaching that limit -- and you would be unbelievably thrilled with the performance if you did. It's kind of like saying that cars can never go faster than the speed of light. It's almost undoubtedly true, but car manufacturers needn't worry about it.