void GenerateTasks() { Task temp; int k1 = 0; int k2 = 5; for (int j=0; j<2; j++) { temp = new Task(); for (int i = k1; i < k2; i++) { temp.indexes.Add(i); } pendingTasks.Enqueue(temp); k1 += 5; k2 += 5; } }
public int sort() { task = obj.GetTask(); if (task == null) return 0; arr = obj.FetchData(task); Console.Out.WriteLine("Полученные данные:"); display(); int outer; max = arr[0]; min = arr[0]; for (outer = 0; outer < task.stop - task.start; outer++) { if (max < arr[outer]) max = arr[outer]; if (min > arr[outer]) min = arr[outer]; } Console.Out.WriteLine("Обработанные данные:"); Console.Out.WriteLine("Max: " + max + ". Min: " + min); obj.Finish(task, max, min); task.stop = 10; task.start = 6; return 1; }
public int sort() { task = obj.GetTask(); if (task == null) return 0; arr = obj.FetchData(task); Console.Out.WriteLine("Полученные данные:"); display(); int outer; float sum=0; for (outer = 0; outer < task.stop - task.start; outer++) { sum += arr[outer]; } Console.Out.WriteLine("Сумма элементов задания:"); Console.Out.Write(sum); Console.Out.WriteLine(" "); obj.Finish(sum); return 1; }
public int sort() { //try //{ task = obj.GetTask(); if (task == null) return 0; arr = obj.FetchData(task); Console.Out.WriteLine("Полученные данные:"); display(); int inner, outer, temp; for (outer = 1; outer < task.indexes.Count; outer++) { temp = arr[outer]; inner = outer; while (inner > 0 && arr[inner - 1] >= temp) { arr[inner] = arr[inner - 1]; inner--; } arr[inner] = temp; } //int inner, outer, temp; //int h = 1; //while (h <= task.size / 3) // h = h * 3 + 1; //while (h > 0) //{ // for (outer = h; outer < task.size; outer++) // { // temp = task.data[outer]; // inner = outer; // while (inner > h - 1 && task.data[inner - h] >= temp) // { // task.data[inner] = task.data[inner - h]; // inner -= h; // } // task.data[inner] = temp; // } // h = (h - 1) / 3; //} Console.Out.WriteLine("Обработанные данные:"); display(); obj.Finish(task, arr); //} //catch (System.Net.WebException e) //{ // Console.Out.WriteLine("Error " + e.Message); //} return 1; }
public int[] FetchData(Task task, int n) { Log.Print("Client has fetched data"); if (n==0) { int[] tempA = new int[task.stop-task.start]; int j = 0; for (int i = task.start; i < task.stop; i++) { tempA[j] = dataArrayA[i]; j++; } return tempA; } else { int[] tempB = new int[task.stop - task.start]; int j = 0; for (int i = task.start; i < task.stop; i++) { tempB[j] = dataArrayB[i]; j++; } return tempB; } }
public int sort() { task = obj.GetTask(); if (task == null) return 0; arr = obj.GetData(task); Console.Out.WriteLine("Полученные данные:"); display(); for (int i = 0; i <= arr.Length - 1; i++) { for (int j = i + 1; j < arr.Length; j++) { if (arr[j] < arr[i]) { var spam = arr[i]; arr[i] = arr[j]; arr[j] = spam; } } } Console.Out.WriteLine("Обработанные данные:"); display(); obj.Finish(task, arr); return 1; }
void GenerateTasks() { Task temp; int step = dataCount / tasksCount; // на каждую задачу приходится равная порция массива for (int i = 0; i < tasksCount; i++) { temp = new Task(); temp.start = i * step; temp.stop = temp.start + step - 1; pendingTasks.Enqueue(temp); } //int k1 = 0; //int k2 = 5; //for (int j=0; j<2; j++) //{ // temp = new Task(); // for (int i = k1; i < k2; i++) // { // temp.indexes.Add(i); // } // pendingTasks.Enqueue(temp); // k1 += 5; // k2 += 5; //} }
public double[] FetchData(Task task) { Log.Print("Client has fetched data"); double[] temp = new double[task.stop-task.start]; return temp; }
public int sort() { task = obj.GetTask(); if (task == null) return 0; int[,] ATemp; int[] BTemp; int[] C; obj.GetData(task, out BTemp, out ATemp); C= new int[SharedObject.n]; Console.Out.Write("Полученные данные:"); Console.Out.Write("\nСтроки матрицы A:\n"); for (int i = task.start; i <= task.stop; i++) // строк матрицы взяли столько, сколько указано для данного клиента (от строки start до строки stop) { Console.Out.WriteLine(); for (int j = 0; j < SharedObject.n; j++) // столбцов - столько, сколько есть всего { Console.Out.Write(ATemp[i,j]+"\t"); } } Console.Out.Write("\n\nВектор-столбец B:\n"); Console.Out.WriteLine(); for (int j = 0; j < SharedObject.n; j++) { Console.Out.Write(BTemp[j] + "\n"); //кол-во строк вектор-столбца обязательно равно кол-ву столбцов умножаемой на него матрицы } Console.Out.WriteLine("\nПроверка вычисления C[i]:"); for (int i = task.start; i <= task.stop; i++) { C[i] = 0; Console.Out.WriteLine(); for (int j = 0; j < SharedObject.n; j++) { C[i] += ATemp[i, j] * BTemp[j]; Console.Out.Write(" {0} * {1} ", ATemp[i, j], BTemp[j]); if (j + 1 != SharedObject.n) { Console.Out.Write("+"); } else { Console.Out.Write("= {0}", C[i]); } } Console.Out.WriteLine(); } obj.Finish(C); return 1; }
public int[] FetchData(Task task) { Log.Print("Client has fetched data"); int[] temp = new int[task.indexes.Count]; for (int i = 0; i < task.indexes.Count; i++) temp[i] = dataArray[task.indexes[i]]; return temp; }
void GenerateTasks () { Task temp; int step = dataCount1 / tasksCount ; // на каждую задачу должна приходится равная порция массива for ( int i = 0; i < tasksCount ; i++) { temp = new Task(); temp.start = i∗step; temp.stop = temp.start + step − 1; pendingTasks.Enqueue(temp); } }
public int sort() { //try //{ task = obj.GetTask(); if (task == null) return 0; arr = obj.FetchData(task); Console.Out.WriteLine("Полученные данные:"); display(); int outer; float sum=0; // for (outer = 0; outer < task.stop - task.start; outer++) // { // for (int j = outer + 1; j < task.stop - task.start; j++) // { // // if (arr[j] < arr[outer]) // { // var temp = arr[outer]; // arr[outer] = arr[j]; // arr[j] = temp; // } // } // } for (outer = 0; outer < task.stop - task.start; outer++) { sum += arr[outer]; } Console.Out.WriteLine("Среднее из задания:"); Console.Out.Write(Math.Round((sum / 50),0)); Console.Out.WriteLine(" "); obj.Finish(Math.Round((sum / 50))); //} //catch (System.Net.WebException e) //{ // Console.Out.WriteLine("Error " + e.Message); //} // task.stop = 10; //МЕГАКОСТЫЛЬ // task.start = 6; return 1; }
public int[] GetData(Task task) { ourServer.Print("Клиент получил следующие данные для обработки:"); int[] temp = new int[clientPortion]; int j = 0; for (int i = task.start; i <= task.stop; i++) { temp[j] = dataArray[i]; Console.Out.Write("{0}\t", dataArray[i].ToString()); j++; } return temp; }
public int[] FetchData(Task task) { Log.Print("Client has fetched data"); int[] temp = new int[task.stop-task.start]; int j = 0; for (int i = task.start; i < task.stop; i++) { temp[j] = dataArray[i]; j++; } return temp; }
void GenerateTasks() { Task temp; int step = dataCount / tasksCount; // делим массив на части for (int i = 0; i < tasksCount; i++) { temp = new Task(); temp.start = i * step; temp.stop = temp.start + step - 1; pendingTasks.Enqueue(temp); } }
void GenerateTasks() { Task temp; temp = new Task(); for (int i = 0; i < dataCount; i=dataCount) { temp.indexes.Add(i); } pendingTasks.Enqueue(temp); }
public int sort() { //try task = obj.GetTask(); if (task == null) return 0; double[,] arr; double[] b1; double[] C; obj.FetchData(task, out b1, out arr); C= new double[SharedObject.n]; Console.Out.Write("Полученные данные:"); for (int i = task.start; i < task.stop; i++) { for (int j = 0; j < SharedObject.n; j++) { Console.Out.Write(arr[i,j]+" "); } Console.Out.WriteLine(); } for (int i = task.start; i < task.stop; i++) { for (int j = 0; j < SharedObject.n; j++) { C[i] += arr[i, j] * b1[j]; } } obj.Finish(C); //} //catch (System.Net.WebException e) //{ // Console.Out.WriteLine("Error " + e.Message); //} // task.stop = 10; //МЕГАКОСТЫЛЬ // task.start = 6; return 1; }
public void FetchData(Task task,out double[] b1,out double[,] temp ) { Log.Print("Client has fetched data"); temp = new double[m,n]; b1 = new double[n]; for (int i = task.start; i < task.stop; i++) { for (int j = 0; j < n; j++) { temp[i,j] = dataArray[i,j]; } } for (int j = 0; j < n; j++) { b1[j] = B[j]; } }
public int sort() { //try //{ task = obj.GetTask(); if (task == null) return 0; arr = obj.FetchData(task); Console.Out.WriteLine("Полученные данные:"); display(); int outer; for (outer = 0; outer < task.stop - task.start; outer++) { for (int j = outer + 1; j < task.stop - task.start; j++) { if (arr[j] < arr[outer]) { var temp = arr[outer]; arr[outer] = arr[j]; arr[j] = temp; } } } Console.Out.WriteLine("Обработанные данные:"); display(); obj.Finish(task, arr); //} //catch (System.Net.WebException e) //{ // Console.Out.WriteLine("Error " + e.Message); //} // task.stop = 10; //МЕГАКОСТЫЛЬ // task.start = 6; return 1; }
public void Finish(Task task, int max, int min) { Log.Print("Client has finished task"); lock (dataLock) { maxes.Add(max); mins.Add(min); } if (pendingTasks.Count == 0) { Log.Print("Final task has finished"); for (int i = 0; i < tasksCount; i++) { if (maxim < maxes[i]) maxim = maxes[i]; if (minim > mins[i]) minim = mins[i]; } Log.Print("Max: " + maxim + ". Min: " + minim); } }
void GenerateTasks() { ourServer.Print("Распределение задач..."); Task temp; ourServer.Print("Всего элементов в матрице:{0}", dataCount); ourServer.Print("Клиентов:{0}", tasksCount); ourServer.Print("Кол-во элементов на клиента:{0}", clientPortion); for (int i = 0; i < tasksCount; i++) { temp = new Task(); ourServer.Print("\nИнициализация счетчика элементов, выделенных для клиента #{0}", i + 1); temp.start = i * clientPortion; ourServer.Print("Индекс начального элемента: {0}", temp.start + 1); temp.stop = temp.start + clientPortion - 1; ourServer.Print("Индекс конечного элемента: {0}", temp.stop + 1); QueTasks.Enqueue(temp); //добавление задачи в конец очереди } ourServer.Print("\nЗадачи успешно распределены!"); }
public int Int() { task = obj.GetTask(); if (task == null) return 0; dynamic Cl_Low, Cl_Up, Cl_fun, Cl_N; obj.GetData(task, out Cl_Low, out Cl_Up, out Cl_fun, out Cl_N); Console.Out.Write("Полученные данные:"); Console.Out.Write("\nКоординаты отрезка:\n"); ServerConsole.Print("Начало: {0}", Cl_Low); ServerConsole.Print("Конец: {0}", Cl_Up); ScriptEngine engine = Python.CreateEngine(); ScriptScope scope = engine.CreateScope(); //В вычислительном модуле python используется модуль random.py //он находится в IronPython.StdLib //для работы программы необходимо подключить папку с StdLib: var paths = engine.GetSearchPaths(); //путь к папке paths.Add(@"D:\IronPython.StdLib.2.7.5\content\Lib"); engine.SetSearchPaths(paths); //непосредственный запуск модуля engine.ExecuteFile("D://monte-carlo.py", scope); //теперь можно "разобрать" запущенный скрипт на части, вытаскивая из него необходимые функции и переменные //вытаскиваем интегрирующую функцию dynamic monte_carlo = scope.GetVariable("monte_carlo"); dynamic result = monte_carlo(Cl_fun, Cl_Low, Cl_Up, Cl_N); obj.Finish(result); return 1; }
void GenerateTasks() { //Random r = new Random(DateTime.Now.Millisecond); //pendingTasks = new Queue<Task>(); //finishedTasks = new List<Task>(); //for (int i = 0; i < tasksCount; i++) //{ // Task temp = new Task(); // temp.data = new int[partSize]; // for (int j = 0; j < partSize; j++) // temp.data[j] = r.Next(0, dataCount * tasksCount); // temp.size = partSize; // pendingTasks.Enqueue(temp); //} int h = 1; int j = 0; Task temp; while (h <= dataCount / 3) h = h * 3 + 1; while (h > 0) { temp = new Task(); for (int i = 0; i < dataCount; i += h) { temp.indexes.Add(i); } pendingTasks.Enqueue(temp); h = (h - 1) / 3; } }
void CreateTasks() { ServerConsole.Print("\n\nСоздание задач...\n"); Task temp; //распределение массива поровну на каждого клиента int clientPortion = dataCount / tasksCount; ServerConsole.Print("Всего строк в матрице:{0}",dataCount); ServerConsole.Print("Клиентов:{0}",tasksCount); ServerConsole.Print("Кол-во строк на клиента:{0}",clientPortion); for (int i = 0; i < tasksCount; i++) { temp = new Task(); ServerConsole.Print("\nИнициализация счетчика умножаемых строк для клиента #{0}",i+1); temp.start = i * clientPortion; ServerConsole.Print("Начальная строка: {0}",temp.start+1); temp.stop = temp.start + clientPortion - 1; ServerConsole.Print("Конечная строка: {0}", temp.stop+1); QueTasks.Enqueue(temp); //добавление задачи в конец очереди } ServerConsole.Print("\nЗадачи успешно созданы и распределены!"); }
public int sort() { //try //{ task = obj.GetTask(); if (task == null) return 0; arr = obj.FetchData(task); Console.Out.Write("Получено"); double x=0,dx,Pi=0; x = 0.0; if (task.start != 0) { x = 0.5; } dx = 1.0 / 1000000.0; int outer; for (outer = 0; outer < task.stop - task.start; outer++) { Pi += Math.Sqrt(1 - x * x)*4*dx; x += dx; } Console.Out.WriteLine(" S(rec)="+Pi); obj.Finish(Pi); return 1; }
public void GetData(Task task, out int[] Btemp, out int[,] Atemp) { Atemp = new int[m, n]; Btemp = new int[n]; ServerConsole.Print("\nКлиент начал получение данных для обработки!"); Console.Out.WriteLine("A[m,n] передаваемое клиенту:"); for (int i = task.start; i <= task.stop; i++) { Console.Out.WriteLine(); for (int j = 0; j < n; j++) { Atemp[i, j] = A[i, j]; Console.Out.Write("{0}\t", Atemp[i, j].ToString()); } } Console.Out.WriteLine("\n\nB[n] передаваемое клиенту:"); for (int j = 0; j < n; j++) { Btemp[j] = B[j]; Console.Out.Write("{0}\n", Btemp[j].ToString()); } ServerConsole.Print("Клиент получил данные для обработки!\n\n"); }
public void Finish(Task task, int[] data) { Log.Print("Client has finished task"); lock (dataLock) { for (int i = 0; i < task.indexes.Count; i++) dataArray[task.indexes[i]] = data[i]; } //finishedTasks.Add(task); if (pendingTasks.Count == 0) { Log.Print("Final task has finished"); } }
public int [] FetchData(Task task ) { Log.Print (" Клиент получил данные"); int [] res = new int [ task.stop − task.start ];
public void Finish(Task task, int[] data) { Log.Print("Client has finished task"); lock (dataLock) { int j = 0; for (int i = task.start; i < task.stop; i++) { dataArray[i] = data[j]; j++; Console.Out.Write(dataArray[i]+" "); } Console.Out.WriteLine(); } //finishedTasks.Add(task); if (pendingTasks.Count == 0) { Log.Print("Final task has finished"); Console.Out.WriteLine("\n\n"); Console.Out.WriteLine("Sorting an array(Client)"); for (int i = 0; i < 100; i++) { Console.Out.Write(dataArray[i] + " "); } Console.Out.WriteLine("\n\n"); dataArray = Sort(dataArray); Console.Out.WriteLine("Sorting an array(MERGE on server)"); for (int i = 0; i < 100; i++) { Console.Out.Write( dataArray[i]+" "); } Console.Out.WriteLine(); } }
public void Finish(Task task, int max, int min) { Log.Print("Client has finished task"); lock (dataLock) { task.maxEl.Add(max); task.minEl.Add(min); } //finishedTasks.Add(task); if (pendingTasks.Count == 0) { Log.Print("Final task has finished"); for (int i = 0; i < tasksCount-1; i++) { if (maxim < task.maxEl[i]) maxim = task.maxEl[i]; } for (int i = 0; i < tasksCount-1; i++) { if (minim > task.minEl[i]) minim = task.minEl[i]; } Console.Write(minim + " "); Console.Write(maxim + " "); Console.WriteLine(); } }