SlideShare a Scribd company logo
1 of 86
‫درس‬2-‫های‬ ‫عملیات‬
‫برداری‬
Fundamentals of Parallelism & Code Optimization
(C/C++,Fortran)
‫در‬ ‫کدها‬ ‫سازی‬ ‫بهینه‬ ‫و‬ ‫سازی‬ ‫موازی‬ ‫مبانی‬
‫زبانهای‬C/C++,Fortran
Amin Nezarat (Ph.D.)
Assistant Professor at Payame Noor University
aminnezarat@gmail.com www.astek.ir - www.hpclab.ir
‫عناوین‬
‫دوره‬
1.‫های‬ ‫پردازنده‬ ‫معماری‬ ‫با‬ ‫آشنایی‬
‫اینتل‬
2.Vectorization‫معماری‬ ‫در‬
‫اینتل‬ ‫کامپایلرهای‬
3.‫نویسی‬ ‫برنامه‬ ‫با‬ ‫کار‬ ‫و‬ ‫آشنایی‬
‫در‬OpenMP
4.‫با‬ ‫داده‬ ‫تبادل‬ ‫قواعد‬ ‫و‬ ‫اصول‬
‫حافظه‬(Memory Traffic)
‫درس‬2
‫عملیاتهای‬
‫برداری‬
‫بردار‬ ‫از‬ ‫پشتیبانی‬
‫کوتاه‬
‫برداری‬ ‫دستورالعملهای‬–‫های‬ ‫سازی‬ ‫پیاده‬ ‫از‬ ‫یکی‬
‫سازی‬ ‫موازی‬SIMD
‫ساده‬ ‫مثالی‬
‫برنامه‬ ‫کارایی‬ ‫افزایش‬ ‫باعث‬ ‫تواند‬ ‫می‬ ‫های‬ ‫حلقه‬ ‫سازی‬ ‫برداری‬
‫تعداد‬ ‫روی‬ ‫بر‬ ‫زمان‬ ‫یک‬ ‫در‬ ‫را‬ ‫عملیات‬ ‫یک‬ ‫که‬ ‫نحوی‬ ‫به‬ ،‫شود‬ ‫ها‬
‫دهد‬ ‫می‬ ‫انجام‬ ‫عنصر‬ ‫زیادی‬
Instruction Sets‫معماری‬ ‫در‬
‫اینتل‬
SSE= Streaming SIMD Extensions
AVX= Advanced Vector Extensions
IMCI=Initial Many Core Instructions
‫در‬ ‫سازی‬ ‫برداری‬
‫سیستمهای‬SIMD
‫استفاده‬‫از‬‫مدل‬SIMD‫باعث‬‫افزایش‬‫سرعت‬‫می‬‫شود‬.‫در‬‫معماری‬
‫های‬‫مختلفی‬‫که‬‫از‬‫برداری‬‫سازی‬‫پشتیبانی‬‫می‬‫کنند‬‫همزمانی‬
‫وجود‬‫دارد‬.‫از‬‫جمله‬‫این‬‫معماری‬‫ها‬‫در‬Intel‫می‬‫توان‬‫به‬‫سری‬
‫های‬‫بعد‬‫از‬SSE‫و‬‫در‬‫پردازنده‬‫های‬IBM‫به‬Altivec‫اشاره‬‫کرد‬.
‫مثال‬‫در‬‫یک‬ALU‫می‬‫توان‬4‫مقدار‬Single Precision‫یا‬2‫مقدار‬
Double Precision‫را‬‫به‬‫صورت‬‫برداری‬‫در‬‫همان‬‫زمانی‬‫که‬‫یک‬‫یک‬
‫عملیات‬‫اسکالر‬‫انجام‬‫می‬،‫دهد‬‫محاسبه‬‫کند‬.
‫را‬ ‫کدتان‬
Vectorize‫کنید‬
‫محاسبات‬ ‫کار‬ ‫گردش‬
‫برداری‬
. . .
. . .
. . .
‫کد‬ ‫سازی‬ ‫برداری‬:‫دو‬
‫رویکرد‬
Automatic Vectorization →
‫مربوطه‬ ‫زبان‬ ‫در‬ ‫سازی‬ ‫پیاده‬
← Explicit Vectorization
‫ماکرو‬ ‫با‬ ‫سازی‬ ‫پیاده‬
‫بهتر‬ ‫رویکرد‬ ‫کدام‬
‫است؟‬‫رویکرد‬‫خودکار‬(‫برداری‬‫سازی‬‫توسط‬‫کامپایلر‬)‫به‬
‫دالیل‬‫زیر‬‫بهتر‬‫است‬:
•‫ساده‬‫تر‬‫است‬
•‫قابل‬‫حمل‬‫بوده‬‫و‬‫به‬‫ماکروهای‬‫یک‬‫پردازنده‬
‫خاص‬‫وابسته‬‫نیست‬
•‫کارایی‬‫باالتری‬‫ایجاد‬‫می‬‫کند‬(‫کامپایلر‬‫کد‬‫را‬
‫بهینه‬‫می‬‫کند‬)
‫با‬‫افزودن‬‫روشهای‬‫برداری‬‫سازی‬
‫دستی‬‫توسط‬‫برنامه‬‫نویسان‬‫میزان‬
‫بهبود‬‫بیشتر‬‫خواهد‬‫شد‬‫و‬‫تا‬3.78
‫افزایش‬‫خواهد‬‫یافت‬
‫راهنمای‬Intel Intrinsics
https://software.intel.com/sites/landingpage/IntrinsicsGuide
‫بردارسازی‬
‫خودکار‬
‫خودکار‬ ‫سازی‬ ‫برداری‬ ‫مثال‬ ‫چند‬–‫بوسیله‬
Directive‫زبان‬ ‫های‬
‫خودکار‬ ‫سازی‬ ‫برداری‬ ‫مثال‬ ‫چند‬–‫تغییر‬
‫حلقه‬ ‫ترتیب‬ ‫در‬
‫خودکار‬ ‫سازی‬ ‫برداری‬
‫ها‬ ‫حلقه‬ ‫در‬
amin@astek% icpc autovec.cc -qopt-report
amin@astek% cat autovec.optrpt
...
LOOP BEGIN at autovec.cc(12,3)
remark #15399: vectorization support: unroll factor
set to 2 [autovec.cc(12,3)] remark #15300: LOOP
WAS VECTORIZED
[autovec.cc(12,3)] LOOP END
...
amin@astek% ./a.out 0 0 0
1 2 1
2 4 2
3 6 3
4 8 4
...
#include <cstdio>
int main(){
const int n=1024;
int A[n] attribute ((aligned(64)));
int B[n] attribute ((aligned(64)));
for (int i = 0; i < n; i++)
A[i] = B[i] = i;
// ‫شود‬ ‫می‬ ‫برداری‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫حلقه‬ ‫این‬
for (int i = 0; i < n; i++)
A[i] = A[i] + B[i];
for (int i = 0; i < n; i++)
printf("%2d %2d %2dn",i,A[i],B[i]);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
‫برداری‬ ‫در‬ ‫محدودیتهایی‬
‫سازی‬‫خودکار‬
▷ Innermost loops*
▷ Known number of iterations
▷ No vector dependence
▷ Functions must be SIMD-enabled
* #pragma omp simd to override
‫از‬ ‫استفاده‬ ‫برای‬ ‫کد‬ ‫کردن‬ ‫هدفمند‬
‫معماری‬ ‫زیر‬ ‫یک‬
-x[code] to target specific processor architecture
-ax[code] for multi-architecture dispatch
Code Target architecture
MIC-AVX512 Intel Xeon Phi processors (KNL)
CORE-AVX512 Future Intel Xeon processors
CORE-AVX2 Intel Xeon processor E3/E5/E7 v3, v4 family
AVX Intel Xeon processor E3/E5 and E3/E5/E7 v2 family
SSE4.2 Intel Xeon processor 55XX, 56XX, 75XX and E7 family
host architecture on which the code is compiled
‫است‬ ‫ممکن‬ ‫خودکار‬ ‫سازی‬ ‫برداری‬
‫باشد‬ ‫پیچیده‬
for (int i = ii; i < ii + tileSize; i++) { // Auto-vectorized
//‫مسئله‬ ‫و‬ ‫نیوتن‬ ‫جاذبه‬ ‫قانون‬ N-Body
const float dx = particle.x[j] - particle.x[i]; // x[j] is a const
const float dy = particle.y[j] - particle.y[i]; // x[i] -> vector
const float dz = particle.z[j] - particle.z[i];
const float rr = 1.0f/sqrtf(dx*dx + dy*dy + dz*dz + softening);
const float drPowerN32 = rr*rr*rr;
// Calculate the net force Fx[i-ii] += dx *
drPowerN32; Fy[i-ii] += dy * drPowerN32;
Fz[i-ii] += dz * drPowerN32;
}
1
2
3
4
5
6
7
8
9
10
11
12
‫برداری‬ ‫مدیریت‬
‫خودکار‬ ‫سازی‬
‫با‬ ‫بیشتر‬ ‫های‬ ‫حلقه‬ ‫سازی‬ ‫برداری‬
#pragma omp simd
Used to “enforce vectorization of loops”, which includes:
▷ Loops with SIMD-enabled functions
▷ Second innermost loops
▷ Failed vectorization due to compiler decision
▷ Where guidance is required (vector length, reduction, etc.)
See OpenMP reference for syntax; #pragma simd
‫برای‬ ‫مثالی‬#pragma omp
simd
const int N=128, T=4;
float A[N*N], B[N*N], C[T*T];
for (int jj = 0; jj < N; jj+=T) // Tile in j
for (int ii = 0 ; ii < N; ii+=T) // and tile in i
#pragma omp simd // Vectorize outer loop
for (int k = 0; k < N; ++k) // long loop, vectorize it
for (int i = 0 ; i < T; i++) { // Loop between ii and ii+T
// Instead of a loop between jj and jj+T, unrolling that loop:
C[0*T + i] += A[(jj+0)*N + k]*B[(ii+i)*N + k];
C[1*T + i] += A[(jj+1)*N + k]*B[(ii+i)*N + k];
C[2*T + i] += A[(jj+2)*N + k]*B[(ii+i)*N + k];
C[3*T + i] += A[(jj+3)*N + k[*B[(ii+i)*N + k];
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Directive‫برای‬ ‫هایی‬
‫سازی‬ ‫برداری‬
‫ماکروها‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫سازی‬ ‫برداری‬-
‫روش‬Intrinsics‫اینتل‬ ‫معماری‬ ‫در‬
‫ماکروها‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫سازی‬ ‫برداری‬-‫روش‬Intrinsics
‫معماری‬ ‫در‬IBM
‫توابعی‬‫که‬
‫قابلیت‬SIMD
‫دارند‬
‫قابلیت‬ ‫که‬ ‫توابعی‬
SIMD‫دارند‬
Define function in one file (e.g., library), use in another
‫قابلیت‬ ‫با‬ ‫توابع‬SIMD‫می‬
‫باشند‬ ‫پیچیده‬ ‫تواند‬
#pragma omp declare simd
float MyErfElemental(const float inx){
const float x = fabsf(inx); // Absolute value (in each vector lane)
const float p = 0.3275911f; // Constant parameter across vector lanes
const float t = 1.0f/(1.0f+p*x); // Expression in each vector lanes
const float l2e = 1.442695040f; // log2f(expf(1.0f))
const float e = exp2f(-x*x*l2e); // Transcendental in each vector lane
float res = -1.453152027f + 1.061405429f*t; // Computing a polynomial
res = 1.421413741f + t*res;
res =-0.284496736f + t*res;
res = 0.254829592f + t*res;
res *= e;
res = 1.0f - t*res; // Analytic approximation in each vector lane
return copysignf(res, inx); // Copy sign in each vector lane
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
‫برداری‬ ‫سازی‬ ‫پیاده‬ ‫در‬ ‫آنچه‬
‫است‬ ‫درست‬
▷ True vector dependence – vectorization impossible:
for (int i = 1; i < n; i++)
a[i] += a[i-1]; // dependence on the previous element
for (int i = 0; i < n-1; i++)
a[i] += a[i+1]; // no dependence on the previous element
for (int i = 16; i < n; i++)
a[i] += a[i-16]; // no dependence if vector length <=16
▷ Safe to vectorize:
▷ May be safe to vectorize:
‫وابستگی‬ ‫برای‬ ‫فرضیاتی‬
‫بردار‬ ‫به‬
Not enough information to confirm or rule out vector dependence:
void AmbiguousFunction(int n, int *a, int *b) {
for (int i = 0; i < n; i++)
a[i] = b[i];
}
‫گزاره‬S‫به‬T‫اگر‬ ‫دارد‬ ‫وابستگی‬:
•‫اسکالر‬ ‫برنامه‬ ‫یک‬ ‫در‬T‫از‬ ‫قبل‬
S‫شود‬ ‫اجرا‬
•‫دوی‬ ‫هر‬S‫و‬T‫داده‬ ‫یک‬ ‫به‬
‫کنند‬ ‫پیدا‬ ‫دسترسی‬
•‫ها‬ ‫دسترسی‬ ‫از‬ ‫یکی‬ ‫حداقل‬Write
1
2
3
4
‫داده‬ ‫وابستگی‬
‫ها‬
‫کرد‬ ‫فرض‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫توان‬ ‫می‬ ‫را‬ ‫ممکن‬ ‫های‬ ‫وابستگی‬ ‫انواع‬
‫وابستگی‬
‫شناور‬(‫درست‬ ‫وابستگی‬)
‫وابسته‬ ‫غیر‬
‫خروجی‬ ‫به‬ ‫وابستگی‬
‫حلقه‬ ‫در‬ ‫ها‬ ‫داده‬ ‫وابستگی‬–‫بررسی‬
‫سناریو‬ ‫چند‬(1)
‫حلقه‬ ‫در‬ ‫وابستگی‬ ‫غیر‬
‫کنیم‬ ‫می‬ ‫گسترده‬ ‫را‬ ‫حلقه‬ ،‫وابستگی‬ ‫بررسی‬ ‫برای‬
‫حلقه‬ ‫در‬ ‫ها‬ ‫داده‬ ‫وابستگی‬–‫چند‬ ‫بررسی‬
‫سناریو‬(2)
‫وابستگی‬ ‫دارای‬ ‫حلقه‬
‫مستقل‬
‫وابستگی‬ ‫دارای‬ ‫حلقه‬
‫و‬ ‫ای‬ ‫داده‬ ‫های‬ ‫وابستگی‬
‫سازی‬ ‫برداری‬
•‫برای‬ ‫مناسبی‬ ‫راهنمای‬ ‫تواند‬ ‫می‬ ‫ای‬ ‫داده‬ ‫وابستگی‬
‫باشد‬ ‫سازی‬ ‫برداری‬
•‫به‬ ‫گرافی‬ ‫وابستگی‬ ‫دارای‬ ‫که‬ ‫حلقه‬ ‫درون‬ ‫گزاره‬ ‫یک‬
‫شود‬ ‫برداری‬ ‫تواند‬ ‫می‬ ‫نباشد‬ ‫خود‬
‫و‬ ‫ای‬ ‫داده‬ ‫های‬ ‫وابستگی‬
‫سازی‬ ‫برداری‬
‫خود‬ ‫به‬ ‫گرافی‬ ‫وابستگی‬ ‫وجود‬ ‫زمان‬ ‫در‬(Cycle)‫سازی‬ ‫برداری‬
‫است‬ ‫امکانپذیر‬ ‫زیر‬ ‫روشهای‬ ‫از‬ ‫یکی‬ ‫با‬:
•‫شود‬ ‫خارج‬ ‫سایکل‬ ‫از‬ ‫که‬ ‫نحوی‬ ‫به‬ ‫گزاره‬ ‫کردن‬ ‫توزیع‬
•‫وابستگی‬ ‫حذف‬
•Freeze‫جلقه‬ ‫کردن‬
•‫الگوریتم‬ ‫تغییر‬
‫کردن‬ ‫توزیع‬
‫گزاره‬
‫وابستگی‬ ‫حذف‬
Freeze‫کردن‬
‫حلقه‬
‫گرفتن‬ ‫نادیده‬(‫یا‬Freezing)‫بیرونی‬ ‫حلقه‬
‫تغییر‬
‫الگوریتم‬
‫رخدادها‬ ‫باز‬ ‫شناسایی‬ ‫برای‬ ‫کامپایلر‬(Cycle)‫سری‬ ‫یک‬ ‫از‬
‫را‬ ‫حلقه‬ ‫موازی‬ ‫نسخه‬ ‫و‬ ‫کرده‬ ‫استفاده‬ ‫الگوها‬
‫کنند‬ ‫می‬ ‫قبلی‬ ‫نسخه‬ ‫جایگزین‬
‫است‬ ‫رخدادها‬ ‫باز‬ ‫از‬ ‫مثالهایی‬ ‫زیر‬ ‫موارد‬:
Multiversioned
amin@astek% icpc -c code.cc -qopt-report
amin@astek% cat code.optrpt
...
LOOP BEGIN at code.cc(4,1)
<Multiversioned v1>
remark #25228: LOOP WAS VECTORIZED LOOP END
...
LOOP BEGIN at code.cc(4,1)
<Multiversioned v2>
remark #15304: loop was not vectorized: non-vectorizable loop instance
..
LOOP END
Pointers checked for aliasing runtime to choose code path.
Multiversioned
Prevent multiversioning or allow vectorization with a directive:
#pragma ivdep
for (int i = 0; i < n; i++)
// ...
amin@astek% icpc -c code.cc -qopt-report -qopt-report-phase:vec
amin@astek% cat vdep.optrpt
...
LOOP BEGIN at code.cc(4,1)
remark #25228: LOOP WAS VECTORIZED LOOP END
...
Alternative: keyword restrict – more fine-grained, weaker.
Strip-Mining
Strip-Minig‫برداری‬ ‫برای‬
‫سازی‬
▷‫به‬ ‫را‬ ‫حلقه‬ ‫یک‬ ‫که‬ ‫نویسی‬ ‫برنامه‬ ‫تکنیکهای‬
‫کند‬ ‫می‬ ‫تبدیل‬ ‫تودرتو‬ ‫حلقه‬ ‫دو‬
▷‫برداری‬ ‫برای‬ ‫را‬ ‫بیشتری‬ ‫فرصتهای‬ ‫تکنیک‬ ‫این‬
‫کند‬ ‫می‬ ‫فراهم‬ ‫سازی‬
▷‫اندازه‬Strip‫معادل‬ ‫باید‬Register‫باشد‬ ‫سیستم‬Original: Strip-mined:
for (int i = 0; i < n; i++ ){
// ... do work
}
const int STRIP=1024;
const int nPrime = n - n%STRIP;
for (int ii=0; ii<nPrime; ii+=STRIP(
for (int i=ii; i<ii+STRIP; i++ )
// ... do work
for (int i=nPrime; i<n; i++)
// ... do work
‫مثال‬:Stencil
Code
Stencil Operators
▷ Linear systems of equations
▷ Partial differential equations
Fluid dynamics, heat transfer, image processing (convolution
matrix), cellular automata.
‫لبه‬ ‫تشخیص‬
‫استنسیل‬ ‫الگوریتم‬ ‫پایه‬ ‫سازی‬ ‫پیاده‬
‫لبه‬ ‫تشخیص‬ ‫در‬
float *in, *out; // Input and output images
int width, height; // Dimensions of the input image
// Image convolution with the edge detection stencil kernel:
for (int i = 1; i < height-1; i++)
for (int j = 1; j < width-1; j++)
out[i*width + j] =
-in[(i-1)*width + j-1] - in[(i-1)*width + j] - in[(i-1)*width + j+1]
-in[(i)*width + j-1] + 8*in[(i)*width + j] - in[(i)*width + j+1]
-in[(i+1)*width + j-1] - in[(i+1)*width + j] - in[(i+1)*width + j+1]
‫الگوریتم‬ ‫سازی‬ ‫برداری‬
‫لبه‬ ‫تشخیص‬
amin@astek% icpc -c -qopt-report=5 -xMIC-AVX512 stencil.cc
1 for (int i = 1; i < height-1; i++)
2 #pragma omp simd
3 for (int j = 1; j < width-1; j++) out[i*width + j] =
4 -in[(i-1)*width + j-1] - in[(i-1)*width + j] - in[(i-1)*width + j+1]
5 -in[(i)*width + j-1] + 8*in[(i)*width + j] - in[(i)*width + j+1]
6 -in[(i+1)*width + j-1] -in[(i+1)*width + j] - in[(i+1)*width + j+1];
‫کارایی‬
‫مثال‬:
‫انتگرال‬‫عددی‬
‫نیمه‬ ‫روش‬
‫مستطیلی‬
‫سازی‬ ‫پیاده‬
‫اسکالر‬
double BlackBoxFunction(double x);
...
const double dx = a/(double)n;
double integral = 0.0;
for (int i = 0; i < n; i++){
const double xip12 = dx*((double)i +0.5);
const double dI = BlackBoxFunction(xip12)*dx; integral += dI;
}
‫سازی‬ ‫پیاده‬
‫برداری‬
1 #pragma omp declare simd
2 double BlackBoxFunction(double x);
3 ...
4 const double dx = a/(double)n;
5 double integral = 0.0;
7 #pragma omp simd reduction(+: integral)
8 for (int i = 0; i < n; i++) {
9 const double xip12 = dx*((double)i + 0.5);
10 const double dI = BlackBoxFunction(xip12)*dx;
11 integral += dI;
12 }
‫کارایی‬
‫حلقه‬ ‫تبدیل‬
‫تبدیل‬ ‫روشهای‬ ‫انواع‬
‫حلقه‬
‫باشند‬ ‫می‬ ‫زیر‬ ‫شرح‬ ‫به‬ ‫حلقه‬ ‫تبدیل‬ ‫روشهای‬ ‫انواع‬:
• Compiler Directives
• Loop Distribution or loop fission
• Reordering Statements
• Node Splitting
• Scalar expansion
• Loop Peeling
• Loop Fusion
• Loop Unrolling
• Loop Interchanging
‫دایرکتیوهای‬
‫کامپایلر‬
‫عملیات‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫توانند‬ ‫نمی‬ ‫کامپایلرها‬ ‫که‬ ‫زمانی‬
‫از‬ ‫استفاده‬ ‫با‬ ‫توان‬ ‫می‬ ‫کنند‬ ‫گیری‬ ‫تصمیم‬ ‫را‬ ‫سازی‬ ‫برداری‬
‫عمل‬ ‫انجام‬ ‫به‬ ‫مجبور‬ ‫را‬ ‫کامپایلر‬ ،‫دایرکتیوها‬ ‫سری‬ ‫یک‬
‫کرد‬ ‫سازی‬ ‫برداری‬
•‫که‬ ‫زمانی‬ ‫در‬ ‫تواند‬ ‫می‬ ‫حلقه‬ ‫این‬K<-3‫و‬K>=0
‫شود‬ ‫برداری‬ ‫است‬
•‫که‬ ‫داند‬ ‫می‬ ‫نویس‬ ‫برنامه‬k>=0‫است‬
•‫افزودن‬ ‫با‬#pragma ivdep‫می‬ ‫کامپایلر‬ ‫به‬
‫های‬ ‫وابستگی‬ ‫از‬ ‫تواند‬ ‫می‬ ‫که‬ ‫گوییم‬
‫کند‬ ‫صرفنظر‬ ‫ناشناخته‬
‫در‬
‫اینتل‬
‫در‬
IBM
Reordering Statements
Node Splitting
Scalar Expansion
Loop Peeling
•‫حذف‬‫اول‬(‫ین‬)‫یا‬‫آخر‬(‫ین‬)‫تکرار‬‫از‬‫حلقه‬‫و‬‫انتقال‬‫آن‬‫به‬
‫خارج‬‫حلقه‬
•‫زمانی‬‫که‬‫تعداد‬‫تکرار‬‫حلقه‬‫از‬‫قبل‬‫مشخص‬‫شده‬،‫نیست‬‫این‬
‫عمل‬‫می‬‫تواند‬‫باعث‬‫محافظت‬‫کد‬‫از‬‫تستهای‬‫زمان‬‫اجرا‬‫شود‬
‫روشهای‬ ‫سایر‬
‫وابستگی‬ ‫حذف‬
‫داده‬
Reductions
Reduction‫یک‬ ‫از‬ ‫عناصری‬ ‫بر‬ ‫که‬ ‫جمع‬ ‫همانند‬ ‫است‬ ‫عملیات‬ ‫یک‬
‫شود‬ ‫می‬ ‫استفاده‬ ‫تجمیعی‬ ‫نتایج‬ ‫تولید‬ ‫منظور‬ ‫به‬ ‫آرایه‬.
‫مثال‬ ‫دو‬:
‫متغیرهای‬
‫استقرایی‬
‫یک‬ ‫نقش‬ ‫در‬ ‫تواند‬ ‫می‬ ‫که‬ ‫است‬ ‫متغیری‬ ‫استقرایی‬ ‫متغیر‬
‫شود‬ ‫نمایان‬ ‫حلقه‬ ‫تکرار‬ ‫متغیرهای‬ ‫از‬ ‫تابع‬
‫اما‬ ‫کنند‬ ‫می‬ ‫کار‬ ‫یک‬ ‫کد‬ ‫تکه‬ ‫دو‬ ‫این‬...
Data Alignment
‫می‬ ‫حافظه‬ ‫در‬ ‫آدرس‬ ‫و‬ ‫مقدار‬ ‫خصوصیت‬ ‫دو‬ ‫دارای‬ ‫داده‬ ‫هر‬
‫در‬ ‫داده‬ ‫یک‬ ‫آدرس‬ ‫که‬ ‫است‬ ‫مفهوم‬ ‫بدین‬ ‫داده‬ ‫ترازبندی‬ ،‫باشد‬
‫اعداد‬ ‫بر‬ ‫پردازنده‬ ‫آن‬ ‫معماری‬ ‫مدل‬ ‫به‬ ‫توجه‬ ‫با‬ ‫حافظه‬
1،2،4،8،16،32،64‫است‬ ‫پذیر‬ ‫تقسیم‬.‫داده‬ ‫یک‬ ‫آدرس‬ ‫اگر‬ ‫مثال‬
‫حافظه‬ ‫در‬1244098‫ترازبندی‬ ‫بر‬ ‫مبتنی‬ ‫داده‬ ‫یعنی‬ ‫باشد‬4
‫به‬ ‫پردازنده‬ ‫ارجاع‬ ‫بار‬ ‫هر‬ ‫در‬ ‫که‬ ‫معنی‬ ‫بدین‬ ،‫است‬ ‫بایتی‬
‫حافظه‬4‫شود‬ ‫می‬ ‫خوانده‬ ‫یکجا‬ ‫صورت‬ ‫به‬ ‫بایت‬.
Data Alignment
‫معماری‬ ‫در‬SSE‫تا‬ ‫های‬ ‫داده‬ ‫اینتل‬128‫است‬ ‫تعریف‬ ‫قابل‬ ‫بیت‬
‫که‬ ‫معنی‬ ‫بدین‬8‫داده‬16‫بایتی‬Single Precision‫یا‬4‫داده‬32
‫بایتی‬Double Precision
•‫ترازبندی‬ ‫یک‬ ‫زیر‬ ‫مثال‬16‫تعریف‬ ‫این‬ ،‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫دستی‬ ‫بایتی‬
‫ترتیب‬ ‫با‬ ‫پایه‬ ‫آدرس‬ ‫که‬ ‫است‬ ‫معنی‬ ‫بدین‬16‫رود‬ ‫می‬ ‫جلو‬ ‫تایی‬
•‫آرایه‬ ‫سه‬ ‫هر‬ ‫هم‬ ‫مثال‬ ‫این‬ ‫در‬a,b,c‫ترازبندی‬ ‫با‬
16‫کنند‬ ‫می‬ ‫حرکت‬ ‫حافظه‬ ‫در‬ ‫بایتی‬
Data Alignment‫داده‬ ‫نوع‬ ‫در‬
Struct
•‫های‬ ‫آرایه‬A,B‫مبنای‬ ‫بر‬16‫اند‬ ‫نشده‬ ‫ترازبندی‬ ‫بایتی‬
Data Alignment‫داده‬ ‫نوع‬ ‫در‬
Struct
•‫گفت‬ ‫کامپایلر‬ ‫به‬ ‫توان‬ ‫می‬ ‫کد‬ ‫به‬ ‫ترازبندی‬ ‫صفت‬ ‫افزودن‬ ‫با‬
‫شود‬ ‫انجام‬ ‫مبنایی‬ ‫چه‬ ‫بر‬ ‫ترازبندی‬ ‫که‬
Aliasing
‫حلقه‬ ‫تواند‬ ‫می‬ ‫کامپایلر‬ ‫آیا‬
‫کند؟‬ ‫می‬ ‫برداری‬ ‫را‬ ‫زیر‬
•a‫و‬b‫هستند‬ ‫یکدیگر‬ ‫مستعار‬
•‫وابستگی‬ ‫یک‬Self-True‫افتاده‬ ‫اتفاق‬
‫است‬
•‫و‬ ‫غیرمجاز‬ ‫حلقه‬ ‫این‬ ‫سازی‬ ‫برداری‬
‫است‬ ‫پرهزینه‬
Aliasing
•‫برای‬‫برداری‬،‫سازی‬‫کامپایلر‬‫باید‬‫اطمینان‬‫یابد‬‫که‬‫بر‬‫روی‬
‫پوینتر‬‫ها‬aliasing‫اتفاق‬‫نمی‬‫افتد‬
•‫اگر‬‫کامپایلر‬‫نداند‬‫که‬‫دو‬‫پوینتر‬alias‫می‬‫شوند‬‫و‬‫کد‬‫را‬
‫برداری‬‫کند‬‫هزینه‬‫چک‬‫کردن‬‫بسیار‬‫زیاد‬‫و‬‫معادل‬‫خواهد‬
‫شد‬‫که‬n‫تعداد‬‫پوینترهاست‬
•‫اگر‬‫تعداد‬‫پوینترها‬‫در‬‫کد‬‫زیاد‬‫باشند‬‫کامپایلر‬‫ممکن‬‫است‬
‫تصمیم‬‫بگیرد‬‫که‬‫برداری‬‫سازی‬‫را‬‫انجام‬‫ندهد‬
‫زمان‬ ‫کنترلهای‬ ‫از‬ ‫جلوگیری‬ ‫برای‬ ‫حل‬ ‫راه‬ ‫دو‬
‫دارد‬ ‫وجود‬ ‫اجرا‬
1-‫های‬ ‫آرایه‬Static‫و‬Global
2-‫از‬ ‫استفاده‬__restrict__ attribute
Aliasing
‫های‬ ‫آرایه‬Static‫و‬Global
Aliasing
‫از‬ ‫استفاده‬__restrict__ attribute
‫عنوان‬
‫راهکار‬ ‫اگر‬__restrict__‫بعدی‬ ‫دو‬ ‫های‬ ‫آرایه‬ ‫سازی‬ ‫برداری‬
‫روشهای‬ ‫از‬ ،‫نکرد‬ ‫فعال‬ ‫را‬
‫کنید‬ ‫استفاده‬ ‫زیر‬:
1-‫های‬ ‫آرایه‬ ‫تعریف‬Static or Global
2-‫از‬ ‫استفاده‬ ‫و‬ ‫ارایه‬ ‫کردن‬ ‫خطی‬__restrict__
3-‫از‬ ‫استفاده‬directive‫کامپایلر‬ ‫های‬
Non-Unit Stride
‫از‬ ‫ای‬ ‫آرایه‬ ‫که‬ ‫کنید‬ ‫فرض‬Struct‫داریم‬
‫کنیم‬ ‫می‬ ‫تعریف‬ ‫معمولی‬ ‫آرایه‬ ‫صورت‬ ‫به‬ ‫را‬ ‫آن‬ ‫حال‬
‫از‬ ‫دیگر‬ ‫مثالی‬Non-
Unit Stride
‫های‬ ‫گزاره‬
‫شرطی‬
‫دایرکتیو‬ ‫شرط‬ ‫حاوی‬ ‫های‬ ‫حلقه‬#pragma vector
always‫دارند‬ ‫نیاز‬ ‫را‬
•‫برداری‬ ‫آیا‬ ‫که‬ ‫داند‬ ‫نمی‬ ‫کامپایلر‬ ‫که‬ ‫آنجا‬ ‫از‬
‫خیر‬ ‫یا‬ ‫بود‬ ‫خواهد‬ ‫سودمند‬ ‫سازی‬
•‫کند‬ ‫ممانعت‬ ‫استثنا‬ ‫حالت‬ ‫یک‬ ‫از‬ ‫است‬ ‫ممکن‬ ‫شرط‬
•،‫حال‬ ‫این‬ ‫در‬ ‫حلقه‬ ‫سازی‬ ‫برداری‬ ‫صورت‬ ‫در‬
‫کند‬ ‫می‬ ‫حذف‬ ‫را‬ ‫شرط‬ ‫کامپایلر‬
‫های‬ ‫گزاره‬
‫شرطی‬
‫حلقه‬ ‫از‬ ‫شرط‬ ‫حذف‬
‫سایر‬Directive‫های‬
‫کامپایلر‬
‫خودکار‬ ‫صورت‬ ‫به‬ ‫را‬ ‫ها‬ ‫حلقه‬ ‫از‬ ‫بسیاری‬ ‫کامپایلر‬
‫تواند‬ ‫نمی‬ ‫نیز‬ ‫را‬ ‫تعدادی‬ ‫اما‬ ‫کند‬ ‫می‬ ‫برداری‬
‫از‬ ‫توان‬ ‫می‬ ‫منظور‬ ‫همین‬ ‫به‬ ،‫کند‬ ‫گیری‬ ‫تصمیم‬directive
‫کرد‬ ‫استفاده‬ ‫ها‬
‫سایر‬Directive‫های‬
‫کامپایلر‬
‫چه‬ ‫سازی‬ ‫برداری‬ ‫از‬ ‫بعد‬
‫کنیم‬ ‫کار‬
‫برداری‬‫سازی‬‫عملیاتهای‬‫ریاضی‬‫کم‬‫هزینه‬
،‫است‬‫اما‬‫دسترسی‬‫به‬‫حافظه‬‫خیلی‬‫پر‬
‫هزینه‬‫است‬.
‫ا‬،‫نکنید‬ ‫بهینه‬ ‫را‬ ‫کش‬ ‫از‬ ‫استفاده‬ ‫شما‬ ‫گر‬
‫بود‬ ‫خواهد‬ ‫فایده‬ ‫کم‬ ‫نیز‬ ‫سازی‬ ‫برداری‬.
‫به‬ ‫دسترسی‬ ‫نام‬ ‫به‬ ‫ای‬ ‫مسئله‬ ‫با‬ ‫شما‬
‫بود‬ ‫خواهید‬ ‫طرف‬ ‫حافظه‬.
‫پشتیبان‬ ‫مطالب‬
‫گیری‬ ‫اندازه‬
‫اجرا‬ ‫زمان‬
‫کن‬ ‫اضافه‬ ‫اجرا‬ ‫زمان‬ ‫افزایش‬ ‫برای‬ ‫خارجی‬ ‫حلقه‬ ‫یک‬
‫را‬ ‫خارجی‬ ‫تابع‬ ‫یک‬
‫اضافه‬ ‫حلقه‬ ‫درون‬
‫از‬ ‫تمرکز‬ ‫که‬ ‫کنید‬
‫خارج‬ ‫حلقه‬‫شود‬
‫چگونه‬
‫کنیم‬ ‫کامپایل‬
icpc yourcode.cc -o youroutput.out -qopt-report=n -xCORE-AVX2
n‫را‬ ‫خروجی‬ ‫گزارش‬ ‫سطح‬ ‫که‬ ‫است‬ ‫عددی‬
‫دهد‬ ‫می‬ ‫نشان‬:
0‫گزارش‬ ‫بدون‬
1‫شده‬ ‫برداری‬ ‫حلقه‬ ‫خط‬ ‫شماره‬ ‫صرفا‬
‫دهد‬ ‫می‬ ‫را‬
2‫تا‬5‫از‬ ‫را‬ ‫بیشتری‬ ‫جزئیات‬
‫دهد‬ ‫می‬ ‫سازی‬ ‫برداری‬ ‫فرایند‬
‫با‬ ‫همنام‬ ‫گزارشی‬ ‫کامپایل‬ ‫از‬ ‫پس‬
‫پسوند‬ ‫و‬ ‫کد‬ ‫فایل‬optrpt‫می‬ ‫ساخته‬
‫شود‬
•‫کدهای‬ ‫کامپایل‬ ‫برای‬c++‫کامپایلر‬ ‫در‬gnu
g++ -O2 -ftree-vectorize -ftree-vectorizer-verbose=n –msse4 -S -c yourcode.cpp
‫کنید‬ ‫کلیک‬ ‫بیشتر‬ ‫راهنمایی‬ ‫برای‬
‫معمار‬
‫ی‬
code Targetarchitecture
MIC-AVX512 Intel Xeon Phi processors (KNL)
CORE-AVX512 Future Intel Xeonprocessors
CORE-AVX2 Intel Xeon processor E3/E5/E7 v3, v4family
AVX Intel Xeon processor E3/E5 and E3/E5/E7 v2family
SSE4.2 Intel Xeon processor 55XX, 56XX,75XX and E7family
host architecture on which the code is compiled
‫ضرب‬ ‫مثال‬
‫ها‬ ‫ماتریس‬
•‫یافت‬ ‫بهبود‬ ‫کد‬ ‫این‬ ‫مرحله‬ ‫دو‬ ‫طی‬
1-‫افزودن‬Directive‫کد‬ ‫به‬
2-Loop Interchange
‫زمان‬ ‫های‬ ‫سوئیچ‬
‫کامپایل‬

More Related Content

Similar to 02 vectorization fundamentals_of_parallelism_and_code_optimization-www.astek.ir

طراحي شبكه های مخابراتی و کامپیوتری
طراحي شبكه های مخابراتی و کامپیوتریطراحي شبكه های مخابراتی و کامپیوتری
طراحي شبكه های مخابراتی و کامپیوتریabbas pirnazaraine
 
Chapter 04 - introduction to tcpip protocols
Chapter 04 - introduction to tcpip protocolsChapter 04 - introduction to tcpip protocols
Chapter 04 - introduction to tcpip protocolsbehrad eslamifar
 
آموزش مرتبه اجرایی در ساختمان داده و طراحی الگوریتم (مرور – تست کنکور ارشد)
آموزش مرتبه اجرایی در ساختمان داده و طراحی الگوریتم (مرور – تست کنکور ارشد)آموزش مرتبه اجرایی در ساختمان داده و طراحی الگوریتم (مرور – تست کنکور ارشد)
آموزش مرتبه اجرایی در ساختمان داده و طراحی الگوریتم (مرور – تست کنکور ارشد)faradars
 
Cpusimulation
CpusimulationCpusimulation
Cpusimulationdanesh_fd
 
مهندسی اینترنت فصل 4 لایه شبکه
مهندسی اینترنت فصل 4 لایه شبکهمهندسی اینترنت فصل 4 لایه شبکه
مهندسی اینترنت فصل 4 لایه شبکهNavid Einakchi
 
Chapter 03 - Transmission basics and networking media
Chapter 03 - Transmission basics and networking mediaChapter 03 - Transmission basics and networking media
Chapter 03 - Transmission basics and networking mediabehrad eslamifar
 
Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0pdnsoftco
 
Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0pdnsoftco
 
برنامه سازی 2- اعظم صالح-هنرستان جنت فارسان
برنامه سازی 2- اعظم صالح-هنرستان جنت فارسانبرنامه سازی 2- اعظم صالح-هنرستان جنت فارسان
برنامه سازی 2- اعظم صالح-هنرستان جنت فارسانtarasad
 
Jozve c#2 mohamady_zahedy
Jozve c#2 mohamady_zahedyJozve c#2 mohamady_zahedy
Jozve c#2 mohamady_zahedydanesh_fd
 
فناوری زنجیره بلوک و کاربردهای آن در زنجیره تأمین (شانزدهمین کنفرانس مهندسی ص...
فناوری زنجیره بلوک و کاربردهای آن در زنجیره تأمین (شانزدهمین کنفرانس مهندسی ص...فناوری زنجیره بلوک و کاربردهای آن در زنجیره تأمین (شانزدهمین کنفرانس مهندسی ص...
فناوری زنجیره بلوک و کاربردهای آن در زنجیره تأمین (شانزدهمین کنفرانس مهندسی ص...Sadegh Dorri N.
 
آموزش مکاترونیک کاربردی ۱ - بخش دوم
آموزش مکاترونیک کاربردی ۱ - بخش دومآموزش مکاترونیک کاربردی ۱ - بخش دوم
آموزش مکاترونیک کاربردی ۱ - بخش دومfaradars
 
Matlab present
Matlab presentMatlab present
Matlab presenthhpnoman
 
work order of logic laboratory
work order of logic laboratory work order of logic laboratory
work order of logic laboratory FS Karimi
 
درس مهنسی اینترنت فصل 1شبکه
درس مهنسی اینترنت فصل 1شبکهدرس مهنسی اینترنت فصل 1شبکه
درس مهنسی اینترنت فصل 1شبکهNavid Einakchi
 

Similar to 02 vectorization fundamentals_of_parallelism_and_code_optimization-www.astek.ir (20)

طراحي شبكه های مخابراتی و کامپیوتری
طراحي شبكه های مخابراتی و کامپیوتریطراحي شبكه های مخابراتی و کامپیوتری
طراحي شبكه های مخابراتی و کامپیوتری
 
1
11
1
 
Chapter 04 - introduction to tcpip protocols
Chapter 04 - introduction to tcpip protocolsChapter 04 - introduction to tcpip protocols
Chapter 04 - introduction to tcpip protocols
 
Plc 1
Plc 1Plc 1
Plc 1
 
آموزش مرتبه اجرایی در ساختمان داده و طراحی الگوریتم (مرور – تست کنکور ارشد)
آموزش مرتبه اجرایی در ساختمان داده و طراحی الگوریتم (مرور – تست کنکور ارشد)آموزش مرتبه اجرایی در ساختمان داده و طراحی الگوریتم (مرور – تست کنکور ارشد)
آموزش مرتبه اجرایی در ساختمان داده و طراحی الگوریتم (مرور – تست کنکور ارشد)
 
Cpusimulation
CpusimulationCpusimulation
Cpusimulation
 
مهندسی اینترنت فصل 4 لایه شبکه
مهندسی اینترنت فصل 4 لایه شبکهمهندسی اینترنت فصل 4 لایه شبکه
مهندسی اینترنت فصل 4 لایه شبکه
 
khazeni_taghizade
khazeni_taghizadekhazeni_taghizade
khazeni_taghizade
 
Chapter 03 - Transmission basics and networking media
Chapter 03 - Transmission basics and networking mediaChapter 03 - Transmission basics and networking media
Chapter 03 - Transmission basics and networking media
 
Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0
 
Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0Pdn tech-netfilter&iptables-ver2.1.0
Pdn tech-netfilter&iptables-ver2.1.0
 
برنامه سازی 2- اعظم صالح-هنرستان جنت فارسان
برنامه سازی 2- اعظم صالح-هنرستان جنت فارسانبرنامه سازی 2- اعظم صالح-هنرستان جنت فارسان
برنامه سازی 2- اعظم صالح-هنرستان جنت فارسان
 
Jozve c#2 mohamady_zahedy
Jozve c#2 mohamady_zahedyJozve c#2 mohamady_zahedy
Jozve c#2 mohamady_zahedy
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 
GSM/GPRS MODULES
GSM/GPRS MODULESGSM/GPRS MODULES
GSM/GPRS MODULES
 
فناوری زنجیره بلوک و کاربردهای آن در زنجیره تأمین (شانزدهمین کنفرانس مهندسی ص...
فناوری زنجیره بلوک و کاربردهای آن در زنجیره تأمین (شانزدهمین کنفرانس مهندسی ص...فناوری زنجیره بلوک و کاربردهای آن در زنجیره تأمین (شانزدهمین کنفرانس مهندسی ص...
فناوری زنجیره بلوک و کاربردهای آن در زنجیره تأمین (شانزدهمین کنفرانس مهندسی ص...
 
آموزش مکاترونیک کاربردی ۱ - بخش دوم
آموزش مکاترونیک کاربردی ۱ - بخش دومآموزش مکاترونیک کاربردی ۱ - بخش دوم
آموزش مکاترونیک کاربردی ۱ - بخش دوم
 
Matlab present
Matlab presentMatlab present
Matlab present
 
work order of logic laboratory
work order of logic laboratory work order of logic laboratory
work order of logic laboratory
 
درس مهنسی اینترنت فصل 1شبکه
درس مهنسی اینترنت فصل 1شبکهدرس مهنسی اینترنت فصل 1شبکه
درس مهنسی اینترنت فصل 1شبکه
 

More from aminnezarat

Health-medicine-and-Block-chain1402-1-12.pptx
Health-medicine-and-Block-chain1402-1-12.pptxHealth-medicine-and-Block-chain1402-1-12.pptx
Health-medicine-and-Block-chain1402-1-12.pptxaminnezarat
 
ارائه ابزار.pptx
ارائه ابزار.pptxارائه ابزار.pptx
ارائه ابزار.pptxaminnezarat
 
00 - BigData-Chapter_01-PDC.pdf
00 - BigData-Chapter_01-PDC.pdf00 - BigData-Chapter_01-PDC.pdf
00 - BigData-Chapter_01-PDC.pdfaminnezarat
 
Smart Data Strategy EN (1).pdf
Smart Data Strategy EN (1).pdfSmart Data Strategy EN (1).pdf
Smart Data Strategy EN (1).pdfaminnezarat
 
slides8 SharedMemory.ppt
slides8 SharedMemory.pptslides8 SharedMemory.ppt
slides8 SharedMemory.pptaminnezarat
 
06 hpc library_fundamentals_of_parallelism_and_code_optimization-www.astek.ir
06 hpc library_fundamentals_of_parallelism_and_code_optimization-www.astek.ir06 hpc library_fundamentals_of_parallelism_and_code_optimization-www.astek.ir
06 hpc library_fundamentals_of_parallelism_and_code_optimization-www.astek.iraminnezarat
 
01 introduction fundamentals_of_parallelism_and_code_optimization-www.astek.ir
01 introduction fundamentals_of_parallelism_and_code_optimization-www.astek.ir01 introduction fundamentals_of_parallelism_and_code_optimization-www.astek.ir
01 introduction fundamentals_of_parallelism_and_code_optimization-www.astek.iraminnezarat
 
Machine learning and big-data-in-physics 13970711-Dr. Amin Nezarat
Machine learning and big-data-in-physics 13970711-Dr. Amin NezaratMachine learning and big-data-in-physics 13970711-Dr. Amin Nezarat
Machine learning and big-data-in-physics 13970711-Dr. Amin Nezarataminnezarat
 
Big data HPC Convergence-Dr. Amin-Nezarat-(aminnezarat@gmail.com)-2019
Big data HPC Convergence-Dr. Amin-Nezarat-(aminnezarat@gmail.com)-2019Big data HPC Convergence-Dr. Amin-Nezarat-(aminnezarat@gmail.com)-2019
Big data HPC Convergence-Dr. Amin-Nezarat-(aminnezarat@gmail.com)-2019aminnezarat
 
Camera ready-nash equilibrium-ngct2015-format
Camera ready-nash equilibrium-ngct2015-formatCamera ready-nash equilibrium-ngct2015-format
Camera ready-nash equilibrium-ngct2015-formataminnezarat
 
Data set cloudrank-d-hpca_tutorial
Data set cloudrank-d-hpca_tutorialData set cloudrank-d-hpca_tutorial
Data set cloudrank-d-hpca_tutorialaminnezarat
 

More from aminnezarat (13)

Health-medicine-and-Block-chain1402-1-12.pptx
Health-medicine-and-Block-chain1402-1-12.pptxHealth-medicine-and-Block-chain1402-1-12.pptx
Health-medicine-and-Block-chain1402-1-12.pptx
 
ارائه ابزار.pptx
ارائه ابزار.pptxارائه ابزار.pptx
ارائه ابزار.pptx
 
00 - BigData-Chapter_01-PDC.pdf
00 - BigData-Chapter_01-PDC.pdf00 - BigData-Chapter_01-PDC.pdf
00 - BigData-Chapter_01-PDC.pdf
 
Smart Data Strategy EN (1).pdf
Smart Data Strategy EN (1).pdfSmart Data Strategy EN (1).pdf
Smart Data Strategy EN (1).pdf
 
slides8 SharedMemory.ppt
slides8 SharedMemory.pptslides8 SharedMemory.ppt
slides8 SharedMemory.ppt
 
BASIC_MPI.ppt
BASIC_MPI.pptBASIC_MPI.ppt
BASIC_MPI.ppt
 
Chap2 GGKK.ppt
Chap2 GGKK.pptChap2 GGKK.ppt
Chap2 GGKK.ppt
 
06 hpc library_fundamentals_of_parallelism_and_code_optimization-www.astek.ir
06 hpc library_fundamentals_of_parallelism_and_code_optimization-www.astek.ir06 hpc library_fundamentals_of_parallelism_and_code_optimization-www.astek.ir
06 hpc library_fundamentals_of_parallelism_and_code_optimization-www.astek.ir
 
01 introduction fundamentals_of_parallelism_and_code_optimization-www.astek.ir
01 introduction fundamentals_of_parallelism_and_code_optimization-www.astek.ir01 introduction fundamentals_of_parallelism_and_code_optimization-www.astek.ir
01 introduction fundamentals_of_parallelism_and_code_optimization-www.astek.ir
 
Machine learning and big-data-in-physics 13970711-Dr. Amin Nezarat
Machine learning and big-data-in-physics 13970711-Dr. Amin NezaratMachine learning and big-data-in-physics 13970711-Dr. Amin Nezarat
Machine learning and big-data-in-physics 13970711-Dr. Amin Nezarat
 
Big data HPC Convergence-Dr. Amin-Nezarat-(aminnezarat@gmail.com)-2019
Big data HPC Convergence-Dr. Amin-Nezarat-(aminnezarat@gmail.com)-2019Big data HPC Convergence-Dr. Amin-Nezarat-(aminnezarat@gmail.com)-2019
Big data HPC Convergence-Dr. Amin-Nezarat-(aminnezarat@gmail.com)-2019
 
Camera ready-nash equilibrium-ngct2015-format
Camera ready-nash equilibrium-ngct2015-formatCamera ready-nash equilibrium-ngct2015-format
Camera ready-nash equilibrium-ngct2015-format
 
Data set cloudrank-d-hpca_tutorial
Data set cloudrank-d-hpca_tutorialData set cloudrank-d-hpca_tutorial
Data set cloudrank-d-hpca_tutorial
 

02 vectorization fundamentals_of_parallelism_and_code_optimization-www.astek.ir