Помощь в запуске BOINC-проекта SPT

Message boards : Number crunching : Помощь в запуске BOINC-проекта SPT
Message board moderation

To post messages, you must log in.

1 · 2 · Next

AuthorMessage
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 2 - Posted: 14 Jun 2023, 16:20:58 UTC
Last modified: 14 Jun 2023, 16:25:31 UTC

Пока предпринята попытка запустить тестовый проект от разработчика.
Есть проблема с получением заданий на выполнение.

Просим помощи.

_________________

So far, an attempt has been made to launch a test project from the developer.
There is a problem with getting tasks to execute.

Please help.
ID: 2 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 3 - Posted: 14 Jun 2023, 17:59:20 UTC

Есть такой ответ на форуме французской команды
https://forum.boinc-af.org/index.php/topic,8014.150.html

He must join boinc_projects mailing list to write there to explain (clearly, not "I have a problem") and try to get some help from boinc project devs.

https://github.com/BOINC/boinc/wiki/EmailLists
ID: 3 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 7 - Posted: 15 Jun 2023, 5:38:27 UTC
Last modified: 15 Jun 2023, 13:46:09 UTC

Господа!

Пока я постараюсь рассказать, что можно запустить в BOINC-проекте по поиску симметричных кортежей из последовательных простых чисел (кратко проект называется SPT).

Первый вариант - это алгоритм брутфорса, реализованный давно моим коллегой Алексеем Белышевым.
Программа Белышева работала в обоих остановленных BOINC-проектах по поиску кортежей: Stop@home и T. Brada Experimental Grid.

Пожалуйста, посмотрите сообщение
https://boinc.progger.info/odlk/forum_thread.php?id=196&postid=11851
Это из моей беседы с GPT-4.
Цитирую
От проекта T. Brada Experimental Grid сохранился код программы
https://github.com/tomasbrod/tbboinc/blob/primes/symprtu/spt.cpp
Вы можете помочь мне с компиляцией этого кода?

Далее читайте в указанном сообщении ответ GPT-4.
По-моему, он рассказал всё правильно.
То есть этот вариант можно попробовать запустить.

К тому же, совсем не обязательно использовать именно код Tomas Brada, если с этим кодом возникнут сложности.
Можно использовать оригинальный исходный код Белышева и на его основе сделать расчётный модуль для BOINC-проекта.

О другом варианте запуска BOINC-проекта смотрите далее.

PS. Большим недостатком программы Белышева является то, что диапазон поиска кортежей оганичен.
Смотрите снова мою беседу с GPT-4 в сообщении
https://boinc.progger.info/odlk/forum_thread.php?id=196&postid=11850

Вопрос:
Вы уверены, что генератор primesieve может генерировать простые числа, превышающие 2^64?

Ответ GPT-4:
Приношу извинения за недостаточно точный ответ на ваш предыдущий вопрос. Генератор primesieve позволяет генерировать простые числа до 2^64 - 1, то есть максимально возможное простое число, которое можно сгенерировать с помощью primesieve, равно 18446744073709551615.

Немного не точно сказано о максимально возможном простом числе, ибо число 18446744073709551615 не является простым.
Но суть ясна: диапазон генерируемых генератором primesieve простых чисел ограничен числом 2^64.
Однако до этого значения нам идти ещё долго, в BOINC-проекте TBEG проверен диапазон чуть дальше числа 4663163081869749997.
Последний найденный кортеж длины 13
4663163081869749997: 0 60 66 96 114 144 210 276 306 324 354 360 420

Смотрите
https://boinc.tbrada.eu/spt/tuples.php?spt=13&p=5

PS. Уточняю последний диапазон, проверенный в BOINC-проекте TBEG.
Цитата
Последняя партия (проверяемый диапазон) в BOINC-проекте TBEG
21 August 2022
Batch 85: 4100001000000000000 .. 4663201000000000000 -1
Count: 256000

https://boinc.tbrada.eu/forum_thread.php?id=3055&postid=4761
Смотрите сообщение
https://boinc.progger.info/odlk/forum_thread.php?id=233&postid=10709
ID: 7 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 8 - Posted: 15 Jun 2023, 6:16:11 UTC

Замечание: программа Белышева ищет кортежи чётных и нечётных длин.
В одной версии программы длины кортежей: 12 - 33, в другой версии: 16 - 33.

В запускаемом проекте желательно сосредоточиться на поиске кортежей нечётных длин.
Проблемной нечётной длиной на данный момент является длина 19.
Симметричный кортеж длины 19 из последовательных простых чисел до сих пор не найден!
ID: 8 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 9 - Posted: 15 Jun 2023, 13:56:24 UTC

Второй вариант запуска - поиск кортежей нечётных длин, в частности - длины 19.
Здесь надо использовать разработанные мной алгоритмы, два из которых находятся в работе в данный момент.

В поиске симметричного кортежа длины 19 из последовательных простых чисел (далее кратко - 19-ка) есть две подзадачи:
1) поиск 19-ки с минимальным диаметром 252;
2) поиск 19-ки с любым другим диаметром.

