false-sharing

    0熱度

    1回答

    我需要計算2個使用相同參數(僅用於讀取)的不同函數。在我使程序多線程之後,程序運行需要2倍的時間(而不是0.5倍)。我是新的多線程編程,但我懷疑爲false sharing。 我的原代碼(切): #include <iostream> double frac_twins(double mu, double sigma,p){ return 1; } double dist_twi

    1熱度

    1回答

    嗨,大家好,所以我得到了這一段代碼 public class Padding { static class Pair { volatile long c1; // UN-comment this line and see how perofmance is boosted * 2 // long q1; //Magic dodo thingy

    1熱度

    1回答

    我寫了一個矩陣向量乘法的代碼。矩陣根據線程的數量劃分成若干行,每個塊乘以向量,向量存儲在線程專用的數組中。但是我的加速非常糟糕。對於大小爲16×16的矩陣,它低於1. 這是否可以歸因於以下事實:我將外部矩陣和向量聲明爲共享變量,並且可能在每個線程試圖讀取時導致競爭條件/錯誤共享矩陣和向量的值? 我有點混淆錯誤分享和競爭條件。 #include <stdio.h> #include <omp.h>

    2熱度

    1回答

    據我所知,在對稱多處理器(SMP)系統,可能會出現由於每個內核單獨的緩存錯誤共享,爲下面的代碼:http://software.intel.com/en-us/articles/avoiding-and-identifying-false-sharing-among-threads 01 double sum=0.0, sum_local[NUM_THREADS]; 02 #pragma omp

    1熱度

    1回答

    我想計算一個大矩陣的總和,而當我使用多個線程或僅使用一個線程時,我目前看不到性能改進。我認爲這個問題與假分享有關,但我也在我的結構中添加了填充。請看一看! #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <time.h> #include <pthread.h> #define WIDTH 2000

    1熱度

    2回答

    如果我有一個OpenMP並行化的C++程序,其中不同的線程不斷地使用一些小的共享數組,只爲讀取數據,在這種情況下會發生錯誤共享嗎?換句話說,錯誤共享只涉及內存寫入操作,或者也可能發生在內存讀取操作中。

    5熱度

    1回答

    今天我對並行編程課的教授有了一個不同的理解,關於什麼是「虛假分享」。我的教授說的沒什麼意義,所以我馬上指出了。她認爲「虛假分享」會導致程序結果出現錯誤。 我說過,當不同的內存地址分配給同一個緩存行時發生「錯誤共享」,將數據寫入其中一個會導致另一個緩存被踢出緩存。如果處理器在兩個虛假共享地址之間寫入並轉向,則它們都不能停留在高速緩存上,因此所有的操作都將導致DRAM的存取。 這是我目前爲止的意見。事

    1熱度

    1回答

    我想利用OpenMP來使我的任務並行。 我需要將相同的數量減去一個數組的所有元素並將結果寫入另一個向量。這兩個數組都動態分配爲malloc,第一個數組由文件中的值填充。每個元素的類型爲uint64_t。 #pragma omp parallel for for (uint64_t i = 0; i < size; ++i) { new_vec[i] = vec[i] - shift;

    4熱度

    1回答

    考慮: class Vector { double x, y, z; // … }; class Object { Vector Vec1, Vec2; std::mutex Mtx1, Mtx2; void ModifyVec1() { std::lock_guard Lock(Mtx1); /* … */ } void M

    2熱度

    1回答

    我試圖實現Hogwild! Linear SVM算法,但我遇到了我的實現中的虛假共享問題。 我的代碼在下面,但背景是我正在試圖計算哪些樣本不能通過我的測試,並且通過該向量集給出和更新。 Hogwild! (據我所知)只是完全異步地在同一個內存上進行更新。由於時間更新不當,這會在數學意義上造成「噪音」。 不幸的是,當我嘗試做這些異步更新時,L1緩存失效並且必須重新獲取。以下是我的代碼。 有沒有一種很