Мои алгоритмы охватывают обе подзадачи.

Рекомендую посмотреть следующие темы:

1) Нерешённая проблема теории чисел
https://boinc.progger.info/odlk/forum_thread.php?id=224#8218

2) К штурму 19-ки
https://boinc.progger.info/odlk/forum_thread.php?id=237

3) Специальный генератор простых чисел
https://boinc.progger.info/odlk/forum_thread.php?id=247

4) Manual mode of the "Symmetric Prime Tuples" project
https://boinc.progger.info/odlk/forum_thread.php?id=233
ID: 9 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 10 - Posted: 16 Jun 2023, 15:24:04 UTC
Last modified: 16 Jun 2023, 15:29:58 UTC

Цитата
PS. Уточняю последний диапазон, проверенный в BOINC-проекте TBEG.
Цитата
Последняя партия (проверяемый диапазон) в BOINC-проекте TBEG
21 August 2022
Batch 85: 4100001000000000000 .. 4663201000000000000 -1
Count: 256000

https://boinc.tbrada.eu/forum_thread.php?id=3055&postid=4761

Потом последовало продолжение в ручном проекте.
Были найдены следующие 13-ки (непосредственно в данном диапазоне, продолжающем проверенный в проекте TBEG диапазон)

4663219376162424643: 0 18 30 48 60 66 108 150 156 168 186 198 216
4663251768340014749: 0 30 42 72 78 102 120 138 162 168 198 210 240
4663276951683539461: 0 6 48 90 156 186 198 210 240 306 348 390 396
4663290868594401713: 0 18 126 138 168 180 258 336 348 378 390 498 516
4663299607736746799: 0 30 120 210 240 264 294 324 348 378 468 558 588
4663320217379003569: 0 12 30 42 72 78 120 162 168 198 210 228 240
4663360279639155637: 0 12 30 72 90 96 126 156 162 180 222 240 252
4663364077719146873: 0 36 66 90 108 168 318 468 528 546 570 600 636
4663401855007899281: 0 12 90 108 120 132 150 168 180 192 210 288 300
4663405445023241869: 0 18 72 102 168 192 210 228 252 318 348 402 420
4663419383535982451: 0 6 30 72 96 120 126 132 156 180 222 246 252
4663430006310634703: 0 18 30 48 60 96 198 300 336 348 366 378 396
4663488067021729051: 0 30 36 126 168 186 198 210 228 270 360 366 396
4663488752091826781: 0 36 48 60 120 126 168 210 216 276 288 300 336
4663609416460008901: 0 12 42 78 132 138 150 162 168 222 258 288 300
4663625504815848469: 0 54 84 150 192 204 222 240 252 294 360 390 444
4663699800024890483: 0 18 48 60 66 126 138 150 210 216 228 258 276
4663722037876034801: 0 12 78 108 150 162 180 198 210 252 282 348 360
4663737243739394063: 0 60 78 138 144 168 174 180 204 210 270 288 348
4663747367776063739: 0 12 30 42 78 102 120 138 162 198 210 228 240
4663830253978175177: 0 30 36 42 72 156 186 216 300 330 336 342 372
4663845760376153941: 0 18 30 72 90 102 150 198 210 228 270 282 300
4663854611401124519: 0 24 48 108 120 174 204 234 288 300 360 384 408
4663861558086461147: 0 6 36 120 132 156 186 216 240 252 336 366 372

15-ка в этом диапазоне найдена всего одна
4663699800024890453: 0 30 48 78 90 96 156 168 180 240 246 258 288 306 336

Более точное окончание проверенного диапазона смотрим в последней найденной 12-ке
4663878384525935453: 0 8 14 36 48 68 126 146 158 180 186 194

Вот отсюда и надо продолжить работу программы Белышева.

У меня в ручном проекте проверяются и сейчас некоторые диапазоны программой Белышева.
Например, диапазон, в котором найдены следующие 13-ки
7896570594100408739: 0 30 78 150 162 168 180 192 198 210 282 330 360
7896574896175076017: 0 30 84 102 114 144 162 180 210 222 240 294 324
7896619749725244767: 0 6 36 54 66 120 150 180 234 246 264 294 300

Этот диапазон проверяется на моём личном ПК.
Ещё два диапазона проверяются на компьютере с удалённым управлением, который мне предоставил коллега.
ID: 10 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 11 - Posted: 16 Jun 2023, 15:38:20 UTC
Last modified: 16 Jun 2023, 18:15:40 UTC

Программа Алексея Белышева
поиск симметричных кортежей длины 16 - 33 из последовательных простых чисел
язык С++

#include <iostream>
#include <iomanip>
#include <fstream>
#include <sstream>
#include <vector>
#include <set>
#include <ctime>
#include <Windows.h>
#include "primesieve.h"

using namespace std;

typedef unsigned long long ull;
enum poziciya{chasy,minuty,sekundy,sdelano,vremya,interval,provereno,skorostq,vsego_16,konec};
enum shablony{s_16=15,s_17,s_18,s_19,s_20,s_21,s_22,s_23,s_24,s_25,s_26,s_27,s_28,s_29,s_30,s_31,s_32,s_33};

const int dlina_intervala = 2000000000;
const int chislo_shablonov = 18;
const int max_smew = ((s_33 + 1) >> 1);
const int centr = (s_33 >> 1) - 1;
const int ss = 100;
const int sss = 1000000;
const COORD koord[] = {{40,0},{51,0},{54,0},{13,2},{49,0},{0,1},{0,2},{0,3},{12,4},{0,22}};

class _kursor{
	HANDLE ScrHandle;
public:
	_kursor(){ScrHandle = GetStdHandle(STD_OUTPUT_HANDLE);}
	void skrytq(){
		CONSOLE_CURSOR_INFO kursinf;	
		GetConsoleCursorInfo(ScrHandle , &kursinf);
		kursinf.bVisible = false;
		SetConsoleCursorInfo(ScrHandle , &kursinf);
	}
	void pokazatq(){
		CONSOLE_CURSOR_INFO kursinf;	
		GetConsoleCursorInfo(ScrHandle , &kursinf);
		kursinf.bVisible = true;
		SetConsoleCursorInfo(ScrHandle , &kursinf);
	}
	void pomestitq(COORD z){SetConsoleCursorPosition(ScrHandle, z);}
} kursor;

HANDLE hpotok;
DWORD idpotok;
UINT_PTR idTimer;
int speed, najdeno[chislo_shablonov];
ull start, endint, max_stop = primesieve::get_max_stop();
unsigned progress;
bool otobr, poisk, pros, provr;
vector<ull> primes;
clock_t nachtik;

void __stdcall TimerProc(HWND, UINT, UINT, DWORD);
DWORD __stdcall potok(void*);
bool vypolnitq();
bool init(int nabor[]);
void proverka(int nabor[]);
void vyvod(long long stprime, int nabor[], int st, int shablon);
void prov_ne_poln(int nabor[]);
void prov_nach_ne_poln(int nabor[]);
inline void vremya_vyvod(){
	static int tik, minuta, chas;	
	if(tik > 57){
		tik = 0;
		if(minuta > 58){
			minuta = 0;
			chas++;
			kursor.pomestitq(koord[chasy]);	
			cout << setw(10) << chas;
		}
		else minuta++;
		kursor.pomestitq(koord[minuty]);
		cout << setw(2) << setfill('0') << minuta;
		kursor.pomestitq(koord[sekundy]);
		cout << setw(2) << tik << setfill(' ');
	}
	else{
		tik +=2;				
		kursor.pomestitq(koord[sekundy]);
		cout << setw(2) << setfill('0') << tik << setfill(' ');
	}
}
inline void inf_pros(){
	kursor.pomestitq(koord[interval]);
	cout << "Текущий интервал: [" << start << " ... " << endint << "]\nПросеяно  :      0%";
	kursor.pomestitq(koord[skorostq]);
	cout << "Скорость  : ";
	if(speed) cout << setw(6) << speed;
	else for(int i = s_16; i <= s_33; i++) cout << "\nНайдено " << (i + 1) << ':';
	pros = false;
}
inline void inf_provr(){
	kursor.pomestitq(koord[provereno]);
	cout << "Проверено :      0%";
	provr = false;
}
inline void inf_otobr(){
	unsigned t;
	kursor.pomestitq(koord[sdelano]);
	if(poisk){
		t = progress / ((primes.size() - 1) / ss);
		cout << setw(5) << t;
		COORD krd = koord[vsego_16];
		for(int i = 0; i < chislo_shablonov; i++, krd.Y++){
			kursor.pomestitq(krd);
			cout << setw(6) << najdeno[i];
		}
	}
	else{
		t = primes.size() / sss;
		cout << setw(5) << t;
	}
}
inline void proverka_ch(int nabor[], int st, int i){
	for(int j = 1, t = centr + st; j <= 7; j++){
		if(nabor[(t - j) & s_32] != nabor[(t + j) & s_32]) return;
	}
	vyvod(primes[i - s_25], nabor, st + 8, s_16);
	for(int j = 8, t = centr + st; j <= centr; j++){
		if(nabor[(t - j) & s_32] != nabor[(t + j) & s_32]) return;
		vyvod(primes[i - s_18 - j], nabor, st + s_16 - j, s_16 + ((j - 7) << 1));
	}
}
inline void proverka_nch(int nabor[], int st, int i){
	for(int j = 0, t = centr + st; j <= 7; j++){
		if(nabor[(t - j) & s_32] != nabor[(t + j + 1) & s_32]) return;
	}
	vyvod(primes[i - s_25], nabor, st + 8, s_17);
	for(int j = 8, t = centr + st; j <= centr; j++){
		if(nabor[(t - j) & s_32] != nabor[(t + j + 1) & s_32]) return;
		vyvod(primes[i - s_18 - j], nabor, st + s_16 - j, s_17 + ((j - 7) << 1));
	}
}
inline void prov_nach(int nabor[], int i, int k){
	for(int j = 0; j < (i >> 1); j++) if(nabor[k + j] != nabor[i - 1 + k - j]) return;
	vyvod(primes[k], nabor, k, i);
}

int main(){
	setlocale(LC_CTYPE, "rus");
	system("cls");
	kursor.skrytq();
	cout << "Поиск ассоциативных наборов простых";
	kursor.pomestitq(koord[vremya]);	
	cout << "0:00:00";
	hpotok = CreateThread(NULL, 0, potok, NULL, 0, &idpotok);	
	idTimer = SetTimer(NULL, 1, 2000, TimerProc);
	MSG msg;	
	while(true){
		GetMessage(&msg, NULL, 0, 0);
		DispatchMessage(&msg);
	}	
	return 0;
}

DWORD __stdcall potok(void*){
	ifstream fin("start.txt");
	if(fin) fin >> start;
	fin.close();
	start &= 0xfffffffffffffffe;
	while(vypolnitq());
	KillTimer(NULL, idTimer);
	Sleep(100);
	cout << "\n\nДостигнут максимум " << max_stop << "\nДля выхода нажмите любую клавишу . . .\n";
	system("pause > nul");
	kursor.pokazatq();
	exit(0);
	return 0;
}

void __stdcall TimerProc(HWND, UINT, UINT, DWORD){
	vremya_vyvod();
	if(pros) inf_pros();
	if(provr) inf_provr();
	if(otobr) inf_otobr();
	kursor.pomestitq(koord[konec]);
}

bool vypolnitq(){
	if(start >= max_stop) return false;
	endint = min(start + dlina_intervala, max_stop);
	if(!otobr) otobr = true;
	pros = true;	
	poisk = false;
	primes.clear();
	nachtik = clock();
	primesieve::generate_primes(start, endint, &primes);
	if(primes.size() <= s_16) return false;
	int nabor[s_33];
	if(!init(nabor)) return false;
	proverka(nabor);
	return true;
}

bool init(int nabor[]){
	static bool inicial;
	if(inicial){
		if(primes.size() <= s_33){
			if(primes.size() == s_33) prov_ne_poln(nabor);
			return false;
		}
		for(int i = 0; i < s_33; i++) nabor[i] = int(primes[i + 1] - primes[i]);
	}else{
		if(primes.size() <= s_33){
			prov_nach_ne_poln(nabor);
			return false;
		}
		for(int i = 0; i < s_33; i++) nabor[i] = int(primes[i + 1] - primes[i]);
		for(int i = s_16; i <= s_30; i++)
			for(int k = 0; k < max_smew - ((i + 1) >> 1); k++) prov_nach(nabor, i, k);
		inicial = true;
	}
	return true;
}

void proverka(int nabor[]){
	poisk = provr = true;
	int st = 0;
	for(size_t i = s_33;; i++){
		proverka_ch(nabor, st, i);
		proverka_nch(nabor, st, i);
		if(i >= primes.size() - 1) break;
		nabor[st] = int(primes[i + 1] - primes[i]);	
		st = (st + 1) & s_32;
		progress = i;
	}
	speed = int(7200000.0 / (clock() - nachtik) + 0.5);
	start = primes[primes.size() - s_33] - 1;
	ofstream fout("start.txt");
	fout << start;
	fout.close();
}

//s_17 - ((shablon + 1) >> 1)

void vyvod(long long  stprime, int nabor[], int st, int shablon){
	ostringstream imya;
	imya << "kpppch_" << (shablon + 1) << ".txt";
	ofstream fout(imya.str(), ios::out | ios::app);
	fout << stprime << ": 0";
	for(int i = 0, sum = 0; i < shablon; i++) fout << ' ' << (sum += nabor[(st + i) & s_32]);
	fout << endl;
	najdeno[shablon - s_16]++;
}

void prov_ne_poln(int nabor[]){
	for(int i = 0; i < s_32; i++) nabor[i] = int(primes[i + 1] - primes[i]);
	for(int i = s_16; i <= s_31; i++){
		for(int j = s_16 - ((i + 1) >> 1); j <= s_20 - ((i + 2) >> 1); j++){
			for(int k = 0; k < (i >> 1); k++){if(nabor[k + j] != nabor[i - 1 - k + j]) goto next;}
			vyvod(primes[j], nabor, j, i);
next:		;
		}
	}
}

void prov_nach_ne_poln(int nabor[]){
	int raz = primes.size() - 1;
	for(int i = 0; i < raz; i++) nabor[i] = int(primes[i + 1] - primes[i]);
	for(int i = s_16; i <= raz; i++){
		for(int j = 0; j <= raz - i; j++){
			for(int k = 0; k < (i >> 1); k++){if(nabor[k + j] != nabor[i - 1 - k + j]) goto next;}
			vyvod(primes[j], nabor, j, i);
next:		;
		}
	}
}

Господа!
Если вы умеете создавать Приложение для BOINC-проекта, пожалуйста, подключайтесь к нашей команде.
Мы можем прямо сейчас готовить первое Приложение, основанное на программе Белышева.
Белышев использовал для генерации простых чисел генератор primesieve.
ID: 11 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 12 - Posted: 16 Jun 2023, 16:28:06 UTC
Last modified: 16 Jun 2023, 16:37:08 UTC

Ещё есть огромная тема "About Stop@home project"
https://boinc.progger.info/odlk/forum_thread.php?id=49

Сейчас просматривала эту тему и нашла интересное сообщение
https://boinc.progger.info/odlk/forum_thread.php?id=49&postid=4531

Цитата

I once downloaded the version of this program primesieve_5.0_win64
Это README.txt

primesieve 5.0
January 10, 2014
Kim Walisch,

About primesieve
================

primesieve is a free software program that generates primes and
prime k-tuplets (twin primes, prime triplets, ...) < 2^64 using a
highly optimized implementation of the sieve of Eratosthenes.

Homepage: http://primesieve.org

Changes in version 5.0
======================

+ New website: http://primesieve.org
+ New C++ API
+ C bindings
+ Git Version Control
+ GNU Autotools

Complete ChangeLog:
https://github.com/kimwalisch/primesieve/blob/master/ChangeLog

Usage
=====

By default primesieve counts prime numbers to print the primes set
'Print->Prime numbers' in the menu bar.

The best sieving performance is achieved with a sieve size of your
CPU's L1 data cache size (usually 32 or 64 KB) when sieving < 10^16
and a sieve size of your CPU's L2 cache size above.

Здесь информация о генераторе primesieve; может, будет полезна.
ID: 12 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 16 - Posted: 16 Jun 2023, 18:00:15 UTC
Last modified: 16 Jun 2023, 18:10:19 UTC

Как работает программа Белышева

Для работы программы Белышева требуется задать начало проверяемого диапазона, которое должно быть записано во входном файле start.txt
Например,
4663878384525935453

Недостаток программы в том, что она не принимает конец проверяемого диапазона.
Это надо будет исправить.
Клиент должен получить конечный диапазон для проверки, например
[4663878384525935453,4663878400000000000]

Как выбрать длину проверяемого диапазона?
Скорость программы Белышева примерно 200-300 миллиардов натуральных чисел в час.
Это зависит от производительности компьютера.
Вот на эту скорость надо ориентироваться.
Для выполнения одного задания (WU) можно выделить примерно один час.
Следовательно, длина диапазона может быть в пределах 200-300 миллиардов натуральных чисел.

В программе Белышева есть чекпоинт, что очень хорошо.
Если программа будет нештатно прервана, конец последнего проверенного интервала будет записан в файл start.txt
Для дальнейшей проверки надо просто перезапустить программу, она начнёт работать с прерванного места.
Однако это не всегда корректно работает, если одновременно работают несколько копий программы.

В программе Белышева реализован алгоритм грубой силы (брутфорс).
С помощью генератора primesieve генерируются простые числа в интервале длиной 2 миллиарда (натуральных чисел); затем выполняется тотальная проверка в массиве сгенерированных простых чисел; после проверки повторяется генерация простых чисел в следующем интервале длиной 2 миллиарда.
ID: 16 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 17 - Posted: 16 Jun 2023, 18:12:54 UTC
Last modified: 17 Jun 2023, 1:44:10 UTC

Господа!

Вы уже всё знаете о программе Белышева.
Вы можете начать подготовку Приложения 1, если у вас есть соответствующие знания и опыт.

Подключайтесь к нашей команде, пожалуйста.
Это поможет ускорить запуск BOINC-проекта.

Как уже написано выше, в проекте планируется Приложение 2.
Это Приложение будет основано на разработанных мной алгоритмах.
Действующих в данный момент алгоритмов два.
Может быть, каждый алгоритм будет запущен в отдельном Приложении; скорее всего, именно так и будет.
То есть будут ещё Приложение 2 и Приложение 3.
Оба алгоритма в данный момент работают в ручном проекте и дают неплохие результаты.

Один из алгоритмов был опробован в эксперименте с распределёнными вычислениями.
Смотрите тему
https://boinc.progger.info/odlk/forum_thread.php?id=243

К сожалению, участник эксперимента был всего один (не считая меня).
Сейчас эксперимент остановлен.
То есть он мог бы продолжаться, но желающих считать нет.
У меня всё продолжает работать.

Десять WU (61 - 70), которые ещё никто не считал, вы можете найти в архиве SPT_manually.7z по ссылке
https://disk.yandex.ru/d/SPRlGAZMfq0s2g

Если хотите, посмотрите, как это работает.
Скачайте задания и запустите их на выполнение.

Мы можем начинать подготовку Приложения 2.
ID: 17 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 19 - Posted: 17 Jun 2023, 3:11:17 UTC
Last modified: 17 Jun 2023, 3:32:20 UTC

Приведу сообщение с форума boinc.ru.
Речь идёт о запуске с помощью обёртки BOINC.

Копия сообщения
https://boinc.ru/forum/topic/proekt-hugo-van-der-sanden/?part=13#postid-7362

Прочитать можно вот здесь: The BOINC Wrapper. Но, возможно, что объяснение ниже будет проще.
Предположим, что у нас есть наш вычислительный модуль module и приложение-обёртка wrapper (wrapper уже есть либо в исходниках BOINC, либо его можно просто скачать в готовом виде).
Тогда наше вычислительное приложение BOINC (для Windows, например) будет состоять из четырёх файлов:
Файла wrapper-а: wrapper_windows_intelx86_64.exe
Файла нашего модуля: module_windows_intelx86_64.exe
Файла с описанием того, что должен делать wrapper: job_windows_intelx86_64.xml
Файла описания приложения: version.xml
В файле описания приложения будет примерно следующее:


wrapper_windows_intelx86_64.exe




module_windows_intelx86_64.exe
module_windows_intelx86_64.exe



job_windows_intelx86_64.xml
job.xml



В файле job_windows_intelx86_64.xml, который при запуске вычислений в отдельном каталоге будет переименовываться в job.xml (т.к. именно такое указано logical_name) будет примерно следующее:


module_windows_intelx86_64.exe
task.txt
result.txt
fraction_done.txt


(тут ещё можно поменять и logical name для вычислительного модуля).
И тогда, при запуске расчётов очередного задания, BOINC-клиент будет копировать в каталог-слот файл wrapper-а, файл вычислительного модуля и входной файл задания. Затем будет запускаться wrapper. При запуске он прочитает job.xml и поймёт что ему делать. А после окончания расчётов, файл указанный в теге будет забран и отправлен на сервер как результат расчётов.
ID: 19 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 20 - Posted: 17 Jun 2023, 3:13:02 UTC
Last modified: 17 Jun 2023, 3:34:27 UTC

Программы, реализующие мои алгоритмы, написаны на языке PARI/GP.
Коллеги считают, что такие вычислительные модули могут быть запущены с помощью обёртки BOINC.

Ещё одна интересная идея была предложена на форуме немецкой команды.

Michael H.W. Weber
писал 7 апреля т. г.
"Mir scheint, es wäre aufgrund der Beliebtheit und der universellen Einsetzbarkeit von PARI/GP vielleicht sogar sinnvoll, ein eigenes BOINC-Projekt dafür zu entwicklen. Ich nenne es mal PARI@home, möchte es aber mit Yoyo noch absprechen. Man müßte dann per Jobsubmission-Interface eigenen PARI-Code einfüttern können, der dann vom Projekt abgearbeitet würde.
Wäre vielleicht auch für andere Mathematiker nützlich."

https://www.rechenkraft.net/forum/viewtopic.php?p=193771#p193771

Я хотела обсудить эту идею на форуме boinc.ru
https://boinc.ru/forum/topic/proekt-parihome/
Увы! Меня (как клона) забанили.

Идея пока не реализована.
Michael H.W. Weber писал 17 мая т. г.

P.S.: Ein kleiner Test-Server läuft übrigens inzwischen und den nutze ich zu Zeiten, wo ich in meiner Freizeit Spass daran habe, um dort die französische PARI Infrastruktur aufzusetzen. Wenn das irgendwann ordentlich als BOINC-Server läuft, könnten wir Deinen Code dort laufen lassen.

https://www.rechenkraft.net/forum/viewtopic.php?p=194205#p194205
Прошёл месяц, а воз и ныне там.

Идею можно тоже рассмотреть, как вспомогательную.
Возможно, будет полезна.

Насколько понимаю, Michael H.W. Weber предполагал, что созданная им платформа PARI@home позволит запустить любую программу, написанную на PARI/GP.
Что ж, по-моему, идея неплохая.
Только неизвестно, будет ли она реализована.
ID: 20 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 21 - Posted: 17 Jun 2023, 3:30:00 UTC
Last modified: 17 Jun 2023, 3:30:42 UTC

Как видите, господа, у нас много идей, несколько действующих алгоритмов.
Надо создавать Приложения для запускаемого проекта.

Присоединяйтесь к нам, работы хватит всем!

Если вы хотите задать вопросы и получить ответ на английском языке, пожалуйста.
Я отвечу вам по-английски.
ID: 21 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 22 - Posted: 17 Jun 2023, 17:31:21 UTC
Last modified: 17 Jun 2023, 17:34:05 UTC

Самый первый алгоритм поиска 19-ки с минимальным диаметром 252 я предложила на форуме немецкой команды 28 марта т. г.
https://www.rechenkraft.net/forum/viewtopic.php?p=193708#p193708

Привожу сообщение полностью

Nataly-Mak post_id=193708 time=1680015743 user_id=16759 wrote:

Hier können Sie das Archiv PARI_GP.7z herunterladen
https://disk.yandex.ru/d/9MS9D85sMyi4HQ

Das Archiv enthält
1) gp.exe - Starten der PARI/GP-Softwareumgebung;
2) gris9_7.txt - Arbeitsprogramm;
3) inp.txt ist die Eingabedatei, die das Verarbeitungsintervall enthält.

Durch die Einstellung unterschiedlicher Verarbeitungsintervalle erhalten wir separate Jobs.
In diesem Beispiel beträgt die Intervalllänge 2 Millionen
3370100000000001
3370100002000000

Ein solches Intervall wird je nach Rechnerleistung 1-2 Stunden verarbeitet.

Die Ergebnisse des Programms werden in die Ausgabedatei resgris9_7.txt geschrieben

Ich führe dieses Programm derzeit auf mehreren Bereichen auf meinen Computern aus.

Ich werde den genauen Suchbereich für das BOINC-Projekt melden.

So führen Sie das Programm aus

1) Starten Sie die PARI/GP-Softwareumgebung mit dem Programm gp.exe;
2) Führen Sie im sich öffnenden Fenster das Arbeitsprogramm mit dem Befehl aus
\r gris9_7.txt

Das Programm erfordert Windows 64-Bit.

Очень надеялась, что там смогут запустить BOINC-проект на платформе yoyo@home.
Больше двух месяцев продолжалось обсуждение; никаких запусков нигде не произошло.
Увы!
ID: 22 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 23 - Posted: 23 Jun 2023, 2:36:16 UTC
Last modified: 23 Jun 2023, 2:36:30 UTC

Репост
https://boinc.tbrada.eu/forum_thread.php?id=3159&postid=4791

Two colleagues are trying to restore the SPT project that was stopped here
https://boinc.termit.me/adsl/

They use code by Tomáš Brada
https://github.com/tomasbrod/tbboinc/blob/primes/symprtu/spt.cpp

However, this code has not been able to run yet.

Tomáš Brada
You can help!
The stopped project should work!

Colleagues need a copy of a working client program.

I also appeal to everyone who has experience in starting a BOINC project.
Help us please!

For contact
natalimak1@yandex.ru
ID: 23 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 24 - Posted: 30 Jun 2023, 9:22:24 UTC
Last modified: 1 Jul 2023, 14:45:28 UTC

Господа!

Пока запуск BOINC-проекта, увы, не произошёл.

Я полностью подготовила программу своего алгоритма для запуска в BOINC-проекте.
Вот текст программы на PARI/GP

{\\ 27.06.2023 
i1=32688925269558999998000;
i2=32688925269569000000000; 
kp=0;
lmin=17;
ltuple=11;
\\ **********************
M=matrix(10000,36); k=0;
p=nextprime(i1); pt=[p]; n=1; 
while(p<i2,
  kp++;
  pn=nextprime(p+1);
  if( (pn-p)%6==0, n++; p=pn; pt=concat(pt,p),
       if( n>lmin-1, k++;
           pd=vector(n-1,i,pt[i+1]-pt[i]);
           M[k,1]=pt[1];
           for(l=2,n, M[k,l]=pd[l-1]; ););
           n=1; p=pn; pt=[p];
  );   
);

\\ find symmetrical tuples

fout = fileopen("tuple_sym.txt","w");

ksym=0;


for( iii=1,k, 
   d=[];
   for(l=2,30, 
     if( M[iii,l]==0, break );
     d=concat(d, M[iii,l]); 
   ); \\ l
   ld=#d;
      
   forstep( kl=ltuple-1,ld,2,
     kl05=kl\2;
     kpr=ld-kl+1;
 
     for ( ipr=1,kpr,
       for( mm=1, kl05,
         if( d[mm+ipr-1]!=d[kl+ipr-mm], next(2) )
       ); \\ mm

       \\ we see symmetrical vector from ipr to ipr+kl
       ksym++;
       \\printf("from  %d", M[iii,1..ld+2]);print();
       tp1=M[iii,1];if( ipr>1,tp1=tp1+vecsum(d[1..ipr-1]) );
       w=strprintf( "%d %d: %d",kl+1, tp1, d[ipr..ipr+kl-1] );
       print(w);
       filewrite(fout,w);
     ); \\ ipr
  ); \\kl
); \\iii
print(); print("total ", k, " tuples");
print( ksym, " symmetrical tuples");
print(kp," primes in ");
print(i1);print(i2-2000);

fileclose(fout)
}

Для работы этой программы необходима программная оболочка gp.exe.
Эту программу можно скачать по ссылке, она в архиве
https://disk.yandex.ru/d/SPRlGAZMfq0s2g

Есть вопрос по способу задания интервала поиска.
Смотрите сообщение
https://boinc.progger.info/odlk/forum_thread.php?id=247&postid=12024

Результаты программа записывает в выходной файл tuple_sym.txt в конце работы.

Вроде есть всё нужное для подготовки и запуска Приложения 2 по данному алгоритму, разработанному мной.
Объединение программы генерации последовательностей и программы их обработки выполнил коллега gris.

Если кто-то может помочь в подготовке этого Приложения, пишите мне, пожалуйста, natalimak1@yandex.ru, или ЛС здесь.
Или пишите ЛС администратору проекта Corporal.
Правда, работа ЛС пока не проверена.

Я думаю, что это Приложение может быть запущено с помощью обёртки BOINC.
Об использовании обёртки BOINC смотрите сообщение
https://boinc.termit.me/adsl/forum_thread.php?id=2&postid=19

Замечу ещё раз: вы можете писать в этой теме и задавать ваши вопросы по-английски.
Я буду отвечать вам тоже по-английски.
ID: 24 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 25 - Posted: 30 Jun 2023, 9:48:56 UTC
Last modified: 30 Jun 2023, 10:00:28 UTC

Это протокол работы опубликованной программы на моём ПК

(03:36) gp > default(timer,1)
(03:36) gp > \r gener_my3.txt

total 460 tuples
0 symmetrical tuples
192892819 primes in
32688925269548999998000
32688925269558999998000
time = 4h, 45min, 18,348 ms.

Интервал длины 10 миллиардов обрабатывался 4 ч. 45 мин.
У меня низкопроизводительный ПК - 2,4 Ггц.
На вашем ПК эта программа выполнится гораздо быстрее.
ID: 25 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 26 - Posted: 1 Jul 2023, 9:17:25 UTC
Last modified: 1 Jul 2023, 9:18:57 UTC

В опубликованной версии интервал поиска задан прямо в программе, вот эти строки

i1=32688925269558999998000;
i2=32688925269569000000000;

Если вы хотите задавать интервал поиска во входном файле inp.txt, то в программе вместо показанных строк надо записать следующие строки

tin = fileopen("inp.txt");
    i1=eval(filereadstr(tin));
    i2=eval(filereadstr(tin));
fileclose(tin);

А во входном файле inp.txt записать интервал в таком виде
32688925269558999998000
32688925269569000000000

В первой строке начало интервала, во второй строке конец интервала.

Далее вы изменяете интервал во входном файле и запускаете программу на выполнение.
Длину интервала вы можете задавать по своему усмотрению.
Понятно, что от длины интервала зависит время работы программы.

И ещё один нюанс: интервалы должны чуть-чуть перекрываться на стыке.
Для этого от конца обработанного интервала я вычитаю 2000 и получаю начало следующего интервала.
ID: 26 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 27 - Posted: 1 Jul 2023, 14:06:21 UTC
Last modified: 1 Jul 2023, 14:08:35 UTC

Ещё подробнее о задании интервалов поиска.

Сейчас у меня на ПК проверяется интервал
i1=32688925269588999998000;
i2=32688925269599000000000;

Длина этого интервала 10 миллиардов (если не считать перекрытия в 2000).
Такой интервал на моём ПК обрабатывается за время
time = 4h, 47min, 20,170 ms.

Давайте будем задавать интервалы поменьше - 5 миллиардов, чтобы время работы программы было меньше.
Привожу пример первых 10 интервалов, продолжая показанный выше интервал

1) 
32688925269599999998000
32688925269605000000000
2)
32688925269604999998000
32688925269610000000000
3)
32688925269609999998000
32688925269615000000000
4)
32688925269614999998000
32688925269620000000000
5)
32688925269619999998000
32688925269625000000000
6)
32688925269624999998000
32688925269630000000000
7)
32688925269629999998000
32688925269635000000000
8)
32688925269634999998000
32688925269640000000000
9)
32688925269639999998000
32688925269645000000000
10)
32688925269644999998000
32688925269650000000000

Надеюсь, принцип понятен.
ID: 27 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Natalia Makarova
Volunteer moderator
Project administrator
Project developer
Project tester
Avatar

Send message
Joined: 14 Jun 23
Posts: 294
Credit: 280,293
RAC: 0
Message 28 - Posted: 1 Jul 2023, 14:34:07 UTC
Last modified: 1 Jul 2023, 14:37:28 UTC

Итак, что вам надо сделать, чтобы попробовать работу этого алгоритма?

1. Возьмите в архиве по следующей ссылке программу gp.exe
https://disk.yandex.ru/d/SPRlGAZMfq0s2g

2) В папке, где у вас программа gp.exe создайте текстовый файл inp.txt и запишите в него интервал для проверки, например, первый
32688925269599999998000
32688925269605000000000

3) В этой же папке создайте текстовый файл с любым именем (например, spt.txt) и запишите в него рабочую программу.
Программу я ещё раз приведу далее.

4) Запустите программу gp.exe. В открывшемся окне напишите команду запуска рабочей программы
\r spt.txt

Всё!
Программа будет работать.
Если результаты будут найдены, программа запишет их в файл tuple_sym.txt
Когда программа завершится, на консоли появится некоторая информация о результатах.

Если вы хотите обработать все 10 интервалов одновременно и у вас есть для этого возможности (многоядерный процессор), создайте всё то же самое в другой папке (конечно, с другим интервалом поиска в файле inp.txt) и запустите программу в этой папке.
Затем в следующей папке и т. д.

Пожалуйста, опробуйте работу программы.
На моём ПК программа работает хорошо.
Я обрабатываю интервалы в один поток, так как не имею возможности параллельной работы нескольких программ.

Может быть, у вас есть какие-то предложения по улучшению работы программы.
Пожалуйста, сообщите о них.

Я понимаю, что для работы в BOINC-проекте надо убрать вывод на консоль, но не знаю, как это сделать.
ID: 28 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
1 · 2 · Next

Message boards : Number crunching : Помощь в запуске BOINC-проекта SPT

©2024 Natalia Makarova & Alex Belyshev & Tomáš Brada